【发布时间】:2015-07-19 23:03:58
【问题描述】:
有一个问题我已经好几周没能解决了。
我有一个用户和他们喜欢的电视剧的数据库。有成千上万的用户(A、B、C、D……)和数千部电视剧(1、2、3、4……)。所以结果是数百万对“user;likedseries”数据库。例如:
A;10 #user A liked series 10
A;23
A;233
A;500
B;5
B;10
B;343
C;10
C;233
C;340
...
我在R中寻求一种方法如何比较:
1) 基于他们喜欢的电视剧的相似用户集群
2)基于用户喜欢的相似电视剧聚类
你知道怎么解决吗?
谢谢
【问题讨论】:
-
如果您访问过亚马逊网站,您会在上面看到推荐书籍或其他内容。可以做类似的事情,k-最近邻算法可能就是其中之一。
-
您为我们提供的内容尚不清楚,但我的直觉是数据非常稀疏。随机森林可能会起作用,但我怀疑您的大多数集群将由更受欢迎的节目形成(这对于您的第一个请求可能很好)。对于第二个问题,比如购物篮分析,您不必对数据进行分区,而是形成可能的关系,例如 {The Simpson's and Futurama} -> {Family Guy} 可能有用。
-
如果电视剧的数量比用户数量少几个数量级,您可以使用遵循贝叶斯规则的生成模型。本质上是 P(cluster_i) = prod(P(cluster_i(show_j))),并且您最初将节目随机分配给不同数量的集群。只要你有一个平滑参数(例如,一个节目的集群成员的最小概率),你可能会没事的。有更好的方法可以做到这一点,但这是最简单的方法之一。
-
这确实与编程无关(仅仅因为你想使用 R 并不会使它成为编程问题)。您确实需要选择适合您的数据的统计方法。有很多聚类算法,在开始编程之前你应该知道要实现哪一个。对于Cross Validated 或Data Science,这可能是一个更好的问题(但请先查看那里的主题内容)。
-
非常感谢所有 cmets 和答案。你是对的,这不是编程问题,像 Cross Validated 或 Data Science 这样的板会更好(我不知道)。
标签: r cluster-analysis