机器学习-模型评估

一.经验误差和过拟合

  错误率  E=a/m, a分类错误的样本数,m样本总数

  精度 = 1 - E。

  学习器在训练集上的误差:训练误差;在新样本上的误差:泛化误差。好的学习器应在新样本上表现优秀,因此学习器应尽可能掌握样本的潜在规律,提升泛化性能。

  过拟合:学习能力过于强大,样本训练时将样本“自身特点”当做潜在样本的“一般规律”,导致泛化能力下降。

  欠拟合:学习能力低下,对训练样本的一般性质未掌握好。

一般来说,欠拟合比较容易克服,如决策树-增加分支,神经网络-增加训练轮数等。而过拟合是机器学习的关键障碍,在机器学习算法中过拟合是无法避免的,应尽可能缓解或是减小其风险。

二.模型选择-评估方法

  对于model selection问题,由于无法直接根据泛化误差进行评估,而训练误差由于过拟合的存在不适合作为评估标准。通常选用试验测试的方法得到“测试误差”作为近似的泛化误差。测试集应尽量与训练集互斥。

  对于只有一个包含m个样例的数据集D={(x1,y1), (x2,y2), ...., (xm,ym)}。通常对D进行适当处理产生训练集S和测试集T。

  1.留出法

  D = S U T,S、T互斥

  将D直接划分为互斥的两个集合作为S和T,并保持S、T的样本类别比例和D相似(即分层采样)。由于样本个体差异性,划分方式有很多种,在使用留出法时一般做若干次随机划分、重复进行实验评估后取平均值作为评估结果。常见做法将2/3~4/5的样本用于训练,其余用于测试。

  缺点:若训练集S包含绝大多数样本,S训练模型可能更接近用D训练模型,测试集T较小,评估结果不够稳定准确(方差较大)

    若测试机T较大,则S训练模型与D训练模型可能有较大差别,降低评估结果的保真性(偏差较大)。

  2.交叉验证法(k折交叉验证 k-fold cross validation)

D = D1 U D2 U ... U Dk,Di和Dj互斥(i != j)

  将D划分为k(常用k=10)个互斥的子集D1~Dk,每个子集对D分层采样得到。每次用k-1个子集作为训练集,剩下一个作为测试集,进行k次训练和测试,最终返回均值。同留出法类似,通常随机使用不同的划分重复p次,即p次k折交叉验证法,最终返回均值。

  留一法:假设D包含m个样本,令k=m,将m个样本划分为m个子集采用k折交叉验证。导致绝大多数情况下S训练模型与D训练模型很相似,计算复杂度高,适用于数据集不是很大的情况。

  3.自助法(bootstrapping)

  对包含m个样本的数据集D进行m次随机采样生成D‘作为训练集,而集合(D - D‘)作为测试集。对自助法分析如下:

    易得样本在m次采样中均不被采用的概率为

,对m取极限得到

    通过自助采样,大约有1/e(36.8%)的样本未出现在训练集中。这样,实际模型和期望模型都采用m个训练样本,同时仍有总数据大约1/3的样本可以用于测试,这样的测试结果称为“包外估计”。自助法大多用于训练集较小、难以有效分类的数据集,对集成学习有很大好处。

    缺点:bootstrapping改变了初始数据集的分布,会引入估计偏差。若初始数据量足够,留出法和交叉验证法更常用一些。

  

  4.算法调参(parameter tuning)

  大多数学习算法都有参数设定,参数配置不同学得的模型性能往往不同。因此,对适用学习算法不仅要进行选择,还需对算法参数进行配置。

  一个有效的学习算法往往有庞大规模的参数设置。在机器学习中,参数涉及两类:

    超参数:即算法的参数。

    模型参数:对于大型深度学习算法往往有巨量的调参工作。

  两者的调参方式类似,都是产生多种模型后基于某种评估算法进行评估。不同之处在于超参数通常由人工设定调参,模型参数则通过学习产生多个候选模型(如神经网络在不同轮数停止训练)。

  

  

原文地址:https://www.cnblogs.com/KrianJ/p/10465672.html

时间: 2024-08-30 14:25:07

机器学习-模型评估的相关文章

机器学习模型评估指标汇总

在使用机器学习算法过程中,针对不同的问题需要不用的模型评估标准,这里统一汇总.主要以两大类分类与回归分别阐述. 一.分类问题 1.混淆矩阵 混淆矩阵是监督学习中的一种可视化工具,主要用于比较分类结果和实例的真实信息.矩阵中的每一行代表实例的预测类别,每一列代表实例的真实类别. 真正(True Positive , TP):被模型预测为正的正样本. 假正(False Positive , FP):被模型预测为正的负样本. 假负(False Negative , FN):被模型预测为负的正样本. 真

tensorflow机器学习模型评估

在搭建网络模型时通常要建立一个评估模型正确率的节点(evaluation_step) 这里介绍一个对于分类问题可以用的评估方法: 代码: correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(groundtruth_input, 1)) evaluation_step = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 介绍一下其中的几个函数 tf.argmax(

机器学习笔记(二)模型评估与选择

2.模型评估与选择 2.1经验误差和过拟合 不同学习算法及其不同参数产生的不同模型,涉及到模型选择的问题,关系到两个指标性,就是经验误差和过拟合. 1)经验误差 错误率(errorrate):分类错误的样本数占样本总数的比例.如果在m个样本中有a个样本分类错误,则错误率E=a/m,相应的,1-a/m称为精度(accuracy),即精度=1-错误率. 误差(error):学习器的实际预测输出和样本的真实输出之间的差异.训练误差或经验误差:学习器在训练集上的误差:泛化误差:学习器在新样本上的误差.

【机器学习 第2章 学习笔记】模型评估与选择

1.训练误差:学习器在训练集上的误差,也称“经验误差” 2.泛化误差:学习器在新样本上的误差 显然,我们的目标是得到在新样本上表现更好的学习器,即泛化误差要小 3.过拟合:学习器把训练样本学的太好了,导致泛化性能下降(学过头了...让我联想到有些人死读书,读死书,僵化,不懂得变通和举一反三) 原因:学习能力过于强大,把一些不太一般的特性也学了进来 针对措施:不好解决,是机器学习面临的关键障碍 4.欠拟合:就是连训练集都没学好,更别说泛化了(有点管中窥豹,盲人摸象的意思). 原因: 学习能力低下

机器学习之模型评估与模型选择(学习笔记)

时间:2014.06.26 地点:基地 -------------------------------------------------------------------------------------- 一.训练误差和测试误差 机器学习或者说统计学习的目的就是使学习到的模型不仅对已知数据而且对未知数据都都很好的预测能力.不同的学习方法会得出不同的模型.在评判学习方法的好坏时,常用的是: 1.基于损失函数的模型的训练误差                          2.模型的测试误

TensorFlow教程03:针对机器学习初学者的MNIST实验——回归的实现、训练和模型评估

实现回归模型 为了用python实现高效的数值计算,我们通常会使用函数库,比如NumPy,会把类似矩阵乘法这样的复杂运算使用其他外部语言实现.不幸的是,从外部计算切换回Python的每一个操作,仍然是一个很大的开销.如果你用GPU来进行外部计算,这样的开销会更大.用分布式的计算方式,也会花费更多的资源用来传输数据. TensorFlow也把复杂的计算放在python之外完成,但是为了避免前面说的那些开销,它做了进一步完善.Tensorflow不单独地运行单一的复杂计算,而是让我们可以先用图描述一

机器学习总结之第二章模型评估与选择

机器学习总结之第二章模型评估与选择 2.1经验误差与过拟合 错误率 = a个样本分类错误/m个样本 精度 = 1 - 错误率 误差:学习器实际预测输出与样本的真是输出之间的差异. 训练误差:即经验误差.学习器在训练集上的误差. 泛化误差:学习器在新样本上的误差. 过拟合:学习器把训练样本学的"太好",把不太一般的特性学到了,泛化能力下降,对新样本的判别能力差.必然存在,无法彻底避免,只能够减小过拟合风险. 欠拟合:对训练样本的一半性质尚未学好. 2.2评估方法 (在现实任务中,还需考虑

【机器学习123】模型评估与选择 (上)

第2章 模型评估与选择 2.1 经验误差与过拟合 先引出几个基本概念: 误差(error):学习器的实际预测输出与样本的真实输出之间的差异. 训练误差(training error):学习器在训练集上的误差,也称"经验误差". 测试误差(testing error):学习器在测试集上的误差. 泛化误差(generalization error):学习器在新样本上的误差. 错误率(error rate):分类错误的样本数占样本总数的比例. 精度(accuracy) = 1 – 错误率.

评估机器学习模型的几种方法(验证集的重要性)

什么是评估机器学习模型     机器学习的目的是得到可以泛化(generalize)的模型,即在前所未见的数据上表现很好的模型,而过拟合则是核心难点.你只能控制可以观察的事情,所以能够可靠地衡量模型的泛化能力非常重要. 如何衡量泛化能力,即如何评估机器学习模型. 评估模型的重点是将数据划分为三个集合:训练集.验证集和测试集.在训练数据上训练模型,在验证数据上评估模型.一旦找到了最佳参数,就在测试数据上最后测试一次. 为什么需要验证集 原因在于开发模型时总是需要调节模型配置,比如选择层数或每层大小