Tencent / Metis

Metis is a learnware platform in the field of AIOps.
Other
1.68k stars 495 forks source link

请问怎么理解正样本、负样本? #24

Closed LiYiHome closed 5 years ago

wanghuaway commented 5 years ago

正负样本跟机器学习中的标准定义一样,通俗点解释的话,可以这么理解: 如果是指标监控,正常的指标就是正样本,可以理解为不该告警的;异常的指标就是负样本,应该告警的那些。

zr9558 commented 5 years ago

在时间序列异常检测上:

  1. 正样本:标签(label = 1),指的是不应该告警的数据;
  2. 负样本:标签(label = 0),指的是应该告警的数据。

效果评估指标:

  1. 准确率:真正的模型判断为异常的数量 / 模型判断为异常的数量;
  2. 召回率:真正的模型判断为异常的数量 / 真正的异常的数量。

简单一点来说,要计算准确率,可以通过人工审核的方式,每天统计一下真正的异常数量,再除以模型的告警总量;计算召回率有所难度,需要收集一段时间的异常数据,然后使用模型判断一下,模型判断为异常的数量 / 当前所有的真正的异常数量。

xiaolong2009 commented 5 years ago

@zr9558 按照裴丹老师的论文,训练的时候要设置预期准确率和召回率,但是在Metis里没看到,请问是为什么,谢谢

zr9558 commented 5 years ago

@zr9558 按照裴丹老师的论文,训练的时候要设置预期准确率和召回率,但是在Metis里没看到,请问是为什么,谢谢

Opprentice 系统里面应该是要预先设置这两个指标。我们在实践的过程中,人工标注了训练数据和测试数据,只要模型的效果在测试的数据集上能够达到一个不错的效果,就说明初步达到了上线的标准。训练数据和测试数据是在模型训练和调参的时候用的。要想使用这两个指标,第一步就要标注数据和收集数据,第二步才是设置参数和训练。在数据集不对外的情况下,设置这两个指标其实意义不大。

Opprentice 更像是在实验室的环境,里面所提及的一些时间序列特征,例如 SVD,ARIMA 特征等,离线做训练和测试是可以的,但是线上环境无法使用。其原因是因为运算复杂度高,线上的计算力有限。如果不考虑线上复杂度和效率的话,其实无论怎么写特征都是可以的。

xiaolong2009 commented 5 years ago

恩,我明白了,非常感谢~ 再请教下织云监督学习模型使用的是GBDT 和 XGBoost,而没有使用RF,请问是出于什么原因? 生产环境也是用GBDT 和 XGBoost么?

zr9558 commented 5 years ago

恩,我明白了,非常感谢~ 再请教下织云监督学习模型使用的是GBDT 和 XGBoost,而没有使用RF,请问是出于什么原因? 生产环境也是用GBDT 和 XGBoost么?

做机器学习的时候,有几个比较重要的任务:

  1. 样本收集:基于业务的具体场景来标记样本;
  2. 特征构建:基于业务和论文来做;
  3. 模型选择:有监督学习模型。

基于我们内部的数据集,在模型选择的时候,把常见的机器学习有监督模型,例如线性回归,逻辑回归,决策树,随机森林,GBDT,XGBoost 等,都全部运行了很多次。在多次实验效果数据的支持下,我们发现树结构的模型效果较优,就是随机森林,GBDT,XGBoost 等几种算法。从实验效果来看,随机森林,GBDT,XGBoost 算法的效果差不多。在内部数据集合上,随机森林相对于另外两者并没有表现出绝对的优势,因此,我们选择了后面两者来建模。在 AIOps 领域中,很难找到一个通用的机器学习模型,只有最合适的机器学习模型。

PS:如果在你们的数据集合上,RF的效果远超于 GBDT 与 XGBoost,其实用 RF 也是可以的。

xiaolong2009 commented 5 years ago

非常感谢这么详细的回答,再次感谢。