Elastic:验证机器学习预测的准确性
2021年1月10日 | by mebius
Elastic Stack 的机器学习为我们的异常检测提供了极大的方便。同时它还有一项很重要的功能,那就是它的预测(forecast)功能。这个在很多的实际应用中也有很大的用处。我有时幻想如果我能依据现有的股票时序数据能准确地预测未来股票的价格,那我会不会发大财啊?关于机器学习预测数据的准确性如何,我们今天讲使用一个例子来进行展示。如果你想了解更多关于 Elastic Stack 的机器学习方面的知识,请阅读我之前的文章 “Elastic:机器学习的原理及实践 – single metric job”。
准备数据
在今天的展示中,我将使用 Kibana 自动的数据来进行展示。我将使用 Elastic Stack 7.10 来演示:
点击上面的 Add data 按钮:
这样在 Elasticsearch 中,我们就会发现一个叫做kibana_sample_data_logs 的索引:
GET _cat/indices
green open .apm-custom-link TlqC9Q2oTtalPjlA8RqORA 1 0 0 0 208b 208b
green open .kibana_task_manager_1 DmCZ94MVTnGm7-mqX8gvUw 1 0 5 36 80.3kb 80.3kb
green open .apm-agent-configuration 2mv66HmOTi-MNW1JnT6aoA 1 0 0 0 208b 208b
green open kibana_sample_data_logs j1d0m0AUTwG8nF2qDmNr7A 1 0 14074 0 10.4mb 10.4mb
green open .kibana-event-log-7.10.0-000001 pFPXSgZTRSWPMhDWi7vqZA 1 0 1 0 5.6kb 5.6kb
green open .kibana_tgcode1 f0ve1WLgQUOtF0htgcodeZm14J2Q 1 0 59 0 10.9mb 10.9mb
这样我们的数据就准备好了。我们接下来将使用kibana_sample_data_logs 索引来作为我们验证机器学习预测的准确与否。
启动白金功能
机器学习需要我们启动白金功能。如果你想了解更多关于订阅的服务,请阅读链接https://www.elastic.co/cn/subscriptions。我们在安装的 Elastic Stack 中启动30天试用:
tgcode
这样我们就启动了机器学习的白金功能。
创建机器学习任务
接下来,我们来创建一个机器学的任务:
在上面我们先选择Use full kibana_sample_data_logs data 按钮,然后选择终点来进行调整时间。我们留下最后7天的数据不用作机器学习的数据:
在上面显示时间系列的最终时间是2021年2月26日。我们选择19日作为机器学习的终止时间。这样我们就可以留下7天的时间作为我们将来可以进行预测的时间范围,并和真实的数据来进行比较。在上面,我选择2月19日。
点击 Create job:
这样我们就创建了一个单指标的机器学习任务。我们点击上面的 Forecast 按钮:
点击上面的 Run。我们可以看到机器学习为我们创建从2月19日以后的数据预测:
从上面我们可以看出来机器学习帮我们预测了从2月19日到2月26日之前的数据。从先前的原始数据中,我们已经知道这个时间真实数据是存在的。我们现在来用这个预测的数据和真实的数据来进行比较。
我们先回到机器学习的管理页面:
选中我们的 forecast 任务,并启动 datafeed:
上面显示 datafeed-forecast 已经被成功启动。点击上面的 Single Metric Viewer:
从上面我们可以看出来之前我选择的时间是2月19日。我们把时间修改为2月26日,这样,我们可以继续让当前的任务完成剩下的一个星期的数据:
点击 Update 按钮:
在上面的图中,我们可以看到黄色的线代表的是机器学习在除去最后一个星期的数据后,然后再预测的数据,而那些蓝色曲线的数据是真实的数据。从上面的图中我们可以看出来机器学习预测的数据和真实的数据还是蛮接近的。
文章来源于互联网:Elastic:验证机器学习预测的准确性
我们通常的做法是使用 Elasticsearch 的 ingest node 或者 Logstash 来对数据进行清洗。这其中包括删除,添加,丰富,转换等等。但是针对每个 beats 来讲,它们也分别有自己的一组 processors 来可以帮我们处理数据。我…