基于多个变量聚类用户?

时间:2015-05-29 20:47:02

标签: algorithm statistics cluster-analysis

我有一个网站,我收集了很多关于用户行为的日志。他们什么时间登录,他们看什么产品,他们看多久等等。我想看看我是否可以基于此进行聚类分析,但我不确定如何合并多个变量。

具体来说,我的问题是当不同的变量对不同的群体更重要时,如何加权它们的重要性并聚集不同的群体。例如,我了解那些查看相同产品的人可以进行分组,但也有一部分用户因为工作而登录购买产品,并且他们倾向于每周或每月同时登录,以便他们我认为购买时间的一致性很重要。

我在统计数据方面表现不佳,但我决心要学习,但有人能指出我可以学习如何解决这个问题的资源吗?我一直在研究k-mean和神经网络,但还没有清楚地知道如何将它实现到这个问题。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好的,这个答案比预定的要长,但对我自己来说这是一个很好的复习:

这里我假设很多事情,例如

  • 网站访问的持续时间很短(分钟)。
  • 每个用户只关心一项任务
  • 您认为每个会话都是一个黑盒子交易。

您应该从数据集中创建自己的新属性。如有必要,创建一组属性,例如“logs_in_on_workdays”,“logs_in_on_weekend”,“logs_in_morning”,“logs_in_afternoon”,“session_duration_minutes”,“logs_out”等 - 这是基于日期值。

对你的物品不能说太多。那么“looks_at_dairyprod”,“looks_at_softdrinks”......?

也许您也可以使用user_agent字段“browser_type”,“os_name”,“is_mobile”等可能是“is_authenticated”,remote_host_type(“is_bot”)等 - 无论您的日志文件允许什么。

也许您可以将经过身份验证的用户与其他数据集一起创建更多属性,例如“is_male”,“is_employee”等等。

这个数据争论部分你的项目肯定会很有趣。 最终结果将是一个包含数值的大表,大多数是1或0值。

如果包含其他数字属性,例如“年龄”,“持续时间”,则应将这些数据标准化为0到1之间的值。

然后你可以使用kmeans算法运行聚类分析,参数化,例如 k = 10,11,12 ... 20.

您对 k 的合理值的明确选择取决于您的要求(您想要找到多少个群集?期望做什么?你有关于异常值的东西吗?例如,对于k =5,找到1个拥有36000个用户的群集和4个拥有100个用户的群集是否有意义呢?那么你应该增加群集数量并希望大群集将被拆分)

您的群集分配必须连接回原始数据集表 myview 。然后你做交叉制表。在R中,您可以通过运行以下命令来执行此操作:

(clust2 <- data.frame(sapply(colnames(myview),function(x){ tapply(myview[,x], km20$clusternum, mean) })))

结果表(下面的示例,k=20)将为您提供有关数据结构的提示,但不是明确的答案。

但是,处理kmeans-clustering的结果后,您可以回答

等问题

哪个群集最符合“工作日早晨经过身份验证的用户定期访问网站”的描述?

## ClusNo Duration Morning Afternoon Periodic Weekd Authenticated   Age
## 1     840.0  0.0000    0.0000  1.0000  0.9510 0.0000 48.49
## 2    9335.3  0.3515    0.4485  0.1576  0.6333 0.6333 00.00
## 3     744.7  0.0000    0.8410  0.0000  0.0000 1.0000 28.01
## 4     621.4  1.0000    0.0000  0.0000  0.9975 1.0000 50.14
## 5     617.1  0.0000    0.9871  0.0000  1.0000 1.0000 40.34
## 6     844.8  0.0000    0.9641  0.0000  0.0000 0.9648 49.72
## 7     689.1  0.0000    0.0000  1.0000  0.9941 1.0000 46.77
## 8     729.4  1.0000    0.0000  0.0000  0.9935 0.0000 48.79
## 9     680.7  0.0000    0.9817  0.0000  1.0000 1.0000 54.81
## 10    734.6  0.0000    0.0000  1.0000  0.0000 0.7328 30.73
## 11    586.0  1.0000    0.0000  0.0000  1.0000 1.0000 30.18
## 12    772.1  0.0000    0.0000  1.0000  1.0000 0.0000 28.20
## 13    673.8  0.0000    0.0000  1.0000  1.0000 1.0000 28.37
## 14    646.4  0.0000    0.9226  0.0000  1.0000 1.0000 27.16
## 15    876.1  0.0000    0.9331  0.0000  0.0000 0.0000 32.37
## 16    687.5  1.0000    0.0000  0.0000  1.0000 0.0000 28.93
## 17    767.7  0.0000    0.9900  0.0000  1.0000 0.0000 49.33
## 18    748.6  1.0000    0.0000  0.0000  0.0000 0.6540 34.10
## 19    738.6  0.0000    0.9503  0.0000  1.0000 0.0000 29.03
## 20  45891.4  0.2020    0.1212  0.5758  0.8586 0.7273 00.00

哪些群集可以被描述为“比工作日晚上发生的平均访问时间短(

还有很多甚至更多。您必须使用商业知识来选择有趣的属性并提出正确的问题。

也许您会发现被忽视的群集,或者关于群集感兴趣的响应变量的提示(此处为年龄)。这就是基本的聚类分析为您提供的。