前言:老师让博士生给我布置任务了,提前学习一些东西,记录一下学习笔记。
学习视频:李宏毅机器学习(2017)_哔哩哔哩_bilibili
一、回归
1.1 什么是机器学习
机器学习≈寻找一个函数
根据所给数据,寻找有一个函数,给出适当输出。
1.2 机器学习地图
机器学习根据情景分类:
1、监督学习Supervised Learning
给定系统各个输入(input)以及对应的确定的输出(label),告诉系统:我给你一个X,你就要输出确定的输出Y,这也是最常用的机器学习方式。
监督学习根据任务分类
①回归Regression:我给你一个输入,你给我一个数值输出
②分类Classification:我给你一个输入,你告诉我这个输入属于哪个类。
二分类问题:我给你一封邮件,你判断一下是否是垃圾邮件
多分类分类:我给你一篇新闻,你判断一下新闻的类型(政治/军事/文化等)
2、半监督学习Semi-supervised Learning
数据中一部分输入有确定的输出,但有一部分没有确定的输出(即一些input缺少label),这种情况就是半监督学习。
3、无监督学习Unsupervised Learning
所有input都没有label,只给它大量的输入,让它根据输入数据自己总结规律。
4、迁移学习Transfer Learning
可以有label也可以没有label。比如有个模型可以识别猫和狗,我们将它迁移使用,用来识别大象和老虎。也就是数据都变了,但想模型重复使用。
5、强化学习Reinforcement Learning
在强化学习中,机器在向“评价”学习。机器自己学习,我们没告诉他应该具体什么,只给它输出的结果打分,它在一次次的结果中,被批评的过程中自己总结经验。
1.3 机器学习步骤
1、确定Model
Model就是函数的集合,通过函数得到我们想要的输出
eg. 线性回归:y = b + wx,y是一个model,w、b为待训练的参数
2、评价函数(Goodness of function)
通过一个确定的方法挑选出最好的函数,通常使用损失函数L(Loss Function)评价一个函数的好坏
(1)Loss Function的输入:Model里的参数w和b
(2)Loss Function的输出:代表w和b好不好
(3)Loss的计算:函数预估结果 y 与真实结果 ŷ 之间的差距e。
Loss越大,表示这一组参数越不好,反之越好。
3、挑选并使用函数
寻找一个最优函数,使L最小。
常用方法:最小二乘法,梯度下降法
梯度下降法Gradient Descent:只要L可微分,不管L是什么函数都可以使用
二、回归的应用——预测宝可梦进化后的CP值
2.1 任务
根据宝可梦的相关属性预测CP(Combat Power)值
2.2 步骤
1、Model
输入:宝可梦的特征x
输出:宝可梦进化后的CP值y
先假设一个简单的模型(线性模型),我们认为进化后的CP值y等于一个常数b,加上一个参数w乘以进化前的CP值,,w和b可以代任何值。我们需要通过训练数据集确定哪一个函数是合理的函数。
2、Goodness of Function
定义一个损失函数Loss Function如下,它的输入是一个函数,输出是函数有多不好。
里面的是我们用函数预测得到的数值,外面的是真正的数值,两者作差取平方,就是估测的误差。最后将误差求和就是损失函数。损失越大,函数越不好。
3、Best Function
寻找最优函数,就是寻找一个f使得L(f)最小。
常用方法:最小二乘法、梯度下降法(Gradient Descent)
梯度下降法的优点:只要L是可微分的,梯度下降法都可以用于处理这个函数。
梯度下降法的缺点:由于函数的不同,可能会因为初始值的选取而陷入局部最优。但是线性回归中无须担心,因为线性回归中不存在局部最优值,任选一组初始值计算的局部最优都是一样的。
2.3 模型的选择
通过三个步骤训练出线性函数并求出损失值,但是将测试集代入后,发现结果不如人意,所以考虑模型可能比线性模型更复杂。考虑二次式,三次式,四次式,五次式等。
过拟合Overfitting:在训练集上模型越复杂,损失函数就越小,但是在测试集上未必有更好的结果。
应该选择三次式作为模型,此时在训练集和测试集上的损失函数都是最小。
2.4 从单变量到多变量
1、返回步骤一:重新设计模型
不同种类的宝可梦也会影响CP值,因此把Model改成下面这样
更改后,不同种类的宝可梦对应的w和b就不同,测试集的图像拟合得更好。
2、返回步骤二:正则化
重新定义损失函数,额外加上一项
得到的参数w越小越好,此时函数比较平滑。
平滑:当输入变化时,输出的变化不敏感。
我们希望我们找到的函数是平滑的,又不能太平滑而接近一条水平线,所以我们应该调整λ的值而得到最好的模型。(如上图的转折点就是最好的λ值)
3、结论:宝可梦的初始CP值和种类决定了进化后的CP值
三、偏差和方差
3.1 误差来源
1、偏差Bias
2、方差Variance
引入偏差和方差就能解释为什么越复杂的模型能够很好地拟合训练数据,但是误差率并不低。
3.2 偏差和方差的估计
假设有一变量x,我们想要估计它的均值,假设其均值为μ,方差为σ²。均值m和方差s²的计算如下图:
设每次实验结果为,求得的期望值为,图中蓝色的点为,与中间的距离是误差(瞄准的位置偏移),实际射击的位置和瞄准的位置之间的距离称为方差。
3.3 平行宇宙
在样本空间中随机抽取定量的样本,通过抽取的样本来建模。我们发现每次建模结果都不同。把100次建模的都绘制出来,如下图所示。变换x的次数,模型也随之变化。
3.4 偏差和方差的理解
1、方差:简单的模型,方差较小;复杂的模型,方差较大。(简单的模型受到数据的影响比较小)
2、偏差:有很多的,找到其期望值,这个与靶心有多接近。偏差越大:距离靶心越远。
越简单的模型,偏差越大;越复杂的模型,偏差越小。
3、偏差和方差的比较
从左到右,偏差逐渐下降,偏差所造成的误差也在逐渐下降(红色线);但是同时方差越来越大(绿色线)。综合考虑偏差和方差,得到蓝色线。在蓝色线中可以找到一个平衡点,同时考虑偏差和方差,使得误差最小。但是当模型越来越复杂,方差增长较快,所以模型的误差变得很大。
欠拟合Underfitting:误差来源于偏差较大
过拟合Overfitting:误差来源于方差较大
如何评估一个模型偏差大还是方差大:如果模型无法拟合训练数据,则表示偏差大(欠拟合);若模型在训练数据上误差较小,在测试数据上误差较大,则表示方差大(过拟合)
如何处理偏差大或方差大:
偏差大:重新设计模型(偏差大说明模型中可能未包含目标),重写模型的式子,增加更多的特征。
方差大:增加数据量(可以自己模拟假的数据)。正则化(新加入一个项,这一项的参数表示你希望你的曲线有多平滑)
3.5 模型选择
我们有很多模型可供选择,很多参数可供调整。通常我们在偏差和方差之间做一些权衡,我们希望找到一个偏差和方差都足够小的模型,使得测试数据的误差最小。
1、交叉验证:把训练数据分为两组,一组真正用于训练数据(训练集),另一组用于选择模型(验证集)。在训练集上训练好三个模型后,观察他们在验证集上的表现。
有时我们看到模型在公共测试数据上表现的结果太差,我们便回到训练集去调整,这个做法是不建议的!
2、N折交叉验证:将数据集分为N份,每一次拿出其他一份作为验证集,另外N-1份作为测试集,在三种情形下分别计算是三个模型的误差,然后计算平均误差。