引言:
最近开始学习“机器学习”,早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程。今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子加深学生的印象。
视频链接(bilibili):李宏毅机器学习(2017)
另外已经有有心的同学做了速记并更新在github上:李宏毅机器学习笔记(LeeML-Notes)
所以,接下来我的笔记只记录一些我自己的总结和听课当时的困惑,如果有能够帮我解答的朋友也请多多指教。
1、回归问题的应用
图片1回归问题因为主要输出的是数字,所以可以有以下应用:
- 股票市场预测:输入历史股票数据,预测第二天大盘点位
- 自动驾驶:输出的是方向盘应该转动的角度
- 推荐系统:输出购买者购买某商品或阅读某文章的可能性
2、解决回归问题需要了解的一些概念
图片2以宝可梦训练后的CP值(战斗力数值)预测为例,y=b+wxcp这组线性函数就是模型(model),xi 是特征(feature),wi 是权重(weight),b是偏差(bias)
3、宝可梦cp预测项目的分析步骤
- 根据数据选择模型:选择线性模型
- 评估模型中函数的好坏:根据10只宝可梦的训练数据计算出估测误差loss function(如图3)
-
选出最好的函数:即第二步中可以使得loss function中数值最小的函数。这里李老师推荐方法为gradient descent(梯度下降法),因为它是一种对可微函数取最小值的通用解决方案。
图3
图4
4、Gradient descent(梯度下降法)
图5以比较简单的损失函数为例(如图5),梯度下降法就是对该函数的x坐标求导,即曲线在该点的斜率,如果斜率为负,需要向右加载,反之亦然,知道斜率为零,找到极小值或局部最优解(Local optimal)。每次加载的距离被称为步长或学习率。
图6
5、梯度下降法最害怕的事情
如图6左侧,如果损失函数像左侧那样,那么梯度下降法能不能找到全局的最优解就是考验“人品”的事情,但幸运的是,对于线性回归问题,它的损失函数都是凸函数(convex),也就是不会出现像图5或图6左侧那种情况,它只有最小值,没有局部的极小值。
6、如何让损失值降到最小?
图7 图8 图9 图10损失函数取值最小,很多人第一感觉就是增加函数的复杂度。图7到图10分别是二元至五元方程的模型,但可以看出虽然在训练集上损失值变得较小,但测试集上却没有这种趋势,甚至五元方程的模型还表现出了很荒谬的结果。
图117、过拟合
图12上面出现那种荒谬结果的现象被称为过拟合。
8、导入更多数据后结果如何?
图13导入更多数据后发现,很多宝可梦的点并没有落在预测的模型函数曲线上,推测在起初建模的时候忽略了一些重要的特征(feature),当不同类型的宝可梦训练的时候,成长曲线是不同的。
图14增加特征以后如何构建线性模型?见图14。
9、如何防止过拟合?
图15需要重新定义损失函数,有一种方法叫正则化。
因为过拟合往往是因为原有模型空间过大,而正则化就是一种控制模型空间的方法。
网友评论