使用R对大数据样本进行聚类分析

时间:2015-05-20 19:11:39

标签: r cluster-analysis

我刚刚开始使用R我为电子商务零售业务分割客户数据库。我寻求关于进行此练习的最佳方法的一些指导。 我已经搜索了已发布在这里的主题,并像dist()和hclust()一样自己尝试了。但是我遇到了一个或另一个问题,因为我不习惯使用R而无法克服它。 以下是我的问题的简要说明。 到目前为止,我有大约480K的客户记录。该数据包含以下列:

  • 电子邮件ID
  • 性别
  • 城市
  • 到目前为止的总交易次数
  • 平均篮值
  • 平均购物篮大小(在一次交易中购买的商品数量)
  • 每笔交易的平均折扣
  • 自用户首次购买以来的日期
  • 两次购买之间的平均持续时间
  • 自上次交易以来的日期

此练习的业务目标是识别利润最高的细分受众群,并鼓励使用广告系列在这些细分受众群中重复购买。我是否可以获得有关如何成功完成此操作的指导,而不会遇到样本大小或列数据类型等问题?

2 个答案:

答案 0 :(得分:1)

阅读this以了解如何对数据框进行子集。当您尝试定义d时,看起来您正在为大量数据提供方法,这可能通过首先对您的表进行子集化来修复。如果没有,您可能需要随机抽取数据而不是全部数据。假设您知道名为cust_data的数据框的第4列到第10列包含数字数据,那么您可以尝试这样做:

cust_data2 <- cust_data[, 4:10]
d <- dist(cust_data2)

对于较大的值,您可能需要记录转换它们 - 只需进行实验并查看有意义的内容。我真的不确定这个,这只是一个建议。也许选择更合适的聚类或距离度量会更好。

最后,当你运行hclust时,你需要传入d矩阵,而不是原始数据集。

h <- hclust(d, "ave")

答案 1 :(得分:0)

可悲的是,您的数据不包含任何表明哪些类型的商品/交易未导致销售的属性。

我不确定聚类是否可以到达此处。

以下是一些想法:

首先将您的数据分成训练集(比如70%)和测试集。

设置一个简单的线性回归模型,例如,“平均篮子值”作为响应变量,所有其他变量作为自变量。

fit <-lm(averagebasketvalue ~., data = custdata)

在训练集上运行模型,确定重要属性(summary(fit)输出中至少有一个星的属性),然后关注这些变量。

通过计算测试集上的R平方和平方误差和(SSE),检查测试集上的回归系数。你可以使用predict()函数,调用看起来像

fitpred <- predict(fit, newdata=testset)
summary(fitpred) # will give you R²

也许“city”包含太多有意义的唯一值。尝试通过引入一个新属性CityClass来推广它们(例如BigCity-MediumCity-SmallCity ...或任何分类方案对您的城市有用)。您也可以在“性别”上调整模型。删除“电子邮件ID”。

这可以持续一段时间......与模型一起尝试获得更好的R平方和SSE。

我认为基于树的模型(rpart)在这里也可能运行良好。

然后您可能会在以后更改为聚类分析。