写在前面

最近开始学习机器学习了,选用的参考书是周志华老师的《机器学习》,书的内容由浅入深,我看了书之后才发现原来机器学习就是我一直在找的有意思,上限高的工具,接下来我也将分享我的学习历程。

经验误差

我将设计出来的机器学习算法称为学习器,将训练集喂给学习器,通过学习器生成的最终输出就是模型。
学习器用我的算法进行不停的优化迭代,从而积累经验,这也可以认为是一个参数整定的过程,但是,如果算法有缺陷或者说训练集包含的情况不够全面的时候,让模型去判断训练集内的样本的时候也有可能出错,这种误差就叫做经验误差

欠拟合与过拟合

接下来我将依托图像识别讲解相关概念

欠拟合

喂给学习器的训练集过少,算法有缺陷等原因会导致欠拟合
欠拟合可以理解为最终输出的模型不能完成我希望模型完成的任务,也就是模型识别不到我想识别的东西
正常识别结果应该是这样的

模型欠拟合的时候会发生的情况

因为中间的网球标识没有朝外,模型就没有识别出来
如果用网上的开源模型进行训练的时候发生了欠拟合的情况就很有可能是因为训练集训练的论数过少所造成的

过拟合

过拟合相应的就可以理解为模型把非目标物识别成了目标物,我想要识别的物品的一些没那么明显的特征因为喂了过大的训练集或者训练轮数过多而被认为是目标物的特有特征
正常识别

过拟合识别

上面的过拟合原因就是因为模型将红牛的形状识别成了红牛的特有特征,所以形状类似的雪花就被识别成了红牛

评估方法

接下来我也将依托图像识别讲解相关概念,以二分类为例进行分析。
假设样本集合为数据集,用来训练学习器的图片集合是训练集,用来测试模型训练情况的图片集合是测试集,训练集和测试集都是从数据集中取出来的
评估方法的目的是为了评价模型的输出结果的,但是这里面可能有些问题需要解决,那就是如何保证训练集和测试集里的图片是相互独立的情况下,他们的分布情况是相同的呢?接下来我来介绍一些方法

留出法

为了保证训练集和测试集有相同的分布且互相独立(独立同分布),留出法采用分层采样的办法
假设我现在的数据集里面有1000张图片,我想训练识别的是红牛(数据集里有500张),与红牛相对应的是干扰物就是雪花(数据集里有500张),那么我就取红牛300张,雪花300张加入到训练集中,将剩下的红牛200张,雪花200张加到测试集中,以此来尽量保证独立同分布,这个办法最重要的是保证训练集和测试集里的物品的数量与数据集里面相应的物品数量之比应该是一样的

图片描述


但是这个办法有个问题,那就是测试集和训练集图片占数据集里的比例不太好决定,常见的做法是将数据集取2/3~4/5用于训练集,剩下的部分作为测试集,同时为了减小误差,我们会取100次训练集和测试集,然后进行学习训练,最后对模型的输出结果取平均就是留出法的结果

交叉验证法

这个办法是将数据集均分为k个大小相同的子集,取k-1个子集的并集作为训练集,取第k个子集作为测试集

图片描述


同样的为了尽量减小误差,可以将数据集k个子集多次进行划分并进行实验,对结果求均值
交叉验证法最理想的情况就是将数据集分到最小,假如数据集里面装的是图片的话,可以分成一张图片就是一个子集,这样可以保证训练集的最大化,但是这样模型的训练过程就太长了,这可能就是我们忍受不了的。

可重复采样

这个原理可以类比成概率论里的有放回摸球问题,假如袋子里面有12个红球,3个白球,2个蓝球,第一次摸球,从袋子里摸出红球的概率是12/17,摸出白球的概率是3/17,摸出蓝球的概率是2/17,摸完之后把球放回袋子里继续摸球,摸出相应颜色球的概率也是不会改变的
可重复采样用的也是这样的思想,我们先从数据集里取一个样本,将其复制训练集里面,但是这样也有个问题,那就是数据集里面有一些样本是很大概率不会被取到的,具体证明如下

也就是说大概有36.8%的数据集里的样本不会被抽到,那么这部分没被抽到的样本就可以作为我们的测试集
这种方法在数据集较小,训练集和测试集难以区分的时候比较好用,但是因为这里采用了有放回取出的模型,所以改变了数据集原来的分布情况,这就会引入估计偏差,因此如果说数据集多,训练集和测试集比较好分的情况下,留出法和交叉验证法就会更常用一些


(づ ̄3 ̄)づ╭❤~一键三连,这次一定(๑•̀ㅂ•́)و✧