day1-推荐算法概念及入门

一、推荐系统简介

        个性化推荐(推荐系统)经历了多年的发展,已经成为互联网产品的标配,也是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、分层架构

        批处理层

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

        实时处理层

  •                 流式处理,持续计算
  •                 存储和分箱某个窗口期内的数据
  •                 最终正确性(Eventual Accuracy)
  •                 实时数据收集 Flume & Kafka
  •                 实时数据分析 Spark streaming/storm/flink

        服务层

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

2.2、算法架构

1)召回阶段(海选),召回决定了最终推荐结果的天花板,常用算法:

  1. 协同过滤(基于用户,基于物品)
  2. 基于内容(根据用户行为总结出用户偏好,根据偏好通过文本挖掘技术找到内容上相似的物品)
  3. 基于隐语义

2)排序阶段

        召回决定了最终推荐结果的天花板,排序逼近这个极限,决定了最终的推荐结果

        CTR预估(点击率预估,使用LR算法),估计用户是否会点击某个商品,需要用户的点击数据

3)策略调整

四、推荐算法及模型构建

1、推荐模型构建流程

数据获取及清洗 ——> 特征工程 ——> 机器学习算法 ——> 预测输出

数据来源

        显性数据:Rating打分;Comments评价

        隐性数据:历史订单、加购物车、页面浏览、点击、搜索记录等

特征工程

        从数据中筛选特征

        1)一个给定的商品,可能被拥有类似品味或需求的用户购买

        2)使用用户行为数据描述商品

        用数据表示特征

        1)将所有用户行为合并在一起,形成一个user-item矩阵

机器学习算法--经典的推荐算法:协同过滤推荐算法(Collaborative Filtering)

1)算法思想:物以类聚人以群分

2)基本的协同过滤推荐算法基于以下假设:

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

b、“跟你喜欢的东西相似的东西你也很有可能喜欢”:基于物品的协同过滤推荐(Item-based)

实现协同过推荐分以下几个步骤:

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

基于user-based的基本计算过程示例如下:(打钩表示用户对物品有购买记录)

item-based的计算过程基本和user-based类同。

 3)相似度计算方法

a、欧式距离,是一个欧式空间下度量距离的方法。两个物体,都在同一个空间下表示为两个点,假如记为p、q,分别都是n个坐标,那么欧式距离就是衡量这两个点之间的距离。欧式距离不适用于布尔向量之间。

 欧式距离的值是一个非负数,最大值正无穷,而相似度的结果希望是[-1,1]之间,一般可以使用如下公式进行转化:

b、余弦相似度

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

c、皮尔逊相关系数

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

d、杰卡德相似度

  • 两个集合的交集元素个数在并集中所占的比例,非常适用于布尔向量
  • 分子是两个布尔向量做点积计算,得到的就是交集元素的个数
  • 分母是两个布尔向量做或运算,再求元素和

4)基于模型的方法

 a、算法思想

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

b、近邻模型的问题

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

c、算法分类

  • 基于图的模型

        基于邻域的模型看做基于图的模型的简单形式 

        原理

       i)将用户的行为数据表示为二分图

       ii)基于二分图为用户进行推荐

       iii)根据两个顶点之间的路径数、路径长度和经过的顶点数来评价两个顶点的相关性

  • 基于矩阵分解的方法

        原理

        i)根据用户与物品的潜在表现,我们就可以预测用户对未评分的物品的喜爱程度

        ii)把原来的大矩阵,近似分解成两个小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵

        iii)用户-物品评分矩阵A是M*N维,即一共有M个用户,N个物品,我们选一个很小的数K(K<<M,K<<N)

        iiii)通过计算得到两个矩阵U、V,U是M*K的矩阵,V是K*N

        基于矩阵分解的方法

  • ALS交替最小二乘法

        i)ALS-WR(加权正则化交替最小二乘法):alternating-least-squares with weighted-λ-regularization

        ii)将用户(user)对商品(item)的评分矩阵分解为两个矩阵:一个是用户对商品隐含特征的偏好矩阵,另一个是商品所包含的隐含特征的矩阵。在这个矩阵分解的过程中,评分缺失项得到了填充,也就是说我们可以基于这个填充的评分来给用户做商品推荐

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值