模型
线性回归,使用的是线性函数模型。
代价函数:
梯度下降算法
梯度下降算法是为了求得θ使得代价函数J最小。
对于线性回归,只有一个局部最优解,也就是全局最优解。使用梯度下降算法,只需要求出一个局部最优解即可。
使用梯度下降算法,通过不断的迭代,获得不同的θ,使得代价函数J不断减小。
梯度下降算法求线性回归
令
,则
使用矩阵形式的表达
这些表达需要一些基础的线性代数知识基础。当线性回归模型中x个数很多时,使用上述的表达将会很繁琐,并且在使用梯度计算时,也需要进行循环运算。但当使用矩阵的形式表达时,这一切都会简单很多,在通过matlab等包含矩阵运算发类库时,使用梯度下降进行求解,也将简单很多。
普通形式的模型表达:
矩阵形式的模型表达:
,其中
,
,
.
梯度下降算法迭代过程:
矩阵形式的梯度下降表达:
,另一种形式的表达,化简为
.
实际应用中的一些技巧
mean normalization
在实际的梯度下降算法迭代过程中,为了使得收敛速度较快,需要把特征进行归一化处理,使得特征的取值范围大小相差不大。这里介绍一种归一化方法,均值归一化(mean normalization)
,其中μ表示均值,s表示特征值的范围。
学习率α的选取
通常,当α过小时,会导致收敛速度慢,需要很多次迭代;当α过大时,可能导致不收敛,也可能导致收敛速度慢(发生这种情况概率很小)。在选取α时,一般每次扩大3倍进行选取,比如(0.01,0.03,0.1,0.3,1)这样进行尝试选取合适的α。
另外,对于特征的选择,模型的选择在机器学习中也极为重要,选择合适的特征与合适的模型对最终的预测、分类结果将有着决定性的作用。
通解
对于线性回归,可以使用通解的形式快速获得
,对于统一
通解的证明之后再做,这里只给出通解的形式。
推导:
对比
使用梯度下降算法和通解形式求解线性回归的优缺点。
梯度下降:需要进行归一化处理,需要选取α的值,需要多次迭代才能获得结果。这些对于通解方式都不需要。
通解:当特征数量很多时,求逆很耗时,是o(n^3),而梯度下降则没有这个问题。在当下,一般当n>10^4时用梯度下降算法比较好。
matlab实现
百度网盘:http://pan.baidu.com/s/1ntqYY4h