R:根据事件的相似产品兴趣对客户进行聚类

R: Clustering customers based on similar product interests for an event

我有一个包含客户列表及其产品偏好的数据集。基本上,它是一个简单的 CSV,包含一个名为 "CUSTOMER" 的列和另外 5 个名为 "PRODUCT_WANTED_A"、"PRODUCT_WANTED_B" 等的列。

我询问了这些客户是否有兴趣了解更多关于特定产品的信息,答案可能只是“是”或“否”(数据集中为 1 或 0)。可以下载数据集here。显然,根据他们在这 5 列中的是或否的组合,会有许多不同兴趣的客户。

我的目标是了解哪些客户在此类兴趣方面与其他客户相似。这将帮助我管理产品演示的议程,并且在每次会议中,我都想了解最适合它的分组。我从这样的分层图开始:

customer_list <- read.csv("customers_products_wanted.csv", sep=",", header = TRUE)
customer.hclust <- hclust(dist(customers_list))
plot(customer.hclust, customer_list$CUSTOMER)
library(rect.hclust)
rect.clust(customer.hplot,5)

这是我得到的图,要求5个簇:

尝试相同,但有 10 个集群:

问题 1:我知道这总是很难说,但是看看图表和数据集,您 'cut' 会怎样对客户进行分组? 5? 10?

我正在查看结果,在同一组中,我有 CUSTOMER112,他们的偏好为 1,0,1,0,1,还有 CUSTOMER 110 (1,1,1,1,1),CUSTOMER106 (1,1,1,1,0) 等等。 "distance" 可能是对的,但在给定的群体中,我的客户在偏好方面存在一些相关差异。

问题2:我不知道这是否是对聚类、我使用的代码甚至数据集完全无知的情况。根据您的经验,在这种情况下,您的最佳聚类方法是什么?

如有任何意见,我们将不胜感激。如您所见,我做了一些努力,但仍然有疑问。

非常感谢!

里卡多

所有答案都很重要,但是@Ben 视频推荐和@Samuel Tan 关于将客户分成网格的建议,我找到了一个很好的处理方法。

该视频让我对层次聚类中的 "noisy" 个变量有了很多见解,网格推荐帮助我思考了数据真正想告诉我的内容。

就是说,一个基本的数据清理过程就淘汰了所有对任何产品不感兴趣的客户(这是显而易见的,但我一开始没有注意)。然后,我忽略了具有特定兴趣(单一产品)的客户。这样做是因为这些客户不需要参加我计划的研讨会系列(他们只想听听一种产品)。

评估所有其他人,对不止一种产品感兴趣,我意识到产品组合可以让我找到更好的分类。从那里,我将客户分为 3 个集群:集成机会(2 或 3 种产品)、融合机会(4 种产品)和转型机会(所有产品)。

现在我很清楚我的研讨会应该关注哪些客户,并计划我的 post-研讨会销售活动利用针对每个客户群(整合、融合、转型)的材料。

谢谢大家的建议!

里卡多