15 推荐系统
一个电影提供商,有5部电影和4个用户。要求用户为电影打分:
前三部为爱情片,后两部为动作片。Alice、Bob更倾向于爱情片,Carol、Dave更倾向于动作片。没有一个用户给所有的电影打过分。希望构建一个算法来预测他们每个人可能会给他们每个人可能会给他们没看过的电影打多少分,并以此作为推荐依据。引入如下标记:
代表用户数量
代表电影数量
如果用户j给电影i评过分则=1
代表用户j给电椅i的评分
代表用户j评过分的电影总数
15.1 基于内容的推荐系统
基于内容的推荐系统中,推荐的东西需要一些数据,这些数据是有关这些东西的特征。例如假设每部电影都有两个特征,如代表电影的浪漫程度,代表电影的动作程度。
则每部电影都有一个特征向量,如是第一部电影的特征向量为[0.9 0]。
基于这些特征构建一个推荐系统算法。采用线性回归模型,针对每个用户都训练一个线性回归模型。如是第一个用户的模型参数。即:
针对单一用户的代价函数可以表示为:
为了学习所有用户,将所有用户的代价函数求和:
15.2 基于协同过滤的推荐系统
基于内容的推荐系统,对于每部电影都有可用的特征。这些特征可以训练出每个用户的参数。相反地,如果拥有了用户参数,可以学习得出电影的特征。
当既没有用户参数,也没有电影特征时,协同过滤算法可以同时学习两者。
在协同过滤算法中,通常不使用方差项,如果需要,可以自动学得。协同过滤算法使用步骤如下:
-
初始为一些随机小值。
-
使用梯度下降算法最小化代价函数。
-
在训练完算法后,预测为用户j给电影i的评分。
通过这个过程获得的特征矩阵包含了有关电影的重要数据,这些数据不总是人能读懂的,但可以作为给用户推荐电影的依据。
例如,一位用户正在观看电影,可以寻找另一部电影进行推荐,依据两部电影的特征向量之间的距离|| ||的大小。
15.3 协同过滤算法
15.4 向量化:低秩矩阵分解
找到相关影片:
15.5 均值归一化