为何将连续变量离散化,就可以增加模型的“非线性能力”?

将连续变量离散化,可以增加模型的“非线性能力”

这句话我在不同的地方看到不少人说过,但这句话总是让我感到困惑——知其然不知其所以然的困惑。今天我就从一个小白的角度尝试着解释一下这句话——


首先,何为“非线性能力”要搞清:非线性能力,指的就是model在对“线性不可分”数据集进行分类时所展现的能力。我们所熟知的“硬间隔SVM”就是线性model,有人也把LR称作线性model。但我们又可以通过特征组合、核函数的方法将线性model变成非线性model,即让数据的特征经过变换后,可以被超平面所分割开来。

其次说说为什么连续变量离散化会增加这个能力。如下面两个公式,公式(1)表示使用连续型变量的LR model,公式(2)表示将连续型变量离散成3个值后,再使用one-hot编码得到的LR model。

$$h(x) = \frac{1}{1+e^{-(w_{1}x_{1})}}                   (1)$$

$$h(x) = \frac{1}{1+e^{-(w_{4}x_{4}+w_{2}x_{2}+w_{3}x_{3})}}                   (2)$$  

如上所示,\(x_{1}\)指的是连续型变量,\(x_{2}\)、\(x_{3}\)、\(x_{4}\)是3个离散变量,我们将原本只用一个参数\(w_{1}\)控制的LR model,变成了使用三个参数控制的LR model,因此说它提升了模型的非线性能力,即能更好地去分开正负样本

此外,将连续型变量离散化还有其他好处:比如这增加了模型的稳定性和健壮性,因为原来只有一个参数在控制模型,现在则是多个参数,这样model因为某个特征的异常而遭受到的扰动就更小了、也降低了异常值对model的影响;最后,one-hot之后,我们也免去对这个特征进行归一化了,同时也减少了参数更新的时间。

最后,再聊一下为什么归一化的特征可以加速参数的更新速度:

在机器学习中,通过归一化可以减少迭代的时间:
为何将连续变量离散化,就可以增加模型的“非线性能力”?

这是因为未经归一化损失函数的分布可能是一个椭圆形,这是因为各维度的数值可能差距很大,如果不走运迭代的路径恰好在椭圆的长轴上,那么距离最低点的距离会非常远,迭代次数会很多.

经过归一化后保证了从任何一个方向距离圆心都有相同的距离,所以迭代时间有保证

本小段摘自:https://drivingc.com/p/5bdfa51fd249870dca3afe22


希望以上已经将这个“人尽皆知”的小问题讲明白了。我们还是要知其所以然呐!