7-推荐系统简介及推荐系统的架构设计
一: 推荐系统的简介
-
-
信息过载 & 用户需求不明确
-
分类⽬录(1990s):覆盖少量热门⽹站。Hao123 Yahoo
-
搜索引擎(2000s):通过搜索词明确需求。Google Baidu
-
推荐系统(2010s):不需要⽤户提供明确的需求,通过分析⽤户的历史⾏为给⽤户的兴趣进⾏建模,从⽽主动给⽤户推荐能够满⾜他们兴趣和需求的信息。
-
-
-
什么是推荐系统
-
没有明确需求的用户访问了我们的服务, 且服务的物品对用户构成了信息过载, 系统通过一定的规则对物品进行排序,并将排在前面的物品展示给用户,这样的系统就是推荐系统
-
-
-
高效连接用户和物品, 发现长尾商品
-
留住用户和内容生产者, 实现商业目标
-
-
-
社会化推荐 向朋友咨询, 社会化推荐, 让好友给自己推荐物品
-
基于内容的推荐 打开搜索引擎, 输入自己喜欢的演员的名字, 然后看看返回结果中还有什么电影是自己没看过的
-
基于流行度的推荐 查看票房排行榜,
-
基于协同过滤的推荐 找到和自己历史兴趣相似的用户, 看看他们最近在看什么电影
-
-
推荐系统和Web项目的区别
-
稳定的信息流通系统 V.S. 通过信息过滤实现目标提升
-
web项目: 处理复杂逻辑 处理高并发 实现高可用 为用户提供稳定服务, 构建一个稳定的信息流通的服务
-
推荐系统: 追求指标增长, 留存率/阅读时间/GMV (Gross Merchandise Volume电商网站成交金额)/视频网站VV (Video View)
-
-
确定 V.S. 不确定思维
-
web项目: 对结果有确定预期
-
推荐系统: 结果是概率问题
-
-
二:推荐系统的架构设计
-
![]()
-
大数据Lambda架构
-
由Twitter工程师Nathan Marz(storm项目发起人)提出
-
Lambda系统架构提供了一个结合实时数据和Hadoop预先计算的数据环境和混合平台, 提供一个实时的数据视图
-
分层架构
-
批处理层
-
数据不可变, 可进行任何计算, 可水平扩展
-
高延迟 几分钟~几小时(计算量和数据量不同)
-
日志收集 Flume
-
分布式存储 Hadoop hdfs
-
分布式计算 Hadoop MapReduce & spark
-
视图存储数据库
-
nosql(HBase/Cassandra)
-
Redis/memcache
-
MySQL
-
-
-
实时处理层
-
流式处理, 持续计算
-
存储和分析某个窗口期内的数据
-
最终正确性(Eventual accuracy)
-
实时数据收集 flume & kafka
-
实时数据分析 spark streaming/storm/flink
-
-
服务层
-
支持随机读
-
需要在非常短的时间内返回结果
-
读取批处理层和实时处理层结果并对其归并
-
-
-
Lambda架构图
![]()
-
-
推荐算法架构
-
召回阶段(海选)
-
召回决定了最终推荐结果的天花板
-
常用算法:
-
协同过滤(基于用户 基于物品的)
-
基于内容 (根据用户行为总结出自己的偏好 根据偏好 通过文本挖掘技术找到内容上相似的商品)
-
基于隐语义
-
-
-
排序阶段
-
召回决定了最终推荐结果的天花板, 排序逼近这个极限, 决定了最终的推荐效果
-
CTR预估 (点击率预估 使用LR算法) 估计用户是否会点击某个商品 需要用户的点击数据
-
-
策略调整
-

-
推荐系统的整体架构
![]()
![]()




浙公网安备 33010602011771号