机器学习公开课备忘录(一)回归问题
回归问题属于监督学习类(supervised learning),其中线性回归针对预测值是连续值的问题,而逻辑回归针对的预测值是离散值的问题,换而言之,逻辑回归只是延续了“回归”的称呼,本质上是分类问题。
线性回归
问题描述
- 给定m个样本,假设每个样本有n个特征(特征代表影响最终输入的因素),第i个样本输入与输出可表示为: ((x_1^{(i)},x_2^{(i)}......x_n^{(i)})) 与 (y^{(i)})
(例如研究房价,y为最终房子的价格,影响房子的价格可选取房子的大小、卧室数等等,因此可以用 (x_1) 代表房子大小,(x_2) 代表卧室数……依次类推) - 假定 (h_{ heta}(x) = heta_0+ heta_1*x_1+ heta_2*x_2+......)
是给定一组输入((x_1,x_2......x_n))下的输出,线性回归,即是求一组( heta_0, heta_1, heta_2......) 参数,使得 (h_{ heta}(x)) 与已知的输出误差最小,并进而可以用这个函数预测其它输入情况下的输出值。 - 所谓的误差最小,是通过代价函数来描述的,代价函数的值是由( heta_0, heta_1, heta_2......) 决定的,可以表示为(vec heta),代价函数表示为:$$J(vec heta) = frac{1}{2m} sum_{i=1}m(h_{ heta}(x{(i)})-y{(i)})2$$
算法求解(梯度下降法)
以 (y = f(x)) 的一元函数为例,对于任意一点,假设斜率为k,则有:(f(x - kalpha) < f(x),alpha)为较小的正实数,即对于任意一个函数,当其自变量沿着其导数的反方向变化时,函数值变小;这个结论对于多元函数也是成立的,可以通过这种算法求解代价函数最小值时,( heta) 的取值。
伪代码描述
Repeat until convergence{
( heta_j = heta_j - alphafrac{partial}{partial heta_j}J( heta))
$ = heta_j - alphafrac{1}{m}summ_{i=1}(h_ heta(x{(i)}-y{(i)}))x_j{(i)}$
}
将上述的j个 ( heta) 值写成矩阵形式为:( heta = heta - alphafrac{1}{m}X^T(X heta-y))
(另外可以通过矩阵化的正规方程直接求解,公式为 ( heta = (X^TX)^{-1}X^Ty))
使用技巧
- 当各特征的范围波动太大时(例如房间数量是个位数,房间面积往往有三位数),往往采用特征缩放,将各特征归一化到正常区间,常见转化公式:(x = frac{x - avr}{max - min})
- 组合选用特征,例如用不同特征的加减乘除或者某个特征的乘方、开方等构造新特征
- 利用(J( heta))与迭代次数的曲线判断算法是否正常工作,若正常工作函数是递减的,否则(alpha)过大
- 为防止过拟合,常使用正则化,此时:
[J(vec heta) = frac{1}{2m} (sum_{i=1}^m(h_{ heta}(x^{(i)})-y^{(i)})^2 + lambdasum^n_{j=1} heta_j^2)
]
参数更新公式演变为:
[ heta_j = heta_j - alphafrac{1}{m}sum^m_{i=1}(h_ heta(x^{(i)})-y^{(i)})x_j^{(i)} - alphafrac{lambda}{m} heta_j 当且仅当j不为零,j为零时无正则项
]
逻辑回归
问题描述
- 逻辑回归的输入同线性回归,但其输出为离散值,逻辑回归更确切地说是分类问题。
- 当 (y in {0,1}) 时,也被称作二分类问题,1为正类,0为负类;同理,y的取值集合也可以有多个值。
- 逻辑回归的假设函数是引入了sigmod函数对结果进行映射: $$ g(z) = frac{1}{1+e^{-z}}$$ $$h_ heta(x) = g( heta_0+ heta_1x_1+ heta_2x_2+......)$$ 此时,假设函数的输出在[0 1]之间,通常选取0.5作为阈值,大于阈值的认为输出是1;同时,假设函数的值也可以看作概率
- 逻辑回归的代价函数也有一定差异,即:$$J(vec heta) = frac{1}{2m} (sum_{i=1}^m(-ylog(h_ heta(x))-(1-y)log(1-h_ heta(x))) + lambdasumn_{j=1} heta_j2)$$ 但对其求导后会发现,它的更新规则形式和线性回归相同,都是:$$ heta_j = heta_j - alphafrac{1}{m}summ_{i=1}(h_ heta(x{(i)})-y{(i)})x_j{(i)} - alphafrac{lambda}{m} heta_j $$ 只是公式当中的 (h_ heta(x)) 函数发生了变化
算法求解
- 算法的思路和求解伪代码同线性回归
- 对于多分类问题,以三分类为例,假设给定的样本中 (y in { 0,1,2}) ,可以看作三个二分类问题,即(y = 0和y eq 0、y = 1和y eq 1、y=2和y eq2)三类,对于某个输入,可以分别预测其等于0、等于1、等于2的概率,取概率最高的值作为其输出