讲个故事3.0

一、DORL的输入

1.1 df_user

df_user= {DataFrame:(7176,25)}
[user_active_degree is_live_streamer is_video_author follow_user_num_range fans_user_num_range friend_user_num_range register_days_range onehot_feat0~nehot_feat017]
每个元素代表的含义如下:
user_active_degree(用户活跃程度):0表示低度活跃 1表示中度活跃 2表示高度活跃
is_live_streamer(是否为直播主播):1表示是直播主播 0表示不是直播主播
is_video_author(是否是视频作者):1表示是视频作者 0表示不是视频作者
follow_user_num_range(关注用户的范围):关注用户数量被分为7个范围,分别是(0,10]、(10,50]、(50,100]、(100,150]、(150,250]、(250,500]、500+,对应的follow_user_num_range为1~7
fans_user_num_range(粉丝用户数量范围):粉丝用户数量被分为8个范围,分别是0、[1,10)、[10,100)、[100,1k)、[1k,5k)、[5k,1w)、[1w,10w)、10w+,对应的fans_user_num_range为1~8
friend_user_num_range(好友用户数量范围):朋友用户数量被分为7个范围,分别是0、[1,5)、[5,30)、[30,60)、[60,120)、[120,250)、250+,对应的friend_user_num_range为1~7
register_days_range(注册天数范围):注册天数被分为8个范围,分别是1-14、15-30、31-60、61-90、91-180、181-365、366-730、730+,对应的register_days_range为1~8
onehot_feat0~nehot_feat017(对其余用户特征的描述):如用户年龄、性别、地理位置等
第一行的数据为:
0 [2 1 1 1 1 1 5 1 2 17 638 2 0 1 6 184 6 3 0 0 0 0 0 0 0]
Alt
表示0号用户的活跃程度为高度活跃(),该用户不是直播主播(),该用户不是视频作者(0表示是)。该用户关注用户数量范围为1(此处经过编码后可理解为xxx程度),粉丝用户数量范围为1,好友用户数量范围为1,注册天数范围为5.经过独热编码(One-Hot Encoding)处理的特征列onehot_feat 数据分别为……(此处onehot_feat 列所代表的具体含义不明)
但在实际代码运行时,返回的df_user仅保留了第一列,即df_user= {DataFrame:(7176,1)},仅表示用户索引。

1.2 df_item

df_item= {DataFrame:(10728,5)}
[feat0 feat1 feat2 feat3 duration_normed]
每个元素代表的含义如下:
feat0~feat3 :视频所属类别,共31个类别,表示为1-31。每个视频所属类别至多有4个,若少于4个则用0填充。
duration_normed:视频的标准化时长

第一行的数据为:
[9 0 0 0 -0.42551]
Alt
表示0号视频所属类别为9,且标准化时长为-0.42551

1.3 x_columns

x_columns= {list:(7)}
[SparseFeatP(name, vocabulary_size, embedding_dim, use_hash, dtype, embedding_name, group_name)]
每个元素代表的含义如下:
name:特征列的名称为。
vocabulary_size:该特征列的词汇表大小,表示该特征可能的取值数量。
embedding_dim:该特征列的嵌入维度为8。
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’)]
Alt
表示输入特征列的名称为’user_id’,即该特征列对应于用户ID。用户ID的取值范围是0到7175,数据类型为32位整数,嵌入维度为8。不使用哈希技术对用户ID进行编码。该特征列的嵌入名称为’user_id’,所属的组名为’default_group’。

1.4 ab_columns

ab_columns= {list:(2)}
[SparseFeatP(name, vocabulary_size, embedding_dim, use_hash, dtype, embedding_name, group_name)]
每个元素代表的含义如下:
name:特征列的名称。
vocabulary_size:特征的取值范围。
embedding_dim:该特征列的嵌入维度为。
use_hash:表示是否使用哈希技术对该特征进行编码。
dtype:表示特征的数据类型。
embedding_name:指定该特征列的嵌入名称。
group_name:指定该特征列所属的组名。
第一行的数据为:
[SparseFeatP(name=‘alpha_u’, vocabulary_size=7176, embedding_dim=1, use_hash=False, dtype=‘int32’, embedding_name=‘alpha_u’, group_name=‘default_group’)
Alt
表示辅助特征列的名称为’alpha_u’,alpha_u的取值范围是0到7175,数据类型为32位整数。该特征列的嵌入维度为1,不使用哈希技术对alpha_u进行编码。该特征列的嵌入名称为’alpha_u’所属的组名为’default_group’。
最后的最后,因为args.is_ab = false 所以又将ab_columns 设置为 None

1.5 y_columns

y_columns= {list:(1)}
DenseFeat(name, dimension, dtype)

每个元素代表的含义如下:
name:特征列的名称。
dimension:该特征列的维度。
dtype:表示特征列的数据类型。

第一行的数据为:
DenseFeat(name=‘y’, dimension=1, dtype=‘float32’)
Alt
表示输出特征列的名称为’y’,该特征列对应于目标变量。特征列的维度为1,表示目标变量y是一个标量值且数据类型为32位浮点数。

1.6 dataset_train

dataset_train=dataset = {StaticDataset:37592418}
Alt
x_numpy第一行数据为:
Alt
表示0号用户观看了3649号视频,该视频属于类别9。并且该视频的标准化时长为-0.11252。2860号用户观看了7905号视频,该视频属于类别3。并且该视频的标准化时长为-0.11123。
y_numpy第一行数据为:
Alt
表示0号用户观看该视频的标准化观看率 (‘watch_ratio_normed’)为0.40106

1.7 df_val

df_val= {DataFrame:(4676570,9)}
[‘user_id’ ‘item_id’ ‘timestamp’ ‘watch_ratio_normed’ ‘duration_normed’ feat0-feat3]
各元素分别代表用户id 视频id 时间戳 标准化观看率 标准化时长 视频所属类别

1.8 list_feat

list_feat= {list:(10728)}
[[8] [27,9]……]
表示0号视频所属类别为8,1号视频所属类别为27和9

1.9 df_user_val

df_user_val= {DataFrame:(1411,25)}
各个元素含义与df_user相同,不再赘述

1.10 df_item_val

df_item_val= {DataFrame:(3327,5)}
各个元素含义与df_item相同,不再赘述

1.11 dataset_val

dataset_val = {StaticDataset:4676570}
形式与dataset_train基本相同.
Alt
1.1-1.6为训练模型所用,1.7-1.11为验证模型所用。

二、DORL的输出

给用户user的推荐视频id

三、优化目标

优化目标为:最小化损失
损失函数
Alt
其中,θk表示集成用户模型中的第k个子模型,σ2θk(xi)表示θk对样本xi的预测方差,fθk表示θk对样本xi的预测值。yi表示样本xi的真实标签值。

四、算法步骤

4.1 准备数据+模型预测

Alt
Alt
在这里插入图片描述

4.2 计算损失

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

4.3 进行推荐并计算奖励

将当前推荐动作action、观测值obs=[[user_id action_id],[user_id action_id] ……],奖励rew传给策略policy。首次推荐时,action和rew为空数组[].obs=[0 5],[1 5],[2 5]]
Alt
Alt

五、截图备份

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
//将当前推荐动作action、观测值obs=[[user_id action_id],[user_id action_id] ……],奖励rew传给策略policy。首次推荐时,这三个变量为空数组[].

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值