我正在处理一个机器学习问题,数据中有一些异常值,我希望能平滑处理这些异常值。我读到了一些关于使用M估计来解决此类问题的信息。我已经在网络和stackoverflow上进行了详尽的搜索,但没有找到一个好的示例。有人能推荐一些我可以阅读更多相关内容的资源吗?
谢谢!
回答:
如果我记得没错,M估计器起源于Huber的工作。他研究了使估计器稳健的方法。然而,为了衡量稳健性,考虑了一种非常特定的稳健性类型。这被称为“崩溃点”,简单来说就是方法能够处理的异常值与总点数的百分比。再多一个异常值,方法就会崩溃。
请注意,这种类型的稳健性与计算机视觉中的稳健性非常不同。在计算机视觉中,异常值可能不多,但它们可能(以结构化点的形式)合谋破坏最稳健的估计器。因此,在计算机视觉中,你会遇到霍夫变换和RANSAC来进行线条的稳健估计。
此外,一种对异常值非常有抵抗力的M估计器,是一种对极端异常值赋值有界的M估计器。这些被称为重新下降M估计器。由于极端异常值(称为gross outliers
)被赋予零权重,或者换句话说,在回归中完全不被考虑,因此它们非常稳健。
如果你想了解单个异常值的影响,我建议你编写一个简单的线性最小二乘octave程序。或者如果你认为更简单,可以编写一个总最小二乘程序(你可以进行奇异值分解,svd
是内置的)。