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