栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

李宏毅机器学习(2017版)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

李宏毅机器学习(2017版)

目录
  • 1、回归定义
  • 2、模型步骤
    • 2.1、模型假设 - 线性模型
      • 2.2.1、一元线性模型(单个特征)
      • 2.2.2、多元线性模型(多个特征)
    • 2.2、模型评估 - 损失函数
    • 2.3、最佳模型 - 梯度下降
      • 2.3.1、单变量寻优
      • 2.3.2、多变量寻优
  • 3、模型验证与检验
  • 4、优化模型
    • 4.1、四个种类的二元线性模型是合并到一个线性模型中
    • 4.2、多输入特征分析(放大招)
    • 4.3、加入正则化(平滑操作)
  • 5、总结

1、回归定义

Regression(回归)就是找到一个函数 functionfunction ,通过输入特征 或者特征系列xx,输出一个数值 ScalarScalar。
例子:Pokemon精灵攻击力预测(Combat Power of a pokemon):
输入:进化前的CP值、物种(Bulbasaur)、血量(HP)、重量(Weight)、高度(Height)
输出:进化后的CP值

2、模型步骤 2.1、模型假设 - 线性模型 2.2.1、一元线性模型(单个特征)

以一个特征 x c p x_{cp} xcp​为例,线性模型假设   y = b + w ⋅ x c p y = b + w·x_{cp}  y=b+w⋅xcp​,所以 w w w和 b b b可以猜测很多模型。x表示输入的对象,下标cp表示对象的一个特征。

2.2.2、多元线性模型(多个特征)

输入多个特征,例如,进化前的CP值、物种(Bulbasaur)、血量(HP)、重量(Weight)、高度(Height)等,特征会有很多。

由此,假设模型为:
线性模型 Linear model: y = b + ∑ w i x i y = b + sum w_ix_i y=b+∑wi​xi​
​ x i x_i xi​:就是各种特征(fetrure) x c p , x h p , x w , x h , ⋅ ⋅ ⋅ x_{cp}, x_{hp}, x_w, x_h,··· xcp​,xhp​,xw​,xh​,⋅⋅⋅
w i w_i wi​:各个特征的权重(weight) w c p , w h p , w w , w h , ⋅ ⋅ w_{cp},w_{hp},w_w,w_h,·· wcp​,whp​,ww​,wh​,⋅⋅
b b b:偏移量(bias)

2.2、模型评估 - 损失函数

手机训练数据,共十组数据,定义 x 1 x^1 x1是进化前的CP值, y ^ 1 hat{y}^1 y^​1进化后的CP值, ^ hat{} ^ 所代表的是真实值每一个点 ( x c p n , y ^ n ) (x_{cp}^n,hat{y}^n) (xcpn​,y^​n),对应着进化前的CP值和进化后的CP值。


使用损失函数(Loss function)来衡量模型的好坏,统计10组数据真实值与预测值差值平方和 ( y ^ n − f ( x c p n ) ) 2 (widehat{y}^{n}-f(x_{cp}^{n}))^{2} (y ​n−f(xcpn​))2的和,和越小模型越好。

寻求最小的损失函数(Loss function)对应的(w,b)。

2.3、最佳模型 - 梯度下降

已知损失函数 L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p ) ) 2 L(w,b)= sum _{n=1}^{10}(widehat{y}^{n}-(b+w cdot x_{cp}))^{2} L(w,b)=∑n=110​(y ​n−(b+w⋅xcp​))2,寻找 w ∗ , b ∗ = a r g min ⁡ L ( w , b ) w^{*},b^{*}=arg min L(w,b) w∗,b∗=argminL(w,b)

2.3.1、单变量寻优

定义 w ∗ = a r g min ⁡ i n L ( w ) w^{*}=arg min inL(w) w∗=argmininL(w),通过梯度下降寻找到关于w的局部最优解(非全局最优,寻找的点为极值非最值)
下图中 w 0 w^0 w0为随机选取初始点;

2.3.2、多变量寻优

引入多个模型参数,求偏微分:

优化过程可视化:

可能存在的问题:
梯度消失;
梯度爆炸…

3、模型验证与检验

使用训练集和测试集的平均误差来验证模型的好坏 我们使用将10组原始数据,训练集求得平均误差为31.9,如图所示:

然后再使用10组Pokemons测试模型,测试集求得平均误差为35.0 如图所示:

(本人认为使用测试集来验证模型结果,有一点奇怪,但是在本文中,却又比较合理,因为没有具体区分测试集与验证集)

增加模型阶数,会发现出现**过拟合(overfitting)**情况:

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

4、优化模型

通过修改模型处理对象数目来优化模型。例如,Pokemons种类是隐藏得比较深得特征,不同Pokemons种类影响了进化后的CP值的结果。

4.1、四个种类的二元线性模型是合并到一个线性模型中

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

或者转化为合并形式,(引入冲击函数(激活函数))

优化结果:

4.2、多输入特征分析(放大招)

如果希望模型更强大表现更好(更多参数,更多input),将血量(HP)、重量(Weight)、高度(Height)也加入到模型中。

更多特征,更多input,数据量没有明显增加,仍旧导致overfitting。在上图中,可以看出模型默认 x c p x_{cp} xcp​ 是与种类有关,而其他特征与种类无关,(可能是个小BUG,不过完善了肯定继续过拟合)。

4.3、加入正则化(平滑操作)

更多特征,但是权重 ww 可能会使某些特征权值过高,仍旧导致overfitting,所以加入正则化。正则化可以通过调整模型的倾斜程度,调整模型对于噪声的敏感度。

不同正则项的验证与测试结果如下:

  • w 越小,表示 function较平滑的, function输出值与输入值相差不大。
  • 在很多应用场景中,并不是 w越小模型越平滑越好,但是经验值告诉我们 w越小大部分情况下都是好的。
  • b 的值接近于0,对曲线平滑是没有影响
5、总结

Pokemon:原始的CP值极大程度的决定了进化后的CP值,但可能还有其他的一些因素。
Gradient descent:梯度下降的做法;后面会讲到它的理论依据和要点。
Overfitting和Regularization:过拟合和正则化,主要介绍了表象;后面会讲到更多这方面的理论
解决过拟合方法有很多,除了正则化,还有earlystopping等,具体我也有点忘了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012456.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号