元数据
深度学习推荐系统 - 王喆
- 书名: 深度学习推荐系统 - 王喆
- 作者: 王喆
- 简介:
- 出版时间
- ISBN:
- 分类:
- 出版社: 电子工业出版社
高亮划线
1.2 推荐系统的架构
- 📌 在得到原始的数据信息后,推荐系统的数据处理系统会将原始数据进一步加工,加工后的数据出口主要有三个:(1)生成推荐模型所需的样本数据,用于算法模型的训练和评估。(2)生成推荐模型服务(model serving)所需的“特征”,用于推荐系统的线上推断。(3)生成系统监控、商业智能(Business Intelligence,BI)系统所需的统计型数据。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-10-3800-4096
- ⏱ 2025-01-09 10:48:56
第2章 前深度学习时代——推荐系统的进化之路
- 📌 推荐系统的发展可谓一日千里,从2010年之前千篇一律的协同过滤(Collaborative Filtering,CF)、逻辑回归(Logistic Regression,LR),进化到因子分解机(Factorization Machine,FM)、梯度提升树(Gradient Boosting Decision Tree,GBDT),再到2015年之后深度学习推荐模型的百花齐放 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-13-579-769
- ⏱ 2025-01-09 11:19:01
2.1 传统推荐模型的演化关系图
- 📌 因子分解机在传统逻辑回归的基础上,加入了二阶部分,使模型具备了进行特征组合的能力。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-14-1784-1825
- ⏱ 2025-01-09 11:48:15
2.2 协同过滤——经典的推荐算法
-
📌 用户X访问该电商网站,电商网站的推荐系统需要决定是否推荐电视机给用户X。换言之,推荐系统需要预测用户X是否喜欢该品牌的电视机。为了进行这项预测,可以利用的数据有用户X对其他商品的历史评价数据,以及其他用户对这些商品的历史评价数据。图2-2(b)中用绿色“点赞”标志表示用户对商品的好评,用红色“踩”的标志表示差评。可以看到,用户、商品和评价记录构成了带有标识的有向图。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-1957-2141
- ⏱ 2025-01-09 12:00:46
-
📌 为便于计算,将有向图转换成矩阵的形式(被称为“共现矩阵”),用户作为矩阵行坐标,商品作为列坐标,将“点赞”和“踩”的用户行为数据转换为矩阵中相应的元素值。这里将“点赞”的值设为1,将“踩”的值设为-1,“没有数据”置为0(如果用户对商品有具体的评分,那么共现矩阵中的元素值可以取具体的评分值,没有数据时的默认评分也可以取评分的均值)。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-2184-2351
- ⏱ 2025-01-09 12:00:50
-
📌 既然是“协同”过滤,用户理应考虑与自己兴趣相似的用户的意见。因此,预测的第一步就是找到与用户X兴趣最相似的n(Top n用户,这里的n是一个超参数)个用户,然后综合相似用户对“电视机”的评价,得出用户X对“电视机”评价的预测。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-2438-2713
- ⏱ 2025-01-09 12:01:10
-
📌 相比余弦相似度,皮尔逊相关系数通过使用用户平均分对各独立评分进行修正,减小了用户评分偏置的影响。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-4270-4318
- ⏱ 2025-01-09 12:04:45
-
📌 [插图]其中,Ri,p代表用户i对物品p的评分。[插图]代表用户i对所有物品的平均评分,P代表所有物品的集合。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-4318-5181
- ⏱ 2025-01-09 12:05:07
-
📌 以上介绍的协同过滤算法基于用户相似度进行推荐,因此也被称为基于用户的协同过滤(UserCF),它符合人们直觉上的“兴趣相似的朋友喜欢的物品,我也喜欢”的思想 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-7564-7642
- ⏱ 2025-01-09 12:07:25
-
📌 ItemCF是基于物品相似度进行推荐的协同过滤算法。通过计算共现矩阵中物品列向量的相似度得到物品之间的相似矩阵,再找到用户的历史正反馈物品的相似物品进行进一步排序和推荐,ItemCF的具体步骤如下:(1)基于历史数据,构建以用户(假设用户总数为m)为行坐标,物品(物品总数为n)为列坐标的m×n维的共现矩阵。(2)计算共现矩阵两两列向量间的相似性(相似度的计算方式与用户相似度的计算方式相同),构建n×n维的物品相似度矩阵。(3)获得用户历史行为数据中的正反馈物品列表。(4)利用物品相似度矩阵,针对目标用户历史行为中的正反馈物品,找出相似的To p k个物品,组成相似物品集合。(5)对相似物品集合中的物品,利用相似度分值进行排序,生成最终的推荐列表。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-8398-9195
- ⏱ 2025-01-09 12:11:33
-
📌 一方面,由于UserCF基于用户相似度进行推荐,使其具备更强的社交特性,用户能够快速得知与自己兴趣相似的人最近喜欢的是什么 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-10185-10246
- ⏱ 2025-01-09 12:14:01
-
📌 另一方面,ItemCF更适用于兴趣变化较为稳定的应用,比如在Amazon的电商场景中,用户在一个时间段内更倾向于寻找一类商品,这时利用物品相似度为其推荐相关物品是契合用户动机的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-10430-10519
- ⏱ 2025-01-09 12:14:40
-
📌 热门的物品具有很强的头部效应,容易跟大量物品产生相似性;而尾部的物品由于特征向量稀疏,很少与其他物品产生相似性,导致很少被推荐。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-10820-10884
- ⏱ 2025-01-09 12:15:43
-
📌 协同过滤的天然缺陷——推荐结果的头部效应较明显,处理稀疏向量的能力弱。为解决上述问题,同时增加模型的泛化能力,矩阵分解技术被提出。该方法在协同过滤共现矩阵的基础上,使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征,在一定程度上弥补了协同过滤模型处理稀疏矩阵能力不足的问题。另外,协同过滤仅利用用户和物品的交互信息,无法有效地引入用户年龄、性别、商品描述、商品分类、当前时间等一系列用户特征、物品特征和上下文特征,这无疑造成了有效信息的遗漏。为了在推荐模型中引入这些特征,推荐系统逐渐发展到以逻辑回归模型为核心的、能够综合不同类型特征的机器学习模型的道路上。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-15-11845-12213
- ⏱ 2025-01-09 12:18:40
2.3 矩阵分解算法——协同过滤的进化
-
📌 在“矩阵分解”的算法框架下,用户和物品的隐向量是通过分解协同过滤生成的共现矩阵得到的 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-16-2102-2196
- ⏱ 2025-01-09 13:31:00
-
📌 矩阵分解算法将m×n维的共现矩阵R分解为m×k维的用户矩阵U和k×n维的物品矩阵V相乘的形式。其中m是用户数量,n是物品数量,k是隐向量的维度。k ^CB-AhC7Mk7MN51i6tK6sx3d60eE-16-2647-3422
- ⏱ 2025-01-09 13:32:18
-
📌 对矩阵进行矩阵分解的主要方法有三种:特征值分解(Eigen Decomposition)、奇异值分解(Singular Value Decomposition,SVD)和梯度下降(Gradient Descent)。其中,特征值分解只能作用于方阵,显然不适用于分解用户-物品矩阵。奇异值分解的具体描述如下:假设矩阵M是一个m× n的矩阵,则一定存在一个分解M=UΣVT,其中U是m×m的正交矩阵,V是n×n的正交矩阵,Σ是m×n的对角阵。取对角阵Σ中较大的k个元素作为隐含特征,删除Σ的其他维度及U和V中对应的维度,矩阵M被分解为M≈Um×kΣk×kVk×nT,至此完成了隐向量维度为k的矩阵分解。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-16-5196-8360
- ⏱ 2025-01-09 13:39:45
-
📌 1)奇异值分解要求原始的共现矩阵是稠密的。互联网场景下大部分用户的行为历史非常少,用户-物品的共现矩阵非常稀疏,这与奇异值分解的应用条件相悖。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-16-8497-8568
- ⏱ 2025-01-09 13:40:34
-
📌 2)传统奇异值分解的计算复杂度达到了O(mn2)的级别[4],这对于商品数量动辄上百万、用户数量往往上千万的互联网场景来说几乎是不可接受的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-16-8634-8905
- ⏱ 2025-01-09 13:41:35
-
📌 因此,梯度下降法成了进行矩阵分解的主要方法 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-16-8983-9004
- ⏱ 2025-01-09 13:41:55
-
📌 为了消除用户和物品打分的偏差(Bias),常用的做法是在矩阵分解时加入用户和物品的偏差向量,如(式2-10)所示。[插图]其中μ是全局偏差常数, bi是物品偏差系数,可使用物品i收到的所有评分的均值, bu是用户偏差系数,可使用用户u给出的所有评分的均值 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-16-15576-16403
- ⏱ 2025-01-09 13:52:05
2.4 逻辑回归——融合多种特征的推荐模型
-
📌 逻辑回归模型将推荐问题转换成了一个点击率(Click Through Rate,CTR)预估问题。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-17-890-939
- ⏱ 2025-01-09 14:02:46
-
📌 利用“点击”概率对所有候选物品进行排序,得到推荐列表。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-17-1443-1470
- ⏱ 2025-01-09 14:24:06
2.5 从FM到FFM——自动特征交叉的解决方案
-
📌 在对样本集合进行分组研究时,在分组比较中都占优势的一方,在总评中有时反而是失势的一方,这种有悖常理的现象,被称为“辛普森悖论”。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-18-781-845
- ⏱ 2025-01-09 14:35:39
-
📌 FM为每个特征学习了一个隐权重向量(latent vector)。在特征交叉时,使用两个特征隐向量的内积作为交叉特征的权重。[插图] ^CB-AhC7Mk7MN51i6tK6sx3d60eE-18-6576-6675
- ⏱ 2025-01-09 14:45:13
-
📌 FM在2012—2014年前后,成为业界主流的推荐模型之一。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-18-8160-8190
- ⏱ 2025-01-09 14:54:08
-
📌 相比FM模型,FFM模型引入了特征域感知(field-aware)这一概念 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-18-8459-8496
- ⏱ 2025-01-09 15:09:06
-
📌 假设在训练推荐模型过程中接收到的训练样本如图2-11所示。[插图]图2-11 训练样本示例其中,Publisher、Advertiser、Gender 是三个特征域,ESPN、NIKE、Male分别是这三个特征域的特征值(还需要转换成one-hot特征)。如果按照FM的原理,特征ESPN、NIKE 和Male 都有对应的隐向量wESPN,wNIKE,wMale,那么ESPN特征与NIKE特征、ESPN特征与Male特征做交叉的权重应该是wESPN · wNIKE和wESPN · wMale。其中,ESPN对应的隐向量wESPN在两次特征交叉过程中是不变的。而在FFM中,ESPN 与NIKE、ESPN 与Male 交叉特殊的权重分别是wESPN,A · wNIKE,P和wESPN,G · wMale,P。细心的读者肯定已经注意到,ESPN在与NIKE和Male交叉时分别使用了不同的隐向量wESPN,A和wESPN,G,这是由于NIKE 和Male 分别在不同的特征域Advertiser(A)和Gender(G)导致的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-18-12621-14841
- ⏱ 2025-01-09 15:11:38
2.6 GBDT+LR——特征工程模型化的开端
-
📌 GBDT的基本结构是决策树组成的树林(如图2-16所示),学习的方式是梯度提升。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-19-1665-1705
- ⏱ 2025-01-09 15:30:41
-
📌 GBDT通过逐一生成决策子树的方式生成整个树林,生成新子树的过程是利用样本标签值与当前树林预测值之间的残差,构建新的子树。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-19-2527-2588
- ⏱ 2025-01-09 15:33:03
-
📌 理论上,如果可以无限生成决策树,那么GBDT可以无限逼近由所有训练集样本组成的目标拟合函数,从而达到减小预测误差的目的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-19-5024-5084
- ⏱ 2025-01-09 15:35:39
-
📌 一个训练样本在输入GBDT的某一子树后,会根据每个节点的规则最终落入某一叶子节点,把该叶子节点置为1,其他叶子节点置为0,所有叶子节点组成的向量即形成了该棵树的特征向量,把GBDT所有子树的特征向量连接起来,即形成了后续LR模型输入的离散型特征向量。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-19-5509-5634
- ⏱ 2025-01-09 15:50:48
-
📌 [插图]图2-17 GBDT生成特征向量的过 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-19-5907-6248
- ⏱ 2025-01-09 15:51:02
2.7 LS-PLM——阿里巴巴曾经的主流推荐模型
-
📌 为了让CTR模型对不同用户群体、不同使用场景更有针对性,其采用的方法是先对全量样本进行聚类,再对每个分类施以逻辑回归模型进行CTR预估。LS-PLM的实现思路就是由该灵感产生的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-20-1352-1441
- ⏱ 2025-01-09 15:59:20
-
📌 这里用一个二维的例子来解释为什么L1范数更容易产生稀疏性。L2范数|w1|2+|w2|2的曲线如图2-19(a)的红色圆形,L1 范数|w1|+|w2|的曲线如图2-19(b)红色菱形。用蓝色曲线表示不加正则化项的模型损失函数曲线。[插图]图2-19 L1范数和L2范数与损失函数“损失等高线”示意图求解加入正则化项的损失函数最小值,就是求解红圈上某一点和蓝圈上某一点之和的最小值。这个值通常在红色曲线和蓝色曲线的相切处(如果不在相切处,那么至少有两点值相同,与极值的定义矛盾),而L1范数曲线更容易与蓝色曲线在顶点处相交,这就导致除了相切处的维度不为零,其他维度的权重均为0,从而容易产生模型的稀疏解。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-20-3945-5132
- ⏱ 2025-01-09 16:03:49
2.8 总结——深度学习推荐系统的前夜
- 📌 表2-4 传统推荐模型的特点总结 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-21-744-760
- ⏱ 2025-01-09 16:07:07
3.2 AutoRec——单隐层神经网络推荐模型
-
📌 AutoRec模型是一个标准的自编码器,它的基本原理是利用协同过滤中的共现矩阵,完成物品向量或者用户向量的自编码。再利用自编码的结果得到用户对物品的预估评分,进而进行推荐排序。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-25-900-988
- ⏱ 2025-01-09 17:51:34
-
📌 假设其数据向量为r,自编码器的作用是将向量r作为输入,通过自编码器后,得到的输出向量尽量接近其本身。假设自编码器的重建函数为h(r;θ),那么自编码器的目标函数如(式3-1)所示。[插图]其中,S是所有数据向量的集合。在完成自编码器的训练后,就相当于在重建函数h(r;θ)中存储了所有数据向量的“精华”。一般来说,重建函数的参数数量远小于输入向量的维度数量,因此自编码器相当于完成了数据压缩和降维的工作。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-25-1143-2053
- ⏱ 2025-01-09 17:27:44
-
📌 AutoRec使用单隐层神经网络的结构来解决构建重建函数的问题。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-25-3531-3563
- ⏱ 2025-01-09 17:44:47
-
📌 与2.2节介绍的协同过滤算法一样,AutoRec也分为基于物品的AutoRec和基于用户的AutoRec。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-25-12014-12067
- ⏱ 2025-01-09 17:50:24
3.3 Deep Crossing模型——经典的深度学习架构
-
📌 Embedding 层的作用是将稀疏的类别型特征转换成稠密的Embedding向量。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-26-3350-3392
- ⏱ 2025-01-09 18:00:27
-
📌 一般来说,Embedding向量的维度应远小于原始的稀疏特征向量,几十到上百维一般就能满足需求。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-26-3729-3777
- ⏱ 2025-01-09 18:00:59
-
📌 通过多层残差网络对特征向量各个维度进行充分的交叉组合,使模型能够抓取到更多的非线性特征和组合特征的信息 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-26-4406-4457
- ⏱ 2025-01-09 18:02:52
-
📌 图3-7 残差单元的具体结构 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-26-5014-5028
- ⏱ 2025-01-09 18:11:33
-
📌 残差单元中的两层ReLU网络 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-26-5330-5344
- ⏱ 2025-01-09 18:10:22
-
📌 其实拟合的是输出和输入之间的“残差”(xo-xi),这就是残差神经网络名称的由来。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-26-5344-5560
- ⏱ 2025-01-09 18:10:16
-
📌 对于CTR 预估这类二分类问题,Scoring 层往往使用的是逻辑回归模型,而对于图像分类等多分类问题,Scoring层往往采用softmax模型。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-26-6093-6167
- ⏱ 2025-01-09 18:12:24
3.4 NeuralCF模型——CF与深度学习的结合
-
📌 从深度学习的视角看待矩阵分解模型,那么矩阵分解层的用户隐向量和物品隐向量完全可以看作一种Embedding方法。最终的“Scoring层”就是将用户隐向量和物品隐向量进行内积操作后得到“相似度”,这里的“相似度”就是对评分的预测。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-27-1012-1127
- ⏱ 2025-01-09 18:21:02
-
📌 NeuralCF 用“多层神经网络+输出层”的结构替代了矩阵分解模型中简单的内积操作。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-27-1901-1944
- ⏱ 2025-01-09 18:22:50
-
📌 事实上,用户和物品向量的互操作层可以被任意的互操作形式所代替,这就是所谓的“广义矩阵分解”模型(Generalized Matrix Factorization)。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-27-2455-2537
- ⏱ 2025-01-09 18:24:07
3.5 PNN模型——加强特征交叉能力
-
📌 PNN模型用乘积层(Product Layer)代替了Deep Crossing模型中的Stacking层 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-28-1115-1168
- ⏱ 2025-01-10 21:19:10
-
📌 具体地说,PNN模型的乘积层由内积操作部分(图3-12中乘积层的z部分)和外积(outer product)操作部分(图3-12中乘积层的p 部分)组成 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-28-1965-2041
- ⏱ 2025-01-10 21:19:51
-
📌 平均池化的操作经常发生在同类Embedding上,例如,将用户浏览过的多个物品的Embedding进行平均。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-28-5241-5295
- ⏱ 2025-01-10 21:23:44
3.6 Wide&Deep模型——记忆能力和泛化能力的综合
-
📌 Wide&Deep模型的主要思路正如其名,是由单层的Wide部分和多层的Deep部分组成的混合模型。其中,Wide部分的主要作用是让模型具有较强的“记忆能力”(memorization);Deep部分的主要作用是让模型具有“泛化能力”(generalization) ^CB-AhC7Mk7MN51i6tK6sx3d60eE-29-676-809
- ⏱ 2025-01-10 21:26:38
-
📌 图3-13 Wide&Deep模型的结构图Wide&Deep模型把单输入层的Wide部分与由Embedding层和多隐层组成的Deep部分连接起来,一起输入最终的输出层。单层的Wide部分善于处理大量稀疏的id类特征;Deep部分利用神经网络表达能力强的特点,进行深层的特征交叉,挖掘藏在特征背后的数据模式。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-29-3137-3340
- ⏱ 2025-01-10 21:39:33
-
📌 最终,利用逻辑回归模型,输出层将Wide部分和Deep部分组合起来,形成统一的模型。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-29-3340-3382
- ⏱ 2025-01-10 21:39:39
-
📌 Wide 部分的输入仅仅是已安装应用和曝光应用两类特征,其中已安装应用代表用户的历史行为,而曝光应用代表当前的待推荐应用。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-29-4243-4304
- ⏱ 2025-01-10 21:39:00
-
📌 Deep&Cross模型的结构图如图3-15所示,其主要思路是使用Cross网络替代原来的Wide部分 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-29-6060-6111
- ⏱ 2025-01-10 21:42:08
-
📌 设计Cross网络的目的是增加特征之间的交互力度,使用多层交叉层(Cross layer)对输入向量进行特征交叉。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-29-6599-6656
- ⏱ 2025-01-10 21:43:22
-
📌 图3-16 交叉层的操作 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-29-7985-7997
- ⏱ 2025-01-10 21:47:49
3.7 FM与深度学习模型的结合
-
📌 在深度学习网络中,Embedding层的作用是将稀疏输入向量转换成稠密向量,但Embedding层的存在往往会拖慢整个神经网络的收敛速度,原因有两个:(1)Embedding层的参数数量巨大。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-30-1736-1872
- ⏱ 2025-01-11 11:16:27
-
📌 (2)由于输入向量过于稀疏,在随机梯度下降的过程中,只有与非零特征相连的Embedding 层权重会被更新 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-30-2229-2282
- ⏱ 2025-01-11 11:16:51
-
📌 针对Embedding层收敛速度的难题,FNN模型的解决思路是用FM模型训练好的各特征隐向量初始化Embedding 层的参数 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-30-2366-2429
- ⏱ 2025-01-11 11:24:38
-
📌 DeepFM对Wide&Deep模型的改进之处在于,它用FM 替换了原来的Wide 部分,加强了浅层网络部分特征组合的能力 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-30-5973-6034
- ⏱ 2025-01-11 11:23:47
-
📌 NFM模型的主要思路是用一个表达能力更强的函数替代原FM中二阶隐向量内积的部分(如图3-20所示) ^CB-AhC7Mk7MN51i6tK6sx3d60eE-30-6840-6889
- ⏱ 2025-01-11 11:30:34
-
📌 NFM 网络架构的特点非常明显,就是在Embedding 层和多层神经网络之间加入特征交叉池化层(Bi-Interaction Pooling Layer) ^CB-AhC7Mk7MN51i6tK6sx3d60eE-30-8033-8111
- ⏱ 2025-01-11 11:33:23
-
📌 在进行两两Embedding向量的元素积操作后,对交叉特征向量取和,得到池化层的输出向量。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-30-9141-9186
- ⏱ 2025-01-11 11:33:47
3.8 注意力机制在推荐模型中的应用
-
📌 AFM模型使用了一个在两两特征交叉层(Pair-wise Interaction Layer)和池化层之间的注意力网络来生成注意力得分。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-31-3510-3578
- ⏱ 2025-01-11 21:05:13
-
📌 使用一个注意力激活单元(activation unit)来生成注意力得分 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-31-8572-8608
- ⏱ 2025-01-11 21:16:44
-
📌 激活单元的输入层是两个Embedding 向量,经过元素减(element-wise minus)操作后,与原Embedding向量一同连接后形成全连接层的输入,最后通过单神经元输出层生成注意力得分。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-31-8700-8800
- ⏱ 2025-01-11 21:16:02
-
📌 注意力机制在数学形式上只是将过去的平均操作或加和操作换成了加权和或者加权平均操作。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-31-9184-9225
- ⏱ 2025-01-11 21:18:15
3.9 DIEN——序列模型与推荐系统的结合
-
📌 既然是时间相关的序列,就一定存在或深或浅的前后依赖关系,这样的序列信息对于推荐过程无疑是有价值的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-32-955-1004
- ⏱ 2025-01-11 21:21:12
-
📌 序列信息的重要性在于:(1)它加强了最近行为对下次行为预测的影响。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-32-1280-1353
- ⏱ 2025-01-11 21:22:36
-
📌 2)序列模型能够学习到购买趋势的信息。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-32-1437-1456
- ⏱ 2025-01-11 21:22:49
-
📌 如果放弃序列信息,则模型学习时间和趋势这类信息的能力就不会那么强,推荐模型就仍然是基于用户所有购买历史的综合推荐,而不是针对“下一次购买”推荐。显然,从业务的角度看,后者才是推荐系统正确的推荐目标。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-32-1607-1706
- ⏱ 2025-01-11 21:28:12
-
📌 兴趣抽取层的基本结构是GRU(Gated Recurrent Unit,门循环单元)网络。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-32-3349-3394
- ⏱ 2025-01-11 21:34:21
-
📌 DIEN 在模拟兴趣进化的过程中,需要考虑与目标广告的相关性。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-32-5464-5495
- ⏱ 2025-01-11 21:39:24
-
📌 兴趣进化层完成注意力机制的引入是通过AUGRU(GRU with Attentional Update gate,基于注意力更新门的GRU)结构 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-32-5779-5851
- ⏱ 2025-01-11 21:41:08
3.10 强化学习与推荐系统的结合
-
📌 “行动-反馈-状态更新”的循环 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-33-752-767
- ⏱ 2025-01-11 21:47:03
-
📌 对一个新闻推荐系统来说,“行动”指的就是推荐系统进行新闻排序后推送给用户的动作。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-33-2149-2189
- ⏱ 2025-01-11 21:51:01
-
📌 “状态”可以被看作已收到的、可用于训练的所有数据的集合。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-33-2529-2557
- ⏱ 2025-01-11 21:54:45
-
📌 在这样的强化学习框架下,模型的学习过程可以不断地迭代,迭代过程主要有如下几步:(1)初始化推荐系统(智能体)。(2)推荐系统基于当前已收集的数据(状态)进行新闻排序(行动),并推送到网站或App(环境)中。(3)用户收到推荐列表,点击或者忽略(反馈)某推荐结果。(4)推荐系统收到反馈,更新当前状态或通过模型训练更新模型。(5)重复第2步。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-33-2597-2967
- ⏱ 2025-01-11 21:57:40
-
📌 Deep Q-Network (深度Q 网络,简称DQN),其中Q 是Quality的简称,指通过对行动进行质量评估,得到行动的效用得分,以此进行行动决策。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-33-3306-3384
- ⏱ 2025-01-11 22:20:35
-
📌 DQN的网络结构如图3-27所示,在特征工程中套用强化学习状态向量和行动向量的概念,把用户特征(user features)和环境特征(context features)归为状态向量,因为它们与具体的行动无关;把用户-新闻交叉特征和新闻特征归为行动特征,因为其与推荐新闻这一行动相关。[插图]图3-27 DQN的模型结构图用户特征和环境特征经过左侧多层神经网络的拟合生成价值(value)得分V(s),利用状态向量和行动向量生成优势(advantage)得分A(s,a),最后把两部分得分综合起来,得到最终的质量得分Q(s,a)。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-33-3424-4533
- ⏱ 2025-01-11 22:25:03
-
📌 模型主更新操作可以理解为利用历史数据的重新训练 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-33-7706-7729
- ⏱ 2025-01-11 22:31:23
-
📌 DRN的在线学习方法——竞争梯度下降算法的流程如图3-29所示。[插图]图3-29 DRN的在线学习方法其主要步骤如下:(1)对于已经训练好的当前网络Q,对其模型参数W 添加一个较小的随机扰动ΔW,得到新的模型参数[插图],这里称[插图]对应的网络为探索网络[插图]。(2)对于当前网络Q和探索网络[插图],分别生成推荐列表L和[插图],用Interleaving(7.5节将详细介绍)将两个推荐列表组合成一个推荐列表后推送给用户。(3)实时收集用户反馈。如果探索网络[插图]生成内容的效果好于当前网络Q,则用探索网络代替当前网络,进入下一轮迭代;反之则保留当前网络。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-33-7995-10967
- ⏱ 2025-01-11 22:35:53
第4章 Embedding技术在推荐系统中的应用
- 📌 Embedding,中文直译为“嵌入”,常被翻译为“向量化”或者“向量映射”。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-36-563-602
- ⏱ 2025-01-11 22:52:28
4.1 什么是Embedding
- 📌 Embedding 更适用于对海量备选物品进行快速“初筛”,过滤出几百到几千量级的物品交由深度学习网络进行“精排” ^CB-AhC7Mk7MN51i6tK6sx3d60eE-37-3526-3583
- ⏱ 2025-01-13 10:30:19
4.2 Word2vec——经典的Embedding方法
-
📌 为了训练Word2vec模型,需要准备由一组句子组成的语料库。假设其中一个长度为T的句子为w1,w2,…,wT,假定每个词都跟其相邻的词的关系最密切,即每个词都是由相邻的词决定的(图4-2中CBOW模型的主要原理),或者每个词都决定了相邻的词(图4-2中Skip-gram模型的主要原理)。如图4-2所示,CBOW模型的输入是ωt周边的词,预测的输出是ωt,而Skip-gram则相反。经验上讲,Skip-gram的效果较好。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-38-1068-1765
- ⏱ 2025-01-13 10:34:50
-
📌 图4-2 Word2vec的两种模型结构CBOW和Skip-gram ^CB-AhC7Mk7MN51i6tK6sx3d60eE-38-2163-2197
- ⏱ 2025-01-13 10:32:32
-
📌 为了基于语料库生成模型的训练样本,选取一个长度为2c+1(目标词前后各选c个词)的滑动窗口,从语料库中抽取一个句子,将滑动窗口由左至右滑动,每移动一次,窗口中的词组就形成了一个训练样本。有了训练样本,就可以着手定义优化目标了。既然每个词wt都决定了相邻词wt+j,基于极大似然估计的方法,希望所有样本的条件概率p(wt+j|wt)之积最大,这里使用对数概率。因此,Word2vec的目标函数如(式4-1)所示。[插图]接下来的核心问题是如何定义p(wt+j|wt),作为一个多分类问题,最直接的方法是使用softmax 函数。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-38-2355-4656
- ⏱ 2025-01-13 10:39:30
-
📌 如(式4-2)所示,其中wO代表wt+j,被称为输出词;wI代表wt,被称为输入词。[插图] ^CB-AhC7Mk7MN51i6tK6sx3d60eE-38-6309-7211
- ⏱ 2025-01-13 10:39:53
-
📌 输入向量表达就是输入层(input layer)到隐层(hidden layer)的权重矩阵wV×N,而输出向量表达就是隐层到输出层(output layer)的权重矩阵[插图]。在获得输入向量矩阵wV×N后,其中每一行对应的权重向量就是通常意义上的“词向量”。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-38-9297-9959
- ⏱ 2025-01-13 11:00:08
-
📌 为了减轻Word2vec的训练负担,往往采用负采样(Negative Sampling)的方法进行训练。相比原来需要计算所有字典中所有词的预测误差,负采样方法只需要对采样出的几个负样本计算预测误差。在此情况下,Word2vec模型的优化目标从一个多分类问题退化成了一个近似二分类问题[4],如(式4-3)所示。[插图]其中[插图]是输出词向量(及正样本),h是隐层向量,Wneg是负样本集合,[插图]是负样本词向量。由于负样本集合的大小非常有限(在实际应用中通常小于10),在每轮梯度下降的迭代中,计算复杂度至少可以缩小为原来的1/1000(假设词表大小为10000)。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-38-10942-12395
- ⏱ 2025-01-13 11:05:29
4.3 Item2vec——Word2vec在推荐系统领域的推广
-
📌 既然Word2vec 可以对词“序列”中的词进行Embedding,那么对于用户购买“序列”中的一个商品,用户观看“序列”中的一个电影,也应该存在相应的Embedding方法,这就是Item2vec[6]方法的基本思想。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-39-633-796
- ⏱ 2025-01-13 11:12:12
-
📌 由于Word2vec的流行,越来越多的Embedding方法可以被直接用于物品Embedding向量的生成,而用户Embedding 向量则更多通过行为历史中的物品Embedding 平均或者聚类得到。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-39-1051-1152
- ⏱ 2025-01-13 11:14:32
-
📌 相比Word2vec 利用“词序列”生成词Embedding。Item2vec 利用的“物品序列”是由特定用户的浏览、购买等行为产生的历史行为记录序列。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-39-1299-1375
- ⏱ 2025-01-13 11:16:58
-
📌 在广告场景下的双塔模型中,广告侧的模型结构实现的其实就是对物品进行Embedding的过程。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-39-3476-3522
- ⏱ 2025-01-13 11:23:14
4.4 Graph Embedding——引入更多结构信息的图嵌入技术
-
📌 Word2vec和由其衍生出的Item2vec是Embedding技术的基础性方法,但二者都是建立在“序列”样本(比如句子、用户行为序列)的基础上的。在互联网场景下,数据对象之间更多呈现的是图结构。典型的场景是由用户行为数据生成的物品关系图(如图4-6(a)(b)所示),以及由属性和实体组成的知识图谱(Knowledge Graph)(如图4-6(c)所示)。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-575-756
- ⏱ 2025-01-13 11:26:07
-
📌 早期,影响力较大的Graph Embedding方法是于2014年提出的DeepWalk[7],它的主要思想是在由物品组成的图结构上进行随机游走,产生大量物品序列,然后将这些物品序列作为训练样本输入Word2vec 进行训练,得到物品的Embedding。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-1643-1824
- ⏱ 2025-01-13 11:32:35
-
📌 Node2vec模型[8],它通过调整随机游走权重的方法使Graph Embedding的结果更倾向于体现网络的同质性(homophily)或结构性(structural equivalence) ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-5272-5423
- ⏱ 2025-01-14 12:09:16
-
📌 网络的“同质性”指的是距离相近节点的Embedding应尽量近似,如图4-8所示,节点u 与其相连的节点s1、s2、s3、s4的Embedding 表达应该是接近的 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-5469-5973
- ⏱ 2025-01-13 11:39:33
-
📌 “结构性”指的是结构上相似的节点的Embedding 应尽量近似,图4-8中节点U 和节点s6都是各自局域网络的中心节点,结构上相似,其Embedding的表达也应该近似 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-6028-6259
- ⏱ 2025-01-13 11:38:19
-
📌 为了使Graph Embedding的结果能够表达网络的“结构性”,在随机游走的过程中,需要让游走的过程更倾向于BFS,因为BFS 会更多地在当前节点的邻域中游走遍历,相当于对当前节点周边的网络结构进行一次“微观扫描”。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-6711-6821
- ⏱ 2025-01-13 11:40:38
-
📌 为了表达“同质性”,需要让随机游走的过程更倾向于DFS,因为DFS更有可能通过多次跳转,游走到远方的节点上,但无论怎样,D F S的游走更大概率会在一个大的集团内部进行,这就使得一个集团或者社区内部的节点的Embedding更为相似 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-6946-7062
- ⏱ 2025-01-13 11:44:33
-
📌 参数p被称为返回参数(return parameter),p越小,随机游走回节点t的可能性越大,Node2vec就更注重表达网络的结构性。参数q被称为进出参数(in-out parameter),q 越小,随机游走到远方节点的可能性越大,Node2vec 就更注重表达网络的同质性 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-9683-10093
- ⏱ 2025-01-14 12:34:31
-
📌 Node2vec 所体现的网络的同质性和结构性在推荐系统中可以被很直观的解释。同质性相同的物品很可能是同品类、同属性,或者经常被一同购买的商品,而结构性相同的物品则是各品类的爆款、各品类的最佳凑单商品等拥有类似趋势或者结构性属性的商品。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-10840-10958
- ⏱ 2025-01-14 12:39:14
-
📌 单纯使用用户行为生成的物品相关图,固然可以生成物品的Embedding,但是如果遇到新加入的物品,或者没有过多互动信息的“长尾”物品,则推荐系统将出现严重的冷启动问题。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-11486-11570
- ⏱ 2025-01-14 12:44:25
-
📌 生成Graph Embedding的第一步是生成物品关系图,通过用户行为序列可以生成物品关系图,也可以利用“相同属性”“相同类别”等信息建立物品之间的边,生成基于内容的知识图谱。而基于知识图谱生成的物品向量可以被称为补充信息Embedding向量。当然,根据补充信息类别的不同,可以有多个补充信息Embedding向量。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-11724-11884
- ⏱ 2025-01-14 12:44:53
-
📌 对不同Embedding进行加权平均操作 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-40-12443-12463
- ⏱ 2025-01-14 12:47:53
4.5 Embedding与深度学习推荐系统的结合
-
📌 作为深度学习推荐系统不可分割的一部分,Embedding技术主要应用在如下三个方向。(1)在深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换。(2)作为预训练的Embedding特征向量,与其他特征向量连接后,一同输入深度学习网络进行训练。(3)通过计算用户和物品的Embedding相似度,Embedding可以直接作为推荐系统的召回层或者召回策略之一。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-41-636-953
- ⏱ 2025-01-14 12:50:55
-
📌 为了解决“Embedding层训练开销巨大”的问题,Embedding的训练往往独立于深度学习网络进行。在得到稀疏特征的稠密表达之后,再与其他特征一起输入神经网络进行训练。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-41-3085-3171
- ⏱ 2025-01-14 12:54:16
4.6 局部敏感哈希——让Embedding插上翅膀的快速搜索方法
-
📌 局部敏感哈希(Locality Sensitive Hashing,LSH) ^CB-AhC7Mk7MN51i6tK6sx3d60eE-42-2204-2275
- ⏱ 2025-01-14 14:44:00
-
📌 局部敏感哈希的基本思想是让相邻的点落入同一个“桶”,这样在进行最近邻搜索时,仅需要在一个桶内,或相邻的几个桶内的元素中进行搜索即可。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-42-2445-2511
- ⏱ 2025-01-14 14:45:12
-
📌 在欧式空间中,将高维空间的点映射到低维空间,原本相近的点在低维空间中肯定依然相近,但原本远离的点则有一定概率变成相近的点。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-42-3533-3594
- ⏱ 2025-01-14 14:47:40
-
📌 对于Embedding向量来说,也可以用内积操作构建局部敏感哈希桶。假设v是高维空间中的k维Embedding向量,x是随机生成的k维映射向量。如(式4-7)所示,内积操作可将v映射到一维空间,成为一个数值。[插图] ^CB-AhC7Mk7MN51i6tK6sx3d60eE-42-3713-4124
- ⏱ 2025-01-14 14:49:48
-
📌 采用m个哈希函数同时进行分桶。同时掉进m个哈希函数的同一个桶的两点,是相似点的概率将大大增加。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-42-5591-5746
- ⏱ 2025-01-14 14:54:39
-
📌 采用多个哈希函数进行分桶,存在一个待解决的问题:到底是通过“与”(And)操作还是“或”(Or)操作生成最终的候选集。如果通过“与”操作(“点A和点B在哈希函数1的同一桶中”并且“点A和点B在哈希函数2的同一桶中”)生成候选集,那么候选集中近邻点的准确率将提高,候选集的规模减小使需要遍历计算的量降低,减少了整体的计算开销,但有可能会漏掉一些近邻点(比如分桶边界附近的点);如果通过“或”操作(“点A和点B在哈希函数1的同一桶中”或者“点A和点B在哈希函数2的同一桶中”)生成候选集,那么候选集中近邻点的召回率提高,但候选集的规模变大,计算开销升高。到底使用几个哈希函数,是用“与”操作还是“或”操作来生成近邻点的候选集,需要在准确率和召回率之间权衡,才能得出结论。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-42-5988-6321
- ⏱ 2025-01-14 15:37:44
5.1 推荐系统的特征工程
-
📌 1.用户行为数据 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-3090-3098
- ⏱ 2025-01-14 16:03:03
-
📌 用户行为在推荐系统中一般分为显性反馈行为(explicit feedback)和隐性反馈行为(implicit feedback)两种 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-3193-3260
- ⏱ 2025-01-14 16:00:19
-
📌 2.用户关系数据 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-4233-4241
- ⏱ 2025-01-14 16:03:11
-
📌 3.属性、标签类数据 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-5192-5202
- ⏱ 2025-01-14 16:05:47
-
📌 在推荐系统中使用属性、标签类数据,一般是通过multi-hot编码的方式将其转换成特征向量,一些重要的属性标签类特征也可以先转换成Embedding,再输入推荐模型。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-6323-6406
- ⏱ 2025-01-14 16:07:20
-
📌 4.内容类数据 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-6842-6849
- ⏱ 2025-01-14 16:07:38
-
📌 一般来说,内容类数据无法直接转换成推荐系统可以“消化”的特征,需要通过自然语言处理、计算机视觉等技术手段提取关键内容特征,再输入推荐系统。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-6999-7068
- ⏱ 2025-01-14 16:08:26
-
📌 5.上下文信息 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-7604-7611
- ⏱ 2025-01-14 16:09:00
-
📌 最常用的上下文信息是“时间”和通过GPS 获得的“地点”信息。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-7681-7712
- ⏱ 2025-01-14 16:09:34
-
📌 根据推荐场景的不同,上下文信息的范围极广,包含但不限于时间、地点、季节、月份、是否节假日、天气、空气质量、社会大事件等信息。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-7712-7774
- ⏱ 2025-01-14 16:09:45
-
📌 6.统计类特征 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-7974-7981
- ⏱ 2025-01-14 16:10:52
-
📌 统计类特征一般是连续型特征,仅需经过标准化归一化等处理就可以直接输入推荐系统进行训练。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-8070-8113
- ⏱ 2025-01-14 16:11:31
-
📌 7.组合类特征 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-8340-8347
- ⏱ 2025-01-14 16:12:14
-
📌 组合类特征是指将不同特征进行组合后生成的新特征。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-8387-8411
- ⏱ 2025-01-14 16:12:29
-
📌 1.连续型特征 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-8923-8930
- ⏱ 2025-01-14 16:18:37
-
📌 最常用的处理手段包括归一化、离散化、加非线性函数等方法。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-9030-9058
- ⏱ 2025-01-14 16:18:47
-
📌 归一化的主要目的是统一各特征的量纲,将连续特征归一到[0,1]区间。也可以做0均值归一化,即将原始数据集归一化为均值为0、方差为1的数据集。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-9098-9168
- ⏱ 2025-01-14 16:19:05
-
📌 离散化是通过确定分位数的形式将原来的连续值进行分桶,最终形成离散值的过程。离散化的主要目的是防止连续值带来的过拟合现象及特征值分布不均匀的情况。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-9208-9280
- ⏱ 2025-01-14 16:19:46
-
📌 加非线性函数的处理方法,是直接把原来的特征通过非线性函数做变换,然后把原来的特征及变换后的特征一起加入模型进行训练的过程。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-9374-9435
- ⏱ 2025-01-14 16:22:35
-
📌 2.类别型特征 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-9889-9896
- ⏱ 2025-01-14 16:23:36
-
📌 这类特征最常用的处理方法是使用one-hot编码将其转换成一个数值向量 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-9988-10023
- ⏱ 2025-01-14 16:23:50
-
📌 面对同一个特征域非唯一的类别选择,还可以采用multi-hot编码。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-46-10074-10108
- ⏱ 2025-01-14 16:24:04
5.2 推荐系统召回层的主要策略
-
📌 · 召回层:待计算的候选集合大、速度快、模型简单、特征较少,尽量让用户感兴趣的物品在这个阶段能够被快速召回,即保证相关物品的召回率。· 排序层:首要目标是得到精准的排序结果。需处理的物品数量少,可利用较多特征,使用比较复杂的模型。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-47-1535-1846
- ⏱ 2025-01-14 16:28:51
-
📌 目前工业界主流的召回方法是采用多个简单策略叠加的“多路召回策略”。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-47-2059-2092
- ⏱ 2025-01-14 16:29:19
-
📌 所谓“多路召回策略”,就是指采用不同的策略、特征或简单模型,分别召回一部分候选集,然后把候选集混合在一起供后续排序模型使用的策略。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-47-2232-2297
- ⏱ 2025-01-14 16:29:57
-
📌 4.5 节曾详细介绍了YouTube 推荐系统中利用深度学习网络生成的Embedding 作为召回层的方法。再加上可以使用局部敏感哈希进行快速的Embedding最近邻计算 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-47-3716-3802
- ⏱ 2025-01-14 16:36:21
5.3 推荐系统的实时性
-
📌 客户端是最接近用户的环节,也是能够实时收集用户会话内行为及所有上下文特征的地方。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-48-3415-3455
- ⏱ 2025-01-14 16:53:03
-
📌 流计算平台并非完全实时的平台,但它的优势是能够进行一些简单的统计类特征的计算 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-48-4294-4332
- ⏱ 2025-01-14 16:52:39
-
📌 增量更新的缺点是:增量更新的模型往往无法找到全局最优点,因此在实际的推荐系统中,经常采用增量更新与全局更新相结合的方式,在进行了几轮增量更新后,在业务量较小的时间窗口进行全局更新,纠正模型在增量更新过程中积累的误差。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-48-6645-6753
- ⏱ 2025-01-14 16:56:30
-
📌 对于物品Embedding的更新,一般需要全局的数据,因此只能在服务器端进行更新;而对用户Embedding来说,则更多依赖用户自身的数据。那么把用户Embedding的更新过程移植到客户端来做,能实时地把用户最近的行为数据反映到用户的Embedding中来,从而可以在客户端通过实时改变用户Embedding的方式完成推荐结果的实时更新。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-48-8691-8861
- ⏱ 2025-01-14 17:07:59
5.6 冷启动的解决办法
-
📌 冷启动问题根据数据匮乏情况的不同,主要分为三类:(1)用户冷启动,新用户注册后,没有历史行为数据时的个性化推荐。(2)物品冷启动,系统加入新物品后(新的影片、新的商品等),在该商品还没有交互记录时,如何将该物品推荐给用户。(3)系统冷启动,在推荐系统运行之初,缺乏所有相关历史数据时的推荐。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-677-1098
- ⏱ 2025-01-14 17:28:33
-
📌 在冷启动过程中,由于数据的缺乏,个性化推荐引擎无法有效工作,自然可以让系统回退到“前推荐系统”时代,采用基于规则的推荐方法。例如,在用户冷启动场景下,可以使用“热门排行榜”“最近流行趋势”“最高评分”等榜单作为默认的推荐列表。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-1532-1645
- ⏱ 2025-01-14 17:30:12
-
📌 更进一步,可以参考专家意见建立一些个性化物品列表,根据用户有限的信息,例如注册时填写的年龄、性别、基于IP 推断出的地址等信息做粗粒度的规则推荐。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-1719-1792
- ⏱ 2025-01-14 17:31:12
-
📌 在物品冷启动场景下,可以根据一些规则找到该物品的相似物品,利用相似物品的推荐逻辑完成物品的冷启动过程。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-1921-1972
- ⏱ 2025-01-14 17:31:42
-
📌 在历史数据特征缺失的情况下,推荐系统仍然可以凭借用户和物品的属性特征完成较粗粒度的推荐。这类属性特征主要包括以下几类:(1)用户的注册信息。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-2854-3016
- ⏱ 2025-01-14 17:35:36
-
📌 2)第三方DMP(Data Management Platform,数据管理平台)提供的用户信息。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-3105-3206
- ⏱ 2025-01-14 17:35:41
-
📌 这些第三方数据管理平台不仅可以提供基本的人口属性特征,通过与大量应用、网站的数据交换,甚至可以提供脱敏的用户兴趣、收入水平、广告倾向等一系列的高阶特征。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-3273-3349
- ⏱ 2025-01-14 17:35:51
-
📌 3)物品的内容特征。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-3390-3452
- ⏱ 2025-01-14 17:36:16
-
📌 (4)引导用户输入的冷启动特征。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-3618-3686
- ⏱ 2025-01-14 17:36:22
-
📌 主动学习的学习目标是尽可能快速地定位所有物品可能的打分。可以看到,所有影片聚成了a、b、c、d4类,聚类的大小不一。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-7209-7483
- ⏱ 2025-01-14 17:41:52
-
📌 通过主动问询用户对d中心节点的打分,可以得到用户对最大聚类d的反馈,使推荐系统的收益最大。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-7633-7786
- ⏱ 2025-01-14 17:42:06
-
📌 探索与利用是在“探索新数据”和“利用旧数据”之间进行平衡 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-9381-9409
- ⏱ 2025-01-14 18:03:30
-
📌 这里以最经典的探索与利用方法UCB(Upper Confidence Bound,置信区间上界)[7]讲解探索与利用的原理。(式5-2)是用UCB方法计算每个物品的得分的公式。其中xj为观测到的第j个物品的平均回报(这里的平均回报可以是点击率、转化率、播放率等),nj为目前为止向用户曝光第j 个物品的次数,n 为到目前为止曝光所有物品的次数之和。[插图]通过简单计算可知,当物品的平均回报高时,UCB的得分会高;同时,当物品的曝光次数低时,UCB的得分也会高。也就是说,使用UCB方法进行推荐,推荐系统会倾向于推荐“效果好”或者“冷启动”的物品。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-51-9524-10596
- ⏱ 2025-01-14 18:07:18
5.7 探索与利用
-
📌 传统的探索与利用方法要解决的其实是一个多臂老虎机问题(Multi-Armed Bandit problem,MAB)。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-1858-1917
- ⏱ 2025-01-14 19:07:57
-
📌 一个人看到一排老虎机(一种有一个摇臂的机器,投入一定金额,摇动摇臂,随机获得一定收益),它们的外表一模一样,但每个老虎机获得回报的期望不同,刚开始这个人不知道这些老虎机获得回报的期望和概率分布,如果有N次机会,按什么顺序选择老虎机可以收益最大化呢?这就是多臂老虎机问题(如图5-17所示)。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-2010-2209
- ⏱ 2025-01-14 19:13:55
-
📌 在推荐系统中,每个候选物品就是一台老虎机,系统向用户推荐物品就相当于选择老虎机的过程。推荐系统当然希望向用户推荐收益大的老虎机,以获得更好的整体收益。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-2641-2716
- ⏱ 2025-01-14 19:14:35
-
📌 解决传统多臂老虎机问题的主要算法有ε-Greedy、Thompson Sampling和UCB。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-2918-3020
- ⏱ 2025-01-14 19:17:03
-
📌 -Greedy算法的主要流程是:选一个[0,1]的数ε,每次以ε的概率在所有老虎机中进行随机选择,以(1-ε)的概率选择截至当前平均收益最大的老虎机,在摇臂后,根据回报值对老虎机的回报期望进行更新。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-3214-3475
- ⏱ 2025-01-14 19:17:35
-
📌 Thompson Sampling[8]是一种经典的启发式探索与利用算法。该算法假设每个老虎机能够赢钱(这里假设赢钱的数额一致)的概率是p,同时概率p的分布符合beta(win,lose)分布,每个老虎机都维护一组beta分布的参数,即win,lose。每次试验后,选中一个老虎机,摇臂后,有收益(这里假设收益是二值的,0或1)则该老虎机的win参数增加1,否则该老虎机的lose参数增加1。每次选择老虎机的方式是:利用每个老虎机现有的beta分布产生一个随机数b,逐一生成每个老虎机的随机数,选择随机数中最大的那个老虎机进行尝试。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-4396-4917
- ⏱ 2025-01-14 19:22:52
-
📌 代码5-2 Thompson Sampling算法流程的伪代码 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-5040-5071
- ⏱ 2025-01-14 19:34:04
-
📌 需要进一步解释的是——为什么可以假设赢钱的概率p服从beta分布,到底什么是beta分布?beta分布是伯努利分布的共轭先验分布,因为掷硬币的过程是标准的伯努利过程,如果为硬币正面的概率指定一个先验分布,那么这个分布就是beta分布。CTR的场景和掷硬币都可以看作伯努利过程(可以把CTR问题看成一个掷偏心硬币的过程,点击率就是硬币正面的概率),因此Thompson Sampling算法同样适用于CTR等推荐场景。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-5434-5696
- ⏱ 2025-01-14 19:29:07
-
📌 UCB是经典的启发式探索与利用算法 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-6814-6831
- ⏱ 2025-01-14 19:37:10
-
📌 其算法流程如下:(1)假设有K 个老虎机,对每个老虎机进行随机摇臂m 次,获得老虎机j收益的初始化经验期望[插图]。(2)用t表示至今摇臂的总次数,用nj表示第j个老虎机至今被摇臂的次数,计算每个老虎机的UCB值:插图选择UCB值最大的老虎机i摇臂,并观察其收益Xi,t。(4)根据Xi,t更新老虎机i的收益期望值x-i。(5)重复第2步。UCB算法的重点是UCB值的计算方法,(式5-3)中[插图]指的是老虎机j 之前实验的收益期望,这部分可以被看作“利用”的分值;而[插图]就是所谓的置信区间宽度,代表了“探索”的分值。二者相加就是老虎机j的置信区间上界。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-6902-9927
- ⏱ 2025-01-14 19:41:16
-
📌 UCB的公式是基于霍夫丁不等式(Hoeffding Inequality)推导而来的。假设有N个范围在0到1的独立有界随机变量,X1,X2,…,Xn,那么这n个随机变量的经验期望为[插图]满足如(式5-4)所示的不等式:[插图]这就是霍夫丁不等式。那么,霍夫丁不等式和UCB的上界有什么关系呢?令[插图],并带入(式5-4),可将霍夫丁不等式转换成如(式5-5)所示的形式:[插图]从(式5-5)中可以看出,如果选择UCB的上界是[插图]的形式,那么X的均值与X的实际期望值的差距在上界之外的概率非常小,小于t-4,这就说明采用UCB的上界形式是严格且合理的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-10060-13126
- ⏱ 2025-01-14 19:43:26
-
📌 只需要定性地清楚UCB的上界形式相当于老虎机收益期望的严格的置信区间即可。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-13198-13235
- ⏱ 2025-01-14 19:45:13
-
📌 本质上,无论是UCB、Thompson Sampling,还是LinUCB,都是对预测不确定性的一种测量 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-19628-19680
- ⏱ 2025-01-14 19:52:33
-
📌 如何将探索与利用的思想与模型进行有效整合呢?这里要再次回顾3.10 节介绍的强化学习模型DRN。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-52-21248-21296
- ⏱ 2025-01-14 19:57:28
6.1 推荐系统的数据流
-
📌 Kappa架构也可以看作流计算架构的“升级”版本。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-55-4762-4787
- ⏱ 2025-01-14 20:24:30
-
📌 问题的关键就在于如何在离线环境下利用同样的流处理框架进行数据批处理。为了解决这个问题,需要在原有流处理的框架上加上两个新的通路“原始数据存储”和“数据重播”。“原始数据存储”将未经流处理的数据或者日志原封不动地保存到分布式文件系统中,“数据重播”将这些原始数据按时间顺序进行重播,并用同样的流处理框架进行处理,从而完成离线状态下的数据批处理。这就是Kappa架构的主要思路 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-55-5030-5256
- ⏱ 2025-01-14 20:25:54
-
📌 根据业务场景的不同,完成特征处理之后,样本和特征数据最终流向两个方向:(1)以HDFS为代表的离线海量数据存储平台,主要负责存储离线训练用的训练样本。(2)以Redis为代表的在线实时特征数据库,主要负责为模型的在线服务提供实时特征。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-55-6295-6492
- ⏱ 2025-01-14 20:30:39
-
📌 加入了机器学习层的架构也被称为新一代的Unified 大数据架构,其在Lambda 或Kappa 架构上的流处理层新增了机器学习层,将机器学习和数据处理融为一体 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-55-7102-7182
- ⏱ 2025-01-14 21:55:30
6.2 推荐模型离线训练之Spark MLlib
-
📌 shuffle 指的是所有Partition的数据必须进行洗牌后才能得到下一步的数据,最典型的操作就是groupByKey操作和join操作 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-56-3444-3514
- ⏱ 2025-01-14 22:02:49
-
📌 与之相比,map、filter等操作仅需逐条地进行数据处理和转换,不需要进行数据间的操作,因此各Partition之间可以并行处理。除此之外,在得到最终的计算结果之前,程序需要进行reduce 操作,从各Partition上汇总统计结果。随着Partition的数量逐渐减小,reduce操作的并行程度逐渐降低,直到将最终的计算结果汇总到master节点(主节点)上。可以说,shuffle 和reduce 操作的发生决定了纯并行处理阶段的边界。如图6-8所示,Spark的DAG被分割成了不同的并行处理阶段(stage)。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-56-3686-4028
- ⏱ 2025-01-14 22:11:21
-
📌 图6-8 被shuffle操作分割的DAG ^CB-AhC7Mk7MN51i6tK6sx3d60eE-56-4395-4416
- ⏱ 2025-01-14 22:13:09
-
📌 一句话总结Spark的计算过程:Stage内部数据高效并行计算,Stage边界处进行消耗资源的shuffle操作或者最终的reduce操作。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-56-4573-4643
- ⏱ 2025-01-14 22:11:54
-
📌 Spark MLlib的分布式训练方法有以下弊端:· 采用全局广播的方式,在每轮迭代前广播全部模型参数。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-56-7420-7564
- ⏱ 2025-01-14 22:32:28
-
📌 采用阻断式的梯度下降方式,每轮梯度下降由最慢的节点决定。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-56-7732-7780
- ⏱ 2025-01-14 22:32:05
6.3 推荐模型离线训练之Parameter Server
-
📌 Parameter Server采取了和Spark MLlib一样的数据并行训练产生局部梯度,再汇总梯度更新参数权重的并行化训练方案。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-2397-2464
- ⏱ 2025-01-14 22:37:41
-
📌 Parameter Server由server节点和worker节点组成,其主要功能如下:· server节点的主要功能是保存模型参数、接受worker节点计算出的局部梯度、汇总计算全局梯度,并更新模型参数。· worker节点的主要功能是保存部分训练数据,从server节点拉取最新的模型参数,根据训练数据计算局部梯度,上传给server节点。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-2999-3252
- ⏱ 2025-01-14 22:43:14
-
📌 服务器节点组内部包含多个服务器节点(server node),每个服务器节点负责维护一部分参数 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-3940-3987
- ⏱ 2025-01-14 23:06:04
-
📌 概括整个Parameter Server的分布式训练流程如下:(1)每个worker载入一部分训练数据。(2)worker节点从server节点拉取(pull)最新的相关模型参数。(3)worker节点利用本节点数据计算梯度。(4)worker节点将梯度推送到server节点。(5)server节点汇总梯度更新模型。(6)跳转到第2步,直到迭代次数达到上限或模型收敛。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-4969-5394
- ⏱ 2025-01-14 22:51:44
-
📌 Parameter Server用“异步非阻断式”的梯度下降替代原来的“同步阻断式”方法。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-5941-6038
- ⏱ 2025-01-14 22:53:25
-
📌 最新的模型权重参数还没有被拉取到本地,该节点仍在使用iter 10的权重参数计算iter 11的梯度。这就是所谓的异步非阻断式梯度下降法 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-6125-6193
- ⏱ 2025-01-14 22:53:53
-
📌 图6-11 一个worker节点多次迭代计算梯度的过程 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-6608-6635
- ⏱ 2025-01-14 22:53:37
-
📌 异步梯度更新的方式虽然大幅加快了训练速度,但带来的是模型一致性的损失。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-6704-6739
- ⏱ 2025-01-14 22:56:08
-
📌 也就是说,并行训练的结果与原来的单点串行训练的结果是不一致的,这样的不一致会对模型收敛的速度造成一定影响。所以最终选取同步更新还是异步更新取决于不同模型对一致性的敏感程度。这类似于一个模型超参数选取的问题,需要针对具体问题进行具体的验证。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-6739-6858
- ⏱ 2025-01-14 22:59:16
-
📌 除此之外,在同步和异步之间,还可以通过设置“最大延迟”等参数限制异步计算的程度。例如,可以限定在三轮迭代之内,模型参数必须更新一次。如果某worker 节点计算了三轮梯度,还未完成一次从server 节点拉取最新模型参数的过程,那么该worker 节点就必须停下等待pull 操作的完成。这是同步和异步之间的折中方法。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-6898-7057
- ⏱ 2025-01-14 22:59:39
-
📌 Parameter Server节点组成的一致性哈希环 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-9367-9394
- ⏱ 2025-01-14 23:05:32
-
📌 在Parameter Server的服务器节点组中,应用一致性哈希管理参数的过程大致有如下几步:(1)将模型参数的key映射到一个环形的哈希空间,比如有一个哈希函数可以将任意key映射到0~(232)-1的哈希空间内,只要让(232)-1这个桶的下一个桶是0这个桶,这个空间就变成了一个环形哈希空间。(2)根据server 节点的数量n,将环形哈希空间等分成nm 个范围,让每个server间隔地分配m个哈希范围。这样做的目的是保证一定的负载均衡性,避免哈希值过于集中带来的server负载不均。(3)在新加入一个server节点时,让新加入的server节点找到哈希环上的插入点,让新的server负责插入点到下一个插入点之间的哈希范围,这样做相当于把原来的某段哈希范围分成两份,新的节点负责后半段,原来的节点负责前半段。这样不会影响其他哈希范围的哈希分配,自然不存在大量的重哈希带来的数据大混洗的问题。(4)删除一个server节点时,移除该节点相关的插入点,让临近节点负责该节点的哈希范围。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-9850-10726
- ⏱ 2025-01-14 23:11:47
-
📌 在应用一致性哈希原理后,当某worker 节点希望拉取新的模型参数时,该节点将发送不同的“范围拉取请求”(range pull)到不同的server节点,之后各server节点可以并行地发送自己负责的权重参数到该worker节点。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-57-10830-10945
- ⏱ 2025-01-14 23:12:38
6.4 推荐模型离线训练之TensorFlow
-
📌 张量(tensor)其实是矩阵的高维扩展,矩阵可以看作张量在二维空间上的特例。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-58-1122-1161
- ⏱ 2025-01-14 23:25:02
-
📌 存在依赖关系的任务节点或者子图(subgraph)之间需要串行执行,不存在依赖关系的任务节点或者子图之间可以并行执行。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-58-2750-2829
- ⏱ 2025-01-14 23:38:07
-
📌 如图6-16所示,图中将最原始的操作节点关系图进一步处理成了由操作节点(Operation node)和任务子图组成的关系图。其中,子图是由一组串行的操作节点组成的。由于是纯串行的关系,所以在并行任务调度中可被视作一个不可再分割的任务节点。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-58-2950-3070
- ⏱ 2025-01-14 23:42:07
-
📌 在具体的并行任务调度过程中,TensorFlow维护了一个任务队列。当一个任务的前序任务全部执行完时,就可以将当前任务推送到任务队列尾。有空闲计算节点时,该计算节点就从任务队列中拉取出一个队首的任务进行执行。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-58-3110-3214
- ⏱ 2025-01-14 23:39:30
6.5 深度学习推荐模型的上线部署
- 📌 业界的很多公司采用了“复杂网络离线训练、生成Embedding存入内存数据库、线上实现逻辑回归或浅层神经网络等轻量级模型拟合优化目标”的上线方式。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-59-2979-3052
- ⏱ 2025-01-14 23:58:26
6.6 工程与理论之间的权衡
-
📌 增强模型的稀疏性的关键技术点有哪些?加入L1正则化项,采用FTRL等稀疏性强的训练方法。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-60-2398-2442
- ⏱ 2025-01-15 00:09:39
-
📌 采用“主成分分析”等方法进行特征筛选,在不显著降低模型效果的前提下减少所用的特征 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-60-2687-2727
- ⏱ 2025-01-15 00:13:00
7.1 离线评估方法与基本评价指标
-
📌 k-fold交叉验证:先将全部样本划分成k个大小相等的样本子集;依次遍历这k个子集,每次都把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;最后将所有k次的评估指标的平均值作为最终的评估指标。在实际实验中,k经常取10。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-1531-1886
- ⏱ 2025-01-15 01:01:41
-
📌 留一验证:每次留下1个样本作为验证集,其余所有样本作为测试集。样本总数为n,依次遍历所有n个样本,进行n次验证,再将评估指标求平均得到最终指标。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-1945-2199
- ⏱ 2025-01-15 01:02:56
-
📌 自助法(Bootstrap)是基于自助采样法的检验方法:对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。在n次采样过程中,有的样本会被重复采样,有的样本没有被抽出过,将这些没有被抽出的样本作为验证集进行模型验证,就是自助法的验证过程。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-3149-3494
- ⏱ 2025-01-15 01:04:54
-
📌 分类准确率(Accuracy)是指分类正确的样本占总样本个数的比例,即[插图] ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-3804-3876
- ⏱ 2025-01-15 01:08:22
-
📌 在实际的推荐场景中,更多是利用推荐模型得到一个推荐序列,因此更多是使用精确率和召回率这一对指标来衡量一个推荐序列的好坏。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-4682-4742
- ⏱ 2025-01-15 01:07:36
-
📌 精确率(Precision)是分类正确的正样本个数占分类器判定为正样本的样本个数的比例,召回率(Recall)是分类正确的正样本个数占真正的正样本个数的比例。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-4837-4916
- ⏱ 2025-01-15 01:09:04
-
📌 在排序模型中,通常没有一个确定的阈值把预测结果直接判定为正样本或负样本,而是采用Top N排序结果的精确率(Precision@N)和召回率(Recall@N)来衡量排序模型的性能 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-4956-5100
- ⏱ 2025-01-15 01:15:08
-
📌 F1-score是精确率和召回率的调和平均值,其定义如下: ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-5413-5442
- ⏱ 2025-01-15 01:16:09
-
📌 均方根误差(Root Mean Square Error,RMSE)经常被用来衡量回归模型的好坏。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-5856-5905
- ⏱ 2025-01-15 01:16:31
-
📌 一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际应用时,如果存在个别偏离程度非常大的离群点,那么即使离群点数量非常少,也会让RMSE指标变得很差。为解决这个问题,可以使用鲁棒性更强的平均绝对百分比误差(Mean Absolute Percent Error,MAPE)进行类似的评估,MAPE的定义如下:[插图] ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-7315-7518
- ⏱ 2025-01-15 01:18:26
-
📌 在一个二分类问题中,LogLoss的定义如下:[插图] ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-8016-8076
- ⏱ 2025-01-15 01:19:28
-
📌 LogLoss就是逻辑回归的损失函数 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-63-9294-9312
- ⏱ 2025-01-15 01:20:30
7.2 直接评估推荐序列的离线指标
-
📌 Precision-Recall曲线(精确率-召回率曲线,简称P-R曲线) ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-1149-1186
- ⏱ 2025-01-15 08:47:03
-
📌 P-R 曲线的横轴是召回率,纵轴是精确率。对于一个排序模型来说,其P-R曲线上的一个点代表“在某一阈值下,模型将大于该阈值的结果判定为正样本,将小于该阈值的结果判定为负样本时,排序结果对应的召回率和精确率”。 整条P-R曲线是通过从高到低移动正样本阈值生成的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-1244-1413
- ⏱ 2025-01-15 08:49:39
-
📌 横轴0点附近代表阈值最大时模型的精确率和召回率。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-1451-1515
- ⏱ 2025-01-15 08:50:04
-
📌 在绘制好P-R曲线后,计算曲线下的面积(Area Under Curve,AUC)能够量化P-R曲线的优劣。顾名思义,AUC 指的是P-R 曲线下的面积大小,因此计算AUC值只需要沿着P-R曲线横轴做积分。AUC越大,排序模型的性能越好。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-2147-2266
- ⏱ 2025-01-15 08:53:12
-
📌 ROC曲线的全称是the Receiver Operating Characteristic曲线,中文译为“受试者工作特征曲线”。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-2405-2470
- ⏱ 2025-01-15 08:57:22
-
📌 ROC曲线的横坐标为False Positive Rate(FPR,假阳性率);纵坐标为True Positive Rate(TPR,真阳性率)。FPR和TPR的计算方法如下:  ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-2563-2977
- ⏱ 2025-01-15 09:03:09
-
📌 同P-R 曲线一样,ROC 曲线也是通过不断移动模型正样本阈值生成的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-3454-3489
- ⏱ 2025-01-15 09:04:13
-
📌 这里的阈值也被称为“截断点”。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-3716-3731
- ⏱ 2025-01-15 09:06:39
-
📌 还有一种更直观的绘制ROC 曲线的方法。首先,根据样本标签统计出正负样本的数量,假设正样本数量为P,负样本数量为N;接下来,把横轴的刻度间隔设置为1/N,纵轴的刻度间隔设置为1/P;再根据模型输出的预测概率对样本进行排序(从高到低);依次遍历样本,同时从零点开始绘制ROC曲线,每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线,每遇到一个负样本就沿横轴方向绘制一个刻度间隔的曲线,直到遍历完所有样本,曲线最终停在(1,1)这个点,整个ROC曲线绘制完成。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-5210-5654
- ⏱ 2025-01-15 09:10:49
-
📌 在绘制完ROC曲线后,同P-R曲线一样,可以计算出ROC曲线的AUC,并用AUC评估推荐系统排序模型的优劣。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-5694-5748
- ⏱ 2025-01-15 09:08:54
-
📌 平均精度均值(mean Average Precision,mAP)是另一个在推荐系统、信息检索领域常用的评估指标。该指标其实是对平均精度(Average Precision,AP)的再次平均,因此在计算mAP之前,读者需要先了解什么是平均精度。 假设推荐系统对某一用户测试集的排序结果如表7-2所示。 表7-2 排序结果示例  其中,1代表正样本,0代表负样本。 通过之前的介绍读者已经清楚了如何计算precision@N,那么上述序列每个位置上的precision@N分别是多少呢?(如表7-3所示。) 表7-3 计算precision@N示例  AP的计算只取正样本处的precision进行平均,即AP=(1/1+2/4+3/5+4/6)/4=0.6917。那么什么是mAP呢? 如果推荐系统对测试集中的每个用户都进行样本排序,那么每个用户都会计算出一个AP值,再对所有用户的AP值进行平均,就得到了mAP。也就是说,mAP是对精确度平均的平均。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-5888-7290
- ⏱ 2025-01-15 09:21:38
-
📌 平均精度均值(mean Average Precision,mAP)是另一个在推荐系统、信息检索领域常用的评估指标。该指标其实是对平均精度(Average Precision,AP)的再次平均,因此在计算mAP之前,读者需要先了解什么是平均精度。 假设推荐系统对某一用户测试集的排序结果如表7-2所示。 表7-2 排序结果示例 [插图] 其中,1代表正样本,0代表负样本。 通过之前的介绍读者已经清楚了如何计算precision@N,那么上述序列每个位置上的precision@N分别是多少呢?(如表7-3所示。) ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-5888
- ⏱ 2025-01-15 09:21:08
-
📌 离线评估的目的在于快速定位问题,快速排除不可行的思路,为线上评估找到“靠谱”的候选者。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-64-7781-7824
- ⏱ 2025-01-15 09:24:43
7.3 更接近线上环境的离线评估方法——Replay
-
📌 动态离线评估方法先根据样本产生时间对测试样本由早到晚进行排序,再用模型根据样本时间依次进行预测。在模型更新的时间点上,模型需要增量学习更新时间点前的测试样本,更新后继续进行后续的评估。传统离线评估方法和动态离线评估方法比对如图7-4所示。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-65-1833-1952
- ⏱ 2025-01-15 09:37:53
-
📌 图7-4 传统离线评估方法和动态离线评估方法对比 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-65-2319-2343
- ⏱ 2025-01-15 09:38:02
-
📌 如果模型更新的频率持续加快,快到接收到样本后就更新。整个动态评估的过程也变成逐一样本回放的精准线上仿真过程,这就是经典的仿真式离线评估方法——Replay。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-65-2428-2506
- ⏱ 2025-01-15 09:39:17
-
📌 既然是模拟在线数据流,就要求在每个样本产生时,样本中不能包含任何“未来信息”,要避免“数据穿越”的现象发生。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-65-2984-3090
- ⏱ 2025-01-15 09:44:50
7.4 A/B测试与线上评估指标
-
📌 /B 测试又称为“分流测试”或“分桶测试”,是一个随机实验,通常被分为实验组和对照组。在利用控制变量法保持单一变量的前提下,将A、B两组数据进行对比,得出实验结论。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-66-777-859
- ⏱ 2025-01-15 09:57:12
-
📌 可以用两个原则简述A/B测试分层和分流的机制。 (1)层与层之间的流量“正交”。 (2)同层之间的流量“互斥”。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-66-2356-2490
- ⏱ 2025-01-15 10:04:40
-
📌 层与层之间的独立实验的流量是正交的,即实验中每组的流量穿越该层后,都会被再次随机打散,且均匀地分布在下层实验的每个实验组中。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-66-2549-2651
- ⏱ 2025-01-15 10:06:02
-
📌 同层之间的流量“互斥”的具体含义为: (1)如果同层之间进行多组A/B测试,那么不同测试之间的流量是不重叠的,即“互斥”的。 (2)一组A/B测试中实验组和对照组的流量是不重叠的,是“互斥”的。 在基于用户的A/B 测试中,“互斥”的含义应进一步解读为不同实验之间,以及A/B测试的实验组和对照组之间的用户应是不重叠的。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-66-6549-6826
- ⏱ 2025-01-15 10:19:50
-
📌 一般来讲,A/B测试都是模型上线前的最后一道测试,通过A/B测试检验的模型将直接服务于线上用户,完成公司的商业目标。因此,A/B测试的指标应与线上业务的核心指标保持一致。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-66-7152-7277
- ⏱ 2025-01-15 10:20:33
7.5 快速线上评估方法——Interleaving
-
📌 Interleaving 方法被当作线上A/B测试的预选阶段(如图7-7所示)进行候选算法的快速筛选,从大量初始想法中筛选出少量“优秀”的推荐算法。再对缩小的算法集合进行传统的A/B 测试 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-67-876-970
- ⏱ 2025-01-15 10:25:19
-
📌 传统的A/B 测试除了存在效率问题,还存在一些统计学上的显著性差异问题。下面用一个很典型的A/B 测试例子进行说明。 设计一个A/B测试来验证用户群体是否对“可口可乐”和“百事可乐”存在口味倾向。按照传统的做法,会将测试人群随机分成两组,然后进行“盲测”,即在不告知可乐品牌的情况下进行测试。第一组只提供可口可乐,第二组只提供百事可乐,然后根据一定时间内的可乐消耗量观察人们是更喜欢“可口可乐”还是“百事可乐”。 这个实验在一般意义上确实是有效的,但也存在一些潜在的问题: 在总的测试人群中,对于可乐的消费习惯肯定各不相同,从几乎不喝可乐到每天喝大量可乐的人都有。可乐的重消费人群肯定只占总测试人群的一小部分,但他们可能占整体汽水消费的较大比例。 这个问题导致A/B两组之间重度可乐消费者的微小不平衡,也可能对结论产生不成比例的影响。 在互联网应用中,这样的问题同样存在。在Netflix的场景下,非常活跃用户的数量是少数,但其贡献的观看时长却占较大的比例,因此,在Netflix的A/B测试中,活跃用户被分在A 组的多还是被分在B 组的多,将对测试结果产生较大影响,从而掩盖了模型的真实效果。 如何解决这个问题呢?一个可行的方法是不对测试人群进行分组,而是让所有测试者都可以自由选择百事可乐和可口可乐(测试过程中仍没有品牌标签,但能区分是两种不同的可乐)。在实验结束时,统计每个人消费可口可乐和百事可乐的比例,然后对每个人的消费比例进行平均,得到整体的消费比例。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-67-1707-2690
- ⏱ 2025-01-15 10:35:22
-
📌 这种不区分A/B组,而是把不同的被测对象同时提供给受试者,最后根据受试者喜好得出评估结果的方法就是Interleaving方法。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-67-2926-2990
- ⏱ 2025-01-15 10:34:26
-
📌 Interleaving方法只是对“用户对算法推荐结果偏好程度”的相对测量,不能得出一个算法真实的表现。如果希望知道算法A能够将用户整体的观看时长提高了多少,将用户的留存率提高了多少,那么使用Interleaving 方法是无法得出结论的。为此,Netflix设计了Interleaving+A/B测试两阶实验结构,完善整个线上测试的框架。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-67-7258-7429
- ⏱ 2025-01-15 10:45:34
8.1 Facebook的深度学习推荐系统
-
📌 DLRM 融合使用了模型并行和数据并行的方法,对Embedding部分采用了模型并行,对MLP 部分采用了数据并行。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-71-11177-11235
- ⏱ 2025-01-15 15:21:20
-
📌 其中,Embedding做模型并行训练指的是在一个device(设备)或者计算节点上,仅保存一部分Embedding层参数,每个设备进行并行mini batch梯度更新时,仅更新自己节点上的部分Embedding层参数。 MLP 层和特征交互层进行数据并行训练指的是每个设备上已经有了全部模型参数,每个设备利用部分数据计算梯度,再利用全量规约(AllReduce)的方法汇总所有梯度进行参数更新。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-71-11350-11674
- ⏱ 2025-01-15 15:21:25
8.2 Airbnb基于Embedding的实时搜索推荐系统
-
📌 基于短期兴趣的房源Embedding方法 Airbnb 利用Session 内点击数据对房源进行Embedding,捕捉用户在一次搜索过程中的短期兴趣,其中Session 内点击数据指的是一个用户在一次搜索过程中点击的房源序列,这个序列需要满足两个条件:一是只有在房源详情页停留超过30秒才算序列中的一个数据点;二是如果用户超过30分钟没有动作,那么这个序列会被打断,不再是一个序列。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-72-3011-3243
- ⏱ 2025-01-15 17:46:03
-
📌 有了由点击房源组成的序列(sequence),就可以像4.3 节介绍的Item2vec方法那样,把这个序列当作一个“句子”样本,开始Embedding的过程。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-72-3750-3829
- ⏱ 2025-01-15 17:35:38
-
📌 回到Airbnb 房源Embedding 这个问题上,Embedding 过程的正样本很自然地取自Session 内点击序列滑动窗口中的房源,负样本则是在确定中心房源(central listing)后从语料库(这里指所有房源的集合)中随机选取一个房源作为负样本。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-72-5048-5180
- ⏱ 2025-01-15 17:39:44
-
📌 在原始Word2vec Embedding的基础上,针对其业务特点,Airbnb的工程师希望将预订信息引入Embedding。这样可以使Airbnb的搜索列表和相似房源列表更倾向于推荐之前预订成功Session中的房源。从这个动机出发,Airbnb把会话点击序列分成两类,最终产生预订行为的称为预订会话,没有的称为探索性会话(exploratory session)。 每个预订会话中只有最后一个房源是被预订房源(booked listing),为了将这个预订行为引入目标函数,不管这个被预订房源在不在Word2vec的滑动窗口中,都假设这个被预订房源与滑动窗口的中心房源相关,相当于引入了一个全局上下文(global context)到目标函数中 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-72-5625-5988
- ⏱ 2025-01-15 17:44:33
-
📌 为了更好地发现同一市场(market place)内部房源的差异性,Airbnb 加入了另一组负样本,就是在与中心房源同一市场的房源集合中进行随机抽样,获得一组新的负样本。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-72-6849-6935
- ⏱ 2025-01-15 17:42:52
-
📌 基于长期兴趣的用户Embedding和房源Embedding ^CB-AhC7Mk7MN51i6tK6sx3d60eE-72-8654-8684
- ⏱ 2025-01-15 17:47:39
-
📌 为了捕捉用户的长期偏好,Airbnb使用了预订会话序列。比如用户j在过去1年依次预订过5个房源,那么其预订会话就是sj=(lj1,lj2,lj3,lj4,lj5)。既然有了预订会话的集合,是否可以像之前对待点击会话(click session)那样将Word2vec的方法用到Embedding 上呢?答案是否定的,因为会遇到非常棘手的数据稀疏问题。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-72-8953-9514
- ⏱ 2025-01-15 17:48:55
-
📌 如何解决如此严重的数据稀疏问题,训练出有意义的用户Embedding和房源Embedding呢?Airbnb给出的答案是基于某些属性规则做相似用户和相似房源的聚合。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-72-9937-10019
- ⏱ 2025-01-15 17:49:19
-
📌 有了用户属性和房源属性,就可以用聚合数据的方式生成新的预订序列(booking session sequence)。直接用用户属性替代原来的user id,生成一个由所有该用户属性预订历史组成的预订序列。这种方法解决了用户预订数据稀疏的问题。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-72-11135-11256
- ⏱ 2025-01-15 17:52:02
8.3 YouTube深度学习视频推荐系统
-
📌 输出层与候选集生成模型又有所不同。候选集生成模型选择softmax作为其输出层,而排序模型选择加权逻辑回归作为模型输出层。与此同时,模型服务阶段的输出层选择的是e(Wx+b)函数。YouTube为什么分别在训练和服务阶段选择了不同的输出层函数呢? 从YouTube的商业模式出发,增加用户观看时长才是其推荐系统最主要的优化目标,所以在训练排序模型时,每次曝光期望观看时长(expected watch time per impression)应该作为更合理的优化目标。因此,为了能直接预估观看时长,YouTube将正样本的观看时长作为其样本权重,用加权逻辑回归进行训练,就可以让模型学到用户观看时长的信息。 假设一件事情发生的概率是p,这里引入一个新的概念——Odds(机会比),它指一件事情发生和不发生的比值。 对逻辑回归来说,一件事情发生的概率p由sigmoid函数得到,如(式8-9)所示:  这里定义变量Odds如(式8-10)所示,并带入(式8-9)可得:  显而易见,YouTube 正是把变量Odds 当作了模型服务过程中的输出。为什么YouTube要预测变量Odds呢?Odds又有什么物理意义呢? 这里需要结合加权逻辑回归的原理进行进一步说明。由于加权逻辑回归引入了正样本权重的信息,在YouTube场景下,正样本i的观看时长Ti就是其样本权重,因此正样本发生的概率变成原来的Ti倍,那么正样本i的Odds如(式8-11)所示:  在视频推荐场景中,用户打开一个视频的概率p往往是一个很小的值(通常在1%左右),因此(式8-11)可以继续简化:  可以看出,变量Odds 本质上的物理意义就是每次曝光期望观看时长,这正是排序模型希望优化的目标。因此,利用加权逻辑回归进行模型训练,利用eWx+b进行模型服务是最符合优化目标的技术实现。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-73-6907-10146
- ⏱ 2025-01-15 18:25:09
-
📌 候选集生成模型把推荐问题转换成多分类问题,在预测下一次观看的场景中,每一个备选视频都会是一个分类,因此总共的分类有数百万之巨,使用softmax对其进行训练无疑是低效的,这个问题YouTube是如何解决的呢? YouTube 采用了Word2vec中常用的负采样训练方法减少了每次预测的分类数量,从而加快了整个模型的收敛速度 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-73-10396-10597
- ⏱ 2025-01-15 18:28:00
-
📌 处理测试集的时候,YouTube为什么不采用经典的随机留一法(random holdout),而是一定要以用户最近一次观看的行为作为测试集呢? 只留最后一次观看行为做测试集主要是为了避免引入未来信息(future information),产生与事实不符的数据穿越问题。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-73-10961-11135
- ⏱ 2025-01-15 18:31:02
-
📌 为了拟合用户对新内容的偏好,YouTube推荐系统引入了Example Age这个特征,该特征的定义是训练样本产生的时刻距离当前时刻的时间。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-73-11940-12062
- ⏱ 2025-01-15 18:37:27
-
📌 该特征本身并不包含任何信息,但当该特征在深度神经网络中与其他特征做交叉时,就起到了时间戳的作用,通过这个时间戳和其他特征的交叉,保存了其他特征随时间变化的权重,也就让最终的预测包含了时间趋势的信息。 ^CB-AhC7Mk7MN51i6tK6sx3d60eE-73-12282-12421
- ⏱ 2025-01-15 18:37:38