机器学习-3 logisitic 回归

来源:互联网 发布:java中的sleep 编辑:程序博客网 时间:2024/06/06 02:09

LogisticRegression / 逻辑斯特回归

Logistic回归解决的是当预测的值为两类bool的问题,比如邮件是否是垃圾、pv是否作弊等;那先的看看两类问题用之前的线性回归能有啥问题;

如上两图,左边预测回归的是连续实数,趋势是单调的;

而右边的预测的是bool值,这是应该叫做分类变量,如果依然用线性回归,结果如y1,看得出,由于没有单调的趋势,因此用单调的线性分类时,会导致如圈中的1被分为0;那有没有一个假设函数,能不能cover这种情况,有。如y2一样的函数,称为logistic函数,较好的解决这个问题,也叫sigmoid函数,图像很漂亮,其函数表达式为:


z->正无穷,h收敛1;z->负无穷,h收敛0;

通常将0.5做为分类阈值,即z >0,y -> 1, z < 0, y -> 0;

另外,这个h的范围是[0,1],其值可以认为是概率probability,这个使得输出值有意义的,另外是条件概率,即z的条件下,y=1的概率,用的时候可以根据对实际准招的需求,适当调整分类阈值,默认是0.5;

DecisionBoundary / 判决边界

啥时判决边界,因为是分类问题,那类与类之间就有一个相对最好的分界,如下图:

红叉和篮圈这两类分界区间中间的那条线就称为判决边界,说白了就是假设函数h(z)的z,判决边界就是h=0.5处;
这是线性分类,如上图的h为:

根据logistic函数的特点,x>0,h->1,y=1;x<=0,h->0,y=0;

对于非线性问题,如下图:


蓝色圆圈的即为判决边界h:

因此,logistic对非线性问题和线性问题都能cover,关键是看判决边界怎么选取,只要是能表达为判决边界z>0和<0分别各属于不同的类,就可以用logistic回归-- 一种分类的回归;

CostFunction/ 代价函数

选好了判别边界,选定了logistic回归,那下面看怎么选取参数 。

根据之前线性回归的代价函数如下:


和线性回归中假设函数是线性的不同,这里是logistic,会导致J不再是碗状的凹函数(习惯叫法),

如下图中有很多的局部最优点,之前的梯度下降法就不使用了,那么需要构造一个碗状的凹函数;


Logistic的代价函数如下:


当y=1时,若h=1,h-y=0;h-y无穷;当y=0时,若h=1,h-y无穷,h=0,h-y=0;


多类问题

         对每一类训练一个回归模型,加入有A、B、C三类,训练A回归模型,将A标注为一类,将B和C标注为一类;训练B回归模型时,将A和C标注为一类;以此C;作用是,将回归模型A、B、C都作用在测试样本上,择最佳的,因为前面提到,logistic的输出有实际意义,即属于该类别的概率,可以进行比较;