Logistic Regression Introduction
逻辑回归(logistic regression),一种典型的分类方法.
假设 (Assumption)
Logistic distribution 的分布函数是一条 S 形曲线,即 sigmoid 函数 :
\[g(x) = {1\over 1+e^{-x}}\]
对于二分类问题,可以看作是伯努利试验,即 :
\[P(y=1|x) = p ; P(y=0|x) = 1-p\]
\[P(x|\theta)=\theta^x(1-\theta)^{1-x}\]
最大似然 (Maximum Likelihood)
对应的似然函数为 :
\[L(x)=\Pi P(y|x) = \Pi x^y (1-x)^{1-y} = \Pi g(x)^y (1-g(x))^{1-y}\]
则对数似然函数为 (使用对数函数因为其单调,可以避免指数和累乘运算,而且可以有效缩小原值大小) :
\[L(\theta) = \Pi \log g(x)^y (1-g(x))^{1-y}\]
\[=\sum \log g(x)^y + \log (1-g(x))^{1-y}\]
\[=\sum y\log g(x) + (1-y)\log (1-g(x))\]
\[=\sum y\log g(\theta^Tx) + (1-y)\log (1-g(\theta^Tx))\]
这时我们只需要最大化似然函数,就可以得到最优的参数估计,这里对其取负后除\(n\)作为最终的损失函数 (取负值就可以将最大化问题变为最小化问题) :
\[J(\theta) = -{1\over n}L(\theta)=-{1\over n}\sum_{i=1}^n y\log g(\theta^Tx) + (1-y)\log (1-g(\theta^Tx))\]
优化 (Optimization)
这里先介绍应用 梯度下降 (Gradient Descent) 求解损失函数最优值,理论上我们沿着凸函数梯度的反方向缓慢的移动,就能达到局部最优点 (local minimum),对于严格凸函数,可以达到全局最优点 (global minimum).
先求 sigmoid 函数的倒数 :
\[g'(x) = {d g(x) \over dx} = -1 * {1\over (1+e^{-x})^2} * (-e^{-x})\] \[={e^{-x} \over (1+e^{-x})^2} = {1+e^{-x}-1 \over (1+e^{-x})^2}\] \[={1+e^{-x} \over (1+e^{-x})^2}-{1 \over (1+e^{-x})^2} \] \[= g(x)(1-g(x))\]
对损失函数求关于参数 \(\theta\) 的偏导数 (according to the chain law) :
\[{\partial J(\theta) \over \partial \theta} = -{\partial J(\theta)\over \partial g(\theta^Tx)}*{\partial g(\theta^Tx)\over \partial \theta^Tx}*{\partial \theta^Tx \over \partial \theta}\] \[=(y*{1 \over g(\theta^Tx)} - (1-y){1 \over 1-g(\theta^Tx)}) * g(\theta^Tx)(1-g(\theta^Tx)) * x\] \[=-(y-g(\theta^Tx))x = (g(\theta^Tx)-y)x\]
所以更新参数的方式为 : \[\theta = \theta - \alpha(g(\theta^Tx)-y)x\]
如果前面的损失函数不加负号,那这里更新参数时就是 : \[\theta = \theta + \alpha(y-g(\theta^Tx))x = \theta + \alpha*error*x\]
即在逻辑回归模型中,最大化似然函数和最小化log损失函数实际上是等价的.
1 | class LogisticRegression: |
引入正则化 (Regularization)
为了防止过拟合,可以通过在损失函数之后添加正则化项的方式来惩罚参数,从而降低模型复杂度,一般常用的是 L1, L2 正则化,L1 倾向于让参数等于0,L2 倾向于让参数接近于0.
\[J(\theta) = -{1\over n}L(\theta)=-{1\over n}\sum_{i=1}^n y\log g(\theta^Tx) + (1-y)\log (1-g(\theta^Tx)) + \lambda||\theta||\]
\[J(\theta) = -{1\over n}L(\theta)=-{1\over n}\sum_{i=1}^n y\log g(\theta^Tx) + (1-y)\log (1-g(\theta^Tx)) + {\lambda \over 2}||w||^2\]
关于正则化的详细内容,我记录在了另一篇 blog 中 : Regularization in Machine Learnig
解决多分类 (Multi-Classification)
Sigmoid -> Softmax
One vs all
线性不可分问题
可以从sigmoid函数看出,当 \(θ^Tx > 0\) 时,\(y=1\),否则 \(y=0\)。\(θ^Tx=0\) 是模型隐含的分类平面(在高维空间中,我们说是超平面)。所以说逻辑回归本质上是一个线性模型,但是,这不意味着只有线性可分的数据能通过LR求解,实际上,我们可以通过特征变换的方式把低维空间转换到高维空间,而在低维空间不可分的数据,到高维空间中线性可分的几率会高一些.
logistic regression 本质上是线性回归,只是在特征到结果的映射中加入了一个sigmoid函数,即先把特征线性求和,然后使用非线性的函数将连续值映射到0与1之间.