根据之前的选择从集合中提出一个项目的最佳方式是什么?

数据挖掘 机器学习 数据挖掘 Python
2021-09-24 19:22:43

这个问题的目标是能够根据他过去的经验向用户提出进一步的选择:比如亚马逊的书籍建议。

从一组 mp3 文件中,我假设已经填充了一组 mp3 标签数据,基于他/她已经听过的音乐:什么是实现机器学习的最简单方法,它能够提出一个列表基于用户设置的音乐选择 ?

注意:我是机器学习新手,如果答案可以基于 Orange、Weka 或此类工具,我将不胜感激。

更新:按照建议删除了分类标签。

对于像我这样的新手:
-《傻瓜预测分析》一书是关于这个主题的一个很好的一般性介绍
-下一步将是论文寻找相似艺术家的聚类,这对于 K-means 方法来说非常有趣
-数百万首歌曲数据集是一座金矿,拥有庞大的数据集以及使用 Python 代码的教程
- 特别感谢 sheldonkreger 对 neo4J 图形使用理念的回答,这真的很有趣

4个回答

有很多很好的方法可以解决这个问题。正如其他人指出的那样,这是一个推荐问题,而不是分类问题。有很多方法可以用这样的数据集进行推荐。我将指出一些方法,您可以选择一种或全部尝试。

第一种方法称为基于用户的协同过滤。基本思想是根据志同道合的用户的口味给用户推荐。因此,您将尝试根据听过相同歌曲的用户的收听历史来推荐音乐。此类数据可以建模为图形或稀疏矩阵。然后,您可以根据要如何对数据建模来选择确切的算法。

第二种方法称为基于项目的协同过滤。该策略不是将用户关联在一起,而是查看用户“评分”的一组项目(用户听过的歌曲),并计算它们与特定目标项目(歌曲)甚至所有歌曲的相似程度在您的数据集中。它抓取一组最相似的项目,并使用各种方法来预测用户对这首歌的喜爱程度。

在这种情况下,您只有二进制数据(用户听过或没有听过)。这些计算往往最适用于实际评分(如 5 星系统),因为这会在数据集中的项目之间提供更详细的变化。

第三种选择是在 Neo4J 等图形数据库中对数据进行建模,并编写图形遍历查询以找到相似的项目。如果你喜欢图论,这会很有趣。关于什么样的遍历会返回好的结果,天空是极限。首先,将用户和歌曲视为图中的节点,将“收听”视为边缘。user>listened>歌曲

由于评分和基于项目的过滤,并且由于您的数据集中可能有很多歌曲,并且每个用户只听其中的一小部分,我首先尝试使用稀疏矩阵的基于用户的协同过滤方法计算建议的操作。如果您的数据集很大,这些计算会水平扩展,因此您可以在遇到性能问题时利用并行处理。

您可以在本文中找到有关协同过滤的更多详细信息

您所描述的不是分类任务。您需要使用推荐引擎来执行此操作 - 这就是它们的实际开发目的。我建议您搜索“Mahout in action”一书,该书出色地涵盖了推荐引擎的开发。阅读理论后,您将能够找到适合您任务的工具。

我不确定您在第二段中所说的内容,但如果您的假设是所有 mp3 都已被标记,那么进一步提出建议的最简单方法是建议具有最高标签重叠的 mp3。

最好看看您的数据以提出建议。如果您需要根据用户先前的选择推荐 mp3,那么确定用户最喜欢的 mp3(流派、长度、作者等)是有意义的(以及最不喜欢的),当然,如果您有这样的mp3 的数据。然后了解您的用户的偏好,您可以应用不同的协作方法。

是我使用 yelp 数据的方法。

它与 mp3 无关,但在识别用户偏好和基于此推荐 mp3 方面可以与 mp3 类似地工作。希望这会有所帮助