笔记|李宏毅老师机器学习课程,视频3回归案例研究

数据科学与人工智能

共 2430字,需浏览 5分钟

 ·

2021-03-27 05:51

 是新朋友吗?记得先点数据科学与人工智能关注我哦~


《学习笔记》专栏·第3篇

 | MLer

1922字 | 5分钟阅读

【数据科学与人工智能】开通了机器学习,大家可以相互学习和交流。请扫描下方二维码,备注:姓名-ML,添加我为好友,诚邀你入群,一起进步

感谢李宏毅老师的分享,他的课程帮助我更好地学习、理解和应用机器学习。李老师的网站:http://speech.ee.ntu.edu.tw/~tlkagk/index.html。这个学习笔记是根据李老师2017年秋季机器学习课程的视频和讲义做的记录和总结。因为这个视频是在Youtube上面,有些朋友可能无法观看,我把它搬运下来放在云盘上面,大家点击阅读原文,就可以直接在手机随时随地观看了。再次,感谢李老师的付出和贡献。

这门课,共有36个视频,每个视频播放的时间不一。我按着视频播放的顺序,观看,聆听和学习,并结合讲义,做学习笔记。我做学习笔记目的有三:

1 帮助自己学习和理解机器学习

2 记录机器学习的重要知识、方法、原理和思想

3 为传播机器学习做点事情

视频3:回归案例研究

一、回归的应用

李老师在视频1介绍回归任务时,举了一个预测PM2.5值的例子。回归有着广泛地应用,比方说,金融市场的股票价格预估系统、无人驾驶领域的方向盘偏转角度系统、电商领域的用户和商品最佳连接的推荐系统等。

二、回归任务:案例研究

李老师以预测宝可梦进化后的CP(Combat Power)值为例来介绍回归任务,非常地有趣味。

2.1 问题定义

它是一个机器学习问题,属于有监督学习范式场景下的回归任务。

找到一个最佳的function,让它满足下图这个关系。


2.2 问题求解

按着机器学习框架三步骤做解答。

第一步:Model(设计和定义function set),如下图:


第二步:Goodness of function (定义和度量function的好坏)

采用了损失函数,用于量化函数的好坏程度,它是第一步所设计的函数的函数,即一个复合函数。我们这里采用常用预估误差平方和函数来表示损失函数。大家,可以想一想,为什么使用预估误差平方和函数做损失函数呢

如下图:


第三步:Best Function (找到适合具体问题的最佳函数),这是个优化问题,如何解决这个问题?我们可以想到穷举法,但是不现实;若是满足数值优化,我们可以采用数值优化的方法,利用线性代数和微积分的里面知识求解;若是不满足数值优化的方法,我们可以采用逼近的方式解决这个优化问题。不管是数值优化,还是非数值优化,梯度下降算法,都可以用来解决这个优化问题。它的弊端,只能找到局部优化的解,而不能找到全局优化的解。但是,在回归任务中,因为损失函数满足凸函数性质,利用梯度下降法,就是找到全局优化的解。

如下图:


梯度下降算法

帮助我们找到Best Function(参数w和b)

1)随机初始化参数值(思考:如何做初始化,除了随机初始化,还有别的方法吗?)

2) 计算损失函数与参数的梯度,数学里面的偏导,表示陡峭程度,值越大,越陡峭

3)参数的更新逻辑,我们发现梯度为负时,需要增加w的值;反之,需要减少w的值,只有这样,损失函数L才会不断趋向于极小值。w更新时有个超参数:学习速率,大家也可以思考一下,学习速率要怎么设定,有哪些方法可以来做这个事情。

我们可以发现,w的更新与梯度的值和学习速率紧密相关。


例子1:一个参数w的梯度下降算法


例子2:两个参数w和b的梯度下降算法


梯度是什么呢?就是损失函数L对个参数的偏导数值,如下图:


两个参数做梯度下降算法的等高线的可视化

梯度下降算法的局限性

非凸函数,局部优化值

我们利用梯度下降法找到一个最佳的function后,我们会关心和在意它的泛化能力,在测试集(没有参与模型训练的数据集或者新的数据集)上面的表现。根据训练误差和测试误差,redesign一系列模型,并进行对比分析,以找到最好的模型,这个属于模型选择所研究的问题。如下图:

模型在设计和重设计的过程中,会遇到欠拟合和过拟合的现象。前者表示,模型在训练集上表现效果不理想,后者表示模型在训练集上表现效果可以,但是在测试集上面表现效果不佳的现象。

如何解决过拟合问题呢?李老师介绍了正则化技术



不同正则化系数(惩罚系数)下的模型的训练误差和测试误差,对比分析,以确定最佳的模型。如下图:


李老师,在介绍模型重新设计的时候,谈到了这些做法,总结如下:

1)多项式模型的应用

2)分层构建模型的思想,引入信号处理的标识函数,如下图:


3)多变量模型的应用,探索和挖掘更多的变量。

鉴于这些思想,重构新的模型,如下图:

思考题:

1) 梯度下降算法,初始化问题怎么解决?学习速率怎么设置?梯度下降算法的变体有哪些?

2)如何重新设计模型,有哪些方法?面对多个模型,如何做做选择?

3)过拟合问题如何解决?

4)正则化技术为什么可以缓解过拟合问题?


朋友们,在学习中有什么问题或者想法,请加入机器学习群,大家一起讨论,共同进步。


每周一书

1利用Python进行数据分析

2深度学习

3Head First Python 中文版

4Hands on XGboost

5数据科学导论:Python语言实现


课程视频点击                                         

↓↓↓

浏览 54
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报