大数据算法->推荐系统常用算法之基于内容的推荐系统算法
港真,自己一直非常希望做算法工程师,所以自己现在开始对现在常用的大数据算法进行不断地学习,今天了解到的算法,就是我们生活中无处不在的推荐系统算法。
其实,向别人推荐商品是一个很常见的现象,比如我用了一个好的商品,向朋友安利之类的。在以前广告系统不发达的时候,我们也是靠口口相传来进行商品的推广。那么为什么,现在推荐系统变的非常重要了呢?,在以前,我们的商品不像现在的物品一样琳琅满目,我们有时间,可以把商品都浏览一遍在进行选择,因为我们都想选择所有商品中最好的,而现在,由于资源的众多,我们不会用大把时间把所有的商品都看一遍,这就需要系统向我们推荐一些我们正在寻找的东西,比如网易云音乐的每日歌曲推荐,淘宝的商品推荐。其实这里的商品还包含信息,像今日头条向我们推荐优质的新闻,以及外国的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上的数据进 ...
随机推荐
- [转] DDD领域驱动设计(三) 之 理论知识收集汇总
最近一直在学习领域驱动设计(DDD)的理论知识,从网上搜集了一些个人认为比较有价值的东西,贴出来和大家分享一下: 我一直觉得不要盲目相信权威,比如不能一谈起领域驱动设计,就一定认为国外的那个Eric ...
- Java字符串进阶
Java字符串进阶 前言 最常用的对字符串操作的类有三个,分别是String,StringBuilder,StringBuffer,下面将会详细的说说这三个类...... String String类 ...
- 使用flask开发网站后端
Flask 是一个用于 Python 的微型网络开发框架,可以用于快速的搭建一个小型的网站. 我的搜索引擎:http://www.abelkhan.com 就是基于flask开发 一个flask的He ...
- 既然函数也是对象,那么为什么this不指向普通函数?
function a(){ var b=1; function exp(){ alert(this.b); } exp(); } var b=2; a(); 既然函数是对象,且exp是在a中运行的,那 ...
- [leetcode-494-Target Sum]
You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symb ...
- 如何使用mybatis对mysql数据库进行操作,batis的增删改查
1.先下载Mybatis和mysql connecrt的jar包 下载地址: 链接: https://pan.baidu.com/s/1kVFfF8N 密码: ypkb 导入jar包,maven的话可 ...
- Spring MVC 项目搭建 -2- 添加service ,dao,junit
Spring MVC 项目搭建 -2- 添加service ,dao,junit 1.dao public class Hero { private String name; public Strin ...
- Bootstrap警告框
前面的话 在网站中,网页总是需要和用户一起做沟通与交流.特别是当用户操作上下文为用户提供一些有效的警示框,比如说告诉用户操作成功.操作错误.提示或者警告等.在Bootstrap框架有一个独立的组件,实 ...
- phpstorm,webstorm取消自动保存并标识修改的文件为星星标记
a.取消自动保存是去掉一下两个勾选. b.标记星星要勾选下面的选项.
- web前段2017.6.8
<body></body>background='图片路径'---表示背景图片图片:.jpg .png(透明图片) .gif(动态图)... 路径---绝对路径:相对于磁盘的路 ...