机器学习-逻辑回归

130 阅读2分钟

前言

本文内容为自学吴恩达机器学习视频的自我总结,如果有错误,欢迎指正~

逻辑回归使用场景

对于简单的数据拟合,可以使用线性回归,通过代价函数和梯度下降最终得到一个相对比较拟合数据的曲线。 而还有一类场景,比如分类。数据源会给出一系列特征,并且给出对应的类别,比如:

第一套房子

  • 房屋面积:500平方米
  • 楼高:6层
  • 结论:是别墅

第二套房子

  • 房屋面积:100平方米
  • 楼高:1层
  • 结论:不是别墅

逻辑回归就是解决分类问题的经典模型(下文只考虑单一分类,结果只有true/false)

详细介绍

上文的例子中,可以把面积和楼高当成特征x1、x2,结论当成y

房屋面积(平方米)(x1)楼高(层数)(x2)是否为别墅(1-是 0-否)(y)
50061
10010

显然,我们直观性地需要一个w向量(w1,w2),配合b常量,组成一个表达式,使用表达式的值当做判断别墅的最终依据

比如,举一个简单的例子(这里暂时不考虑高阶),对于表达式y=w1x1+w2x2+by = w_{1}x_{1} + w_{2}x_{2} + b, 代入特征x1和x2后,求出y<0则表示不是别墅,y>0则是别墅。

引入问题

看起来上述式子,已经可以满足分类的需求,但是还有个核心问题没有解决:表达式y的值域似乎是负无穷到正无穷,很难与样例中给出的结果y(值为0或者1)作代价比较。

如果将0和1分别映射成0%概率和100%概率的话,我们需要一个能将负无穷到正无穷映射到区间(0,1)的函数。

逻辑回归核心表达式

11+ez\frac{1}{1 + e^{-z}}

其中

z=w1x1+w2x2+bz = w_{1}x_{1} + w_{2}x_{2} + b

这一式子显然很好地解决了上面说的问题,同时,我们可以这样去理解:

11+ezi\frac{1}{1 + e^{-z_{i}}} 代表了对应样本i是别墅的概率,模型最终的预测效果由向量w和常数b决定,我们当然希望对应的概率是相对最准确的。下面会引入了极大似然估计的概念。

核心公式推导

对于m个样本1~m,前p个是别墅,后m-p个不是别墅

设样本i是别墅的概率为

fi(w,b)=11+e(wTxi+b)f_{i}(\overrightarrow{w},b) = \frac{1}{1 + e^{-(\overrightarrow{w}^{T}\overrightarrow{x_{i}} + b)}}

因此,我们可以先求出发生这一情况的概率:

P(w,b)=i=1pfi(w,b)i=p+1m(1fi(w,b))P(\overrightarrow{w},b) = \prod_{i=1}^{p}f_{i}(\overrightarrow{w},b)\prod_{i=p+1}^{m}(1 - f_{i}(\overrightarrow{w},b))

找到一组 (w,b)(\overrightarrow{w}, b) 使得上述的P最大,即为我们的目标模型参数。

乘法不太好处理,我们可以左右取对数,不影响整体的单调性

logP(w,b)=i=1plogfi(w,b)+i=p+1mlog(1fi(w,b))logP(\overrightarrow{w},b) = \sum_{i=1}^{p}logf_{i}(\overrightarrow{w},b)+\sum_{i=p+1}^{m}log(1 - f_{i}(\overrightarrow{w},b))

我们可以利用y只能为0和1的特点,对上面的公式做一个统一的转化

1mlogP(w,b)=1mi=1m[yilogfi(w,b)+(1yi)log(1fi(w,b))]-\frac{1}{m}logP(\overrightarrow{w},b) = -\frac{1}{m}\sum_{i=1}^{m}[y_{i}logf_{i}(\overrightarrow{w},b)+ (1 - y_{i})log(1 - f_{i}(\overrightarrow{w},b))]

由于左右都乘了一个负号,问题变成了求使得上述式子得到最小值的一组(w,b)(\overrightarrow{w}, b)

梯度下降

因为最小值即为目标,我们可以将上面的式子理解成代价函数,下面使用梯度下降的方式去处理

Loss(w,b)=1mi=1m[yilogfi(w,b)+(1yi)log(1fi(w,b))]Loss(\overrightarrow{w},b) = -\frac{1}{m}\sum_{i=1}^{m}[y_{i}logf_{i}(\overrightarrow{w},b)+ (1 - y_{i})log(1 - f_{i}(\overrightarrow{w},b))]

只需要依次求出wiw_{i}bb的偏导即可

dLoss(w,b)dwi=1mi=1m[d[yilogfi(w,b)]dwi+(1yi)d[log(1fi(w,b))]dwi]\frac{dLoss(\overrightarrow{w},b)}{dw_{i}} = -\frac{1}{m}\sum_{i=1}^{m}[\frac{d[y_{i}logf_{i}(\overrightarrow{w},b)]}{dw_{i}}+ (1 - y_{i})\frac{d[log(1 - f_{i}(\overrightarrow{w},b))]}{dw_{i}}]
dLoss(w,b)dwi=1mi=1m[yidfi(w,b)dwifi(w,b)+(1yi)dfi(w,b)dwi1fi(w,b)]\frac{dLoss(\overrightarrow{w},b)}{dw_{i}} = -\frac{1}{m}\sum_{i=1}^{m}[y_{i}\frac{\frac{df_{i}(\overrightarrow{w},b)}{dw_{i}}}{f_{i}(\overrightarrow{w},b)}+ (1 - y_{i})\frac{-\frac{df_{i}(\overrightarrow{w},b)}{dw_{i}}}{1 - f_{i}(\overrightarrow{w},b)}]

已知

dfi(w,b)dwi=xie(wTxi+b)[1+e(wTxi+b)]2=xifi(w,b)(1fi(w,b))\frac{df_{i}(\overrightarrow{w},b)}{dw_{i}} = \frac{x_{i}e^{-(\overrightarrow{w}^{T}\overrightarrow{x_{i}} + b)}}{[1 + e^{-(\overrightarrow{w}^{T}\overrightarrow{x_{i}} + b)}]^{2}} = x_{i}f_{i}(\overrightarrow{w},b)(1-f_{i}(\overrightarrow{w},b))

代入到上面的式子,化简得

dLoss(w,b)dwi=1mi=1m(fi(w,b)yi)xi\frac{dLoss(\overrightarrow{w},b)}{dw_{i}} = \frac{1}{m}\sum_{i=1}^{m}(f_{i}(\overrightarrow{w},b) - y_{i})x_{i}

与线性回归的二次代价函数的梯度下降式子一模一样!就是这么优雅! 后面b的式子就不写了,利用这些式子就可以通过梯度下降求出逼近最大似然的一组(w,b)(\overrightarrow{w}, b)了!