聚类客户数据集以查找客户模式

数据挖掘 聚类
2022-02-14 16:19:46

假设我有一个数据集,其中包含n customers. Acustomer由 a name、 an order、 anorderAmount和 a timestamp(一天中的时间)表示,表示下订单的时间。它可能看起来像这样:

name     |order|orderAmount|timestamp    
customer1|tv   |1          |08:30
customer2|hifi |1          |12:00
customer3|hifi |3          |12:30
customer4|tv   |2          |09:30
customer5|cd   |10         |10:00
customer1|tv   |2          |11:30
...      |...  |...        |...

我感兴趣的是对这些客户进行聚类,因此我可以清楚地区分它们。通过查看上面的集合,很明显他们购买的内容、数量和时间有所不同,但我想自动化这个过程,我认为集群是一种方法,但如果我'我错了。

我不确定的一件事是如何在“客户矩阵”中表示这个数据集。例如,我知道,基于距离的聚类方法(如 KMeans)需要某种标准化输入,但我如何使用这样的数据集着手呢?

当/如果我能产生好的集群,我想我可以为这些集群分配标签并使用这些标签来训练分类器?

我是数据科学的初学者,所以我的过程中可能会缺少一两个步骤,所以请多多包涵。

1个回答

建议:为您的“订单”+“订单金额”数据使用指标变量。该表看起来像这样,这似乎更适合距离度量:

name      | tv | hifi | cd | timestamp
customer1 | 1  | 0    | 0  | 8:30
customer2 | 0  | 1    | 0  | 12:00
customer3 | 0  | 3    | 0  | 12:30
customer4 | 2  | 0    | 0  | 9:30
...

如果你这样做,那么我还建议对这些指标变量进行规范化(确保它们在区间 [0, 1] 内,否则你可能会有 1000 个“cd”的顺序完全支配 10 个“tv”的最大值例如)。

另一件要注意的是分箱的可能性。如果一天中的时间无关紧要,您可以将来自同一天和客户的所有订单分组在一行中。

此外,如果您可以手动标记一些示例,则可以使用半监督算法,并且可能比完全无监督的聚类具有更好的性能。一些可能的算法是 HMRF-KMeans、协同训练变体和 Spy EM。