LR(逻辑回归)

编程入门 行业动态 更新时间:2024-10-09 19:14:28

LR(<a href=https://www.elefans.com/category/jswz/34/1768871.html style=逻辑回归)"/>

LR(逻辑回归)

LR(逻辑回归)

  • 开篇寄语
  • 1、Sigmoid 与 Logistic Regression
  • 2、概率分布
  • 3、参数求解
    • 1,参数估计-最大似然函数
    • 2,损失函数-熵/相对熵/交叉熵
  • 4、梯度下降
  • 5、正则化

开篇寄语

一直想总结下机器学习相关的知识,先从最简单的LR开始吧,温故而知新。自己的写作功底比较弱,所以也借鉴了几位前辈的博客

1、Sigmoid 与 Logistic Regression

sigmoid函数是lr的核心,它将普通的线性回归值域映射到了[0,1]
g ( z ) = 1 1 + e − z g(z)=\dfrac{1}{1+e^{-z}} g(z)=1+e−z1​
回顾一下线性回归, h θ ( x ) = θ T X h_{\theta}(x)=\theta^{T} X hθ​(x)=θTX,令 z = h θ ( x ) z=h_{\theta}(x) z=hθ​(x),代入公式可得到
g ( x ) = 1 1 + e − θ T X g(x)=\dfrac{1}{1+e^{-\theta^{T}X}} g(x)=1+e−θTX1​
实际上,逻辑回归是非线性回归的一种,只不过能用于二分类问题,所以很特殊,也很经典。
(PS:不知道还有没有其它可用于分类的非线性回归,或者是sigmoid简单的变形)

2、概率分布

为什么LR能用于二分类问题呢,我们来算一下,首先是Y为0或者1的条件概率分布
P ( Y = 1 ∣ X ) = 1 1 + e − w x = e w x 1 + e w x P ( Y = 0 ∣ X ) = 1 − P ( Y = 1 ∣ X ) = 1 1 + e w x \begin{aligned} P(Y=1|X) = \frac{1}{1+e^{-wx}} = \frac{e^{wx}}{1+e^{wx}} \\ P(Y=0|X) = 1- P(Y=1|X) = \frac{1}{1+e^{wx}} \end{aligned} P(Y=1∣X)=1+e−wx1​=1+ewxewx​P(Y=0∣X)=1−P(Y=1∣X)=1+ewx1​​
发生事件的几率定义为发生与不发生的比值
o d d s = p 1 − p odds = \frac{p}{1-p} odds=1−pp​
取其对数概率
l o g i t ( p ) = l o g p 1 − p logit(p)=log\frac{p}{1−p} logit(p)=log1−pp​
那么Y=1的几率就是
l o g P ( Y = 1 ∣ x ) 1 − P ( Y = 1 ∣ x ) = l o g P ( Y = 1 ∣ x ) P ( Y = 0 ∣ x ) = w . x log \frac{P(Y=1|x)}{1−P(Y=1|x)}=log \frac{P(Y=1|x)}{P(Y=0|x)}=w.x log1−P(Y=1∣x)P(Y=1∣x)​=logP(Y=0∣x)P(Y=1∣x)​=w.x
即,当 w.x的值越大,P(Y=1|x) 越接近1;w.x越小(f负无穷大),P(Y=1|x) 越接近0,
其实这个从sigmoid图像也可以看得出来,不过另外一位先辈是这样写的,先暂且这么理解

3、参数求解

1,参数估计-最大似然函数

我们用最大化似然函数来估计参数,首先构建最大似然函数
L ( θ ) = ∏ P ( y i = 1 ∣ x i ) y i ( 1 − P ( y i = 1 ∣ x i ) ) 1 − y i L(\theta) = \prod P(y_i=1|x_i)^{y_i}(1-P(y_i=1|x_i))^{1-y_i} L(θ)=∏P(yi​=1∣xi​)yi​(1−P(yi​=1∣xi​))1−yi​
对最大似然函数取对数并化简

L L ( θ ) = l o g ( L ( θ ) ) = l o g ( ∏ P ( y i = 1 ∣ x i ) y i ( 1 − P ( y i = 1 ∣ x i ) ) 1 − y i ) LL(\theta) = log(L(\theta)) = log(\prod P(y_i=1|x_i)^{y_i}(1-P(y_i=1|x_i))^{1-y_i}) LL(θ)=log(L(θ))=log(∏P(yi​=1∣xi​)yi​(1−P(yi​=1∣xi​))1−yi​)

= ∑ i = 1 n y i l o g P ( y i = 1 ∣ x i ) + ( 1 − y i ) l o g ( 1 − P ( y i = 1 ∣ x i ) ) = \sum_{i=1}^{n}y_i log P(y_i=1|x_i) + (1-y_i)log(1-P(y_i=1|x_i)) =∑i=1n​yi​logP(yi​=1∣xi​)+(1−yi​)log(1−P(yi​=1∣xi​))

= ∑ i = 1 n y i l o g P ( y i = 1 ∣ x i ) 1 − P ( y i = 1 ∣ x i ) + ∑ i = 1 n l o g ( 1 − P ( y i = 1 ∣ x i ) ) = \sum_{i=1}^{n}y_i log \frac{P(y_i=1|x_i)}{1-P(y_i=1|x_i)} + \sum_{i=1}^{n}log(1-P(y_i=1|x_i)) =∑i=1n​yi​log1−P(yi​=1∣xi​)P(yi​=1∣xi​)​+∑i=1n​log(1−P(yi​=1∣xi​))

= ∑ i = 1 n y i ( w . x ) + ∑ i = 1 n l o g P ( y i = 0 ∣ x i ) = \sum_{i=1}^{n}y_i(w.x) + \sum_{i=1}^{n}logP(y_i=0|x_i) =∑i=1n​yi​(w.x)+∑i=1n​logP(yi​=0∣xi​)

= ∑ i = 1 n y i ( w . x ) − ∑ i = 1 n l o g ( 1 + e w . x ) = \sum_{i=1}^{n}y_i(w.x) - \sum_{i=1}^{n}log(1+e^{w.x}) =∑i=1n​yi​(w.x)−∑i=1n​log(1+ew.x)

= ∑ i = 1 n y i ( θ T . x i ) − ∑ i = 1 n l o g ( 1 + e θ T . x i ) = \sum_{i=1}^{n}y_i(\theta^T.x_i) - \sum_{i=1}^{n}log(1+e^{\theta^T.x_i}) =∑i=1n​yi​(θT.xi​)−∑i=1n​log(1+eθT.xi​)

我们无法从这个公式求一个全局最优解(目前),但是我们可以从各个维度去逼近最优解,所以对上面的公式求偏导即可得:
∂ L L ( θ ) ∂ θ = ∑ i = 1 n ( y i − P ( y i = 1 ∣ x i ) ) x i \frac{\partial LL(\theta)}{\partial \theta} = \sum_{i=1}^{n}(y_i - P(y_i=1|x_i))x_i ∂θ∂LL(θ)​=i=1∑n​(yi​−P(yi​=1∣xi​))xi​
注意,这个是最大似然函数的导数,求的是最大值,而损失函数是求最小值,因此需要在前面加上负号,而且需要平均,即
∂ L L o s s ( θ ) ∂ θ = − 1 m ∑ i = 1 m ( y i − P ( y i = 1 ∣ x i ) ) x i \frac{\partial LLoss(\theta)}{\partial \theta} = -\frac{1}{m}\sum_{i=1}^{m}(yi-P(y_i=1|x_i))x_i ∂θ∂LLoss(θ)​=−m1​i=1∑m​(yi−P(yi​=1∣xi​))xi​
上面的公式推导是基于最大似然函数,下面是基于熵概念的损失函数推导

2,损失函数-熵/相对熵/交叉熵

熵用来表示所有信息量的期望:
H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) H(X)=-\sum_{i=1}^n p(x_i)log(p(x_i)) H(X)=−i=1∑n​p(xi​)log(p(xi​))
对于二分类分体,熵可以化简为:
H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) = − p ( x ) l o g ( p ( x ) ) − ( 1 − p ( x ) ) l o g ( 1 − p ( x ) ) \begin{aligned} H(X) &amp;=-\sum_{i=1}^n p(x_i)log(p(x_i)) \\ &amp;=-p(x)log(p(x))-(1-p(x))log(1-p(x)) \end{aligned} H(X)​=−i=1∑n​p(xi​)log(p(xi​))=−p(x)log(p(x))−(1−p(x))log(1−p(x))​
相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异,KL散度的计算公式:
(3.1) D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) D_{KL}(p||q)=\sum_{i=1}^np(x_i)log(\frac{p(x_i)}{q(x_i)}) \tag{3.1} DKL​(p∣∣q)=i=1∑n​p(xi​)log(q(xi​)p(xi​)​)(3.1)
交叉熵是相对熵的一部分,我们队相对熵变形
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) = − H ( p ( x ) ) + [ − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) ] \begin{aligned} D_{KL}(p||q) &amp;= \sum_{i=1}^np(x_i)log(p(x_i))-\sum_{i=1}^np(x_i)log(q(x_i)) \\ &amp;= -H(p(x))+[-\sum_{i=1}^np(x_i)log(q(x_i))] \\ \end{aligned} DKL​(p∣∣q)​=i=1∑n​p(xi​)log(p(xi​))−i=1∑n​p(xi​)log(q(xi​))=−H(p(x))+[−i=1∑n​p(xi​)log(q(xi​))]​
等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:
H ( p , q ) = − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) H(p,q)=-\sum_{i=1}^np(x_i)log(q(x_i)) H(p,q)=−i=1∑n​p(xi​)log(q(xi​))

逻辑回归的损失函数定义即交叉熵:
J ( θ ) = − 1 m [ ∑ i m ( y i l o g ( h θ ( x i ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ) ] J(\theta) = -\frac{1}{m}[\sum_i^m(y^ilog(h_\theta(x^i)+(1-y^i)log(1-h_\theta(x^i)))] J(θ)=−m1​[i∑m​(yilog(hθ​(xi)+(1−yi)log(1−hθ​(xi)))]
这个形式跟最大似然估计取log之后是一样的

4、梯度下降

上面我们对公式求偏导,可以在各个维度上逼近最优解。优化方法有很多种,梯度下降是最早和最经典的一种,其求解公式为:
θ n e w = θ o l d − α ∂ L L o s s ( θ ) ∂ θ = θ o l d − α 1 m ∑ i = 1 m ( P ( y i = 1 ∣ x i ) − y i ) x i \begin{aligned} \theta^{new} &amp;= \theta^{old}-\alpha\frac{\partial LLoss(\theta)}{\partial \theta} \\ &amp;= \theta^{old} - \alpha\frac{1}{m}\sum_{i=1}^{m}(P(y_i=1|x_i) - y_i )x_i \end{aligned} θnew​=θold−α∂θ∂LLoss(θ)​=θold−αm1​i=1∑m​(P(yi​=1∣xi​)−yi​)xi​​
上面是总体的 θ \theta θ求解,单个 θ \theta θ求解如下:
θ j = θ j − α 1 m ∑ i = 1 m ( P ( y i = 1 ∣ x i ) − y i ) x i j \theta^{j} = \theta^{j} - \alpha \frac{1}{m} \sum_{i=1}^{m}(P(y_i=1|x_i) - y_i ) x_i^j θj=θj−αm1​i=1∑m​(P(yi​=1∣xi​)−yi​)xij​
其中 m m m为batch_size, x x x下标为batch里的第 i i i个样本,上标为第 j j j个feature

其它的优化方法,再开一个帖子专门讲

5、正则化

正常LR的参数估计到上一步梯度下降就已经结束了,但是,可避免的会出现过拟合的现象,所以引入了正则化的方法,一定程度上可以缓解这种情况
目前有两个正则化范数可以用,即L1范数与L2范数
L1范数:也称叫“稀疏规则算子”(Lasso Regularization),泛化能力比较差,:引入是为了实现特征自动选择,它会将没有信息的特征对应的权重置为0
L2范数:在回归里面中又称岭回归”(Ridge Regression),与 L1 范数不同的是L2是使得特征对应的权重尽量的小,接近于0,越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象,为什么呢?
首先,我们看损失函数
J ( θ ) = − 1 m [ ∑ i m ( y i l o g ( h θ ( x i ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ) ] + λ 2 m ∑ j n θ j 2 J(\theta) = -\frac{1}{m}[\sum_i^m(y^ilog(h_\theta(x^i)+(1-y^i)log(1-h_\theta(x^i)))] + \frac{\lambda}{2m}\sum_j^n\theta_j^2 J(θ)=−m1​[i∑m​(yilog(hθ​(xi)+(1−yi)log(1−hθ​(xi)))]+2mλ​j∑n​θj2​
想让损失函数趋近于0,则需让函数的两部分无限重合,如下图

L1倾向于使某些特征对应的参数变为0,因此能产生稀疏解。而 L2 使 w 接近0

引用
[1]:
[2]:
[3]:
[4]:

更多推荐

LR(逻辑回归)

本文发布于:2024-02-24 21:13:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1696671.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:逻辑   LR

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!