Loading

李宏毅机器学习(二) 回归

video link : https://www.bilibili.com/video/BV1Ht411g7Ef?p=3

回归定义和应用例子

回归定义

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

回归例子

  • 气温预测:
    • 输入:根据过去的天气数据(温度)。
    • 输出:预测明天的温度。
  • 推荐:
    • 输入:用户的对物品的评分,物品之间的关系
    • 输出:预测用户对目标item的评分。
  • 学习成绩预测:
    • 输入:同学过去一学年的成绩,课程信息
    • 输出:预测同学本学期课程的得分。
  • 视频观看时长预测:
    • 输入:用户观看视频时长情况,视频信息。
    • 输出:预测用户对某部视频的观看时长。

模型步骤

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

Step 1:模型假设

一元线性模型(单个特征)

可以想象为一元一次方程,自变量为x(特征),应变量为y(预测结果),b为偏置,整个函数代表了一条直线,拟合能力有限,所以我们考虑增加自变量的个数(输入特征的个数)。

\[y = b + w \cdot x \]

\(w\)\(b\)的不同,方程有无数种可能, 直线也有无数根,最能拟合实际数据的只有一根。

image

二元线性模型(多个特征)

如果数据的分布不是一条直线,我们考虑增加特征,使得我们的方程更加复杂,进而更好的拟合直线。

\[y = b + w_{1}\cdot x_{1}+w_{2} \cdot x_{2} +... +w_{n} \cdot x_{n} \]

整理后得到:

\[y=b + \sum_{i=1}^{n} w_{i}\cdot x_{i}=b+W\cdot X \]

  • \(x_i\) : 就是各种特征(feature),例如预测温度时可能会用到风速,时间,地理位置等。
  • \(w_i\) : 各个特征的权重(weight),各个特征对结果的影响不一样,一般需要加权重以区分。
  • \(b\) : 偏移量、偏置(bias),有时自变量和应变量并非一比一的关系,需要加偏置修正,例如温度的换算。

Step 2: 模型评估-损失函数

一元线性模型:

将特征输入模型,得到模型的预测值\(\hat{y}^{1}\),我们要知道我们模型的好坏,就需要将预测值和真实值进行对比。如何衡量两者之间的差距,我们就需要用到损失函数(loss function).

\[L(f)=L(w,b)=L(\hat{y}-f(x))^n=\sum(\hat{y}-(b+w\cdot x^n))^2 \]

其中\(w\)\(b\)是变量,我们需要找到最优的\(w\)\(b\)使得loss最小。
image

如图所示,图中每一个点都是一个\((w,b)\)的组合,颜色的深度代表将这个\((w,b)\)的组合带入损失函数,得到的损失值大小,颜色越深损失越小,可从图中看出X位置,损失最小。

Step 3: 最佳模型-梯度下降

单参数情景:

  • 如何筛选最优的模型(参数w, b)

    已知损失函数\(L(w, b) = \sum(\hat{y}-(b+w \cdot x))^2\),需要找出使得损失函数最小的参数组合\((w,b)\),也就是找出一个令结果最小的\(f^*\)

    \[\begin{aligned}f^{*} &= \arg \min \limits_{f} L(f)\\w^*, b^*&=\mathop\arg\min\limits_{w,b}L(w,b)\\&=\arg\min\limits_{w,b}\sum(\hat{y}^n-(b+w\cdot x))^2\end{aligned} \]

    对于一个参数\(w\)入手,定义\(w^* = \arg \min_{x} L(w)\),我们需要知道权重\(w\)对Loss的影响,\(w\)取多少时候,Loss最小。

    • 我们可以穷举所有的\(w\),然后观察不同的\(w\)对应的Loss,从而找出使Loss最小的\(w\),但是这样效率太低了。
    • 所以我们采用梯度下降的办法,计算Loss对\(w\)的偏导,代入\(w^0\),根据偏导修正现在的\(w\),修正的程度我们称为学习率,公式中为\(\eta\)\(w^0\)是随机选取的,代表从这个\(w^0\)开始,向最优\(w^*\)靠近(迭代)
    image
    • 大致步骤:
      • 步骤1:随机选取一个 \(w^0\)
      • 步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向
        • 大于0向右移动(增加w)
        • 小于0向左移动(减少w)
      • 步骤3:根据学习率移动
      • 重复步骤2和步骤3,直到找到最低点

多参数情景:

  • 计算偏导

\[\begin{aligned} &L(w, b)=\sum_{n=1}^{10}\left(\hat{y}^{n}-{\left.\left(b+w \cdot x_{c p}^{n}\right)\right)^{2}}\right. \\ &\frac{\partial L}{\partial w}=\sum_{n=1}^{10} 2\left(\hat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)\left(-x_{c p}^{n}\right) \\ &\frac{\partial L}{\partial b}=\sum_{n=1}^{10} 2\left(\hat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)(-1) \end{aligned}\]

  • 根据偏导同时更新多个参数
image 多参数情景跟单参数类似:
  1. 计算多个参数的偏导
  2. 根据偏导同时更新多个参数
  3. 重复1-2步,直到符合要求

效果图:

image
  • Q:线性回归的梯度下降回收敛到局部最优值吗?

    如图中所示,两条收敛路径最终导向的收敛点不同,左边的路径使得模型收敛于局部最优。

image

A:由于线性回归没有局部最优值,所以线性回归的梯度下降不会收敛到局部最优值。

image

优化模型

模型为一次,拟合能力不太够,结果显示模型并不能很好的拟合我们的数据,所以我们尝试加入高次式来拟合我们的数据。
image
加入二次项:

很明显的可以看出吗,模型的拟合能力变强了,error也减小了。

image

这里我们又提出一个新的问题:是不是能画出直线就是线性模型,各种复杂的曲线就是非线性模型? 其实还是线性模型,因为把\(x_{cp}^1=(x_{cp})^2\)看作一个特征,\(y = b + w_1·x_{cp} + w_2·x_{cp}^1\)其实就是线性模型。

过拟合问题

如果我们进一步加入更高次的式子,模型在训练集上的误差将逐渐降低,但在测试集上的误差将反弹。

  • 训练集平均误差【15.4】【15.3】【14.9】【12.8】
  • 测试集平均误差【18.4】【18.1】【28.8】【232.1】

加入3次:
image

加入4次:
image

加入5次:
image

在训练集上面表现更为优秀的模型,为什么在测试集上效果反而变差了?这就是模型在训练集上过拟合的问题。

对于Training Data而言,如图所示,每一个模型结果都是一个集合,5次模型\(\supseteq\) 4次模型\(\supseteq\) 3次模型,所以在5次模型里面找到的最佳模型,肯定不会比4次模型里面找到更差。

image 对于Test Data而言,并非在Training Data上Loss越小的模型,在Test Data上都能表现的更好。这样的现象称为过拟合。 image

我对过拟合的理解:模型很细致的学到了每一个样本的信息,但是并不是每一个样本都符合真实的分布情况,例如有些异常值会将模型引入奇怪的地方,模型拟合了这些异常值之后,对于正常值的预测就会出现较大的误差,这也就是为什么训练集的误差可以缩小到几乎忽略不计,但是测试集的误差反而大到离谱。

优化策略

  • Step 1 优化:将多个线性模型合并到一个线性模型中(均值)
  • Step 2 优化:如果希望模型更强大表现更好(加入更多参数,更多input)
  • Step 3 优化:加入正则化
posted @ 2021-07-13 16:45  c0co  阅读(158)  评论(0)    收藏  举报