1、Content-‐based Recommender Systems
顾名思义,基于内容的推荐系统是根据物品的内容或者特征来推荐的,比如说在有些电影推荐系统中会使用到这种方法,具体实现过程可以举个例子来说
?表示未知的或者没看过的电影,其实该电影推荐系统就是对这些没看过的电影预测其评分,填空值
上表中有四个用户,五个电影,其中这些电影的内容(特征)是已知的,根据用户的观看历史,直观看来Alice是比较喜欢romance类,因此对第三部电影(Cute pupies of love)的评分有可能是5分,为什么呢?因为(Cute pupies of love)是一部爱情片呀!人家已经给出了他的特征了,具体评分是多少,便可以用算法来预测了(强烈推荐Andrew ng的Machine Learning视频)
预测的评分为y(i,j)即用户j对电影i的评分: ,其中是用户的喜爱程度特征,是电影的内容特诊,不要问我为什么两者相乘为评分值(呜呜~~),应该这么想用户喜欢的(特征)并且这个特征在电影内容中比重较大的评分肯定很高,那么两者的乘积肯定很高
看上图给出了电影三的三个特征x0=1(额外特征变量),x1=0.99(romance),x2=0(action) 在这里n=2,那么thta应该有3维特征,我也不知道为什么,吴老板给的解释是。
在图中是假设的,至于到底是多少,就需要我们去学习了,其实这个学习就相当于是机器学习中的linear regression ,学习 ,,X是已知的,再利用梯度下降法获得最优解:
i:r(i,j)=1,表示评分不为0的电影,前面一个损失函数是针对一个用户的,后面这是学习所有用户的,学习的过程如下:
2、Collaborative Filtering(协同过滤)
实际上一个推荐系统电影的数目是十分庞大的,因此要知道每个电影的内容也就是X是很困难也不切实际的,因此上述所讲的基于内容的推荐系统并不常用,若反过来,已知(假设随机初始值)的话,就可以学习到,再根据学习到的来学习,交替学习,最后放置一个公式内一起学习
所谓的协同过滤其实就是用上每个用户所提供的数据来学习出更好的特征,每个用户的数据都包含着我们要学习的特征
3、均值归一化(Mean Normalization)
当然咯,如果新加入一个用户的话,没有做任何的评分,那么他的兴趣向量为零向量,为了防止出现零向量,我们把评分分为两部分,一部分学习得到,一部分为电影的评分均值即