机器学习系列(2)——回归

定义

Regression就是找到一个函数function,通过输入特征x,输出一个数值scalar

应用举例

  • 股市预测(Stock market forecast)
    - 输入:过去10年的股票变动、新闻资讯、公司并购资讯等
    - 输出:预测股市明天的平均值
  • 自动驾驶(Self-driving Car)
    - 输入:无人车上的各个sensor的数据,例如路况、测出的车距等
    - 输出:方向盘的角度
  • 商品推荐(Recommendation)
    - 输入:商品A的特性,商品B的特性
    - 输出:购买商品B的可能性

模型步骤

  1. 模型假设,选择模型框架(线性模型)
  2. 模型评估,如何判断众多模型的好坏(损失函数)
  3. 模型优化,如何筛选最优的模型(梯度下降)

模型假设——线性模型

一元线性模型(单个特征):
以一个特征 x c p x_{cp} xcp为例,线性模型假设 y = b + w ⋅ x c p y=b+w·x_{cp} y=b+wxcp,所以w和b可以猜测很多模型:
f 1 : y = 10.0 + 9.0 ⋅ x c p f1:y=10.0+9.0·x_{cp} f1:y=10.0+9.0xcp
f 2 : y = 9.8 + 9.2 ⋅ x c p f2:y=9.8+9.2·x_{cp} f2:y=9.8+9.2xcp
f 3 : y = − 0.8 − 1.2 ⋅ x c p f3:y=-0.8-1.2·x_{cp} f3:y=0.81.2xcp
. . . ... ...
多元线性模型(多个特征)
在实际应用中,输入特征肯定不止 x c p x_{cp} xcp这一个。特征会有很多。所以我们假设线性模型Linear model y = b + ∑ w i ⋅ x i y=b+\sum w_i·x_i y=b+wixi

  • x i x_i xi:就是各种特征(feature)
  • w i w_i wi:各个特征的权重
  • b b b:偏移量

模型评估——损失函数

考虑单个特征: x c p x_{cp} xcp
机器学习系列(2)——回归_第1张图片
通过真实数据,使用损失函数(Loss function)来衡量模型的好坏,统计原始数据 ( y ^ n − f ( x c p n ) ) 2 (\hat{y}^n-f(x^n_{cp}))^2 (y^nf(xcpn))2的和,和越小模型越好。
L ( f ) = ∑ n = 1 10 ( y ^ n − f ( x c p n ) ) 2 L(f)=\sum ^{10}_{n=1}(\hat{y}^n-f(x^n_{cp}))^2 L(f)=n=110(y^nf(xcpn))2,将 [ f ( x ) = y ] [f(x)=y] [f(x)=y] [ y = b + w ⋅ x c p ] [y=b+w·x_{cp}] [y=b+wxcp]代入得到最终定义损失函数
Loss function: L ( f ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p ) ) 2 L(f)=\sum ^{10}_{n=1}(\hat{y}^n-(b+w·x_{cp}))^2 L(f)=n=110(y^n(b+wxcp))2
将w,b在二维坐标图中展示为:
机器学习系列(2)——回归_第2张图片

  • 图中每一个点代表着一个模型对应的w和b
  • 颜色越深代表模型更优

最佳模型——梯度下降

考虑单个特征: x c p x_{cp} xcp
已知损失函数为 L ( f ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p ) ) 2 L(f)=\sum ^{10}_{n=1}(\hat{y}^n-(b+w·x_{cp}))^2 L(f)=n=110(y^n(b+wxcp))2,需要找到一个令结果最小的 f ∗ f^* f,在实际的场景中,我们遇到的参数肯定不止w,b,先从简单的只有一个参数w入手,定义 w ∗ = a r g   min ⁡ x L ( w ) w^*=arg\,\min_xL(w) w=argminxL(w)
机器学习系列(2)——回归_第3张图片
这里引入一个概念学习率:移动的步长,即图中的 η \eta η

  1. 随机选取一个 w 0 w^0 w0
  2. 计算微分,也就是当前的斜率,根据斜率来判定移动的方向
    - 大于0向右移动(增加w)
    - 小于0向左移动(减少w)
  3. 根据学习率移动
  4. 重复步骤2和步骤3,直到找到最低点

机器学习系列(2)——回归_第4张图片
步骤1中,我们随机选取一个 w 0 w^0 w0,我们有可能会找到当前的最小值,并不是全局的最小值,这里我们保留这个疑问。
以上解释完单个模型参数w,引入两个模型参数w和b,其实过程是类似的,需要做的是偏微分,过程如下图:
机器学习系列(2)——回归_第5张图片
计算的方法为下图:
机器学习系列(2)——回归_第6张图片
我们通过梯度下降gradient decent不断更新损失函数的结果,这个结果会越来越小,但是此过程还会有其他的问题。

  • 当前最优(Stuck at local minima)
  • 等于0(Stuck at saddle point)
  • 趋近于0(Very slow at the plateau)

机器学习系列(2)——回归_第7张图片
其实在线性模型里面都是一个山谷形状,梯度下降基本上能找到最优点,但是在其他更复杂的模型里面,就会遇到后两个问题了。

验证模型的好坏

不是能画出直线就是线性模型,各种复杂的曲线也可能是线性模型,因为把 x c p 1 = ( x c p ) 2 x^1_{cp}=(x_{cp})^2 xcp1=(xcp)2看作一个特征,其实也就是线性模型。
在训练集上main表现更为优秀的模型,为什么在测试集上反而变差了?这就是模型在训练集上过拟合的问题。
如图所示,每一个模型结果都是一个集合,3次模型 ⊆ \subseteq 4次模型 ⊆ \subseteq 5次模型,所以在4次模型里面知道的最佳模型,肯定不会比5次模型里面找到的更差。
机器学习系列(2)——回归_第8张图片

步骤优化:

  1. 2个input的四个线性模型合并到一个线性模型中
  2. 增加更多的参数,更多的input
  3. 加入正则化
    - w越小,表示function较平滑的,function输出值与输入值相差不大
    - 并不是w越小模型越平滑越好,但是经验值告诉我们w越小大部分情况下都是好的
    - b的值越接近于0,对曲线平滑没有影响
    机器学习系列(2)——回归_第9张图片

你可能感兴趣的:(机器学习与深度学习)