逻辑回归
sigmoid 函数
sigmoid函数,其数学形式是:
\[g(x)=\frac{1}{1+e^{-x}}
\]
函数曲线:

sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,在远离0的地方函数的值会很快接近0/1。
为何使用Sigmoid 函数
指数族分别满足:
\(p(y ; \eta)=b(y) \exp \left(\eta^{T} T(y)-\alpha(\eta)\right)\)
逻辑回归中认为函数其概率服从伯努利分布:
\[\begin{aligned} p(y ; \phi) &=\phi^{y}(1-\phi)^{1-y} \\ &=\exp (y \log \phi+(1-y) \log (1-\phi)) \\ &=\exp \left(\left(\log \left(\frac{\phi}{1-\phi}\right)\right) y+\log (1-\phi)\right) \end{aligned}
\]
所以:
\[\begin{array}{c}{T(y)=y} \\ {\alpha(\eta)=-\log (1-\phi)} \\ {b(y)=1}\end{array}
\]
从而:
\[\begin{array}{c}{\eta=\log \left(\frac{\phi}{1-\phi}\right)} \\ {\phi=\frac{e^{\eta}}{1+e^{\eta}}}\end{array}
\]
也就推倒出了Sigmoid函数的形式。
Sigmoid 函数优缺点
优点:
- sigmoid 函数连续,单调递增。
- sigmiod 函数关于(0,0.5) 中心对称。
- 对sigmoid函数求导 :\(p^{\prime}=p *(1-p)\),计算sigmoid函数的导数非常的快速。
缺点:
- 导数形式在(0,0.25),容易出现梯度消失。
- 只能处理二分问题。
决策函数
如果将上面的函数扩展到多维空间,并且加上参数,则函数变成:
\[P(y=1 | x ; \theta)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} * x}}
\]
相应的决策函数为:\(y^{*}=1,\) if \(P(y=1 | x)>0.5\)
选择0.5作为阈值是一个一般的做法,实际应用时特定的情况可以选择不同阈值,如果对正例的判别准确性要求高,可以选择阈值大一些,对正例的召回要求高,则可以选择阈值小一些。
参数求解
在逻辑回归模型中,似然函数可表示为:
\[L(\theta)=P(D | \theta)=\prod P(y | x ; \theta)=\prod g\left(\theta^{T} x\right)^{y}\left(1-g\left(\theta^{T} x\right)\right)^{1-y}
\]
取对数可以得到对数似然函数:
\[l(\theta)=\sum y \log g\left(\theta^{T} x\right)+(1-y) \log \left(1-g\left(\theta^{T} x\right)\right)
\]
log损失在单个数据点上的定义为:\(-y \log p(y | x)-(1-y) \log 1-p(y | x)\)
如果取整个数据集上的平均log损失,我们可以得到:
\[J(\theta)=-\frac{1}{m} l(\theta)
\]
即在逻辑回归模型中,我们最大化似然函数和最小化log损失函数实际上是等价的。
对于该优化问题,存在多种求解方法,这里以梯度下降的为例说明。梯度下降(Gradient Descent)又叫作最速梯度下降,是一种迭代求解的方法,通过在每一步选取使目标函数变化最快的一个方向调整参数的值来逼近最优值。基本步骤如下:
- 选择下降方向(梯度方向,\(\nabla J(\theta)\))
- 选择步长,更新参数 \(\theta^{i}=\theta^{i-1}-\alpha^{i} \nabla J\left(\theta^{i-1}\right)\)
- 重复以上两步直到满足终止条件
梯度计算
\[\begin{array}{l}{\frac{\partial}{\partial \theta_{j}} J(\theta)} \\ {=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \cdot \frac{1}{h_{\theta}\left(x^{(i)}\right)}-\left(1-y^{(i)}\right) \cdot \frac{1}{1-h_{\theta}\left(x^{(i)}\right)}\right] \cdot \frac{\partial}{\partial \theta_{j}} h_{\theta}\left(x^{(i)}\right)} \\ {=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \cdot \frac{1}{g(\theta \cdot x)}-\left(1-y^{(i)}\right) \cdot \frac{1}{1-g(\theta \cdot x)}\right] \cdot \frac{\partial}{\partial \theta_{j}} g(\theta \cdot x)}\end{array}
\]
其中:
\[g^{\prime}(z)=g(z)(1-g(z))
\]
所以:
\[\begin{array}{l}{\frac{\partial}{\partial \theta_{j}} J(\theta)} \\ {=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \cdot \frac{1}{g(\theta \cdot x)}-\left(1-y^{(i)}\right) \cdot \frac{1}{1-g(\theta \cdot x)}\right] \cdot g(\theta \cdot x)(1-g(\theta \cdot x)) \cdot x_{j}^{(i)}} \\ {=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \cdot(1-g(\theta \cdot x))-\left(1-y^{(i)}\right) \cdot g(\theta \cdot x)\right] \cdot x_{j}^{(i)}} \\ {=-\frac{1}{m} \sum_{i=1}^{m}\left(y^{(i)}-g(\theta \cdot x)\right) \cdot x_{j}^{(i)}}\end{array}
\]
逻辑回归与线性回归
**逻辑回归处理的是分类问题, 线性回归处理的是回归问题, 这是两者的最本质的区别。 **
在二分类问题中,为什么弃用传统的线性回归模型,改用逻辑斯蒂回归?
线性回归用于二分类时,首先想到下面这种形式,p是属于类别的概率:
\[\mathrm{P}=\omega_{0}+\omega_{1} \mathrm{x}_{1}+\ldots+\omega_{\mathrm{n}} \mathrm{x}_{\mathrm{n}}
\]
但是这时存在的问题是:
1)等式两边的取值范围不同,右边是负无穷到正无穷,左边是[0,1],这个分类模型的存在问题
2)实际中的很多问题,都是当x很小或很大时,对于因变量P的影响很小,当x达到中间某个阈值时,影响很大。即实际中很多问题,概率P与自变量并不是直线关系。
逻辑回归多分类实现方法
one-VS-rest
这个做法是通过对一个n分类问题训练n个分类器,其中每个分类器是区分某一个类别和剩下所有类别的。
优点:普适性还比较广,可以应用于能输出值或者概率的分类器,同时效率相对较好,有多少个类别就训练多少个分类器。
缺点:很容易造成训练集样本数量的不平衡(Unbalance),尤其在类别较多的情况下,经常容易出现正类样本的数量远远不及负类样本的数量,这样就会造成分类器的偏向性。
One-VS-One
顾名思义,就是对所有类别每两个训练一个分类器,那么要训练的分类器就有n*(n-1)/2 个,预测的时候就是投票法,每个分类器预测得到某个类别,看哪个类别最终得票最多就是结果。
假如我们要预测的一个数据在图中红色圆圈的位置,那么第一个分类器会认为它是 x,第二个分类器会认为它偏向三角形,第三个分类器会认为它是 x,经过三个分类器的投票之后,可以预测红色圆圈所代表的数据的类别为 x。

优点:可以规避上一种方法训练数据不平衡的问题,性能相对稳定;还有就是训练模型虽然多,但是相对简单,训练效率会有提升。
缺点:要训练的分类器太多了,随着分类的增多,要训练的分类器个数呈平方级别的增长。
Softmax
Softmax 回归就是 logistic 回归进行多分类时的一种数学拓展,如果让分类数为 2 带入 softmax 回归,会发现其本质上和 logistic 回归是一样的。
\[\operatorname{softmax}\left(k, x_{1}, \ldots, x_{n}\right)=\frac{e^{x_{k}}}{\sum_{i=1}^{n} e^{x_{i}}}
\]
在处理一些样本可能丛属多个类别的分类问题是,使用 one vs one 或 one vs all 有可能达到更好的效果。
Softmax 回归适合处理一个样本尽可能属于一种类别的多分类问题。