【发布时间】:2015-04-30 22:08:35
【问题描述】:
我有一个包含客户列表及其产品偏好的数据集。基本上,它是一个简单的 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:我知道这总是很难说清楚,但是看看图表和数据集,您对客户分组的“切入点”是什么? 5? 10 点?
我正在查看结果,在同一个组中,我有 CUSTOMER112 和 1,0,1,0,1 作为他们的偏好以及 CUSTOMER 110 (1,1,1,1,1),CUSTOMER106 (1 ,1,1,1,0) 等等。 “距离”可能是正确的,但在给定的组中,我的客户的偏好存在一些相关差异。
问题 2:我不知道这是否是完全不了解集群、我使用的代码甚至数据集的情况。根据您的经验,在这种情况下,您的最佳聚类方法是什么?
任何 cmets 都将受到高度赞赏。如您所见,我做了一些努力,但仍有疑问。
非常感谢!
里卡多
【问题讨论】:
-
为什么你认为应该有 5 或 10 个集群?这些数字是从哪里来的? 10 显然太多了,因为您的集群只有 1 或 2 个成员。如果您查看图表,您似乎有 2 个或 4 个集群。你读过 hclust 的帮助吗?有不同的距离指标会改变结果,看看是否出现了相同数量的集群。
-
嗨@Ben,感谢您的回复。这是我的第一次聚类练习,所以我认为 5 或 10 显然是一个错误。作为一个想法,来自像你一样有经验的人,你的建议是什么?使用不同的高度?顺便说一句,你有关于树状图解释的好的信息来源吗?谢谢!
-
也许您可以根据对一种或两种产品的兴趣进一步将您的客户划分为一个网格。查看
ggplot2中的facet_grid示例。当然,请使用分布更均匀的产品。 -
谢谢@SamuelTan。这是一个好主意。每个产品都是独立的,但所有产品都可以集成到 PRODUCT_A 中。今天我将探索不同的网格。
-
推荐观看 Coursera 数据探索课程中的此视频 (youtube.com/watch?v=wQhVWUcXM0A)。
标签: r csv hierarchical-clustering euclidean-distance conceptual