机器学习模型结果,合理使用

机器学习算法结合生信分析很多,作为非算法专业人士,根据模型得到的结论,敢用吗?

又有哪些模型评估方法可以是我们用的稍微放心一点呢?

本文主要从以下两个模型类别来介绍:

  • 评价分类结果:精准度、混淆矩阵、精准率、召回率、F1 Score、ROC曲线等
  • 评价回归结果:MSE、RMSE、MAE、R Squared

一 分类算法评价

1.1 预测准确性

分类模型预测是否患有癌症的准确度99.9%,哇 好高,那这个模型是不是就是很好呢?

假如癌症产生的概率是0.1%,那即使“傻瓜式”的预测所有人都是健康的,就可达到99.9%的准确率。

也就是说对于极度偏斜的数据,只使用分类准确度不行。此时就需要使用混淆矩阵(Confusion Matrix)做进一步分析。

1.2 混淆矩阵

对于二分类问题来说,所有的问题被分为0和1两类,混淆矩阵是2*2的矩阵:

预测值0 预测值1
真实值0 TN FP
真实值1 FN TP
  • TN:真实值是0,预测值也是0,即模型预测是negative,且预测正确。
  • FP:真实值是0,预测值是1,即模型预测是positive,但预测错误。
  • FN:真实值是1,预测值是0,即模型预测是negative,但预测错误。
  • TP:真实值是1,预测值是1,即模型预测是positive,且预测正确。

现在假设有1万人进行预测,填入混淆矩阵如下:

预测值0 预测值1
真实值0 9978(TN) 12(FP)
真实值1 2(FN) 8(TP)

混淆矩阵表达的信息比简单的分类准确度更全面,而且可以通过混淆矩阵得到一些有效的指标。

精准率和召回率

精准率

精准率(查准率):预测值为1,且预测对了的比例,即:我们关注的那个事件,预测的有多准。因为在有偏的数据中,我们通常更关注值为1的特征,比如“患癌”,比如“有风险”。

示例精准率:8/(8+12)=40%

召回率

召回率(查全率):所有真实值为1的数据中,预测对了的个数,即:我们关注的那个事件真实的发生情况下,我们成功预测的比例是多少。

示例召回率:8/(8+2)=80%

以上即可看出:

如果我们只看准确性的话,那分类算法的准确率是99.78%,但这是毫无意义的。如果算精准率则是40%,召回率是80%。

F1 Score

精准率和召回率这两个指标有内在的联系,并且相互冲突,对于一个算法而言,精准率高一些,召回率就低一些;召回率高一些,那么精准率低一些。那么如何取舍呢?

其实在衡量机器学习的其他指标中,我们也需要进行取舍,通常只需要把握一个原则:

视场景而定。

1)对于股票预测系统,很显然“涨”才是我们关注的焦点,那么查准率越高越好,系统预测上涨的股票中,真正上涨的比例越大越好。大盘中真实上涨股票太多了,即使漏掉一些,但是因为没有买进,就没有损失,所以查全率次要。

2)疾病诊断时,召回率越高越好,尽可能地将所有有病的患者都预测出来,如果召回率低,意味着本来有一个病人得病了,但是没有正确预测出来,病情可能就会恶化。

在实际业务场景中,如果要同时需要关注精准率和召回率,如何在两个指标中取得平衡呢?可以使用一种新的指标:F1 Score

1) 二者兼顾 F1 Score

F1 Score 是精准率和召回率的调和平均值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d0NE3H6W-1574142791750)(C:\Users\Maojie\AppData\Roaming\Typora\typora-user-images\1574059021793.png)]

调和平均值的特点是如果二者极度不平衡,如某一个值特别高、另一个值特别低时,得到的F1 Score值也特别低;只有二者都非常高,F1才会高。这样才符合我们对精准率和召回率的衡量标准。

ROC曲线

分类阈值、TPR和FPR

在了解ROC曲线之前,先看三个概念:分类阈值、TPR和FPR

分类阈值

分类阈值,即设置判断样本为正例的阈值threshold,如果模型对是否疾病的预测时返回的概率为 0.9995,则表示该模型预测很可能患病。反之,预测分数为 0.0003 的患者很可能健康。可如果预测分数为 0.6 或者0.4呢?为了将回归值映射到二元类别,您必须指定分类阈值(也称为判定阈值)。如果值高于该阈值,则表示“患病”;如果值低于该阈值,则表示“非患病”。0.5的分类阈值是不是“太草率”了?

precision随着threshold的增加而增加,recall随着threshold的增大而减小。如果某些场景需要precision,recall都保持在80%,可以通过这种方式求出threshold。

TPR

TPR:预测为1,且预测对了的数量,占真实值为1的数据百分比。

8/(8+2) = 80 %

FPR

**FPR:预测为1,但预测错了的数量,占真实值不为1的数据百分比。**与TPR相对应,FPR除以真实值为0的这一行所有的数字和 。

12/(12+9978) = 0.12%

ROC曲线

ROC曲线(Receiver Operation Characteristic Cureve),描述TPR和FPR之间的关系。x轴是FPR,y轴是TPR。

分类阈值取不同值,TPR和FPR的计算结果也不同,最理想情况下,我们希望所有正例 & 负例 都被成功预测 TPR=1,FPR=0,即 所有的正例预测值 > 所有的负例预测值,此时阈值取最小正例预测值与最大负例预测值之间的值即可。

TPR越大越好,FPR越小越好,但这两个指标通常是矛盾的。为了增大TPR,可以预测更多的样本为正例,与此同时也增加了更多负例被误判为正例的情况。

机器学习模型结果,合理使用

ROC曲线距离左上角越近,证明分类器效果越好。

很多时候两个分类器的ROC曲线交叉,无法判断哪个分类器性能更好,这时可以计算曲线下的面积AUC,作为性能度量。

AUC

一般在ROC曲线中,我们关注是曲线下面的面积, 称为AUC(Area Under Curve)。这个AUC是横轴范围(0,1 ),纵轴是(0,1)所以总面积是小于1的。

ROC曲线下方由梯形组成,矩形可以看成特征的梯形。AUC越大,分类器分类效果越好。

参考资料:

https://mp.weixin.qq.com/s/Fi13jaEkM5EGjmS7Mm_Bjw

https://mp.weixin.qq.com/s/elI6-BX-AfKGuVjPPPE0rw