机器学习系列(一)——回归模型
回归(Regression)模型是指机器学习方法学到的函数的输出是连续实数值,回归模型可以用于预测或者分类,这篇博客中主要整理用于预测的线性回归模型和多项式回归模型。
线性回归
按照机器学习建模的三个步骤,首先需要确定选用的模型,这里就是线性回归(Linear regression)模型,然后将其形式化表达:
其中,x1,x2,⋯,xn是样本数据的n维属性描述,每一组w和b能确定一个不一样的h(x),w和b的所有取值组合就构成了可选函数集合,我们的任务就是要从这个函数集合中选出“最好”的那个函数。
对于训练数据集D描述如下:
其中)是样本的n维特征向量表示,y(i)∈R是样本标记。线性回归的目标是学得一个线性函数以尽可能准确的预测实值输出标记。
因此我们需要确定一个衡量标准用以度量一个函数的好坏,也就是选择合适的损失函数(Loss Function)。根据线性回归的目标,我们只需要度量h(x)与y之间的差距,均方误差(Mean Square Error,MSE)是回归任务中最常用的损失函数。
因为hh是关于w,bw,b的函数,所以上式也可以写成
能够让LL最小的w,bw,b所确定的函数就是我们要找的最好的那个函数,记为w∗,b∗
现在需要选择一种优化算法从众多w,b中找出w∗,b∗w∗,b∗,常用的方法有梯度下降算法(Gradient Descent)和最小二乘法(Least Square Method,LSM)。
梯度下降法
对多元函数的每一个变量分别求∂∂偏导数,并将结果写成向量形式,就是梯度。比如函数f(x,y),分别对x,y求偏导数,(∂f/∂x,∂f/∂y)^T就是梯度。从几何意义上讲,梯度是函数在该点变化最快的方向,因此沿着梯度的反方向,会更加容易找到函数的最小值点。下图是梯度下降的一个直观解释
比如我们在一座大山的某个位置想要到达山脚下,由于我们不知道怎么下山,于是决定走一步算一步,每次走到一个位置后,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的方向向下走,直到走到梯度为零的位置。当然这样走下去,有可能不能走到山脚,而是到了某一个局部山峰低处。
因此梯度下降不一定能够找到全局最优解,有可能是一个局部最优解,如果损失函数是凸函数,梯度下降算法就一定能找到全局最优解。
梯度下降算法步骤如下:
随机选取一个初始值w^0
计算,其中ηη是学习速率,决定了每一次调整的步长
迭代第二步多次直至梯度为零,或者损失达到允许范围,或者达到迭代次数。
最小二乘法
同样可以采用最小二乘法来对w,b进行估计,最小二乘法直接求解得到解析解。为了方便讨论,我们把w,b合并组成一个向量),同时给每一个样本增加一个恒定属性值1。同时,把数据集D表示成一个m∗(n+1)m∗(n+1)大小的矩阵X
再把标记也写成向量形式y=(y1;y2;⋯;ym),则类似的有
损失函数
对w^求导得到
令上式等于零,可得w^w^最优解的闭式解
其中,(X^TX)−1是(X^TX)的逆矩阵,可能存在(X^TX)不是满秩矩阵,常见的作法是引入正则化(regularization)项。
多项式回归
有些样本数据用线性回归拟合时可能不是特别恰当,这时候可以尝试采用多项式回归,如下图所示,是一个房屋价格与房屋面积的样本数据集,可以明显发现所有数据点并不分布在某一条直线附近,这时候可以考虑尝试二次函数或者三次函数
对于多项式回归,可以将x^2,x^3也看作是一个新的属性,这时多项式回归就和线性回归一样了,因此多项式回归的训练方法依旧和线性回归一样。
需要注意的是,能够选择简单的线性模型时就不要选择相对复杂的多项式模型。