线性回归是学习机器学习过程中最先接触到的一个算法,这里写一下自己在学习过程中的一些理解。
回归与梯度下降
回归在数学上来说就是给定一个点集,能够用一条曲线去拟合它,如果这条曲线是一条直线,那就称为线性回归,如果曲线是一条二次曲线,就被称为二次回归。回归还有很多变种,比如逻辑回归。
下面举一个简单的例子。现在要做一个房屋价值的评估系统,一个房屋价值来自很多地方,比如说面积、房间的数量、地段等,这些影响房屋价值的变量称为特征(feature),feature在机器学习中是一个重要的概念,这里为了简单我们假设房屋的价值是单变量影响的,就是房屋的面积。假设房屋的销售数据如下:
面积(平方米) | 销售价值(万元) |
123 | 250 |
150 | 320 |
87 | 160 |
102 | 220 |
对于这个表格我们可以做出一个图,x轴表示房屋的面积,y轴表示房屋的售价,如下:
如果来了一个新的面积,假设在销售记录中没有,我们该怎么办?
我们可以用一条曲线去尽量准的拟合这些数据,然后当有新的数据输入时,我们可以将曲线上这个点对应的值返回。
首先给出一些概念和常用的符号。
房屋销售记录表:训练集(training set或者训练数据(training data),是我们流程中输入的数据,一般记为X。
房屋销售价钱:输出数据,一般称为y
拟合函数(或者称为假设或者模型):一般写作y=h(x)
回归方法可以解决特征多维,结果是一维多离散值或者一维连续值的问题。
线性回归
线性回归假设特征和结果满足线性关系,线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由前面的参数体现,而且每个特征变量可以首先映射到一个函数,然后再参与线性计算。
我们用X1,X2....Xn去描述feature里面的分量,比如x1=房间的面积,x2=房间的朝向等等,我们可以做出一个估计函数:了
在这里称为参数,在这里的意思是调整feature中每个分量的影响力,为了方便表示我们令X0=1,就可以用向量的形式表示了。
我们的程序需要一个机制去评估是否比较好,所以需要对于我们做出的h函数进行评估,一般这个函数被称为损失函数(loss function) 或者错误函数(error function),这里我们的错误函数如下:
我们的目标是最小化J(),这个错误估计函数就是去对x(i)的估计值与真实值y(i)差的平方和,前面乘上1/2是为了在求导的时候这个系数就不见了。
至于如何调整使得J(
)取得最小值有很多方法,其中有最小二乘法,这是一种完全的数学描述方法,此外还有梯度下降法。
梯度下降法
在选定线性回归模型后,只需要确定参数,就可以将模型用来预测。然后
需要在J(
)最小的情况下才能确定,因此问题转化为求极小值的问题,使用梯度下降法。梯度下降法最大的问题是求得的有可能是全局最小值,这与初始值的选取有关。梯度下降法按照下面的流程进行:
- 首先对
赋值,这个值可以是随机的,也可以让
是一个全零的向量。
- 改变
的值,使得J(
)按照梯度下降的方法进行减少。
梯度方向由J()对
的偏导数确定,由于是求极小值,因此梯度方向是偏导数的反方向,结果为
迭代更新的方法有两种,一种是批梯度下降,也就是对全部的训练数据求误差后再对进行更新,另一种是增量梯度下降,每扫描一步就对
进行更新。前一种方法能够不断收敛,后一种方法可能不断在收敛处徘徊。
一般来说,梯度下降法的收敛速度是比较慢的。
另一种直接计算结果的方法是最小二乘法。
最小二乘法
将训练特征表示为X矩阵,结果表示为y向量,结果仍是线性回归模型,误差函数不变。那么可以直接由下面的公式得出
但这种方法要求X是列满秩的,而且求矩阵的逆比较慢。
下面讲一下误差函数围殴平方和的概率解释
假设根据特征的预测结果与实际结果有误差,那么预测结果
和真实结果
满足下式:
一般来讲,误差满足平均值为0的高斯分布,也就是正态分布,那么x和y的条件概率就是
这样就估计了一条样本的结果概率,然后我们期待的是模型能够在全部样本上预测最准,也就是概率积最大。注意这里的概率积是概率密度函数积,连续函数的概率密度函数与离散值的概率函数不同。这个概率积成为最大似然估计。我们希望在最大似然估计得到最大值时确定,那么需要对最大似然估计公式求导,求导结果为
,这就解释了为什么误差函数要使用平方和。
分类与logistic回归
一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大。如果非要将回归应用到分类问题上,可以使用logistic回归。
logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,即先把特征线性求和,然后使用函数g(z)将假设函数进行预测。g(z)可以将连续值映射到0和1上。
logistic回归的假设函数如下,线性回归假设函数只是。
logistic回归用来解决0/1问题,也就是预测结果属于或者1的二值分类问题。这里假设了二值满足伯努利分布,也就是
当然假设它满足泊松分布、指数分布等等都可以,只是比较复杂,后面会提到线性回归的一般形式。与选用误差函数为平方和的概率解释一样,仍然要求最大似然估计,然后求导得到迭代公式结果跟之前的一样。
数学推导
1:函数模型
写成向量形式:
=
其中
假设有训练数据,为了方便我们写成矩阵的形式,