前情提要:
通俗地说逻辑回归【Logistic regression】算法(一) 逻辑回归模型原理介绍
上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklearn 逻辑回归模型的参数,以及具体的实战代码。
1.逻辑回归的二分类和多分类
上次介绍的逻辑回归的内容,基本都是基于二分类的。那么有没有办法让逻辑回归实现多分类呢?那肯定是有的,还不止一种。
实际上二元逻辑回归的模型和损失函数很容易推广到多元逻辑回归。比如总是认为某种类型为正值,其余为0值。
举个例子,要分类为A,B,C三类,那么就可以把A当作正向数据,B和C当作负向数据来处理,这样就可以用二分类的方法解决多分类的问题,这种方法就是最常用的one-vs-rest,简称OvR。而且这种方法也可以方便得推广到其他二分类模型中(当然其他算法可能有更好的多分类办法)。
另一种多元逻辑回归的方法是Many-vs-Many(MvM),它会选择一部分类别的样本和另一部分类别的样本来做逻辑回归二分类。
听起来很不可思议,但其实确实是能办到的。比如数据有A,B,C三个分类。
我们将A,B作为正向数据,C作为负向数据,训练出一个分模型。再将A,C作为正向数据,B作为负向数据,训练出一个分类模型。最后B,C作为正向数据,C作为负向数据,训练出一个模型。
通过这三个模型就能实现多分类,当然这里只是举个例子,实际使用中有其他更好的MVM方法。限于篇幅这里不展开了。
MVM中最常用的是One-Vs-One(OvO)。OvO是MvM的特例。即每次选择两类样本来做二元逻辑回归。
对比下两种多分类方法,通常情况下,Ovr比较简单,速度也比较快,但模型精度上没MvM那么高。MvM则正好相反,精度高,但速度上比不过Ovr。
2.逻辑回归的正则化
所谓正则化,其目的是为了减弱逻辑回归模型的精度,难道模型的准确度不是越高越好嘛?看看下面这张图就明白了:
左边那个图就是过拟合的情况,过拟合其实就是模型的精度太过高了,它能非常好得匹配训练集的数据,但一旦有新的数据,就会表现得很差。
而我们要的非过拟合的模型是,精度可以差一些,但泛化性能,也就是对新的数据的识别能力,要比较好。
正则化就是减弱模型精度,提高泛化效果的这个东西。