这个系列主要也是自己最近在研究大数据方向,所以边研究、开发也边整理相关的资料。网上的资料经常是碎片式的,如果要完整的看完可能需要同时看好几篇文章,所以我希望有兴趣的人能够更轻松和快速地学习相关的知识。我会尽可能用简单的方式去简介一些概念和算法,尽可能让没有工科基础的人也能大致了解。

简单讲解

基于内容的推荐算法是非常常见的推荐引擎算法。

这种算法常用于根据用户的行为历史信息,如评价、分享、点赞等行为并将这些行为整合计算出用户的偏好,再对计算推荐项目与用户偏好的相似度,将最相似的推荐给用户。例如在书籍推荐中,可以根据用户已经看过或者评分的书籍的一些共性(比如作者、分类、标签)再推荐给用户相似度高的书籍。

基于内容推荐可以通过两种方式,一个是像上面所说通过用户的行为进行个性化推荐,但是上面的推荐方式很依赖用户的数据、不利于没有用户数据情况下的冷启动。一般适合商品不多、用户有特殊兴趣的情况。

第二种就是根据事物的相关性,这种方式是通过比较事物之间共有属性的相似度来进行推荐,例如如果A用户喜欢Dota2,Dota2是属于竞技类网游,那么A用户就有可能喜欢英雄联盟。

这种方式的好处就是可以不依赖用户的行为,但是要求事物的内容是准确和完善的并且是没有歧义的,不过也可以通过手动输入标签的方式来解决这个问题。

相关算法

1.基于关键词的空间向量模型

关键词一般通过TF-IDF来进行提取,TF-IDF是一种常用的加权计算方法,它是基于统计学的方法,一般用来评估一个词在一段话或一篇文章中的重要性。

TF-IDF对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取TF词频作为测度,就可以体现同类文本的特点。

另外考虑到单词区别不同类别的能力,TF-IDF法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度IDF的概念,以TF和IDF的乘积作为特征空间坐标系的取值测度,并用它完成对权值TF的调整,调整权值的目的在于突出重要单词,抑制次要单词。

有很多不同的数学公式可以用来计算TF-IDF。

如果某个词或短语在一篇文章中出现的频率TF(词频)高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。

词频 (TF) 是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是 0.03 (3/100)。一个计算文件频率 (DF) 的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是 10,000,000份的话,其文件频率就是 0.0001 (1000/10,000,000)。最后,TF-IDF分数就可以由计算词频除以文件频率而得到。以上面的例子来说,“母牛”一词在该文件集的TF- IDF分数会是 300 (0.03/0.0001)。这条公式的另一个形式是将文件频率取对数。

向量空间模型是通过进行特征选择计算,通过加权公式将文本转化为数值的一种形式。这样就可以将向量空间模型通过计算得到相似度。

我们可以将用户的喜好以文档描述并转换成向量模型,对商品也是这么处理,然后再通过计算商品文档和用户偏好文档的余弦相似度。

有关余弦相似度和TF-IDF详细可以等下一篇文章。

2.Rocchoi算法

Rocchio算法,是一种高效的分类算法,广泛地被应用到文本分类,查询扩展等领域。它通过构造原型向量的方法得到最优解。

Rocchio算法应该算是人们思考文本分类问题时最先能想到,也最符合直觉的解决方法。基本的思路是把一个类别里的样本文档各项取个平均值(例如把所有 “体育”类文档中词汇“篮球”出现的次数取个平均值,再把“裁判”取个平均值,依次做下去),可以得到一个新的向量,形象的称之为“质心”,质心就成了这 个类别最具代表性的向量表示。再有新文档需要判断的时候,比较新文档和质心有多么相像(八股点说,判断他们之间的距离)就可以确定新文档属不属于这个类。

通过上述的这两种算法就可以判断内容之间是否相似从而进行推荐。

【T-BABY 夜谈大数据】基于内容的推荐算法的更多相关文章

  1. 新闻推荐系统:基于内容的推荐算法(Recommender System:Content-based Recommendation)

    https://blog.csdn.net/qq_32690999/article/details/77434381 因为开发了一个新闻推荐系统的模块,在推荐算法这一块涉及到了基于内容的推荐算法(Co ...

  2. 大数据算法->推荐系统常用算法之基于内容的推荐系统算法

    港真,自己一直非常希望做算法工程师,所以自己现在开始对现在常用的大数据算法进行不断地学习,今天了解到的算法,就是我们生活中无处不在的推荐系统算法. 其实,向别人推荐商品是一个很常见的现象,比如我用了一 ...

  3. Recommender Systems基于内容的推荐

    基于内容的推荐的基本推荐思路是:用户喜欢幻想小说,这本书是幻想小说,则用户有可能喜欢这本小说 两方面要求:(1)知道用户的喜好:(2)知道物品的属性 基于内容的推荐相比协同过滤方法(个人观点):协同过 ...

  4. 大数据学习之BigData常用算法和数据结构

    大数据学习之BigData常用算法和数据结构 1.Bloom Filter     由一个很长的二进制向量和一系列hash函数组成     优点:可以减少IO操作,省空间     缺点:不支持删除,有 ...

  5. elasticsearch使用More like this实现基于内容的推荐

    基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档.Lucene的api中有实现查询文章相似度的接口,叫MoreLikeThis.Elasticsearch封装了该接口,通过Ela ...

  6. 推荐系统第5周--- 基于内容的推荐,隐语义模型LFM

    基于内容的推荐

  7. ElasticSearch java API-使用More like this实现基于内容的推荐

    ElasticSearch java API-使用More like this实现基于内容的推荐 基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档.Lucene的api中有实现查 ...

  8. GIS+=地理信息+行业+大数据——基于云环境流处理平台下的实时交通创新型app

    应用程序已经是近代的一个最重要的IT创新.应用程序是连接用户和数据之间的桥梁,提供即时訪问信息是最方便且呈现的方式也是easy理解的和令人惬意的. 然而,app开发人员.尤其是后端平台能力,一直在努力 ...

  9. 贾扬清谈大数据&AI发展的新挑战和新机遇

    摘要:2019云栖大会大数据&AI专场,阿里巴巴高级研究员贾扬清为我们带来<大数据AI发展的新机遇和新挑战>的分享.本文主要从人工智能的概念开始讲起,谈及了深度学习的发展和模型训练 ...

随机推荐

  1. HTML5/CSS3动画下拉菜单

    在线演示 本地下载

  2. Python —— 批量替换指定目录下的所有文件中指定字符串

    参考:http://blog.csdn.net/zcwfengbingdongguke/article/details/13951527 代码: #!/usr/bin/python import os ...

  3. ubuntu 网络配置及ssh文件传输

    一.ubuntu网路配置 参考http://www.cnblogs.com/rusty/archive/2011/04/06/2007139.html /etc/network/interfaces ...

  4. SQL 数据类型 numeric varchar char

    Numeric(10,2) 指字段是数字型,长度为10 小数为两位的 简要描述一下SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型 字符型 VARCHAR VS CHAR VARCHAR ...

  5. redis实现分布式锁——核心 setx+pipe watch监控key变化-事务

    如何设计一把分布式锁 我们用 redis 来实现这把分布式的锁,redis 速度快.支持事务.可持久化的特点非常适合创建分布式锁. 分布式环境中如何消除网络延迟对锁获取的影响 锁,简单来说就是存于 r ...

  6. vs中解决方案、项目、类及ATL的理解

    解决方案,是对所有要完成工作的统称,一般叫Solution. 项目,也叫工程,是将解决方案分成若干个模块进行处理,一般叫做Project.添加项目就是添加工程.解决方案是所有项目的总和. 一个项目里面 ...

  7. WebP探索

    不同场景下WebP的使用方案总结:   App:Android4.0以上提供原生支持,其他版本使用官方提供的解析库(Android.iOS):   浏览器:JS能力检测,对支持 WebP 的用户输出 ...

  8. ActivityMq的使用(小例子)

    一.ActivityMq的介绍: 1.什么是消息中间件?与传统的传输通讯有什么区别? 异步,无需等待,消息存放在队列里面. 2.为什么要使用消息中间件? 消息中间件可以解决高并发. 两种通讯方式:01 ...

  9. TCP/IP--VLSM

    ##########################VLSM################### 实际案例: 192.168.1.0/28 有几个网络号:2的4次方:16个网络号 : 有几个主机号: ...

  10. WPF DelegateCommand CanExecute

     private DelegateCommand searchCommand;         public DelegateCommand SearchCommand         {       ...