线性回归

这篇博客介绍了线性回归的概念,通过梯度下降法和正规方程训练模型,并探讨了特征缩放和正则化在防止过拟合中的作用,旨在预测未知房屋的售价。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 问题引入

 已知一批房屋销售数据,     

面积()价格(万元)
2104460
1416232
1534315
......
852178

对于一间面积为1250(该数据不在已知数据内)的房屋,我们该如何预测它的售价呢?一种直观的想法就是利用一条直线去拟合上述数据,然后对于新的数据,可以将直线上这个点对应的值输出作为预测值。




2. 概念和符号

训练样例(training example):一条房屋销售记录,用表示;其中表示特征向量,表示样例的值。当样例有多个特征时(假设有n个特征),有

训练集(training set):房屋销售记录集合,用X表示;,m为训练样例数;


3. 线性回归

线性回归假设特征和结果满足线性关系
 其中
 
,则有
这就是线性回归的模型。它的主要特点是假设函数既是变量的线性方程也是参数的线性方程。


4. 训练模型

定义代价函数(Cost Function, 也叫Squared Error Function)
,表示假设函数在训练集上拟合的越好。那么如何选择,使得小呢?

4.1 Gradient Descent梯度下降法)
starts with some ;
repeats until convergence {
(Simultaneously update )
}
我们还是以房屋销售为例来理解这个算法。先写出它的代价函数
下图是它的函数图像

我们再作出它的等高图


假设我们初始化为图中小红叉所在的点,那么随着算法的进行,将沿着下图所示的路径移动,并最终移动到最低点。
上面只是介绍了梯度算法的工作过程,那么它为什么可以有效工作呢?我们知道,对的偏导,其实就是计算所在维度的斜率(或者讲在任意一点的斜率沿所在坐标轴的分量)。为了看的更清楚,我们以一个二次函数为例,

位于最低点左边(小)时,斜率为负,此时为正,将变大,即靠近;
位于最低点右边(大)时,斜率为正,此时为负,将变小,仍然向靠近;
在梯度下降算法中还有一个重要的参数(> 0)(Learning Rate),它控制了学习的速度。
较大时,可能并不总是变小(overshootting,如下图所示),最终可能不会收敛;

较小时,收敛的速度会比较慢,最终可能需要较多的迭代才能收敛。由于在迭代的过程中越来越小,因此在选择好后并不需要在学习的过程中调整的值。
当然,梯度下降法找到的只是一个局部最小值而并不一定是全局最小值,这取决于的初始值。下面的图说明选取的初值不同,最终到达的最优点也可能不同。

不过庆幸的是线性回归的代价函数一般都是凸函数,通过梯度下降的方法通常都可以找到最小值点。
4.2 Normal Equation
, 其中

它的推导还是比较简单的。我们期望最好的情况是,表明假设函数与训练数据集完全一致,此时有
两边同时乘以

注意到是一个方阵,等式两边再同时乘以这个方阵的逆矩阵可以得到

于是就可以得到

细心的读者可能会发现一个问题:如果按照上述的推导过程,最终会有对所有的都成立。但在机器学习的过程中,这往往是不可能的。那么上述过程有什么不对呢?对的,的逆矩阵不一定存在,但这并不影响Normal Equation正常工作。在Octave里,即使一个矩阵的逆矩阵不存在,调用它的pinv函数依然可以得到它的伪逆矩阵。至于pinv是怎样实现的,作者也没有探究过,有兴趣的读者可以去研究下。

5. Feature Scaling

还是考虑房屋销售的例子,现在我们加入房间数目这个特征,
面积(
房间数(间)
售价(万元)
2104
5
460
1416
4
232
1534
4
315
...
...
...
852
3
178









如果我们写出它的代价函数并作出它的等高图,
可以看到由于样例在两个特征上取值范围的差异,等高线几乎都是扁平的椭圆,这将导致梯度下降算法收敛的非常缓慢。为了克服这个缺点,我们可以对每一个特征进行缩放,使它们处于近似的数量级。缩放的方法可以是

其中是特征向量第j维的平均值,是特征向量第j维的标准差。

6. Regularization

如上图,假设training set有5个点,我们可以构造很多个假设函数模型,比如
(1) (上图红线)
(2) (上图黑线)
(3) (上图绿线)
如果单从代价函数的角度看,无疑是最好的假设,因为它与training set完全拟合,代价几乎为0;但是这个模型过于复杂,对新数据的预测也很难与实际值符合,这是一个overfitting的例子;而过于简单,它的预测值与实际值存在较大的偏差。显然,才是我们最好要的模型。对于模型过于简单的问题,我们可以通过增加样例特征的方法来解决。那么,怎样避免模型过于复杂的问题呢?
我们把代价函数修改一下,为它增加一个regularization部分

上式中的第1部分要求假设函数尽量拟合训练集,而第2部分要求尽量小,以使假设函数尽量简单,避免出现overfitting。是regularization parameter,是一个权重因子。大,表示我们希望模型简单,这时会有大多数为0(或者接近0);小,表示我们希望模型尽量拟合训练数据集。

6.1 Gradient Descent with Regularization
starts with some ;
repeats until convergence {
(Simultaneously update )
}

6.2 Normal Equation with Regularization


7. 总结

Gradient Descent需要选择,需要多次迭代;而Normal Equation需要计算一次逆矩阵。当样例的特征比较多(n比较大时),使用Normal Equation会非常慢。一般情况下,当m >> n时,我们可以选择使用Normal Equation。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值