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

思路:
根据用户过去喜欢的产品(本文统称为 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

(0)

相关推荐

  • 写给设计师的人工智能指南:推荐系统

    这个系列的文章已经写了5篇了. 指南:图像 指南:虚拟私人助理 指南:Tensorflow快速入门 指南:   JS框架Synaptic 指南:如何找出相似的文章 点击可以查看往期. 本期更新第6篇文 ...

  • FM: 推荐算法中的瑞士军刀

    前言 自从我上次在知乎回答了问题<机器学习中较为简单的算法有哪些?>,很多同学私信我询问我FM算法在推荐系统中的应用细节,索性今天就专门写一篇文章,仔细聊一聊FM这把"推荐算法中 ...

  • 【Recall】MIND:阿里多兴趣网络模型

    本篇论文 Multi-Interest Network with Dynamic Routing(MIND)是阿里巴巴搜索推荐事业部在召回领域方面的工作,发表于 ACM 28th.其提出的一种向量召回 ...

  • 设计一个属于自己的内容热度值算法

    前言 在产品.运营这次做社区改版的过程中,我们大数据部门结合具体的业务细节,通过研究.讨论与试错,最终设计了一个基本符合需求的内容热度值算法,本文就简述其设计方法. 他山之石 有为数很少的几家外国公司 ...

  • '全能选手'召回表征算法实践

    编辑整理:许建军 出品平台:DataFunTalk 导读:本文主要分享 '全能选手' 召回表征算法实践.首先简单介绍下业务背景: 网易严选人工智能部,主要有三个方向:NLP.搜索推荐.供应链,我们主要 ...

  • 贝壳用户偏好挖掘的思考与实践

    文章作者:刘雷@贝壳找房 内容来源:贝壳产品技术 1. 背景 1.1 什么是用户偏好挖掘 用户偏好,即对用户内在需求的具体刻画.通过用户的历史行为和数据,对用户进行多角度全方位的刻画与描述,利用统计分 ...

  • 推荐粗排(召回)工程实践之双塔DNN模型

    粗排作用 在 推荐精排模型之经典排序模型 一文中我们介绍了工业推荐系统中主要包括召回.粗排.精排.重排这四个环节.粗排主要是为了进一步减少召回的Item数目,减轻精排压力,同时不损失线上效果.如果不要 ...

  • 深度学习技术在美图个性化推荐的应用实践

    作者:陈文强.白杨.黄海勇 出品社区:DataFunTalk 导读:美图秀秀社交化的推进过程中,沉淀了海量的优质内容和丰富的用户行为.推荐算法连接内容消费者和生产者,在促进平台的繁荣方面有着非常大的价 ...

  • 基于内容的推荐:根据文章推荐书籍

    题外话,今天团队小伙伴在南京参赛,所有参赛队伍里只有我的名字是网名^_^ 是不是蛮有特色的- 回到本文的话题,我最近喜欢在微信读书里看公众号的文章,因为每篇文章微信读书都会在底部计算推荐的相关书籍,这 ...

  • 基于图模型的智能推荐算法学习笔记

    一.基于知识图谱的智能推荐 以知识图谱作为边信息生成推荐的价值在于:一方面可以提供更准确的推荐:另一方面可以对推荐结果进行解释. 知识图谱由实体和关系组成(以电影推荐为例):实体(用户.电影.演员.导 ...

  • 【推荐文章】基于沙氏成像原理的激光雷达技术研究进展

    ----2021年第50卷第3期 主要作者 梅亮1,孔政1,林宏泽2,费若男1,成远1,宫振峰1,陈珂1,刘琨1,华灯鑫1 3 完成单位 1 大连理工大学光电工程与仪器科学学院 2 杭州电子科技大学自 ...

  • 年轻人开始“反推荐算法”:算法不讲武德!

    深燃(shenrancaijing)原创 作者 | 王敏 编辑 | 向小园 "算法不讲武德!"越来越多年轻人发觉,生活正在被算法控制. 从事互联网运营的卢锋,想要搜索某个科技产品的 ...

  • 推荐算法(8)评测指标

    推荐算法(8)评测指标

  • 推荐算法(6) 实例

    一.推荐系统外围构架 从用户日志经过推荐系统得到推荐列表,返回给UI界面: 用户在UI界面,反馈,生成日志,最后储存起来. 界面设置: 1.展示物品 2.物品有推荐理由 3.提供按钮反馈 数据收集和储 ...

  • 推荐算法(5)利用社交网络数据

    影响用户相信某个推荐结果的因素,90%的用户相信朋友对他们的推荐.基于社交网络的推荐可以很好的模拟现实社会.所以利用社交网络数据进行推荐可以增加用户对系统的信任度.另外利用用户在社交网络的数据可以解决 ...

  • 推荐算法(4)利用上下文信息

    上下文信息包括: 时间的上下文.地点的上下文.心情的上下文- 一.时间的上下文 1.理论 1)时间上对用户的影响: 1.用户自己的兴趣变化(随年龄,时间的变化,兴趣也在变化) 2.物品有自己的生命周期 ...

  • 推荐算法(1):协同过滤总结

    一.协同过滤方法: (1)基于内容/基于领域的协同过滤 ICF 计算items之间的相似度,推荐与A的已知item最相关的item 步骤: 1.输入item-user矩阵 2.求item-item相似 ...