上一次修改时间:2018-07-08 17:34:05

推荐系统

  1. 大纲

    image.png

  2. 推荐系统出现的背景

    image.png

    image.png

    image.png

    QQ图片20180707104359.png

    image.png

    image.pngimage.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    http://www.datafountain.cn/projects/jdata/

    image.png

    https://tianchi.aliyun.com/competition/information.htm?raceId=1

    注:移动端相比PC端,能提供更多的用户信息用于预测,如用户的地理位置,移动设备本身的价值等;

  3. 推荐系统是什么

    image.png

    image.png

    注:推荐系统就是根据用户模型,找出和用户u相关度最的高物品i

    image.png

    image.png

    注:上图表示,推荐系统里物品之间会有一个相关性,即上图中的右边的list;

    image.png

    注:上图表示,如果有用户画像的话,可以根据用户画像做个性化的推荐;

    image.png

    注:上图表示,如果有用户画像及用户的社交数据的话,还可推荐朋友感兴趣的物品;

    image.png

    注:上图表示,如果有用户画像的数据及社交数据时,还可以计算用户和朋友之间的相关性,然后根据该相关性进行推荐;

    image.png

    注:上图表示基于知识的推荐系统;

    image.png

    注:上图表示实际使用时,根据业务的需求及实际能获取到的数据混合后做推荐;

  4. 推荐系统基本技术

    QQ图片20180707105356.png

  5. 基于协同过滤的推荐

    image.png

    image.pngimage.png

    image.pngimage.png

    image.png

    image.png

    image.png

    image.png

    注:如上图中,假设所有的物品I为5,Alice的特征向量为:(5 , 3 , 4 , 4 , 4 , ''),同理User1的特征向量为(3 , 1 , 2 , 3 , 3 , 3),另外,特征向量中是可以有空值的,空值如Alice的Item5,表示Item5是Alice所不知道的物品,基于用户的协同推荐就是用用户的特征向量(如上图的Alice),找出与其相似的用户(假设为User1),并用其相似的用户(User1)的特征向量来预测用户(Alice)所不知道的物品(Item5)的偏好

    计算公式注:image.png表示用户a对物品P的偏好分数,image.png表示用户a对所有物品P的偏好分数的均值;另外,要预测Alice对Item5的偏好,需要先对Alice打过分的Item1,2,3,4,找出同样为Item1,2,3,4打过分,且对Item5打过分的用户User1,2,3,4,再计算Alice和User1,2,3,4的相似度,并用相似度高的User的Item5的评分来预测Alice对Item5的偏好分数

    image.png

    image.png

    注:在实际系统中,用户数量可能会非常多,因此可以选取相似度高的前10个,或者100个用户,也可以选取阈值高于某个值的所有用户,另外,预测函数是人为构造出来的,根据实际的业务需求,可以构造别的预测函数

    image.png

    image.png

    注:方差大意味着离均值远,如某一个流行物品,大都数人对其的评分都很高,此时,对该物品评分很低的人之间,对物品的偏好程序应该是真正相似的

  6. 基于物品的协同过滤

    image.png

    image.png

    image.png

    注:基于物品的协同过滤里,是根据物品的特征向量,即上图中Item1(3,4,3,1)来计算物品之间的相似度的,如上图中,根据User1,2,3,4对物品Item1,2,3,4的偏好分数,计算后假设Item1和Item5是最相似的,此时,就可以用Alice对Item1的偏好分数来预测Alice对Item5的偏好分数

    image.png

    image.png

    image.png

    image.png

    注:协同过滤在用户行为丰富的情况下,效果好,因此对于新的用户或新的网站,因为用户行为数据缺乏,所以效果不好

    基于用户的协同过滤和基于物品的协同过滤都是属于基于内存的模型(需要将用户和物品的数据放置在内存中)

    名词解释:冷启动------冷启动是指新网站刚建成时,物品和用户的初始化

  7. 基于模型的协同过滤

    image.png

    image.png

    注:隐语义模型的任务是用预测得分来填满未打分的项

    image.png

    image.png

    注:m是指矩阵的维数

    image.png

    image.png

    https://github.com/jingchenUSTC/SVDRecommenderSystem

    注:image.png是指分解后的矩阵P中的第u行的转置(矩阵规模为U*1),image.png是指分解后的矩阵Q中的第i行(矩阵规模为1*I)

    image.png

    image.png

    注:模型训练的目的是找出矩阵R分解后的矩阵PQPQ类似线性回归中的WX,image.png表示直值与预测值之间的差异,即残差,公式中1/2是为了中和掉求一阶导时平方数2

    目标函数注解:image.png是矩阵分解后的列向量和行向量的乘积,即预测值image.png,对外面一层的u,i求和image.png展开后,里层的求和image.png里,u和i都是常数,如u=1,i=1;

    image.png

    注:带求和符号的求偏导,image.png中除了image.png本身外,其它均要看成是常数,如p1k,p2k......等都是常数;image.pngimage.png求偏导时,要用复合函数的求导法则,将image.png看成一个整体求导后得image.png,即image.png,然后再乘以image.png本身的求导,即image.pngimage.png

    更新公式为用梯度下降求解时的迭代公式,其中image.png为负梯度

    image.png

    image.png

    注:上面是加的L2正则image.png,也可以用其它的正则

    image.png

    image.png

    注:image.png 表示用户的偏好,image.png表示物品的偏好,用户个人会因自身原因,对整体的打分都比较高或比较低,同理,比较流行的物品也会在整体上得分比较高; 

    QQ图片20180707111211.png

    QQ图片20180707111328.png

    注:现实的评分矩阵特别稀疏(绝大多数人可以只看过1000部电影中的一十部并评分过),因此需要加入更多的约束以防止求出来的分解矩阵P和Q不稳定,如用户浏览过的某个电影,说明用户对请该电影是感觉兴趣的,所以可以做为约束项加入到评分中,一般的推荐系统中,SVD++模型就能够满足需求

    image.png

    image.png

  8. 基于内容的推荐

    image.png

    image.pngimage.png

    image.png

    image.png

    注:sklearn中有TF-IDF模块用于特征提取

    image.png(用户画像)

    image.png

    image.png

    image.png

  9. 基于知识的推荐

    image.png

    image.png

    image.png

    image.png

    image.png

  10. 推荐系统评价

    QQ图片20180707112105.png

    image.png

    image.png

    image.png

    image.png

    image.png

    QQ图片20180707112325.png

    https://www.kaggle.com/c/event-recommendation-engine-challenge/data

    QQ图片20180707112514.png

    image.png

    image.png

    image.png

    image.png

    QQ图片20180707112744.png