【学习笔记1】线性回归

这一系列是Coursera课程Machine Learning(吴恩达)的学习笔记。学习旨在了解机器学习的基本原理,掌握基本方法,并争取能结合实际进行一些应用。

线性回归(Linear Regression)属于监督学习(Supervised Learning),是指使用一次多项式对样本数据进行回归拟合的方法。

学习的重点在于使用梯度下降法(Gradient Decent)来最小化代价函数(cost function)。

代价函数的定义为训练集中所有样本对于当前预测函数的预测值与实际值之差的均方和(再除2以方便后续计算)。梯度下降法是一个迭代逼近的过程,其中每一步迭代,都要同时对预测函数中所有的参数\theta做更新,即减去代价函数的偏导数与一个系数的积。其中这个系数称为学习速率(Learning Rate),它的选择不能太大,太大会导致迭代不收敛;同时不要太小,太小会使得收敛速度过慢,影响效率。在实际运行过程中可以尝试以3为倍数的数列1, 0.3, 0.1, 0.03, 0.01......,根据前面少数几次迭代(如50次)的收敛速度(Cost Function函数值减小的速率)来选取合适的Learning Rate。在实际的执行过程中,如果不同特征的取值范围相差较大,还应该对其数据进行标准化,防止某些特征的代价变化掩盖掉另一些特征的代价变化,提高收敛的速率。

与梯度下降法相对应的,还有一种可以用来计算线性回归的方式,称为正则方程(Normal Equation)。这是一种不通过迭代,使用矩阵运算直接得到回归结果的方式。一般在特征维度较少(如小于10,000维)的时候使用,优点在于不用迭代,也就不用选择Learning Rate,不用对数据进行标准化,可以直接得到结果。缺点在于当特征维度较多时由于需要求矩阵的逆,因此执行效率会比较低。在执行的时候也要注意剔除重复的特征维度(如正方形的边长和面积);对于特征维度多于训练样本的,可以尝试去掉一些相对不重要的特征。

课程作业用Octave实现了简单的线性回归实例。

计算代价函数:J = sum((X*theta-y).^2)/(2*m);

特征数据标准化:mu = mean(X); sigma = std(X); X_norm = (X - mu) ./ sigma; %其中mu和sigma作为以后预测要用的参数需要保存。

梯度下降迭代的更新:theta = theta - alpha/m*(X'*(X*theta-y));

正则方程:theta = pinv(X'*X)*X'*y;


你可能感兴趣的:(机器学习)