代码之家  ›  专栏  ›  技术社区  ›  Pian Pawakapan

Logistic回归对异常值敏感?在合成2D数据集上使用

  •  1
  • Pian Pawakapan  · 技术社区  · 7 年前

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

    Binary label, 2D dataset

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

    这方面的代码只有两行;模型=LogisticRegression();模型拟合(tr\U数据、tr\U标签)。我已经检查了绘图功能;那也很好。我没有使用正则化器(这会影响它吗?)

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

    例如,下面是另一个数据集及其边界

    2D dataset without stray datapoints

    boundaries

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   jan    7 年前

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

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

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

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

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

        2
  •  0
  •   appletree    6 年前

    让我们进一步确认 为什么? 逻辑回归在这方面有过之而无不及:毕竟,只有几个异常值,但还有数百个其他数据点。看看为什么注意到 logistic loss is kind of a smoothed version of hinge loss (used in SVM).

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

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