本文将会阐述线性回归相关的概论与知识,涉及方面较多,讲的较细致适合0基础入门,可跳转到想了解的部分查看
目录
一.什么是线性回归模型
线性回归模型是监督学习中的回归问题常用模型,接下来将逐一讲解
(1)监督学习
机器学习分为监督学习及非监督学习:
- 监督学习是训练集(下图右表格)给予输入量x以及输出量y
- 非监督学习是训练集给予输入量x但不给输出量y
如在房价预测中,同时给出了房屋面积x和房屋价格y。在肿瘤恶性预测中,给出肿瘤大小x和是否为恶性肿瘤y。以上例子都为监督学习。
(2)回归问题
监督学习分为回归问题和分类问题:
- 回归问题是输出量y是无限多可能,如上述房价例子中,价格y可以是在一个区间中任一数字
- 分类问题是输出量y是只有一小部分可能,如上述肿瘤恶性例子种,输出y只可能是是恶性,不是恶性两种可能
2.线性回归模型的样子
在上图中,红×代表了训练集中的数据分布。在讨论线性回归的样子前首先要明白的是,无论是构造什么模型,目标永远都是让模型尽可能贴近训练集,以便当我们输入新的数据时,模型能够输出我们想要的结果。据此,我们可以构造出线性回归最简单的样子,如上图的蓝线所示。
二.如何用线性回归解决问题
我们已经构造出了线性回归的样子,式子中有
和
两个参数。我们接下来的目标就剩下寻找到最合适的
和
让我们的模型来符合训练集的分布。而为此需要有能判断模型与训练集吻合度的方式,因此需要用到代价函数(也称成本函数)
1.代价函数
将我们输入模型数据后,得到的输出定义为(y-hat),将其与训练集的输出做减,求和后可得到最简单的代价函数
,
与y相减便得到了模型与训练集的误差值,因为训练集不仅一个数据因此对其求和。当然,我们可以对其取绝对值或平方来保证输出为正。此时我们就能通过判断J的大小来判断模型与训练集的吻合度
(1)线性回归的代价函数
在线性回归模型中,我们采用平方误差函数(m为训练集数据数),同时
等于
,故可以写成
,此时不得不强调。此时的x与y是训练集中每一单个数据,故整个训练集表示为将这m个数据求和。
请注意,此处的1/m是为了避免训练集数据数的多或少对代价函数的影响,1/2是为了后续计算方便约分。
(2)如何减小代价函数的值
代价函数的值代表了模型与训练集的吻合度,且值越低吻合度越高。在代价函数中
,可以发现,我们可以通过调整
和
的值来让我们的代价函数值最小。
我们不妨将b的值固定为常数(此处b=0),故f(x)将会只有这个参数。通过改变
的值来绘制出J的函数
左侧图中有x等于1,2,3三个数据。通过取不同的得到J的值后绘制到右侧图中。可以看出代价函数的图像呈二次函数一些的图像。此时让我们将b加入,我们可得到代价函数的3d图像:
可以看出函数呈一个开口向下的碗形,而在碗底,J的值将最小。
2.梯度下降
想象我们在如上图一样的山顶上,我们该如何最快下到山底?首先我们可以在山顶上环视四周,然后向最陡的方向(即梯度方向)走下一步,再以该点重复以上步骤,直达我们走到山底。这就是梯度下降算法。
(1)线性回归的梯度下降
首先,我们要明白我们是通过不断选取适宜的和
,来进一步改善我们的代价函数使其变得更少。故梯度下降的本质是对
和
进行不断的更新。因此给出以下公式:
其中表示学习率,该值大小在0~1之间。
是J对
求偏导
如上图,在梯度下降途中,将始终会向图像最低处下降,离最低点远时,偏导高,下降快。离最低点近时,偏导低,下降慢。
a.学习率
学习率表示在下降时的步长,
大,下降快,
小,下降慢。但如果
过大,在下降时可能会直接越过最低点到图像另一侧,然后在两侧不断跳跃上升,离最低点越来越远(下图右)。而当
过小会时梯度下降过慢(下图左)。
故选取合适的学习率对梯度下降十分重要
b.梯度下降的化简
在中,
等于
,
中,
等于
故公式可化简为:
在梯度下降时,只需不断这两个步骤
(2)梯度下降的收敛
为了判断梯度下降是否正常运行,我们可以绘制学习曲线:
此曲线的横坐标是参数的更新次数,当学习率选取合适时,学习曲线会逐渐减小最后会区域平缓。此时就称为梯度下降的收敛。
三.梯度下降的优化
1.多维特征
在线性回归中,我们称x为模型中的一个特征。如在房价评估中,房子的平面面积就是评估中的一个特征。大多数时候,我们不仅仅只有一个特征,如在评估房价时,除了看面积外,我们还需看房子中房间的个数等。这时我们便有了多个特征
(1)向量化
为了简化上面公式,我们将和
写成
(
)和
(
)故:
向量化可以使用python中的numpy库。向量化后的式子不仅简洁,同时这也将大大地优化计算的运行时间,这是因为向量化后的计算将会用特殊的硬件进行相加运算,而不是普通式子的相加n-1次。
因此我们就能将上面的所有公式写成向量化形式,如:
请注意,括号外的x并不是向量x
2.特征缩放
让我们来想象下,在房价预测中,平面面积范围可以在一个较大的区间,而房间数却无法从达到几百个房间。这意味这不同的特征之间,范围区间可能差距很大,这将出现下面的问题
右图为代价函数J的等高线图。可以看到这是一个又扁又高的图像。梯度下降过程中将反复跳跃,浪费时间。故我们需要通过特征缩放使两个特征范围区间相近
可以看到特征放缩后的等高图十分圆,梯度下降时能够直捣黄龙。
(2)如何特征放缩
a.除以最大值
将特征除以其最大值来统一区间
b.均值归一化
将特征减去原区间的平均值后除以最大值减最小值
c.z-score标准化
将特征减去平均值后除以标准差
3.特征工程
至此,我们可以看出特征的选取对模型十分重要,那么我们如何进行特征的选取?
在上图中,我们首先选取了房子的长与宽作为特征和
,可以发现将
和
相乘就是房子的面积将其写为
zu作为模型的新特征 。在以上例子中发现,我们可以用已有特征进行组合为新特征
因此我们就可以据此表示更多训练集了
如上图所示,无法很好的吻合训练集。故我们引入
项,相对更贴近训练集,但二次函数抛物线在x逐渐变大时会变小,这显然不符合实际情况,房屋面积越大,价格不可能变小。因此我们再引入
项,避免曲线的下降
对于特征更多内容,请详见机器学习-逻辑回归(Logistic Regression)模型
四.总结
感谢你看到这里,在本文中,我们一起学习了线性回归模型的式子,梯度下降的方法。让我们最后回顾一下,我们的最终目的是为了得到一个模型,当我们输入数据时,能从中得到我们需要的结果,因此我们构造了线性回归模型。而为了让模型更符合训练集,我们构造了代价函数,为了使代价函数最小,我们学习了梯度下降算法。对于梯度下降算法,我们学习了其公式,向量化,特征缩放,特征工程。以上就是本文所有内容