【机器学习算法推导】逻辑回归

逻辑回归(logistic regression)是分类算法的一种,通过形成决策边界,达到对数据进行分类的效果。

1.逻辑回归模型

  逻辑回归的模型如下:
p 1 = p ( y = 1 ∣ x ) = 1 1 + e − θ T x = g ( θ T x ) p 0 = p ( y = 0 ∣ x ) = e − θ T x 1 + e − θ T x = 1 − g ( θ T x ) p_1=p(y=1|x)=\frac{1}{1+e^{-\theta^Tx}}=g(\theta^Tx) \\ p_0=p(y=0|x)=\frac{e^{-\theta^Tx}}{1+e^{-\theta^Tx}}=1-g(\theta^Tx) \\ p1=p(y=1x)=1+eθTx1=g(θTx)p0=p(y=0x)=1+eθTxeθTx=1g(θTx)
  将上式合并后,有
p ( y ∣ x ) = p 1 y p 0 1 − y p(y|x)=p_1^yp_0^{1-y} p(yx)=p1yp01y

2.算法思想

  逻辑回归中,以二分类为例,最终预测得到的是一个分类,也就是0或者1。若目标函数 h θ = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_θ=θ_0+θ_1x_1+θ_2x_2+...+θ_nx_n hθ=θ0+θ1x1+θ2x2+...+θnxn,最终得到的值,往往不可能刚好是0或者1,因此我们需要做一个映射,使得目标分数在刚好映射到0和1。这里用到一个新的函数 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1,该函数为Sigmoid函数,它的图像如下:
在这里插入图片描述
  可以发现,该函数在x无穷大时,函数值趋近于1,x无穷小时,函数值趋近于0,这符合我们的模型。并且,函数在x=0时,函数值为0.5,我们恰好可以x=0为界,将x大于0的输入值预测为1,将x小于0的输入值预测为0。
对于sigmoid函数,其求导非常方便,因为他的导数可以通过函数值直接计算出来,证明如下
g ′ ( z ) = d d z 1 1 + e − z = e − z ( 1 + e − z ) 2 = 1 ( 1 + e − z ) ( 1 − 1 1 + e − z ) = g ( z ) ( 1 − g ( z ) ) \begin{aligned}g^{'}(z) &=\frac{d}{dz}\frac{1}{1+e^{-z}}\\ &=\frac{e^{-z}}{(1+e^{-z})^2}\\ &=\frac{1}{(1+e^{-z})}(1-\frac{1}{1+e^{-z}})\\ &=g(z)(1-g(z)) \end{aligned} g(z)=dzd1+ez1=(1+ez)2ez=(1+ez)1(11+ez1)=g(z)(1g(z))
  因此,我们的目标函数变为 h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_θ(x)=g(θ^Tx)=\frac{1}{1+e^{-θ^Tx}} hθ(x)=g(θTx)=1+eθTx1,此时的 h θ ( x ) h_θ(x) hθ(x)相当于对于新输入样本预测为1的概率。当一组θ确定时,其函数图像也能够确定下来,此时的函数图像被称为“决策边界”,比如 h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_θ(x)=θ_0+θ_1x_1+θ_2x_2 hθ(x)=θ0+θ1x1+θ2x2的一个决策边界可能是 x 1 + 2 x 2 = 0 x_1+2x_2=0 x1+2x2=0,这时候决策边界大于0的一边,也就是输入新样本使得 x 1 + 2 x 2 ≥ 0 x_1+2x_2\geq 0 x1+2x20被划分为分类“1”, x 1 + 2 x 2 &lt; 0 x_1+2x_2&lt;0 x1+2x2<0的一边被划分为分类“0”。
  那么如何确定合适的θ来确定生成决策边界呢?我们选取合适的损失函数
c o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) y = 1 − l o g ( 1 − h θ ( x ) ) y = 0 cost(h_θ(x),y)=\begin{cases} -log(h_θ(x)) &amp; y=1 \\ -log(1-h_θ(x)) &amp; y=0 \end{cases} cost(hθ(x),y)={log(hθ(x))log(1hθ(x))y=1y=0
   − l o g ( h θ ( x ) ) -log(h_θ(x)) log(hθ(x))的函数图像如下:
在这里插入图片描述
   − l o g ( 1 − h θ ( x ) ) -log(1-h_θ(x)) log(1hθ(x))的函数图像如下:
在这里插入图片描述
  对于y=1的情况,从图像上可以发现,当我们的预测值为1的代价为0,当我们的预测值接近0时,被赋予极高的代价惩罚。
  对于y=0的情况,从图像上可以发现,当我们的预测值为0的代价为0,当我们的预测值接近1时,被赋予极高的代价惩罚。
  这符合我们的对损失函数的直观感受,并且为了方便计算,我们进一步将损失函数统一合并成以下的形式:
c o s t ( h θ ( x ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) cost(h_θ(x),y)=-ylog(h_θ(x))-(1-y)log(1-h_θ(x)) cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))
  因此对于整个函数的损失函数,我们定义为
J ( θ ) = − 1 m [ ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] J(θ)=-\frac{1}{m}[\sum_{i=1}^my^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))] J(θ)=m1[i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]
  最后使用我们的老朋友——梯度下降算法求解该损失函数,就可以求出最佳的θ使得代价最小,从而得到我们想要的决策边界。

3.极大似然估计

  上面对于损失函数的推导有些过于直观,通过极大似然估计我们可以很快的得到同样的式子。
  极大似然估计目的是利用已知的样本结果,反推出导致当前结果的最大概率的参数值。极大似然估计基于这样一种现象:假如有两个箱子,一个箱子里面有1颗黑球999颗白球,另一个箱子里面有999颗黑球1颗白球,并告诉你现在取出一颗黑球,问黑球是从哪个箱子取出来的。从第一印象来判断,我们肯定会觉得是有999颗黑球的箱子取出来的可能性比较大,并且也符合我们的经验事实。这便是“极大似然”的由来。
  对其求极大似然估计,构造似然函数 L ( θ ) \mathcal{L} (\theta) L(θ),求解使得样本概率最大的 θ \theta θ值,有
θ ^ = arg ⁡ max ⁡ θ L ( θ ) = arg ⁡ max ⁡ θ log ⁡ P ( Y ∣ X ) = arg ⁡ max ⁡ θ log ⁡ ∏ i = 1 N P ( y i ∣ x i ) = arg ⁡ max ⁡ θ ∑ i = 1 N log ⁡ P ( y i ∣ x i ) = arg ⁡ max ⁡ θ ∑ i = 1 N log ⁡ ( p 1 y i p 0 1 − y i ) = arg ⁡ max ⁡ θ ∑ i = 1 N ( y i log ⁡ p 1 + ( 1 − y i ) log ⁡ p 0 ) = arg ⁡ max ⁡ θ ∑ i = 1 N ( y i log ⁡ g ( θ T x i ) + ( 1 − y i ) log ⁡ ( 1 − g ( θ T x i ) ) ) \begin{aligned} \hat \theta &amp;=\arg \max_\theta \mathcal{L} (\theta) \\ &amp;=\arg \max_\theta \log P(Y|X) \\ &amp;=\arg \max_\theta \log \prod_{i=1}^N P(y_i|x_i) \\ &amp;=\arg \max_\theta \sum_{i=1}^N\log P(y_i|x_i) \\ &amp;=\arg \max_\theta \sum_{i=1}^N\log \left(p_1^{y_i}p_0^{1-y_i}\right) \\ &amp;=\arg \max_\theta \sum_{i=1}^N \left(y_i\log p_1+(1-y_i)\log p_0 \right) \\ &amp;=\arg \max_\theta \sum_{i=1}^N \left(y_i\log g(\theta^Tx_i)+(1-y_i)\log (1-g(\theta^Tx_i)) \right) \\ \end{aligned} θ^=argθmaxL(θ)=argθmaxlogP(YX)=argθmaxlogi=1NP(yixi)=argθmaxi=1NlogP(yixi)=argθmaxi=1Nlog(p1yip01yi)=argθmaxi=1N(yilogp1+(1yi)logp0)=argθmaxi=1N(yilogg(θTxi)+(1yi)log(1g(θTxi)))
  对取得的 L ( θ ) \mathcal{L} (\theta) L(θ)求偏导,得
∂ ∂ θ L ( θ ) = ∑ i = 1 N ( y i 1 g ( θ T x i ) − ( 1 − y i ) 1 1 − g ( θ T x i ) ) ∂ ∂ θ g ( θ T x i ) = ∑ i = 1 N ( y i 1 g ( θ T x i ) − ( 1 − y i ) 1 1 − g ( θ T x i ) ) g ( θ T x i ) ( 1 − g ( θ T x i ) ) ∂ ∂ θ θ T x i = ∑ i = 1 N ( y i ( 1 − g ( θ T x i ) ) − ( 1 − y i ) g ( θ T x i ) ) x i = ∑ i = 1 N ( y i − h θ ( x i ) ) x i \begin{aligned} \frac{∂}{∂\theta}\mathcal{L}(\theta) &amp;=\sum_{i=1}^N(y_i\frac{1}{g(\theta^Tx_i)}-(1-y_i)\frac{1}{1-g(\theta^Tx_i)})\frac{∂}{∂\theta}g(\theta^Tx_i) \\ &amp;=\sum_{i=1}^N(y_i\frac{1}{g(\theta^Tx_i)}-(1-y_i)\frac{1}{1-g(\theta^Tx_i)})g(\theta^Tx_i) (1-g(\theta^Tx_i))\frac{∂}{∂\theta}\theta^Tx_i\\ &amp;=\sum_{i=1}^N(y_i(1-g(\theta^Tx_i))-(1-y_i)g(\theta^Tx_i))x_i\\ &amp;=\sum_{i=1}^N(y_i-h_\theta(x_i))x_i \end{aligned} θL(θ)=i=1N(yig(θTxi)1(1yi)1g(θTxi)1)θg(θTxi)=i=1N(yig(θTxi)1(1yi)1g(θTxi)1)g(θTxi)(1g(θTxi))θθTxi=i=1N(yi(1g(θTxi))(1yi)g(θTxi))xi=i=1N(yihθ(xi))xi
  对于似然函数,本来我们应该是求出似然函数的最大值,但是我们可以对其做一点处理,将其变为求最小值,用梯度下降的方法来求解。
  定义损失函数 J ( θ ) = − 1 N L ( θ ) J(\theta)=-\frac{1}{N}\mathcal{L}(\theta) J(θ)=N1L(θ),得
∂ ∂ θ J ( θ ) = 1 N ∑ i = 1 N ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) \frac{∂}{∂\theta}J(\theta)=\frac{1}{N}\sum_{i=1}^N(h_\theta(x^{(i)})-y^{(i)})x^{(i)} θJ(θ)=N1i=1N(hθ(x(i))y(i))x(i)
  最终得到 θ \theta θ的迭代公式为
θ : = θ − α 1 N ∑ i = 1 N ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) \theta:=\theta-\alpha\frac{1}{N}\sum_{i=1}^N(h_\theta(x^{(i)})-y^{(i)})x^{(i)} θ:=θαN1i=1N(hθ(x(i))y(i))x(i)

4.多分类问题

  对于多分类问题,如何使用逻辑回归来解决呢?实际上,我们可以将其看成是多个二分类任务,我们可以构造这样的分类器,他们分别划分分类i和非分类i,因此对于一个三分类任务来说,就有4个这样的分类器,每个分类器识别出其中1种类型,而将其他三种类型视为同一种。这样的话,我们只需要训练4个分类器,并在新样本到来的时候,将4个分类器运行一遍,将其中预测值最大的那个分类器对应的分类作为我们的预测值即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值