什么是推荐系统
没有明确需求的用户访问了我们的服务, 且服务的物品对用户构成了信息过载, 系统通过一定的规则对物品进行排序,并将排在前面的物品展示给用户,这样的系统就是推荐系统
推荐系统整体架构
大数据Lambda架构
Lambda架构是由实时大数据处理框架Storm的作者Nathan Marz提出的一个实时大数据处理框架。
Lambda架构的将离线计算和实时计算整合,设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等。
分层架构
批处理层
数据不可变, 可进行任何计算, 可水平扩展
高延迟 几分钟~几小时(计算量和数据量不同)
日志收集: Flume
分布式存储: Hadoop
分布式计算: Hadoop、Spark
视图存储数据库
nosql(HBase/Cassandra)
Redis/memcache
MySQL
实时处理层
流式处理, 持续计算
存储和分析某个窗口期内的数据(一段时间的热销排行,实时热搜等)
实时数据收集 flume & kafka
实时数据分析 spark streaming/storm/flink
服务层
支持随机读
需要在非常短的时间内返回结果
读取批处理层和实时处理层结果并对其归并
Lambda架构图
推荐算法架构
召回阶段 (海选)
召回决定了最终推荐结果的天花板
常用算法:
协同过滤
基于内容
排序阶段 (精选)
召回决定了最终推荐结果的天花板, 排序逼近这个极限, 决定了最终的推荐效果
CTR预估 (点击率预估 使用LR算法) 估计用户是否会点击某个商品 需要用户的点击数据
策略调整