8

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

我不知道统计或人工智能,但这里的东西看起来很有趣。我不知道从哪里开始做。

这是我想要完成的事情:

  1. 根据每个用户的喜好组成一组样本,分别对每个样本属性进行评分。例如,也许一个用户非常喜欢西方电影,所以西方类型对该用户来说会带来更多的权重(对于其他属性,如演员、导演等)。

  2. 用户可以根据其他用户的喜好获得建议。例如,如果用户 A 和 B 都喜欢 Spielberg(用户之间的联系),并且用户 B 喜欢 Batman Begins,但用户 A 讨厌 Katie Holmes,则相应地为用户 A 权衡电影(同样,每个属性单独,例如,也许用户 A 不太喜欢动作片,所以稍微降低评分,因为凯蒂·霍姆斯不是主要明星,所以不要像其他属性一样考虑这一点)。

基本上,将用户 A 的集合与用户 B 的集合进行比较,然后得出用户 A 的评分。

我对如何实现这个有一个粗略的想法,但我敢肯定一些聪明的人已经想到了一个更好的解决方案,所以......有什么建议吗?

实际上,经过快速研究,贝叶斯过滤器似乎可以工作。如果是这样,这会是更好的方法吗?会不会像“规范化”电影数据、为每个用户训练分类器、然后对每部电影进行分类一样简单?

如果您的建议包括一些令人费解的概念(我在这些主题方面没有经验,特别是在 AI 方面),如果您还包括一些基础知识列表供我在深入研究肉类之前进行研究,我将不胜感激。

谢谢!

4

5 回答 5

4

这类似于OP 想要构建推荐系统的问题。简而言之,我们得到一组训练数据,包括用户对电影的评分(例如 1-5 星评分)和每部电影的一组属性(年份、流派、演员……)。我们想要构建一个推荐器,以便它为未看过的电影输出一个可能的评分。所以 inpt 数据看起来像:

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

对于未分级的电影 X:

10    20     2009   drama   ?

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

最简单的方法是使用k 近邻算法。在评分的电影中,搜索与电影 X“最接近”的电影,并结合它们的评分来产生预测。这种方法的优点是非常简单,易于从头开始实施。

存在其他更复杂的方法。例如,您可以构建决策树,在训练数据上拟合一组规则。您还可以使用贝叶斯网络人工神经网络支持向量机等等......对于没有适当背景的人来说,通过每一个都不容易。我仍然希望您会使用外部工具/库。现在您似乎对贝叶斯网络很熟悉,所以一个简单的朴素贝叶斯网络实际上可能非常强大。一个优点是它允许在缺失数据的情况下进行预测。

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

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

我想对于不想了解太多细节的人来说,我建议使用最近邻方法,因为它直观且易于实现。仍然值得研究使用Weka(或其他工具之一)的选项.

于 2009-10-22T19:26:59.410 回答
2

有一些算法对此有好处:

ARTMAP:通过概率对彼此进行分组(这并不快,但它对您的问题 IMO 是最好的)

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

KMeans:这通过它们彼此之间的距离来分离向量 KMeans:维基百科

PCA:将所有值的平均值与可变位分开。这就是您在计算机视觉中用于人脸检测和背景减法的方法。 主成分分析

于 2009-10-21T19:01:28.730 回答
2

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

于 2009-10-22T18:26:32.740 回答
1

查看Netflix 奖的顶级团队的一些作品。

于 2009-10-28T12:03:59.917 回答