Machine learning 逻辑回归对异常值敏感吗?在合成二维数据集上的应用

Machine learning 逻辑回归对异常值敏感吗?在合成二维数据集上的应用,machine-learning,scikit-learn,logistic-regression,Machine Learning,Scikit Learn,Logistic Regression,我目前正在使用sklearn的逻辑回归函数处理一个合成2d问题。数据集如下图所示: 我正在将数据插入sklearn的模型,这就是我得到的(浅绿色;忽略深绿色): 这个代码只有两行;模型=逻辑回归();拟合(tr_数据、tr_标签)。我已经检查了绘图功能;那也可以。我没有使用正则化器(这会影响它吗?) 对我来说,边界的这种行为真的很奇怪。直观地说,我觉得它们应该是对角的,因为数据(大部分)位于右上角和左下角,从一些测试结果来看,似乎是一些散乱的数据点导致了边界以这种方式运行 例如,这里是另一个

我目前正在使用sklearn的逻辑回归函数处理一个合成2d问题。数据集如下图所示:

我正在将数据插入sklearn的模型,这就是我得到的(浅绿色;忽略深绿色):

这个代码只有两行;模型=逻辑回归();拟合(tr_数据、tr_标签)。我已经检查了绘图功能;那也可以。我没有使用正则化器(这会影响它吗?)

对我来说,边界的这种行为真的很奇怪。直观地说,我觉得它们应该是对角的,因为数据(大部分)位于右上角和左下角,从一些测试结果来看,似乎是一些散乱的数据点导致了边界以这种方式运行

例如,这里是另一个数据集及其边界


有人知道这是什么原因吗?从我的理解来看,逻辑回归不应该对异常值如此敏感。

您的模型过度拟合了数据(它发现的决策区域在训练集中的表现确实比您预期的对角线更好)

当所有数据以概率1正确分类时,损失是最优的。到决策边界的距离进入概率计算。非规范化算法可以使用较大的权重使决策区域非常清晰,因此在您的示例中,它会找到一个最优解决方案,其中(部分)异常值被正确分类

通过更强大的规则化,你可以避免这种情况,而距离扮演着更大的角色。尝试不同的逆正则化强度值
C
,例如

model = LogisticRegression(C=0.1) 
model.fit(tr_data,tr_labels)
注:默认值
C=1.0
已经对应于逻辑回归的正则化版本。

让我们进一步说明为什么逻辑回归在这里过拟合:毕竟,只有几个异常值,但还有数百个其他数据点。看看为什么注意到这一点会有帮助

SVM根本不“关心”边缘正确一侧的样本——只要它们不越过边缘,它们就不会造成零成本。由于logistic回归是支持向量机的平滑版本,距离较远的样本确实会造成成本,但与决策边界附近的样本造成的成本相比,成本可以忽略不计


因此,与线性判别分析不同,靠近决策边界的样本比远离的样本对解决方案的影响更大。

嗨,我知道为什么没有正则化器,模型可能会过度拟合,但我不明白为什么这个边界是最优的。既然数千个数据点中只有少数异常值,那么这个边界对损失函数的影响会更大吗?因为即使它正确地预测了少数异常值,它也会因为边界更接近所有其他数据点而损失?或者我对逻辑回归的理解不正确?嗨,当所有数据分类正确时,损失函数是最优的(0)。它不关心距离,只输入预测的和真实的标签。所以在你的特殊情况下,算法发现这个特殊边界有更好的损失。好吧,也许这有点简化了:当所有数据都以概率1正确分类时,损失是最优的。在概率计算中确实输入了距离。然而,非规范化算法可以使用非常大的权重使决策区域非常尖锐。通过规则化,你可以避免这种情况,而距离起着更大的作用。我相应地更新了答案。我希望有帮助:)