【西瓜书笔记】补充1:logistic回归及其损失函数,梯度下降推导

Logistic回归理论知识补充

建模流程

假设我们建立一个二分类模型。假设有两个人A、B在争论如何对一个新样本 x x x进行0-1二分类,他们两个分别对新样本进行打分,如果A的分数大于B的分数,则样本被预测为1,反之则被预测为0。

假设两人的打分分数可以通过线性回归进行预测建模
y 1 = θ 1 x + ϵ 1 , ϵ 1 ∼ N 1 ( 0 , δ ) y 2 = θ 2 x + ϵ 2 , ϵ 2 ∼ N 2 ( 0 , δ ) \begin{aligned} &y_{1}=\theta_{1} x+\epsilon_{1}, \epsilon_{1} \sim N_{1}(0, \delta) \\ &y_{2}=\theta_{2} x+\epsilon_{2}, \epsilon_{2} \sim N_{2}(0, \delta) \end{aligned} y1=θ1x+ϵ1,ϵ1N1(0,δ)y2=θ2x+ϵ2,ϵ2N2(0,δ)
这里两个模型的残差都服从高斯分布。

现在我们研究 y 1 y_1 y1 y 2 y_2 y2的大小关系
y 1 − y 2 = ( θ 1 − θ 2 ) x + ( ϵ 1 − ϵ 2 ) y_{1}-y_{2}=\left(\theta_{1}-\theta_{2}\right) x+\left(\epsilon_{1}-\epsilon_{2}\right) y1y2=(θ1θ2)x+(ϵ1ϵ2)
于是有
y ′ = θ ′ x + ϵ ′ , ϵ ′ ∼ N ( 0 , δ ) y^{\prime}=\theta^{\prime} x+\epsilon^{\prime}, \epsilon^{\prime} \sim N(0, \delta) y=θx+ϵ,ϵN(0,δ)
进一步,根据我们的假设,A的分数大于B的分数,则样本被预测为1,也就是 y ′ > 0 y^{\prime}>0 y>0的情况
P ( y = 1 ) = P ′ ( θ ′ x + ϵ ′ > = 0 ) = 1 − P ′ ( ϵ ′ < − θ ′ x ) P(y=1)=P^{\prime}\left(\theta^{\prime} x+\epsilon^{\prime}>=0\right)=1-P^{\prime}\left(\epsilon^{\prime}<-\theta^{\prime} x\right) P(y=1)=P(θx+ϵ>=0)=1P(ϵ<θx)
所以问题就转化为了求 P ′ ( ϵ ′ < − θ ′ x ) P^{\prime}\left(\epsilon^{\prime}<-\theta^{\prime} x\right) P(ϵ<θx),也就是高斯分布的累积分布函数。这种建模方式叫做prohit回归。

但是高斯分布的累积分布不可解析求出,用概率密度函数表示为 F ( x ; μ , σ ) = 1 σ 2 π ∫ − ∞ x exp ⁡ ( − ( t − μ ) 2 2 σ 2 ) d t F(x ; \mu, \sigma)=\dfrac{1}{\sigma \sqrt{2 \pi}} \int_{-\infty}^{x} \exp \left(-\dfrac{(t-\mu)^{2}}{2 \sigma^{2}}\right) d t F(x;μ,σ)=σ2π 1xexp(2σ2(tμ)2)dt,我们只能大致看出高斯分布的累积分布函数长啥样

【西瓜书笔记】补充1:logistic回归及其损失函数,梯度下降推导_第1张图片

(source: https://www.wikiwand.com/zh-sg/%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83)

可见其形状与sigmoid函数非常类似,我们就直接用sigmoid函数近似表示它
P ( y = 1 ) = P ′ ( θ ′ x + ϵ ′ > = 0 ) = 1 − P ′ ( ϵ ′ < − θ ′ x ) = 1 − 1 1 + exp ⁡ ( − z ) = 1 + exp ⁡ ( − z ) − 1 1 + exp ⁡ ( − z ) = 1 1 + exp ⁡ z = 1 1 + exp ⁡ ( − θ ′ x ) P(y=1)=P^{\prime}\left(\theta^{\prime} x+\epsilon^{\prime}>=0\right)=1-P^{\prime}\left(\epsilon^{\prime}<-\theta^{\prime} x\right)\\ =1-\dfrac{1}{1+\exp(-z)}=\dfrac{1+\exp(-z)-1}{1+\exp(-z)}\\ =\dfrac{1}{1+\exp{z}}=\dfrac{1}{1+\exp(-\theta^{\prime} x)} P(y=1)=P(θx+ϵ>=0)=1P(ϵ<θx)=11+exp(z)1=1+exp(z)1+exp(z)1=1+expz1=1+exp(θx)1
这正是Logistic二分类表达式。

损失函数

Logistic回归的损失函数是通过最大似然估计(存在即合理)得到的。这个损失函数叫做交叉熵。其实对于他的损失函数的推导,并不一定需要假设模型符合logistic回归。

假设 l l l表示(0, 1)标签, y y y表示样本预测的概率。则该样本存在的概率可表示为:
y l ( 1 − y ) 1 − l y^{l}(1-y)^{1-l} yl(1y)1l
也就是满足伯努利分布。

由最大似然估计,可得我们需要最小化如下函数
− ( l log ⁡ y + ( 1 − l ) log ⁡ ( 1 − y ) ) -(l \log y+(1-l) \log (1-y)) (llogy+(1l)log(1y))
当标签 l = 1 l=1 l=1时, ( 1 − l ) log ⁡ ( 1 − y ) ) = 0 (1-l) \log (1-y))=0 (1l)log(1y))=0,最小化公式等价于最小化 − log ⁡ y -\log y logy,即让 y → 1 y\rightarrow1 y1.

当标签 l = 0 l=0 l=0时, l log ⁡ y = 0 l \log y=0 llogy=0,最小化公式等价于最小化 − ( 1 − l ) log ⁡ ( 1 − y ) -(1-l) \log (1-y) (1l)log(1y),即让 y → 0 y\rightarrow0 y0.

注意最大似然估计时,我们其实是把所有样本的概率相加,也就是 ∑ i = 1 N y l ( 1 − y ) 1 − l \sum_{i=1}^{N}y^{l}(1-y)^{1-l} i=1Nyl(1y)1l,然后取对数

【西瓜书笔记】补充1:logistic回归及其损失函数,梯度下降推导_第2张图片

现在我们思考一个问题,如果我们选择下面这个损失函数,是否也满足上面的这种直觉性结论呢?
L o s s = − ( l − y ) 2 Loss = -(l-y)^{2} Loss=(ly)2
l = 1 l=1 l=1时, y → 1 y\rightarrow1 y1, l = 0 l=0 l=0时, y → 0 y\rightarrow0 y0

【西瓜书笔记】补充1:logistic回归及其损失函数,梯度下降推导_第3张图片

梯度下降优化算法

当建立好模型后,最终需要对损失函数进行优化。这种对待优化的参数没有限制的优化问题叫做无约束优化问题。
min ⁡ f ( x ) \min f(x) minf(x)
其中 x x x为待求参数

如果要理解梯度下降法,我们要从泰勒展开开始理解。针对 f ( x ) f(x) f(x)做一阶泰勒展开,有
f ( x ) = f ( x k ) + ∇ f ( x k ) T ( x − x k ) + o ( ∥ x − x k ∥ ) f(x)=f\left(x_{k}\right)+\nabla f\left(x_{k}\right)^{T}\left(x-x_{k}\right)+o\left(\left\|x-x_{k}\right\|\right) f(x)=f(xk)+f(xk)T(xxk)+o(xxk)
其中高阶量 o o o是在 ( x − x k ) (x-x_k) (xxk)的前提下才趋向于0,如果 ( x − x k ) (x-x_k) (xxk)太大,高阶量就会影响等式右边前两项。

如果我们把 x x x看做空间中的向量,那么 ( x − x k ) (x-x_k) (xxk)也是向量,梯度 f ′ ( x k ) f^{\prime}(x_k) f(xk)也是向量。我们可以把上式写为
f ( x ) ≈ f ( x k ) + λ ∗ d ∗ f ′ ( x k ) f\left(x\right) \approx f\left(x_{k}\right)+\lambda * \boldsymbol{d} * f^{\prime}\left(x_{k}\right) f(x)f(xk)+λdf(xk)
这里 d \boldsymbol{d} d表示沿着 x x x方向的单位向量, λ \lambda λ表示单位向量长度。根据向量乘积规则,我们有
f ( x ) ≈ f ( x k ) + λ ∗ ∣ d ∣ ∗ ∣ f ′ ( x k ) ∣ ∗ cos ⁡ ( θ ) f\left(x\right) \approx f\left(x_{k}\right)+\lambda * |\boldsymbol{d}| *\left|f^{\prime}\left(x_{k}\right)\right| * \cos (\theta) f(x)f(xk)+λdf(xk)cos(θ)
这里 θ \theta θ表示梯度向量和 ( x − x k ) (x-x_k) (xxk)这个向量的夹角。因为我们企图最小化 f ( x ) f(x) f(x),而 f ( x k ) = f ( x 0 ) f(x_k)=f(x_0) f(xk)=f(x0)随机初始化后模型的输出,这就意味着它与 λ , d \lambda, d λ,d一样也是个常量,如果要是整个式子最小,显然要让 θ = π , cos ⁡ ( θ ) = − 1 \theta=\pi, \cos(\theta)=-1 θ=π,cos(θ)=1,也就是 x k x_k xk无限靠近 x x x时,两个向量方向相反的时刻。此时我们有
d = − f ′ ( x k ) ∥ f ′ ( x k ) ∥ d=\frac{-f^{\prime}\left(x_{k}\right)}{\left\|f^{\prime}\left(x_{k}\right)\right\|} d=f(xk)f(xk)
【西瓜书笔记】补充1:logistic回归及其损失函数,梯度下降推导_第4张图片

于是我们有
x − x k = λ ∗ d = λ ∗ − f ′ ( x k ) ∥ f ′ ( x k ) ∥ ⇒ x = x k − λ ∗ f ′ ( x k ) ∥ f ′ ( x k ) ∥ x-x_{k}=\lambda * d = \lambda * \frac{-f^{\prime}\left(x_{k}\right)}{\left\|f^{\prime}\left(x_{k}\right)\right\|}\\ \Rightarrow x=x_{k}-\lambda *\frac{f^{\prime}\left(x_{k}\right)}{\left\|f^{\prime}\left(x_{k}\right)\right\|} xxk=λd=λf(xk)f(xk)x=xkλf(xk)f(xk)
又因为 ∥ f ′ ( x k ) ∥ = ∥ f ′ ( x 0 ) ∥ \left\|f^{\prime}\left(x_{k}\right)\right\|=\left\|f^{\prime}\left(x_{0}\right)\right\| f(xk)=f(x0)是个常数,因为 x 0 x_{0} x0如果是随机初始化确定下来的,那么其梯度也肯定是常数。(比如线性回归使用梯度下降法的时候,第一轮我们随机初始化权重参数,此时这些参数是固定的),那么我们就可以把 λ \lambda λ ∥ f ′ ( x k ) ∥ = ∥ f ′ ( x 0 ) ∥ \left\|f^{\prime}\left(x_{k}\right)\right\|=\left\|f^{\prime}\left(x_{0}\right)\right\| f(xk)=f(x0)合并为一个常数,也即是学习率。于是最后公式转化为
x = x k + 1 = x k − λ ∗ f ′ ( x k ) ∥ f ′ ( x k ) ∥ = x k − η ∗ f ′ ( x k ) = x k − η ∇ f ( x k ) T x=x_{k+1}=x_{k}-\lambda *\frac{f^{\prime}\left(x_{k}\right)}{\left\|f^{\prime}\left(x_{k}\right)\right\|}=x_{k}-\eta* f^{\prime}(x_{k})=x_{k}-\eta \nabla f\left(x_{k}\right)^{T} x=xk+1=xkλf(xk)f(xk)=xkηf(xk)=xkηf(xk)T
这里 η \eta η的作用就是控制每一步移动的步长,因为我们说过,只有 x − x k x-x_{k} xxk足够小,也就是当前一步和上一步的距离足够小,一阶泰勒展开的高阶量才会很小,不影响头两项。

对于梯度下降法要注意

  1. 学习率不能太小,也不能太大
  2. 要注意损失函数曲线的鞍马点,鞍马点与局部最小点都会让梯度无法下降
  3. 如果输入变量 x 1 , x 2 x_{1},x_{2} x1,x2尺度相同,比如 l = x 1 2 + x 2 2 l=x_{1}^{2} + x_{2}^{2} l=x12+x22,那么梯度就是等高线的法向量,梯度下降就会沿着等高线法向量以最快速度向最低点移动。但是如果输入变量 x 1 , x 2 x_{1}, x_{2} x1,x2尺度不同,比如 l = x 1 2 + 100 x 2 2 l=x_{1}^{2} + 100x_{2}^{2} l=x12+100x22,那么梯度就会实时扭动变化,无法最快移动到最低点,此时要做输入变量的尺度归一化。

【西瓜书笔记】补充1:logistic回归及其损失函数,梯度下降推导_第5张图片

【《机器学习实战》。sklearn代码分为三种封装方式,纯python写,C++写加python封装,fortran写加python(pyc)封装。】

你可能感兴趣的:(《机器学习》西瓜书第15期,逻辑回归,随机梯度下降,最大似然,机器学习)