讲个故事5.0

一、DORL的输入

1.1 训练集

训练集共有两个,分别为dataset_train和train_collector。dataset_train用于训练用户模型,即训练论文图6中的GPM,该训练过程有验证集无测试集;train_collector用于学习策略,即学习论文图6中的Policy πθ,该学习过程有测试集。学习πθ需要用户对πθ推荐的视频进行反馈,而训练好的GPM可以模拟用户,从而对πθ进行离线地学习。

1.1.1 dataset_train

该训练集用于训练用户模型,即训练论文图6中的GPM。
dataset_train = {StaticDataset:37592418}。
该训练集中共7176个用户和10728个视频,以及37592418条交互记录。该训练集主要由①x_numpy、②y_numpy、③x_columns以及④y_columns构成。分别表示交互记录、用户观看视频的标准观看率、对输入GPM的的用户特征(1个)与视频特征(6个)的具体描述以及指定的GPM的输出。
Alt

图1
① x_numpy

x_numpy={ndarray:(37592418,14)},表示交互记录
第一行数据为:
在这里插入图片描述

图2

具体字段解释如下:
在这里插入图片描述

图3

其中,第一组交互记录即0-6列为正样本,7-13列为负样本。正样本表示用户观看该视频的标准化观看时长较长,负样本表示用户观看该视频的标准化观看时长较短或未观看过该视频。

② y_numpy

y_numpy={ndarray:(37592418,1)},用户观看视频的标准观看率
第一行数据为:
在这里插入图片描述

图4

具体字段解释如下:
在这里插入图片描述

图5
③ x_columns

x_columns= {list:(7)} ,表示对输入GPM的的用户特征(1个)与视频特征(6个)的具体描述。
[SparseFeatP(name, vocabulary_size, embedding_dim, use_hash, dtype, embedding_name, group_name)]
第一行的数据为:
SparseFeatP(name=‘user_id’, vocabulary_size=7176, embedding_dim=8, use_hash=False, dtype=‘int32’, embedding_name=‘user_id’, group_name=‘default_group’)
name=‘user_id’:表示用户id
vocabulary_size=7176:表示用户的总数为7176
embedding_dim=8:表示用户id经过随机算法后用户向量维度为8维
use_hash=False:表示不使用哈希技术对用户id进行编码。
dtype=‘int32’:表示用户id的数据类型为32位的整数
embedding_name=‘user_id’:表示用户向量的向量名称为user_id
group_name=‘default_group’:表示用户向量所属分组为default_group
在这里插入图片描述

图6

其中,embedding_dim均为默认值8。输入模型的user_id最大值7176-1,经过随机算法,会将每个user_id变为一个8维的向量。
在这里插入图片描述

图7
④ y_columns

y_columns= {list:(1)} ,指定了GPM的输出为“y”。
第一行的数据为:
DenseFeat(name=‘y’, dimension=1, dtype=‘float32’)
name=‘y’:表示输出的列名为y
dimension=1:该输出列的维度为1。
dtype:表示输出列的数据类型为32位浮点数。
Alt

图8 ### 1.1.2 train_collector train_collector = {Collector}. 该训练集用于学习策略,即学习论文图6中的Policy π~θ~。 该训练集中共100个用户与3327个视频。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/198c249f14af46069ac048a398e5ce60.png)
图9

train_collector由act、obs、obs_next以及rew组成。
act:表示下一时刻为用户推荐的视频id
obs = {ndarray:(100,2)}
obs的第一行数据为:
在这里插入图片描述

图10

具体字段解释如下:
在这里插入图片描述

图11

obs_next:表示下一时刻为用户推荐的视频id
rew:表示用户观看推荐的视频后,得到的奖励

1.2 验证集

1.2.1 dataset_val

dataset_val= {DataFrame:(4676570,9)}.
该验证集用于验证论文图6中的GPM。
共1411个用户和3327个视频,以及4676570条交互记录。
dataset_val与1.1.1训练集的字段基本一致,不同的是dataset_val的x_numpy中仅有正样本。
Alt

图12

该验证集由x_numpy、y_numpy、x_columns、y_columns以及下面的①和②组成。

① df_user_val

df_user_val= {DataFrame:(1411,0)}
表示验证集中用户id为0-1410。

② df_item_val

df_item_val= {DataFrame:(3327,5)},表示3327个视频,每个视频有5个特征。
第一行的数据为:
在这里插入图片描述

图13

具体字段解释如下:
在这里插入图片描述

图14

其中103表示103号视频

1.3 测试集

1.3.1 test_collector_set

test_collector_set = {Collector},该测试集用于测试πθ
共100个用户与3327个视频。
在这里插入图片描述

图15

test_collector_set 由act、obs、obs_next以及rew组成。
act:表示下一时刻为用户推荐的视频id
obs = {ndarray:(100,2)}:表示当前时刻为用户推荐的视频
obs的第一行数据为:
在这里插入图片描述

图16

具体字段解释如下:
在这里插入图片描述

图17

obs_next:表示下一时刻为用户推荐的视频id
rew:表示为用户推荐的视频,经计算得到的奖励

二、DORL的输出

输出为:给用户推荐的单个视频id

三、优化目标

优化目标为:最小化损失
损失函数如下:
Alt

图18

其中,θk表示集成用户模型中的第k个子模型,σ2θk(xi)表示θk对样本xi的预测方差,fθk表示θk对样本xi的预测值。yi表示样本xi的真实标签值。

四、评价指标

实验规定:在前N(N=4)轮推荐中只要有一个推荐视频所属的类别与当前推荐的视频所属类别相似,则结束交互,并且最多交互30轮。
随着N的增大,用户对相似内容的容忍度越低。
在这里插入图片描述

图19

4.1 累积奖励Rtra

将所有用户从开始至退出得到的所有奖励进行累加,得到Rtra。Rtra越大表示推荐效果越好。

4.2 交互轨迹的长度Length

将所有用户从开始至退出进行交互的轮数累加并取平均,得到Length。Length越大表示推荐效果越好。

4.3 单轮奖励Reach

Reach=Rtra/Length。Reach越大表示推荐效果越好。

4.4 MCD

Majority Category Domination (MCD),表示标记为主导类别的物品在推荐结果中所占的比例。假设某一用户共交互了10轮。推荐的10个视频中所属类别为主导类别的有3个,则其MCD为3/10=0.3 。将所有用户的MCD累加并取平均,得到MCD。
MCD越大表示推荐结果中的马太效应越强,即推荐效果越差。

五、算法步骤

5.1 小数据集

在这里插入图片描述

图20

在这里插入图片描述

图21

在这里插入图片描述

图22

离线数据集中的标准化观看率有正有负,标准化观看率越大说明用户越喜欢该视频。但具体计算标准化观看率的方法不明。因此,小数据集中的预测矩阵中有正有负。
在这里插入图片描述

图23

在这里插入图片描述

图24

4.2 计算损失

在这里插入图片描述

图25

通过梯度下降,最小化loss,使得用户模型可以更好地模拟真实用户。

4.3 学习策略、进行推荐并计算奖励

假设只为0号用户进行推荐。
act={ndarray:(1,)}:表示下一时刻为用户推荐的视频id
obs = {ndarray:(1,2)}:
obs的第一行数据为:
在这里插入图片描述

图26

具体字段解释如下:
在这里插入图片描述

图27

obs_next={ndarray:(1,2)}:表示下一时刻为用户推荐的视频id
rew={ndarray:(1,)}:表示为用户推荐的视频,经计算得到的奖励
初始时,act和rew为一维空数组,obs_next为二维空数组,状态state为None,obs = [0 5] 0表示该用户为0号用户,5表示可以对0号用户推荐0-4号视频。
首先,将act、rew、obs 、obs_next以及state传入πθ,假设πθ将为0号用户推荐2号视频。则更新act=[2] obs_next=[0 2]表示接下来为0号用户推荐2号视频,然后将act传给GPM模拟视频推荐。
计算奖励rew:
Alt

图28

更新obs = [0 2],表示当前时刻为0号用户推荐的是2号视频。
由于此时推荐过的视频数量为1,未达到关注的推荐数量(2),因此不更新state。
然后为0号用户进行下一次推荐。
再次将act、rew、obs 、obs_next以及state传入πθ,假设推荐的是1号视频,则更新obs_next = [0 1] ,action=[1],计算奖励rew=0.15-0.01*0.0001+0.05(0.7872+0.4471)=0.21171.
更新obs = [0 1],表示当前时刻为0号用户推荐了1号视频。
因为此时推荐过的视频数量已达到关注的推荐数量(2),更新state
在这里插入图片描述

图29

推荐动作an为41维的向量,表示了推荐的视频以及它的信息,an共分为7个字段,分别为视频id、视频所属的第一个类别、视频所属的第二个类别、视频所属的第三个类别、视频所属的第四个类别以及视频的标准化时长。
奖励 r ~ {\widetilde r} r 为1维向量,表示奖励的大小。
由图24知当前时刻为t,上一时刻为t-1.那么得到:
t-1时刻:
e → a t − 1 \overset{\rightarrow}{e}_{a_{t-1}} eat1=[-0.04520299 0.08088709 -0.15539388 0.31831533 -0.09131385 0.05895899, 0.2556744 -0.14113604 0.051513 -0.03810431 -0.05060479 -0.0384757, 0.02586577 -0.03976231 -0.03038354 0.02185742 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. -0.14874157]
r ~ t − 1 \widetilde{r}_{t-1} r t1=[0.32927]
e → a t − 1 \overset{\rightarrow}{e}_{a_{t-1}} eat1 r ~ t − 1 \widetilde{r}_{t-1} r t1进行水平拼接,得到:
[-0.04520299 0.08088709 -0.15539388 0.31831533 -0.09131385 0.05895899, 0.2556744 -0.14113604 0.051513 -0.03810431 -0.05060479 -0.0384757, 0.02586577 -0.03976231 -0.03038354 0.02185742 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. -0.01234 0.32927]
t时刻:
e → a t \overset{\rightarrow}{e}_{a_t} eat=[-0.04520299 0.08088709 -0.15539388 0.31831533 -0.09131385 0.05895899, 0.2556744 -0.14113604 0.051513 -0.03810431 -0.05060479 -0.0384757, 0.02586577 -0.03976231 -0.03038354 0.02185742 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. -0.14874157]
r ~ t \widetilde{r}_t r t=[0.21171]
e → a t \overset{\rightarrow}{e}_{a_t} eat r ~ t \widetilde{r}_t r t进行水平拼接,得到:
[-0.02567394 0.03882603 -0.02900135 0.52271 -0.0178257 0.14830327, 0.26527008 -0.05114506 0.08045326 -0.02176466 -0.01744899 -0.02215503, 0.03756568 -0.01000033 0.00845384 0.01802633 0.04524125 -0.0528275, 0.03109292 -0.02242708 0.03707033 0.02108514 0.0557649 0.01112855, 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. 0. 0., 0. 0. 0. 0. -0.3105719 0.21171]
得到 s → t + 1 \overset{\rightarrow}{s}_{t+1} st+1=[−0.0354,0.0599,−0.0922,0.4205,−0.0546,0.1036,0.2605,−0.0961,0.0660,−0.0299,−0.0340,−0.0005,−0.0249,−0.0110,0.0199,0.0226,−0.0264,0.0155,−0.0112,0.0185 0.0105,0.0279,0.0056, 0.02109 0.05576 0.01113.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.−0.1615,0.2710]
然后再次将act、rew、obs 、obs_next以及更新后的state传入πθ,继续对0号用户进行推荐……

六、对GPM(Gaussian Process Model)的调研

6.1 输入

特征向量
输入数据通常是一个特征矩阵,其中每一行代表一个样本,每一列代表一个特征。特征可以是任何与预测任务相关的信息,例如用户特征、项目特征等。对应图21中df_complete_x

6.2 输出

预测均值
对于给定的输入样本,模型输出的预测均值.
对应论文图6中的 fθk
预测方差
模型还会输出预测的方差,表示对预测均值的不确定性。方差越大,说明模型对该预测的不确定性越大。对应论文图6中的σ2θk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值