李宏毅《机器学习》| 回归

目录

一、定义

二、模型步骤

step1:模型假设,选择模型框架(线性模型)

1. 一元线性模型

2. 多元线性模型

step2:模型评估,判断模型的好坏(损失函数)

step3:模型优化,筛选最优的模型(梯度下降)

梯度下降(Gradient Descent)

三、模型验证

四、模型优化

五、过拟合(Over Fitting)

六、步骤优化

step1:合并模型

step2:输入更多特征

step3:加入正则化项(Regularization)


一、定义

输入特征 x,通过找到的函数function输出数值Scalar

应用举例:

  • 股市预测(Stock market forecast)
    • 输入:过去10年股票的变动、新闻咨询、公司并购咨询等
    • 输出:预测股市明天的平均值
  • 自动驾驶(Self-driving Car)
    • 输入:无人车上的各个sensor的数据,例如路况、测出的车距等
    • 输出:方向盘的角度
  • 商品推荐(Recommendation)
    • 输入:商品A的特性,商品B的特性
    • 输出:购买商品B的可能性
  • Pokemon精灵攻击力预测(Combat Power of a pokemon):
    • 输入:进化前的CP值、物种(Bulbasaur)、血量(HP)、重量(Weight)、高度(Height)
    • 输出:进化后的CP值
    • 下面的模型也以该例为基础进行展示

二、模型步骤

step1:模型假设,选择模型框架(线性模型)

1. 一元线性模型

即模型为单个输入特征,线性模型假设为y=b+\omega *x

2. 多元线性模型

即模型为多个输入特征,线性模型假设为y=b+\sum \omega_{i} *x_{i}

其中x_{i}表示输入的多个特征,\omega _{i}表示各输入特征的权重,b表示偏移量

图中x^{1}为进化前的CP值,y\hat{}^{1}表进化后的CP值,即输出的Scalarhat{}所代表的是真实值

 上图为10组数据在二维图中的展示,每一个点代表输入进化前的CP值和进化后的CP值

step2:模型评估,判断模型的好坏(损失函数)

我们可以将损失函数(Loss Function)理解成函数的函数,输入的是一个function,输出的是该function不好的程度。对于本例,使用距离即计算进化后的CP值模型预测的CP值之间的的差值来判定模型的好坏,即计算\left ( y\hat{}^{n}-f(x_{cp}^{n}) \right )^{2}的和,和越小,该模型越好。

 \omega和bb在二维坐标图中的情况如下图所示,图中每一个点代表一个function,颜色代表根据所定义的损失函数该function效果好坏的程度。点所处的区域颜色越红越靠近图片下方,代表代表该function的效果越差。

step3:模型优化,筛选最优的模型(梯度下降)

最终需要找到使得损失函数L的值达到最小的f^{*},下图展示的即为该模型中的最优化问题。

我们使用梯度下降法(Gradient Descent)求解该问题,该方法的优点在于只要损失函数L可微分,则该问题就可求解。

梯度下降(Gradient Descent)

先从最简单的只有一个参数\omega入手,定义\omega =arg\mathop {\min }\limits_\omega L(\omega )

 穷举\omega所有可能值,并代入损失函数L中求不同\omega下的损失。随机选取一个初始的\omega ^{0},计算L\omega =\omega ^{0}时的微分(即切线斜率),若小于0(即图中所示情况),说明\omega ^{0}左边的损失较高,右边损失较低,我们需要寻找使得损失函数L达到最小的\omega,所以此时应该增大\omega的值;反之,应减小\omega的值。

寻找下一个\omega时应该增大或减小的量取决于两个因素,一个是L\omega =\omega ^{0}时微分的大小,微分的绝对值越大,代表该点损失函数L的值越大,切线越陡峭,则“迈出的步长”也应该越大;另一个是事先指定的常数项\eta,即学习率(Learning Rate)\eta越大,则“迈出的步长”的幅度即参数更新的幅度越大,学习的速度就越快。

如下图所示,通过该方法找到的\omega是当前的最小值,但可能并不是全局的最小值(取决于损失函数L是否为凸函数,后续更新说明)。

引入2个模型参数\omega和b时, 过程与上述单个参数类似,在这里求微分需要做的是求偏微分。

梯度下降推荐最优模型的过程如下图所示 

 每一条等高线代表损失函数L的值,越靠近中心蓝色的部分代表损失函数L越小。红色箭头代表等高线的法线方向。

梯度下降法目前存在的问题:

三、模型验证

训练集的平均误差

 测试集的平均误差,这才是我们真正关心的

四、模型优化

选择更复杂的模型进行优化,如使用一元二次方程,此时训练集平均误差为15.4,测试集平均误差为18.4

五、过拟合(Over Fitting)

当使用更高次方的模型更进一步优化时,模型平均误差却更大了,模型效果变差。

将每个模型结果视为一个集合,5次方模型\supseteq4次方模型\supseteq3次方模型,所以在4次方模型中找到的最佳模型,肯定不会比5次方模型中找到的更差 

 3次方以上的模型,已经出现了过拟合的现象:

六、步骤优化

将Pokemons种类通过颜色区分,会发现Pokemons种类是隐藏得比较深的特征,不同Pokemons种类影响了进化后的CP值的结果

step1:合并模型

 

 通过对Pokemons种类的判断,将 4个线性模型合并到一个线性模型中 

 此时训练集和测试集的平均误差如下

step2:输入更多特征

将血量(HP)、重量(Weight)、高度(Height)等特征加入模型

 但更多特征和input,数据量没有明显增加,可能仍旧导致overfitting

step3:加入正则化项(Regularization)

\omega越小,则function越平滑,function输出值与输入值相差不大。b的值接近0 ,对曲线的平滑越没有影响。

平滑的function对输入较不敏感,当数据中含有噪音时,一个平滑的function受到的影响较小。在很多应用场景中并不是\omega越小模型越平滑越好,但经验值告诉我们\omega越小大部分情况下都比较好。

\lambda越大,代表考虑smooth越多,找到的function越平滑,越倾向于考虑\omega本来的数值,考虑error越少,此时在训练集上的平均误差越大,但是在测试集上的误差却可能较小。所以我们希望找到一个较为平滑的function,但是又希望\lambda不要太大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值