1 基础CB推荐算法
基础CB推荐算法利用物品的基本信息和用户偏好内容的相似性进行物品推荐。通过分析用户已经浏览过的物品内容,生成用户的偏好内容,然后推荐与用户感兴趣的物品内容相似度高的其他物品。
比如,用户近期浏览过冯小刚导演的电影“非诚勿扰”,主演是葛优;那么如果用户没有看过“私人订制”,则可以推荐给用户。因为这两部电影的导演都是冯小刚,主演都有葛优。
算法流程
算法输入:物品信息,用户行为日志。
算法输出:初始推荐结果。
A.物品表示:每个物品使用特征向量表示;
B. 从用户行为日志中,获取该用户所浏览、收藏、评价、分享的物品集合M,根据物品集合M中物品的特征数据,可以学到用户的内容偏好;
C.保存Top-K个物品到初始推荐结果中。
适用场景
适用于基础CB架构的搭建,尤其是对新上线物品会马上被推荐非常有效,被推荐的机会与老的物品是相同的。
2 基于TF-IDF的CB推荐算法
TF-IDF在CB推荐算法中的应用于在CF推荐算法中的应用极为相似,唯一不同的是:
CF推荐算法中的KNN是根据用户对物品的评分来计算物品间相似度的,而TF-IDF在CB推荐算法是根据【物品的词语的TF-ID值构成的向量】来计算相似度的;
TF-IDF是自然语言处理领域中计算文档中词或短语的权值的方法,是词频(Term Frequency, TF)和逆转文档频率(Inverse Document Frequency, IDF)的乘积。
TF指的是某一个给定的词语在该文件中出现的次数,IDF是一个词语普遍重要性的度量;
算法原理
TF-IDF算法基于这样一个假设:若一个词语在目标文档中出现的频率高而在其他文档中出现的频率低,那么这个词语就可以用来区分出目标文档。
算法流程
算法输入:物品信息,用户行为日志。
算法输出:初始推荐结果。
A. 物品表示:向量表示 描述物品的词语的TF-IDF值;
B.使用上面的向量计算物品的相似度,保存Top-K个物品到初始推荐结果中;
C. 从用户行为日志中,获取该用户所浏览、收藏、评价、分享的物品集合M,根据物品集合M中物品的特征数据,可以学到用户的内容偏好;
例如:
3 基于KNN的CB推荐算法
KNN在CB推荐算法中的应用于在CF推荐算法中的应用极为相似,唯一不同的是:
CF推荐算法中的KNN是根据用户对物品的评分来计算物品间相似度的,而CB推荐算法中KNN是根据物品画像来计算相似度的;
所以对于后者来说,如何通过物品画像来计算物品间的相似度是算法中的关键步骤。
相似度的计算可以使用余弦相似度或Pearson相关系数的计算方法。
4 基于Rocchio的CB推荐算法
5 基于决策树的CB推荐算法
基于决策树的推荐算法在训练阶段会生成一个显示的决策模型。决策树可以通过训练数据构建并有效判断一个新的物品是否可能受到欢迎。当物品的特征属性较少时,采用决策树算法能够取得不错的效果,另外,决策树学习的思想也比较容易被理解,在物品推荐时的可解释性较好。
6 基于线性分类的CB推荐算法
将基于内容的物品推荐问题视为分类问题时,可以采用多种机器学习方法。从一个更抽象的角度上看,大部分学习方法致力于找到一个可以准确区分用户喜欢和不喜欢的物品的线性分类模型系数。
将物品数据用n维特征向量来表示,线性分类器试图在给定的物品特征空间中找到一个能够将物品正确分类的平面,一类点尽可能在平面的某一边(喜欢),另一类在平面的另一边(不喜欢)。
10基于LR的推荐算法
10.1原理介绍
LR(逻辑斯蒂回归)算法的本质是一个线性回归函数,该算法主要用作二分类的场景,例如点击率预估,算法公式如下:
其中x是模型的输入
-
xi表示每个维度的输入。
-
w是表示模型输入x的系数向量,w=( w1, w2, …), wi表示维度xi的权重。
10.2模型求解
我们通过梯度下降法求解我们的模型。以点击率预估为例,首先收集样本。变量定义如下:
-
nums 表示收集样本的数量 。
-
(Xi,yi)表示用户第 个样本的数据,Xi表示样本的特征,yi表示点击情况(0表示没有点击,1表示点击)。
-
Yi 表示模型的预测值,是关于w,b的变量。
定义交叉熵损失函数:
通过梯度下降法求解los(w,b)最小时对应的w,b即为所求模型参数。
10.3业务实践
LR算法在目前推荐系统业界中,流行的做法是大规模离散化特征(one-hot编码),然后带入LR模型,以广告点击率模型为例,步骤如下:
-
Step1:构造用户画像
按照特征类别构造用户画像,对类别下面的所有特征进行离散化处理,例如:用户历史浏览物品记录,用户社会属性,通过模型给用户打的标签等等。
表:用户画像
-
Step2:构造物品画像
构造物品画像,同样也是需要划分物品特征类别,类别下面特征离散化处理,例如:物品ID,物品标签,物品热度等等。
表:用户画像
-
Step3:构造场景画像
在实际的业务实践中,往往是一个模型需要用到多个场景,不同场景物品的平均点击率差别很大,为了更好地解决不同场景平均点击率不同的问题,往往需要加上场景特征。场景画像一般只有场景ID,在某些特殊场景(例如:搜索列表)可以加上位置信息。
表:场景画像
-
Step4:收集样本数据
收集历史曝光点击数据,收集的数据维度包括:用户ID,物品ID,场景ID,是否点击。然后关联用户画像和物品画像得到模型的训练样本数据。
表:样本数据
-
Step5:构造模型特征
通过对样本数据构造模型特征得到模型的输入,模型特征分两类,一类是交叉特征,另一类是原始特征。
交叉特征:选择用户的类别特征、选择物品的类别特征、场景ID做三个维度的交叉,例如:用户历史点击记录为item1,item2 , 物品的ID特征为I1,场景特征为scene1,那么生成的交叉特征为item1&I1&scene1,item2&I1&scene1。
原始特征:原始特征是指直接把画像特征作为模型的输入特征,一般是把物品的泛化特征作为原始特征,用于物品冷启动特征或场景冷启动特征,例如:物品的CTR、物品的热度、物品的标签等等。
表:模型输入
-
Step6:模型训练
把模型中的所有特征进行one-hot编码,假设模型特征数为N,首先给每个模型特征一个唯一1-N的编码,那么每个样本的模型输入向量是维度为N取值0/1的向量 ,0表示该样本具备对应编号的特征,1表示没有,例如:样本1的具有有编号为1和编号为3的特征,那么样本1的模型输入向量为(1,0,1,0,0,…),然后通过通用的LR训练器训练模型,即可把模型的参数训练出来。
-
Step7:模型使用
给定一个用户u,及一批候选物品,对用户u如何推荐物品。通过上述方法计算用户u对候选集中每个物品的模型得分,按照模型得分降序推荐给用户
7 基于朴素贝叶斯的CB推荐算法
3.1原理介绍
Bayes(贝叶斯)定理是关于随机事件A和B的条件概率相互转化的一则定理,贝叶斯公式如下:
上述公式中,P(Bi|u)表示的含义是在发生了事件u的情况下,发生事件Bi的概率,P(Bi)表示事件Bi的发生概率,P(u)表示事件u的发生概率。
如何利用上述定理进行个性化推荐,下面我们举个业务实践的例子。
3.2业务实践
以应用商店中应用推荐为例,业务场景:当用户进入应用商店,根据用户已安装应用列表给用户推荐应用。
-
Step1:问题分解
给定一个用户u,给该用户推荐应用B,根据贝叶斯公式用户安装概率为:
设用户的安装列表为{A1 ,…, An},把用户u看作是事件{A1 ,…, An},为了简化问题,假设Ak相互独立,那么:
上述式子可以化为:
在推荐场景中,是对一个用户计算不同应用的得分,然后作降序进行推荐。而对于同一个用户P(u)是不变的,所以我们可以用以下公式作为排序依据:
全库的应用集合记为,所以在贝叶斯推荐模型中主要参数有两个集合,分别为:
-
Step2:数据准备
首先收集历史的用户在应用商店中应用展示记录,并且关联用户在展示时刻的安装列表,数据格式如下:
表1:初始数据
-
Step3:模型参数计算
参数集合{P(B)|B∈I}的计算:给定一个应用B. 根据表1,首先中“展示应用=B”的样本数,记为showNumsB然后计算“展示应用=B”且“用户是否安装=1”的样本数记为installNumsB 那么:
参数集合{P(Ai|B)|B∈I,Ai∈I}给定一个应用B及Ai 根据表1,首先计算“Ai∈已安装列表”且“展示应用=B”的样本数,记为showNumsAi,B . 然后计算“Ai∈已安装列表”且“展示应用=B”且“用户是否安装=1”的样本数,记为installNumsAi,B 那么:
在计算P(Ai|B)可能会遇到样本不足的情况,导致计算出异常值,为了避免这类情况,需要根据经验加个最少安装数限制,这里我们定义为最少安装次数为100,那么:
其中P(Ai)是表示在所有用户中,安装了应用Ai用户的占比。
-
Step4:给用户推荐应用
给定一个用户u,及一批候选推荐应用池,我们通过上述方法计算用户u对候选池中每个应用的得分sortScore(u,B),根据这个值做降序,取top 10的应用推荐给用户。