推荐算法(1):协同过滤总结
推荐算法(2):基于内容的推荐
推荐算法(3):利用用户标签数据
推荐算法(4)利用上下文信息
推荐算法(5)利用社交网络数据
推荐算法(6) 实例
推荐算法(7)缺失的评分预测问题
推荐算法(8)评测指标
冷处理

思路:
根据用户过去喜欢的产品(本文统称为 item),为用户推荐和他过去喜欢的产品相似的产品

流程:

  1. 内容表征 Item Representation:为每个item抽取出一些特征(也就是item的content了)来表示此item;

  2. 特征学习 Profile Learning:利用一个用户过去喜欢(及不喜欢)的item的特征数据,来学习出此用户的喜好特征(profile);

  3. 生成推荐列表 Recommendation Generation:通过比较上一步得到的用户profile与候选item的特征,为此用户推荐一组相关性最大的item。

例子:
举个例子说明前面的三个步骤。对于个性化阅读来说,一个item就是一篇文章。根据上面的第一步,我们首先要从文章内容中抽取出代表它们的属性。常用的方法就是利用出现在一篇文章中词来代表这篇文章,而每个词对应的权重往往使用信息检索中的tf-idf来计算。比如对于本文来说,词“CB”、“推荐”和“喜好”的权重会比较大,而“烤肉”这个词的权重会比较低。利用这种方法,一篇抽象的文章就可以使用具体的一个向量来表示了。第二步就是根据用户过去喜欢什么文章来产生刻画此用户喜好的 profile了,最简单的方法可以把用户所有喜欢的文章对应的向量的平均值作为此用户的profile。比如某个用户经常关注与推荐系统有关的文章,那么他的profile中“CB”、“CF”和“推荐”对应的权重值就会较高。在获得了一个用户的profile后,CB就可以利用所有item与此用户profile的相关度对他进行推荐文章了。一个常用的相关度计算方法是cosine。最终把候选item里与此用户最相关(cosine值最大)的N个item作为推荐返回给此用户。

一. Item Representation
就是要把N篇文章中总共n个词构成一个向量的维度,wij代表第i个词在第j篇文章中的TF-IDF值,从而构成每篇文章的词向量表达。

TF-IDF
文本 ->分词->实体检测 ->关键词排名 ->关键词向量


其中是第k个词在文章j中出现的次数,而nk是所有文章中包括第k个词的文章数量。
最终第k个词在文章j中的权重由下面的公式获得:(归一化处理)

二. Profile Learning
假设用户u已经对一些item给出了他的喜好判断,喜欢其中的一部分item,不喜欢其中的另一部分。那么,这一步要做的就是通过用户u过去的这些喜好判断,为他产生一个模型。有了这个模型,我们就可以根据此模型来判断用户u是否会喜欢一个新的item。所以,我们要解决的是一个典型的有监督分类问题,理论上机器学习里的分类算法都可以照搬进这里。
这是一个典型的监督学习问题,喜欢的lable=1,不喜欢的label=0。得到一个模型,再给一个item,判断是否喜欢它还是不喜欢它。

(1)kNN
对于一个新的item,最近邻方法首先找用户u已经评判过并与此新item最相似的k个item,然后依据用户u对这k个item的喜好程度来判断其对此新item的喜好程度。这种做法和CF中的item-based kNN很相似,差别在于这里的item相似度是根据item的属性向量计算得到,而CF中是根据所有用户对item的评分计算得到。
(2)Rocchio算法
Rocchio算法是信息检索中处理相关反馈(Relevance Feedback)的一个著名算法。比如你在搜索引擎里搜“苹果”,当你最开始搜这个词时,搜索引擎不知道你到底是要能吃的水果,还是要不能吃的苹果,所以它往往会尽量呈现给你各种结果。当你看到这些结果后,你会点一些你觉得相关的结果(这就是所谓的相关反馈了)。然后如果你翻页查看第二页的结果时,搜索引擎可以通过你刚才给的相关反馈,修改你的查询向量取值,重新计算网页得分,把跟你刚才点击的结果相似的结果排前面。比如你最开始搜索“苹果”时,对应的查询向量是{“苹果” : 1}。而当你点击了一些与Mac、iPhone相关的结果后,搜索引擎会把你的查询向量修改为{“苹果” : 1, “Mac” : 0.8, “iPhone” : 0.7},通过这个新的查询向量,搜索引擎就能比较明确地知道你要找的是不能吃的苹果了。Rocchio算法的作用就是用来修改你的查询向量的:{“苹果” : 1} --> {“苹果” : 1, “Mac” : 0.8, “iPhone” : 0.7}。

(3)决策树算法(Decision Tree,简称DT)
(4)线性分类算法(Linear Classifer,简称LC)
(5)朴素贝叶斯算法(Naive Bayes,简称NB)

三. Recommendation Generation
如果上一步Profile Learning中使用的是分类模型(如DT、LC和NB),那么我们只要把模型预测的用户最可能感兴趣的n个item作为推荐返回给用户即可。而如果Profile Learning中使用的直接学习用户属性的方法(如Rocchio算法),那么我们只要把与用户属性最相关的n个item作为推荐返回给用户即可。其中的用户属性与item属性的相关性可以使用如cosine等相似度度量获得。

四.兴趣迁移——衰减机制

我们大家会不会想到,我们的兴趣点可能是会随时间改变的呢?比如这段时间苹果出了一款新产品,我关注一下,但一个月后,我可能就完全不在意这件事了,但是可能苹果相关的关键词还一直在我的关键词表里,那会不会导致我依然收到相似的我已经不关心的新闻的推荐呢?也就是如何处理这种兴趣迁移问题呢?
为了解决这个问题,我们可以引入一个衰减机制,即让用户的关键词表中的每个关键词喜好程度都按一定周期保持衰减。考虑到不同词的TFIDF值可能差异已经在不同的数量级,我们考虑用指数衰减的形式来相对进行公平的衰减。即引入一个系数,,我们每隔一段时间,对所有用户的所有关键词喜好程度进行*的衰减,那么就完成了模拟用户兴趣迁移的过程。
当然,一直衰减下去,也会使得一些本来就已经完全不感兴趣的关键词可能衰减到了0.0000001了,还在衰减,还死皮赖脸地待在词表里占位置,那么自然而然,我们可以设置一个阈值L,规定对每个用户的每次衰减更新完成后,将词表里喜好值小于L的关键词直接清除

CB优缺点
CB的优点:

  1. 用户之间的独立性(User Independence):既然每个用户的profile都是依据他本身对item的喜好获得的,自然就与他人的行为无关。而CF刚好相反,CF需要利用很多其他人的数据。CB的这种用户独立性带来的一个显著好处是别人不管对item如何作弊(比如利用多个账号把某个产品的排名刷上去)都不会影响到自己。

  2. 好的可解释性(Transparency):如果需要向用户解释为什么推荐了这些产品给他,你只要告诉他这些产品有某某属性,这些属性跟你的品味很匹配等等。

  3. 新的item可以立刻得到推荐(New Item Problem):只要一个新item加进item库,它就马上可以被推荐,被推荐的机会和老的item是一致的。而CF对于新item就很无奈,只有当此新item被某些用户喜欢过(或打过分),它才可能被推荐给其他用户。所以,如果一个纯CF的推荐系统,新加进来的item就永远不会被推荐:( 。

CB的缺点:

  1. item的特征抽取一般很难(Limited Content Analysis):如果系统中的item是文档(如个性化阅读中),那么我们现在可以比较容易地使用信息检索里的方法来“比较精确地”抽取出item的特征。但很多情况下我们很难从item中抽取出准确刻画item的特征,比如电影推荐中item是电影,社会化网络推荐中item是人,这些item属性都不好抽。其实,几乎在所有实际情况中我们抽取的item特征都仅能代表item的一些方面,不可能代表item的所有方面。这样带来的一个问题就是可能从两个item抽取出来的特征完全相同,这种情况下CB就完全无法区分这两个item了。比如如果只能从电影里抽取出演员、导演,那么两部有相同演员和导演的电影对于CB来说就完全不可区分了。

  2. 无法挖掘出用户的潜在兴趣(Over-specialization):既然CB的推荐只依赖于用户过去对某些item的喜好,它产生的推荐也都会和用户过去喜欢的item相似。如果一个人以前只看与推荐有关的文章,那CB只会给他推荐更多与推荐相关的文章,它不会知道用户可能还喜欢数码。

  3. 无法为新用户产生推荐(New User Problem):新用户没有喜好历史,自然无法获得他的profile,所以也就无法为他产生推荐了。当然,这个问题CF也有。

https://blog.csdn.net/nicajonh/article/details/79657317
https://blog.csdn.net/np4rHI455vg29y2/article/details/79049576
recommender Systems

推荐算法(2):基于内容的推荐相关推荐

  1. 经典推荐算法(基于内容的推荐算法)

    基于内容的推荐算法(Content-Based Recommendations,CB)是一种经典推荐算法,一般只依赖于用户及物品自身的内容属性和行为属性,而不涉及其他用户 的行为,在 冷启动 的情况下 ...

  2. 协同过滤推荐算法和基于内容推荐算法的区别?

    文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼:我热爱编程.热爱算法.热爱开源.所有源码在我的个人github :这博客是记录我学习的点点滴滴,如果您对 Python.Java.AI ...

  3. 推荐算法概述(基于用户的协同过滤算法、基于物品的协同过滤算法、基于内容的推荐算法)

    "无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程." 目前推 ...

  4. 基于内容推荐算法html,基于内容的互联网推荐算法

    摘 要 本文介B了网络推荐的算法思想.帮助读者了解这个研究领域.在介绍了推荐系统的概念和定义之后,重点介绍了基于内容的互联网推荐算法. 关键词 推荐系统 推荐算法 互联网 中图分类号:TP391.3 ...

  5. 推荐常用算法之-基于内容的推荐(转自-BreezeDeus博主)

    Collaborative Filtering Recommendations (协同过滤,简称CF) 是目前最流行的推荐方法,在研究界和工业界得到大量使用.但是,工业界真正使用的系统一般都不会只有C ...

  6. 推荐常用算法之-基于内容的推荐

    Collaborative Filtering Recommendations (协同过滤,简称CF) 是目前最流行的推荐方法,在研究界和工业界得到大量使用.但是,工业界真正使用的系统一般都不会只有C ...

  7. 推荐算法:基于情景的推荐

    预过滤 后过滤 建模 => 将用户和物品放入,特定的情景中,考虑: 消费者的决策,和他当时的心情是相关的: 1. 建模 将情景作为附加数据集合 从二维推荐到三维 R:User∗Item∗Cont ...

  8. 一文全面了解基于内容的推荐算法

    作者丨gongyouliu 来源 | 转载自大数据与人工智能(ID:ai-big-data) 这篇文章我们主要关注的是基于内容的推荐算法,它也是非常通用的一类推荐算法,在工业界有大量的应用案例. 本文 ...

  9. 一文看懂基于内容的推荐算法

    作者 | gongyouliu 来源 | 数据与智能 从本篇开始我们来详细讲解各类推荐算法.这篇文章我们主要关注的是基于内容的推荐算法,它也是非常通用的一类推荐算法,在工业界有大量的应用案例. 本文会 ...

  10. 推荐算法(一)—— 基于内容的推荐算法

    推荐算法(一)--  基于内容的推荐算法 1 基于内容的推荐算法 基于内容的推荐系统本质是对内容进行分析,建立特征:基于用户对何种特征的内容感兴趣以及分析一个内容具备什么特征来进行推荐. 1.1 基于 ...

最新文章

  1. 组合模式(Composite Pattern)
  2. 为什么叫python编程-Python这么火,为什么说它不是未来的编程语言?
  3. sklearn中的回归决策树
  4. linux命令老是忘记,Linux可能会忘记的命令整理
  5. Android之解决VideoView控件的进度条位置摆放问题和打开播放黑屏问题
  6. java 获取文件大小_利用百度AI OCR图片识别,Java实现PDF中的图片转换成文字
  7. 勿以善小而不为--PPP认证之CHAP与PAP的实现与区别
  8. swift 高级进阶1:类与结构体(上)
  9. 前端培训丁鹿学堂:nodeJS入门指南(一)
  10. 嵌入式软件设计必看书籍
  11. react-native之react-native-vector-icons
  12. php把buffer转化为图片_长微博生成(将html转化为图片)原理浅析
  13. vue+openlayers实现地图打点
  14. Nginx配置WS、WSS域名
  15. Qualcomm msm8974 编译
  16. 2018通达信l2服务器源码,[通达信] 通达信L2正版DDX指标美化
  17. Mysql基础-------初识数据库,三大范式
  18. 2014.10.22项目2
  19. ppt怎么压缩文件大小?试试这几种方法
  20. 校园综合能效管理平台建设的意义-Susie 周

热门文章

  1. forms 身份验证(授权)详解
  2. windows10系统-10-VirtualBox中的四种网络连接方式
  3. 使命召唤16计算机内存不足,《COD16》占用内存过大?官方教你清理空间
  4. 【那些年我们一起看过的论文】之《Real-Time Loop Closure in 2D LIDAR SLAM》
  5. 计算机在生态文明建设的改造,关于中国生态文明建设的现状与未来思考
  6. Spring aop开发步骤
  7. USB协议和接口梳理,Type-C,USB3.0,USB3.1,线序
  8. JVM相关命令查看GC情况
  9. Linux_ubuntu系统安装Flash插件
  10. 科研成果 | 信道模型 | 原理及随机数仿真 | 均匀、正态、双高斯、瑞利、莱斯、对数正态、nakagami、Suzuki分布的随机数仿真(matlab)