首页 > 其他 > 详细

【HowTo ML】分类问题->逻辑回归

时间:2016-03-28 00:15:58      阅读:378      评论:0      收藏:0      [点我收藏+]

分类问题(Classification Problem)

样本因变量Y被标记为种类,也就是说分类是要预测一个离散值的输出。对应的问题就是分为 Y 类的概率。
支持向量机支持无数多的属性

逻辑回归(Logistic Regression)

逻辑回归:根据自变量确定因变量的种类,hθ(x)[0,1] 但是在分类问题中hθ(x)可以>1或者<0.
逻辑回归通常使用的是二元,这类问题中 y{0,1}.
其中:

0: Negative Class
1: Positive Class

常见问题:垃圾邮件过滤,欺诈检测,肿瘤识别.

通常我们不会使用线性回归来解决分类问题.
技术分享
对于两种分类来说,我们通常会引入阀值(Threshold),但当我们加入一个X较大的数据通常会对阀值造成很大影响.
但现实中影响却不大.

假设函数(Hypothesis Representation)

为了使hθ(x)[0,1],我们需要更改回归问题时用到的函数,变成形式hθ(x)=g(θTX).
其中g称为S型函数(Sigmoid function)或者(Logistic Function),定义为g(z)=11+e?z,函数图像如下:
技术分享
带入可得

hθ(x)=11+e?θTx

我们也能将hθ(x)解释为如下形式:
hθ(x)=P(y=1|x;θ)

解释为:当给定x,概率参数为θ时,y=1的概率.
对于二元分类问题来说y=0y=1是对立事件,所以y=0的概率就是1?P(y=1|x;θ).

决策边界(Decision boundary)

决策边界是决策函数的一个属性,由参数决定,能根据参数将样本分为不同类别的边界.
技术分享
为了更好的理解决策边界,现在我们考虑逻辑函数g(z)的对称性.通常,我们会将阀值设定在0.5,也就是说当hθ(x)0.5y=1.
其实,也就是当hθ(x)0y=1.

代价函数(Cost Function)

对于线性回归来说:

J(θ)=1mi=1m12(hθ(x(i))?y(i))2=1mi=1mCost(hθ(x(i)),y(i))

代价函数可以方便的表示为:
Cost(hθ(x),y)=12(hθ(x),y)

我们为什么不能直接套用线性回归的代价函数?因为我们期望代价函数能得到一个最小的值,但线性回归的代价函数是非凸函数(Non-convex),如左图,有多个局部最小值.我们期望能得到右图.
技术分享

那么逻辑回归的代价函数应该设计成什么样呢?

Cost(hθ(x),y)={log(hθ(x)?log(1?hθ(x))(if y=1)(if y=0)}

技术分享
技术分享
假设有个目标的x0,我们预测为1,但事实上却相反,那这个算法就会收到较大的惩罚.反之亦然.
但是有处于中部的预测错误,我们就不会受到较大惩罚.

为了方便编写,我们可将Cost函数转换成:

Cost(hθ(x),y)=?y log(hθ)?(1?y)log(1?hθ(x))

所以
J(θ)=1mi=1mCost(hθ(x(i)),y(i))=?1mi=1my log(hθ)+(1?y)log(1?hθ(x))

逻辑回归的梯度下降

梯度下降算法:

repeatuntilconvergence{θj:=θj?α??θjJ(θ0,θ1)(for j:n,n=2)}

带入待解函数后可化简为
repeatuntilconvergence{θj:=θj?α1mi=1m(hθ(x(i))?y(i))x(i)j(for j:n)}

惊奇(?)的发现,里面的公式其实没有变!
其实改变的只有hθ(x)函数.

特征缩放

线性回归的特征缩放是有效的!

其他参数求取方法

  • Conjugate gradient
  • 共轭梯度法BFGS(变尺度法)
  • L-BFGS(限制变尺度法)

优点:

  • 不需要手动选择学习率α(通过线性搜索选择)
  • 比梯度下降快

Octave中使用函数:
fminunc(无约束最小化函数):

 -- Function File: fminunc (FCN, X0)
 -- Function File: fminunc (FCN, X0, OPTIONS)
 -- Function File: [X, FVAL, INFO, OUTPUT, GRAD, HESS] = fminunc (FCN,
          ...)Octave:

具体用法

##定义代价函数
function [jVal, gradient] = costFunction(theta)
    #...
options = optimset( ‘GradObj‘, ‘on‘, ‘MaxIter‘, ‘100‘);

initialTheta=zeros(2,1);
[optTheta, functionVal, exitFlag] ...
    = fminunc(@costFunction, initalTheta, option;

options 解释:

  1. 梯度下降
  2. 打开
  3. 最大迭代次数
  4. 100次

exitFlag:
如果为1就是收敛了,具体查阅手册.

解决多类别分类问题(Multi-class classification)

思想: 把多类别分类转化为多次逻辑回归,也就是每次分为两类,一类为本次所选取的类,另一类为剩下的(One-vs-Rest).
技术分享
最后我们能得到K(种类个数)个逻辑分类器.也就可以得到每一种可能性的概率了,通常我们取最大的那个作为结果.

【HowTo ML】分类问题->逻辑回归

原文:http://blog.csdn.net/hivoodoo/article/details/50992008

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!