李宏毅机器学习课程笔记——第二章 回归 Regression
我们在前面提到,监督学习的两大问题就是回归与分类,回归问题的一大特征就是输出的结果是输出结果为一系列的数字
现在我们以一个场景为例,便于大家更好地理解回归问题。
在进入场景之前,麻烦大家先回忆一下机器学习中监督学习的流程是什么?
1.找到一个函数集
2.评估函数
3.从函数集中选出最好的函数
现在给出场景,我们需要对宝可梦的CP值进行预测
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f6bzXGBS-1663173864348)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915003431930.png)]
按照流程,我们依次确定做法:
- 找到函数——线性回归模型
- 评估函数——损失函数
- 挑选函数——梯度下降
下面我们来讲讲细节
step1:Model
目前大家学到的最简单的线性函数就是一次函数
y = w x c p + b y=wx_{cp}+b y=wxcp+b
w:权重,b:偏差
w和b的值我们可以先随意给定。
再来看看我们有哪些数据
我们有十只宝可梦初始的CP值和他们进化后的CP值,分别作为x和y
我们思考一下可能有哪些因素会影响宝可梦的cp值,比如体力,身高,体重……
这些都可以作为x
我们把这些x称为特征feature
好了,现在我们的model已经初步确定
y = b + ∑ w i x i y=b+\sum w_{i}x_{i} y=b+∑wixi
step2: Goodness of Function
函数我们已经知道了,现在要明白输入和输出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZF7Sw2Vh-1663173864351)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915003629267.png)]
我们挑选10只宝可梦作为训练集,将数据绘制在图表上
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3D7O2Eom-1663173864352)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915003650675.png)]
根据图表,我们可以给出损失函数,所谓的损失函数,其实就是一个用来测评的函数,输入的是函数,输出的结果是衡量w和b好坏的指标
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eOJLc7mO-1663173864354)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915003725756.png)]
为了更直观地体现,我们同样可以绘制出图像
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Ei8fk6j-1663173864355)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915003735510.png)]
step3: Best Function
我们现在要根据损失函数的值来挑选出最好的函数
我们这里使用梯度下降法
从数学的角度来将,就是求函数图像上某一点的导数,根据导数来确定增减趋势,从而确定出最小值
从生活的角度来讲,梯度下降类似于下山,我们站在函数上某一点左右望,朝下降的地方走,走了几步再左右望,一直重复,直到走到最低点
现在我们加上b
对于两个参数,我们处理方法一样
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5XJPNg6X-1663173864357)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915003833875.png)]
结果怎么样呢?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pskkPNbv-1663173864358)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915003951414.png)]
我们发现好像有点准,又不是特别准,只能准一点点(doge)
我们可不可以选择另一种函数模型呢?
当然是可以的
y = b + w 1 ∗ x c p + w 2 ∗ ( x c p ) 2 y=b+w_{1}*x_{cp}+w_{2}*(x_{cp})^2 y=b+w1∗xcp+w2∗(xcp)2
同样的步骤,得到这样的结果。发现确实有用,那三次函数呢?四次函数?五次函数呢?……
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLDlZ9fR-1663173864360)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915004030511.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N7dLBJ8h-1663173864361)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915004114630.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOUoJCk8-1663173864363)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915004137999.png)]
经过对比,我们发现真的有用,但用处不大,甚至起到了反效果
由此可见,并不是越复杂越好
为什么会这样呢,这里我们就要引入过拟合的概念
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UcrxDJEQ-1663173864364)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915004210229.png)]
到此为止,我们已经做完了针对一个x的所有处理,但是读者会问,我们当时不是说还有其他特征吗,他们呢?
我们现在加上其他的因素,一股脑全加进去
有读者又有疑问,这样还能是线性吗?
我们可以这样做
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NqnGC6Iy-1663173864366)(C:\Users\Ferry\AppData\Roaming\Typora\typora-user-images\image-20220915004249476.png)]
这样就可以将许多变量的公式转变为线性模型
不是说还有其他特征吗,他们呢?
我们现在加上其他的因素,一股脑全加进去
有读者又有疑问,这样还能是线性吗?
我们可以这样做
[外链图片转存中…(img-NqnGC6Iy-1663173864366)]
这样就可以将许多变量的公式转变为线性模型