Python 之 sklearn——logistic回归

Python 之 sklearn——logistic回归

尽管从名字上看逻辑回归模型属于回归模型,但是实际上它是一个线性分类模型。logistic回归又称logit回归,是最大熵分类或者对数线性分类器。该模型使用逻辑函数对描述单个试验可能结果的概率进行建模。

sklearn 里的 LogisticRegression 类,可以处理 2 分类问题 One-vs-Rest 问题。同时可以实施 l1 l2 Elastic-Net 的正则化,使得结构风险最小化。

【注】One-vs-Rest 问题:例如我们现在要处理一个3分类问题,类别分别为A,B,C。1、把A看成一类,B,C合成一类建立logistic回归进行分类,确定A类样本。
2、把B看成一类,A,C合成一类建立logistic回归进行分类,确定B类样本。
3、剩下的归到C类

应用正则化,在机器学习中很常见,但在统计中却不常见。 正则化的一个优点是可以提高数值稳定性。 没有正则化就相当于将C设置为很高的值。

将采用l2正则化的二分类logistic回归问题转化为如下的优化问题,代价函数为

在这里插入图片描述
其中L2 体现在 1 / 2 ∗ w T w 1/2*w^Tw 1/2wTw

类似的l1正则化的二分类logistic回归问题转化为如下的优化问题,代价函数为

在这里插入图片描述

其中L1 体现在 ∣ ∣ w ∣ ∣ 1 ||w||_1 w1

弹性网正则化结合了 L1 和 L2 正则化,将问题转化为如下的优化问题,代价函数为

在这里插入图片描述

ρ \rho ρ取值位于0~1之间(它与l1_ratio相关)这里 y i y_i yi取值为-1或者1,当 ρ \rho ρ取值为0时,上式就是L2正则化,当 ρ \rho ρ取值为1时,上式就是L1正则化。

该优化问题sklearn提供了如下几个求解方法“liblinear”, “newton-cg”, “lbfgs”, “sag” and “saga”。

在这里插入图片描述

liblinear

求解器“ liblinear”使用坐标下降(CD)算法,并依赖于scikit-learn附带的出色的C ++ LIBLINEAR库。 但是,以liblinear实施的CD算法无法学习真正的多类模型。 相反,优化问题以“一对多”(One-vs-Rest )的方式分解。liblinear不支持多分类L1或L2正则化,但是支持一对多L1或L2正则化。liblinear不支持弹性网正则化。liblinear能够对截距项施加惩罚(一般不建议对截距项进行惩罚),不适用与较大的数据集,对未标准化的数据具有稳健性。

lbfgs

lbfgs仅支持L2正则化,不能够对截距项施加惩罚,不适用与较大的数据集,对未标准化的数据具有稳健性。

newton-cg

newton-cg仅支持L2正则化,,不能够对截距项施加惩罚,不适用与较大的数据集,对未标准化的数据具有稳健性。

sag

sag 仅支持L2正则化,不能够对截距项施加惩罚,适用与较大的数据集,不适用与未标准化的数据。

saga

saga支持所有类型正则化,不能够对截距项施加惩罚,适用与较大的数据集,不适用与未标准化的数据。

class sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

参数介绍

penalty:{‘l1’, ‘l2’, ‘elasticnet’, ‘none’}, default=’l2’
默认l2正则化,可选择‘l1’, ‘l2’, ‘elasticnet’, ‘none’

C:float, default=1.0
C要是一个正数,C越小就越不能容忍分类错误,容易过拟合

max_iter:int, default=100
整数,可以设置最大迭代次数

l1_ratio:float, default=None
0~1的实数,起到 ρ \rho ρ的作用,调节 L1和L2正则化的比例。

参考

sklearn 官方文档

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值