吴恩达机器学习第六章【Logistic Regression】

吴恩达机器学习第六章【Logistic Regression】

Classification【分类问题】

在分类问题中,你要预测的变量 y y 是离散的值,我们提出了一种叫做逻辑回归 (Logistic Regression) 的算法。

我们从二元的分类问题开始讨论。

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

但对于线性回归问题来说,函数的输出值可能大于1也可能小于0。所以不可能实现。所以我们研究逻辑回归。

Hypothesis Representation 【假说表示】

Classification中我们提到怎么使分类器的输出值在0和1之间,由此我们提出一个假设:

h θ ( x ) = g ( θ T X ) [ 0 , 1 ] h_\theta(x)=g(\theta^TX)\in[0,1]

其中:
X X 代表特征向量
g g 代表逻辑函数(logistic function)是一个常用的逻辑函数为S形函数(Sigmoid function),公式为: g ( z ) = 1 1 + e z g\left( z \right)=\frac{1}{1+{{e}^{-z}}}

在这里插入图片描述

在这里插入图片描述

扫描二维码关注公众号,回复: 11068925 查看本文章

h θ ( x ) h_\theta \left( x \right) 的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性(estimated probablity)即 h θ ( x ) = P ( y = 1 x ; θ ) h_\theta \left( x \right)=P\left( y=1|x;\theta \right)
例如,如果对于给定的 x x ,通过已经确定的参数计算得出 h θ ( x ) = 0.7 h_\theta \left( x \right)=0.7 ,则表示有70%的几率 y y 为正向类,相应地 y y 为负向类的几率为1-0.7=0.3。其中 P ( y = 1 x ; θ ) + P ( y = 0 x ; θ ) = 1 P\left( y=1|x;\theta \right)+P\left( y=0|x;\theta \right)=1

Decision Boundary【判定边界】

在这里插入图片描述

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

h θ ( x ) > = 0.5 {h_\theta}\left( x \right)>=0.5 时,预测 y = 1 y=1

h θ ( x ) < 0.5 {h_\theta}\left( x \right)<0.5 时,预测 y = 0 y=0

根据上面绘制出的 S 形函数图像,我们知道当

z = 0 z=0 g ( z ) = 0.5 g(z)=0.5

z > 0 z>0 g ( z ) > 0.5 g(z)>0.5

z < 0 z<0 g ( z ) < 0.5 g(z)<0.5

z = θ T x z={\theta^{T}}x ,即:
θ T X > = 0 {\theta^{T}}X>=0 时,预测 y = 1 y=1
θ T X < 0 {\theta^{T}}X<0 时,预测 y = 0 y=0

现在假设我们有一个模型:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QP9Fv0PO-1581090656051)(https://img.vim-cn.com/84/3fb0dbd3fc2144ee394f5447dfe10f220e5423.png)]

并且参数 θ \theta 是向量[-3 1 1]。 则当 3 + x 1 + x 2 0 -3+{x_1}+{x_2} \geq 0 ,即 x 1 + x 2 3 {x_1}+{x_2} \geq 3 时,模型将预测 y = 1 y=1
我们可以绘制直线 x 1 + x 2 = 3 {x_1}+{x_2} = 3 ,这条线便是我们模型的分界线,将预测为1的区域和预测为 0的区域分隔开。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D7fwLZyd-1581090656052)(https://img.vim-cn.com/eb/19287d43de640d859224a2c83f6fa6403483ba.png)]

假使我们的数据呈现这样的分布情况,怎样的模型才能适合呢?

在这里插入图片描述

因为需要用曲线才能分隔 y = 0 y=0 的区域和 y = 1 y=1 的区域,我们需要二次方特征: h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 ) {h_\theta}\left( x \right)=g\left( {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2}}+{\theta_{3}}x_{1}^{2}+{\theta_{4}}x_{2}^{2} \right) 是[-1 0 0 1 1],则我们得到的判定边界恰好是圆点在原点且半径为1的圆形。

我们可以用非常复杂的模型来适应非常复杂形状的判定边界。

Cost Function【代价函数】

对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将 h θ ( x ) = 1 1 + e θ T x {h_\theta}\left( x \right)=\frac{1}{1+{e^{-\theta^{T}x}}} 带入到这样定义了的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convexfunction)。

这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。

线性回归的代价函数为: J ( θ ) = 1 m i = 1 m 1 2 ( h θ ( x ( i ) ) y ( i ) ) 2 J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{1}{2}{{\left( {h_\theta}\left({x}^{\left( i \right)} \right)-{y}^{\left( i \right)} \right)}^{2}}}
我们重新定义逻辑回归的代价函数为: J ( θ ) = 1 m i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{{Cost}\left( {h_\theta}\left( {x}^{\left( i \right)} \right),{y}^{\left( i \right)} \right)} ,其中 C o s t ( h θ ( x ( i ) , y ( i ) ) = 1 2 ( h θ ( x ( i ) ) y ( i ) ) 2 = { l g ( h θ ( x ) ) i f y = 1 l g ( 1 h θ ( x ) ) i f y = 0 Cost(h_\theta(x^{(i)},y^{(i)})=\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2=\begin{cases}-lg(h_\theta(x))&if&y=1 \\-lg(1-h_\theta(x))&if&y=0\end{cases}

所以:

C o s t ( h θ ( x ( i ) , y ( i ) ) = y × l g ( h θ ( x ) ) ( 1 y ) × l g ( 1 h θ ( x ) ) Cost(h_\theta(x^{(i)},y^{(i)})=-y\times lg\left( {h_\theta}\left( x \right) \right)-(1-y)\times lg\left( 1-{h_\theta}\left( x \right) \right)

带入代价函数得到:
J ( θ ) = 1 m i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) ( 1 y ( i ) ) log ( 1 h θ ( x ( i ) ) ) ] J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}
即: J ( θ ) = 1 m i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) log ( 1 h θ ( x ( i ) ) ) ] J\left( \theta \right)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}

证明如下:

Repeat {
θ j : = θ j α θ j J ( θ ) \theta_j := \theta_j - \alpha \frac{\partial}{\partial\theta_j} J(\theta)
(simultaneously update all )
}

求导后得到:

Repeat {
θ j : = θ j α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i ) \theta_j := \theta_j - \alpha \frac{1}{m}\sum\limits_{i=1}^{m}{{\left( {h_\theta}\left( \mathop{x}^{\left( i \right)} \right)-\mathop{y}^{\left( i \right)} \right)}}\mathop{x}_{j}^{(i)}
(simultaneously update all )
}

J ( θ ) = 1 m i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) log ( 1 h θ ( x ( i ) ) ) ] J\left( \theta \right)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}
考虑:
h θ ( x ( i ) ) = 1 1 + e θ T x ( i ) {h_\theta}\left( {{x}^{(i)}} \right)=\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}}
则:
y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) log ( 1 h θ ( x ( i ) ) ) {{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)
= y ( i ) log ( 1 1 + e θ T x ( i ) ) + ( 1 y ( i ) ) log ( 1 1 1 + e θ T x ( i ) ) ={{y}^{(i)}}\log \left( \frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)
= y ( i ) log ( 1 + e θ T x ( i ) ) ( 1 y ( i ) ) log ( 1 + e θ T x ( i ) ) =-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^T}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^T}{{x}^{(i)}}}} \right)

所以:
θ j J ( θ ) = θ j [ 1 m i = 1 m [ y ( i ) log ( 1 + e θ T x ( i ) ) ( 1 y ( i ) ) log ( 1 + e θ T x ( i ) ) ] ] \frac{\partial }{\partial {\theta_{j}}}J\left( \theta \right)=\frac{\partial }{\partial {\theta_{j}}}[-\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^{T}}{{x}^{(i)}}}} \right)]}]
= 1 m i = 1 m [ y ( i ) x j ( i ) e θ T x ( i ) 1 + e θ T x ( i ) ( 1 y ( i ) ) x j ( i ) e θ T x ( i ) 1 + e θ T x ( i ) ] =-\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\frac{-x_{j}^{(i)}{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}{1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}}]
= 1 m i = 1 m y ( i ) x j ( i ) 1 + e θ T x ( i ) ( 1 y ( i ) ) x j ( i ) e θ T x ( i ) 1 + e θ T x ( i ) ] =-\frac{1}{m}\sum\limits_{i=1}^{m}{{y}^{(i)}}\frac{x_j^{(i)}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}]
= 1 m i = 1 m y ( i ) x j ( i ) x j ( i ) e θ T x ( i ) + y ( i ) x j ( i ) e θ T x ( i ) 1 + e θ T x ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{{{y}^{(i)}}x_j^{(i)}-x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}+{{y}^{(i)}}x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}}
= 1 m i = 1 m y ( i ) ( 1 + e θ T x ( i ) ) e θ T x ( i ) 1 + e θ T x ( i ) x j ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{{{y}^{(i)}}\left( 1\text{+}{{e}^{{\theta^T}{{x}^{(i)}}}} \right)-{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}x_j^{(i)}}
= 1 m i = 1 m ( y ( i ) e θ T x ( i ) 1 + e θ T x ( i ) ) x j ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}{({{y}^{(i)}}-\frac{{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}
= 1 m i = 1 m ( y ( i ) 1 1 + e θ T x ( i ) ) x j ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}{({{y}^{(i)}}-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}
= 1 m i = 1 m [ y ( i ) h θ ( x ( i ) ) ] x j ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}-{h_\theta}\left( {{x}^{(i)}} \right)]x_j^{(i)}}
= 1 m i = 1 m [ h θ ( x ( i ) ) y ( i ) ] x j ( i ) =\frac{1}{m}\sum\limits_{i=1}^{m}{[{h_\theta}\left( {{x}^{(i)}} \right)-{{y}^{(i)}}]x_j^{(i)}}

C o s t ( h θ ( x ( i ) , y ( i ) ) = = { l g ( h θ ( x ) ) i f y = 1 l g ( 1 h θ ( x ) ) i f y = 0 Cost(h_\theta(x^{(i)},y^{(i)})==\begin{cases}-lg(h_\theta(x))&if&y=1 \\-lg(1-h_\theta(x))&if&y=0\end{cases}

h θ ( x ) {h_\theta}\left( x \right) C o s t ( h θ ( x ) , y ) Cost\left( {h_\theta}\left( x \right),y \right) 之间的关系如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7B8YFPvX-1581090656054)(https://img.vim-cn.com/77/7e96f7e199a6212699947a2974ecfe7ba2f25e.png)]

这样构建的 C o s t ( h θ ( x ) , y ) Cost\left( {h_\theta}\left( x \right),y \right) 函数的特点是:当实际的 y = 1 y=1 h θ ( x ) {h_\theta}\left( x \right) 也为 1 时误差为 0,当 y = 1 y=1 h θ ( x ) {h_\theta}\left( x \right) 不为1时误差随着 h θ ( x ) {h_\theta}\left( x \right) 变小而变大;当实际的 y = 0 y=0 h θ ( x ) {h_\theta}\left( x \right) 也为 0 时代价为 0,当 y = 0 y=0 h θ ( x ) {h_\theta}\left( x \right) 不为 0时误差随着 h θ ( x ) {h_\theta}\left( x \right) 的变大而变大。

Python代码实现:

import numpy as np
    
def cost(theta, X, y):
    
  theta = np.matrix(theta)
  X = np.matrix(X)
  y = np.matrix(y)
  first = np.multiply(-y, np.log(X* theta.T))
  second = np.multiply((1 - y), np.log(1 - X* theta.T))
  return np.sum(first - second) / (len(X))

Simplified Cost Function and Gradient Descent【简化的成本函数和梯度下降】

Logistic regression cost function:

KaTeX parse error: Got function '\sum' with no arguments as argument to '\underset' at position 61: …{\underset{i=1}\̲s̲u̲m̲}Cost(h_\theta(…

这个式子可以合并成:

C o s t ( h θ ( x ) , y ) = y × l o g ( h θ ( x ) ) ( 1 y ) × l o g ( 1 h θ ( x ) ) Cost\left( {h_\theta}\left( x \right),y \right)=-y\times log\left( {h_\theta}\left( x \right) \right)-(1-y)\times log\left( 1-{h_\theta}\left( x \right) \right)
即,逻辑回归的代价函数:
C o s t ( h θ ( x ) , y ) = y × l o g ( h θ ( x ) ) ( 1 y ) × l o g ( 1 h θ ( x ) ) Cost\left( {h_\theta}\left( x \right),y \right)=-y\times log\left( {h_\theta}\left( x \right) \right)-(1-y)\times log\left( 1-{h_\theta}\left( x \right) \right)
= 1 m i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) log ( 1 h θ ( x ( i ) ) ) ] =-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}

我们要求出 min J ( θ ) \min J(\theta) 的参数$\theta ,另外,我们假设的输出,实际上就是这个概率值: p(y=1|x;\theta)$,就是关于 x x 以$\theta 为参数, y=1$ 的概率,你可以认为我们的假设就是估计 y = 1 y=1 的概率。

我们要使 min J ( θ ) \min J(\theta) 最小可以采用梯度下降的方法:

θ j : = θ j α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i ) {\theta_j}:={\theta_j}-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}}){x_{j}}^{(i)}}

其中这个和线性回归的梯度下降在形式上一致,但是假设却是不一致的,其中线性回归的假设函数是 h θ ( x ) = θ T X = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n {h_\theta}\left( x \right)={\theta^T}X={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}} ,而逻辑回归的假设函数却是 h θ = 1 1 + e θ T X h_\theta=\frac{1}{1+e^{-\theta^TX}}

当使用梯度下降法来实现逻辑回归时,我们有这些不同的参数$\theta ,就是 {\theta_{0}}$ θ 1 {\theta_{1}} θ 2 {\theta_{2}} 一直到 θ n {\theta_{n}} ,我们需要用这个表达式来更新这些参数。我们还可以使用 for循环来更新这些参数值,理想情况下,我们更提倡使用向量化的实现,可以把所有这些 n n 个参数同时更新。

Advanced Optimization【高级优化】

octave。。。

Multiclass Classification_ One-vs-all【多类别分类:一对多】

在上面中,我们讨论的是二分类问题,当多分类问题时,怎么办呢?

我们可以在多分类中提取一个类,并作为正类,其余作为负类。进行逻辑回归,由此可以把与其他类区分出来,所以对各个类操作可以把所有的类区分开来。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jfC2OsjK-1581090656055)(https://img.vim-cn.com/dd/414020abe286b46d33b2b86ac655f0fdb57240.png)]

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

最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。

总之,我们已经把要做的做完了,现在要做的就是训练这个逻辑回归分类器: h θ ( i ) ( x ) h_\theta^{\left( i \right)}\left( x \right) , 其中 i i 对应每一个可能的 y = i y=i ,最后,为了做出预测,我们给出输入一个新的 x x 值,用这个做预测。我们要做的就是在我们三个分类器里面输入 x x ,然后我们选择一个让 h θ ( i ) ( x ) h_\theta^{\left( i \right)}\left( x \right) 最大的$ i ,即 \mathop{\max}\limits_i,h_\theta^{\left( i \right)}\left( x \right)$。

发布了81 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43309286/article/details/104217695
今日推荐