个性化推荐(推荐系统)经历了多年的发展,已经成为互联网产品的标配,也是AI成功落地的分支之一,在电商、资讯、音乐、短视频等热门应用中,推荐系统都是核心组件之一。
1、产生背景:信息过载及用户需求不明确
2、产生历史:1)分类目录(1990s):覆盖少量的热门网站,如hao123,Yahoo
2)搜索引擎(2000s):通过搜索词明确需求,如Google,Baidu
3)推荐系统(2010s):不需要用户提供明确的需求,通过分析用户的历史行为给用户的兴趣进行建模,从而主动给用户推荐能够满足他们兴趣和需求的信息,如抖音短视频
推荐系统和搜索引擎的区别 | 推荐 | 搜索 |
行为方式 | 被动 | 主动 |
意图 | 模糊 | 明确 |
个性化 | 强 | 弱 |
流量分布 | 长尾效应 | 马太效应 |
目标 | 持续服务 | 快速满足 |
评估指标 | 复杂 | 简明 |
没有明确需求的用户访问了我们的服务,且服务的物品对用户构成了信息过载,系统通过一定的规则对物品进行排序,并将排在前面的物品展示给用户,这样的系统就是推荐系统
1、推荐系统的作用
1)高效连接用户和物品,发现长尾物品
2)留住用户和内容生产者,实现商业目标
2、推荐系统的工作原理
1)社会化推荐:向朋友资讯,社会化推荐,让好友给自己推荐物品
2)基于内容的推荐:打开搜索引擎,输入自己喜欢的演员的名字,然后看看返回结果中还有什么电影是自己没看过的
3)基于流行度的推荐:查看票房排行榜
4)基于协同过滤的推荐:找到和自己历史兴趣相似的用户,看看他们最近在看什么电影
3、推荐系统和Web项目的区别
通过信息过滤实现目标的提升 VS 稳定的信息流通系统
推荐系统:追求指标增长,留存率/阅读时间/GMV/视频网站VV(Video View)
Web项目:处理复杂逻辑,处理高并发,实现高可用,为用户提供稳定服务,构建一个稳定的信息流通的服务
不确定思维 VS 确定
推荐系统:结果是概率问题
Web项目:对结果有确定预期
1、推荐系统要素
a、UI和UE(前端界面)
b、数据(Lambda架构)
c、业务知识
d、算法
2、推荐系统架构
Lambda系统架构提供了一个结合实时数据和Hadoop预先计算的数据环境和混合平台,提供一个实时的数据视图。
2.1、分层架构
批处理层
实时处理层
服务层
2.2、算法架构
1)召回阶段(海选),召回决定了最终推荐结果的天花板,常用算法:
2)排序阶段
召回决定了最终推荐结果的天花板,排序逼近这个极限,决定了最终的推荐结果
CTR预估(点击率预估,使用LR算法),估计用户是否会点击某个商品,需要用户的点击数据
3)策略调整
1、推荐模型构建流程
数据获取及清洗 ——> 特征工程 ——> 机器学习算法 ——> 预测输出
数据来源
显性数据:Rating打分;Comments评价
隐性数据:历史订单、加购物车、页面浏览、点击、搜索记录等
特征工程
从数据中筛选特征
1)一个给定的商品,可能被拥有类似品味或需求的用户购买
2)使用用户行为数据描述商品
用数据表示特征
1)将所有用户行为合并在一起,形成一个user-item矩阵
机器学习算法--经典的推荐算法:协同过滤推荐算法(Collaborative Filtering)
1)算法思想:物以类聚人以群分
2)基本的协同过滤推荐算法基于以下假设:
a、“跟你喜好相似的人喜欢的东西你也很有可能喜欢”:基于用户的协同过滤推荐(User-based)
b、“跟你喜欢的东西相似的东西你也很有可能喜欢”:基于物品的协同过滤推荐(Item-based)
实现协同过推荐分以下几个步骤:
基于user-based的基本计算过程示例如下:(打钩表示用户对物品有购买记录)
item-based的计算过程基本和user-based类同。
3)相似度计算方法
a、欧式距离,是一个欧式空间下度量距离的方法。两个物体,都在同一个空间下表示为两个点,假如记为p、q,分别都是n个坐标,那么欧式距离就是衡量这两个点之间的距离。欧式距离不适用于布尔向量之间。
欧式距离的值是一个非负数,最大值正无穷,而相似度的结果希望是[-1,1]之间,一般可以使用如下公式进行转化:
b、余弦相似度
c、皮尔逊相关系数
d、杰卡德相似度
4)基于模型的方法
a、算法思想
b、近邻模型的问题
c、算法分类
基于邻域的模型看做基于图的模型的简单形式
原理
i)将用户的行为数据表示为二分图
ii)基于二分图为用户进行推荐
iii)根据两个顶点之间的路径数、路径长度和经过的顶点数来评价两个顶点的相关性
原理
i)根据用户与物品的潜在表现,我们就可以预测用户对未评分的物品的喜爱程度
ii)把原来的大矩阵,近似分解成两个小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵
iii)用户-物品评分矩阵A是M*N维,即一共有M个用户,N个物品,我们选一个很小的数K(K< iiii)通过计算得到两个矩阵U、V,U是M*K的矩阵,V是K*N 基于矩阵分解的方法 i)ALS-WR(加权正则化交替最小二乘法):alternating-least-squares with weighted-λ-regularization ii)将用户(user)对商品(item)的评分矩阵分解为两个矩阵:一个是用户对商品隐含特征的偏好矩阵,另一个是商品所包含的隐含特征的矩阵。在这个矩阵分解的过程中,评分缺失项得到了填充,也就是说我们可以基于这个填充的评分来给用户做商品推荐