常用推荐算法

  • 基于内容过滤
    • 从信息检索,和文本检索发展而来
    • 基于商品描述及用户喜好描述,为用户推荐商品
  • 协同过滤
    • 基于用户行为为用户推荐感兴趣的商品
    • 行为可以是过往的交易行为和商品评分,这种方式不需要显性的属性信息
  • 混合推荐
基于内容过滤存在的问题
  • 需了解商品内容
    • 需要人工或自动标注信息
    • 商品内容不能反映所有特点
  • 冷启动问题
    • 需要花时间学习哪些内容或feature 对用户而言是重要的
  • 如果用户兴趣点改变了呢
  • Lack of serendipity(缺少意外新发现 EE问题)
  • 基于内容的推荐(Content-based) V.S. 协同过滤(Collaborative Filtering)
推荐方法 优点 缺点
基于内容推荐 推荐结果直观,容易解释 不需要领域知识 新用户问题; 复杂属性不好处理; 要有足够数据构造分类器;
协同过滤推荐 新异兴趣发现、不需要领域知识; 随着时间推移性能提高; 推荐个性化、自动化程度高; 能处理复杂的非结构化对象; 稀疏问题; 可扩展性问题; 新用户问题; 依赖历史数据集; 系统开始时推荐质量差;
基于协同过滤的推荐算法
  • 协同过滤算法
    • 基于用户行为的推荐
    • 行为可以是过往的交易行为和商品评分,这种方式不需要显性的属性信息
  • 协同过滤分类
    • K近邻(neighborhood )方法
      • 借助商品的关系或者用户的关系
  • 基于模型的方法
    • 用隐含变量刻画商品
协同过滤算法之K邻近方法
  • K邻近方法 基于假设 : “跟你喜好相似的人喜欢的东西你也很有可能喜欢” 或“跟你喜欢的物品类似的物品你也很有可能喜欢 ”

  • 分类

    • User-based 方法
      • 基于user的协同过滤,通过不同用户对item的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐
    • Item-based方法
      • 基于item的协同过滤,通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐
  • 基于用户(User-based)

    • 查找用户相似度 如何预测用户1对于商品4的喜好程度?
      • 找到和用户1相似的用户且购买过商品4(基于购买记录)即为用户n
      • 根据用户n对商品4的评价,以相似度为权重回填结果
      • 针对所有用户组合,重复上述步骤,直到所有空格都被填满
  • 找到相似的Item (Item-based)

    • 用户1对于商品4的喜好程度?
    • 从用户1历史记录中,计算商品n和商品4的相似度(以其他用户的历史记录)
    • 将用户1对于商品n的评价,以商品相似度为权重回填
    • 针对所有商品组合,重复上述步骤直到所有空格都被填满
相似度计算(Similarity Calculation)
基于模型的方法
  • 思想

    • 通过机器学习算法,在数据中找出模式,并将用户与物品间的互动方式模式化
    • 基于模型的协同过滤方式是构建协同过滤更高级的算法
  • 近邻模型的问题

    • 物品之间存在相关性, 信息量并不随着向量维度增加而线性增加
    • 矩阵元素稀疏, 计算结果不稳定,增减一个向量维度, 导致近邻结果差异很大的情况存在
  • 算法分类

    • 基于图的模型
    • 基于矩阵分解的方法
  • 基于图的模型

    • 基于邻域的模型看做基于图的模型的简单形式
    • 原理
      • 将用户的行为数据表示为二分图
      • 基于二分图为用户进行推荐
      • 根据两个顶点之间的路径数、路径长度和经过的顶点数来评价两个顶点的相关性
  • 基于矩阵分解的模型

    • 原理

      • 根据用户与物品的潜在表现,我们就可以预测用户对未评分的物品的喜爱程度

      • 把原来的大矩阵, 近似分解成两个小矩阵的乘积, 在实际推荐计算时不再使用大矩阵, 而是使用分解得到的两个小矩阵

      • 用户-物品评分矩阵A是M X N维, 即一共有M个用户, n个物品 我们选一个很小的数 K (K<< M, K<<N)

      • 通过计算得到两个矩阵U V U是M K矩阵 , 矩阵V是 N K

        U*{m\*k} V^{T}*{n*k} 约等于 A_{m*n}

        类似这样的计算过程就是矩阵分解

    • 基于矩阵分解的方法

      • ALS交替最小二乘
        • ALS-WR(加权正则化交替最小二乘法): alternating-least-squares with weighted-λ –regularization
        • 将用户(user)对商品(item)的评分矩阵分解为两个矩阵:一个是用户对商品隐含特征的偏好矩阵,另一个是商品所包含的隐含特征的矩阵。在这个矩阵分解的过程中,评分缺失项得到了填充,也就是说我们可以基于这个填充的评分来给用户最商品推荐了。
      • SVD奇异值分解矩阵
  • ALS方法

    • ALS的矩阵分解算法常应用于推荐系统中,将用户(user)对商品(item)的评分矩阵,分解为用户对商品隐含特征的偏好矩阵,和商品在隐含特征上的映射矩阵。
    • 与传统的矩阵分解SVD方法来分解矩阵R(R∈ℝm×n)不同的是,ALS(alternating least squares)希望找到两个低维矩阵,以 R̃ =XY 来逼近矩阵R,其中 ,X∈ℝm×d,Y∈ℝd×n,这样,将问题的复杂度由O(mn)转换为O((m+n)d)。
    • 计算X和Y过程:首先用一个小于1的随机数初始化Y,并根据公式求X,此时就可以得到初始的XY矩阵了,根据平方差和得到的X,重新计算并覆盖Y,计算差平方和,反复进行以上两步的计算,直到差平方和小于一个预设的数,或者迭代次数满足要求则停止
    基于用户的协同过滤实现 (User CF)
  • 基于用户的协同过滤实现

    • 第一步: 找出和目标用户兴趣类似的用户集合
    • 第二步: 找到集合中用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
  • 基于用户协同过滤 第一步:

    • 设N(u)是用户u有过正反馈的物品集合,则Jaccard公式:
  • 如果用户数目很多,如何优化? 答:首先计算出N(u)^ N(v) != 0 的用户对(u,v),然后再对这种情况除以分母sqrt(N(u)*N(v))

  • 基于用户协同过滤 第二步

    • 得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。

    • S(u, K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,Wuv是用户u和用户v的兴趣相似度,rvi代表用户v对物品i的兴趣,因为使用的是单一行为的隐反馈数据,所以所有的rvi=1

    • 选取K=3,用户A对物品c、e没有过行为,因此可以把这两个物品推荐给用户A。根据UserCF算法,用户A对物品c、e的兴趣是:

      p(A,c) = W*{AB}+W*{AD} = 0.7416

      p(A,e) = W*{Ac}+W*{AD} = 0.7416

基于物品的协同过滤实现
  • 基于物品的协同过滤实现步骤

    • Step 1:计算物品之间的相似度
    • Step 2:根据物品的相似度和用户的历史行为,为用户生成推荐列表
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容