我有一个网站,我收集了很多关于用户行为的日志。他们什么时间登录,他们看什么产品,他们看多久等等。我想看看我是否可以基于此进行聚类分析,但我不确定如何合并多个变量。
具体来说,我的问题是当不同的变量对不同的群体更重要时,如何加权它们的重要性并聚集不同的群体。例如,我了解那些查看相同产品的人可以进行分组,但也有一部分用户因为工作而登录购买产品,并且他们倾向于每周或每月同时登录,以便他们我认为购买时间的一致性很重要。
我在统计数据方面表现不佳,但我决心要学习,但有人能指出我可以学习如何解决这个问题的资源吗?我一直在研究k-mean和神经网络,但还没有清楚地知道如何将它实现到这个问题。有什么建议吗?
答案 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
哪些群集可以被描述为“比工作日晚上发生的平均访问时间短(
还有很多甚至更多。您必须使用商业知识来选择有趣的属性并提出正确的问题。
也许您会发现被忽视的群集,或者关于群集感兴趣的响应变量的提示(此处为年龄)。这就是基本的聚类分析为您提供的。