前言
本文内容为自学吴恩达机器学习视频的自我总结,如果有错误,欢迎指正~
逻辑回归使用场景
对于简单的数据拟合,可以使用线性回归,通过代价函数和梯度下降最终得到一个相对比较拟合数据的曲线。
而还有一类场景,比如分类。数据源会给出一系列特征,并且给出对应的类别,比如:
第一套房子
第二套房子
- 房屋面积:100平方米
- 楼高:1层
- 结论:不是别墅
逻辑回归就是解决分类问题的经典模型(下文只考虑单一分类,结果只有true/false)
详细介绍
上文的例子中,可以把面积和楼高当成特征x1、x2,结论当成y
| 房屋面积(平方米)(x1) | 楼高(层数)(x2) | 是否为别墅(1-是 0-否)(y) |
|---|
| 500 | 6 | 1 |
| 100 | 1 | 0 |
显然,我们直观性地需要一个w向量(w1,w2),配合b常量,组成一个表达式,使用表达式的值当做判断别墅的最终依据
比如,举一个简单的例子(这里暂时不考虑高阶),对于表达式y=w1x1+w2x2+b,
代入特征x1和x2后,求出y<0则表示不是别墅,y>0则是别墅。
引入问题
看起来上述式子,已经可以满足分类的需求,但是还有个核心问题没有解决:表达式y的值域似乎是负无穷到正无穷,很难与样例中给出的结果y(值为0或者1)作代价比较。
如果将0和1分别映射成0%概率和100%概率的话,我们需要一个能将负无穷到正无穷映射到区间(0,1)的函数。
逻辑回归核心表达式
1+e−z1
其中
z=w1x1+w2x2+b
这一式子显然很好地解决了上面说的问题,同时,我们可以这样去理解:
1+e−zi1 代表了对应样本i是别墅的概率,模型最终的预测效果由向量w和常数b决定,我们当然希望对应的概率是相对最准确的。下面会引入了极大似然估计的概念。
核心公式推导
对于m个样本1~m,前p个是别墅,后m-p个不是别墅
设样本i是别墅的概率为
fi(w,b)=1+e−(wTxi+b)1
因此,我们可以先求出发生这一情况的概率:
P(w,b)=i=1∏pfi(w,b)i=p+1∏m(1−fi(w,b))
找到一组 (w,b) 使得上述的P最大,即为我们的目标模型参数。
乘法不太好处理,我们可以左右取对数,不影响整体的单调性
logP(w,b)=i=1∑plogfi(w,b)+i=p+1∑mlog(1−fi(w,b))
我们可以利用y只能为0和1的特点,对上面的公式做一个统一的转化
−m1logP(w,b)=−m1i=1∑m[yilogfi(w,b)+(1−yi)log(1−fi(w,b))]
由于左右都乘了一个负号,问题变成了求使得上述式子得到最小值的一组(w,b)
梯度下降
因为最小值即为目标,我们可以将上面的式子理解成代价函数,下面使用梯度下降的方式去处理
Loss(w,b)=−m1i=1∑m[yilogfi(w,b)+(1−yi)log(1−fi(w,b))]
只需要依次求出wi和b的偏导即可
dwidLoss(w,b)=−m1i=1∑m[dwid[yilogfi(w,b)]+(1−yi)dwid[log(1−fi(w,b))]]
dwidLoss(w,b)=−m1i=1∑m[yifi(w,b)dwidfi(w,b)+(1−yi)1−fi(w,b)−dwidfi(w,b)]
已知
dwidfi(w,b)=[1+e−(wTxi+b)]2xie−(wTxi+b)=xifi(w,b)(1−fi(w,b))
代入到上面的式子,化简得
dwidLoss(w,b)=m1i=1∑m(fi(w,b)−yi)xi
与线性回归的二次代价函数的梯度下降式子一模一样!就是这么优雅!
后面b的式子就不写了,利用这些式子就可以通过梯度下降求出逼近最大似然的一组(w,b)了!