说在前面
逻辑回归从何而来?
线性回归是用一个线性模型来对数据进行拟合,但是它对离群点的容忍能力很差。所以,逻辑回归在此基础上加了一个sigmoid函数,从而变成了一个分类模型。
分类时,约定分类模型f(x)f(x)f(x)满足:
f(x)=1,g(z)≥0.5f(x) = 1, \quad g(z) \ge 0.5f(x)=1,g(z)≥0.5
f(x)=0,g(z)<0.5f(x) = 0, \quad g(z) \lt 0.5f(x)=0,g(z)<0.5
其中,
z=wxz = wxz=wx
g(z)=sigmoid(z)=11+e−zg(z) = sigmoid(z) = \frac{1}{1+e^{-z}}g(z)=sigmoid(z)=1+e−z1
而我们模型要学习的就是这个www
由此可以看出,逻辑回归模型的表示形式其实就是下面(1)(2)表示的条件概率分布P(Y∣X)P(Y|X)P(Y∣X),毕竟别忘了它本身就是个判别模型,预测的时候是通过计算条件概率P(Y∣X)P(Y|X)P(Y∣X)得到最终类别标签的。
P(Y=1∣x)=11+e−wx=ewx1+ewx(1)P(Y=1|x) = \frac{1}{1+e^{-wx}} = \frac{e^{wx}}{1+e^{wx}}\qquad(1)P(Y=1∣x)=1+e−wx1=1+ewxewx(1)
P(Y=0∣x)=1−P(Y=1∣x)=11+ewx(2)P(Y=0|x) = 1-P(Y=1|x) = \frac{1}{1+e^{wx}}\qquad(2)P(Y=0∣x)=1−P(Y=1∣x)=1+ewx1(2)
接下来,考虑下如何定义逻辑回归的损失函数。
损失函数
逻辑无法像线性回归一样通过计算均方误差来得到损失值,因为逻辑回归本身是不连续的,因而这样计算得到的损失函数也不是凸函数。所以,这里使用最大似然来实现参数评估,同时为了便于计算,往往在似然函数的基础上取对数。
考虑到这里有几个点对新手不是很友好,做个详细的解释:
- 损失函数不是凸函数意味着什么?意味着函数的极值和最值是不一致的,这样用梯度下降等方法得到的参数就不一定是最优参数了;
- 最大似然,就是似然函数最大化,它的函数表达式是概率的连乘,这样在求导时非常复杂,所以为了便于计算,往往取对数,得到对数似然函数,这样连乘就变成连加,求导就变得很简单了。同时,由于二者同增减的,所以最大化对数似然和最大化似然函数是等价的。
假设数据集T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)},
将(1)(2)合并得
L(w)=∏i=1NP(yi=1∣xi)yiP(yi=0∣xi)(1−yi)=∏i=1NP(yi=1∣xi)yi[1−P(yi=1∣xi)](1−yi) \begin{aligned} L(w) & = \prod_{i=1}^N P(y_i=1|x_i)^{y_i}P(y_i=0|x_i)^{(1-y_i)}\\ & = \prod_{i=1}^N P(y_i=1|x_i)^{y_i}[1-P(y_i=1|x_i)]^{(1-y_i)}\\ \end{aligned} L(w)=i=1∏NP(yi=1∣xi)yiP(yi=0∣xi)(1−yi)=i=1∏NP(yi=1∣xi)yi[1−P(yi=1∣xi)](1−yi)
对似然函数进行负对数化,得到损失函数:
J(w)=−lnL(w)=−∑i=1N[yilogP(yi=1∣xi)+(1−yi)log(1−P(yi=1∣xi))]=−∑i=1N[yilogP(yi=1∣xi)1−P(yi=1∣xi)+log(1−P(yi=1∣xi))]=−∑i=1N[yi(wxi)−log(1+ewxi)] \begin{aligned} J(w) & = -lnL(w)\\ & = - \sum_{i=1}^N [y_ilogP(y_i=1|x_i)+(1-y_i)log(1-P(y_i=1|x_i))]\\ & = - \sum_{i=1}^N [y_ilog\frac{P(y_i=1|x_i)}{1-P(y_i=1|x_i)}+log(1-P(y_i=1|x_i))]\\ & = - \sum_{i=1}^N [y_i(wx_i)-log(1+e^{wx_i})] \end{aligned} J(w)=−lnL(w)=−i=1∑N[yilogP(yi=1∣xi)+(1−yi)log(1−P(yi=1∣xi))]=−i=1∑N[yilog1−P(yi=1∣xi)P(yi=1∣xi)+log(1−P(yi=1∣xi))]=−i=1∑N[yi(wxi)−log(1+ewxi)]
这样,问题就变成了以对数似然函数为目标函数的最优化问题。得到了w的极大似然估计值,就得到了逻辑回归模型。
如何训练得到最优参数?
这里可以通过梯度下降来得到。这个和线性回归中的一样。就不再次重复了。
总结
逻辑回归实现简单、可解释性好、易于扩展,广泛应用于点击率预测CTR、计算广告CA、推荐系统RS等。
简单点去理解逻辑回归,就是在线性回归的外面套上一个sigmoid层,如果大于等于0.5就认为是正类,小于0.5就是负类。如果画出sigmoid函数就可以发现,其实还是在对w⋅xw \cdot xw⋅x进行建模,对于正例我们希望wx趋于无穷大,而对于负例希望wx趋于负无穷大。
如有错误还望赐教,本笔记持续更新(最近更新2019年7月27日)