港真,自己一直非常希望做算法工程师,所以自己现在开始对现在常用的大数据算法进行不断地学习,今天了解到的算法,就是我们生活中无处不在的推荐系统算法。

  其实,向别人推荐商品是一个很常见的现象,比如我用了一个好的商品,向朋友安利之类的。在以前广告系统不发达的时候,我们也是靠口口相传来进行商品的推广。那么为什么,现在推荐系统变的非常重要了呢?,在以前,我们的商品不像现在的物品一样琳琅满目,我们有时间,可以把商品都浏览一遍在进行选择,因为我们都想选择所有商品中最好的,而现在,由于资源的众多,我们不会用大把时间把所有的商品都看一遍,这就需要系统向我们推荐一些我们正在寻找的东西,比如网易云音乐的每日歌曲推荐,淘宝的商品推荐。其实这里的商品还包含信息,像今日头条向我们推荐优质的新闻,以及外国的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;这样我们就可以真对某文档建立一个向量。

 当文档很长的时候,这个向量就会很庞大,这也是这个算法的局限性。其也有优点:那就是不依赖其他用户的评价,只依赖项目的特征,比如新到一批电影,该推荐方式就可以进行推荐,而不需要考虑其他用户对这些电影的评价,而采用协同过滤的话,由于这些影片是新来的,没有用户打分,所以较难进行推荐,还有就是基于内容推荐的项目特征较为集中。推荐的内容都较为相似,用户接受度高,但也影响了用户选择的多样性。

  那么下篇文章我们来看一下协同过滤模型是如何处理的。

大数据算法->推荐系统常用算法之基于内容的推荐系统算法的更多相关文章

  1. 【T-BABY 夜谈大数据】基于内容的推荐算法

    这个系列主要也是自己最近在研究大数据方向,所以边研究.开发也边整理相关的资料.网上的资料经常是碎片式的,如果要完整的看完可能需要同时看好几篇文章,所以我希望有兴趣的人能够更轻松和快速地学习相关的知识. ...

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

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

  3. 大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作

    第十九章 Scala语言的数据结构和算法19.1 数据结构(算法)的介绍19.2 看几个实际编程中遇到的问题19.2.1 一个五子棋程序19.2.2 约瑟夫问题(丢手帕问题)19.2.3 其它常见算法 ...

  4. Hadoop大数据生态系统及常用组件(山东数漫江湖)

    经过多年信息化建设,我们已经进入一个神奇的“大数据”时代,无论是在通讯社交过程中使用的微信.QQ.电话.短信,还是吃喝玩乐时的用到的团购.电商.移动支付,都不断产生海量信息数据,数据和我们的工作生活密 ...

  5. 胖子哥的大数据之路(10)- 基于Hive构建数据仓库实例

    一.引言 基于Hive+Hadoop模式构建数据仓库,是大数据时代的一个不错的选择,本文以郑商所每日交易行情数据为案例,探讨数据Hive数据导入的操作实例. 二.源数据-每日行情数据 三.建表脚本 C ...

  6. 大数据:Hive常用参数调优

    1.limit限制调整 一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果. 有一个配置属性可以开启,避免这种情况---对数据源进行抽样 hive.limit.optimize.e ...

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

    基于内容的推荐

  8. 做了一道跑大数据的最短路挂了,基于vector的二维模拟邻接表实现Dijkstra算法(*【模板】)

    代码: #include <stdio.h> #include <string.h> #include <string> #include <vector&g ...

  9. 大数据之路week07--day05 (一个基于Hadoop的数据仓库建模工具之一 HIve)

    什么是Hive? 我来一个短而精悍的总结(面试常问) 1:hive是基于hadoop的数据仓库建模工具之一(后面还有TEZ,Spark). 2:hive可以使用类sql方言,对存储在hdfs上的数据进 ...

随机推荐

  1. win10 搜索不能使用解决方法

    重装系统之后遇到一个问题,在搜索栏不能搜索到应用程序,Windows 10 Search can't find ANY applications. Even calculator - Super Us ...

  2. Spring事务隔离级别

    REQUIRED:业务方法需要在一个容器里运行.如果方法运行时,已经处在一个事务中,那么加入到这个事务,否则自己新建一个新的事务. NOT_SUPPORTED:声明方法不需要事务.如果方法没有关联到一 ...

  3. Java 9 揭秘(5. 实现服务)

    Tips做一个终身学习的人. Implementing Services 在这章中,主要介绍如下内容: 什么服务,服务接口,服务提供者: 在 JDK 9之前和在JDK 9中如何实现服务 如何使用Jav ...

  4. flask 扩展之 -- flask-script

    一. 使用 Flask-Script 支持命令行选项 1. 安装 $ pip install flask-script 2. 配置 from flask_script import Manager m ...

  5. R语言重要数据集分析研究——R语言数据集的字段含义

    R语言数据集的字段含义 作者:马文敏 选择一种数据结构来储存数据 将数据输入或导入到这个数据结构中 数据集的概念 数据集通常是有数据结构的一个矩形数组,行表示规则,列表示变量. 不同的行业对数据集的行 ...

  6. Azure MySQL PaaS (3) 创建MySQL异地只读数据库 (Master-Slave)

    <Windows Azure Platform 系列文章目录> Azure MySQL PaaS服务提供异地只读的功能,我们可以在主站点,比如Azure上海数据中心,创建MySQL主节点. ...

  7. Spring (3.2.4) 常用jar 包解析

    Spring (3.2.4) 常用jar 包解析 基本jar包 spring-aop-3.2.4.RELEASE.jar spring-aspects-3.2.4.RELEASE.jar spring ...

  8. Android --> 常见控件

    1.TextView  主要用于界面上显示一段文本信息 2.Button  用于和用户交互的一个按钮控件 //为Button点击事件注册一个监听器public class Click extends ...

  9. js实现两个输入框中的数字相乘并自动将结果显示在第三个输入框

    <script type="text/javascript"> function cal(ida,idb,idc) { var numa=Number(document ...

  10. usaco 2002 月赛 Chores 题解

    Description Farmer John's family pitches in with the chores during milking, doing all the chores as ...