我刚才看到BellKor团队的Pragmatic Chaos是如何赢得Netflix有线连线挑战的,我很好奇这种算法通常如何运作.我知道Bellkor团队的解决方案必须是该领域的创新解决方案..但该领域通常如何运作?它只是一个非常详细的数据库,马尔可夫链是一次又一次地运行或者是什么?
看看这篇维基百科文章:欧几里德距离.
基本思想是使用距离度量(如上面的欧几里德)来比较人或事物.
新的O'Reilly一书" 编程集体智慧:构建智能Web 2.0应用程序 "在这个主题上有一个很好的章节.
但该领域通常如何运作?
这是一种数据挖掘技术.数据挖掘被用作商业智能(数据仓库等)的一部分,试图在大量数据中查找关系和信息.它是计算机科学领域,也涉及机器学习,例如模式识别.自动推荐由Association Mining获得.具有高支持度的关联显示为推荐.k-最近邻算法只是机器学习/数据挖掘人员使用的许多算法之一.
如果您对基础理论感兴趣,我推荐Ian H. Witten的数据挖掘:实用机器学习工具和技术.
对于Java,有一个很棒的机器学习包,WEKA能够进行关联挖掘.Ian Witten也是WEKA的作者之一.
大多数Netflix竞赛参赛者使用奇异值分解的变体.该算法通过采用大矩阵并将其简化为大约2x2矩阵来进行操作.然后可以将该2×2矩阵绘制在2维空间上,其中彼此接近的点在原始矩阵中彼此共享亲和力.
因此,在Netflix的情况下,您可以创建一个矩阵,其中电影是列,用户是行,其中任何值[i,j]是i用户给予电影j的评级.这是一个非常大的矩阵,然后可以对其应用SVD以生成二维矩阵,该矩阵用作较大矩阵的近似值.在此平面上绘制时彼此接近的用户共享相似的评级,因此如果一个用户没有看到另一个用户在该平面上看到谁接近它的电影,那么这可能是对新用户的推荐.
获胜的解决方案设计了一种称为SVD ++的直接SVD算法的变体,并将其与其他边缘情况混合在一起,尝试生成一种算法,该算法将超过获得奖金所需的10%的改进.