逻辑回归和特征缩放

机器算法验证 物流 scikit-学习 正常化 正则化
2022-03-07 19:18:53

我相信特征的缩放不应该影响逻辑回归的结果。但是,在下面的示例中,当我通过取消注释注释行来缩放第二个特征时,AUC 会发生很大变化(从 0.970 到 0.520):

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn import metrics

cancer = load_breast_cancer()
X = cancer.data[:,0:2] # Only use two of the features
#X[:,1] = X[:,1]*10000 # Scaling
y = cancer.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)

fpr, tpr, _ = metrics.roc_curve(y_test, log_reg.predict_proba(X_test)[:,1])
auc = metrics.auc(fpr, tpr)
auc

我相信这与正则化有关(这是一个我没有详细研究过的话题)。如果是这样,在使用正则化进行逻辑回归时,是否有对特征进行归一化的最佳实践?另外,在 scikit-learn 中进行逻辑回归时有没有办法关闭正则化

1个回答

我相信特征的缩放不应该影响逻辑回归的结果。但是,在下面的示例中,当我通过取消注释注释行来缩放第二个特征时,AUC 会发生很大变化(从 0.970 到 0.520)......我相信这与正则化有关

这是一个很好的猜测。如果您查看 的文档sklearn.linear_model.LogisticRegression,您可以看到第一个参数是:

惩罚:str,'l1'或'l2',默认值:'l2' - 用于指定惩罚中使用的规范。'newton-cg'、'sag' 和 'lbfgs' 求解器仅支持 l2 惩罚。

正则化使预测器依赖于特征的规模。

如果是这样,在使用正则化进行逻辑回归时,是否有对特征进行归一化的最佳实践?

是的。Elements of Statistical Learning的作者建议这样做。sklearn,使用sklearn.preprocessing.StandardScaler