gpt4 book ai didi

linear-regression - 我们应该如何处理高度相关的特征?

转载 作者:行者123 更新时间:2023-12-04 03:45:11 25 4
gpt4 key购买 nike

在我的数据集中 2 个特征 C1C2是高度相关的。我做了以下步骤。您能否让我知道它是否正确且有意义?你有更好的方法吗?
首先我使用线性模型来找到拟合线:
C1=a*C2+b

from sklearn import linear_model

reg=linear_model.LinearRegression()
y_reg = data1['C1']
x_reg = data1['C2']
reg.fit(x_reg2,y_reg2)
a=reg.coef_
b=reg.intercept_

print(a,b)
找到 a 和 b 后,我删除了 C1C2从数据集中添加了一个新变量: new=a*C1+b我的下一个问题是我如何理解这条线是否好?

最佳答案

通常,建议避免在数据集中包含相关特征。确实,一组高度相关的特征不会带来额外的信息(或只是很少),而是会增加算法的复杂度,从而增加出错的风险。根据特征和模型,相关特征可能并不总是会损害模型的性能,但这是一个真正的风险。
您可以将其视为对 Occam's razor 的解释。 : 在性能上没有显着差异,应该首选更简单的模型。在您的情况下,如果性能相似,则更简单的模型是只有 C1 或 C2 而不是两者的模型。
现在你用 a*C1+b 替换 C1 和 C2 时所做的实际上消除了多重共线性,但这对我来说没有多大意义 .与仅保留 C1 相比,我没有看到任何好处:实际上,您用适合匹配的新变量替换了 C1 和 C2 ...... C1!如果线性拟合良好,则几乎没有区别。
特征工程和特征选择应该由基础理论或至少领域知识证明,所以这里有几件事你可以做:

  • 在训练模型之前将 PCA 应用于数据集:这将产生一个新的且不相关的特征集。缺点是如果您需要的话,您将无法用原始特征解释模型的决定。
  • 使用特征选择算法。最好的算法将取决于数据和模型。这里是scikit learn's feature selection algorithms举个例子。
  • 只需将模型的性能与 C1 和 C2 进行比较,然后仅与 C1 和仅 C2 进行比较。然后估计性能上的差异是否值得保留这两个功能(这实际上是应用奥卡姆 Razor 原理)。这可以看作是一种“手动”特征选择算法。
  • 使用领域知识选择要保留的变量:哪个与问题最相关?。如果模型的训练成本太高而无法进行多次实验,则可以这样做。

  • 我还建议您阅读 this thread on data science stack exchange因为它会给你一些关于多重共线性问题的其他意见。我认为这对您来说很有趣,因为它将完成我在这里给出的见解,并帮助您决定如何处理 C1 和 C2。

    关于linear-regression - 我们应该如何处理高度相关的特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65302136/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com