机器学习——模型评估、选择与验证

训练集与测试集

为了使机器学习训练的模型有效,可以用于实际情况中,我们不仅需要用训练集来对模型进行训练,还需要用测试集对模型进行测试以验证其可靠高效性。即训练集用来构建机器学习模型,测试集用来评估模型性能。
通常情况下我们都是将数据分为百分之八十和百分之二十,多的那部分用来做训练集,少的那部分用来做测试集。

过(欠)拟合

① 欠拟合:模型在训练集上误差很高;
原因:模型过于简单,没有很好的捕捉到数据特征,不能很好的拟合数据。
在这里插入图片描述

② 过拟合:在训练集上误差低,测试集上误差高;
原因:模型把数据学习的太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据,模型泛化能力太差。
在这里插入图片描述
在分类问题中的实例说明:

在这里插入图片描述

偏差与方差

偏差:预计值的期望与真实值之间的差距;
方差:预测值的离散程度,也就是离其期望值的距离;
我们知道欠拟合是模型在训练集上误差过高,过拟合模型是在训练集上误差低,在测试集误差高,那么模型误差的来源是什么呢?其实,模型在训练集上的误差来源主要是偏差,在测试集上误差来源主要是方差。
在这里插入图片描述
欠拟合是一种高偏差的情况,过拟合是一种低偏差,高方差的情况。

验证集与交叉验证

在机器学习中,通常需要评估若⼲候选模型的表现并从中选择模型。这⼀过程称为模型选择。可供选择的候选模型可以是有着不同超参数的同类模型。以神经网络为例,我们可以选择隐藏层的个数,学习率大小和激活函数。为了得到有效的模型,我们通常要在模型选择上下⼀番功夫。从严格意义上讲,测试集只能在所有超参数和模型参数选定后使⽤⼀次。不可以使⽤测试数据选择模型,如调参。由于⽆法从训练误差估计泛化误差,因此也不应只依赖训练数据选择模型。鉴于此,我们可以预留⼀部分在训练数据集和测试数据集以外的数据来进⾏模型选择。这部分数据被称为验证数据集,简称验证集。
k折交叉验证
由于验证数据集不参与模型训练,当训练数据不够⽤时,预留⼤量的验证数据显得太奢侈。⼀种改善的⽅法是 K 折交叉验证。在 K 折交叉验证中,我们把原始训练数据集分割成 K 个不重合的⼦数据集,然后我们做K次模型训练和验证。每⼀次,我们使⽤⼀个⼦数据集验证模型,并使⽤其它 K−1 个⼦数据集来训练模型。在这 K 次训练和验证中,每次⽤来验证模型的⼦数据集都不同。最后,我们对这 K 次训练误差和验证误差分别求平均。(根据所有子模型评分的平均值来选择超参数)
在这里插入图片描述
集成学习
在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好)。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型。集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。集成方法是将几种机器学习技术组合成一个预测模型的元算法,以达到减小方差、偏差或改进预测的效果。

自助法
在统计学中,自助法是一种从给定训练集中有放回的均匀抽样,也就是说,每当选中一个样本,它等可能地被再次选中并被再次添加到训练集中。自助法以自助采样法为基础,给定包含 m 个样本的数据集 D,我们对它进行采样产生数据集 D’;每次随机从 D 中挑选一个赝本,将其拷贝放入 D’,然后再将该样本放回初始数据集 D 中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行 m 次后,就得到了包含m个样本的数据集 D’,这就是自助采样的结果。自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。

衡量回归的性能指标

在这里插入图片描述
对于分类问题,可以使用正确率来评估模型的性能;那回归问题用什么指标来进行评估呢?
简单来说吧,可以使用均方误差(MSE),均方根误差(RMSE),平均绝对误差(MAE),R-Squared。(这里我们前面的博客中有具体介绍)

准确度的陷阱与混淆矩阵

准确率的缺陷
准确率就是正确率,

预测值 真实值
1 1
2 1
0 1
0 0
2 3

现在让你算一下它的准确度,不用思考吧,它就是五分之二。那现在可能会认为准确度越高模型分类性能越好,实际上不一定。
假如现在有一个人本身已经患有癌症,但是他自己不知道自己患有癌症。这个时候用我的癌症检测系统(系统准确率高达99%)检测发现他没有得癌症,那很显然我这个系统已经把他给害了。看到这里您应该已经体会到了,一个分类模型如果光看准确度是不够的,尤其是对这种样本极度不平衡的情况( 10000 条健康信息数据中,只有 1 条的类别是患有癌症,其他的类别都是健康)。
混淆矩阵
想进一步的考量分类模型的性能如何,可以使用其他的一些性能指标,例如精准率和召回率,但这些指标计算的基础是混淆矩阵。
来看看例子,增强一下理解:癌症检测系统的输出不是有癌症就是健康,这里用1 表示有癌症,0表示健康。假设现在有10000条数据来进行测试,其中有9978条数据的真实类别是0,系统预测的类别也是0;有2条数据的真实类别是1却预测成了0;有12 条数据的真实类别是0但预测成了1;有8条数据的真实类别是1,预测结果也是1。
现在将数据组成以下矩阵,该矩阵就是混淆矩阵
1
在这里插入图片描述
现在将正确看成True,错误看成False,0看成Negtive,1看成Positive,混淆矩阵如下:
在这里插入图片描述
因此 TN 表示真实类别是 Negtive,预测结果也是 Negtive 的数量; FP 表示真实类别是 Negtive,预测结果是 Positive 的数量; FN 表示真实类别是 Positive,预测结果是 Negtive 的数量;TP 表示真实类别是 Positive,预测结果也是 Positive 的数量。当 FN 和 FP 都等于 0 时,模型的性能应该是最好的,因为模型并没有在预测的时候犯错误。

def confusion_matrix(y_true, y_predict):  
    def TN(y_true, y_predict):  
        return np.sum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值