机器学习之Logistic Regression

本文内容主要参考了斯坦福大学吴恩达老师的Coursera课程:Deep Learning

Logistic Regression

Logistic Regression是机器学习中很经典的分类器,特别是在二分类问题中,它能够输出0、1事件发生的概率从而达到分类的效果,主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率,等等。例如,想探讨胃癌发生的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群肯定有不同的体征和生活方式等。这里的因变量就是–是否胃癌,即“是”或“否”,为两分类变量,自变量就可以包括很多了,例如年龄、性别、饮食习惯、幽门螺杆菌感染等。自变量既可以是连续的,也可以是离散的。通过logistic回归分析,就可以大致了解到底哪些因素是胃癌的危险因素。国内多数的统计学教材通常称之为逻辑回归,也有的将其翻译为对数几率回归在给出模型的形式之前,我们首先考虑二分类问题,其输出值为 y ∈ { 0 , 1 } y\in\{0,1\} y{0,1},线性回归模型产生的预测值 z = w T x + b z=\bm{w}^{\rm{T}}\bm{x}+b z=wTx+b是实值,于是,我们需要将实值 z z z转换为 0 / 1 0/1 0/1值.一种办法就是"单阶跃函数"(unit-step function)
y = { 0 , z < 0 0.5 , z = 0 1 , z > 0 y= \begin{cases} 0, &z<0\\ 0.5,&z=0\\ 1,&z>0\\ \end{cases} y=0,0.5,1,z<0z=0z>0
即若预测值 z z z大于零就判为正例,小于零则判为反例,预测值为零则可任意判别,如下图所示
机器学习之Logistic Regression_第1张图片
不难看出,单位跃阶函数不连续,所以我们希望找到能在一定程度上近似单位跃阶函数的代替函数.于是有"Sigmoid"函数:
y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+ez1
它将 z z z值转化为一个接近0或1的 y y y值,并且其输出值在 z = 0 z=0 z=0附近变化很陡峭,将 w T x + b \bm{w}^{\rm{T}}\bm{x}+b wTx+b代入上式,得到:
y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(\bm{w}^{\rm{T}}\bm{x}+b)}} y=1+e(wTx+b)1

损失函数

一般来讲,我们通常使用误差平方和损失函数:
J ( w ) = ∑ i = 1 n 1 2 ( y ^ ( z i ) − y i ) 2 J(\bm{w})=\sum_{i=1}^n\frac{1}{2}(\hat{y}(z_i)-y_i)^2 J(w)=i=1n21(y^(zi)yi)2
其中 z i = w x i + b z_i=wx_i+b zi=wxi+b,但当代入sigmoid函数时,上述损失函数时是非凸函数,无法使用梯度下降方。因此考虑如下损失函数:
L ( w ) = − ∑ i = 1 n ( y i log ⁡ y ^ + ( 1 − y ) log ⁡ ( 1 − y ^ ) ) L(w)=-\sum_{i=1}^n(y_i\log\hat{y}+(1-y)\log(1-\hat{y})) L(w)=i=1n(yilogy^+(1y)log(1y^))
为什么要使用这种形式的损失函数呢?首先考虑LR的表达式:
P ( y = 1 ∣ x ; w ) = 1 1 + e − w T x + b P ( y = 0 ∣ x ; w ) = 1 − 1 1 + e − w T x + b P(y=1|x;w)=\frac{1}{1+e^{-w^{\rm{T}}x+b}}\\ P(y=0|x;w)=1-\frac{1}{1+e^{-w^{\rm{T}}x+b}} P(y=1x;w)=1+ewTx+b1P(y=0x;w)=11+ewTx+b1
上述表达式可以改写为:
P ( y ∣ x ; w ) = σ ( z ) y ∗ ( 1 − σ ( z ) ) 1 − y P(y|x;w)=\sigma(z)^y*(1-\sigma(z))^{1-y} P(yx;w)=σ(z)y(1σ(z))1y
假定样本独立同分布,则有极大似然估计:
L ( w ) = ∏ i = 1 m P ( y i ∣ x i ; w ) = ∏ i = 1 m σ ( z ) y i ∗ ( 1 − σ ( z ) ) 1 − y i L(w)=\prod_{i=1}^mP(y_i|x_i;w)=\prod_{i=1}^m\sigma(z)^{y_i}*(1-\sigma(z))^{1-y_i} L(w)=i=1mP(yixi;w)=i=1mσ(z)yi(1σ(z))1yi
对数似然为:
l ( w ) = log ⁡ L ( w ) = ∑ i = 1 m ( y i ∗ log ⁡ σ ( z i ) + ( 1 − y i ) ∗ log ⁡ ( 1 − σ ( z i ) ) ) \begin{aligned} l(w)&=\log L(w)\\ &=\sum_{i=1}^m(y_i*\log\sigma(z_i)+(1-y_i)*\log(1-\sigma(z_i))) \end{aligned} l(w)=logL(w)=i=1m(yilogσ(zi)+(1yi)log(1σ(zi)))
如果令 σ ( z i ) = y ^ i \sigma(z_i)=\hat{y}_i σ(zi)=y^i就得到了之前的损失函数。且它的解是迭代式:
w j : = w j − α ∗ ∂ l ( w ) ∂ w = w j − α ∑ i = 1 m [ ( σ ( z i ) − y i ) ∗ x i ] , j = 0 , 1 , … , n \begin{aligned} w_j:&=w_j-\alpha*\frac{\partial l(w)}{\partial w}\\ &=w_j-\alpha\sum_{i=1}^m[(\sigma(z_i)-y_i)*x_i],j=0,1,\dots,n \end{aligned} wj:=wjαwl(w)=wjαi=1m[(σ(zi)yi)xi],j=0,1,,n
同时补充一个sigmoid函数的求导:
f ( x ) = 1 1 + e − x = ( 1 + e − x ) − 1 f ′ ( x ) = − ( 1 + e − x ) − 2 e − x ∗ − 1 = ( 1 + e − x ) − 2 e − x = e − x ( 1 + e − x ) 2 = 1 + e − x − 1 ( 1 + e − x ) 2 = 1 + e − x ( 1 + e − x ) 2 − 1 ( 1 + e − x ) 2 = 1 1 + e − x − 1 ( 1 + e − x ) 2 = a ( 1 − a ) 其 中 a = 1 1 + e − x . \begin{aligned} f(x)&=\frac{1}{1+e^{-x}}=(1+e^{-x})^{-1} \\ f'(x)&=-(1+e^{-x})^{-2}e^{-x}*-1\\ &=(1+e^{-x})^{-2}e^{-x}\\ &=\frac{e^{-x}}{(1+e^{-x})^2}\\ &=\frac{1+e^{-x}-1}{(1+e^{-x})^2}\\ &=\frac{1+e^{-x}}{(1+e^{-x})^2}-\frac{1}{(1+e^{-x})^2}\\ &=\frac{1}{1+e^{-x}}-\frac{1}{(1+e^{-x})^2}\\ &=a(1-a)其中a=\frac{1}{1+e^{-x}} \end{aligned}. f(x)f(x)=1+ex1=(1+ex)1=(1+ex)2ex1=(1+ex)2ex=(1+ex)2ex=(1+ex)21+ex1=(1+ex)21+ex(1+ex)21=1+ex1(1+ex)21=a(1a)a=1+ex1.
对损失函数的求导有:
f ( x ) = − ( y log ⁡ ( a ) + ( 1 − y ) log ⁡ ( 1 − a ) ) f ′ ( x ) = − y a + 1 − y 1 − a . \begin{aligned} f(x)&=-(y\log(a)+(1-y)\log(1-a))\\ f'(x)&=-\frac{y}{a}+\frac{1-y}{1-a} \end{aligned}. f(x)f(x)=(ylog(a)+(1y)log(1a))=ay+1a1y.

你可能感兴趣的:(机器学习之Logistic Regression)