Elastic:机器学习的实践 - population job

373 阅读3分钟

在以下情况下,数据中的实体或事件可以被认为是异常的:

  • 他们的行为会随着时间而变化,相对于他们以前的行为,还是
  • 它们的行为不同于指定群体中的其他实体。

在之前的文章:

我们已经展示了如何检测上面的第一种情况。后一种检测异常值的方法称为 population 分析,也就是群体分析。机器学习分析可建立 “典型” 用户,机器或其他实体在指定时间段内所做的工作的概况,然后识别与其它群体相比表现异常的时候。

当总体上各个群体的行为大多是同质的,并且你想要识别异常值时,这种类型的分析最有用。通常,当群体成员内在地具有截然不同的行为时,群体分析是没有用的。但是,你可以将数据分成行为相似的组,并将其作为单独的作业运行。例如,你可以在 datafeed 中使用查询过滤器对数据进行细分,也可以使用 partition_field_name 拆分不同组的分析。

群体分析的伸缩性很好,并且消耗的资源比每个系列的单独分析都低。例如,你可以分析数十万或数百万个实体的群体。

下面,我们使用它在上一个例子 “Elastic:机器学习的实践 - multi metric job” 所使用的数据来做一个展示。如果你还没导入数据,请参阅那篇文章,把数据导入进去。

 

创建 population job

打开 Kibana:

点击 Manage jobs:

点击  Create job:

选中 eCommerce 索引:

选中 Population:

点击 Next:

这一次,我们选择 category.keyword 作为 population 字段,同时选择 High sum(taxful_total_price) 作为指标分析。点击 Next:

我们取一个好听的名字 population_job。点击 Next 按钮:

上面显示检查没有错误。点击 Next 按钮:

点击 Create job 按钮:

相比较之前的 single metric job 及 multi metric job,我们发现这次的机器学习计算时间非常短,也印证了它所消耗的资源不多。点击上面的 View results 按钮:

如上所示,我们可以发现一个异常,是针对 Men's Clothing 的这个 category。我们向下滚动:

点击那个红色标识的异常事件:

上面显示这个 Men's Clothing 类的商品和如下的其它类的商品比较:

存在异常,按照机器学习的计算(相比较其它类商品,在同一个 bucket span里),taxful_total_price 的值应该在 67.8,但是实际值在 2250。细心的分析师需要分析这个数据,是因为父亲节到了的缘故吗?还是因为最近在男装上投入了大量的广告所致?

好了,今天的文章先写到这里。请接下来继续关注我的机器学习的文章。