更新中。。。。。
推荐系统的基本知识
推荐系统的基本功能就是帮助用户主动找到满足其偏好的个性化物品并且推荐给用户,推荐系统的输入数据可以是多种多样的,总结起来主要是用户(User)、物品(Item)和评分(Ratings)三个层面。他们分别对应于一个矩阵中的行、列和值。对于某一个特定的用户,推荐系统的输出为一个推荐列表,该列表按照偏好得分顺序给出了该用户可能感兴趣的物品。
推荐问题一个典型的形式化描述如下:我们拥有一个大型稀疏矩阵,该矩阵的每一行表示一个User,每一列表示一个Item,矩阵中每个“+”号表示该User对Item的Rating,(该分值可以是二值化分值,喜欢与不喜欢;也可以是0~5的分值等)。
基于协同过滤的推荐方法
基于协同过滤的推荐方法通过搜集用户过去的行为以获得其对物品的显示或隐式信息,根据用户对物品的偏好,发现物品或者用户的相关性,然后基于这些关联性进行推荐。
协同过滤主要分为两类:Memory-based推荐和Model-based推荐。其中Memory-based又分为User-based和Item-based两种方法。
Memory-based方法主要是通过执行近邻搜索,把每一个Item或者User看成一个向量,计算其他所有的Item或者User之间两两相似度后,就可以进行预测和推荐了。
Model—based推荐最常见的方法是matrix factorization(矩阵分解),矩阵分解通过把原始的评分矩阵R分解成两个矩阵相乘,并且只考虑评分的值,训练时不考虑missing项的值,将矩阵R分解成U和V之后,评分矩阵R中missing的值就可以通过U某列和V中的某行相乘得到。矩阵分解的目标函数为:
$$
\arg \max_{\theta} \mathbb{I}(X; Y) = \arg \max_{\theta} - \mathbb{H}(X|Y) \\
= \arg \max_{\theta} \mathbb{E}_{q(X, Y)} [\log q(X|Y)]
$$