智客公社

标题: 如何用ElasticSearch停止机器学习 [打印本页]

作者: no_shadow    时间: 2020-10-17 09:47
标题: 如何用ElasticSearch停止机器学习
前言

机器学习曾经在如今的工业实际中得到了广泛的运用。作为弱小搜索引擎的ElasticSearch也在6.3末尾内置了对机器学习的支持。


[attach]458795[/attach]

ElasticSearch也在6.3末尾内置了对机器学习的支持



概述

从运用角度来看,假如你有异常侦测和数据回归方面的需求,并且数据不需求特别处理,直接从es里就可以接入,可以选择Es内置的机器学习功能,这样又快又迅速。但是假如要借助更多的机器学习算法来停止建模,选择python的Eland模块停止机器学习就比较合适。下面会就这2种机器学习方式,从安装到运用停止逐一引见。


[attach]458796[/attach]

Es内置的机器学习功能



elasticsearch内置的机器学习

Kibana主页上加载样本Web日志数据集后,点击 查看数据> ML作业

在机器学习运用程序中,当您kibana_sample_data_logs 在"数据可视化工具"或"异常检测"作业导游中选择索引形式时,运用其已知配置创建作业。选择 Kibana示例数据Web日志配置。

Kibana支持四种类型的机器学习作业

样本作业(low_request_rate)之一是单个度量异常检测作业。它具有运用该low_count功能和有限工作属性的单个检测器。假如要确定网站上的央求率何时显着下降,则可以运用这样的工作。

让我们从在Single Metric Viewer中查看这个简单的工作末尾 :

[attach]458797[/attach]



该视图包含一个图表,该图表表示一段工夫内的实践值和希冀值。仅当作业已model_plot_config启用时才可用。它只能显示一个工夫序列。

图表中的蓝线代表实践数据值。蓝色暗影区域表示希冀值的界限。下限和下限之间的区域是模型最能够的值。假如某个值不在该区域内,则可以说它是异常的。

将工夫选择器滑动到工夫序列中包含红色异常数据点的部分。假如将鼠标悬停在该点上,则可以查看更多信息。除了异常侦测,es还可以方便的做数值回归预测。
python的eland模块

假如需求引入更多的机器学习模型训练方式,可以运用eland模块来和ElasticSearch协作。

为什么会有eland?

数据迷信家通常不习气NoSQL数据库引擎执行常见义务,甚至不依赖复杂的REST API停止分析。例如,运用Elasticsearch的低级python客户端处理大量数据也不是那么直观,并且对于来自SWE以外范畴的人来说,学习曲线有些峻峭。

虽然Elastic为加强用于分析和数据迷信用例的ELK堆栈做出了宏大的努力,但它照旧缺乏与现有数据科先生态系统(pandas,numpy,scikit-learn,PyTorch和其他盛行的库)的便捷接口。

的推出是一个全新的Python Elasticsearch客户端和工具包,具有弱小(且熟习)的相似于pandas的API,用于分析,ETL和机器学习。

Eland在能够的状况下运用现有的Python API和数据结构来简化在numpy,pandas,scikit-learn和其Elasticsearch支持的等效项之间的切换。通常,数据驻留在Elasticsearch中,而不是内存中,这使Eland可以访问Elasticsearch中存储的大型数据集。Eland还提供了一些工具,可以从,和等通用库经过训练的机器学习模型上传到Elasticsearch中。

Eland使数据迷信家可以有效地运用曾经弱小的Elasticsearch分析和ML功能,而无需对Elasticsearch及其许多复杂知识有深化的了解。

Elasticsearch的功能和概念被转换为更易于辨认的设置。例如,Elasticsearch索引及其文档,映射和字段成为具有行和列的数据框,就像我们以前在运用pandas时所看到的那样。

Eland的安装

可以运用Pip从安装Eland :
$ python -m pip安装eland
也可以运用Conda从安装Eland :
$ conda安装-c conda-forge eland
Eland链接Es

Eland运用衔接到Elasticsearch。该客户端支持一系列。可以将实例传递elasticsearch.Elasticsearch给Eland API,也可以将包含主机的字符串传递给以下对象:
import eland as ed# Connecting to an Elasticsearch instance running on 'localhost:9200'df = ed.DataFrame("localhost:9200", es_index_pattern="flights")# Connecting to an Elastic Cloud instancefrom elasticsearch import Elasticsearches = Elasticsearch(cloud_id="cluster-name:...",http_auth=("elastic", "<password>"))df = ed.DataFrame(es, es_index_pattern="flights")
用eland停止机器学习

eland.DataFrame在相似于Pandas的API中包装Elasticsearch索引,并将一切对数据的处理和过滤推延到Elasticsearch而不是本地计算机上停止。这意味着您可以从Jupyter Notebook中在Elasticsearch中处理大量数据,而不会导致计算机过载。

如今可以对xboost框架停止模型训练后,将模型部署到Elasticsearch,就可以直接完成对数据的预测了。一切很简单。
>>> from xgboost import XGBClassifier>>> from eland.ml import ImportedMLModel# Train and exercise an XGBoost ML model locally>>> xgb_model = XGBClassifier(booster="gbtree")>>> xgb_model.fit(training_data[0], training_data[1])>>> xgb_model.predict(training_data[0])[0 1 1 0 1 0 0 0 1 0]# Import the model into Elasticsearch>>> es_model = ImportedMLModel(es_client="localhost:9200",model_id="xgb-classifier",model=xgb_model,feature_names=["f0", "f1", "f2", "f3", "f4"],)# Exercise the ML model in Elasticsearch with the training data>>> es_model.predict(training_data[0])[0 1 1 0 1 0 0 0 1 0]
结束语

es作为搜索引擎,赋能了疾速排序,搜索的场景。如今内置的机器学习模块为借助es搜索的场景又添加了异常侦测,回归预测等弱小的ai才能,无疑为es在和其他搜索引擎竞争中添加了弱小助力。对这方面有兴味的读者,可以关注我们,持续获取这方面资讯。
作者: 慕容箫云    时间: 2020-10-17 09:56
分享了
作者: 52013141314    时间: 2020-10-17 10:02
分享了
作者: 我剪剪剪    时间: 2020-10-17 10:03
分享了
作者: 骑这猪到处跑    时间: 2020-10-17 10:07
分享了
作者: beatboxTsky    时间: 2020-10-17 10:16
分享了
作者: 黄琼仪脑残    时间: 2020-10-18 13:41

作者: 晨晨素子善CC    时间: 2020-10-19 08:33
学习下
作者: 韩梅梅123    时间: 2020-10-19 19:16
大神,请收下我的膝盖




欢迎光临 智客公社 (http://bbs.cnaiplus.com/) Powered by Discuz! X3.4