本文是作者学习台大林轩田教授《机器学习基石》课程后整理的简要笔记(未按课程回目分节),内容大部分来源于林轩田教授的课程资料,其余相关参考链接已标出。
版权所有:CSDN博客 拖延症患者的自愈小记
线性模型 - Linear models
- Logisticsregression 逻辑回归
二值分类用分段函数将score映射到+1或-1,逻辑回归则是用Logistic函数将score映射到[0,1],因此也说逻辑回归是soft的二值分类
用Logistic函数来approximate目标概率函数:
错误衡量并不好办,因为在现有数据中,只能看到顾客“是否无法还款”的结果,而并没有“无法还款的可能性”这个数据可以学习。换个思路,从h和f生成样本数据的角度,客观存在的样本D是由f产生的,那么h产生的样本D的概率越大越好,这样就把错误最小化的过程转化成了概率最大化问题:
即
由此再转化回最小问题,定义Cross-entropy error:
至此推导出了错误衡量,接下来就是求最小值的问题了。由于Ein(w)是连续可微的凸函数,先求其微分:
直接解微分为零的式子并不容易,这里采用了梯度下降法
梯度下降法,就好比站在高处向谷底移动,朝哪个方向走可以更接近谷底就朝这个方向跨一步,一步一步接近谷底。此时问题有两个:方向v和步长η
最佳方向是该点梯度的反方向:
步长的优化思想是越接近谷底越要“小心翼翼”一些,和“该点到谷底距离”成正比:
至此,逻辑回归算法完整出炉:
PS:随机梯度下降法SGD(stochasticgradient descent)
原梯度下降更新w时,计算▽ E是将所有样本点按权重大小合起来算一个梯度,这样很费力气(和pocket效率相当),SGD的思路是在样本点中随机抽一个来替代所有样本点的平均值,即“随机梯度”(=true gradient+‘noise’ direction)。如果用判断梯度是否为零来决定何时算法停止就达不到本身降低计算复杂度的出发点了,所以通常让更新次数足够多来停止更新。在样本数量不算太大时,η的经验值是0.1
此时可以体会到,SGD Logistic Regression ≈ ‘soft’ PLA,每轮的更新计算仅限于一个样本
PPS:用回归算法解决分类问题(Regression for classification)
线性分类求解最佳算法时遇到的NP-hard问题,于是想要尝试借助回归算法来解决线性分类问题,于是如上图式子变形,将回归算法err的形式跟线性分类统一起来,如下图画出err的曲线进行比较,易证把regression err做好就可以保证0/1 err也是好的,可行性以上
用回归来做分类的pros也就是这样做的出发点,比较容易optimization;cons在图上直观可得,一些情况下err会有较大偏差
应用步骤如下:
实际应用中,PLA仅适用于问题是线性可分的,而未知是否线性可分的更多情形下,常用Linear Regression做初始化操作,用来计算PLA/Pocket/LogisticRegression的w0(原因是linearRegression的bound太宽);Logistic Regression比pocket更常选