逻辑回归 Logistic regression
参考文献
https://zhuanlan.zhihu.com/p/74874291
-
背景
- Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。
-
Logistic 分布
-
一种连续型的概率分布
F ( X ) = P ( X ≤ x ) = 1 1 + e − ( x − μ ) / γ (分布函数) F(X) = P(X \leq x)= \frac{1}{1+e^{-(x-\mu)/\gamma}} \tag{分布函数} F(X)=P(X≤x)=1+e−(x−μ)/γ1(分布函数)f ( x ) = F ′ ( X ) = P ( X ≤ x ) = e − ( x − μ ) / γ γ ( 1 + e − ( x − μ ) / γ ) 2 (密度函数) f(x)=F'(X) = P(X \leq x)= \frac{e^{-(x-\mu)/\gamma}}{\gamma(1+e^{-(x-\mu)/\gamma})^2} \tag{密度函数} f(x)=F′(X)=P(X≤x)=γ(1+e−(x−μ)/γ)2e−(x−μ)/γ(密度函数)
- μ μ μ 表示位置参数, γ > 0 γ>0 γ>0 为形状参数
-
图像
- Sigmoid 函数就是 Logistic 的分布函数在 μ = 0 , γ = 1 \mu=0,\gamma=1 μ=0,γ=1 的特殊形式。
-
code
import math import matplotlib.pyplot as plt import numpy as np e = math.e mu = 0 gamma = 1 x = np.arange(-10, 10, 0.2) # y = 1/(1+pow(e, -(x-mu)/gamma)) y = pow(e, -(x - mu) / gamma) / (gamma * pow(1 + pow(e, -(x - mu) / gamma), 2)) plt.title("f(X)") plt.plot(x, y) plt.show()
-
-
Logistic 回归
-
背景
- Logistic 回归主要用于分类问题,我们以二分类为例,对于所给数据集假设存在这样的一条直线可以将数据完成线性可分。
-
决策边界
h w ( x ) = w 1 x 1 + w 2 x 2 + b = 0 h_w(x)=w_1x_1+w_2x_2+b=0 hw(x)=w1x1+w2x2+b=0- h w ( x ) > 0 h_w(x) > 0 hw(x)>0 判断 x x x 的类别为 1,反之判断为 0。
- 这个过程其实是感知机。
- Logistic 回归还需要加一层,
- 它要找到分类概率 P ( y = 1 ) P(y=1) P(y=1) 与输入向量 x x x 的直接关系, P ( y = 1 ∣ x ) P(y=1|x) P(y=1∣x)
- 然后通过比较概率值来判断类别。
-
二分类问题
-
数据集
D = ( x i , y i ) , x ⊆ R n , y ∈ ( 0 , 1 ) , i = 1 , . . , N D=(x_i,y_i),\\ x\subseteq R^{n}, y \in (0,1),i=1,..,N D=(xi,yi),x⊆Rn,y∈(0,1),i=1,..,N -
w T x + b w^Tx+b wTx+b 的取值是连续的,它不能拟合离散变量,
-
可以考虑用它来拟合条件概率 p ( Y = 1 ∣ x ) p(Y=1|x) p(Y=1∣x) ,因为概率的取值也是连续的。
-
但是对于 w ≠ 0 w≠0 w=0(若等于零向量则没有什么求解的价值),
-
w T x + b w^Tx+b wTx+b 取值为 R R R ,不符合概率取值为 0 到 1,因此考虑采用广义线性模型。
-
最理想的是单位阶跃函数,但是这个阶跃函数不可微
P ( y = 1 ∣ x ) = { 0 , z < 0 0.5 , z = 0 1 , z > 0 z = w T x + b P(y=1|x)=\left\{ \begin{aligned} 0 & , & z < 0 \\ 0.5 & , & z = 0 \\ 1 & , & z > 0 \end{aligned} \right.\\ z=w^Tx+b P(y=1∣x)=⎩ ⎨ ⎧00.51,,,z<0z=0z>0z=wTx+b- P ( y = 1 ∣ x ) P(y=1|x) P(y=1∣x) 为结点 x x x 为1的概率。
-
对数几率函数是一个常用的替代函数:
y = 1 1 + e − ( w T + b ) l n y 1 − y = w T + b (对数几率函数) y=\frac{1}{1+e^{-(w^T+b)}}\\ ln\frac{y}{1-y}=w^T+b \tag{对数几率函数} y=1+e−(wT+b)1ln1−yy=wT+b(对数几率函数)-
y y y 为 x x x 的标签为1的概率, 1 − y 1-y 1−y 为 x x x 的标签为0的概率,二者比值为几率。
-
将 y y y 视为类后验概率估计,重写公式有:
l n P ( y = 1 ∣ x ) 1 − P ( y = 1 ∣ x ) = w T + b ln\frac{P(y=1|x)}{1-P(y=1|x)}=w^T+b ln1−P(y=1∣x)P(y=1∣x)=wT+bP ( y = 1 ∣ x ) = w T x + b P(y=1|x)=w^Tx+b P(y=1∣x)=wTx+b
- y y y 为 x x x 的label
- 输出 y = 1 y=1 y=1 的对数几率是由输入 x x x 的线性函数表示的模型,这就是逻辑回归模型
-
使用对数几率的意义
- Logistic 回归是使用线性回归模型的预测值
- 逼近分类任务真实标记的对数几率
- 优点
- 直接对分类的概率建模,无需实现假设数据分布,从而避免了假设分布不准确带来的问题(区别于生成式模型);
- 不仅可预测出类别,还能得到该预测的概率,这对一些利用概率辅助决策的任务很有用;
- 对数几率函数是任意阶可导的凸函数,有许多数值优化算法都可以求出最优解。
-
-
-
-
思路
-
先拟合决策边界(不局限于线性,还可以是多项式),
h w ( x ) = w 1 x 1 + w 2 x 2 + b = 0 h_w(x)=w_1x_1+w_2x_2+b=0 hw(x)=w1x1+w2x2+b=0 -
再建立这个边界与分类的概率联系,从而得到了二分类情况下的概率。
P ( y = 1 ∣ x ) = h w ( x ) P(y=1|x)=h_w(x) P(y=1∣x)=hw(x)
-
-
-
-
求解模型参数
-
方法
- 在统计学中,常常使用极大似然估计法来求解,
- 即找到一组参数,使得在这组参数下,我们的数据的似然度(概率)最大。
- 在统计学中,常常使用极大似然估计法来求解,
-
似然函数和损失函数
-
设
P ( y = 1 ∣ x ) = p ( x ) P ( y = 0 ∣ x ) = 1 − p ( x ) P(y=1|x)= p(x)\\ P(y=0|x)= 1-p(x) P(y=1∣x)=p(x)P(y=0∣x)=1−p(x)- p ( x ) p(x) p(x) 为结点 x x x 的标签为1的概率。
- 1 − p ( x ) 1-p(x) 1−p(x) 为结点 x x x 的标签为0的概率。
-
似然函数
L ( w ) = ∏ i = 0 n [ p ( x i ) ] y i [ 1 − p ( x i ) ] 1 − y i L(w) = \prod_{i=0}^n[p(x_i)]^{y_i}~[1-p(x_i)]^{1-y_i} L(w)=i=0∏n[p(xi)]yi [1−p(xi)]1−yi -
对数似然函数
L ( w ) = ∑ i = 0 n [ y i l n [ p ( x i ) ] + ( 1 − y i ) l n [ ( 1 − p ( x i ) ) ] = ∑ i = 0 n [ y i l n [ p ( x i ) 1 − p ( x i ) ] + l n [ ( 1 − p ( x i ) ) ] = ∑ i = 0 n [ y i ( w ⋅ x i ) − l n [ 1 + e w ⋅ x i ] ] L(w) = \sum_{i=0}^n \Big[y_iln[p(x_i)]+(1-y_i)ln[(1-p(x_i))\Big]\\ =\sum_{i=0}^n\Big[y_iln[\frac{p(x_i)}{1-p(x_i)}]+ln[(1-p(x_i))\Big]\\ =\sum_{i=0}^n\Big[y_i(w \cdot x_i )-ln[1+e^{w\cdot x_i}]\Big] L(w)=i=0∑n[yiln[p(xi)]+(1−yi)ln[(1−p(xi))]=i=0∑n[yiln[1−p(xi)p(xi)]+ln[(1−p(xi))]=i=0∑n[yi(w⋅xi)−ln[1+ew⋅xi]]- w w w 为参数
-
损失函数
-
衡量的是模型预测错误的程度。如果取整个数据集上的平均对数似然损失,有:
L ( w ) = − 1 n l n ( L ( w ) ) \mathcal{L}(w) = -\frac{1}{n}ln(L(w)) L(w)=−n1ln(L(w))- 我们最大化似然函数和最小化损失函数实际上是等价的。
-
-
求解
L ( w ) = − 1 n ∑ i = 0 n [ y i l n [ p ( x i ) ] + ( 1 − y i ) l n [ ( 1 − p ( x i ) ) ] \mathcal{L}(w) = -\frac{1}{n}\sum_{i=0}^n \Big[y_iln[p(x_i)]+(1-y_i)ln[(1-p(x_i))\Big]\\ L(w)=−n1i=0∑n[yiln[p(xi)]+(1−yi)ln[(1−p(xi))]-
梯度下降
-
梯度下降是通过 J ( w ) J(w) J(w) 对 w w w 的一阶导数来找下降方向,
-
并且以迭代的方式来更新参数,更新方式为
g i = δ L ( w ) δ w i = ( p ( x i ) − y i ) x i w i k + 1 = w i k − α g i g_i = \frac{\delta\mathcal{L}(w)}{\delta w_i}=(p(x_i)-y_i)x_i\\ w^{k+1}_{i} = w^{k}_i - \alpha g_i gi=δwiδL(w)=(p(xi)−yi)xiwik+1=wik−αgi- k k k 为迭代次数
- y y y 为标签
- i i i 为参数序号
- α \alpha α 为平衡参数
- 更新参数后,可以通过比较 ∣ ∣ L ( w k + 1 ) − L ( w k ) ∣ ∣ ||\mathcal{L}(wk+1)−\mathcal{L}(wk)|| ∣∣L(wk+1)−L(wk)∣∣ 小于阈值或者到达最大迭代次数来停止迭代。
-
-
牛顿法
-
在现有极小点估计值的附近对 f ( x ) f(x) f(x) 做二阶泰勒展开,进而找到极小点的下一个估计值.
-
需要目标函数是二阶连续可微的。
-
假设 w k w^k wk 为当前的极小值估计值,那么有:
φ ( w ) = L ( w k ) + L ′ ( w k ) ( w − w k ) + 1 2 L ′ ′ ( w k ) ( w − w k ) 2 \varphi(w) = \mathcal{L}(w^k) + \mathcal{L}'(w^k)(w-w^k) + \frac{1}{2}\mathcal{L}''(w^k)(w-w^k)^2 φ(w)=L(wk)+L′(wk)(w−wk)+21L′′(wk)(w−wk)2f ( x ) = f ( x 0 ) + f ′ ( x 0 ) 1 ! ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . + o [ ( x − x o ) n ] f(x) = f(x_0)+\frac{f'(x_0)}{1!}(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+...+o[(x-x_o)^n] f(x)=f(x0)+1!f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+...+o[(x−xo)n]
-
令 φ ′ ( w ) = 0 \varphi'(w)=0 φ′(w)=0
0 = L ′ ( w k ) + L ′ ′ ( w k ) ( w − w k ) w = w k − L ′ ( w k ) L ′ ′ ( w k ) 0 = \mathcal{L}'(w^k) +\mathcal{L}''(w^k)(w-w^k)\\ w = w^k - \frac{\mathcal{L}'(w^k)}{\mathcal{L}''(w^k)} 0=L′(wk)+L′′(wk)(w−wk)w=wk−L′′(wk)L′(wk) -
令将 w w w 表示为 w k + 1 w^{k+1} wk+1
w k + 1 = w k − L ′ ( w k ) L ′ ′ ( w k ) = w k − H k − 1 ⋅ g k w^{k+1} = w^k - \frac{\mathcal{L}'(w^k)}{\mathcal{L}''(w^k)}\\ = w^k-H^{-1}_k \cdot g_k wk+1=wk−L′′(wk)L′(wk)=wk−Hk−1⋅gk -
H k − 1 H^{-1}_k Hk−1 为海森矩阵,对应梯度下降法中的 α \alpha α
H m n = δ 2 L ( w ) δ w m δ w n = h w ( x ( i ) ) ( 1 − p w ( x ( i ) ) ) x m ( i ) x n ( i ) H_{mn}=\frac{\delta^2\mathcal{L}(w)}{\delta w_m\delta w_n}=h_w(x^{(i)})(1-p_w(x^{(i)}))x^{(i)}_mx^{(i)}_n Hmn=δwmδwnδ2L(w)=hw(x(i))(1−pw(x(i)))xm(i)xn(i)- h w ( x ( i ) ) h_w(x^{(i)}) hw(x(i)) 类似真正的标签
-
-
-
-
-