文章纯为戏谑之谈!
Topic Model(主题模型)自1999年Hofmann的pLSA起始已风靡近。以下不是原先的文章,而是与主题相似的论述。
在我参与Netflix Prize的年代,我们面临的问题是用户对电影的评分预测。那时的用户-项目矩阵中,不少分数为空缺。对于这一大挑战,大家普遍选择使用补齐这些缺失值。更流行的策略是通过填充中立分值(如3分)来弥补缺失值,然后使用SVD(奇异值分解)技术处理这个大矩阵。
在算法发展的过程中,一个突破性的想法诞生了。有人提出,我们不必过于纠结于那些缺失的评分。我们可以在已知的评分上使用梯度下降法来学习用户和项目的潜在因子表示。这一思路的提出,带来了伪SVD算法等众多新算法的涌现。
但事实上,Netflix Prize可能在一定程度上误导了推荐系统的发展方向。更早的MovieLens项目就已经了这个问题。当人们试图将Netflix Prize的算法应用到实际系统中时,他们发现自己的系统并没有评分数据,只有观看、点击、购买等数据。这引发了我们对推荐真正目标的思考:是预测评分,还是推荐用户可能感兴趣的内容?
面对user-item矩阵中全为1的非缺失值时,我们开始思考如何对这种特殊的矩阵进行分解。人们在NLP领域的Topic Model中找到了灵感。文档-词语矩阵与用户-项目矩阵有着相似的结构问题,即都是遇到大量值为1的情况。而NLP领域已经提出了如pLSA和LDA等算法来解决这一问题。
在KDD Cup的某个阶段,我们甚至开始尝试在0和1上训练SVD模型。虽然面临大量0值(即缺失值)的问题,但通过采样技术,我们依然可以对其进行处理。例如,每遇到一个1,我们就随机采样出N个0来构成一个训练样本。
在LDA的发展过程中,人们开始追求更多的主题。从几百个主题发展到数百万个主题,这背后是技术的不断进步和群众智慧的结晶。而LDA的这些进步为更细粒度的语义表达提供了可能。
虽然word2vec等深度学习技术的崛起曾让LDA受到冷落,但其优化的思想和在层次化结构上的创新为其他算法带来了新的灵感。尤其是其利用霍夫曼编码实现层次化SoftMax的技术,不仅减少了计算复杂度,还使得模型更倾向于选择热门的项目作为负样本。
如今,我们仍在探索更高级的数据建模和处理技术。无论是稀疏表达的追求还是主题数量的增加,都是为了更准确地理解数据背后的含义,更好地服务于实际应用。
思考题:Netflix Prize的评分问题只关注非缺失值是因为其认为预测用户会看什么电影比预测评分更重要。那么在实际操作中,如何平衡这两个方面的考量呢?
欢迎关注微信公众号【ResysChina】,探索个性化推荐技术的无限可能。