相关概念

  1. 信息过载(Information Overload):是指社会信息超过了个人或系统所能接受、处理或有效利用的范围,获取有价值信息的成本越来越高。解决过载的办法(1)信息分类,门户网站(2)信息搜索,搜索引擎(3)信息推荐,推荐系统
  2. 推荐系统(Recommendation System):推荐系统属于资讯过滤的一种应用。推荐系统能够将可能受喜好的资讯或实物(例如:电影、电视节目、音乐、书籍、新闻、图片、网页)推荐给使用者。
  3. 推荐系统分类:推荐系统根据研究数据的类型以及推荐方法的不同通常被分成四类:
    1. 协同过滤推荐系统:协同过滤推荐模型是基于统计的机器学习算法得到推荐结果,可以细分为基于用户的协同过滤推荐、基于项目的协同过滤推荐以及基于模型的协同过滤推荐
    2. 基于内容的推荐系统:基于内容的推荐模型是根据项目相关信息、用户的历史行为以及用户相关信息,获得用户的兴趣偏好,为用户推荐跟他的兴趣偏好相似的项目。这里的项目相关信息可以是项目的文字描述信息、标签、评论以及人工标注的信息等。用户相关信息是指人口统计学信息(如年龄、性别、职业、地域、收入等等),用户的历史行为可以是对项目的评论、收藏、点赞、观看、浏览、点击等。
    3. 混合推荐系统:混合推荐系统将多种推荐算法结合起来做推荐,用来避免单个推荐算法存在的问题,最终获得比单个算法更好的推荐效果。最常见的是将协同过滤推荐方法和其他方法相结合,克服冷启动以及数据稀疏性等问题
    4. 序列推荐系统:序列推荐系统是从时间角度上考虑用户的点击行为,用户的动作在一段时间上是有先后顺序的,序列推荐模型通过用户的动作序列学习到用户兴趣的变化,从而能够对与用户下一个行为进行一个预测。

数据生命周期

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

数据处理流程

实时处理流程:

用户操作——服务器日志——日志采集——消息队列——实时计算——计算结果存储——可视化展现

离线处理流程:

用户操作——服务器日志——日志采集——日志存储——日志清洗——进入数仓——离线数据计算——业务数据库——可视化展现

实现过程

模块说明

学习案例的架构图

离线统计服务:基于统计的推荐

离线推荐服务:基于特征的个性化推荐

日志采集服务:实时采集日志转成消息

消息缓冲服务:收取过滤出有效内容,并进行队列缓冲

实时推荐服务:使用模型推荐相关数据

相关技术栈

  1. scala:可伸缩的语言(Scalable Language)spark计算框架主流处理语言
  2. Spark: 是使用 scala 实现的基于内存计算的大数据开源集群计算环境,是一种快速、通用、可扩展的大数据分析引擎
  3. Spark RDD:(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。
  4. Spark SQL:Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用
  5. Spark Mllib:spark机器学习库,已经集成了大量机器学习的算法
  6. Spark streaming:是 Spark 核心 API 的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理
  7. Flume:是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力
  8. kafka:是一种分布式的,基于发布 / 订阅的消息系统,具备高吞吐率的特点
  9. mongoDB:MongoDB是面向文档的NoSQL数据库,用于大量数据存储。

离线隐语义模型协同过滤推荐

LFM (Latent factor model):隐语义模型,一种基于矩阵分解的用来预测用户对物品兴趣度的推荐算法,该算法的核心思想是通过隐含特征(Latent factor)联系用户和物品,该算法最早在文本挖掘领域中被提出用于找到文本的隐含语义

ALS(Alternating Least Squares):交替最小二乘法。LS算法是ALS的基础,是一种数学优化技术,通过最小化误差平方和寻找数据的最佳匹配,利用最小二乘法寻找最优的未知数据,保证求的数据与已知的数据误差最小。

是一种在推荐系统中广泛使用的技术。该技术通过分析用户或者事物之间的相似性,来预测用户可能感兴趣的内容并将此内容推荐给用户

矩阵分解:对于大量用户与大量商品、但用户与商品评分较少的场景,如何用用户对当前商品的评价去推测用户对商品集中其他商品的评价。(评价值包括但不限于用户行为浏览、收藏、加购物车、购买的加权求和)

用户\商品

商品 1

商品 2

商品 3

商品 4

用户A

3

2

用户B

1

2

用户C

3

4

6

用户D

1

2

5

离线提取商品特征基于内容推荐

TF-IDF(term frequency–inverse document frequency):一种用于信息检索与数据挖掘的常用加权技术。TF是词频(Term Frequency),IDF是逆文本频率指数(Inverse Document Frequency)。

离线相似物品推荐

Item-CF: 基于商品的协同过滤算法, ItemCF算法不是根据物品内容的属性计算物品之间的相似度,而是通过分析用户的行为记录来计算用户的相似度,该算法认为物品A和物品B相似的依据是因为喜欢物品A的用户也喜欢物品B。

实时推荐

根据用户的一个行为,通过实时推荐算法,完成商品推荐评分的更新

主要推荐算法简介

基于用户的推荐(User-based Recommendation)

系统首先根据用户的类型,比如按照年龄、性别、兴趣爱好等信息进行分类。根据用户的这些特点计算形似度和匹配度。如图,发现用户A和B的性别一样,年龄段相似,于是推荐A喜欢的商品给C。

优点:

a 不需要历史数据,没有冷启动问题;

b 不依赖于物品的属性,因此其他领域的问题都可无缝接入。

不足:

算法比较粗糙,效果很难令人满意,只适合简单的推荐。

基于内容的推荐(Content-based Recommendation)

优点:

  1. 对用户兴趣可以很好的建模,并通过对商品和用户添加标签,可以获得更好的精确度;
  2. 能为具有特殊兴趣爱好的用户进行推荐。

不足:

  1. 物品的属性有限,难以区分商品信息的品质;
  2. 物品相似度的衡量标准只考虑到了物品本身,有一定的片面性;
  3. 不能为用户发现新的感兴趣的产品。

基于协同过滤的推荐(collaborative filtering):

  • 基于用户(user-based)的协同过滤,UserCF算法主要是考虑用户与用户之间的相似度,给用户推荐和他兴趣相似的其他用户喜欢的物品
  • 基于物品(item-based)的协同过滤,ItemCF算法不是根据物品内容的属性计算物品之间的相似度,而是通过分析用户的行为记录来计算用户的相似度,该算法认为物品A和物品B相似的依据是因为喜欢物品A的用户也喜欢物品B
  • 基于模型(model-based)的协同过滤,也叫做基于学习的方法,通过定义一个参数模型来描述用户与物品,用户与用户(或者物品与物品)之间的关系,然后通过优化过程得到模型参数。

更多推荐

推荐系统学习