Logistic回归

Logistic回归虽然带有“回归”,但却是一个分类算法,分类算法是指可以根据包含正确答案给定数据集(训练集),来预测离散的值。

我们尝试预测目标变量y的值,肯定是一个离散的值,这里以二元分类为例,y的取值可以为0或1

y\in \left \{ 0, 1\right \}

其中用0表示的类称为“负类”(Negative Class),而用1表示的类被称为“正类”(Positive Class)。 

如果采用之前的线性回归算法的假设函数h_{\theta }(x)=\theta ^{T}x,当输入变量很大或很小时,根据线性的关系可能会导致目标变量y的值远大于1或远小于0,如下图所示

而Logistic算法就是让输出的目标变量y\in (0,1),使假设函数满足  

0\leqslant{h_\theta }(x)\leqslant 1

和线性回归一样,Logistic回归同样有假设函数和代价函数。

1、假设函数 

为了使假设函数h_\theta(x)\in [0,1],引入一个新的函数g(z),称为Sigmoid函数或者Logistic函数。 

g(z)=\frac{1}{1+e^{-z}}

z\rightarrow -\infty

\underset{z\rightarrow -\infty }{\lim}g(z)=\underset{z\rightarrow -\infty }{\lim}\frac{1}{1+e^{-z}}=0

z\rightarrow \infty

 \underset{z\rightarrow +\infty }{\lim}g(z)=\underset{z\rightarrow +\infty }{\lim}\frac{1}{1+e^{-z}}=1

 因为g(z)的导数

g^{'}(z)=\frac{e^{-z}}{(1+e^{-z})^{2}}> 0

所以g(z) 在(-\infty, +\infty )上单调递增。

又因为g(z)的二阶导数

g''(z)=\frac{e^{-z}(e^{-z}-1)}{(1+e^{-z})^{3}}

所以当z>0时,g''(z)<0g(z)为凸函数,当z<0时,g''(z)>0g(z)为凹函数。  

g(z)\in [0,1],其图像大致为

 将线性回归的假设函数(也可以是多项式回归的假设函数)代入g(z),可以得到Logistic回归的假设函数

h_{\theta }(x)=g(\theta ^{T}x)=\frac{1}{1+e^{-\theta ^{T}x}}

这样假设函数h_{\theta }(x)也属于[0,1]

该假设函数的意义为,当输入一个特征向量x,假设函数h_{\theta }(x)输出的值为y=1的概率,既为

h_{\theta }(x)=P(y=1|x,\theta )

2、代价函数

 训练集:\left \{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\cdots ,(x^{(m)},y^{(m)}) \right \},有m个训练样本

其中

x\in \begin{pmatrix} x_{0}\\ x_{1}\\ \vdots \\ x_{n} \end{pmatrix}

输入变量xn +1维向量,有n个特征,x_{0}=1,目标变量y\in \left \{ 0,1 \right \} 

假设函数

h_{\theta }(x)=g(\theta ^{T}x)=\frac{1}{1+e^{-\theta ^{T}x}}

为了使梯度下降法更好的工作,我们应该使代价函数为凸函数,避免梯度下降法陷入局部最小,而达不到全局最小。

故代价函数为

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

 当y=1时,在输入特征向量x后,假设函数h_{\theta }(x)越趋向于1 

\underset{h_{\theta }(x)\rightarrow 1}{\lim}-\log(h_{\theta }(x))=0

代价函数Cost(h_{\theta }(x),y)越趋向于0,说明该假设函数越拟合训练集。

假设函数h_{\theta }(x)越趋向于0

\underset{h_{\theta }(x)\rightarrow 0}{\lim}-\log(h_{\theta }(x))=+\infty

代价函数Cost(h_{\theta }(x),y)越趋向于+\infty,说明该假设函数误差越大。

 同理可得,当y=0时,在输入特征向量x后,假设函数h_{\theta }(x)越趋向于0

\underset{h_{\theta }(x)\rightarrow 0}{\lim}-\log(1-h_{\theta }(x))=0

代价函数Cost(h_{\theta }(x),y)越趋向于0,说明该假设函数越拟合训练集。 

假设函数h_{\theta }(x)越趋向于1

\underset{h_{\theta }(x)\rightarrow 1}{\lim}-\log(1-h_{\theta }(x))=+\infty

代价函数Cost(h_{\theta }(x),y)越趋向于+\infty,说明该假设函数误差越大。

因为y\left \{ 0,1 \right \},是两个离散的值,所以我们可以简化代价函数为

Cost(h_{\theta }(x),y)=-y\log (h_{\theta }(x))-(1-y)\log(1-h_{\theta }(x))

这和上面的代价函数完全等价,但不必写成分段形式,最终我们可以写出代价函数为

J(\overrightarrow{\theta})=\frac{1}{m}\sum_{i=1}^{m}Cost(h_{\theta }(x^{(i)}),y^{(i)}) \\=-\frac{1}{m}\sum_{i=1}^{m}\left [ y^{(i)}\log (h_{\theta }(x^{(i)}))+(1-y^{(i)})\log(1-h_{\theta }(x^{(i)})) \right ]

3、梯度下降法及优化 

为了得出\underset{\theta }{min}J(\theta ),依旧采用梯度下降法,梯度下降法的公式和之前的一样

\theta _{j}:=\theta _{j}-\alpha \cdot \frac{\partial J(\overrightarrow{\theta} )}{\partial \theta _{j}}

因为最终的代价函数略微有点复杂,我们先将假设函数

h_{\theta }(x)=\frac{1}{1+e^{-\theta ^{T}x}}

代入代价函数

J(\overrightarrow{\theta})=-\frac{1}{m}\sum_{i=1}^{m}\left [ y^{(i)}\log \left ( \frac{1}{1+e^{-\theta^{T}x^{(i)}}} \right )+(1-y^{(i)})\log\left ( \frac{e^{-\theta^{T}x^{(i)}}}{1+e^{-\theta^{T}x^{(i)}}} \right ) \right ]

再对代价函数求偏导,看最终结果能不能化简 

\frac{\partial J(\overrightarrow{\theta} )}{\partial \theta _{j}}=-\frac{\ln 10}{m}\sum_{i=1}^{m}\left [y^{(i)}\cdot \frac{e^{-\theta ^{T}x^{(i)}}\cdot x_{j}^{(i)}}{1+e^{-\theta ^{T}x^{(i)}}}-(1-y^{(i)})\cdot \frac{x_{j}^{(i)}}{1+e^{-\theta ^{T}x^{(i)}}} \right ]\\=-\frac{\ln 10}{m}\sum_{i=1}^{m}\left [ x_{j}^{(i)}y^{(i)}- \frac{x_{j}^{(i)}}{1+e^{-\theta ^{T}x^{(i)}}} \right ]=-\frac{\ln 10}{m}\sum_{i=1}^{m}\left [ x_{j}^{(i)}\left ( y^{(i)}-\frac{1}{1+e^{-\theta ^{T}x^{(i)}}} \right ) \right ] \\= \frac{\ln 10}{m}\sum_{i=1}^{m}\left [ x_{j}^{(i)}\left ( h_{\theta }(x^{(i)})-y^{(i)} \right ) \right ]

把常数\ln 10省略,最后得出梯度下降的公式为

\theta _{j}:= \theta _{j}-\alpha \cdot \frac{1}{m}\sum_{i=1}^{m}\left [ \left ( h_{\theta }(x^{(i)})-y^{(i)} \right )x_{j}^{(i)} \right ]

将梯度下降法同时作用在所有\theta上。

在实际运用中可以选择其他优化算法来计算\underset{\theta }{min}J(\theta )

  • 共轭梯度法
  • BFGS
  • L-BFGS

上述三种方法不需要选择学习率\alpha,在给出代价函数J(\theta )和偏导数\frac{\partial J(\theta )}{\partial \theta _{j}}后,这些算法都有一个智能内循环,称为线搜索算法,它可以自动尝试不同的学习率\alpha,并自动选择一个最优的\alpha,甚至在每次迭代过程中都会选择合适的\alpha,就结果而言,这些算法的收敛速度远大于梯度下降法。

4、决策边界

 在利用梯度下降法计算出\underset{\theta }{min}J(\theta )后,把对应的\theta向量带入到假设函数中,之前提到假设函数根据输入的特征,计算出的值是y=1的概率,当

h_{\theta }(x)=\frac{1}{1+e^{-\theta ^{T}x}}\geqslant 0.5

我们认为y=1,而

h_{\theta }(x)=\frac{1}{1+e^{-\theta ^{T}x}}<0.5

反之则认为y=0

又因为g(z)单调递增,所以当

\theta ^{T}x\geqslant 0

既在\theta ^{T}x的上方,认为是y=1的范围

\theta ^{T}x< 0

\theta ^{T}x的下方,认为是y=0的范围。

因此\theta ^{T}x= 0就是假设函数h_{\theta }(x)的决策边界,决策边界是假设函数的属性,而不是训练集的属性。一旦确定,和训练集无关。

5、多元分类

上面所讲的都是二元分类问题,y\in \left \{ 0,1 \right \},但在实际情况下可能并不只是二元分类,可能需要分成好几类,则需要的离散值也会随之增多,既n元分类

y\in \left \{ 1,2,\cdots ,n \right \}

 这里以三元分类为例,有两个特征,x_{1}x_{2},分成三个类别,如下图所示

我们需要将这个训练集转化为三个独立的二元分类问题,先从类别1开始

把类别1设置为正类别,其余的设置为负类别.

把类别2设置为正类别,其余设置为负类别。

把类别3设置为正类别,其余设置为负类别。

这样就拟合出了三个假设函数,有三条决策边界,每一个假设函数计算出的值都是该类别作为正类别时的概率,既

h_{\theta }^{(i)}(x)=P(y=i|x;\theta )               (i=1,2,3)

最后我们我们为了预测,给定一个新的输入特征向量x,期望获得的目标变量就是三个假设函数中的最大值,表示落在哪个区域的概率最大,既计算

\underset{\theta }{max}h_{\theta }^{(i)}(x)

对于多元分类问题,我们还可以采用其他的假设函数,假设有n个类别

h_{\Theta }\left ( x \right ) =\begin{bmatrix} \left (h_{\Theta }\left ( x \right ) \right )_{1}\\ \left (h_{\Theta }\left ( x \right ) \right )_{2}\\ \vdots \\ \left (h_{\Theta }\left ( x \right ) \right )_{n} \end{bmatrix} 

其中

\left (h_{\Theta }\left ( x \right ) \right )_{i}=(\theta)_{i}^{T}x

每个输出类别\left (h_{\Theta }\left ( x \right ) \right )_{i}的参数\theta_{i}都不一样,但是

\left (h_{\Theta }\left ( x \right ) \right )_{1}+\left (h_{\Theta }\left ( x \right ) \right )_{2}+\cdots +\left (h_{\Theta }\left ( x \right ) \right )_{n}=1

\left (h_{\Theta }\left ( x \right ) \right )_{i}和二元分类一样,依然表示输出为该类别的概率

\left (h_{\theta }(x) \right )_{i}=P(y=i|x,(\theta)_{i} )

目标变量y为一个向量,属于第k个类别时,y_{k}=1,其余都是0,表示为向量形式为

y=\begin{bmatrix} 0\\ 0\\ \vdots \\ 1\\ \vdots\\ 0 \end{bmatrix}

因此代价函数J(\theta )

J(\theta) = -\frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}y_{k}^{(i)}\log \left ( h_{\theta }\left ( x^{(i)} \right )_{k} \right ) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值