个人学习笔记:看机器学习实战这本书,里面关于logistic回归分类的原理以及在python上的实现讲得简单明了,通俗易懂。
书里只谈到logistic回归在二分类上的应用,并没有举例多分类的应用例子。经个人网上查询,其实多分类跟二分类也是大同小异,可参考这篇文章
http://blog.csdn.net/woaidapaopao/article/details/51590376
里面有一段话:
关于logistic 回归的内容,参照前面的文章,这里主要讲了多分类的方法和Python的实现,
第一种简单的方法是一对所有(one-Versus-All,OVA),给定m个类,训练m个二元分类器(将选取任意一类,再将其它所有类看成是一类,构建一个两类分类器)。分类器j使类j的元组为正类,其余为负类,进行训练。为了对未知元组X进行分类,分类器作为一个组合分类器投票。例如,如果分类器j预测X为正类,则类j得到一票。如果他测得X为正类,则类j得到一票。如果测X为负类,则除j以外的每一个类都得到一票(相当于此类的票数减一)。得票最多的指派给X。
这种方法简单有效,而且使用类似logistic这种有概率值大小可以比较的情况下,类边界其实是个有范围的值,可以增加正确率。而且当K(类别数量)很大时,通过投票的方式解决了一部分不平衡性问题。
第二篇文章,里面也讲到关于多分类的问题 http://python.jobbole.com/85041/
logistic回归一般用于二分类问题,比如判断一封邮件是否为垃圾邮件,判断照片中的人是男是女,预测一场比赛输还是赢……当然也可以用于多分类问题,比如k类别,就进行k次logistic回归。
我的前一篇文章:kNN算法__手写识别 讲到用kNN算法识别数字0~9,这是个十类别问题,如果要用logistic回归,
得做10次logistic回归,第一次将0作为一个类别,1~9作为另外一个类别,这样就可以识别出0或非0。同样地可以将1作为一个类别,0、2~9作为一个类别,这样就可以识别出1或非1……..
本文的实例同样是识别数字,但为了简化,我只选出0和1的样本,这是个二分类问题。下面开始介绍实现过程: