个性化推荐算法实战
环境:python TensorFlow word2vec xgboost
高数微积分、线性代数、概率论相关知识
机器学习基本知识,数据挖掘大体了解
根据用户的属性行为上下文等信息从物品全集中选取其感兴趣的物品作为候选集
召回决定了最终推荐结果的天花板
分类
-
基于用户行为的
-
基于user profile的
-
基于隐语义的
工业界个性化召回架构
LFM算法的背景
https://blog.csdn.net/bbbeoy/article/details/78646576
应用于计算用户的toplike、计算item的topsim、计算item的topic
LFM建模公式:
LFM loss function
LFM算法迭代
对上式求偏导:
使用梯度下降算法
参数设定影响效果
-
负样本选取
-
隐特征F(10~32)、正则参数、learning rate
理论基础
离线计算空间时间复杂度
在线推荐与推荐解释
用户行为很容易表示为图
图推荐在个性化推荐领域效果显著
二分图又称为二部图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A, j in B),则称图G为一个二分图。
Example:
对userA来说,item_c和item_e哪个更值得推荐?
两个顶点之间连通路径数
两个顶点之间连通路径长度
两个顶点之间连通路径经过顶点的出度
Example:
分别由几条路径连通?
连通路径的长度分别是多少?
连通路径经过的顶点的出度分别是多少?
对用户A进行个性化推荐,从用户A结点开始在用户物品二分图random walk,以alpha的概率从A的出边中等概率选择一条游走过去,到达该顶点后(举例顶点a),有alpha的概率继续从顶点a的出边中等概率选择一条继续游走到下一个结点,或者(1-alpha)的概率回到起点A,多次迭代。直到各顶点对于用户A的重要度收敛。
Item2item的推荐方式效果显著
NN model的特征抽象能力
算法论文:ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING(/doc/1603.4259.pdf)
https://blog.csdn.net/qq_35771020/article/details/89137392
将用户的行为序列转化成item组成的句子
模仿word2vec训练word embedding将item embedding进行训练
用户的行为序列时序性缺失
用户行为序列中的item强度是无区分性的
从log中抽取用户行为序列
将行为序列当成语料训练word2vec得到item embedding
得到item sim关系用于推荐
Example:
问题抽象:
Loss Function
梯度:
CBOW训练主流程
-
选取中心词w以及负采样NEG(w)
-
分别获得损失函数对xw与thetau的梯度
-
更新thetau以及中心词对应的context(w)的每一个词的词向量
问题抽象
Loss Function
Skip Gram word2vec训练主流程
-
对于context(w)中任何一个词wc选取w的正负样本
-
计算Loss对theta以及对wc的偏导
-
更新wc对应的词向量
负采样算法
思路极简,可解释强
用户推荐的独立性
问世较早,流行度高
Topic Finding
Genre Classify
Genre/Topic
Time Decay
Find top K Genre/Topic
Get the best n item from fixed Genre/Topic
基于领域的
基于内容的
基于neural network的
离线评价准入
在线评价收益
评测新增算法推荐结果在测试集上的表现
定义指标
生产环境A/B test
将个性化召回的物品候选集根据物品本身的属性结合用户的属性,上下文等信息给出展现优先级的过程
Rank决定了最终的推荐效果
单一的渐层模型
浅层模型的组合
深度学习模型
https://www.cnblogs.com/qcloud1001/p/7513982.html
https://blog.csdn.net/starzhou/article/details/51769561
https://blog.csdn.net/weixin_39445556/article/details/83930186
https://www.jianshu.com/p/d4301dc529d9
https://blog.csdn.net/weixin_39445556/article/details/83930186
Example
LR模型训练流程
-
从Log中获取训练样本与特征
-
Model参数学习
-
Model预测
优点:易于理解,计算代价小
缺点:容易欠拟合,需要特征工程
Model function
梯度下降
什么是过拟合
https://blog.csdn.net/qq_18254385/article/details/78428887
L1正则化与L2正则化
https://blog.csdn.net/zhaomengszu/article/details/81537197
L1:
L2:
样本选择规则
样本过滤规则
特征的统计与分析
特征的选择
特征的预处理
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。
https://www.cnblogs.com/yonghao/p/5061873.html
回归树的函数表示
最优特征选取
构建树的流程
-
遍历所有特征,特征的最佳划分对应的得分,选取最小得分的特征
-
将数据依据此选取的特征划分分成两部分
-
继续在左右两部分遍历变量找到划分特征直到满足停止条件
CART生成
https://www.jianshu.com/p/b90a9ce05b28
回归树:平方误差最小化原则
分类树:基尼指数
基尼指数
一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数
如何改变训练数据的权重
如何组合多个基础model
迭代损失函数
-
初始化$$f_{0}\left( x \right) = 0$$
-
对m=1,2,3,……计算残差rm,拟合rm,得到Tm
-
更新$$f_{m} = f_{m - 1} + T_{m}$$
Example
残差的数值改变
-
初始化$$f_{0}\left( x \right) = 0$$
-
对m=1,2,3,……M应用选择最优划分特征的方法构造树
-
更新$$f_{m} = f_{m - 1} + learning_ rate + T_{m}$$
Practical Lessons from Predicting Clicks on Ads at Facebook
逻辑回归需要繁琐的特征处理
树模型的feature transform能力
优点:利用树模型做特征转化
缺点:两个模型单独训练不是联合训练
sigmoid
tanh
relu
隐层层数,每个隐层神经元个数,激活函数
输入输出层向量维度
不同层之间神经元的连接权重W和偏移值B
10.2.3 前向传播
节点的输出值
核心
-
对输入x,设置合理的输入向量
-
前向传播逐层逐个神经元求解加权和与激活值
-
对于输出层求解输出层损失函数对于z值的偏导
-
反向传播逐层求解损失函数对z值的偏导
-
得到w与b的梯度
论文:wide & deep learning for Recommender Systems
Generalization and Memorization(/doc/p7-cheng.pdf)
x
模型输出
Wide侧参数学习
Deep侧参数学习
Model cv
Model test and data performance
业务指标
平均点击位置
特征维度
User 、Item、Context、UI Relation、Statics Supplement
特征数目
多目标学习
强化学习
Recall:CF, LFM, Personal Rank, Item2vec, ContentBased
Rank: LR, GBDT, LR + GBDT, WD