我目前正在使用sklearn的逻辑回归函数处理一个合成的二维问题。数据集如下所示:
我只是将数据输入到sklearn的模型中,得到的结果如下(浅绿色部分;请忽略深绿色部分):
代码只有两行;model = LogisticRegression(); model.fit(tr_data,tr_labels)。我检查过绘图函数,运行正常。我没有使用正则化(这会影响结果吗?)
我觉得决策边界的表现非常奇怪。直觉告诉我它们应该更接近对角线,因为数据主要集中在右上角和左下角。从一些测试来看,似乎是一些 stray datapoints 导致边界表现出这种方式。
例如,这里是另一个数据集及其边界
有人知道这是什么原因吗?据我所知,逻辑回归不应该对异常值如此敏感。
回答:
您的模型对数据过拟合了(它找到的决策区域在训练集上的表现确实比您期望的对角线更好)。
当所有数据都以概率1被正确分类时,损失是最优的。决策边界的距离会进入概率计算中。未正则化的算法可以使用较大的权重使决策区域非常尖锐,因此在您的例子中,它找到了一个最优解,其中(一些)异常值被正确分类了。
通过更强的正则化可以防止这种情况,距离会起到更大的作用。尝试不同的逆正则化强度C
值,例如:
model = LogisticRegression(C=0.1) model.fit(tr_data,tr_labels)
注意:默认值C=1.0
已经对应于逻辑回归的正则化版本。