คุณตีความ RMSLE อย่างไร (รูตเฉลี่ยกำลังสองผิดพลาดลอการิทึม)


29

ฉันทำการแข่งขันการเรียนรู้ของเครื่องโดยใช้ RMSLE (Root Mean Squared Logarithmic Error) เพื่อประเมินประสิทธิภาพการทำนายราคาขายของอุปกรณ์ประเภทหนึ่ง ปัญหาคือฉันไม่แน่ใจว่าจะตีความความสำเร็จของผลลัพธ์สุดท้ายได้อย่างไร

ตัวอย่างเช่นถ้าฉันได้รับ RMSLE ที่1.052ฉันสามารถยกกำลังยกกำลังeและตีความมันแบบ rmse ได้หรือไม่? (เช่น. e1.052=2.863=RMSE )?

ฉันจะบอกว่าแล้วว่าการคาดการณ์ของฉันได้เฉลี่ยจากราคาที่เกิดขึ้นจริง? หรือมีวิธีที่ดีกว่าในการตีความตัวชี้วัด? หรือสามารถตีความเมตริกได้ด้วยข้อยกเว้นเมื่อเปรียบเทียบกับ RMSLE อื่นของรุ่นอื่น ๆ ±$2.863


With my limited knowledge, it's to: 1. to remove heteroscedasticity 2. to solve the problem of different dimensions

คำตอบ:


26

I haven't seen RMSLE before, but I'm assuming it's 1Ni=1N(log(xi)log(yi))2.

Thus exponentiating it won't give you RMSE, it'll give you

e1Ni=1N(log(xi)log(yi))21Ni=1N(xiyi)2.

If we take the log of both sides, we get the RMSLE versus 12log(1Ni=1N(xiyi)2), which is clearly not the same thing.

Unfortunately, there isn't a good easy relationship in general (though someone smarter than me / thinking about it harder than me could probably use Jensen's inequality to figure out some relationship between the two).

It is, of course, the RMSE of the log-transformed variable, for what that's worth. If you want a rough sense of the spread of the distribution, you can instead get a rough sense of the spread of their logarithm, so that a RMSLE of 1.052 means that the "average" is 2.86 times as big as the true value, or 1/2.86. Of course that's not quite what RMSE means....


Hi @Dougal thanks! this definitely helps clear things up.
Opus

18

I don't know if there is a straightforward generic interpretation, even analysing a particular case.

For example, you may be interested in evaluating what would be the error if you predict all the cases with the mean value and compare it to your approach.

Anyway, I believe RMSLE is usually used when you don't want to penalize huge differences in the predicted and true values when both predicted and true values are huge numbers. In these cases only the percentual differences matter since you can rewrite

logPi+1logAi+1=logPi+1Ai+1.

For example for P = 1000 and A = 500 would give you the roughly same error as when P = 100000 and A = 50000.


1

My understanding is, when we do logarithm both on prediction and actual numbers, we'll get much smoother results than original one. And reduce the impact of larger x, while emphasize of smaller x for logx+1.

Also you'll get a intuitive impression by drawing a simple graph of y=logx+1.


1

There is an indirect way of measuring the performance of a loss function in terms of something more easily understandable, although it will not directly convert values as you have hoped.

Once the model has been trained and tested using RMSLE, simply take a new metric on it. Just because the model was trained on RMSLE, that doesn't mean you can't then take other more understandable loss functions as metrics.

In Keras, for example, you can specify extra loss functions in a metrics category in the model compiler. In the beneath the MSLE is used to train the model (Equivalent to the RMSLE), but the MAE and MSE are also recorded:

model.compile(loss='mean_squared_logarithmic_error', optimizer='adam', metrics=['mean_absolute_error','mean_squared_error'])
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.