机器学习之Logistic Regression

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

Logistic Regression

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

损失函数

一般来讲,我们通常使用误差平方和损失函数:
J(w)=i=1n12(y^(zi)yi)2 J(\bm{w})=\sum_{i=1}^n\frac{1}{2}(\hat{y}(z_i)-y_i)^2
其中zi=wxi+bz_i=wx_i+b,但当代入sigmoid函数时,上述损失函数时是非凸函数,无法使用梯度下降方。因此考虑如下损失函数:
L(w)=i=1n(yilogy^+(1y)log(1y^)) L(w)=-\sum_{i=1}^n(y_i\log\hat{y}+(1-y)\log(1-\hat{y}))
为什么要使用这种形式的损失函数呢?首先考虑LR的表达式:
P(y=1x;w)=11+ewTx+bP(y=0x;w)=111+ewTx+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(yx;w)=σ(z)y(1σ(z))1y P(y|x;w)=\sigma(z)^y*(1-\sigma(z))^{1-y}
假定样本独立同分布,则有极大似然估计:
L(w)=i=1mP(yixi;w)=i=1mσ(z)yi(1σ(z))1yi 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)=logL(w)=i=1m(yilogσ(zi)+(1yi)log(1σ(zi))) \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}
如果令σ(zi)=y^i\sigma(z_i)=\hat{y}_i就得到了之前的损失函数。且它的解是迭代式:
wj:=wjαl(w)w=wjαi=1m[(σ(zi)yi)xi],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}
同时补充一个sigmoid函数的求导:
f(x)=11+ex=(1+ex)1f(x)=(1+ex)2ex1=(1+ex)2ex=ex(1+ex)2=1+ex1(1+ex)2=1+ex(1+ex)21(1+ex)2=11+ex1(1+ex)2=a(1a)a=11+ex. \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)=(ylog(a)+(1y)log(1a))f(x)=ya+1y1a. \begin{aligned} f(x)&=-(y\log(a)+(1-y)\log(1-a))\\ f'(x)&=-\frac{y}{a}+\frac{1-y}{1-a} \end{aligned}.