逻辑回归对异常值敏感?在合成2D数据集上的应用

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

二元标签,2D数据集

我只是将数据输入到sklearn的模型中,得到的结果如下(浅绿色部分;请忽略深绿色部分):

代码只有两行;model = LogisticRegression(); model.fit(tr_data,tr_labels)。我检查过绘图函数,运行正常。我没有使用正则化(这会影响结果吗?)

我觉得决策边界的表现非常奇怪。直觉告诉我它们应该更接近对角线,因为数据主要集中在右上角和左下角。从一些测试来看,似乎是一些 stray datapoints 导致边界表现出这种方式。

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

没有 stray datapoints 的2D数据集

边界

有人知道这是什么原因吗?据我所知,逻辑回归不应该对异常值如此敏感。


回答:

您的模型对数据过拟合了(它找到的决策区域在训练集上的表现确实比您期望的对角线更好)。

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

通过更强的正则化可以防止这种情况,距离会起到更大的作用。尝试不同的逆正则化强度C值,例如:

model = LogisticRegression(C=0.1) model.fit(tr_data,tr_labels)

注意:默认值C=1.0已经对应于逻辑回归的正则化版本。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注