(二)线性回归模型

房价预测案例


我们有一些关于房屋尺寸 f e e t 2 feet^2 feet2)和房屋价格 p r i c e price price,单位是“千美元”)的数据,假设一位客户问你她的房子能卖多少钱?该如何回答。
我们可以基于现有数据拟合出一条直线(图下蓝色),这条直线就是模型,只要知道客户的房屋尺寸( f e e t 2 feet^2 feet2),根据模型就能预测一个售卖价格(如房屋尺寸=2104,对应预测价格大概350,与真实售卖价格400略有误差)。
房价数据
一些术语与标记符号

  • 训练集(Training set):为了得到模型需要一些数据对模型进行训练,这部分数据就是训练集;
  • 测试集(Testing set):为了评估训练出来的模型好坏,需要一部分未参与训练的数据进行测试,这部分数据称为测试集。

以下是一些常用的数据标记符号

符号解释
x x x输入变量(特征)
y y y输出变量(目标变量)
m m m数据的条数
x ( 1 ) = 2104 , y ( 1 ) = 400 x^{(1)}=2104, y^{(1)}=400 x(1)=2104,y(1)=400第1条数据的x为2104,第1条数据的y为400
( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)) i i i条数据
y ^ \hat{y} y^模型预测输出的值
w w w模型参数(权重系数)
b b b模型参数(截距)
f f f模型(函数)

机器学习中的符号标记

线性回归(Linear Regression)


模型学习过程:
算法从训练数据集中学习到一个函数 f f f(或叫假设) f f f的作用是只要给它一个 x x x,它就输出一个 y ^ \hat{y} y^(又叫估计值或预测值)。比如给 f f f输入一个房屋尺寸,它就能输出一个房屋价格(预测价格)。 f f f可以写成:
f w , b ( x ) = w x + b f_{w,b}(x)=wx+b fw,b(x)=wx+b
f f f为图中蓝色线,这个函数(模型)又叫线性回归,当 x x x只有一个特征时(这里只有房屋尺寸)称为单变量线性回归
模型的定义
我们知道了 f f f的作用和生成它的过程,但是这个公式中的 w w w b b b到底是如何计算出来的呢?

代价函数 (Cost Function)


上面可知 f f f蓝色线)是通过许多条训练数据 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))计算得到,而整个计算可转化为一个优化问题
假设我们有未知参数 w w w b b b,一个 x ( i ) x^{(i)} x(i)代入 f w , b f_{w,b} fw,b中就可以得到一个 y ^ ( i ) \hat{y}^{(i)} y^(i),所以我们自然会想到要使原来的 y ( i ) {y}^{(i)} y(i)和估计值 y ^ ( i ) \hat{y}^{(i)} y^(i)越接近越好(因为 y ^ ( i ) \hat{y}^{(i)} y^(i) f w , b ( x ( i ) ) f_{w,b}(x^{(i)}) fw,b(x(i))生成,与 y ( i ) {y}^{(i)} y(i)越接近说明模型越准确)。因此我们定义一个函数叫损失函数(loss function)代表 y ( i ) {y}^{(i)} y(i)和估计值 y ^ ( i ) \hat{y}^{(i)} y^(i)的接近程度(误差):
L ( w , b ) = ( y ^ ( i ) − y ( i ) ) 2 L(w,b) =(\hat{y}^{(i)}-{y}^{(i)})^2 L(w,b)=(y^(i)y(i))2
平方是防止出现负数(因为接近程度是距离的概念,最小值为0),损失函数是衡量一条数据的误差,若要衡量所有训练集数据的误差,则进一步我们定义代价函数
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 J(w,b) = \frac{1}{2m}\sum_{i=1}^{m} (\hat{y}^{(i)}-{y}^{(i)})^2 J(w,b)=2m1i=1m(y^(i)y(i))2
代价函数的推导
一些解释:

  • 求和符号代表所有点接近程度的衡量;
  • 除以m是计算平均误差(防止随着m的增大距离总和变大);
  • 除以1/2是方便后续求导运算,不改变函数的本来性质,因为代价函数的目的是求当取最小值时对应的 w w w b b b,而不是求最小值多少。

优化问题最后变成了求解 m i n i m i z e J ( w , b ) minimizeJ(w,b) minimizeJ(w,b)时对应的 w w w b b b

直观理解(令 b = 0 , f w ( x ) = w x b=0,f_{w}(x) = wx b=0,fw(x)=wx,方便在二维图像展示 w w w J J J的关系):
优化流程和简化的f

从下图可以看出原数据给定三个点(1,1),(2,2),(3,3),w取不同值时J对应的取值,当w=1时J达到最小值,也就是此时模型与原数据完美拟合(J=0)

w w w J J J
-0.5 J ( − 0.5 ) = 1 2 ∗ 3 ( 1. 5 2 + 3 2 + 4. 5 2 ) ≈ 5.25 J(-0.5)=\frac{1}{2*3} (1.5^2+3^2+4.5^2)\approx 5.25 J(0.5)=231(1.52+32+4.52)5.25
0 J ( 0 ) = 1 2 ∗ 3 ( 1 2 + 2 2 + 3 2 ) ≈ 2.3 J(0)=\frac{1}{2*3} (1^2+2^2+3^2)\approx 2.3 J(0)=231(12+22+32)2.3
0.5 J ( 0.5 ) = 1 2 ∗ 3 ( 0. 5 2 + 1 2 + 1. 5 2 ) ≈ 0.58 J(0.5)=\frac{1}{2*3} (0.5^2+1^2+1.5^2)\approx 0.58 J(0.5)=231(0.52+12+1.52)0.58
1 J ( 1 ) = 1 2 ∗ 3 ( 0 2 + 0 2 + 0 2 ) = 0 J(1)=\frac{1}{2*3} (0^2+0^2+0^2)= 0 J(1)=231(02+02+02)=0

给定数据下不同w取值和J的关系图,随着w的变化

当加入参数b后可以在三维空间可视化代价函数 J J J 和参数 w , b w,b w,b的关系

参数w,b对应的代价函数
同样给定一批数据可以观察到不同 w , b w,b w,b变化时对应的 J J J的变化。右图为从上往下看三维图的视角(等高线图),每一个圆圈代表J的值,圆圈越小J越小。
参数w,b对应的轮廓图
w=-0.15,b=800的轮廓图

w=0,b=360的轮廓图
w=0,13,b=71的轮廓图

梯度下降算法(Gradient Descent Algorithm)


梯度下降算法是解决优化问题的最常用算法,具体的算法步骤为:

  1. 随机设置 w w w b b b的值;
  2. 持续改变 w w w b b b的值以减少 J J J的值 ;
  3. 直到到达 J J J的最小值时,此时的 w w w b b b就是最优模型参数。

数学公式
重复以下步骤直到收敛 J J J固定在某个数值附近),其中 α \alpha α学习率(learning rate) ∂ J ( w , b ) ∂ w \frac{\partial J(w,b)}{\partial w} wJ(w,b)称为 w w w偏导数(Derivative)
w = w − α ∂ J ( w , b ) ∂ w , b = b − α ∂ J ( w , b ) ∂ b w = w-\alpha \frac{\partial J(w,b)}{\partial w},b = b-\alpha \frac{\partial J(w,b)}{\partial b} w=wαwJ(w,b),b=bαbJ(w,b)

需要注意的是每次迭代 w w w b b b必须同时更新,而不是先后更新,详细写法:
t m p w = w − α ∂ J ( w , b ) ∂ w , t m p b = b − α ∂ J ( w , b ) ∂ b tmpw = w-\alpha \frac{\partial J(w,b)}{\partial w},tmpb = b-\alpha \frac{\partial J(w,b)}{\partial b} tmpw=wαwJ(w,b),tmpb=bαbJ(w,b)
update:
w = t m p w , b = t m p b {\color{red} w=tmpw,b=tmpb} w=tmpw,b=tmpb

直观理解:你站在山坡的任意一点,沿着坡度的方向一步一步往山下走,直到走到山底位置。这里的 w , b w,b w,b就是你在山坡的位置,偏导数定义了坡度的方向, α \alpha α就是每一步迈的多大,山底位置就是 m i n J ( w , b ) minJ(w,b) minJ(w,b)。收敛(Convergence)就是判断已经走到了山底。

注意:为什么每次迭代需要减去梯度(偏导数)?
因为对于凸函数Convex(碗状)
w w w在曲线右边时,梯度是正的,减去梯度后的 w w w变小,对应的 J J J也更小
w w w在曲线左边时,梯度是负的,减去梯度后的 w w w增加,对应的 J J J同样变小
所以不管初始化的 w w w在什么位置,每次迭代减去梯度都会使 J J J变小(如下图):
减去梯度的理解

学习率(learning rate) α \alpha α

  • 当学习率 α \alpha α设置过小时,梯度下降算法会跑的很慢
  • 当学习率 α \alpha α设置过大时,梯度下降可能不会收敛(反复横跳)

最优的方法是随着算法的不断迭代,动态调整 α \alpha α的值(后续文章讨论)。
在这里插入图片描述

运用梯度下降算法求解单变量线性回归参数( w , b w,b w,b)


综合上述讨论求解线性回归的参数 w w w b b b:

  1. 构造代价函数 J ( w , b ) = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) 2 J(w,b)=\frac{1}{2m}\sum_{i=1}^{m}({\color{red} f_{w,b}(x^{(i)})} -y^{(i)})^{2} J(w,b)=2m1i=1m(fw,b(x(i))y(i))2,其中 y ^ ( i ) = f w , b ( x ( i ) ) = w x ( i ) + b \hat{y}^{(i)}={\color{red} f_{w,b}(x^{(i)})}=wx^{(i)}+b y^(i)=fw,b(x(i))=wx(i)+b
  2. w w w b b b对应的偏导数(梯度) ∂ J ( w , b ) ∂ w = 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) x ( i ) , ∂ J ( w , b ) ∂ b = 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) \frac{\partial J(w,b)}{\partial w}=\frac{1}{m}\sum_{i=1}^{m}({\color{red} f_{w,b}(x^{(i)})} -y^{(i)})x^{(i)},\frac{\partial J(w,b)}{\partial b}=\frac{1}{m}\sum_{i=1}^{m}({\color{red} f_{w,b}(x^{(i)})} -y^{(i)}) wJ(w,b)=m1i=1m(fw,b(x(i))y(i))x(i),bJ(w,b)=m1i=1m(fw,b(x(i))y(i))
  3. 运用梯度下降算法迭代求解,先随机设置 w w w b b b的值,然后 t m p w = w − α 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) x ( i ) tmpw = w-\alpha \frac{1}{m}\sum_{i=1}^{m}({\color{red} f_{w,b}(x^{(i)})} -y^{(i)})x^{(i)} tmpw=wαm1i=1m(fw,b(x(i))y(i))x(i) t m p b = b − α 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) tmpb = b-\alpha\frac{1}{m}\sum_{i=1}^{m}({\color{red} f_{w,b}(x^{(i)})} -y^{(i)}) tmpb=bαm1i=1m(fw,b(x(i))y(i))update w = t m p w , b = t m p b {\color{red} w=tmpw,b=tmpb} w=tmpw,b=tmpb
  4. 每次迭代后观察 J J J是否收敛,如果达到收敛,则此时对应的 w w w b b b的值就是线性回归方程的最优参数,随着迭代次数的增加,Cost J J J逐渐收敛到一个固定值(如下图)
    在这里插入图片描述

可视化迭代步骤
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值