文章目录
推荐系统
推荐系统的介绍
- 没有明确需求的用户访问了我们的服务, 且服务的物品对用户构成了信息过载, 系统通过一定的规则对物品进行排序,并将排在前面的物品展示给用户,这样的系统就是推荐系统。
- 推荐系统所解决的根本问题就是:在“信息过载”的情况下,用户如何高效获取感兴趣的信息。
推荐系统的作用
- 高效连接用户和物品, 发现长尾商品。
- 留住用户和内容生产者, 实现商业目标。
推荐系统的工作原理
- 社会化推荐 向好友咨询, 让好友给自己推荐物品。
- 基于内容的推荐 打开搜索引擎, 输入自己喜欢吃的食物, 然后看看返回结果中还有什么品牌的食物是自己没去吃过的。
- 基于流行度的推荐 查看票房,美食榜单。
- 基于协同过滤的推荐 找到和自己历史兴趣相似的用户, 看看他们最近在看什么电影。
推荐系统与搜索引擎的区别
对比项 | 搜索引擎 | 推荐系统 |
---|---|---|
行为方式 | 主动 | 被动 |
意图 | 明确 | 模糊 |
个性化 | 弱 | 强 |
流量分布 | 马太效应 | 长尾效应 |
目标 | 快速满足 | 持续服务 |
评估指标 | 简明 | 复杂 |
推荐系统和Web项目的区别
- web项目: 处理复杂逻辑 处理高并发 实现高可用 为用户提供稳定服务, 构建一个稳定的信息流通的服务。
推荐系统: 追求指标增长, 留存率/阅读时间/GMV (Gross Merchandise Volume电商网站成交金额)/视频网站VV (Video View)。 - web项目: 对结果有确定预期。
推荐系统: 结果是概率问题。
推荐系统设计
推荐系统架构
- 推荐系统逻辑架构:对于某个用户U(User),在特定场景C(Context)下,针对海量的“物品”信息构建一个函数 ,预测用户对特定候选物品I(Item)的喜好程度,再根据喜好程度对所有候选物品进行排序,生成推荐列表的问题。
- 推荐系统整体架构
大数据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
- 服务层
- 支持随机读
- 需要在非常短的时间内返回结果
- 读取批处理层和实时处理层结果并对其归并
推荐算法架构
- 召回阶段(海选):召回决定了最终推荐结果的天花板
常用算法:
协同过滤(基于用户 基于物品的)
基于内容 (根据用户行为总结出自己的偏好 根据偏好 通过文本挖掘技术找到内容上相似的商品)
基于隐语义 - 排序阶段:
召回决定了最终推荐结果的天花板, 排序逼近这个极限, 决定了最终的推荐效果
CTR预估 (点击率预估 使用LR算法) 估计用户是否会点击某个商品 需要用户的点击数据 - 策略调整
深度学习对推荐系统的影响
- 深度学习应用于推荐系统,能够极大地增强推荐模型的拟合能力和表达能力。简单来说,就是让推荐模型“猜的更准”,更能抓住用户的“心”。深度学习推荐系统框架层数要比传统机器学习推荐系统要多很多。***因为深度学习复杂的模型结构,让深度学习模型具备了理论上拟合任何函数的能力。***如果说f(U,I,C) 这个推荐函数具有一个最优的表达形式,那传统的机器学习模型只能够拟合出f(U,I,C) 这个推荐函数的近似形式,而深度学习模型则可以最大程度地接近这个最优形式。
- 以下为对比图:
- 深度学习推荐系统优势:让深度学习模型的神经网络模拟很多用户兴趣的变迁过程,甚至用户做出决定的思考过程。
- 工业级推荐系统架构图:
客户端与服务器端实时数据处理、流处理平台准实时数据处理、大数据平台离线数据处理。
深度学习推荐系统总结
- 深度学习中 Embedding 技术在召回层的应用。作为深度学习中非常核心的 Embedding 技术,将它应用在推荐系统的召回层中,做相关物品的快速召回,已经是业界非常主流的解决方案了。
- 不同结构的深度学习模型在排序层的应用。排序层(也称精排层)是影响推荐效果的重中之重,也是深度学习模型大展拳脚的领域。深度学习模型的灵活性高,表达能力强的特点,这让它非常适合于大数据量下的精确排序。深度学习排序模型毫无疑问是业界和学界都在不断加大投入,快速迭代的部分。
- 增强学习在模型更新、工程模型一体化方向上的应用。增强学习可以说是与深度学习密切相关的另一机器学习领域,它在推荐系统中的应用,让推荐系统可以在实时性层面更上一层楼。