吴恩达机器学习 -- 逻辑回归(Logistic Regression)

7.1  分类问题

如果要预测的变量 y 是离散值,此时我们应用 logistics regression。

在分类问题中,我们对某一事物进行分类,有二分类和多分类问题。此节先讨论二分类问题,即只有两个分类。

因变量(dependent variable)可能属于的两个类分别称为负向类negative class)和正向类positive class),则因变量 y \in 0,1 , 0 表示负向类,1 表示正向类。

用线性回归算法解决分类问题往往不是一个好方法,我们用逻辑回归去解决。

逻辑回归算法虽然带着“回归”二字,但是却是一个分类算法,适用于标签 y 取值离散的情况。

 

7.2 假说陈述

逻辑回归模型的假设函数为: h_{\theta}(x)=g(\theta^{T}X),其中  X 代表特征向量,g 代表逻辑函数,g 是一个常用的S型逻辑函数(sigmoid function),公式为 g(z) = \frac{1}{1+e^{-z}},该函数的图像为:

\small \theta^{T}X 代入有逻辑函数 g,有 h_{\theta}(x)=\frac{1}{1+e^{-\theta^{T}X}}

h_{\theta}(x)的作用是:对给定的输入变量x,在给定的参数 \theta 下,计算输出变量=1的可能性,即h_{\theta}(x)=P(y=1|x;\theta)

例如,如果对于给定的 x,通过已经确定的参数计算得出h_{\theta}(x)=0.7,则表示有70%的几率为正向类,相应地为负向类的几率为1-0.7=0.3。

 

7.3 决策边界

在逻辑回归中,我们预测:

h_{\theta}(x)\geq 0.5 时,y =1

h_{\theta}(x)< 0.5 时,y =0

根据上图,可以知道:

z \geq 0 时,g(z) \geq 0.5

z < 0 时,g(z)<0.5

z=\theta^{T}x,即当 \theta^{T}x\geq 0 时,预测 y =1 ,当 \theta^{T}x< 0 时,预测 y =0

假设有一个模型:

假设我们已经利用代价函数拟合出参数 \theta_{0}=3,\theta_{1}=1,\theta_{2}=1,参数向量 \theta=\begin{bmatrix} -3\\ 1\\ 1 \end{bmatrix}

则当 -3+x_{1}+x_{2} \geq 0 时,预测 y =1,可以绘制直线 x_{1}+x_{2}= 3,将预测为1的区域和预测为 0的区域分隔开。

注意:决策边界是参数 \theta 的性质,不是数据集的性质。当确定了参数 \theta,就可以确定决策边界,训练集用来拟合参数 \theta

 

7.4 代价函数

对于线性回归模型,定义的代价函数是 J(\theta _{0},\theta _{1},...,\theta _{n})= \frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}

理论上来说,我们也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将带入到这样定义了的代价函数中时,我们得到的代价函数将是一个非凸函数non-convexfunction),它会有很多局部最优值,当使用梯度下降法时,不能保证会收敛到全局最优值。

重新定义逻辑回归模型的代价函数为:

J(\theta)=\frac{1}{m}\sum_{i=1}^{m}Cost(h_{\theta}(x^{(i)}),y^{(i)}),其中:

Cost(h_{\theta}(x^{(i)}),y^{(i)})=\left\{\begin{matrix} -\log (h_{\theta}(x))\ \ \ \ \ \ \ \ if \ y = 1\\ -\log (1-h_{\theta}(x))\ \ \ if \ y = 0 \end{matrix}\right.

h_{\theta}(x)Cost(h_{\theta}(x),y)之前的关系如下:

分析上图可知:

y =1h_{\theta}(x)=1 时,误差为0;而当h_{\theta}(x)\rightarrow 0 时,误差却急剧增大,趋向于 \infty

y =0h_{\theta}(x)=0 时,误差为0;而当h_{\theta}(x)\rightarrow 1 时,误差却急剧增大,趋向于 \infty

 

7.5 简化代价函数与梯度下降

将构建的 Cost(h_{\theta}(x),y) 作如下简化:

Cost(h_{\theta}(x),y) = -y\times\log (h_{\theta}(x))-(1-y)\times\log (1-h_{\theta}(x)),代入代价函数得到:

得到代价函数后,就可以利用梯度下降法来求得能使代价函数最小的参数了,算法为:

Repeat\left \{ \theta_{j} := \theta_{j} - \alpha\frac{\partial J(\theta)}{\partial \theta_{j}}(simultaneously\ update\ all )\right \}

求偏导后得到:

Repeat\left \{ \theta_{j} := \theta_{j} - \alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}(simultaneously\ update\ all )\right \}

注:虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的 h_{\theta}(x)=g(\theta^{T}X) 与线性回归中不同,所以实际上是不一样的。除此之外,在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。

 

7.6 高级优化

除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度Conjugate Gradient),局部优化法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS)

 

7.7 多类别分类:一对多

用逻辑回归模型也可以解决多分类问题。对于一个多分类问题,数据集类似这样:

用一对多的思想,用在多类分类问题。

可以使用一个训练集,将其分成3个二元分类问题

拿上图来说,可以创建一个,新的"伪"训练集,类型2和类型3定为负类,类型1设定为正类。下面训练一个标准的逻辑回归分类器,这样就得到一个正边界。

为了能实现这样的转变,将多个类中的一个类标记为正向类(y=1),然后将其他所有类都标记为负向类,这个模型记作h_{\theta}^{(1)}(x)。接着,类似地第我们选择另一个类标记为正向类(y=2),再将其它类都标记为负向类,将这个模型记作h_{\theta}^{(2)}(x) ,依此类推。 最后我们得到一系列的模型简记为:h_{\theta}^{(i)}(x)=p(y=i|x;\theta), 其中:i=1,2,3...k

然后要做的就是训练这个逻辑回归分类器:h_{\theta}^{(i)}(x), 其中 i 对应每一个可能的 y=i ,最后,为了做出预测,给出输入一个新的 x值,用这个做预测。我们要做的就是在我们三个分类器里面输入 x ,然后我们选择一个让 x 最大的h_{\theta}^{(i)}(x).

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值