对少数连续变量进行对数转换的原因是什么?

数据挖掘 机器学习 Python 分类 scikit-学习
2021-09-15 22:13:11

一直在做分类问题,看了很多人的代码和教程。我注意到的一件事是,许多人采用np.logorlog连续变量loan_amountapplicant_income

我只是想了解它背后的原因。它是否有助于提高我们的模型预测准确性。它是强制性的吗?或者它背后有什么逻辑吗?

如果可能,请提供一些解释。谢谢你。

4个回答

这是在变量跨越几个数量级时完成的。收入就是一个典型的例子:它的分布是“幂律”,即绝大多数收入小,极少数收入大。

由于对数的数学性质,这种类型的“肥尾”分布以对数尺度进行研究:

log(xn)=nlog(x)

这意味着

log(104)=4log(10)

log(103)=3log(10)

这改变了巨大的差异

104103
在一个较小的
43
使值具有可比性。

主要是因为分布不均。对数自然会减小变量的动态范围,因此可以保留差异,而比例不会显着偏斜。想象一下,有些人获得了 100,000,000 的贷款,有些人获得了 10000 和一些 0。任何特征缩放都可能使 0 和 10000 彼此如此接近,因为无论如何最大的数字都会推动边界。对数解决了这个问题。

除了其他答案,服用的另一个副作用 logx 是如果 0<x<,再次例如贷款或收入,基本上任何不能变成负数的东西,域变成 <logx<.

如果您使用的模型基于关于 x. 例如线性模型中的正态假设。

对数变换有用的另一个原因对比率数据起作用,因为log(A/B) = -log(B/A). 如果您在原始比例上绘制比率分布,则您的点落在范围内(0, Inf)任何小于 1 的比率都将被压缩到绘图的一小块区域,此外,如果将比率翻转为(B/A)而不是 ,绘图看起来会完全不同(A/B)如果您在对数刻度上执行此操作,则范围现在为(-Inf, +Inf),这意味着小于 1 和大于 1 的比率分布更均匀。如果您决定翻转比率,只需将图翻转到 0 左右,否则看起来完全相同。在对数刻度上,是否将比率显示为 并不重要1/10 or 10/1,这在没有明显选择应该是什么时很有用。