大数据算法->推荐系统常用算法之基于内容的推荐系统算法
港真,自己一直非常希望做算法工程师,所以自己现在开始对现在常用的大数据算法进行不断地学习,今天了解到的算法,就是我们生活中无处不在的推荐系统算法。
其实,向别人推荐商品是一个很常见的现象,比如我用了一个好的商品,向朋友安利之类的。在以前广告系统不发达的时候,我们也是靠口口相传来进行商品的推广。那么为什么,现在推荐系统变的非常重要了呢?,在以前,我们的商品不像现在的物品一样琳琅满目,我们有时间,可以把商品都浏览一遍在进行选择,因为我们都想选择所有商品中最好的,而现在,由于资源的众多,我们不会用大把时间把所有的商品都看一遍,这就需要系统向我们推荐一些我们正在寻找的东西,比如网易云音乐的每日歌曲推荐,淘宝的商品推荐。其实这里的商品还包含信息,像今日头条向我们推荐优质的新闻,以及外国的News Digest,techmeme都致力于将新闻进行过滤,所以推荐系统无处不在。
好了,以上是引言,现在开始学习推荐系统:
目前的推荐系统分为基于内容的推荐系统和协同过滤模型,以及两种结合的方式,因为每种方法都有它的优势和劣势,所以在了解完每种算法后,我们进行归纳。
以下所说的商品包含信息,卖的商品等需要推荐的内容。
首先我们明确一下我们的所要分析的内容,一个是用户集,也就是我们要把商品推荐给的人,还有一个项目集,是我们要推荐的商品,还有一个效用矩阵,表明的是,部分用户对部分项目的评价,这个评价可以从用户在使用过商品直接评分(如买完商品的星级评分,看完电影的星级评分)来获得,或者用户使用一个商品的频率(如听音乐频繁播放一首歌)等等来学习获得,总之,这个效用矩阵就是来描述用户对商品的感受的。对于效用矩阵,我们提出一个效用函数的概念。即算出某用户对某商品的满意程度,据此我们可以构建效用矩阵。(可以理解为类似于用户没有给出具体评分,而我们可以根据他的使用习惯,来进行计算出的对商品的评分)。
所以我们现在要做的事情就是向用户推荐他没有用过,但是可能想用的东西。
首先我们来看看基于内容的推荐系统算法是怎么做的:
它基于这样的思想,举个例子,假设用户以前看80-90年代的,香港的,动作片,它就会根据用户的这个喜好,在项目集中找出符合这些特征的影片,推荐给用户,所以,大家有没有发现,这样的推荐系统需要对项目进行特征化操作,给每个项目找出其特点,也就是给每个项目打上标签,然后根据用户的喜好,来进行推荐,这就是基于内容推荐的大致思想。而这一方法的难点在于对项目进行特征化描述,举个例子,针对文本进行描述的话,我们还可以采用关键词,但是对于图片来说,计算机就显得相形见绌了,对于计算机来说,它只认识二进制,而我们对于图片内容的分析也比较困难。
在这里:我们举个例子来对文本进行特征化描述,假设我们有N个文档,来寻找每个文档的关键词。在这里我们采用关键词衡量指标:TF-IDF
TF就是每个词的词频,统计一篇文章的每个词的词频,找出频率较高的,再除以这篇文档除该词之外的最高频率的词,来作为该关键词在该文档的频率。之所以要除,是因为,我们的文档长度是不同的,我们希望消除不同长度文档所带来的频率差异,进而采用这种做法。
接下来说IDF:首先我们看IDF是如何计算的:IDF(关键词:i) = log(N/n(i));
别忘了N是所有文档的个数,我们看,当n(i)增大时IDF的值是减小的,这里的n(i)值得是关键词i所出现的文档数,在几个文档出现,就是几,那么这个IDF是干什么的呢,大家想想,比如 a the 这样的词,在每篇文档中出现的频率都很高,但这不是我们要找的关键词,但会对我们的统计产生影响,因此我们需要将这些词筛掉,这就是IDF存在的原因,如果有一个词他在每个文档都出现了,那它作为某个文档的关键词可能性就会下降。
通过那么关键词I的频率就可以表示为TF*IDF;这样我们就可以真对某文档建立一个向量。
当文档很长的时候,这个向量就会很庞大,这也是这个算法的局限性。其也有优点:那就是不依赖其他用户的评价,只依赖项目的特征,比如新到一批电影,该推荐方式就可以进行推荐,而不需要考虑其他用户对这些电影的评价,而采用协同过滤的话,由于这些影片是新来的,没有用户打分,所以较难进行推荐,还有就是基于内容推荐的项目特征较为集中。推荐的内容都较为相似,用户接受度高,但也影响了用户选择的多样性。
那么下篇文章我们来看一下协同过滤模型是如何处理的。
大数据算法->推荐系统常用算法之基于内容的推荐系统算法的更多相关文章
- 【T-BABY 夜谈大数据】基于内容的推荐算法
这个系列主要也是自己最近在研究大数据方向,所以边研究.开发也边整理相关的资料.网上的资料经常是碎片式的,如果要完整的看完可能需要同时看好几篇文章,所以我希望有兴趣的人能够更轻松和快速地学习相关的知识. ...
- 新闻推荐系统:基于内容的推荐算法(Recommender System:Content-based Recommendation)
https://blog.csdn.net/qq_32690999/article/details/77434381 因为开发了一个新闻推荐系统的模块,在推荐算法这一块涉及到了基于内容的推荐算法(Co ...
- 大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作
第十九章 Scala语言的数据结构和算法19.1 数据结构(算法)的介绍19.2 看几个实际编程中遇到的问题19.2.1 一个五子棋程序19.2.2 约瑟夫问题(丢手帕问题)19.2.3 其它常见算法 ...
- Hadoop大数据生态系统及常用组件(山东数漫江湖)
经过多年信息化建设,我们已经进入一个神奇的“大数据”时代,无论是在通讯社交过程中使用的微信.QQ.电话.短信,还是吃喝玩乐时的用到的团购.电商.移动支付,都不断产生海量信息数据,数据和我们的工作生活密 ...
- 胖子哥的大数据之路(10)- 基于Hive构建数据仓库实例
一.引言 基于Hive+Hadoop模式构建数据仓库,是大数据时代的一个不错的选择,本文以郑商所每日交易行情数据为案例,探讨数据Hive数据导入的操作实例. 二.源数据-每日行情数据 三.建表脚本 C ...
- 大数据:Hive常用参数调优
1.limit限制调整 一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果. 有一个配置属性可以开启,避免这种情况---对数据源进行抽样 hive.limit.optimize.e ...
- 推荐系统第5周--- 基于内容的推荐,隐语义模型LFM
基于内容的推荐
- 做了一道跑大数据的最短路挂了,基于vector的二维模拟邻接表实现Dijkstra算法(*【模板】)
代码: #include <stdio.h> #include <string.h> #include <string> #include <vector&g ...
- 大数据之路week07--day05 (一个基于Hadoop的数据仓库建模工具之一 HIve)
什么是Hive? 我来一个短而精悍的总结(面试常问) 1:hive是基于hadoop的数据仓库建模工具之一(后面还有TEZ,Spark). 2:hive可以使用类sql方言,对存储在hdfs上的数据进 ...
随机推荐
- IOS机型margin属性无效问题
这个问题很多小伙伴都有遇到,这次本猿也遇到了,记录一笔. 结论:简单的解决办法margin换padding!如有误,请大神不吝赐教.在Chrome浏览器移动端测试iphone5,打开的也是没问题的(这 ...
- react实现双向绑定
双向绑定功能是在项目中比较常见的一个需求,传统的js实现方式是添加监听函数的方式,Vue框架实现很简单,因为它本身就是基于双向绑定实现的,接下来我将讲解一下如何使用react实现双向绑定的功能是 首先 ...
- 我的学习之路_第二十一章_JDBC连接池
JDBC连接池和DButils [DBCP连接池工具类] 使用读取配置文件的方式 DBCP中有一个工厂类 BasicDataSourceFactory 工厂类中有一个静态方法 返回值为: DataSo ...
- c#中的委托和c++中的bind/function对比
在c++中,如果要实现这样一个功能,比如定时器,在指定的时间执行指定的函数,接口可以采用如下的设计 uint64_t addtimer(uint64_t t, std::function<voi ...
- C++ inline函数与编译器设置
1. 经过测试#define与inline的速度几乎没有区别. 2. inline函数更为安全,有效避免了#define二义性问题.inline是真正的函数,而#define只是在字符串意义上的宏替换 ...
- Mathematica学习笔记1
非常喜欢Mathematica的"自动草稿纸"的理念,Magic Paper, 唔哈~ Mathematica的矩阵操作和Matlab的风格十分不同. [ ] 是一个Part运算符 ...
- x01.ExcelHelper: NPOI 操作
Excel 操作,具有十分明显的针对性,故很难通用,但这并不妨碍参考后以解决自己的实际问题. 有一汇总表如下: 当然,只是示范,产品的代码应该唯一!现在要根据此汇总表产生各个客户的产品清单.由于客户较 ...
- 最长非降子序列的O(n^2)解法
这次我们来讲解一个叫做"最长非下降子序列"的问题及他的O(n^2)解法. 首先我们来描述一下什么是"最长非下降子序列". 给你一个长度为n的数组a,在数组a中顺 ...
- [图形学] Chp17 OpenGL光照和表面绘制函数
这章学了基本光照模型,物体的显示受到以下效果影响:全局环境光,点光源(环境光漫反射分量,点光源漫反射分量,点光源镜面反射分量),材质系数(漫反射系数,镜面反射系数),自身发光,雾气效果等.其中点光源有 ...
- OpenCV 之 图像分割 (一)
1 基于阈值 1.1 基本原理 灰度阈值化,是最简单也是速度最快的一种图像分割方法,广泛应用在硬件图像处理领域 (例如,基于 FPGA 的实时图像处理). 假设输入图像为 f,输出图像为 g,则经 ...