zoukankan      html  css  js  c++  java
  • 【推荐系统】:协同过滤简介

    一.简介

    推荐算法的整体流程是:召回——排序——策略调整

    基于协同过滤的推荐算法有以下基本假设:

    1.基于用户的协同过滤(User-based CF):和你喜欢相同物品的人,他们喜欢的东西你也喜欢

    2.基于物品的协同过滤(item-based CF):和你喜欢的物品比较相似的物品,你也可能喜欢

    二.协同过滤的具体过程

    1.基于用户的协同过滤

     从上面可以看到用户如果买了一个东西则打钩,没有买则不打钩。假设我们有两个人,小明和小红。那么我们怎么计算这两个人喜欢物品的相似度呢?我们假设:

    小明喜欢的东西有:篮球,足球,乒乓球

    小红喜欢的东西有:篮球,足球,乒乓球,羽毛球

    那么他们喜欢的相同物品数量是3,因此计算公式为:

    3/3 * 3/4==9/12=3/4。这就是小明和小红两者之间喜欢物品的相似度。

    然后计算小明和不同用户之间的喜好相似度,使用机器学习当中KNN的思想取最大的相似程度的人做推荐。找到人之后查看他们喜欢的共同物品,过滤掉,然后取另外用户喜好的物品给这个用户(小明)进行推荐。这就是基于用户的协同过滤的基本思想。

    2.基于物品的协同过滤(item based CF)

    我们用物品来计算相似度,如下图所示:

     

     看看图自然就明白了,思想和基于用户的协同过滤是相同的。

    3.咱们做推荐系统的大致思路如下:
    1.首先通过特征工程将用户-物品评分矩阵创建出来

    2.1通过基于用户的协同过滤

    2.2或者用过给予物体的协同过滤

    给用户推荐商品

    三.相似度的计算

    相似度不仅仅是我们刚刚做的这么简单,不是只需要比较物品即可,因为我们用户会对一个物品做出多种反应,评分,收藏,浏览次数等等。一般情况下还会使用实数值进行相似度的计算,相似度计算的数据有:

    1.实数值(物品的评分情况)

    2.布尔值(用户的行为,是否购买,是否收藏)

    我们可以通过余玹相似度来计算两个物品之间的相似度,如下所示:

     在计算余玹相似度的时候我们只需要考虑两个物品之间的夹角的值,也就是cos()的值,而不需要关心向量的长短。上图是一个仅仅具有两个特征的物品,因此维度是2.

    2.我们可以通过皮尔逊相关系数来计算两个物品之间的相似度,也就是直接使用相关系数r进行运算,计算的公式如下图所示:

     在这个公式当中同时考虑到了长度和角度的影响,当然也就在某些场景下使用的话会更加准确了。

  • 相关阅读:
    JavaScript验证长度
    createTextRange用法
    keyPress keyUp keyDown 联系与区别
    获取text、select、radio、checkbox的值
    深入浅出JavaScript (五) 详解Document.write()方法
    深入浅出JQuery (三) 图片预览效果
    BS部分整体学习
    深入浅出JQuery (二) 选择器
    深入浅出jQuery (五) 如何自定义UIDialog?
    深入浅出 JQuery (一) 浅析JQuery
  • 原文地址:https://www.cnblogs.com/geeksongs/p/13562206.html
Copyright © 2011-2022 走看看