您的位置:首页 > 其它

不是回归的回归——Logistic Regression

2016-01-01 15:49 357 查看

1. 引言

  关于Logistic Regression很多人都会有疑问:它用于分类问题,却为什么叫回归?Logistic Regression用到了一个常用的非线性函数——sigmoid函数,那它用于线性分类还是非线性分类?

  本文首先指出,Logistic Regression是一个被Logistic函数归一化后的线性分类模型,本文只讨论二分类的情况,其因变量y∈{0,1}y \in \{0,1\}。与传统的KNN等分类方法不同之处在于Logistic Regression给出的结果并不是一个离散值或者确切的类别,而是一个与观测样本相关的概率,将线性回归转化成概率分类问题。

  Logistic Regression可由线性回归推广而来。在线性回归中, y=wTx+ϵy=\textbf{w}^T \textbf{x} + \epsilon,通常假设ϵ∼N(0,σ)\epsilon \sim N(0,\sigma),那么E(y)=wTxE(y) = \textbf{w}^T \textbf{x}。对于Logistic Regression,其期望0<E(y)<10,而自变量的线性组合wTx\textbf{w}^T \textbf{x}的范围为实数域R\mathbb{R}。因此,Logistic Regression从几率的概念构建线性回归模型。一个事件发生的几率(odds)为该事件发生的概率与不发生概率的比值,记p=P(y=1|x,w)p = P(y=1|\textbf{x},\textbf{w}),那么该事件的几率为p1−p\frac{p}{1-p},几率的取值范围为[0,+∞),其对数的取值范围为实数域,所以,可以将对数几率作为因变量构建线性回归模型:

  logp1−p=wTxlog\dfrac{p}{1-p} = \textbf{w}^T \textbf{x}

  由此可得p=11+exp(−wTx)p = \dfrac{1}{1+exp(-\textbf{w}^T \textbf{x})},即P(y=1|x,w)=11+exp(−wTx)P(y=1|\textbf{x},\textbf{w})=\dfrac{1}{1+exp(-\textbf{w}^T \textbf{x})},这便是Logistic Regression采用sigmoid函数的原因,sigmoid函数将自变量的线性组合映射到(0,1),用以表述分类的概率特性。



2. Logistic Regression模型及求解

  记hw(x)=11+exp(−wTx)h_\textbf{w}(\textbf{x})=\dfrac{1}{1+exp(-\textbf{w}^T \textbf{x})},那么对于输入x\textbf{x},分类结果分别为类别1和0的概率为

  p(y=1|x,w)=hw(x)p(y=1|\textbf{x},\textbf{w})=h_\textbf{w}(\textbf{x})

  p(y=0|x,w)=1−hw(x)p(y=0|\textbf{x},\textbf{w})=1-h_\textbf{w}(\textbf{x})

该模型可以用一个等式描述:p(y|x,w)=(hw(x))y(1−hw(x))1−yp(y|\textbf{x},\textbf{w})=(h_\textbf{w}(\textbf{x}))^y (1-h_\textbf{w}(\textbf{x}))^{1-y}

  模型已经建立,接下来就要构建损失函数。上面以对数几率构建的线性回归模型中,由于p(y=1)p(y=1)未知,所以不能用最小二乘法求解,通常采用极大似然法,其损失函数为对数似然函数

  J(w)=1NlnL(w)=1Nln∏i=1Np(y(i)|x(i),w)=1N∑i=1N[y(i)lnhw(x(i))+(1−y(i))ln(1−hw(x(i)))]\begin{array}{} J(\textbf{w})&=\dfrac{1}{N}lnL(\textbf{w})=\dfrac{1}{N}ln\prod\limits_{i=1}^{N}p(y^{(i)}|\textbf{x}^{(i)},\textbf{w})
\\&=\dfrac{1}{N} \sum\limits_{i=1}^{N}[y^{(i)}lnh_{\textbf{w}}(\textbf{x}^{(i)}) + (1-y^{(i)})ln(1-h_{\textbf{w}}(\textbf{x}^{(i)}))]\end{array}

然后对损失函数求导。其中,sigmoid函数hw(x)h_{\textbf{w}}(\textbf{x})对w\textbf{w}的第j个分量wjw_j的偏导为

  ∂hw(x)∂wj=exp(−wTx)[1+exp(−wTx)]2xj=hw(x)(1−hw(x))xj\dfrac{\partial h_{\textbf{w}}(\textbf{x})}{\partial w_j}=\dfrac{exp(-\textbf{w}^T \textbf{x})}{[1+exp(-\textbf{w}^T \textbf{x})]^2}x_j = h_{\textbf{w}}(\textbf{x})(1-h_{\textbf{w}} (\textbf{x})) x_j

那么,损失函数对wjw_j的偏导为

∂J(w)∂wj=1N∑i=1N[y(i)1hw(x(i))hw(x(i))(1−hw(x(i)))x(i)j−(1−y(i))11−hw(x(i))hw(x(i))(1−hw(x(i)))x(i)j]=1N∑i=1N[y(i)−y(i)hw(x(i))−hw(x(i))+y(i)hw(x(i))]x(i)j=1N∑i=1N[y(i)−hw(x(i))]x(i)j\begin{align}
\dfrac{\partial J(\textbf{w})}{\partial w_j}& =
\dfrac{1}{N} \sum\limits_{i=1}^{N}[y^{(i)} \dfrac{1}{h_{\textbf{w}}(\textbf{x}^{(i)})} h_{\textbf{w}}(\textbf{x}^{(i)}) (1-h_{\textbf{w}}(\textbf{x}^{(i)})) x_j^{(i)}
\\& \quad -(1-y^{(i)}) \dfrac{1}{1-h_{\textbf{w}}(\textbf{x} ^{(i)}) } h_{\textbf{w}}(\textbf{x}^{(i)}) (1-h_{\textbf{w}}(\textbf{x}^{(i)})) \textbf{x}_j^{(i)}]
\\ &= \dfrac{1}{N}\sum\limits_{i=1}^N [y^{(i)} - y^{(i)}h_{\textbf{w}}(\textbf{x}^{(i)}) -h_{\textbf{w}}(\textbf{x}^{(i)})+ y^{(i)}h_{\textbf{w}}(\textbf{x}^{(i)})] x_j^{(i)}
\\& =\dfrac{1}{N} \sum\limits_{i=1}^N [y^{(i)} - h_{\textbf{w}}(\textbf{x}^{(i)})] x_j^{(i)}
\end{align}

  由于y∈{0,1}y \in \{0,1\},该问题没有解析解,那么就需要借助梯度上升法求解。每一步迭代的更新如下:

   wj=wj+α∂J(w)∂wjw_j = w_j + \alpha \dfrac{\partial J(\textbf{w})}{\partial w_j}

其中α为学习率,梯度上升是一个基本的优化求解方法,基于其有改进的随机梯度方法和变学习率方法,此处不再详细介绍。

3. 总结

  虽然Logistic Regression给出的是分类的概率属性,但既然是分类,还是要给出具体属于哪一类,通常设定p(y=1|x,w)>0.5p(y=1|\textbf{x},\textbf{w})>0.5则归为1类,p(y=1|x,w)<0.5p(y=1|\textbf{x},\textbf{w})<0.5则归为0类。由于sigmoid函数为单调函数,所以界定了y的概率阈值,就确定了x的分类边界,Logistic Regression通过对数据分类边界的拟合来实现分类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: