机器学习入门篇 – 线性回归和梯度下降

这篇博客适合机器学习初学者,介绍了线性回归的概念,通过馒头厂的例子解释了线性回归模型和损失函数。然后详细阐述了梯度下降法,包括其原理和在求解线性回归模型参数中的应用。最后提到了梯度下降的局限,并预告了后续将讨论的收敛和极小值问题。
摘要由CSDN通过智能技术生成

本文适合机器学习零基础的同学阅读,从最简单的一元线性回归,讲解机器学习的基本概念,以及最常用的优化算法 - 梯度下降法。

一、线性回归算法

假设一个馒头厂老板娘,招聘了5位会做手工馒头的大师傅,大师傅的水平参差不齐,做出来的馒头大小软硬不尽相同,所用的面粉重量也不同。开张第一天就收到一笔1000个馒头的订单,老板娘需要计算出应该购入多少面粉作为原料。

老板娘统计了5位大师傅所做馒头的数量和相应使用面粉的重量的数据,如下:

馒头数量 所用面粉重量
大师傅1 5 1.5kg
大师傅2 8 1.6kg
大师傅3 12 4kg
大师傅4 16 4.5kg
大师傅5 20 7kg

为了看起来更加直观,勤快的老板娘把统计数据绘制在了坐标纸上,x轴是馒头数量,y轴是面粉重量。

上面列出的五个点,就表示了一个数据集,在机器学习中,也被称为训练集
现在老板娘的任务是根据训练集,预测1000个馒头需要多少面粉。这是一个回归问题。
回归一词指的是我们根据已有的数据集去预测出一个输出值。

为了完成任务,老板娘找来一些符号作为辅助。
m 表示训练集的样本数量。(在这个数据集中,m=5)
x表示输入变量,往往也被称为特征量。(在这里,x = 1000)
y表示输出变量或者目标变量。(在这里,y是1000个馒头的面粉用量)
(x, y) 表示一个训练样本。在上面的坐标图中,一个点对应一个训练样本。

这样一来,训练集的样本就变成了:
(5, 1.5) (8, 1.6) (12, 4) (16, 4.5) (20, 7)
为了表示具体的某个训练样本,老板娘机智地使用上标(i)来表示。
( x ( 1 ) , y ( 1 ) ) (x^{(1)}, y^{(1)}) (x(1),y(1)) 即为(5, 1.5)
( x ( 2 ) , y ( 2 ) ) (x^{(2)}, y^{(2)}) (x(2),y(2)) 即为(8, 1.6)
以此类推。

好了,至此,老板娘有一个重要发现,貌似x和y之间有某种联系啊,她大胆做出一个假设:
y = a ⋅ x y = a \cdot x y=ax
上面的这种x和y之间的联系,叫做映射,在机器学习里面,上面的函数方程,通常被写成:
h ( x ) = θ 0 ⋅ x h(x) = θ_0 \cdot x h(x)=θ0x
h是hypothesis的缩写,这个单词是假设的意思。 θ 0 θ_0 θ0是常量。
不要小看这个函数,我们已经迈出了机器学习的第一步,它是机器学习中最简单的模型,老板娘激动地给它起名为线性回归模型 θ 0 θ_0 θ0称为模型参数

二、损失函数

老板娘兴奋地意识到,找到正确的 θ 0 θ_0 θ0,不就万事大吉了吗?她找来直尺,在坐标纸上画了3条经过原点的直线。
三条直线
我们如何知道哪一条直线是最拟合训练集的呢?
老板娘想到一个好办法:去计算每个点到该条直线的竖直(沿着y轴)距离之和,和越小,表明这条直线越拟合我们的训练集。
在这里插入图片描述
计算点到直线的竖直距离,老板娘简单地考虑直接用 y ( i ) y^{(i)} y(i)减去 h ( x ( i ) ) h(x^{(i)}) h(x(i))
如样本 ( x ( 2 ) , y ( 2 ) ) = ( 8 , 1.6 ) (x^{(2)}, y^{(2)}) = (8, 1.6) (x(2),y(2))=(8,1.6),那么 x ( 2 ) = 8 , y ( 2 ) = 1.6 x^{(2)} = 8,y^{(2)} = 1.6 x(2)=8y(2)=1.6
紫色直线的函数为 h ( x ( i ) ) = 0.3 ⋅ x ( i ) h(x^{(i)}) = 0.3 \cdot x^{(i)} h(x(i))=0.3x(i)
现在要计算样本2到紫色直接的距离, h ( x ( i ) ) − y ( i ) = h ( x ( 2 ) ) − y ( 2 ) = 0.3 ∗ 8 – 1.6 = 0.8 h(x^{(i)}) - y^{(i)} = h(x^{(2)}) - y^{(2)} = 0.3 * 8 – 1.6 = 0.8 h(x(i))y(i)=h(x(2))y(2)=0.381.6=0.8
但是这样的计算方式有问题,样本三计算的结果 h ( x ( 3 ) ) − y ( 3 ) = 0.3 ∗ 12 − 4 = − 0.4 h(x^{(3)}) - y^{(3)} = 0.3 * 12 - 4 = - 0.4 h(x(3))y(3)=0.3124=0.4是负数,这不能表示距离。老板娘马上考虑到给每个计算结果加上绝对值不就可以了吗?但是绝对值的求值是很麻烦的,要分条件处理,最后她想到一个好办法,取平方。
于是老板娘把样本点到预测函数的距离定义如下:

( h ( x ( i ) ) − y ( i ) ) 2 (h(x^{(i)}) - y^{(i)})^2 (h(x(i))y(i))2

那么整个训练集中每个样本点到预测函数的距离可以表示为:

∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 \sum_{i=1}^{m}\left ( h(x^{(i)}) - y^{(i)} \right )^{2} i=1m(h(x(i))y(i))2

老板娘又给这个函数起了一个名字,叫做损失函数。顾名思义,损失函数越小,证明我们选的预测函数越完美。
老板娘推导的损失函数已经很完美,但跟在机器学习中所定义的,还有一点点差别,真正的损失函数如下:

J ( θ 0 ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(θ_0)=\frac{1}{2m}\sum_{i=1}^{m}\left ( h(x^{(i)}) - y^{(i)} \right )^{2} J(θ0)=2m1i=1m(h(x(i))y(i))2

老板娘问:前面加一个 1 2 m \frac{1}{2m} 2m1是起什么作用呢?
首先解释 1 m \frac{1}{m} m1,因为后面 ∑ \sum 求m个数的和,为了取平均数,所以除以样本个数m。
至于 1 2 \frac{1}{2} 21,这个跟我们后面要讲的梯度下降有关,是为了抵消掉取平方的那个上角2。
老板娘又问: J ( θ 0 ) J(θ_0) J(θ0)的J字母是从哪个单词来的呢?这个我也不知道了。
由上面的函数,老板娘进一步推导了 J ( Θ 0 ) J(\Theta_{0}) J(Θ0),如下:

J ( θ 0 ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(θ_0)=\frac{1}{2m}\sum_{i=1}^{m}\left ( h(x^{(i)}) - y^{(i)} \right )^{2} J(θ0)=2m1i=1m

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值