首页 > 其他分享 >机器学习入门基础:机器学习实践

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

时间:2023-06-03 17:00:37浏览次数:30  
标签:机器 入门 训练 模型 样本 学习 正则 拟合 数据


目录

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

机器学习入门基础:机器学习实践_数据挖掘_02

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

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

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

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

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

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

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

7.1.3 不平衡数据处理

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

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

1.采样

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

  1. 欠采样

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

机器学习入门基础:机器学习实践_算法_03

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

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

机器学习入门基础:机器学习实践_深度学习_04

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

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

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

机器学习入门基础:机器学习实践_数据挖掘_05


机器学习入门基础:机器学习实践_数据挖掘_06

(a) 原始样本


(b) 选定少类样本

机器学习入门基础:机器学习实践_算法_07


机器学习入门基础:机器学习实践_人工智能_08

(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所示,这是一个混淆矩阵,混淆矩阵的每一行是样本的预测值,每一列是样本的真实值:

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



预测值




Positive

Negtive

实际值

Positive

TP

FN


Negtive

FP

TN


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



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

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

机器学习入门基础:机器学习实践_数据挖掘_10

图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.过拟合的处理

通常有四种方法:

  1. 获得更多的训练数据

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

  1. 降维

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

  1. 正则化

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

  1. 集成学习方法

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

2.欠拟合的处理

通常有三种方法:

  1. 添加新特征

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

  1. 增加模型复杂度

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

  1. 减小正则化系数

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

7.3.2 正则化

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

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


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

1.L1正则化和L2正则化

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

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

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

L1正则化的公式:

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

L2正则化的公式:

2.Dropout正则化

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

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

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

机器学习入门基础:机器学习实践_算法_12

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

3.Early stopping

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

机器学习入门基础:机器学习实践_深度学习_13

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

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

4.数据增强(Data augmentation)

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

(1) 随意翻转、镜像。

(2) 随意裁剪。

(3) 扭曲变形图片。

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

机器学习入门基础:机器学习实践_数据挖掘_14

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

7.3.3 偏差和方差

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

1.方差(Variance)

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

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

2.偏差(Bias)

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

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

机器学习入门基础:机器学习实践_人工智能_15

图7-13偏差与方差

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

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

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

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

机器学习入门基础:机器学习实践_人工智能_16

图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.


标签:机器,入门,训练,模型,样本,学习,正则,拟合,数据
From: https://blog.51cto.com/u_15671528/6408275

相关文章

  • JDK 8新特性:Stream流入门
          ......
  • 04web安全学习---PHP表单验证
    一、什么是表单?二、如何创建一个表单表单的一个最简单的写法:<formaction="https://www.baidu.com/s"><inputname='wd'/><inputtype='submit'/></form><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"&quo......
  • JMX入门
    一、简介Java管理扩展(JMX)技术是Java平台标准版(JavaSE平台)的标准部分。JMX技术是在Java2平台标准版(J2SE)5.0版本中添加到该平台的。JMX技术提供了一种简单、标准的管理资源(如应用程序、设备和服务)的方法。因为JMX技术是动态的,所以您可以在创建、安装和实现资源时使用它来监视和管......
  • 【什么是CNN】入门学习随笔
    什么是CNN?https://www.bilibili.com/video/BV1zF411V7xu/?p=6&share_source=copy_web&vd_source=3a1ed9fe9b3eb506d95e8709e124a7ce CNN最基本的架构:卷积层、池化层、全连接层带参数计算才能算一层:卷积和全连接池化:一般选最大值转换:转换成向量感受野:下图为5*5......
  • FreeRtos的移植,以及一些嵌入式学习心得。
    不得不先提心得。这不是第一次移植FreeRtos,至少是五六七八九次了,当然也不是最后一次。但是每一次移植其实都差不多,并没有什么得心应手的感觉。原因就是学的东西太多,学的太杂。我不得不承认,就算我天资聪慧,异于常人,记这么多知识是不可能的。人力有穷时。尊重这个客观现实,但不放......
  • Splunk Enterprise 9.0.5 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
    SplunkEnterprise9.0.5(macOS,Linux,Windows)-机器数据管理和分析请访问原文链接:https://sysin.org/blog/splunk-9/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org混合世界的数据平台快速、大规模地从可见性转向行动,以实现安全性、可观察性等目标。2TB从......
  • 英语学习
     1.祈使句的反义疑问句 2. 3. 4. 5.can`thelpdoing忍不住做某事6. 7. 8.Wouldyouliketodosth?你愿意做某事吗?9. 10. 11. 12.表示频率的:onceaweek,twiceamonththree timesaweekfourtimesaweek13.lookf......
  • JavaScript学习笔记:浏览器事件
    概念客户端JavaScript程序使用异步事件驱动的编程模型。浏览器会在文档、浏览器或某些元素或与之关联的对象发生某些事情时生成事件对象。比如文档加载完成、敲击键盘输入等。JavaScript程序可以给某些对象绑定监听器函数来监听特定的事件,在该对象上发生指定事件时,这些函数会被......
  • golang 学习之 etcd protobuffer grpc gorm 服务注册发现 go-micro
    1.etcd使用步骤1)下载:https://github.com/etcd-io/etcd/releases/2)配置环境变量3)编辑local-cluster-profile文件:(利用goreman启动方式,生产环境参考官方文档)etcd1:etcd--nameinfra1--listen-client-urlshttp://127.0.0.1:2379--advertise-client-urlshttp://127.0.0.1......
  • 《Just For Fun》:学习即游戏
    《JustForFun》:学习即游戏最近读完了Linus的自传《JustForFun》,一直想写点东西,但始终苦于工作繁忙,无暇思考该从何写起。技术上自然不用废话,Linux的存在对于业界的贡献天下皆知,写什么都是画蛇添足。仔细回想读这本书的过程,我始终在意的是作者的思想,他对于技术生活的想法,我......