首页 文章

基于其他用户喜欢的用于查找用户想要的内容的算法

提问于
浏览
8

我正在考虑编写一个应用程序,根据家庭成员的喜好对HTPC中的电影进行分类 .

我不知道统计数据或人工智能,但东西here看起来很多汁 . 我不知道从哪里开始做 .

这就是我想要完成的事情:

  • 撰写每个用户喜欢的一组样本,分别对每个样本属性进行评级 . 例如,也许用户喜欢西方电影很多,所以西方流派会为该用户带来更多的权重(等等其他属性,如演员,导演等) .

  • 用户可以根据其他用户的喜好获得建议 . 例如,如果用户A和B都喜欢Spielberg(用户之间的连接),而用户B喜欢Batman Begins,但是用户A厌恶Katie Holmes,则相应地为用户A权衡电影(再次,每个属性分开,例如,也许用户A不喜欢动作电影,所以将评级降低一点,因为凯蒂霍姆斯不是主要的明星,所以不要像其他属性那样考虑到这一点 .

基本上,比较来自用户A的集合,类似于来自用户B的集合,并为用户A提供评级 .

我对如何实现这一点有一个粗略的想法,但我确信一些聪明的头脑已经考虑过一个更好的解决方案,所以...任何建议?

实际上,经过快速研究,似乎贝叶斯过滤器可行 . 如果是这样,这会是更好的方法吗?是否只是简单地“标准化”电影数据,为每个用户训练分类器,然后只对每部电影进行分类?

如果你的建议包括一些大脑融化概念(我在这些科目中没有经验,特别是在人工智能方面),如果你在深入研究多肉之前还列出了一些基础知识供我研究,我会很感激 .

谢谢!

5 回答

  • 4

    有一些算法对此有好处:

    ARTMAP:通过概率相互分组(这不是快速但对你的问题IMO来说是最好的)

    ARTMAP拥有一组共同属性,并通过百分比确定可能性 . ARTMAP

    KMeans:这将它们彼此之间的距离分开KMeans: Wikipedia

    PCA:将分离变量位中所有值的平均值 . 这是您在计算机视觉中用于人脸检测和背景扣除的方法 . PCA

  • 4

    这类似于this question,其中OP想要 Build 推荐系统 . 简而言之,我们获得了一组训练数据,包括用户对电影的评分(例如1-5星评级)和每部电影的一组属性(年份,流派,演员......) . 我们想要 Build 一个推荐器,以便为看不见的电影输出可能的评级 . 所以inpt数据看起来像:

    user movie   year   genre   ...    | rating
    ---------------------------------------------
      1    1     2006   action         |    5
      3    2     2008   drama          |    3.5
      ...
    

    而对于未评级的电影X:

    10    20     2009   drama   ?
    

    我们想预测一个评级 . 对所有看不见的电影执行此操作,然后按预测的电影评级排序并输出前10名,为您提供推荐系统 .

    最简单的方法是使用k-nearest neighbor算法 . 在评级的电影中,搜索电影X的"closest",并结合他们的评级来产生预测 . 这种方法的优点是易于从头开始实施 .

    存在其他更复杂的方法 . 例如,您可以构建decision tree,在训练数据上拟合一组规则 . 你还可以使用Bayesian networksartificial neural networkssupport vector machines等等......对于没有适当背景的人来说,通过这些方法并不容易 . 我仍然希望你会使用外部工具/库 . 现在你似乎熟悉贝叶斯网络,所以一个简单朴素的贝叶斯网,实际上可能非常强大 . 一个优点是它允许在缺失数据下进行预测 .

    主要想法会有些相同;获取您拥有的输入数据,训练模型,然后使用它来预测新实例的类 .

    如果你想在简单直观的包中使用不同的算法,不需要编程,我建议你看看Weka(我的第一选择),OrangeRapidMiner . 最困难的部分是将数据集准备为所需的格式 . 其余的就像选择算法并应用它一样简单(只需点击几下!)

    我想对于那些不想进入太多的人细节,我建议使用最近邻居方法,因为它直观且易于实现..仍然可以选择使用 Weka (或其他工具之一)值得研究 .

  • 1

    K最近邻算法可能就在你的小巷里 .

  • 2

    查看netflix prizenetflix prize的一些工作 .

相关问题