7.6版本的Elastic Stack提供了端到端机器学习管道所需的最后一块拼图。此前,机器学习专注于无监督技术与异常检测。然而,在7.x版本中,已经发布了几个功能。在7.2中,Elasticsearch发布了用于将原始索引转化为特征索引的Transforms。然后7.3、7.4和7.5分别发布了异常值检测、回归和分类。最后在7.6中,你可以使用回归和分类模型与推理ingest处理器来丰富文档。所有这些一起为端到端机器学习管道建立起了闭环。所有这些都可以在Elastic Stack中进行。
为什么要进行有监督的机器学习?
有监督式机器学习从标记的数据中训练模型。这与无监督学习不同,在无监督学习中,模型从尚未标记的数据中学习。在data frame analytics中,我们为您提供了创建监督模型的工具集,而无需了解底层算法。然后,您可以使用训练后的模型对未观察到的数据进行预测(通过推理)。模型应用它通过训练学到的东西来提供预测。
为什么要用这个而不是异常检测?异常检测是无监督学习的一个例子,它在学习模式和预测基于时间序列数据的指标方面非常出色。这对于许多用例来说都很强大,但如果我们想通过检测可疑域来识别不良行为者呢?自动检测语言并应用适当的分析器来更好地搜索呢?
这些用例需要更丰富的特征集来提供准确的预测。它们使用已知的例子从中学习。意思是,存在一个训练数据集,其中的数据被标记为正确的预测。Transforms提供了构建复杂特征集所需的工具。data frame analytics可以训练有监督的机器学习模型。我们可以使用这两者来部署流数据上的特征生成和监督模型的生产使用。
有监督学习实例:二元分类
让我们从头开始建立和使用一个二元分类模型。不要被吓到,这里数据科学的学位不是必要的。我们将使用Elastic Stack中的构建模块来创建我们的特征集,训练我们的模型,并将其部署在一个摄取管道中执行推理。使用 ingest 处理器可以让我们的数据在被索引之前被模型的预测所丰富。
在这个例子中,我们将根据客户元数据和通话记录的特征来预测电信客户是否有可能流失。我们将使用已流失和未流失客户的例子作为训练数据集。
设置您的环境
首先,我们要获得原始数据集。下载calls.csv和customers.csv文件,并通过CSV上传功能加载但ES中。数据来源于不同来源引用的数据集:openml、kaggle、Larose 2014。这个数据集被分解成行,并添加了随机特征。电话号码和其他数据都是捏造的,与真实数据的任何相似之处都是巧合。
上传后,你的数据应该是这样的。
customers索引:
{
"column1" : 0,
"number_vmail_messages" : 25,
"account_length" : 128,
"churn" : 0,
"customer_service_calls" : 1,
"voice_mail_plan" : "yes",
"phone_number" : "415-382-4657",
"state" : "KS",
"international_plan" : "no"
}
call索引:
{
"column1"