为什么我们将倾斜的数据转换为正态分布

数据挖掘 回归 特征提取 特征工程 卡格尔 特征缩放
2021-09-20 22:22:53

我正在通过 Kaggle 上的房价竞争解决方案(Human Analog's Kernel on House prices: Advance Regression Techniques)并遇到了这一部分:

# Transform the skewed numeric features by taking log(feature + 1).
# This will make the features more normal.
from scipy.stats import skew

skewed = train_df_munged[numeric_features].apply(lambda x: skew(x.dropna().astype(float)))
skewed = skewed[skewed > 0.75]
skewed = skewed.index

train_df_munged[skewed] = np.log1p(train_df_munged[skewed])
test_df_munged[skewed] = np.log1p(test_df_munged[skewed])

我不确定将偏态分布转换为正态分布的需要是什么。拜托,谁能详细解释一下:

  1. 为什么要在这里进行?或者这有什么帮助?
  2. 这与特征缩放有何不同?
  3. 这是特征工程的必要步骤吗?如果我跳过这一步可能会发生什么?
3个回答

您可能想要解释您的系数。也就是说,能够说“如果我增加我的变量X1 1,然后,平均而言,在所有其他条件相同的情况下, 应该增加 β1”。

为了使您的系数可解释,线性回归假设了很多事情。

其中之一是没有多重共线性。也就是说,你的X 变量不应相互关联。

另一个是同方差性您的模型提交的错误应该具有相同的方差,即您应该确保线性回归不会对低值产生小错误X 和较高的值的大错误 X. 换句话说,您预测的结果之间的差异^ 和真实值 应该是恒定的。您可以通过确保服从高斯分布。(证明是高度数学化的。)

根据您的数据,您可以将其设为高斯。典型的变换是取反、对数或平方根。当然还有很多其他的,这完全取决于你的数据。您必须查看您的数据,然后进行直方图或运行正态性检验,例如夏皮罗-威尔克检验。

这些都是构建无偏估计器的技术。我认为它与其他人所说的收敛没有任何关系(有时您可能还想规范化您的数据,但这是一个不同的话题)。

如果您想解释系数或想在模型中使用统计检验,遵循线性回归假设很重要。否则,忘记它。

应用对数或规范化数据也很重要,因为线性回归优化算法通常会最小化 是的^-是的2, 所以如果你有一些大的 是的离群值,你的估计器会非常关心最小化那些,因为它关心平方误差,而不是绝对误差。在这种情况下,规范化你的数据很重要,这就是为什么 scikit-learn在LinearRegression构造函数中有一个normalize选项。

这里的偏斜数据通过加一(加一是为了将零转换为一,因为未定义 0 的对数)并取自然对数来归一化。使用平方根或倒数或对数等转换技术可以使数据几乎标准化。现在,为什么需要它。实际上,数据中的许多算法都假设数据科学是正常的,并假设这一点计算各种统计数据。因此,数据越接近正常值,就越符合假设。

因为数据科学归根结底只是统计学,而统计学的关键假设之一是中心极限定理所以这一步正在完成,因为一些后续步骤使用依赖它的统计技术。