【问题标题】:Algorithm for clustering people with similar interests聚类具有相似兴趣的人的算法
【发布时间】:2013-08-26 00:28:29
【问题描述】:
我想根据人们的兴趣将他们分组。例如。喜欢机器学习和图表的人可能会被分到一个组,而对数学和经济学等感兴趣的人可能会被分到一个不同的组。
该算法应该能够根据人们的兴趣来决定哪些人的兴趣最匹配并创建聚类。它还应该能够输出有关特定人所在组中的其他人的信息。
【问题讨论】:
标签:
algorithm
machine-learning
data-mining
cluster-analysis
【解决方案1】:
如果没有更多关于您问题的背景,我真的无法给出明确的答案。大多数聚类算法都可以工作,但问题是你的结果有多“好”。我引用“好”这个词是因为你需要某种度量来衡量它(通常是集群间和集群内的距离)。
当我被教导如何决定数据挖掘算法时,给我的建议是:首先尝试最简单的算法 - 这些算法经常被忽略但性能相当好(用于监督学习的朴素贝叶斯就是一个经典示例) .
首先,尝试使用 K-means 之类的方法,这是一种简单而流行的方法,您可以在此处找到更多信息 http://en.wikipedia.org/wiki/K-means_clustering(如果您查看软件部分,您还可以找到您可以使用的实现列表试试)。
标准的第二部分是能够根据目标人输出组中的其他人。这在所有聚类算法中都是可行的,因为您将拥有 X 个人的子集,您只需要找到目标人所在的子集,然后迭代该子集并打印出所有的人。
【解决方案2】:
这听起来不是一个特别困难的聚类问题,任何现成的聚类算法都可能运行良好。如果您知道需要多少个聚类,请尝试 k-means 或 k-medoid 聚类。如果您不知道有多少个集群,请尝试凝聚集群。
问题的难点在于功能。您提到“兴趣”可以用作聚类的特征,但特征工程和选择总是需要反复试验。
【解决方案3】:
我认为正确的方法是 Kmeans 聚类。问题中最重要的部分是特征选择。
尝试使用您认为最重要的一些特性,并在 R 等统计编程语言中简单地应用 kmeans,检查结果并通过特性修改或选择更合适的特性来改进它。
如果您不确定功能选择,Hit and Trial 可以让您深入了解。
如果您可以提供一些示例数据,将有助于为您的问题提供一些具体的解决方案。
【解决方案4】:
它来的有点晚,但实际上 Windows 商店中有一个应用程序正在这样做:查找具有相似特征的配置文件
它叫做k-modo