1

我有一个具有一个特征(信用余额)的训练集 - 数字在 0-20,000 之间变化。响应为 0(默认 = 否)或 1(默认 = 是)。这是使用逻辑函数生成的模拟训练集。供参考,可在此处获得。

下面的箱线图分别显示了 default=yes 和 default=no 类的余额分布 - 在此处输入图像描述

以下是数据分布——

在此处输入图像描述

此外,数据集与每个响应类的 50% 数据完美平衡。所以它是一个适合应用逻辑回归的经典案例。但是,在应用逻辑回归时,得分为 0.5,因为仅预测 y=1。以下是应用逻辑回归的方式 -

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression().fit(df[['Balance']],df['Default'])
clf.score(df[['Balance']], df['Default'])

这证明逻辑回归拟合这些数据的方式一定有问题。但是,当平衡功能被缩放时,分数提高到 87.5%。那么缩放是否在这里起作用?

编辑:为什么缩放在这里起作用?sklearn 中的Logistic Regression文档lbfgs求解器对未缩放的数据具有鲁棒性。

4

1 回答 1

2

不仅如此,如果将其缩放到任何值,即 df['balances']/2 或 df['balances']/1000 或 df['balance']*2,所有可能都会给出约 87% 的准确度,具体取决于在默认选择的随机状态下,它会给出 87% 或 50%

底层实现使用随机数生成器来拟合模型,因此有不同的解决方案并不少见,在有问题的情况下,类不是线性可分的,所以它可能不会给出解决方案,它肯定不会给你一个好的解决方案总是。

您可以在更改随机状态参数时找到解决方案,因此最好对模型进行多次评分以获得平均性能

[编辑] 还提到了https://scikit-learn.org/stable/modules/linear_model.html#liblinear-differences求解器在大型数据集上不缩放和速度的鲁棒性

于 2021-06-27T16:00:54.507 回答