第1章 问题建模

随着大数据时代的到来,机器学习成为解决问题的一种关键工具。不管是在工业界还是在学术界,机器学习都是炙手可热的方向。但是学术界和工业界对机器学习的研究各有侧重。学术界侧重于对机器学习理论的研究,工业界侧重于如何用机器学习来解决实际问题。我们结合机器学习的实践经验,详细介绍机器学习解决问题的整个流程。图1-1即为我们概括的机器学习解决问题的通用流程,通用流程主要分为4大部分。

问题建模。解决一个机器学习问题都是从问题建模开始。首先需要收集问题的资料,深入理解问题,然后将问题抽象成机器可预测的问题。在这个过程中要明确业务指标和模型预测目标,根据预测目标选择适当的评估指标用于模型评估。接着从原始数据中选择最相关的样本子集用于模型训练,并对样本子集划分训练集和测试集,应用交叉验证的方法对模型进行选择和评估。

特征工程。完成问题建模、对数据进行筛选和清洗之后的步骤,就是对数据抽取特征,即特征工程。特征工程是一项很重要但又很困难的任务,不仅需要我们对模型和算法有深入的理解,还需要我们有很扎实的专业领域知识。工业界大多数成功应用机器学习的问题,都是在特征工程方面做得很好。虽然不同模型和不同问题都会导致特征工程差异很大,但仍有很多特征工程的技巧可以通用。

模型选择。我们进行特征工程是为了将特征输入给模型,让模型从数据中学习规律。但是模型有很多,不同的模型有很大差别,使用场景不同,能够处理的特征也有很大差异。当我们经过特征工程得到一份高质量的特征之后,还需要考虑哪个模型能够更准确地从数据中学习到相应规律。从众多模型中选择最佳的模型也需要对模型有很深入的理解。

模型融合。如上所言,不同模型会有很大差别,能够从数据中学到的规律也会不同。我们可以采用模型融合的方法,充分利用不同模型的差异,以进一步优化目标。

后面的章节会详细介绍特征工程、模型选择和模型融合。本章主要介绍问题建模,包括评价指标、样本选择和交叉验证等内容。

从机器学习的发展现状来看,很多机器学习从业者在处理问题时是直接进行特征工程和模型选择,而忽略了问题建模。问题建模是十分重要的一个环节,必不可少。评价指标很多,我们应该选择一个能跟业务指标波动一致的评估指标,这样通过观察评估指标就能判断模型效果,可以大大提高模型迭代效率。否则评估指标都没有参考意义。有一个好的评估指标未必足够,还需要选择一种好的交叉验证方法,比如对只有100条样本的测试集评估准确率,模型A准确率100%,模型B准确率95%,因为测试集太小,得到的准确率不能充分代表模型的好坏,我们无法确定模型A一定比模型B好。同样我们的原始数据不可避免地会有异常数据,比如系统异常导致日志记录错误,将异常数据和低质量数据用于模型训练势必会导致模型效果变差,通过样本选择提高数据质量能起到事半功倍的效果。

图像说明文字

1.1 评估指标

评估指标用于反映模型效果。在预测问题中,要评估模型的效果,就需要将模型预测结果f(X)和真实标注Y进行比较,评估指标定义为f(X)和Y的函数。

score=metric(f(X),Y)

模型的好坏是相对的,在对比不同的模型效果时,使用不同评估指标往往会导致不同的结论。

通常,线下使用的是机器学习评估指标,线上使用的是业务指标。如果线下指标和线上指标不同,则可能会出现线下指标变好而线上指标变差的现象。为此,在一个新问题的开始阶段,都会进行多轮模型迭代,来探索与线上业务指标一致的线下指标,尽可能使线下指标的变化趋势跟线上指标一致。没有一个跟线上一致的线下指标,意味着线下指标没有参考价值,想判断此次试验是否有效,只能上线实验。而上线实验成本远高于离线实验成本,通常需要在线实验较长时间并对效果进行可信度检验(如t-test)之后才能得出结论,这必然会导致模型迭代进度变慢。

评估指标根据任务类型分类,可分为分类指标、回归指标、聚类指标和排序指标等。下面将介绍一些常用的评估指标以及它们适用场景。

1.1.1 分类指标

1. 精确率和召回率

精确率和召回率多用于二分类问题,可结合混淆矩阵介绍,如表1-1所示。

图像说明文字

其中,TP(真正,True Positive)表示真实结果为正例,预测结果也是正例;FP(假正,False Positive)表示真实结果为负例,预测结果却是正例;TN(真负,True Negative)表示真实结果为正例,预测结果却是负例;FN(假负,False Negative)表示真实结果为负例,预测结果也是负例。显然,TP+FP+FN+TN= 样本总数。

精确率P和召回率R的定义为:

图像说明文字

理想情况下,精确率和召回率两者都越高越好。然而事实上这两者在某些情况下是矛盾的:精确率高时,召回率低;而精确率低时,召回率高。比如在搜索网页时,如果只返回最相关的那一个网页,那精确率就是100%,而召回率就很低;如果返回全部网页,那召回率为100%,而精确率就很低。因此在不同场合需要根据实际需求判断哪个指标更重要。

我们以召回率R为横轴、以精确率P为纵轴能够画出P-R曲线,如图1-2所示。P-R曲线越靠近右上角性能越好,曲线下的面积叫AP分数(Average Precision Score,平均精确率分数)。对比不同模型的AP分数,能在一定程度上反映模型的精确率和召回率都高的比例。但这个值计算不方便,人们设计了一些综合考虑精确率和召回率的指标。

图像说明文字

F_1值就是这样一个常用的指标。F_1值是精确率和召回率的调和平均值:

图像说明文字

F值可泛化为对精确率和召回率赋不同权重进行加权调和:

图像说明文字

此外,准确率和错误率也是常用的评估指标。

图像说明文字

精确率和准确率是比较容易混淆的两个评估指标,两者是有区别的。精确率是一个二分类指标,而准确率能应用于多分类,其计算公式为:

图像说明文字

2. ROC与AUC

在众多的机器学习模型中,很多模型输出是预测概率。而使用精确率、召回率这类指标进行模型评估时,还需要对预测概率设分类阈值,比如预测概率大于阈值为正例,反之为负例。这使得模型多了一个超参数,并且这个超参数会影响模型的泛化能力。

接收者操作特征(Receiver Operating Characteristic,ROC)曲线不需要设定这样的阈值。ROC曲线纵坐标是真正率,横坐标是假正率,如图1-3所示。其对应的计算公式为:

图像说明文字

ROC曲线与P-R曲线有些类似。ROC曲线越靠近左上角性能越好。左上角坐标为(0,1),即FPR=0,TPR=1,根据FPR和TPR公式可以得知,此时FN=0,FP=0,模型对所有样本分类正确。绘制ROC曲线很简单,首先对所有样本按预测概率排序,以每条样本的预测概率为阈值,计算对应的FPR和TPR,然后用线段连接。当数据量少时,绘制的ROC曲线不平滑;当数据量大时,绘制的ROC曲线会趋于平滑。

AUC(Area Under Roc Curve)即ROC曲线下的面积,取值越大说明模型越可能将正样本排在负样本前面。AUC还有一些统计特性:AUC等于随机挑选一个正样本(P)和负样本(N)时,分类器将正样本排前面的概率;AUC和Wilcoxon Test of Ranks等价;AUC还和基尼(Gini)系数有联系,满足等式Gini + 1 = 2 • AUC。

AUC的计算方法有多种,从物理意义角度理解,AUC计算的是ROC曲线下的面积:

图像说明文字

从概率意义角度理解,AUC考虑的是样本的排序质量,它与排序误差有密切关系,可得到计算公式:

图像说明文字

其中,rank为样本排序位置从1开始,|P|为正样本数,|N|为负样本数。

AUC计算主要与排序有关,所以它对排序敏感,而对预测分数没那么敏感。

3. 对数损失

对数损失(Logistic Loss,logloss)是对预测概率的似然估计,其标准形式为:

logloss=-logP(Y│X)

对数损失最小化本质上是利用样本中的已知分布,求解导致这种分布的最佳模型参数,使这种分布出现概率最大。

对数损失对应的二分类的计算公式为:

图像说明文字

其中,y∈{0,1},pi 为第i条样本预测为1的概率。

对数损失在多分类问题中也使用广泛,其计算公式为:

图像说明文字

其中,N为样本数,C为类别数,yij=1表示第i条样本的类别为j,pij为第i条样本类别j的概率。

logloss衡量的是预测概率分布和真实概率分布的差异性,取值越小越好。与AUC不同,logloss对预测概率敏感。

1.1.2 回归指标

1. 平均绝对误差

平均绝对误差(Mean Absolute Error,MAE),也叫L1范数损失(L1-norm Loss),其公式为:

图像说明文字

其中,N为样本数,yi为第i条样本的真实值,pi为第i条样本的预测值。MAE是绝对误差的平均值,因为预测误差有正有负,绝对值可以避免正负抵消。MAE能很好地刻画预测值与真实值的偏差。模型使用MAE作为损失函数则是对数据分布的中值进行拟合。某些模型(如XGBoost)必须要求损失函数有二阶导数,所以不能直接优化MAE。

加权平均绝对误差(Weighted Mean Absolute Error,WMAE)是基于MAE的变种评估指标,对每条样本考虑不同的权重,比如考虑时间因素,离当前时间越久的样本权重越低。其计算公式为:

图像说明文字

其中,wi是第i条样本的权重。

2. 平均绝对百分误差

平均绝对百分误差(Mean Absolute Percentage Error,MAPE)的公式为:

图像说明文字

MAPE通过计算绝对误差百分比来表示预测效果,其取值越小越好。如果MAPE = 10,这表示预测平均偏离真实值10%。MAPE计算与量纲无关,因此在特定场景下不同问题具有一定可比性。MAPE的缺点也比较明显,在yi=0处无定义,并且如果yi接近0可能导致MAPE大于100%。而且,MAPE对负值误差的惩罚大于正值误差。基于这些缺点也有一些改进的评价指标,如MASE、sMAPE、MDA。

3. 均方根误差

均方根误差(Root Mean Squared Error,RMSE)的公式为:

图像说明文字

RMSE代表的是预测值和真实值差值的样本标准差。和MAE比,RMSE对大误差样本有更大的惩罚;但它也对离群点敏感,其健壮性不如MAE。模型使用RMSE作为损失函数则是对数据分布的平均值进行拟合。

基于均方根误差也有一个常用的变种评估指标叫均方根对数误差(Root Mean Squared Logarithmic Error,RMSLE),其公式为: 图像说明文字

RMSLE对预测值偏小的样本惩罚比对预测值偏大的样本惩罚更大,比如一个酒店消费均价是200元,预测成150元的惩罚会比预测成250元的大。如果评估指标选用RMSLE,没办法直接优化RMSLE但是能直接优化RMSE的模型,通常会先对预测目标进行对数变换ynew=log⁡(y+1),最后预测值再还原p=exppnew-1。

1.1.3 排序指标

1. 平均准确率均值

平均准确率均值(Mean Average Precision,MAP)的公式分两部分计算,先计算一次排序的平均准确率,再计算总体的平均准确率。常用的MAP指标会限定评估排在前面的文档质量。

图像说明文字

其中,AP@K表示计算前K个结果的平均准确率;M表示每次排序的文档总数,可能一次返回文档数不足K个;P(k)表示前k个结果的准确率;rel(k)表示第k个结果是否是相关文档,相关取值为1,不相关取值为0。

图像说明文字

其中,Q为查询的数量,APq@K为第q次查询的AP@K结果。

下面举个例子说明,其中,黑色代表相关,白色代表不相关。

图像说明文字

那么进一步计算MAP@5= 1/2 (0.76+0.5)=0.63。

2. NDCG

NDCG(Normalized Discounted Cumulative Gain,归一化贴现累计收益)是常用的一个衡量排序质量的指标,其公式为:

图像说明文字

其中,NDCG@K表示计算前K个结果的NDCG;relk表示第k个位置的相关性得分;IDCG@K是前K个排序返回结果集能得到的最佳排序结果,用于归一化DCG@K;|REL|为结果集按相关性排序后的相关性得分列表。

相对于MAP指标,描述相关性只用0/1二值描述,NDCG相关性度量则可分更多等级。比如网页排序中常用的5个等级使评分更丰富。但是相关性描述是一个超参数,需要人为定义。此外,NDCG还考虑了位置偏置,使不同位置权重不同。

下面用一个例子来帮助理解——计算NDCG@4,其中预定义rel={0,1,2},取值越大说明越相关,如表1-2所示。

图像说明文字

1.2 样本选择

样本选择是数据预处理中非常重要的一个环节,主要是从海量数据中识别和选择相关性高的数据作为机器学习模型输入。样本选择的目的是从完整训练集T中选择一个子集S⊂T,子集S不再包含冗余样本,如图1-4所示。最理想的样本选择结果是,选择了最少量的训练集S,而模型效果依然不会变差,即满足P(AlgoS )=P(AlgoT),其中,P表示模型评估函数,Algo表示机器学习模型。做样本选择主要有以下三点好处。

 当数据量过大时,程序有时候会耗费大量计算资源和计算时间,有时候甚至不能正常运行。减小数据量能够缩减模型的运算时间,使某些因为数据量过大无法应用机器学习模型的问题变得可能。

 全部的数据集包含丰富的信息,但是一个具体的问题,通常只需要选取一部分问题相关的信息,相关性太低的数据对解决特定问题可能没有帮助。

 数据中几乎不可避免地会有噪声数据,这些噪声可能是系统原因导致数据有错误、重复等。通过去除噪声能提高训练集的数据质量,改善模型效果。

图像说明文字

样本选择有很多方法,数据去噪、采样是相对简单有效的方法,也有广泛的应用。当然还有很多方法不依赖采样,而是通过搜索整个数据集或利用算法来实现样本选择的,这类方法可总结为原型选择(Prototype Selection,PS)和训练集选择(Training Set Selection,TSS)。

1.2.1 数据去噪

数据中含有噪声数据几乎是不可避免的问题。噪声的存在会导致数据质量变低,影响模型的效果,但通过在训练集中引入噪声数据也能起到提升模型健壮性的作用。因此,包含噪声数据的问题是非常复杂的,特别是当选择的模型对噪声敏感的时候,问题会更严重。要进行去噪操作,对噪声进行识别是十分关键的一个步骤。识别出了噪声之后,可以采取直接过滤或者修改噪声数据等多种做法。

噪声在监督学习问题中影响明显,会改变特征和标注之间的关系,影响到特征提取;并且有噪声训练集和无噪声训练集得到的模型也会有差异。为此,提高模型健壮性,会使得模型对噪声数据不那么敏感。当需要处理噪声数据的时候,通常会权衡模型的健壮性和模型的效果。

噪声数据可能是特征值不对,比如特征值缺失、超出特征值域范围等;也可能是标注不对,比如二分类正样本标注成负样本。数据去噪很多是检测和去除训练数据中标注带噪声的实例,去除这样的噪声数据对实验结论是有帮助的;而去除特征带噪声的数据在很多地方表明效果反而变差,由此可见噪声特征带有的一定信息能够用于构建模型,比如特征缺失时,可以认为没有特征也是一个特征,这也能描述一定的信息。

针对误标注实例有很多成功的处理方案,最常见的有集成过滤法(Ensemble Filter,EF)、交叉验证委员会过滤法(Cross-Validated Committees Filter,CVCF)和迭代分割过滤法(Iterative- Partitioning Filter,IPF)这三种方法,这些方法都是基于融合或者投票的思想进行数据过滤的。

除了这些过滤方法外,其实还会考虑就业务的本身性质做一些数据过滤工作,比如清洗爬虫数据和不具代表性样本等。再如过滤掉无效曝光数据,根据用户最后一次点击行为的位置,过滤掉最后一次点击之后的展示,可以认为用户没有看到,也可以保留最后一次点击之后的少数几个曝光,如图1-5所示。

图像说明文字

1.2.2 采样

采样是一个完善的统计技术,从整体选择一部分来进行推论。采样能够克服高维特征以及大量数据导致的问题,有助于降低成本,缩短时间甚至提升效果,在不平衡分类问题中还能帮助平衡样本比例。进行采样时最关心采样方法和采样比例。

通常,考虑样本对总体的估计值不超出边际误差的情况下是能够计算出样本量的。如下面的概率不等式:

图像说明文字

对于给定的ϵ和δ,能够计算出采样大小n。其中,e代表样本的估计,通常是样本大小n的函数;e0代表真实的样本;ϵ是置信度;1-δ是置信区间。然而,e0一般都是未知的,通常会先从样本中采样一个小的有m条样本的数据集,对e0进行估计,之后再计算对应的n值。如果n m,然后再从余下的样本集中选取额外的n-m条样本;如果n m,那么就将m条样本作为采样结果。

一个好的样本子集应该具有无偏性(Unbiasedness)和很小的样本方差(Sampling Variance)。其中无偏性指的是对样本的期望等于全体样本期望,即E(e)=e0。样本方差是衡量样本估计值和真实值的偏差,即Var(e)=E[e-E(e)]2,小方差能保证估计值不会产生太大偏差。

现有的采样方法有很多,下文简单介绍5种采样方法。

 无放回简单随机抽样(Simple Random Sample Without Replacement)。它从含N条样本的数据集T中采样s(s ≤N)条样本,每条样本被采到的概率相等且都为1/N。

 有放回简单抽样(Simple Random Sample With Replacement)。它和无放回简单随机抽样类似,不同的是每次从数据集T中抽取一条样本后,还将这条样本放回到数据集T中,因此每条样本可能多次被选中。

 平衡采样(Balanced Sample)。它根据目标变量进行采样,依据预定义的比例对样本进行重新组合,在不平衡分类问题中有十分成功的应用。不平衡分类问题指分类任务中不同类别的数据量差异巨大,通常会对小数据量的类别进行上采样,或者对大数据量的类别进行下采样。比如一份二分类样本有100条正样本、10 000条负样本,采样目标是使正负样本比例为1∶10,那么上采样就是对正样本复制10遍,负采样就是对负样本随机删除部分样本留下1000条;ADASYN和SMOTE算法是上采样里两个比较常用的方法。

 整群采样(Cluster Sample)。它先将数据集T中的数据分组成G个互斥的簇,然后再从G个簇中简单随机采样s(s≤ G)个簇作为样本集,这个方法是分两个阶段完成采样的。

 分层采样(Stratified Sample)。数据集T划分成不同的层,然后在每层内部进行简单随机抽样,最后汇总成样本集合S。该方法也常用于不平衡分类问题中,和平衡采样非常相关。该方法分别对每个类别进行采样,能使每个类别在样本集S中的分布和数据集T中的分布更为一致。比如对平衡采样中的二分类数据进行分层采样,目的是采样90%数据,分层采样以采样率0.9分别对正负样本采样,能保证正负比例还是1∶100;如果对全部10 100条样本采样90%,可能出现正样本10条、负样本9080条的情况。

1.2.3 原型选择和训练集选择

原型选择是基于实例的方法,在样本选择过程中不需要训练模型,而是选取相似度或距离度量指标来找到分类精度和数据量最佳的训练集,多数采用KNN算法。训练集选择则是构建预测模型来进行样本选择的方法的统称,比如决策树、ANN和SVM等算法。原型选择和训练集选择两大类别的样本选择方法有很多,然而没有一种方法能够通用。

原型选择有很多分类标准,根据从数据集T中选择样本集S的方向可以分为以下5类。

 增量法。开始时令S=∅,然后逐条遍历数据集T中的每条样本,如果满足条件则加入S中。

 递减法。和增量法相反,开始时令S=T,然后逐条查找待过滤的样本从S中删除。

 批量法。和递减法类似,批量法先判断一批数据的每条数据是否应该删除,然后再将这批数据中全部满足删除条件的样本一起删除。

 混合法。预先选定一部分样本S≠∅,然后迭代地增加或删除满足对应条件的样本。

 固定法。是混合法的一个子方法,但最终选择的样本数是固定的。

原型选择也可以类似特征选择,根据选择样本的策略进行分类。

 包装器。根据模型的目标函数,一般是模型预测结果来进行样本选择。

 过滤器。样本的选择标准不基于模型。

还可以根据选择的样本,原型选择相关算法可分为如下三类。

 Condensation。保留决策边界处样本。

 Edition。删除边界的异常点,使得边界更平滑。

 Hybrid。尝试找到最小的样本集S,能够保持甚至提升测试集上的泛化精度。

大量原型选择算法都可以根据上述分类标准进行划分。在此就不针对具体的算法展开介绍了。

1.3 交叉验证

在离线环节,需要对模型进行评估,根据评估指标选择最佳模型。用于模型训练的数据集叫训练集,用于评估模型的数据叫测试集;训练集上的误差称为训练误差或经验误差,测试集上的误差称为测试误差。测试样本是用于测试模型对新样本的学习能力,所以在假设测试数据和真实数据是独立同分布的前提下,测试误差可以作为泛化误差的近似。模型对新样本的学习能力十分重要,我们希望模型对已有样本进行学习,尽可能将样本中潜在的普遍规律学到。如果模型在训练集上效果极好,但是在测试集上效果很差,这说明模型将训练集中的一些规律当作普遍规律,于是就过拟合了。测试集可以帮助防止过拟合,还能够帮助指导模型调参。通常而言,训练集和测试集互斥,训练集越多,得到的模型效果越好;测试集越多,得到的结论越可信。我们将划分训练集和测试集的方法统称为交叉验证。交叉验证有很多方法,不同方法适用不同场景。下面介绍几种常用的交叉验证方法。

1.3.1 留出法

留出法(Hold-Out)是将数据集D={(x1,y1),⋯,(xn,yn)}随机划分成两份互斥的数据集,一份作为训练集Dtr,一份作为测试集Dte,在Dtr上训练模型,然后用Dte评估模型效果。本质上,留出法并非一种交叉验证方法,因为数据并没有交叉。

留出法只需将数据划分成两部分,简单好实现,如图1-6所示。但这种方法的缺点也比较明显,它不能充分利用数据训练模型,并且训练集和测试集的划分严重影响最终结果。Dte的数据量越大,Dtr就越小,得到的模型很可能和全量数据D得到的模型产生大的偏差;Dtr的数据量越大,Dte就越小,得到的结论可信度变低。通常的做法是,2/3数据作为训练集,1/3数据作为测试集。

图像说明文字

除了划分测试集数据量对结论有影响外,划分哪些样本作为测试集也会影响实验结论,因为这将导致数据分布发生变化。比如二分类问题有1500条正样本和1500条负样本,将1/3数据作为测试集,应该使得测试集正负样本均在50条左右;如果测试集由50条正样本和950条负样本组成,实验结论将因为样本分布差异悬殊而有很大偏差。因此,考虑到单次留出法得到的结论往往不靠谱,我们会进行多次留出法实验,每次随机划分,最终将多次得到的实验结论进行平均。

实际工作中有一种普遍的应用场景广泛使用留出法:数据有明显的时间序列因素,即线上数据的时间都在离线数据集之后,这种情况下应该根据时间对离线数据集划分训练集和测试集,使测试集时间分布在训练集时间之后。

比如,在2017年6月初需要训练模型,可以采用2017年1月到2017年4月的数据作为训练集,2017年5月的数据作为测试集。

1.3.2  K折交叉验证

K折交叉验证(K-fold Cross Validation)将数据集D划分成K份互斥数据集Dk,满足D=D1∪⋯∪DK,一般是平均分配使每份数据量接近并且数据分布尽可能一致。每次用一份数据测试,其余K-1份数据训练,需要迭代K轮得到K个模型;最后再将K份测试结果汇总到一起评估一个离线指标。

图像说明文字

K折交叉验证的稳定性与K取值有很大关系。K值太小实验稳定性依然偏低,K值太大又可能导致实验成本高,K最常用的取值是5和10,如图1-7所示。K折交叉验证能够更好地避免过拟合和欠拟合,得到的结论也更有说服力。

图像说明文字

相比留出法,K折交叉验证更为复杂,需要训练K个模型,但是数据利用率更高。K=2时,K折交叉验证和留出法仍有差异,留出法相当于用D1训练D2测试得到测试结果cv_score1,而2折交叉验证还会用D2训练D1测试得到测试结果cv_score2再取两次结果的平均值。另外,K折交叉验证也可能因为单次K份数据划分导致数据分布发生变化而引入偏差,因此也经常会进行多次K折交叉验证后求平均。比如进行10次5折交叉验证,这10次划分5折交叉验证得到的数据会不同。

假定数据集D中有N条数据,当K折交叉验证的K=N时,就是留一法(Leave-One-Out,LOO),即每一条样本当测试集,其余数据作训练。LOO策略的优缺点都很明显。训练N个模型,每个模型都基本用到了全部的数据,得到的模型和全部数据D得到的模型更相似,并且不再受随机样本划分方式的影响,因为划分方式只有一种了。但是当样本量N很大时,计算成本非常高,计算甚至不可行,而且每个模型只有一条测试数据,不能有效帮助每个模型调参达到最优。但是在数据稀疏时,LOO很适用。

基于K折交叉验证还变种出一个在类不均衡情况下常用的方法,叫作分层K折交叉验证(Stratified K-Fold)。该方法对每个类别进行K折划分,使每份数据中各类别的数据分布与完整数据集分布更一致。比如二分类数据进行5折交叉验证,类别1有30条数据,类别2有300条数据,在划分成5折时,如果随机划分成5份,这可能导致5份数据中的类别1数据量差别很大,导致每份数据训练出来的模型对类别1的分类效果差异很大,影响整体效果。如果通过分层5折交叉验证,即分别对2个类别划分,使每份数据有6条类别1样本,60条类别2样本,每份数据分布都和整体数据分布一致,得到的模型也就更可信。

1.3.3 自助法

自助法(Bootstrapping)以自主采样(Bootstrap Sampling)[Efron and Tibshirani, 1993]为基础,使用有放回的重复采样的方式进行训练集、测试集构建。比如为了构建n条样本的训练集,每次从数据集D采样一条放入训练集,然后又放回重新采样,重复n次得到n条样本的训练集,然后将没出现过的样本作为测试集。从操作过程可知,一些样本在训练集中重复出现,而另一些样本在训练集中从未出现。我们可以计算样本从未在训练集中出现的概率。在每次采样的时候,每条样本没被采到的概率图像说明文字经过n次采样还没被采到的概率为图像说明文字取极限可得

图像说明文字

这意味着当数据量很大的时候,约有36.8%的样本不会出现在训练集中。显然训练集有n条样本,测试集有约0.368n条样本。留出法和K折交叉验证法在训练模型时用的数据都只是整个数据集D的一个子集,得到的模型会因为训练集大小不一致产生一定的偏差。而自助法能够更好地解决这个问题。但自助法改变了初始数据集的分布,会引入估计偏差,所以在数据量足够时,一般采用留出法和交叉验证法。而在数据量较小,并且难以有效区分训练集和测试集时,自助法很有用。

参考文献

[1] Davis J, Goadrich M. The relationship between precision-recall and ROC curves. Proceedings of the 23rd international conference on machine learning. ACM, 2006.

[2] Fawcett T. An introduction to ROC analysis. Pattern recognition letters. 2006.

[3] Hanley J A, McNeil B J. The meaning and use of the area under a receiver operating characteristic (ROC) curve. Radiology, 1982,143: 29-36.

[4] Hand D J, Till R J. A simple generalization of the area under the ROC curve to multiple class classification problems. Mach. Learning, 2001, 45 (2): 171-186.

[5] Olvera-López J A, Carrasco-Ochoa J A, Martínez-Trinidad J F, et al. A review of instance selection methods[J]. Artificial intelligence review, 2010, 34(2): 133-143.

[6] García S, Luengo J, Herrera F. Data preprocessing in data mining[M]. Springer, 2015.

[7] Instance selection and construction for data mining[M]. Springer Science & Business Media, 2013.

[8] 周志华. 机器学习[M]. 北京:清华大学出版社, 2016.

目录

  • 序言
  • 前言
  • 第一部分 通用流程
  • 第1章 问题建模
  • 第2章 特征工程
  • 第3章 常用模型
  • 第4章 模型融合
  • 第二部分 数据挖掘
  • 第5章 用户画像
  • 第6章 POI实体链接
  • 第7章 评论挖掘
  • 第三部分 搜索和推荐
  • 第8章 O2O场景下的查询理解与用户引导
  • 第9章 O2O场景下排序的特点
  • 第10章 推荐在O2O场景中的应用
  • 第四部分 计算广告
  • 第11章 O2O场景下的广告营销
  • 第12章 用户偏好和损失建模
  • 第五部分 深度学习
  • 第13章 深度学习概述
  • 第14章 深度学习在文本领域中的应用
  • 第15章 深度学习在计算机视觉中的应用
  • 第六部分 算法工程
  • 第16章 大规模机器学习
  • 第17章 特征工程和实验平台