机器学习入门基础:机器学习实践

目录

  • 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)。

378373023698e700dc41879de81fc8dc.png

图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) 个模型的误差加和平均就得到交叉验证误差。

87077c01ae36ad62f66e8fb8403ab487.png

图7-2 K折交叉验证方法

交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以作为模型优化的指标使用。

2.留一法交叉验证(leave-one-out Cross Validation,LOO)

留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有个样本,则需要训练次,测试次。当数据集的数量较少时使用留一交叉验证,其原因主要如下:

数据集少,如果像正常一样划分训练集和验证集进行训练,那么可以用于训练的数据本来就少,还被划分出去一部分,这样可以用来训练的数据就更少了。留一法可以充分的利用数据。

因为留一法需要划分次,产生批数据,所以在一轮训练中,要训练出个模型,这样训练时间就大大增加。所以留一法比较适合训练集较少的场景。

留一法计算最繁琐,但样本利用率最高。适合于小样本的情况。

7.1.3 不平衡数据处理

数据不平衡是指数据集中各类样本数量不均衡的情况,比如正负样本比例为1比10,就属于数据不平衡。

常用不平衡处理方法有采样和代价敏感学习。

1.采样

采样主要分为欠采样(Down-Sampling)、过采样(Over-Sampling)方法。

  1. 欠采样

欠采样抛弃大部分比例较高的样本。图7-3中,因为正样本比例较高,因此抛弃了大部分正样本数据,从而弱化了中间部分正样本的影响,可能会造成偏差很大的模型。当然,如果数据不平衡但两个类别基数都很大,或许影响不大。

7b5491aebd90e4791e491670027d4560.png

图7-3 欠采样的方法图例(○代表正样本,×代表负样本) 2) 过采样

过采样针对少数类样本提供精确副本, 由于精确副本的重复采样, 可能会导致严重的过拟合。图7-4中,针对少数类样本,进行了重复采样,达到正负样本平衡的目的。

0df40a74d3bd14fe0fd0d656e6b473a2.png

图7-4 过采样的方法图例(○代表正样本,×代表负样本)

为解决过采样的重复采样问题,可以使用SMOTE算法。

SMOTE(Synthetic Minority Over-sampling Technique)算法是过采样中比较常用的一种。算法的思想是合成新的少数类样本,而不是简单地复制样本。算法过程如图7-5:

6a45b9612a6d1a2b51f3ca9f5a9989e6.png


8c7a249598d031a18257cc6e393b0960.png

(a) 原始样本
(b) 选定少类样本

f379389e1c9ac288e4eb984b1c3d4335.png


c652d303a17ff29835d1ec00c2d62605.png

(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),在实际分类中会出现以下四种情况:

  1. 正确肯定(True Positive,TP):预测为真,实际为真

  2. 正确否定(True Negative,TN):预测为假,实际为假

  3. 错误肯定(False Positive,FP):预测为真,实际为假

  4. 错误否定(False Negative,FN):预测为假,实际为真

如图7-6所示,这是一个混淆矩阵,混淆矩阵的每一行是样本的预测值,每一列是样本的真实值:

注意:有些教材把行列反一下,即每一列是样本的预测值,每一行是样本的真实值。



预测值


PositiveNegtive
实际值PositiveTPFN

NegtiveFPTN
图7-6混 淆矩阵

分类的主要评价指标:

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),即预测正确且实际分类为正的数量与所有正样本的数量的比例。

12357ea0b4849e0de3661e08269efb0c.png

图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曲线刻画查准率和查全率(召回率)之间的关系,横轴为查全率,纵轴为查准率,查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往偏低,查全率高时,查准率往往偏低。

57b180e402607b492cdc0229a15bf088.png

图7-8 P-R曲线样例

模型与坐标轴围成的面积越大,则模型的性能越好。从图7-8中可以直接看出来。

7.2.3 评价指标案例

这里有一个评价指标的案例:假设有100张照片,其中,猫的照片有60张,狗的照片是40张。

输入这100张照片进行二分类识别,找出这100张照片中的所有的猫。识别结果的混淆矩阵见表7-1:

表7-1 识别结果的混淆矩阵



预测值


PositiveNegtive
实际值PositiveTP = 40FN = 20

NegtiveFP = 10TN = 30

根据分类结果的混淆矩阵,可以得到分类结果的表格(表7-2)

表7-2分类结果

项目符号猫狗的例子
识别出的正例TP + FP40+10=50
识别出的负例TN + FN30+20=50
总识别样本数TP + FP + TN + FN50+50=100
识别对了的正例与负例TP + TN40+30=70
识别错了的正例与负例FP + FN10+20=30
实际总正例数量TP + FN40+20=60
实际总负例数量TN + FP30+10=40

根据混淆矩阵,可以求得准确率、精确率、召回率等指标:

1.准确率

由于:,所有样本数量为100,则准确率为:

2.精确率

根据公式:

由于:,,则精确率为:

3.召回率

由于:,。则召回率为:

7.3 正则化、偏差和方差

7.3.1 欠拟合和过拟合

在4.4节中,已经讲解过过拟合和欠拟合问题,本章仅对如何处理过拟合和欠拟合问题进行总结。

1.过拟合的处理

通常有四种方法:

  1. 获得更多的训练数据

使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。

  1. 降维

即丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)。降维将在后续章节中进行讲解。

  1. 正则化

正则化(Regularization)的技术,保留所有的特征,但是减少参数的大小,它可以改善或者减少过拟合问题。

  1. 集成学习方法

集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。集成学习将在后续章节进行讲解。

2.欠拟合的处理

通常有三种方法:

  1. 添加新特征

当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘组合特征等新的特征,往往能够取得更好的效果。

  1. 增加模型复杂度

简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。

  1. 减小正则化系数

正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。

7.3.2 正则化

在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合。但是我们可能会使用的正则化的程度太高或太小了,即我们在选择的值时也需要思考。图7-19可以看出,只有选择合适的正则化系数,才能得到合适的模型。

eb67d065004fa37a9dba5e8bc01af96b.png

图7-9 欠拟合模型(左)、合适的模型(中)和过拟合模型(右)

1.L1正则化和L2正则化

L1正则化和L2正则化的作用已经在4.4节中进行讲解,本节对两者进行总结。

L1正则化是指在损失函数中加入权值向量的绝对值之和,L1正则化的功能是使权重稀疏:起到了特征选择的作用。

设:为模型的代价函数,为参数,为样本数,为特征数,为参数,代表预测值,为真实值,为正则化系数。则:

L1正则化的公式:

在损失函数中加入权值向量的平方和,L2的功能是使权重平滑,起到了减少过拟合的作用。

L2正则化的公式:

2.Dropout正则化

Dropout的功能类似于L2正则化,与L2正则化的同的是,被应用的方式不同,Dropout也会有所不同,甚至更适用于不同的输入范围。常见的Dropout正则化,随机关闭一半的神经元,保留一半的神经元。

按照Hinton的原话,他的灵感来自于银行业务:

“我去银行办理业务。柜员不停的换人,于是我问其中给的一个人这是为什么。他说他不知道,但他们经常换来换去的。我猜想,银行工作人员想要成功欺诈银行,他们之间要互相合作才行,这让我意识到,在每个样本中随机删除不同的部分神经元,可以阻止他们的阴谋,因此可以降低过拟合。”

9566cf151bcd72a8371898baa354f3fd.png

图7-10 Dropout正则化,随机关掉一定比例的神经元

3.Early stopping

Early stopping代表提早停止训练神经网络,Early stopping的优点是,只运行一次梯度下降,你可以找出的较小值,中间值和较大值,而无需尝试正则化超级参数的很多值。

fa381b4f0f7130c8945a8ff784ba3efe.jpeg

图7-11 Early stopping方法的验证集误差和训练集误差

从图7-11中可以看出Early stopping方法的训练集误差一直在减小,而验证集误差达到一个最小值后就不再减小,反而开始增大,而Early stopping方法使验证集误差最小(图中的竖线位置)的时候停止训练。

4.数据增强(Data augmentation)

大部分的计算机视觉任务使用很多的数据,所以数据增强是经常使用的一种技巧来提高计算机视觉系统的表现。计算机视觉任务的数据增强通常以下方法实现:

(1) 随意翻转、镜像。

(2) 随意裁剪。

(3) 扭曲变形图片。

(4) 颜色转换,然后给R、G和B三个通道上加上不同的失真值。产生大量的样本,进行数据增强。

18d168b92de468730a1843cfca38700f.png

图7-12 通过随意翻转和裁剪、扭曲变形图片等方法进行数据增强

7.3.3 偏差和方差

当运行一个机器学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大。换句话说,出现的情况要么是欠拟合,要么是过拟合问题。

1.方差(Variance)

方差描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。

方差越大,数据的分布越分散,如图7-11第一行所示,左边的图是低方差低偏差,这是最理想的结果,右边的图高方差低。

2.偏差(Bias)

偏差描述的是预测值(估计值)的期望与真实值之间的差距。

偏差越大,越偏离真实数据,如图7-13第二行所示,左边的图是低方差高偏差,右边的图高方差高偏差,这个是最差的结果。

db57645da6ac45b993d4fd54741be3fb.png

图7-13偏差与方差

在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合,但是如何选择合适的正则化系数,从而在偏差和方差之间取得平衡。

3.解决偏差和方差问题的方法

欠拟合,对应偏差高。显然,欠拟合就是本身拟合训练数据都不行,也就是训练误差也高,预测的值离真实值的距离就偏高。用模型复杂度来说,就是模型复杂度不够。

过拟合,对应方差高。也就是训练得到的模型太拟合训练数据了。不同的训练数据训练的模型效果波动很大。泛化能力弱。用模型复杂度来说,就是模型太复杂了。

70bc04ed1de0b5e2e7176f3d3bac1100.png

图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

7de1e9a4878fc8976f841cba0df9676a.png

教师可以向黄海广老师申请教学ppt原版(邮件:haiguang2000@wzu.edu.cn)

代码地址:https://github.com/fengdu78/WZU-machine-learning-course

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值