为何将连续变量离散化,就可以增加模型的“非线性能力”?
将连续变量离散化,可以增加模型的“非线性能力”
这句话我在不同的地方看到不少人说过,但这句话总是让我感到困惑——知其然不知其所以然的困惑。今天我就从一个小白的角度尝试着解释一下这句话——
首先,何为“非线性能力”要搞清:非线性能力,指的就是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之后,我们也免去对这个特征进行归一化了,同时也减少了参数更新的时间。
最后,再聊一下为什么归一化的特征可以加速参数的更新速度:
这是因为未经归一化损失函数的分布可能是一个椭圆形,这是因为各维度的数值可能差距很大,如果不走运迭代的路径恰好在椭圆的长轴上,那么距离最低点的距离会非常远,迭代次数会很多.
经过归一化后保证了从任何一个方向距离圆心都有相同的距离,所以迭代时间有保证
希望以上已经将这个“人尽皆知”的小问题讲明白了。我们还是要知其所以然呐!