随机从一组测定数据中抽取一部分数据来建立模型,用其余的数据来检验此模型的方法。如在人工神经网络法中,随机从一组测定数据中抽取一部分数据来训练网络,获得权系数,根据所得到的权系数进行预测,以预测值与实验值的差值作为评价参数,来校验所建立的网络模型。这种方法叫做留一交叉校验法。
留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有k个样本,则需要训练k次,测试k次。留一发计算最繁琐,但样本利用率最高。适合于小样本的情况。
交叉验证
交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证就是重复使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。
交叉验证用在数据不是很充足的时候。比如,在日常项目中,对于普通适中问题,如果数据样本量小于一万条,我们就会采用交叉验证来训练优化选择模型。如果样本大于一万条的话,一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。用训练集来训练模型,用验证集来评估模型预测的好坏和选择模型及其对应的参数。把最终得到的模型再用于测试集,最终决定使用哪个模型以及对应参数。
根据切分的方法不同,交叉验证分为下面三种:
第一种,简单交叉验证。首先,随机的将样本数据分为两部分(比如:70%的训练集,30%的测试集),然后用训练集来训练模型,在测试集上验证模型及参数。接着,我们再把样本打乱,重新选择训练集合测试集,继续训练数据和检验模型。最后我们选择损失函数评估最优的模型和参数。
第二种是S折交叉验证(S-Folder Cross Validation)。和第一种方法不同,S折交叉验证会把样本数据随机的分成S份,每次随机的选择S-1份作为训练集,剩下的1份做测试集。当这一轮完成后,重新随机选择S-1份来训练数据。若干轮(小于S)之后,选择损失函数评估最优的模型和参数。
留一交叉验证(Leave-one-out Cross Validation),它是第二种情况的特例,此时S等于样本数N,这样对于N个样本,每次选择N-1个样本来训练数据,留一个样本来验证模型预测的好坏。此方法主要用于样本量非常少的情况,比如对于普通适中问题,N小于50时,一般采用留一交叉验证。
通过反复的交叉验证,用损失函数来度量得到的模型的好坏,最终可以得到一个较好的模型。
此外还有一种比较特殊的交叉验证方式,也是用于样本量少的时候,叫做自助法啊(bootstrapping)。比如有m个样本(m较小),每次在这m个样本中随机采集一个样本,放入训练集,采样完后把样本放回。这样重复采集n次,我们得到m个样本组成的训练集。当然,这m个样本中很有可能有重复的样本数据。同时,用没有被采样到的样本做测试集,这样接着进行交叉验证。由于我们的训练集有重复数据,这会改变数据的分布,因而训练结果会有估计偏差,因此,此种方法不是很常用,除非数据量很少,比如小于20个。
将拿到的数据,分为训练和验证集。以下图为例:将数据分成5份,其中一份作为验证集。然后经过5次(组)的测试,每次都更换不同的验证集。即得到5组模型的结果,取平均值作为最终结果,又称5折交叉验证。
交叉验证、留一交叉验证、自助法
机器学习包括许多算法:线性回归、逻辑回归、决策树、SVM、随机森林、GBDT等等。那么该如何评价某个算法在数据集上的表现呢?这里阐述3个评估方法:交叉验证、留一交叉验证、自助法。
当数据集数量有限时,我们需要将一定数量的数据用于训练,剩下的数据用于测试,也就是旁置法。当然,也许不巧:用于训练(或测试)的数据不具代表性,那么需要将数据按照某种比例进行划分,也就是分层。
一个减少由于旁置法取样而引起的任何偏差的更为通用的方法是,重复整个过程,用不同的随机样本重复进行多次训练和测试,将每次不同迭代过程中所得的误差率进行平均得到一个综合误差率,这就是重复旁置法的误差率估计。
在重复旁置法中,可能在整个过程中,有些数据一直作为测试数据或者训练数据,这样不可避免的由于训练集和测试集数据代表性不一致产生了影响。因此,进行了一个简单的变体方法,引出了交叉验证。
在交叉验证中,需要先固定一个折数,也就是划分。假设折数为3,代表将数据集大致划分为了3等分,然后2/3数据用于训练,1/3数据用于测试,这样此过程循环3次,从而使得每一个实例都可以用来训练和测试。如果同时采用了分层技术,这就是分层3折交叉验证。
设折数为 n ,那么会重复 n 次过程,也会产生 n 个测试结果。将 n 个测试结果作平均产生的结果就是该算法在数据集上的综合误差估计。
那么 n 值如何确定呢?书上说:经过大量的实验表明10折正是获得最好的错误估计的恰当选择,而且也有一些理论根据可以支持这一点。当然,为了得到可靠的误差估计,单次的10折交叉验证可能不够,有一个标准的程序是重复10次交叉验证——即10次10折交叉验证,然后取平均值。( _ 偶的天,变成计算密集型的任务了,对于加快计算,可以采用并发、GPU等方式进行。)
留一交叉验证,名字和交叉验证类似,事实也是这样。留一交叉验证,其折数就是样本的个数,设样本个数为 m ,需要重复 m 次,最后取平均值。这样的验证方法与上面的交叉验证方法比有优点也有缺点。
上面方法在采样时都是一旦从数据集中被取出放入训练集或测试集中,那么它就不能被放回。也就是说,一个实例只能被选择一次。而自助法不同,它是有放回的抽样,那么训练集中数据存在重复。
我们来阐述一个特例:0.632自助法。假设数据集中 n 个数据,那么每一个数据被取到的概率是 1/n ,抽样 n 次,某个实例不被取到的概率是 (1-1/n)^n≈0.368 .也就是说训练集中只有63.2%的数据。因此其训练数据比10折交叉验证(90%的数据)小,为了补偿这点,将测试集误差和用训练集数据计算的再带入误差率组合得到误差估计值。
这方法也存在误差,同样考虑一个完全随机的数据集,含有数量相等的两个类,面对一个随机数据,所能给出的最好的预测方式是预测它属于多数类,其真实误差率为50%。但是对于自助法而言,可能存在一个完美的算法,能够完全预测正确,导致组合后的误差估计会过于乐观。
威腾, Witten L H, Frank E. 数据挖掘: 实用机器学习技术及 Java 实现: 英文版[M]. 机械工业出版社, 2003.
什么是交叉检验
随机从一组测定数据中抽取一部分数据来建立模型,用其余的数据来检验此模型的方法。如在人工神经网络法中,随机从一组测定数据中抽取一部分数据来训练网络,获得权系数,根据所得到的权系数进行预测,以预测值与实验值的差值作为评价参数,来校验所建立的网络模型。
请教:留一交互验证均方根误差(RMSECV、RMSECVi)的计算方法与相关统计工具或工式,多谢!
RMSECV=sqrt(sum((Y-Yv).^2)/n);
其中Y是真实值,Yv是交互验证时的预测值;
留一交互验证法就是:每次从样本集中取出一个样本,用余下的样本来建立模型,用建好的模型来预测之前取出在这个样本,直到样本集中每个样本都被取出过一次。
(用数学方法表达,设样本集中有n个样本,设每次从样本中取出一个样本(第i个样本,i =1,...,n),用余下的n-1个样本构建模型,用建好的模型去预测被取出的那个样本(第i个样本,i =1,...,n),得到样本的真实值和预测值,重复这个过程直到i从1递增到n,得到各个样本的验证预测值)这时就可以用上面的公式RMSEV=sqrt(sum((Y-Yv).^2)/n)来计算留一法交互验证的均方根误差。
技巧 - 训练集与测试集划分方法
1、留出法 (hold-out) :
一部分为训练集,一部分为测试集。
尽量保证数据分布的一致性,划分比例可以是 2:1 或 4:1
对应函数:train_test_split(X,Y,test_size)
2、交叉验证法 (k-fold cross validation) :
划分为k个互斥子集,用k-1作为训练集,剩下一个为测试集,最终每一个子集都会作为测试集,其余子集作为训练集,共进行k次建模,最终得到测试结果的均值。
k取值一般为10。
随机取k个互斥子集,进行p次,最后p个k-fold cv进行取平均,叫做p次k折交叉验证。
k折交叉验证的目的:
得到模型相对稳定的评价指标,尽可能避免异常值带来的影响。
通过:在划分的时候选择多个训练集和多组测试集,求平均的效果。通过平均的度量使得测试结果相对可信一点。
k折交叉验证即能帮我们挑选出最优参数,也能帮我们挑选出最优模型。
3、留一法LOOCV (leave-one-out cross validation):
m个样本,令k=m,作为k折交叉验证的特例。只有1种划分方法,即每个测试集只有一条数据。
优势:每个模型都能很好的反应原始数据集的特性。
劣势:计算量在数据量大的时候会非常大,还不算调参的计算量。
让每一个样本都做一次测试集,其他样本都做训练集。即做一次LOOCV 需要做m次的训练,最后取平均。
4、Bootstrapping(自助法):
设现在有一个数据集D,对D中的m个数据随机取样,接着将数据放回原数据集。然后再一次继续取样,重复m次,产生一个新的数据集D' ,最后取得的数据作为测试集。
D={1,5,2,3} m=4
D‘ 长度也应该等于4 ,所以抽4次
第一次抽到了2,然后吧放回去 D’ = {2}
第二次抽到了2,然后把2放回去 D‘ = {2,2}
第三次抽到了2,然后把2放回去 D‘ = {2,2,2}
第四次抽到了3,然后把3放回去 D‘ = {2,2,2,3}
其中{1,5}没有被抽到,将其作为测试集。
根据概率, 未取到的数据占比约为36.8% :
第二章 模型评估与选择
错误率 E(error rate)
E = a / m = 样本分类错误 / 样本总数
精度(accuracy)
精度 = 1 - E
误差(error)
拟合
用s实验测试来对学习器的泛化误差进行评估
需要一个 训练集 训练学习器,一个 测试集 测试学习器
已知一个包含m个样例的数据集:
既要训练又要测试
测试集 尽可能与 训练集 互斥
以下为几种从数据集 D 产生训练集和测试集的方法
直接把 数据集D 划分为两个互斥的集合,
其中一个作为 训练集S ,另一个作为 测试集T
训练集和测试集的划分要尽可能保持数据分布的一致性,
采用 分层采样(stratified sampling)
缺点:
常见做法:2 / 3 ~ 4 / 5样本用于训练,剩余用来测试。
将 数据集D 划分为k个大小相似的互斥子集:
每个子集 都从D中通过分层采样获取,尽可能保持数据分布的一致性。
用 k-1 个子集的并集作为训练集,剩下的子集作为测试集;
可获得 k 组训练/测试集,进行 k 次训练和测试,最终返回 k 次测试结果的均值。
结果的 稳定性 和 保真性 取决于k的取值,故又称 "k折交叉验证"(k-fold cross validation)
留一法(Leave-One-Out,LOO) : 假定数据集D包含m个样本,令 k=m
给定包含m个样本的数据集D,采样产生 D'
自助采样(bootstrap sampling) :
每次随机从D中挑选一个样本,拷贝放入 D' ,然后再将该样本放回D中
重复上述过程m次,得到包含m个样本的 D' 。
样本在m次采样中始终不被采到的概率是 ,取极限得:
即通过自助采样,初试数据集D中约有36.8%的样本未出现在D'中,
用 D'作训练集,D\D'作测试集 。
验证集(validation set) :
研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型的泛化能力,
把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。
什么样的模型是好的,不仅取决于算法和数据,还取决于任务需求
在预测任务中,给定样例集
其中 是示例 的真实标记
要评估 学习器 f 的性能,看要把学习器预测结果f(x)和y进行比较
均方误差(mean squared error) :
错误率 : 分类错误的样本数占样本总数的比例
精度 : 分类正确的样本数占样本总数的比例
对于二分类问题,可以根据真实类别与学习器预测类别的组合分为:
真正例(True Positive)、假正例(False Positive)、
真反例(True Negative)、假反例(False Negative)
可得 TP+FP+TN+FN=样例总数
<table align=center>
<caption>分类结果混淆矩阵(cofusion matrix)</caption>
<tr align=center>
<th rowspan="2">真实情况</th>
<th colspan="2">预测结果</th>
</tr>
<tr align=center>
<td>正例</td>
<td>反例</td>
</tr>
<tr align=center>
<td>正例</td>
<td>TP(真正例)</td>
<td>FN(假反例)</td>
</tr>
<tr align=center>
<td >反例</td>
<td>FP(假正例)</td>
<td>TN(真反例)</td>
</tr>
</table>
查准率P (预测正例中真实正例的比率):
查全率R (真实正例中预测正例的比率):
查全率与查准率是一对矛盾的度量,
以查全率为横轴,查准率为纵轴可得 P-R曲线
P-R曲线与平衡点示意图:
P-R图能直观的显示学习器在样本总体上的查全率、查准率,
进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全包住,
则后者的性能优于前者。
很多时候无法完全包住,会产生交叉
此时需要综合考虑查准率和查全率的性能度量:
平衡点(Break-Even Point,BEP):
查准率=查全率 的取值
F1度量: 调和平均
度量:加权调和平均
多数时候会有多个二分类混淆矩阵
一种做法:
另一种做法:
先对混淆矩阵的对应元素求平均,得到TP、FP、TN、FN的平均值:
记为:
再计算:
学习器为测试样本产生一个实值或概率预测,然后将预测值与分类 阈值(threshold) 比较,
大于阈值则为正类,小于阈值则为反类
根据实值或概率预测可以将测试样本进行排序,
"最可能"是正例的排在最前面,"最不可能"是正例的排在最后面,
分类过程即相当于在排序中以某个 截断点(cut point) 将样本分为两部分,
前一部分为正例,后一部分为反例
可根据不同任务需求选择截断点:
ROC:受试者工作特征(Receiver Operating Characteristic)
对角线对应于随机猜测模型;
(0,1)点对应于所有正例都在反例之前的理想模型
现实任务为有限样例,只能绘制图(b)所示的近似ROC曲线。
绘制方法:
与P-R图类似,若一个学习器的ROC曲线被另一个学习器的曲线完全包住,
则后者的性能优于前者。
若曲线产生交叉,可以用 AUC(Area Under ROC Curve,ROC曲线下的面积) 进行比较。
AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系
给定 个正例和 个反例,令 和 分别表示正、反例集合
则有
排序损失(loss):
真正例率的分母是 ,假正例率的分母是
ROC曲线图可看成矩形分割成 个小矩形,则:
为ROC曲线上部分的面积
AUC为ROC曲线下部分的面积
为权衡不同类型错误所造成的不同损失,可为错误赋予"非均等代价"(unequal cost)
<table align=center>
<caption>二分类代价矩阵(cost matrix)</caption>
<tr align=center>
<th rowspan="2">真实类别</th>
<th colspan="2">预测类别</th>
</tr>
<tr align=center>
<td>第0类</td>
<td>第1类</td>
</tr>
<tr align=center>
<td>第0类</td>
<td>0</td>
<td>cost_01</td>
</tr>
<tr align=center>
<td >第1类</td>
<td>cost_10</td>
<td>0</td>
</tr>
</table>
:表示将第i类样本预测为第j类样本的代价
一般来说,
令第0类作为正类,第1类作为反类,
作为正例子集, 作为反例子集。
代价敏感(cost-sensitive)错误率:
非均等条件下,ROC曲线不能直接反映学习器的期望总体代价,
而 代价曲线(cost curve) 可以。
其中,p为样例为正例的概率
其中FPR是假正例率,FNR=1-TPR是假反例率。
代价曲线的绘制:
对学习器性能进行评估
故通过统计假设检验(hypothesis test)来进行学习器性能比较
先介绍两种最基本的假设检验,默认以错误率为性能度量,用 表示。
现实中我们只能获取 测试错误率 ,
而不知道其 泛化错误率
二者未必相同,但接近的可能性比较大,因此可通过测试错误率估推出泛化错误率。
泛化错误率为 的学习器在一个样本上犯错的概率是 ;
测试错误率 意味着在m个测试样本中有 个被误分类。
假设测试样本是从样本总体分布中独立采样而得,
那么泛化错误率为 的学习器将其中m'个样本误分类
其余样本全部分类正确的概率为
其中,
由此可估算出学习器刚好将 个样本误分类的概率为:
这也表示了在m个样本的测试集上,泛化错误率为 的学习器被测得测试错误率为 的概率。
对于给定的(做实验得到的)测试错误率,由 可得, 在 时取最大值,符合二项分布(binomial)
如下图所示,取 ,则10个样本中测得3个被误分类的概率最大。
使用二项检验(binomial test)对 (泛化错误率是否不大于3)的假设进行检验
考虑假设 ,
在 的概率内所能观测到的最大错误率如下式( 为置信度(confidence),对应上图非阴影部分):
(s.t.是“subject to”的简写,表示在右式条件满足的时候左式才成立)
这里公式还有疑问
若测试错误率 小于临界值 ,
则根据二项检验可得:
大多数时候我们并非只做一次留出法估计,而是通过多次重复留出法或交叉验证法等进行多次训练/测试,会得到多个测试错误率,此时可用"t检验"。
假定我们得到k个测试错误率, ,则此时有:
考虑到k个测试错误率可看作泛化错误率 的独立采样,则有变量:
服从自由度为 k-1 的t分布
如下图:
对于假设 和显著度 ,
可以计算当测试错误率为 时,在 概率内能观测到的最大错误率,即临界值。
如上图所示,两边阴影部分各有 的面积
阴影部分范围分别为
若 位于临界值范围内 内,则不能拒绝假设
下表给出一些常用临界值:
<table align=center>
<caption>双边 t 检验常用临界值</caption>
<tr align=center>
<th rowspan="2">a</th>
<th colspan="5">k</th>
</tr>
<tr align=center>
<td>2</td>
<td>5</td>
<td>10</td>
<td>20</td>
<td>30</td>
</tr>
<tr align=center>
<td>0.05</td>
<td>12.706</td>
<td>2.776</td>
<td>2.262</td>
<td>2.093</td>
<td>2.045</td>
</tr>
<tr align=center>
<td>0.10</td>
<td>6.314</td>
<td>2.132</td>
<td>1.833</td>
<td>1.729</td>
<td>1.699</td>
</tr>
</table>
上面是对于单个学习器泛化性能的假设进行检验,
而在现实中我们需要对不同学习器的性能进行比较,
下面介绍此类情况的假设检验方法。
对两个学习器A和B,记使用k折交叉验证法得到的测试错误率分别为 和 ,
其中, 表示在相同的第i折训练/测试集上得到的结果。
可用k折交叉验证"比较t检验"(paired t-tests)进行比较检验。
基本思想:若两个学习器性能相同,则使用相同的训练/测试集得到的测试错误率应相同,即
具体做法:
对于一个有效的假设检验,应保证测试错误率都是泛化错误率的独立采样,
但在上述过程中,所采用的训练集在不同轮次会有一定程度的重叠,故测试错误率并不独立,
为缓解这一问题,故采用" 交叉验证"法
具体做法:
对于二分类问题,留出法不仅可以估计学习器A和B的测试错误率,还能获得两学习器分类结果的差别,如列联表(contingency table):
<table align=center>
<caption>两学习器分类差别列联表</caption>
<tr align=center>
<th rowspan="2">算法B</th>
<th colspan="2">算法A</th>
</tr>
<tr align=center>
<td>正确</td>
<td>错误</td>
</tr>
<tr align=center>
<td>正确</td>
<td>e_00</td>
<td>e_01</td>
</tr>
<tr align=center>
<td >错误</td>
<td>e_10</td>
<td>e_11</td>
</tr>
</table>
做假设两学习器性能相同,则有
那么变量 应符合正态分布
McNemar检验考虑变量:
服从自由度为 1 的 分布
自由度为 1 的 检验的临界值:
交叉验证t检验和McNemar检验都是在一个数据集上比较两个算法的性能,
而很多时候需要在一组数据集上对多个算法进行比较。
两种办法:
假设用4个数据集: 对算法A、B、C进行比较
使用留出法或交叉验证法得到每个算法在每个数据集上的测试结果,
然后再每个数据集上根据测试性能由好到坏排序,赋予序值1,2,3,...
若性能相同则平分序值,如下图:
然后使用 Frideman检验 判断算法的性能是否相同
若相同,则平均序值应相同
假定在N个数据集上比较k个算法,令 表示第i个算法的平均序值(暂不考虑平分序值)
的均值为(k+1)/2,方差为
变量:
当k和N较大时,服从自由度为k-1的 分布
上述原始Frideman检验过于保守,现常使用:
变量:
服从自由度为k-1和(k-1)(N-1)的 F 分布
下表为一些常用临界值
若"所有算法性能相同"这个假设被拒绝,则说明算法的性能显著不同,
这时需要进行后续检验(post-hoc test)来进一步区分算法
常用 Nemenyi后续检验
计算出平均序值差别的临界值域:
下表给出常用的 值
若两个算法的平均序值之差超过了临界值域CD,则拒绝假设"所有算法性能相同"
通过"偏差-方差分解"来解释学习算法的泛化性能
泛化误差=偏差+方差+噪声
偏差:度量学习算法的期望预测与真实结果的偏离程度,刻画学习算法本身的拟合能力
方差:度量同样大学的训练集的变动导致的学习性能的变化,刻画数据扰动产生的影响
噪声:表达当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画学习问题本身的难度
一般来说,偏差与方差是有冲突的,称为偏差-方差窘境(bias-variance dilemma)
训练不足时,学习器拟合能力较弱,泛化误差较大
训练充足后,继续训练会使学习器过拟合,泛化误差增高
一文看懂 AI 训练集、验证集、测试集(附:分割方法+交叉验证)
先用一个不恰当的比喻来说明3种数据集之间的关系:
训练集(Training Dataset)是用来训练模型使用的。
在《 一文看懂机器学习 》里我们介绍了机器学习的7个步骤,训练集(Training Dataset)主要在训练阶段使用。
当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。 同时通过调整超参数,让模型处于最好的状态 。
验证集有2个主要的作用:
说明:
当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估。
通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等。
扩展阅读:《 分类模型评估指标——准确率、精准率、召回率、F1、ROC曲线、AUC曲线 》
下面的数据集划分方式主要针对「留出法」的验证方式,除此之外还有其他的交叉验证法,详情见下文——交叉验证法。
数据划分的方法并没有明确的规定,不过可以参考3个原则:
假如我们教小朋友学加法:1个苹果+1个苹果=2个苹果
当我们再测试的时候,会问:1个香蕉+1个香蕉=几个香蕉?
如果小朋友知道「2个香蕉」,并且换成其他东西也没有问题,那么我们认为小朋友学习会了「1+1=2」这个知识点。
如果小朋友只知道「1个苹果+1个苹果=2个苹果」,但是换成其他东西就不会了,那么我们就不能说小朋友学会了「1+1=2」这个知识点。
评估模型是否学会了「某项技能」时,也需要用新的数据来评估,而不是用训练集里的数据来评估。这种「训练集」和「测试集」完全不同的验证方法就是交叉验证法。
留出法(Holdout cross validation)
上文提到的,按照固定比例将数据集 静态的 划分为训练集、验证集、测试集。的方式就是留出法。
留一法(Leave one out cross validation)
每次的测试集都只有一个样本,要进行 m 次训练和预测。
这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布。但是训练复杂度增加了,因为模型的数量与原始数据样本数量相同。
一般在数据缺乏时使用。
k 折交叉验证(k-fold cross validation)
静态的「留出法」对数据的划分方式比较敏感,有可能不同的划分方式得到了不同的模型。「k 折交叉验证」是一种动态验证的方式,这种方式可以降低数据划分带来的影响。具体步骤如下:
k 一般取 10
数据量小的时候,k 可以设大一点,这样训练集占整体比例就比较大,不过同时训练的模型个数也增多。
数据量大的时候,k 可以设小一点。
本文首发自 产品经理的 AI 学习库 easyai.tech
K折交叉验证
机器学习中,在样本量不充足的情况下,为了充分利用数据集对算法效果进行测试,将数据集随机分为 k 个包,每次将其中一个包作为测试集,剩下 k-1 个包作为训练集进行训练。
k 折交叉验证的的 k 值不能太大,也不能太小。k 值过大,会降低运算速度。若 k 与样本数量 N 相同,则是留一法(Leave-One-Out)。k 值较大,训练集越接近整个训练样本,有利于减小模型偏差(bias)。一般可以将 k 作为超参数调试,根据表现选择合适的 k 值。
k 折交叉验证能够有效提高模型的学习能力,类似于增加了训练样本数量,使得学习的模型更加稳健,鲁棒性更强。选择合适的 k 值能够有效避免过拟合。
红外光谱分析时用PLS建模的留一交叉验证均方根误差RMSECV意义是什么?与RMSEC的关系是什么?
运用近红外光谱建立延胡索中5种生物碱成分同步测定的定量模型
杨立新 - 《中国中药杂志》 - 2015 - 万方
该文建立了同步测定延胡索中盐酸黄连碱、海罂粟碱、脱氢紫堇碱、延胡索乙素和延胡索甲素5种生物碱成分的近红外光谱定量模型。首先采用高效液相色谱结合紫外检测法...
关键词: 近红外光谱测定法 / 偏最小二乘法 / 无损测定 / 延胡索 / 生物碱成分
被引量: 5
相关文章
延胡索中3种成分近红外同步定量检测模型的建立
顾超 , ... - 《中国实验方剂学杂... - 2017 - 维普
目的:建立延胡索近红外定量检测模型,快速测定延胡索中去氢紫堇碱、延胡索乙素、紫堇碱的含量。方法:通过HPLC测定延胡索中去氢紫堇碱、延胡索乙素、紫堇碱的化学值,...
关键词: 延胡索 / 近红外光谱 / 去氢紫堇碱 / 延胡索乙素 / 紫堇碱
被引量: 2
相关文章
延胡索中延胡索乙素含量的近红外光谱定量模型的建立
徐志伟 , ... - 《中华中医药学刊》 - 2013 - 维普
目的:建立延胡索生品和炮制品中延胡索乙素含量快速测定的近红外光谱定量模型。方法:以HPLC分析值作为参照,采用傅里叶变换近红外漫反射光谱技术采集延胡索生品和炮...
关键词: 延胡索 / 近红外光谱法 / 延胡索乙素
被引量: 1
相关文章 免费下载
HPLC法同时测定延胡索中5种
神经网络中什么是交叉验证,为什么要进行交叉验证?
交叉验证(Cross - validation)的好处是可以从有限的学习数据中获取尽可能多的有效信息,从而获得更合适的两层权值;并且此方法是从多个方向开始学习样本,可以有效的避免陷入局部极小值。采用交叉验证方法的前提是将神经网络已有的学习数据分为两部分:训练数据和验证数据。先对训练数据进行学习得到权值,用权值检验验证数据得到一个正确率,如果达到了标准,则进行下一组的训练数据的学习,否则用训练样本学习修改权值。为了得到好的学习效果,无论训练样本还是验证样本都要尽可能参与学习。一般选取10重交叉验证( 10 - fold cross - validation) [ 5 ]可以得到较好的学习效果。