模型评估分为线上和离线评估两个阶段。针对分类、标记、排序、序列预测、回归等问题,都有各自合适的模型评估方法。只有找对方法才能有的放矢的去优化模型,解决我们的问题。
(1)准确率的局限性 首先要说的就是最经典的具有局限性的指标,准确率(accuracy)。准确率的定义 n c o r r e c t n t o t a l {n_{correct}\over n_{total}} ntotalncorrect 对于正负样本不平衡的样本集,使用准确率衡量模型的好坏效果将非常差,例如在训练集中有99%的样本为正样本,那么模型只需要把所有样本预测为正样本,模型就可以达到99%的准确率。然而这样模型对我们解决问题并没有帮助。 对于这种情况我们可以采用平均正确率,即取每类的正确率的平均数,或者用精度衡量模型的性能。 (2)精确度(precision)与召回率(recall) 精确度指的是TP/T(我们的模型判断为正样本且真为正样本的数量除以我们模型判断为真样本的数量)。而召回率指的是TP/(TP+FN)(指的是我们的模型判断为正样本且真为正样本的数量除以全体样本中为真的数量)。 精确度和召回率是统一而矛盾的。对于统一,我的理解是指的是他们的分子都是TP。至于矛盾,如果要提高精确度我们应该小心谨慎的将个人判定为正样本,而要提高召回率则应该更大胆的去判定可能的样本为正样本。 在一个推荐算法中,我们会对用户可能喜欢的样本做一个排序,如果我们将排名前五的样本推荐给用户那么精确度会较高,而召回率会较低。然而这两个参数都很有用,所以我们要综合考虑。可以绘制一个P-R曲线 可以看到黑线所代表的模型,他可以将其他模型所形成P-R曲线完全包裹,那么我们可以说黑色曲线所代表的模型效果更好。然而对于深蓝色曲线与紫色曲线代表的模型来说,我们该怎样怎样比较两个模型的好坏呢?这里这我们可以使用F1 score, F1score的是精确度与召回率的调和平均值定义为: F 1 = 2 ∗ p r e c i s i o n ∗ r e c a l l p r e c i s i o n + r e c a l l F1={2*precision*recall\over precision+recall} F1=precision+recall2∗precision∗recall 然而在一些应用中,比如推荐系统中不希望过于打扰用户,我们更注重精确度,而在追捕罪犯的系统中,我们更不希望错过可疑的人员,则会更重视召回率。所以我们有F1score的更一般形式 F β = ( 1 + β 2 ) ∗ p r e c i s i o n ∗ r e c a l l β 2 ∗ p r e c i s i o n + r e c a l l F_\beta={(1+\beta^2)*precision*recall\over \beta^2*precision+recall} Fβ=β2∗precision+recall(1+β2)∗precision∗recall β \beta β越大则preciosn的重要性越低。 (3)平方根(RMSE)误差的‘意外’ 平方根误差对于噪声非常敏感,即使有少数预测不正确的样本,但离群点的偏离程度又非常大,则不能正确的评估模型的性能。对于这种情况有三种方法 一、将离群点视为一种噪声,在预处理阶段就将利群点剔出出去。 二、将利群点视为正常的数据,我们可以增加模型的复杂度,从而增加学习能力,完成对利群点的预测。 三、使用更合适的指标 例如 M A P E = ∑ i = 1 n ∣ y i − y ^ i y i ∣ ∗ 100 n MAPE=\sum_{i=1}^n |{y_i-\hat y_i\over y_i}| *{100\over n} MAPE=i=1∑n∣yiyi−y^i∣∗n100
ROC曲线的横坐标是假阳性率(FPR),纵坐标是真阳性率(FPR),他们的计算方法是: F P R = F P N FPR={FP \over N} FPR=NFP T P R = T P P TPR={TP \over P} TPR=PTP.
AUC即为ROC曲线下的面积大小。AUC的取值一般为0.5~1.因为如果AUC面积小于0.5的话,只需要将预测结果反转,即可以获得大于0.5的AUC值。
ROC曲线对于正负样本的比例不敏感,而P-R曲线则比较敏感。如果需要更多的看到模型在特定数据集上的表现则采用P-R曲线衡量模型的好坏。
c o s ( A , B ) = A ∙ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 cos(A,B)={A\bullet B \over ||A||_2||B||_2} cos(A,B)=∣∣A∣∣2∣∣B∣∣2A∙B. 余弦相似度在高纬情况下依然保持相同的时候为1,正交时候为0,相反时为-1.余弦距离用于衡量两个变量之间方向的关系。
(1)holdout检验 一定比例的样本用于模型训练即训练集,另一部分用于衡量模型的性能即测试集,比如绘制ROC曲线。但是这种方法有很大的问题,那就是最后的评估指标与分组有很大关系,不同的分组会有不同的结果。为了消除这种随机性,可以采用交叉验证。 (2)交叉验证 即把样本分为均匀的k个子集,一次把每个子集当做验证集,其他自己当作训练集。最后把k次评估的平局值作为模型的评估值。在实际应用中k常用10。 (3)自助法 即对于有n个样本的集合,有放回的抽取放回n次。这些没有被抽出的就作为训练集,这种方法被证明是无偏的。当n趋近于无穷时,约有36.8%的样本从未被选择过。
超参数调优,需要确定几个要素。一是目标函数,二是要搜索的超参数的范围。三是搜索部长。常用的方法有 (一)网格搜索,在实际应用中,首先在大范围内用较大步长搜索大概的范围。然后再逐步缩小范围和步长,来寻找更精确的最优值。 (二)随机搜索 即在指定的搜索范围内,随机选择超参数的点。
过拟合是指模型对训练集的拟合过好,而在测试集和新数据上表现不佳。即是把训练集上的噪声也学习了,会造成对整体数据的特征学习不足。欠拟合指的是对训练集学习不足,从而对整体数据的特征学习不足,预测效果也就不佳。
(一)降低过拟合的方法 (1)正则化 (2)降低模型复杂度 (3)从数据入手,获得更多的训练数据,可以降低过拟合的情况。 (4)集成学习方法,集成学习是把多个模型集成在一起,来降低单个模型过拟合的风险,如bagging方法,典型的采用bagging方法的集成算法是随机森林。 (二)降低欠拟合的方法 (1)从数据入手,增加特征,例如组合特征,可以采用GBDT生成组合特征。 (2)增加模型复杂度 (3)减少正杂化系数 (4)采用集成学习的方法,如stack方法,典型的stack方法是GBDT。
