您的位置:首页 > 其它

4-Logistic Regression

2015-08-26 17:29 281 查看

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_\theta(x)=g(\theta^Tx)

hθ(x)h_\theta(x)代表y=1的可能性的大小

若h大于0.5,那么就取1,如果小于0.5就取0.

Sigmoid function/Logistic function: g(z)=11+e−zg(z)= \frac {1}{1+e^{-z}}

当 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_\theta(x)=g(\theta_0+\theta_1 x_1+\theta_2 x_2)

圆:hθ(x)=g(θ0+θ1x1+θ2x2+θ3x21+θ4x22)h_\theta(x)=g(\theta_0+\theta_1 x_1+\theta_2 x_2+\theta_3 x_1^2+\theta_4 x_2^2)

更复杂的:hθ(x)=g(θ0+θ1x1+θ2x2+θ3x21+θ4x21x2+θ5x21x22+θ6x31x2)h_\theta(x)=g(\theta_0+\theta_1 x_1+\theta_2 x_2+\theta_3 x_1^2+\theta_4 x_1^2 x_2+\theta_5 x_1^2 x_2^2 +\theta_6 x_1^3 x_2)

4 - Cost Function 代价函数

J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)={−log(hθ(x))ify=1−log(1−hθ(x))ify=0Note:y=0or1always \begin{aligned}
&J(\theta)=\frac{1}{m} \sum\limits_{i=1}^m Cost(h_\theta(x^{(i)}),y^{(i)}) \\
&Cost(h_\theta(x),y)= \begin{cases}
-log(h_\theta(x)) \quad if\quad y=1 \\
-log(1-h_\theta(x)) \quad if\quad y=0
\end{cases} \\
& Note:y=0 \;or\; 1 \; always
\end{aligned}

关于Cost函数

通过maximum likelihood estimation(即极大似然估计)计算得来。

之所以不用原来线性回归的误差公式,是因为Sigmoid函数的存在会使J函数最终的结果不是凸函数,存在多个极值点。

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

Cost Function:

J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))] \begin{aligned}
J(\theta)&=\frac{1}{m}\sum\limits_{i=1}^m Cost(h_\theta(x^{(i)}),y^{(i)}) \\
&=-\frac{1}{m}[\sum\limits_{i=1}^m y^{(i)}log(h_\theta(x^{(i)})) +(1-y^{(i)})log(1-h_\theta(x^{(i)}))]
\end{aligned}

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

Repeat{θj:=θj−α∂∂θjJ(θ)(simultaneouslyupdateallθj)}
\begin{aligned}
&Repeat\{ \\
&\quad\theta_j :=\theta_j - \alpha \frac{\partial}{\partial\theta_j}J(\theta) \\
&\quad(simultaneously\;update\;all\;\theta_j) \\
&\}
\end{aligned}

而代入偏导结果之后是:

Repeat{θj:=θj−α∑(i)m(hθ(x(i))−y(i))x(i)j(simultaneouslyupdateallθj)}
\begin{aligned}
&Repeat\{ \\
&\quad\theta_j :=\theta_j - \alpha \sum\limits_{(i)}^m (h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}\\
&\quad(simultaneously\;update\;all\;\theta_j) \\
&\}
\end{aligned}

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

6 - Advanced Optimization 高级优化

6.1 计算条件

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

J(θ)

∂∂θjJ(θ)\frac{\partial}{\partial \theta_j} J(\theta)

θ初值

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)的值,选取最大的作为其分类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: