传送门🚪
案例背景及数据分析处理过程请看《kaggle员工离职预测案例(1)》
建模处理过程请看《kaggle员工离职预测案例(2)》
背景
一切的一切,因为这篇文章《机器学习模型评估教程!》
在第二篇文章中,我们罗列了在原始数据、降采数据、过采数据下的逻辑回归分类模型、决策树分类模型、随机森林分类模型,这样一共得到九个结果。我们在不同模型中挑选出了其中表现最好的几个(标准参考了 召回率和准确率),如下:
逻辑回归模型 | 备注 |
---|---|
召回率80%,精准率80% | 降采数据 |
召回率84%,精准率79%👍 | 过采数据 |
决策树模型 | 备注 |
---|---|
召回率94%,精准率73% | 降采数据,默认参数 |
召回率82%,精准率78.9% | 降采数据,调参后 |
随机森林模型 | 备注 |
---|---|
召回率84%,精准率83% 👍 | 降采数据,默认参数 |
召回率91%,精准率83%👍👍 | 降采数据,GridSearchCV调参 |
召回率92.85%,精准率84.35% 👍👍👍 | 降采数据,RandomizedSearchCV调参 |
原始数据下的模型因为类别不平衡的篇问题,不在我们讨论的范围内。篇2大费周章的在原始数据下建模的目的在于练习、对比 。😉
精明的机器学习者知道其中的窍门。两个类别的规模远不相等。在这种情况下,准确度的衡量标准是没有太大意义的。即使这些数字可能在 "论文"上看起来很好。
这一篇章中我们将引入ROC-AUC评估标准来进一步的对我们的模型进行评估。
何为ROC-AUC?
大约10年前在machine learning文献中一统天下的标准:分类精度;在信息检索(IR)领域中常用的recall和precision,等等。其实,度量反应了人们对”好”的分类结果的追求,同一时期的不同的度量反映了人们对什么是”好”这个最根本问题的不同认识,而不同时期流行的度量则反映了人们认识事物的深度的变化。
近年来,随着machine learning的相关技术从实验室走向实际应用,一些实际的问题对度量标准提出了新的需求。特别的,现实中样本在不同类别上的不均衡分布(class distribution imbalance problem)。使得accuracy这样的传统的度量标准不能恰当的反应分类器的performance。举个例子:测试样本中有A类样本90个,B 类样本10个。分类器C1把所有的测试样本都分成了A类,分类器C2把A类的90个样本分对了70个,B类的10个样本分对了5个。则C1的分类精度为 90%,C2的分类精度为75%。但是,显然C2更有用些。另外,在一些分类问题中犯不同的错误代价是不同的(cost sensitive learning)。这样,默认0.5为分类阈值的传统做法也显得不恰当了。
近年来,随着machine learning的相关技术从实验室走向实际应用,一些实际的问题对度量标准提出了新的需求。特别的,现实中样本在不同类别上的不均衡分布(class distribution imbalance problem)。使得accuracy这样的传统的度量标准不能恰当的反应分类器的performance。举个例子:测试样本中有A类样本90个,B 类样本10个。分类器C1把所有的测试样本都分成了A类,分类器C2把A类的90个样本分对了70个,B类的10个样本分对了5个。则C1的分类精度为 90%,C2的分类精度为75%。但是,显然C2更有用些。另外,在一些分类问题中犯不同的错误代价是不同的(cost sensitive learning)。这样,默认0.5为分类阈值的传统做法也显得不恰当了。
为了解决上述问题,人们从医疗分析领域引入了一种新的分类模型performance评判方法——ROC分析。ROC分析本身就是一个很丰富的内容,有兴趣的读者可以自行Google,这里只做些简单的概念性的介绍。
ROC的全名叫做Receiver Operating Characteristic,其主要分析工具是一个画在二维平面上的曲线——ROC curve。平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。调整这个分类器分类时候使用的阈值,我们就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。
一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线形成的ROC曲线实际上代表的是一个随机分类器。如果很不幸,你得到一个位于此直线下方的分类器的话,一个直观的补救办法就是把所有的预测结果反向,即:分类器输出结果为正类,则最终分类的结果为负类,反之,则为正类。虽然,用ROC curve来表示分类器的performance很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。于是Area Under roc Curve(AUC)就出现了。AUC(Area Under roc Curve)是一种用来度量分类模型好坏的一个标准。AUC的值就是处于ROC curve下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance
更多内容可参考文章《ROC曲线与AUC值》《机器学习基础(1)- ROC曲线理解》
举个栗子🌰:
上图是一个以FPR为横轴,TPR为纵轴的ROC图例
-
左上角的点Pefect Classification(TPR=1,FPR=0),为完美分类,也就是这个模型100%正确,预测全对。此时FP = 0, FN = 0。用人话说就是没有原本离职的员工被预测成不离职,也没有不离职的员工被预测成离职。
-
点A(TPR>FPR)模型A的判断大体是正确的。TPR≈0.62,FPR≈0.3 ,我们由TPR和FPR的公式可以推导出TP/FN ≈3/2, FP/TN≈3/7。如果用二分类矩阵表示为:
👽用人话说就是15个员工,成功预测离职了3个,成功预测不离职的7个,一共对了10个。但是有3个原本不会离职的人被预测成了离职(误杀),还有两个原本会离职的人被预测成不离职(漏杀)。对于这一结果我们表示满意。 -
中线上的点B(TPR=FPR),也就是模型B全都是蒙的,蒙对一半,蒙错一半;
-
上半平面的点C1(TPR>FPR)。TPR≈0