4-Logistic Regression

来源:互联网 发布:仙桃广电网络客服电话 编辑:程序博客网 时间:2024/04/28 21:38

1 - Classification

  • Logistic Regression解决的并不是regression问题,而是分类(Classification)问题。例如:Email(Spam/Not)、Tumor(Malignant/Benign)

  • 此时,不能再用Linear Regression的Gradient Descent方法来拟合了,现在的问题需要用Logistic Regression来解决,对用的Hypothesis函数取值范围必须在0-1之间

2 - Hypothesis Representation 拟合函数

  • Hypothesis: hθ(x)=g(θTx)
    • hθ(x)代表y=1的可能性的大小
    • 若h大于0.5,那么就取1,如果小于0.5就取0.
  • Sigmoid function/Logistic function: g(z)=11+ez
    • 当 z >=0,0.5 <= y < 1
    • 当 z< 0,0 < y < 0.5

3 - Decision Boundary 分类边界

  • 对于2中的公式,可知,当 θTx >= 0 时,y = 1; 当 θTx < 0 时,y = 0。此时 θTx >= 0 即为Decision Bounday
  • 分类边界类型:
    • 直线:hθ(x)=g(θ0+θ1x1+θ2x2)
    • 圆:hθ(x)=g(θ0+θ1x1+θ2x2+θ3x21+θ4x22)
    • 更复杂的:hθ(x)=g(θ0+θ1x1+θ2x2+θ3x21+θ4x21x2+θ5x21x22+θ6x31x2)

4 - Cost Function 代价函数

J(θ)=1mi=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)={log(hθ(x))ify=1log(1hθ(x))ify=0Note:y=0or1always

  • 关于Cost函数
    • 通过maximum likelihood estimation(即极大似然估计)计算得来。
    • 之所以不用原来线性回归的误差公式,是因为Sigmoid函数的存在会使J函数最终的结果不是凸函数,存在多个极值点。

5 - Simplified Cost Function and Gradient Descent 简化的代价函数、梯度下降法

  • Cost Function:

J(θ)=1mi=1mCost(hθ(x(i)),y(i))=1m[i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

  • 现在要求的是满足时的 θ 的取值,那么可以采用Gradient Descent方法来求得:

    Repeat{θj:=θjαθjJ(θ)(simultaneouslyupdateallθj)}

  • 而代入偏导结果之后是:

    Repeat{θj:=θjα(i)m(hθ(x(i))y(i))x(i)j(simultaneouslyupdateallθj)}

  • 梯度下降公式与线性回归中的完全相同!

6 - Advanced Optimization 高级优化

6.1 计算条件

要想计算Cost function的最小值,除了Gradient Descent还有其他方法。首先理清计算条件:

  • J(θ)
  • θjJ(θ)
  • θ初值

6.2 其他算法
主要有:

  • Conjugate gradient
  • BFGS
  • L-BFGS

与Gradient Descent相比较,这些算法:

  • 优点:
    • 不需要人工选择α的值
    • 通常比gradient descent运行快
  • 缺点:
    • 更加复杂(实现起来比较)

6.3 高级算法的使用方法

  • 实现一个costFunction:
    • 输入:theta(列向量)
    • 输出:jVal(误差的值)、gradient(θ的调整量,列向量)
  • 调用fminunc函数:
    • 输入:@costFunction,initialTheta,options
    • 输出:optTheta(计算出的θ值),functionVal(最小误差),exitFlag
    • 其中:options为函数参数选项,例如 options = optimset('GradObj', 'on', 'MaxIter', 100);

示例:

function [jVal, gradient] = costFunction(theta)jVal = (theta(1)-5)^2 +(theta(2)-5)^2;gradient = zeros(2,1);gradient(1) = 2*(theta(1)-5);gradient(2) = 2*(theta(2)-5);options = optimset('GradObj', 'on', 'MaxIter', 100);initialTheta = zeros(2,1);[optTheta,functionVal,exitFlag] = fminunc(@costFunction,initialTheta,options);

7 - Multiclass Classification- One-vs-all

多值分类问题:

  • Email tagging:Work、Friends、Family、Hobby
  • Medical diagrams:Not ill、Cold、Flu
  • Weather:Sunny、Cloudy、Rain、Snow

解决办法:One-vs-all(one-vs-rest)

  • 为每一个类别训练一个logsitic regression分类器。
  • 当输入x时,分别计算每个分类器的hθ(x)的值,选取最大的作为其分类
0 0
原创粉丝点击