机器学习笔记——线性回归
机器学习分为监督式学习和非监督式学习。监督式学习需要为数据集设定目标值,非监督学习不需要设定目标值,而是根据数据找出其中分组的规律。
监督式学习可分为回归问题和分类问题。回归问题的目标值为一系列连续的值,分类问题的目标值为离散的值。
线性回归问题:假定数据所用的拟合函数为线性,即,只有一次幂。
例:假设数据集中输入与输出的函数为h(x) = a1 + a2 * x,求使得代价函数J(a1,a2) = 1/2m * ∑(h(xi) - yi)2 (也叫作平方误差)最小的a1和a2。
梯度下降算法:
为了求使J(a1,a2)最小的a1和a2,可以使用梯度下降算法:aj := aj- α * ∂(J(a1,a2)) / ∂aj 更新a1和a2,直到收敛。
将线性回归中的代价函数带入到梯度下降算法中可以得到aj:= aj - α * ∂(1/2m * ∑(h(xi) - yi)2 ) / ∂aj。
分别得到:
a1 := a1 - 1/m * ∑(h(xi) - yi)
a2 := a2 - 1/m * ∑((h(xi) - yi) * xi)
这样得到的称为批量梯度下降算法,即在每一次更新参数时,都需要计算所有数据集。
使用向量表示多变量的线性回归问题:
h(x) = a0 + a1 * x1 + a2 * x2 ... + an * xn 可表示为h(x) = a`x(a`表示a的转置,x表示n+1维向量,添加x0 = 1)
此时,代价函数可表示为J(a) = 1/ 2m * ∑(h(xi) - yi)2 = 1/2m * ∑(a`xi - yi)2 。此时x表示向量,xi表示第i个输入
关于参数的选择和α的大小:
参数最好将其范围保持一致,如a1的范围为-3~3,a2的范围为-1000~2000,此时若直接使用参数,则在梯度下降时会进行过多的迭代,而将a2;=a2/1000,则可以保持两个参数范围相当,使梯度下降迭代次数明显减少。方法有两个:缩放范围和平均化。缩放范围使用a = a /(max-min)或者a = a / range,平均化使用a = a - u。
α过大,会使得梯度下降步幅过大,有可能越过最低点到达更高的位置,此时梯度下降无法收敛,应减小α值。α过小,则梯度下降过慢,迭代次数过高。
总的来说,α可以以10倍方式取多个值,如0.03,0.3,3,30等等。
normal equations:
为了使h(x)接近y,直接使h(x)=y,此时可以表示为xa=y的矩阵表达式,即x`xa = x`y(x`x转化为方阵),得到a = (x`x)-1x`y,即所谓的正规方程。
但,可能存在h(x) = y即xa=y无解的情况,此时有x`*(y-xa) = 0,从而得到正规方程。详情见:https://zhuanlan.zhihu.com/p/22757336
对比:
| 梯度下降 | normal equations |
| 需要选择学习速率α | 无需选择α |
| 需要多次迭代 | 无需迭代 |
|
可能需要缩放参数 |
无需缩放 |
|
对参数较多时同样适用 |
参数较多时计算(x`x)-1时耗时较大 (Andrew Ng 使用10000作为分界) |

浙公网安备 33010602011771号