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)的值,选取最大的作为其分类。
相关文章推荐
- CSU 1328 近似回文词
- 压力测试工具 jmeter 使用发送json报文
- HashMap的工作原理
- Android下的USB Host介绍和开发
- 纯C语言INI文件解析
- Spring 4.2+websocket集群实现文本或图片推送、接收及显示
- Linux的watch命令 — 实时监测命令的运行结果
- olrconfig.xml 说明
- 浅谈cookie和session
- sparkSQL实战之二:编程指定模式
- hdu1796容斥原理
- Android ListView+CheckBox+EditText注意事项
- JS中容易忽略的、毫无技术性、最不容易发现的错误
- HashMap和Hashtable的区别
- HTML中children与childNodes节点的不同
- MD5算法原理
- 【暑假】[数学]UVa 10375 Choose and divide
- 对傅里叶变换的重新认识
- httpclient4的使用
- 我遇到的css奇葩问题