对存储在 ElasticSearch 中的客户数据进行聚类

数据挖掘 数据挖掘 聚类
2021-09-26 07:37:13

我有一堆客户资料存储在 簇。这些配置文件现在用于为我们的电子邮件订阅创建目标组。

目标群体现在是使用弹性搜索分面搜索功能手动形成的(比如让所有 23 岁的男性客户拥有一辆车和 3 个孩子)。

我怎样才能自动搜索感兴趣的组——使用数据科学、机器学习、聚类或其他方法?

编程语言似乎是完成这项任务的好工具,但我无法形成这种组搜索的方法论。一种解决方案是以某种方式找到最大的客户群并将它们用作目标群体,所以问题是:

如何自动选择最大的相似客户集群(我目前不知道的参数相似)?

例如:我的程序将连接到 elasticsearch,将客户数据卸载到 CSV 并使用 R 语言脚本会发现大部分客户是没有孩子的男性,另一大部分客户有车,他们的眼睛颜色是棕色的。

1个回答

可以用于此的一种算法是k-means 聚类算法

基本上:

  1. 从你的集合中随机选择 k 个数据点,m_1, ..., m_k。
  2. “直到收敛”:

    1. 将您的数据点分配给 k 个集群,其中集群 i 是 m_i 最接近您当前均值的点集
    2. 用分配给集群 i 的所有点的平均值替换每个 m_i。

多次重复此算法是一种很好的做法,然后选择使每个聚类 i 的点与中心 m_i 之间的距离最小的结果。

当然,你必须知道 k 才能从这里开始;不过,您可以使用交叉验证来选择此参数。