机器学习性能指标分析
概述
我目前了解到的,机器学习主要分为如下几个方向:
![](https://img.haomeiwen.com/i2229656/606852d8cd46ef6b.jpg)
不同的研究方向,需要不同的机器学习算法,同样也需要针对性的性能评价指标
。
![](https://img.haomeiwen.com/i2229656/a866d4feabb59ef1.jpg)
其中:分类问题,一般又为分为
二分类
和多分类
。
有监督/无监督
所有的样本数据集中,给出真实结果的,就叫有监督学习;只给样本数据,没有结果,自己猜的,就叫无监督学习。
分类问题
预测离散值的问题,一般属于分类问题。如果只预测两个值,即二分类
;如果预测多个值,即多分类
。比如mnist
预测的就是0~9
10个数字,就是多分类
;而像是否
一类的问题,比如垃圾邮件识别
,就属于二分类
。
回归问题
预测连续值的问题,就属于回归问题。比如根据一些样本数据,预测未来房价的走势,就属于回归问题。我个人理解,回归问题,预测出来的值是不可枚举的,而分类问题基本上可枚举的。
聚类问题
属于无监督机器学习,之所以会有聚类问题,因为现实生活中不是所有数据都带有标记(或者说标记是未知的)。所以我们需要对无标记的训练样本进行学习,来揭示数据的内在性质及规律。
下面是我通过查资料以及实际在一些计算平台上操作,所总结出来的可以评价机器学习性能的具体指标。
二分类问题
其实二分类
和多分类
本质上都是分类问题,理论上所有适用于多分类
的性能评价指标,都是适用于二分类
的,但是因为二分类
有其特殊性(0/1,True/False),所以在指标的展示上,会比多分类
要丰富一点。
![](https://img.haomeiwen.com/i2229656/7cbea909a0bf972a.jpg)
基于上图矩阵,科学家们定义了如下几个指标:
-
精确率Precision = 提取出的正确信息条数 / 提取出的信息条数
-
召回率Recall = 提取出的正确信息条数 / 样本中的信息条数
-
F1值 = 正确率 * 召回率 * 2 / (正确率 + 召回率)
以及F1 score
:
![](https://img.haomeiwen.com/i2229656/d30ede392597d565.jpg)
ROC和AUC
其实预测结果怎么知道是1
还是0
呢?一般情况下通过函数转换,计算出来的结果是介于0~1
之间的实数,而最终的结果是通过阀值
来区分的,比如大于0.5
的就认为是1
,否则就是0
。那么阀值
的变化,会对最终的预测结果产生非常大的影响。
ROC曲线想表达的,应该就是遍历所有阀值,所计算出来的真正率与负正率的变化情况。
![](https://img.haomeiwen.com/i2229656/994cec75e0393f87.jpg)
最理想的模型,就是这条曲线只有一个点,即左上角,即无论阀值如何变化,预测出来的正值全都是对的。
现实一点说,蓝色曲线
在红色曲线
之上,就表示这个训练出的模型预测正确的概率是大于0.5
的;如果两条线重合,表示这个模型预测的结果跟瞎蒙的概率是一样的;如果蓝色曲线
在红色曲线
之下,那这个模型就非常烂了,还不如瞎蒙!
由ROC曲线,就带出来AUC指标,它所表达的就是上图中蓝色曲线
下方的所有面积,理论上,如果蓝色曲线
集中在左上角的话,面积为1
,这是最理想的指标,现实中AUC
指标介于0~1
之间,越接近1
越好。
我们系统在实现时,可以参考下图:
![](https://img.haomeiwen.com/i2229656/ae3d1cfa54aa90ac.jpg)
可以让用户通过选择不同的阀值,或者指标,来展示具体的点,以及更详细的指标:
![](https://img.haomeiwen.com/i2229656/7fd277cc81c1673e.jpg)
下面再列几个二分类的指标:
![](https://img.haomeiwen.com/i2229656/a8bdd745f1823714.jpg)
个人感觉红框内的指标是我们要展示的。
预测指标
最主要的仍然是ROC
曲线。
![](https://img.haomeiwen.com/i2229656/3e46be085bb8c8e8.jpg)
以及由此引发的:
![](https://img.haomeiwen.com/i2229656/ca8ca4a148429033.jpg)
![](https://img.haomeiwen.com/i2229656/8ccdee524dd23668.jpg)
![](https://img.haomeiwen.com/i2229656/f20caefb9aa19c4f.jpg)
GAIN值和LIFT值:
![](https://img.haomeiwen.com/i2229656/bca065539f1da181.jpg)
多分类
混淆矩阵
这个应该是多分类最主要的指标,所谓混淆矩阵
拿二分类来表示的话,如下图:
![](https://img.haomeiwen.com/i2229656/f0242ffb0672aeed.jpg)
即看看所有预测值与真实值之间的分布情况,从而算出每个分类的错误率,如上图中左上和右下是正确预测,其它是错误预测。那么通用一点,在多分类
中,可以类似如下的图表来展示混淆矩阵
:
![](https://img.haomeiwen.com/i2229656/7d1f76ff6f90bbb5.jpg)
下面这个是阿里
的二分类混淆矩阵
:
![](https://img.haomeiwen.com/i2229656/b18541a53c856a0d.jpg)
多了几个指标。
其它指标
![](https://img.haomeiwen.com/i2229656/6a4b1479f9a1d3c9.jpg)
上图类似二分类
,但是少了AUC
。
![](https://img.haomeiwen.com/i2229656/396fe3703fa97ad8.jpg)
预测指标
同上。
回归问题
直接截图,不想写了:
![](https://img.haomeiwen.com/i2229656/37c9abdc13c1440c.jpg)
聚类问题
未知。
通用衡量指标
损失以及对数损失
以前搞深度学习时,都直接是损失,但是在使用h2o
研究机器学习时,都是使用logloss
,不知道是什么原因。
![](https://img.haomeiwen.com/i2229656/318f274c7bcee177.jpg)
特征项重要性(VARIABLE IMPORTANCES)
该指标描述所有特征项中,哪些特征对最终结果的影响最大,按影响程度大小来展示图表。
![](https://img.haomeiwen.com/i2229656/9e679509461a9f33.jpg)
算法模型summary
下面简单列几个我知道的,不同算法下,训练结果所展示的模型summary
分布式随机森林(Distributed Random Forest)
![](https://img.haomeiwen.com/i2229656/db7a8200650c1486.jpg)
XGBoost
![](https://img.haomeiwen.com/i2229656/a85e2a016b2aba7e.jpg)