目录
7.1 数据集划分
7.1.1 训练集、验证集和测试集划分
7.1.2 交叉验证
7.1.3 不平衡数据处理
7.2 评价指标
7.2.1 回归的评价指标
7.2.2 分类的评价指标
7.2.3 评价指标案例
7.3 正则化、偏差和方差
7.3.1 欠拟合和过拟合
7.3.2 正则化
7.3.3 偏差和方差
参考文献
7.1 数据集划分
7.1.1 训练集、验证集和测试集划分
机器学习的数据,可以划分为训练集、验证集和测试集。
训练集(Training Set):帮助我们训练模型,简单地说就是通过训练集的数据让我们确定拟合曲线的参数。
验证集(Validation Set):也叫做开发集(Dev Set),用来做模型选择(Model Selection),即做模型的最终优化及确定的,用来辅助我们的模型的构建,即训练超参数,可选。
测试集(Test Set):为了测试已经训练好的模型的精确度。
我们将数据分成训练集和测试集,通常用70%的数据作为训练集,用剩下30%的数据作为测试集。很重要的一点是训练集和测试集均要含有各种类型的数据,通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。通常我们应该选择一个泛化的模型。我们需要使用交叉验证集来帮助选择模型。 即:使用60%的数据作为训练集,使用 20%的数据作为验证集,使用20%的数据作为测试集,也可以按照70%、10%、20%,这个是比较普遍的划分方式(图7-1)。
图7-1 数据集划分
但在现代机器学习中,我们更习惯操作规模大得多的数据集,比如说你有1百万个训练样本,这样分可能更合理,98%作为训练集,1%开发集,1%测试集,因为如果你有1百万个样本,那么1%就是10,000个样本,这对于开发集和测试集来说可能已经够了。所以在现代深度学习时代,有时我们拥有大得多的数据集,所以使用小于20%的比例或者小于30%比例的数据作为开发集和测试集也是合理的。而且因为深度学习算法需要非常多的数据,我们可以看到那些有海量数据集的问题,有更高比例的数据划分到训练集里,那么测试集呢?深度学习的数据这样划分:98%、1%、1% (假设百万条数据)。
7.1.2 交叉验证
在机器学习建模过程中,常见的数据划分方法通常是将数据分为训练集和测试集,测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。这种做法往往会出现问题:在训练过程中,经常会出现过拟合的问题,模型的泛化能力差,也就是说模型可以很好的匹配训练数据,却在预测训练集外的数据(测试集)上表现不佳。如果此时就使用测试数据来调整模型参数,就相当于在训练时已知部分测试数据的信息,造成标签信息的泄露,会影响最终评估结果的准确性。通常的做法是在训练数据再中分出一部分作为验证(Validation)数据,用来评估模型的训练效果。
验证数据取自训练数据,但不参与训练,这样可以相对客观的评估模型对于训练集之外数据的匹配程度。模型在验证数据中的评估常用的是交叉验证,主要的交叉验证方式有K折交叉验证和留一法交叉验证。
1.K折交叉验证(K-fold Cross Validation)
K折交叉验证的方式如图7-2所示,主要流程如下:
(1) 将原始数据分成组(K-Fold),将每个子集数据分别做一次验证集,其余的组子集数据作为训练集,这样会得到个模型。
(2) 这个模型分别在验证集中评估结果。
(3) 个模型的误差加和平均就得到交叉验证误差。
图7-2 K折交叉验证方法
交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以作为模型优化的指标使用。
2.留一法交叉验证(leave-one-out Cross Validation,LOO)
留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有个样本,则需要训练次,测试次。当数据集的数量较少时使用留一交叉验证,其原因主要如下:
数据集少,如果像正常一样划分训练集和验证集进行训练,那么可以用于训练的数据本来就少,还被划分出去一部分,这样可以用来训练的数据就更少了。留一法可以充分的利用数据。
因为留一法需要划分次,产生批数据,所以在一轮训练中,要训练出个模型,这样训练时间就大大增加。所以留一法比较适合训练集较少的场景。
留一法计算最繁琐,但样本利用率最高。适合于小样本的情况。
7.1.3 不平衡数据处理
数据不平衡是指数据集中各类样本数量不均衡的情况,比如正负样本比例为1比10,就属于数据不平衡。
常用不平衡处理方法有采样和代价敏感学习。
1.采样
采样主要分为欠采样(Down-Sampling)、过采样(Over-Sampling)方法。
欠采样
欠采样抛弃大部分比例较高的样本。图7-3中,因为正样本比例较高,因此抛弃了大部分正样本数据,从而弱化了中间部分正样本的影响,可能会造成偏差很大的模型。当然,如果数据不平衡但两个类别基数都很大,或许影响不大。
图7-3 欠采样的方法图例(○代表正样本,×代表负样本) 2) 过采样
过采样针对少数类样本提供精确副本, 由于精确副本的重复采样, 可能会导致严重的过拟合。图7-4中,针对少数类样本,进行了重复采样,达到正负样本平衡的目的。
图7-4 过采样的方法图例(○代表正样本,×代表负样本)
为解决过采样的重复采样问题,可以使用SMOTE算法。
SMOTE(Synthetic Minority Over-sampling Technique)算法是过采样中比较常用的一种。算法的思想是合成新的少数类样本,而不是简单地复制样本。算法过程如图7-5:
(a) 原始样本 | (b) 选定少类样本 | |
(c) 找到靠近的个少类样本 | (d) 增加样本 |
图 7-5 SMOTE算法工作流程
假设为某样本的集合,其中,(图 7-5(a))。首先设置过采样比率,通过该采样比率为每一个寻找个同一类别的最近邻(图 7-5(b)),然后从选出个样本(图 7-5(c)),和样本使用下面的公式的计算方法合成个新样本(图 7-5(d))。最后将该算法生成的新样本添加到集合。新样本生成方法如下面的公式。
其中,,为过采样之后的样本,代表的是的个同类的最近邻,之间的随机数。
2.代价敏感学习
代价敏感学习是指为不同类别的样本提供不同的权重,从而让机器学习模型进行学习的一种方法。
比如风控或者入侵检测,这两类任务都具有严重的数据不平衡问题,可以在算法学习的时候,为少类样本设置更高的学习权重,从而让算法更加专注于少类样本的分类情况,提高对少类样本分类的查全率,但是也会将很多多类样本分类为少类样本,降低少类样本分类的查准率。
7.2 评价指标
7.2.1 回归的评价指标
回归的评价指标主要有:均方误差(Mean Square Error,MSE)、平均绝对误差(Mean Absolute Error,MAE)、均方根误差RMSE(Root Mean Square Error,RMSE)、R方 [R_Squared(R2 score)]。
以上评价指标已经在4.5(回归的评价指标)这节进行讲解,本节不再重复。
7.2.2 分类的评价指标
在分类算法中,针对一个二分类问题,即将实例分成正类(Positive)或负类(Negative),在实际分类中会出现以下四种情况:
正确肯定(True Positive,TP):预测为真,实际为真
正确否定(True Negative,TN):预测为假,实际为假
错误肯定(False Positive,FP):预测为真,实际为假
错误否定(False Negative,FN):预测为假,实际为真
如图7-6所示,这是一个混淆矩阵,混淆矩阵的每一行是样本的预测值,每一列是样本的真实值:
注意:有些教材把行列反一下,即每一列是样本的预测值,每一行是样本的真实值。
预测值 | |||
---|---|---|---|
Positive | Negtive | ||
实际值 | Positive | TP | FN |
Negtive | FP | TN |
分类的主要评价指标:
1.准确率(Accuracy)
准确率是分类问题中最简单也是最直观的评价指标,准确率是指分类正确的样本占总样本个数的比例,是针对所有样本的统计量。
2.精准率(Precision)
又称为查准率,代表对正样本结果的预测准确程度,具体公式如下:
精准率的含义就是在预测为正样本的结果中,有多少是准确的。这个指标比较谨慎,分类阈值较高。
3.召回率(Recall)
又称为查全率,是针对原始样本而言的一个评价指标。在实际为正样本中,被预测为正样本所占的百分比。具体公式如下:
召回率也是对部分样本的统计量,侧重对真实的正类样本的统计。
4.F1 score
F1 score是精准率和召回率的调和平均值,它定义为:
F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0。
5.ROC曲线
ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。ROC曲线的横轴为False Positive Rate,也叫伪阳率(FPR),即预测错误且实际分类为负的数量与所有负样本数量的比例,纵轴为True Positive Rate,也叫真阳率(TPR),即预测正确且实际分类为正的数量与所有正样本的数量的比例。
图7-7 ROC曲线样例
如何从ROC曲线看分类效果的好坏?ROC曲线越靠近左上角,效果越好。从图7-7中可以看出,越好的分类效果,曲线下的面积越大,曲线越靠近左上角。
6.AUC
AUC的全称是(Area Under ROC Curve),也就是ROC曲线下方的面积,AUC的范围是0到1,AUC越大,代表模型的性能越好。
7.P-R曲线
P-R曲线是描述精确率和召回率变化的曲线。P-R曲线刻画查准率和查全率(召回率)之间的关系,横轴为查全率,纵轴为查准率,查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往偏低,查全率高时,查准率往往偏低。
图7-8 P-R曲线样例
模型与坐标轴围成的面积越大,则模型的性能越好。从图7-8中可以直接看出来。
7.2.3 评价指标案例
这里有一个评价指标的案例:假设有100张照片,其中,猫的照片有60张,狗的照片是40张。
输入这100张照片进行二分类识别,找出这100张照片中的所有的猫。识别结果的混淆矩阵见表7-1:
表7-1 识别结果的混淆矩阵
预测值 | |||
---|---|---|---|
Positive | Negtive | ||
实际值 | Positive | TP = 40 | FN = 20 |
Negtive | FP = 10 | TN = 30 |
根据分类结果的混淆矩阵,可以得到分类结果的表格(表7-2)
表7-2分类结果
项目 | 符号 | 猫狗的例子 |
---|---|---|
识别出的正例 | TP + FP | 40+10=50 |
识别出的负例 | TN + FN | 30+20=50 |
总识别样本数 | TP + FP + TN + FN | 50+50=100 |
识别对了的正例与负例 | TP + TN | 40+30=70 |
识别错了的正例与负例 | FP + FN | 10+20=30 |
实际总正例数量 | TP + FN | 40+20=60 |
实际总负例数量 | TN + FP | 30+10=40 |
根据混淆矩阵,可以求得准确率、精确率、召回率等指标:
1.准确率
由于:,所有样本数量为100,则准确率为:
2.精确率
根据公式:
由于:,,则精确率为:
3.召回率
由于:,。则召回率为:
7.3 正则化、偏差和方差
7.3.1 欠拟合和过拟合
在4.4节中,已经讲解过过拟合和欠拟合问题,本章仅对如何处理过拟合和欠拟合问题进行总结。
1.过拟合的处理
通常有四种方法:
获得更多的训练数据
使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。
降维
即丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)。降维将在后续章节中进行讲解。
正则化
正则化(Regularization)的技术,保留所有的特征,但是减少参数的大小,它可以改善或者减少过拟合问题。
集成学习方法
集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。集成学习将在后续章节进行讲解。
2.欠拟合的处理
通常有三种方法:
添加新特征
当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘组合特征等新的特征,往往能够取得更好的效果。
增加模型复杂度
简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。
减小正则化系数
正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。
7.3.2 正则化
在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合。但是我们可能会使用的正则化的程度太高或太小了,即我们在选择的值时也需要思考。图7-19可以看出,只有选择合适的正则化系数,才能得到合适的模型。
1.L1正则化和L2正则化
L1正则化和L2正则化的作用已经在4.4节中进行讲解,本节对两者进行总结。
L1正则化是指在损失函数中加入权值向量的绝对值之和,L1正则化的功能是使权重稀疏:起到了特征选择的作用。
设:为模型的代价函数,为参数,为样本数,为特征数,为参数,代表预测值,为真实值,为正则化系数。则:
L1正则化的公式:
在损失函数中加入权值向量的平方和,L2的功能是使权重平滑,起到了减少过拟合的作用。
L2正则化的公式:
2.Dropout正则化
Dropout的功能类似于L2正则化,与L2正则化的同的是,被应用的方式不同,Dropout也会有所不同,甚至更适用于不同的输入范围。常见的Dropout正则化,随机关闭一半的神经元,保留一半的神经元。
按照Hinton的原话,他的灵感来自于银行业务:
“我去银行办理业务。柜员不停的换人,于是我问其中给的一个人这是为什么。他说他不知道,但他们经常换来换去的。我猜想,银行工作人员想要成功欺诈银行,他们之间要互相合作才行,这让我意识到,在每个样本中随机删除不同的部分神经元,可以阻止他们的阴谋,因此可以降低过拟合。”
图7-10 Dropout正则化,随机关掉一定比例的神经元
3.Early stopping
Early stopping代表提早停止训练神经网络,Early stopping的优点是,只运行一次梯度下降,你可以找出的较小值,中间值和较大值,而无需尝试正则化超级参数的很多值。
图7-11 Early stopping方法的验证集误差和训练集误差
从图7-11中可以看出Early stopping方法的训练集误差一直在减小,而验证集误差达到一个最小值后就不再减小,反而开始增大,而Early stopping方法使验证集误差最小(图中的竖线位置)的时候停止训练。
4.数据增强(Data augmentation)
大部分的计算机视觉任务使用很多的数据,所以数据增强是经常使用的一种技巧来提高计算机视觉系统的表现。计算机视觉任务的数据增强通常以下方法实现:
(1) 随意翻转、镜像。
(2) 随意裁剪。
(3) 扭曲变形图片。
(4) 颜色转换,然后给R、G和B三个通道上加上不同的失真值。产生大量的样本,进行数据增强。
图7-12 通过随意翻转和裁剪、扭曲变形图片等方法进行数据增强
7.3.3 偏差和方差
当运行一个机器学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大。换句话说,出现的情况要么是欠拟合,要么是过拟合问题。
1.方差(Variance)
方差描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。
方差越大,数据的分布越分散,如图7-11第一行所示,左边的图是低方差低偏差,这是最理想的结果,右边的图高方差低。
2.偏差(Bias)
偏差描述的是预测值(估计值)的期望与真实值之间的差距。
偏差越大,越偏离真实数据,如图7-13第二行所示,左边的图是低方差高偏差,右边的图高方差高偏差,这个是最差的结果。
图7-13偏差与方差
在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合,但是如何选择合适的正则化系数,从而在偏差和方差之间取得平衡。
3.解决偏差和方差问题的方法
欠拟合,对应偏差高。显然,欠拟合就是本身拟合训练数据都不行,也就是训练误差也高,预测的值离真实值的距离就偏高。用模型复杂度来说,就是模型复杂度不够。
过拟合,对应方差高。也就是训练得到的模型太拟合训练数据了。不同的训练数据训练的模型效果波动很大。泛化能力弱。用模型复杂度来说,就是模型太复杂了。
图7-14 模型复杂度与误差
图7-14是模型复杂度与误差的关系,一般来说,随着模型复杂度的增加,方差会逐渐增大,偏差会逐渐减小,在虚线处,差不多是模型复杂度的最恰当的选择,其“偏差”和“方差”也都适度,才能”适度拟合”。
解决偏差和方差的方法通常有以下6种:
(1) 获得更多的训练样本——解决高方差。
(2) 尝试减少特征的数量——解决高方差。
(3) 尝试获得更多的特征——解决高偏差。
(4) 尝试增加多项式特征——解决高偏差。
(5) 尝试减少正则化系数——解决高偏差。
(6) 尝试增加正则化系数——解决高方差。
参考文献
[1] Andrew Ng. Machine Learning[EB/OL]. StanfordUniversity,2014. https://www.coursera.org/course/ml
[2] Peter Harrington.机器学习实战[M]. 北京:人民邮电出版社,2013.
[3] MICHELLE T. M., Machine Learning[M]. New York: McGraw-Hill Companies,Inc,1997.
[4] Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning[M]. New York: Springer,2001.
[5] CHRISTOPHER M. BISHOP. Pattern Recognition and Machine Learning[M]. New York: Springer,2006.
[6] Kohavi R.,Scaling up the accuracy of naïve Bayes classifiers: A decision-tree hybrid[C]// Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining (KDD), Portland, OR, 202-207, 1996.
[7] 李航. 统计学习方法[M]. 北京: 清华大学出版社,2019.
[8] CHAWLA N V, BOWYER K W, HALL L O, et al. SMOTE: Synthetic Minority Over-sampling Technique[J]. Journal of Artificial Intelligence Research, 2002, 16: 321–357.
本文为黄海广老师的机器学习入门基础的第七章原文。
购书连接:item.jd.com/13935772.html
教师可以向黄海广老师申请教学ppt原版(邮件:haiguang2000@wzu.edu.cn)
代码地址:https://github.com/fengdu78/WZU-machine-learning-course