sklearn输出模型参数_sklearn中的logisticregression如何处理多分类?作为西瓜书的补充吧...

本文详细探讨了sklearn中逻辑回归处理多分类问题的两种策略:ovr和multinomial。ovr通过将多分类问题转化为多个二分类问题解决,而multinomial策略则采用多项式逻辑回归,基于伯努利分布和极大似然估计求解参数。文中还澄清了一些误解,并提供了理解多类别逻辑回归的推导过程。
摘要由CSDN通过智能技术生成

sklearn中的逻辑回归在处理多分类的问题的时候提供两种策略一种是ovr,一种是multinomial,ovr很简单,就是一个类以及把其它类当成另一个类,就是把多分类切分成一堆二分类,比如3个类别a,b,c。则每切分成3个分类问题分别为(a,(b,c)),(b,(a,c)),(c,(a,b)),一般要设置clcass_weight避免因为这种切分策略导致的样本不平衡问题对模型带来的影响,所以使用ovr的话就会生成3个最终的模型,最后3个训练完毕的模型对新样本分别进行预测然后取均值。

f5121447a1c1a135691b5dcdc5951eee.png
sklearn的逻辑回归的predict的源代码

可以看到,ovr这里的预测用到了_predict_proba_lr 这个函数我们再看看这个函数:

9757cbf3878d74ee0e7ec0dfcbbc9822.png

很明显,就是简单平均,自己带一列的数字进去算算就行了,不难的,就是费时间。

然后我看了“multinomial”,额,和网上的说法非常不一样呢,也不知道那些up主是不是看了西瓜书就把一切非ovr的多分类处理策略都当成mvm中的ecoc(西瓜书唯一提到的一种策略),百度搜索到关于逻辑回归的multinomial的解读都是直接照抄西瓜书,关键还是错的。

https://blog.csdn.net/huangjx36/article/details/78056375/​blog.csdn.net

实际上sklearn中的多分类的另一个策略是使用多项式逻辑回归,Multinomial_logistic_regression,上面这一片csdn的博客介绍的挺好的,摘取其中的一种求法就可以了。

首先我们需要知道,逻辑回归属于判别模型中的概率模型,和决策树属于典型的两种判别式模型的子类型,决策树这类直接针对输入和输出的映射关系建模,而逻辑回归则是概率判别式模型,是从概率论的角度来求解参数的。逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降法等最优化方法求解参数。

直接盗周老师的图吧懒得写了:

7a11b46f62b10a69d5350d8b940dc265.png

这个是二分类的逻辑回归的求解过程,可以看到3.23与3.24的式子假设了输入和输出之间服从伯努利分布。

下面看看多项逻辑回归是怎么推导的:

 实现多类别逻辑回归模型最简单的方法是,对于所有K个可能的分类结果,我们运行K−1个独立二元逻辑回归模型,在运行过程中把其中一个类别看成是主类别,然后将其它K−1个类别和我们所选择的主类别分别进行回归。通过这样的方式,如果选择结果K作为主类别的话,我们可以得到以下公式。

459ccc87d41e0ef520671ad59643dfdf.png

上面式子转化一下:

63c7b02b30f6f1696d167c2196f8e27e.png

要注意的是,我们最后得到的概率必须加起来等于1,基于这个事实我们可以得到:

9b5d29efa7664a62dd5a134457469a6c.png

这样的话,我们可以把以上公式代入到之前的公式中得到:

b2b381188c0b214f4c54b579875c2c34.png

然后,每一个类别对应的概率公式有了,极大似然法配合梯度下降求解就可以了。

需要注意的是,我们在使用二分类的时候输出的coef权重系数对应的是类别1所对应的权重系数,而多分类的时候代码是一股脑输出全部的coef,所以一开始看起来好像是用mvm之类的方法来处理多分类的实际上压根就不是。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值