在我之前的文章中:
- Elastic:机器学习的实践 - single metric job
- Elastic:机器学习的实践 - multi metric job
- Elastic:机器学习的实践 - population job
我展示了如何使用 Elastic 的机器学习对异常的数据进行异常检测,比做相应的呈现。大家有没有觉得还是美中不足,那就是我们想在可视化中,比如在 dashboard 中进行展示是不能做到的。在今天的练习中,我将介绍如何使用一些技巧来对机器学习来对异常进行展示。
在今天的展示中,我们将使用 Elastic:机器学习的实践 - single metric job 文章中的例子为例来做。如果你还没做那个练习的话,请先做那个练习。最终,我们想创建一个像如下的一个视图:
我们将使用 TSVB 可视化工具来可视化我们的机器学习异常显示。
机器学习功能可根据你在工作中定义的检测器来分析输入数据流,对其行为建模并执行分析。 当事件发生在模型之外时,该事件将被识别为异常。每个异常的结果记录存储在 Elasticsearch 中的 .ml-anomalies- * 索引中。 默认情况下,存储机器学习结果的索引的名称标记为 shared,它对应于 .ml-anomalies-shared 索引。
在我们做可视化之前,我们现在 Kibana 中简单地探索一下:
GET _cat/indices
请注意在上面的索引中,以点 . 为开头的索引都是系统索引。是集群创建的索引。在这里,我们看不到任何以 .ml 为开头的索引。为了能得到以 .ml 开头的系统索引,我们需要做如下的查询:
GET _cat/indices/.ml*
从上面,我们可以看出来一些和 ML 相关的索引。其中 .ml-anomalies-shared 就是这样的一个索引,其中含有我们机器学习作业里的异常数据。我们可以通过 TSVB 的方式来对它进行展示。
GET .ml-anomalies-shared/_search
显示的内容如下:
"hits" : {
"total" : {
"value" : 10000,
"relation" : "gte"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : ".ml-anomalies-shared",
"_type" : "_doc",
"_id" : "single_metric_job_model_plot_1549258200000_900_0_0_0",
"_score" : 1.0,
"_source" : {
"job_id" : "single_metric_job",
"result_type" : "model_plot",
"bucket_span" : 900,
"detector_index" : 0,
"timestamp" : 1549258200000,
"model_feature" : "'bucket sum by person'",
"model_lower" : 0.0,
"model_upper" : 44647.38531159675,
"model_median" : 2134.5144506870092,
"actual" : 0.0
}
},
{
"_index" : ".ml-anomalies-shared",
"_type" : "_doc",
"_id" : "single_metric_job_bucket_1549258200000_900",
"_score" : 1.0,
"_source" : {
"job_id" : "single_metric_job",
"timestamp" : 1549258200000,
"anomaly_score" : 0.0,
"bucket_span" : 900,
"initial_anomaly_score" : 0.0,
"event_count" : 0,
"is_interim" : false,
"bucket_influencers" : [ ],
"processing_time_ms" : 0,
"result_type" : "bucket"
}
},
...
现在我们想通过 TVSB 来把日志的数据和 ML 作业的异常数据一起展示。打开 Kibana:
点击 Create index pattern:
点击 Next step:
点击 Create index pattern:
这样我们就完成了 .ml-anomalies-shared 索引的 index pattern 创建。
在上面选择 cf_rfem_hist_price* 作为 index pattern。同时我们选择 1d 作为 interval。点击 Data:
这样,我们就完成了对交易数据的可视化。接下来,我们来在这个可视化上面添加异常数据的显示。那么,我们该怎么做呢?
答案是:运用 Annotations 来叠加这个异常数据。
点击 Annotations:
点击 Add data source:
我们对它进行上面的配置。最后点击 Data:
当我们把鼠标放到异常出现的红色的标志那里就可以看到 Anomaly score。这个是我们刚才在 Annotation 里进行设置的。
现在,我们已经把数据进行了可视化。我们可以点击 Save 链接来进行保存:
点击上面的 Save 按钮。我们就以后可以在 Dashboard 里进行展示了。