推荐系统 | 【01】简介

@[toc]

简介

介绍

简介:推荐系统经过对年的发展,在电商、资讯、音乐等应用中成为了核心组件之一。
背景:信息的过载与用户对于需求不够明确。
概念:用户没有明确的需求且服务于用户的商品信息过载,则系统能过通过算法对商品进行有规则的排序。

推荐系统与搜索引擎的区别
搜索引擎推荐系统
行为方式主动被动
意图明确模糊
个性化
流量分布马太效应长尾效应
目标快速满足持续服务
评估指标简明复杂

马太效应:一种强者愈强、弱者愈弱的现象。
长尾效应:从人们需求的角度来看,大多数的需求会集中在头部 —— 流行,而分布在尾部的需求是个性化的,零散的小量的需求。而这部分差异化的、少量的需求会在需求曲线上面形成一条长长的“尾巴” —— 长尾效应。

作用
  • 高效连接用户和物品, 发现长尾商品;
  • 留住用户和内容生产者, 实现商业目标。
工作原理
  • 社会化推荐 向朋友咨询, 社会化推荐, 让好友给自己推荐物品;
  • 基于内容的推荐 打开搜索引擎, 输入要购买的商品, 在看返回结果中还有什么商品是没有看过的;
  • 基于流行度的推荐 查看购物排行榜;
  • 基于协同过滤的推荐 找到和自己历史兴趣相似的用户, 看看他们最近在看什么电影。

推荐系统的整体架构

架构图

在这里插入图片描述

Lambda架构

由Twitter工程师Nathan Marz(storm项目发起人)提出。Lambda系统架构提供了一个结合实时数据和Hadoop预先计算的数据环境和混合平台, 提供一个实时的数据视图

分层架构

批处理层

  • 数据不可变, 可进行任何计算, 可水平扩展
  • 高延迟 几分钟~几小时(计算量和数据量不同)
  • 日志收集 Flume
  • 分布式存储 Hadoop hdfs
  • 分布式计算 Hadoop MapReduce & spark
  • 视图存储数据库 --> [nosql(HBase/Cassandra), Redis/memcache, MySQL]

实时处理层
流式处理, 持续计算

  • 存储和分析某个窗口期内的数据
    • 最终正确性
    • 实时数据收集 flume & kafka
    • 实时数据分析 spark streaming/storm/flink

服务层

  • 支持随机读
  • 需要在非常短的时间内返回结果
  • 读取批处理层和实时处理层结果并对其归并

lambda架构图
在这里插入图片描述
推荐算法架构

召回阶段

  • 召回决定了最终推荐结果的天花板
  • 常用算法: 协同过滤(基于用户 基于物品的);基于内容 (根据用户行为总结出自己的偏好 根据偏好 通过文本挖掘技术找到内容上相似的商品);基于隐语义

排序阶段

  • 召回决定了最终推荐结果的天花板, 排序逼近这个极限, 决定了最终的推荐效果
  • CTR预估 (点击率预估 使用LR算法) 估计用户是否会点击某个商品 需要用户的点击数据

策略调整
在这里插入图片描述
整体架构
在这里插入图片描述
在这里插入图片描述

推荐算法

推荐模型构建流程在这里插入图片描述数据清洗

数据来源

  • 显性数据: Rating 打分 ; Comments 评论/评价
  • 隐形数据:Order history 历史订单;Cart events 加购物车;Page views 页面浏览;Click-thru 点击; Search log 搜索记录

数据量/数据能否满足要求

特征工程

从数据中筛选特征

  • 一个给定的商品,可能被拥有类似品味或需求的用户购买
  • 使用用户行为数据描述商品
    在这里插入图片描述

用数据表示特征

  • 将所有用户行为合并在一起 ,形成一个user-item 矩阵
    在这里插入图片描述

选择算法
产生推荐结果

协同过滤推荐算法(最为经典)

算法思想

物以类聚,人以群分

基本的协同过滤推荐算法基于该俩种假设

  • “跟你喜好相似的人喜欢的东西你也很有可能喜欢” :基于用户的协同过滤推荐(User-based CF)
  • “跟你喜欢的东西相似的东西你也很有可能喜欢 ”:基于物品的协同过滤推荐(Item-based CF)

实现协同过滤推荐有以下几个步骤

找出最相似的人或物品:TOP-N相似的人或物品:通过计算两两的相似度来进行排序,即可找出TOP-N相似的人或物品
根据相似的人或物品产生推荐结果:利用TOP-N结果生成初始推荐结果,然后过滤掉用户已经有过记录的物品或明确表示不感兴趣的物品

相似度计算

在这里插入图片描述
相似度的计算方法

数据分类

  • 实数值(物品评分情况)
  • 布尔值(用户的行为 是否点击 是否收藏)

欧氏距离:是一个欧式空间下度量距离的方法. 两个物体, 都在同一个空间下表示为两个点, 假如叫做p,q, 分别都是n个坐标, 那么欧式距离就是衡量这两个点之间的距离. 欧氏距离不适用于布尔向量之间
在这里插入图片描述
欧氏距离的值是一个非负数, 最大值正无穷, 通常计算相似度的结果希望是[-1,1]或[0,1]之间,一般可以使用
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210223215558954.png

杰卡德相似度&余弦相似度&皮尔逊相关系数

余弦相似度

  • 度量的是两个向量之间的夹角, 用夹角的余弦值来度量相似的情况
  • 两个向量的夹角为0是,余弦值为1, 当夹角为90度是余弦值为0,为180度是余弦值为-1
  • 余弦相似度在度量文本相似度, 用户相似度 物品相似度的时候较为常用
  • 余弦相似度的特点, 与向量长度无关,余弦相似度计算要对向量长度归一化, 两个向量只要方向一致,无论程度强弱, 都可以视为’相似’

皮尔逊相关系数Pearson

  • 实际上也是一种余弦相似度, 不过先对向量做了中心化, 向量a b 各自减去向量的均值后, 再计算余弦相似度
  • 皮尔逊相似度计算结果在-1,1之间 -1表示负相关, 1表示正相关
  • 度量两个变量是不是同增同减
  • 皮尔逊相关系数度量的是两个变量的变化趋势是否一致, 不适合计算布尔值向量之间的相关度

杰卡德相似度 Jaccard

  • 两个集合的交集元素个数在并集中所占的比例, 非常适用于布尔向量表示
  • 分子是两个布尔向量做点积计算, 得到的就是交集元素的个数
  • 分母是两个布尔向量做或运算, 再求元素和
  • 余弦相似度适合用户评分数据(实数值), 杰卡德相似度适用于隐式反馈数据(0,1布尔值)(是否收藏,是否点击,是否加购物车)

余弦相似度
在这里插入图片描述
皮尔逊相关系数
在这里插入图片描述
计算出用户1和其它用户之间的相似度
在这里插入图片描述
按照相似度大小排序, K近邻 如K取4: 1
在这里插入图片描述
取出近邻用户的购物清单
在这里插入图片描述
去除用户1已经购买过的商品
在这里插入图片描述
在剩余的物品中根据评分排序
在这里插入图片描述
物品相似度计算

余弦相似度对绝对值大小不敏感带来的问题

  • 用户A对两部电影评分分别是1分和2分, 用户B对同样这两部电影进行评分是4分,5分 用余弦相似度计算,两个用户的相似度达到0.98
  • 可以采用改进的余弦相似度, 先计算向量每个维度上的均值, 然后每个向量在各个维度上都减去均值后,在计算余弦相似度, 用调整的余弦相似度计算得到的相似度是-0.1
基于模型的方法

思想

通过机器学习算法,在数据中找出模式,并将用户与物品间的互动方式模式化;基于模型的协同过滤方式是构建协同过滤更高级的算法

近邻模型的问题

物品之间存在相关性, 信息量并不随着向量维度增加而线性增加;矩阵元素稀疏, 计算结果不稳定,增减一个向量维度, 导致近邻结果差异很大的情况存在

算法分类

基于图的模型;基于矩阵分解的方法

基于图的模型

基于邻域的模型看做基于图的模型的简单形式
在这里插入图片描述
原理

  • 将用户的行为数据表示为二分图
  • 基于二分图为用户进行推荐
  • 根据两个顶点之间的路径数、路径长度和经过的顶点数来评价两个顶点的相关性

基于矩阵分解的模型

原理

  • 根据用户与物品的潜在表现,我们就可以预测用户对未评分的物品的喜爱程度
  • 把原来的大矩阵, 近似分解成两个小矩阵的乘积, 在实际推荐计算时不再使用大矩阵, 而是使用分解得到的两个小矩阵
  • 用户-物品评分矩阵A是M X N维, 即一共有M个用户, n个物品 我们选一个很小的数 K (K<< M, K<<N)
  • 通过计算得到两个矩阵U V U是M * K矩阵 , 矩阵V是 N * K
    U m ∗ k V n ∗ k T 约 等 于 A m ∗ n U_{m*k} V^{T}_{n*k} 约等于 A_{m*n} UmkVnkTAmn 类似这样的计算过程就是矩阵分解

基于矩阵分解的方法

  • ALS交替最小二乘:- ALS-WR(加权正则化交替最小二乘法): alternating-least-squares with weighted-λ –regularization; 将用户(user)对商品(item)的评分矩阵分解为两个矩阵:一个是用户对商品隐含特征的偏好矩阵,另一个是商品所包含的隐含特征的矩阵。在这个矩阵分解的过程中,评分缺失项得到了填充,也就是说我们可以基于这个填充的评分来给用户做商品推荐了。
  • SVD奇异值分解矩阵

推荐系统评估

显示反馈和隐式反馈
显式反馈隐式反馈
例子电影/书籍评分是否喜欢这个推荐播放/点击 评论 下载 购买
准确性
数量
获取成本
常用评估指标

准确性、信任度、 满意度、实时性、覆盖率、鲁棒性、 多样性、可扩展性、新颖性、商业⽬标、惊喜度、⽤户留存

准确性 (理论角度) Netflix 美国录像带租赁

评分预测:RMSE MAE
topN推荐:召回率 精准率

准确性 (业务角度)

在这里插入图片描述

覆盖度

信息熵对于推荐越大越好; 覆盖率

多样性&新颖性&惊喜性

  • 多样性:推荐列表中两两物品的不相似性。(相似性如何度量?
  • 新颖性:未曾关注的类别、作者;推荐结果的平均流⾏度
  • 惊喜性:历史不相似(惊)但很满意(喜)
  • 往往需要牺牲准确性
  • 使⽤历史⾏为预测⽤户对某个物品的喜爱程度
  • 系统过度强调实时性

Exploitation & Exploration 探索与利用问题

  • Exploitation(开发 利用):选择现在可能最佳的⽅案
  • Exploration(探测 搜索):选择现在不确定的⼀些⽅案,但未来可能会有⾼收益的⽅案
  • 在做两类决策的过程中,不断更新对所有决策的不确定性的认知,优化
    长期的⽬标

EE问题实践

  • 兴趣扩展: 相似话题, 搭配推荐
  • 人群算法: userCF 用户聚类
  • 平衡个性化推荐和热门推荐比例
  • 随机丢弃用户行为历史
  • 随机扰动模型参数

EE可能带来的问题

  • 探索伤害用户体验, 可能导致用户流失
  • 探索带来的长期收益(留存率)评估周期长, KPI压力大
  • 如何平衡实时兴趣和长期兴趣
  • 如何平衡短期产品体验和长期系统生态
  • 如何平衡大众口味和小众需求

评估方法

  • 问卷调查: 成本高
  • 离线评估: 只能在用户看到过的候选集上做评估, 且跟线上真实效果存在偏差;只能评估少数指标;速度快, 不损害用户体验
  • 在线评估: 灰度发布 & A/B测试 50% 全量上线
  • 实践: 离线评估和在线评估结合, 定期做问卷调查
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jxiepc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值