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