如何处理线性回归虚拟变量的共线性?
How to deal with co-linearity of dummy variables for linear regression?
我在家庭特征数据集上使用 scikit-learn
LogisticRegression
并试图了解如何准备自变量。
我创建了二进制虚拟变量来代替分类变量。
例如具有 3 个可能值 DetachedHouse
、SemiDetached
和 Apartment
的变量 DWELLING_TYPE
已被替换为 3 个二进制变量 DWELLING_TYPE_DetachedHouse
、DWELLING_TYPE_SemiDetached
和 DWELLING_TYPE_Apartmentthat each has the value
1or
0`.
显然这 3 个变量是相互依赖的(共线性?),因为如果其中一个变量是 1
,那么另外两个变量必须是 0
。我的理解是逻辑回归应该最小化共线性,所以我应该从输入矩阵中省略这些变量之一吗?
是的。这是一个很好的做法。当您将分类变量转换为虚拟变量时,您可以删除其中一个虚拟变量。它将减少输入特征的冗余。
在 python 中,您可以使用 pd.get_dummies
pd.get_dummies(df, columns=categorical_columns, drop_first=True)
将 drop_first 参数设置为 True 将对您有效。
我在家庭特征数据集上使用 scikit-learn
LogisticRegression
并试图了解如何准备自变量。
我创建了二进制虚拟变量来代替分类变量。
例如具有 3 个可能值 DetachedHouse
、SemiDetached
和 Apartment
的变量 DWELLING_TYPE
已被替换为 3 个二进制变量 DWELLING_TYPE_DetachedHouse
、DWELLING_TYPE_SemiDetached
和 DWELLING_TYPE_Apartmentthat each has the value
1or
0`.
显然这 3 个变量是相互依赖的(共线性?),因为如果其中一个变量是 1
,那么另外两个变量必须是 0
。我的理解是逻辑回归应该最小化共线性,所以我应该从输入矩阵中省略这些变量之一吗?
是的。这是一个很好的做法。当您将分类变量转换为虚拟变量时,您可以删除其中一个虚拟变量。它将减少输入特征的冗余。
在 python 中,您可以使用 pd.get_dummies
pd.get_dummies(df, columns=categorical_columns, drop_first=True)
将 drop_first 参数设置为 True 将对您有效。