什么是RMSE?也称为MSE,RMD或RMS。它解决什么问题?
如果您了解RMSE :(均方根误差),MSE :(均方根误差)RMD(均方根偏差)和RMS :(均方根),那么要求库为您计算此值是不必要的过度设计。所有这些指标都是最长2英寸长的单行python代码。rmse,mse,rmd和rms这三个指标在概念上核心相同。
RMSE回答了这个问题:“何其相似,平均而言,是数字在list1
以list2
?”。这两个列表的大小必须相同。我想“消除任何两个给定元素之间的噪音,消除收集到的数据的大小,并获得随时间变化的单一数字感觉”。
直觉和ELI5 for RMSE:
想象一下,您正在学习在飞镖板上扔飞镖。每天练习一小时。您想弄清楚自己是好还是坏。因此,每天您要投掷10次球,并测量靶心与飞镖击中点之间的距离。
您列出这些数字list1
。使用第1天与list2
包含所有零的距离之间的均方根误差。在第二天和第n天做同样的事情。您将得到的是一个希望随时间减少的数字。当您的RMSE数为零时,您每次都击中Bullseyes。如果均方根值增加,则情况会越来越糟。
在python中计算均方根误差的示例:
import numpy as np
d = [0.000, 0.166, 0.333] #ideal target distances, these can be all zeros.
p = [0.000, 0.254, 0.998] #your performance goes here
print("d is: " + str(["%.8f" % elem for elem in d]))
print("p is: " + str(["%.8f" % elem for elem in p]))
def rmse(predictions, targets):
return np.sqrt(((predictions - targets) ** 2).mean())
rmse_val = rmse(np.array(d), np.array(p))
print("rms error is: " + str(rmse_val))
哪些打印:
d is: ['0.00000000', '0.16600000', '0.33300000']
p is: ['0.00000000', '0.25400000', '0.99800000']
rms error between lists d and p is: 0.387284994115
数学符号:
字形图例: n
是一个完整的正整数,表示投掷次数。 i
表示枚举和的整个正整数计数器。 d
代表理想距离,list2
在上面的示例中包含所有零。 p
代表性能,list1
在上面的示例中。上标2代表数字平方。 d i是的第i个索引d
。 p i是的第i个索引p
。
rmse分步进行,因此可以理解:
def rmse(predictions, targets):
differences = predictions - targets #the DIFFERENCEs.
differences_squared = differences ** 2 #the SQUAREs of ^
mean_of_differences_squared = differences_squared.mean() #the MEAN of ^
rmse_val = np.sqrt(mean_of_differences_squared) #ROOT of ^
return rmse_val #get the ^
RMSE的每个步骤如何工作:
一个数字减去另一个数字就可以得出它们之间的距离。
8 - 5 = 3 #absolute distance between 8 and 5 is +3
-20 - 10 = -30 #absolute distance between -20 and 10 is +30
如果将任何数字乘以自身,则结果总是正数,因为负数乘以负数就是正数:
3*3 = 9 = positive
-30*-30 = 900 = positive
将它们全部加起来,但是等一下,那么包含许多元素的数组将比小的数组具有更大的误差,因此请按元素数对它们进行平均。
但是,等等,我们更早地对它们进行平方,以迫使他们保持积极态度。消除平方根的伤害!
剩下的一个数字平均代表list1的每个值与其list2的对应元素值之间的距离。
如果RMSE值随着时间下降,我们会感到高兴,因为方差正在减小。
RMSE不是最准确的线拟合策略,最小二乘法的总和为:
均方根误差测量的是点与线之间的垂直距离,因此,如果数据的形状像香蕉,底部附近平坦,顶部附近陡峭,则RMSE将报告距较高点的距离较大,而距点的距离较短实际上是距离相等时的低点。这会导致偏斜,在此偏斜时,线倾向于更靠近高点而不是低点。
如果这是一个问题,则总最小二乘法可以解决此问题:https :
//mubaris.com/posts/linear-regression
可能会破坏此RMSE功能的陷阱:
如果在任何一个输入列表中都有空值或无穷大,则输出rmse值将变得没有意义。任一列表中都有三种处理空值/缺失值/无穷大的策略:忽略该组件,将其清零,或在所有时间步长中添加最佳猜测或统一的随机噪声。每种补救措施都有其优缺点,具体取决于数据的含义。通常,最好忽略任何缺少值的组件,但这会使RMSE偏向零,从而使您认为性能确实有所改善。如果存在很多缺失值,则最好在最佳猜测上添加随机噪声。
为了保证RMSE输出的相对正确性,您必须消除输入中的所有null / infinites。
对于不属于异常值的数据点,RMSE的容差为零
均方根误差平方根取决于所有数据正确,并且所有数据均视为相等。这意味着在左侧区域中出现的一个杂散点将完全破坏整个计算。若要处理离群数据点并在特定阈值后消除其巨大影响,请参见稳健估计器,该估计器内置了消除离群值的阈值。