相对于过拟合,欠拟合相对容易克服,如在神经网络里通过增加训练轮数,决策树扩展分支,过拟合相对麻烦,过拟合只能缓解不能避免,连接性训练网络的机器学习通常都会参数初始化,不同初始化的模型得到效果也不一样,哪个模型好要通过泛化误差进行评估。
泛化误差不能直接获得,训练误差由于过拟合的存在不标准,现实中模型的评估与选择有以下几个方法:(只考虑泛化误差,没有考虑时间开销、存储开销、可解释性等方面,测试集的测试误差作为泛化误差)。
我们只有一个包含m个样例的数据集D,既要训练又要测试。我们需要对D进行适当的处理,从中产生出训练集S和测试集T。 下面就是几种常见的做法。
假定D包含1000个样本,将其划分为S包含700个样本,T包含300个样本,用S进行训练以后,如果模型在T上有90个样本分类错误,那么其错误率为(90/300)*100%=30%,精度为1-30%=70%。
解:这是一个组合问题,从500正反例中分别选出150正反例用于留出法评估,所以可能取法应该是种。
显然,它的稳定性和保真性取决于k的取值。但是模型训练测试开销较大,每次划分训练测试都要耗费很多的时间,每次训练如果初始化参数训练的模型,也不一定是最准确的方式。
解:
10折交叉检验:由于每次训练样本中正反例数目一样,所以讲结果判断为正反例的概率也是一样的,所以错误率的期望是50%。
留一法:如果留下的是正例,训练样本中反例的数目比正例多一个,所以留出的样本会被判断是反例;同理,留出的是反例,则会被判断成正例,所以错误率是100%。
我们希望评估的是用整个D训练出的模型。但在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模变化的影响较小,但计算复杂度又太高了。“自助法”正是解决了这样的问题。
通过自助采样,初始样本集D中大约有36.8%的样本没有出现在D’中,于是可以将D’作为训练集,D\D’作为测试集。自助法在数据集较小,难以有效划分训练集/测试集时很有用,但由于自助法产生的数据集(随机抽样)改变了初始数据集的分布,因此引入了估计偏差。在初始数据集足够时,留出法和交叉验证法更加常用。
学习算法的很多参数是在实数范围内取值,因此,对每种参数取值都训练出模型来是不可行的。常用的做法是:对每个参数选定一个范围和步长λ,这样使得学习的过程变得可行。
最后需要注意的是:当选定好模型和调参完成后,我们需要使用初始的数据集D重新训练模型,即让最初划分出来用于评估的测试集也被模型学习,增强模型的学习效果。
回归任务最常用的性能度量是:“均方误差”(mean squared error)。预测任务中,给定样例集D={(x1,y1),(x2,y2),…,(xm,ym)},其中yi是对示例xi的真实标记,要评估学习器f的性能,就要把学习器预测结果f(x)与真实标记y进行比较。
更一般的,对于数据分布D和概率密度p(.),均方误差(mean square error)可描述为:
下面就分类任务中常用的性能度量进行介绍。
在分类任务中,即预测离散值的问题,最常用的是错误率和精度。
对样例集D,分类错误率定义为:(指示函数正确1、错误0)
精度定义为:
更一般的,对于数据分布D和概率密度函数p(.),错误率可描述为:(精度类似)
在信息检索中:
对于二分类问题,分类结果混淆矩阵与查准/查全率定义如下:
查准率P与查全率R分别定义为:
对于分类结果混淆矩阵中的TP、FN等,左边的字母代表真实情况,右边的字母代表预测情况,具体如下表所示:
查全率与查准率是一对矛盾的度量。正如我们能想到的那样:要让用户真正感兴趣的商品尽可能都被选出来(使查全率较高),就需要增加所选商品的数量,将所有的商品都选上,那么其中所有的感兴趣商品自然就都选上了(这样就会使得查准率变低);反之,若要使得选出的商品中,是用户真正感兴趣的商品比例尽可能高(使查准率较高),就只选最有把握的商品,那么就会漏掉一些本应该是感兴趣的商品(这样就会使得查全率变低)。
“P-R曲线”正是描述查准/查全率变化的曲线,P-R曲线定义如下:根据学习器的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是“正例”的样本排在前面,最不可能是“正例”的排在后面,按此顺序逐个把样本作为“正例”进行预测,每次计算出当前的P值和R值,如下图所示:
根据图像,若一个学习器的P-R曲线将另一个学习器的P-R曲线完全“包住”,则可断言后者的性能优于前者。如果二者出现交叉,就无法断言两学习器的优劣,只能判断在具体情况下谁更优。一般我们还是希望能比较出两个学习器的优劣,这样就采用比较二者曲线下的面积大小,面积大者更优。但是这个面积值不容易估算。
为了解决上述问题,引入“平衡点BEP”(Break-Even Point)这样一个度量。它是P-R曲线与直线y=x相交的平衡点,该点上P=R。平衡点越高,对应的学习器越优。上图中,A优于B,B优于C。
但是BEP还是过于简化了,更常用的是F1度量。它是基于查准率与查全率的调和平均:
但是,考虑更一般的情况,不同应用对于查准率和查全率的重视程度有所不同。例如在商品推荐系统中,尽可能希望给用户推荐真正感情趣的商品,查准率就显得尤为重要;而在逃犯信息检索系统中,尽可能希望少漏掉逃犯,查全率就显得更重要。所以,我们提出F1的更一般形式Fβ,可以表达出对查准率/查全率不同偏好:(Fβ是加权调和平均)
有时候我们有多个二分类混淆矩阵,例如:多次训练或者在多个数据集上训练,那么估算全局性能的方法有两种,分为宏观和微观。
宏观就是先算出每个混淆矩阵的P值和R值,然后取得平均P值macro-P和平均R值macro-R,算出Fβ或F1,
微观则是先将各混淆矩阵的对应元素进行平均,计算出混淆矩阵的平均TP、FP、TN、FN,接着进行计算P、R,进而求出Fβ或F1。
学习器对测试样本的评估结果一般为一个实值或概率预测。然后设定一个阈值,大于阈值为正例,小于阈值为负例,因此这个实值或预测结果的好坏,直接决定了学习器的泛化能力。实际上,将这些实值或概率预测进行排序,则排序的好坏决定了学习器的性能高低。
ROC曲线正是从这个角度出发来研究学习器的泛化性能,ROC曲线与P-R曲线相似,根据学习器的预测结果,对样例进行排序,按照排序的顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到ROC曲线。不同的是ROC曲线以“真正例率”(True Positive Rate,简称TPR)为纵轴,横轴为“假正例率”(False Positive Rate,简称FPR),两者定义如下:
真正例率=真正例/(真正例+假反例) 假正例率=假正例/(真反例+假正例)
如下的图(a)ROC曲线中,对角线对应于“随机猜测”模型,而点(0,1)对应于将所有正例排在所有反例之前的“理想模型”。
分析图像,可以得知:当FN=0时,TN也必须0,对应点(1,1),反之也成立。我们可以画一个队列,试着使用不同的截断点(即阈值)去分割队列,来分析曲线的形状:
现实绘制曲线时,我们只有有限个测试样例用于绘图,因此只能得到如图(b)所示的近似ROC曲线。绘图过程具体如下:
同样地,进行模型的性能比较时,若一个学习器A的ROC曲线被另一个学习器B的ROC曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。ROC曲线下的面积定义为AUC(Area Uder ROC Curve),不同于P-R的是,这里的AUC是可估算的,即AOC曲线下每一个小矩形的面积之和。易知:AUC越大,证明排序的质量越好,AUC为1时,证明所有正例排在了负例的前面,AUC为0时,所有的负例排在了正例的前面。AUC估算如下:(小三角形面积总和)
形式化地看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。给定m+个正例和m-个反例,令D+和D-分别表示正、反例集合,则排序“损失”(loss)这样定义:
即考虑每一对正、反例,若正例的预测值小于反例,则记一个“罚分”,若相等,则记0.5个“罚分”。容易看出,对应的是ROC曲线之上的面积:若一个正例在ROC曲线上对应标记点的坐标为(x,y),则x恰是排序在其之前的反例所占的比例,即假正例率,因此有:
AUC=1—
现实生活中,不同类型的错误造成的后果不同。将正例预测成假例与将假例预测成正例的代价常常是不一样的,例如:将无疾病患者误诊为有疾病,只是增加进一步检查的麻烦,但将有疾病患者误诊为无疾病,却是增加了患者的生命危险。为了权衡不同类型错误造成的不同损失,我们为错误赋予“非均等代价”(unequal cost)。
以二分类任务为例,可根据任务的领域知识设定一个“代价矩阵”(cost matrix)。表示将第i类样本预测为第j类样本的代价。
在非均等错误代价下,我们希望的是最小化“总体代价(total cost)”,将上面的第0类作为正类,第1类作为反类,D+和D-分别表示样例集D的正例子集和反例子集,则“代价敏感”错误率为:
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线(cost curve)”则可达到该目的。代价曲线图的横轴是取值为[0,1]的正例概率代价,式中p表示正例的概率,纵轴是取值为[0,1]的归一化代价,其中FPR是前面提到的假正例率,FNR是假反例率,FNR=1-TPR(真正例率):
那么如何绘制代价曲线呢?
设ROC曲线上一点的坐标为(TPR,FPR) ,则可相应计算出FNR。然后在代价平面上绘制一条从(0,FPR) 到(1,FNR) 的线段,线段下的面积即表示了该条件下的期望总体代价。如此将ROC 曲线上的每个点(一个点对应一个FPR、FNR)转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价,如图所示:
看完这个代价曲线,我是迷糊的,于是参考了知乎上的一个详细解释:
https://www.zhihu.com/question/63492375/answer/247885093