Page 319 - 《软件学报》2025年第12期
P. 319

5700                                                      软件学报  2025  年第  36  卷第  12  期


                 于理解其兴趣变化至关重要. 例如, 商品的连续查看可能预示着购买决策, 而视频观看顺序则反映了用户的偏好.
                 保留这些时序信息使模型能够更精确地提取用户兴趣的动态变化, 实现更个性化的推荐.
                                             V
                    假定有用户集为       U 、项目集为  , 每个用户      u ∈ U  按时间顺序交互的项目序列         s u =< v 1 ,...,v j ,...,v N >, 其中
                      ,
                 s u ∈ S u v ∈ V, 其对应的时间间隔序列为   T u =< t 1 ,...,t j ,...,t N−1 >. 这一步可概括为, 对用户的交互项目序列  , 根据
                                                                                                  s u
                                                       a
                                                      s
                 其时间间隔    T u  实施数据增强得到新的项目序列  . 对会话集           S u  中的所有非均匀会话实施数据增强, 从而得到时
                                                       u
                                  a
                 间间隔均匀的会话集       S , 如公式  (1) 所示:
                                  u
                                                      a
                                                     S = DataAug(T u ,S u )                           (1)
                                                      u
                    先根据时间间隔的标准方差对所有会话进行排序. 方差越小, 排名越前. 将排名最前的一定比例                               (用  σ 表示)
                                                                                              m(1−σ) 个序
                 的会话序列标记为均匀的, 其余为需进行数据增强的非均匀会话序列. 若共有                        m 个会话序列, 则就有
                 列为非均匀的. 为能生成均匀的会话序列, 本文采用               4  种利用时间间隔时长信息对会话序列进行数据增强的操作.
                    1) Ti-Insert 操作. 先对序列   T u  的时间区间从大到小排序, 保留前     k = βN  个作为目标位置. 其中, N   为会话序列
                 长度,  β ∈ [1,0] 为插入比. 接着在每个目标位置      p  插入一个项目, 该项目尚未与用户交互, 但与序列中的上下文相
                 关. 进一步地, 我们根据插入项目与相邻项目的相似度自适应地调整它们的时间间隔, 将插入项目与更相似项目的
                 时间间隔设置得更小, 即,       t p = t i +γ(t i+1 −t i ), 其中  γ ∈ [0,1] 是插入比, 可通过观察时间间隔的统计分布动态调节, 模
                 拟真实的交互行为.
                    例  2: 用户第  1  天购买了书、钢笔, 第     2  天购买了信纸. 我们就认为在此购物序列之间可插入一个相关项目
                 “墨水”, 使购物序列均匀完整.

                                            (p 1 , p 2 ,..., p k ) = top_k_indices(descend(T u ))     (2)
                    2) Ti-Crop  操作. 先选择一个截止位置     p, 在  p  处将长为  c = ηn 的连续序列截断为一个新的序列, 其中        η ∈[0, 1]
                 是一个比例系数, n     是会话序列长度. 多次操作生成一组长度均为              c 的子序列   (记为  (s u ,c)), 并计算每一个子序列的
                 标准差. 然后选择标准差最小的子序列作为操作后的新序列.
                    例  3: 用户第  1  天购买了书、钢笔、信纸, 第       2  天购买了衬衫、领带. 我们就认为此购物序列需要分为两个子
                 序列.

                                               p = argmin std(sub_sequence(s u ,c, p))                (3)
                                                  p∈[1,N−1]
                                                                     (           )
                                                                             1
                    对于短会话或稀疏会话         (项目数较少), 我们控制裁剪比         c = min 0.2,      , 确保短会话裁剪比较小, 避
                                                                         log(|s u |+1)
                 免关键行为丢失.
                    3) Ti-Mask  操作. 与  Ti-Insert 操作类似, 都需要一个目标位置来进行变换会话内的项目. 但不同的是, Ti-Mask
                                                             T u  的时间间隔时长从小到大排序, 然后保留前面的             n  个
                 操作是从原始序列中删除项目. 具体地, 该操作先对序列
                 索引位置作为目标位置.
                    例  4: 用户第  1  天上午购买了书、钢笔、信纸, 下午购买了衬衫, 第             2  天购买了书签、书架. 我们就认为“衬衫”
                 不属于整个购物序列, 选择删除该项目.

                                             (p 1 , p 2 ,..., p n ) = top_h_indices(ascend(T u ))     (4)
                    在选取位置后, 根据与相邻项目的时间间隔和相似性计算出待删除项目的                               Mask  优先级   pri_mask =
                         1
                                   , 我们优先选取时间间隔大且相似度低的项目进行                 Mask  操作, 避免会话中的重要交互项
                 1+ sim(v i ,v i+1 )·(t i+1 −t i )
                 目被剔除.
                    4) Ti-Substitute 操作. 与  Ti-Mask  使用相同的策略来确定目标位置, 但不同的是, Ti-Substitute 操作要将位置上
                 的项目替换成与上下文相关且用户未交互过的项目. 而且, 我们选取的替换项目与原项目具有相似的时间分布,

                 即,   t sub −t v i  ⩽ κ, 确保替换后的项目符合原会话时序逻辑. 该操作能在对原会话实施改动最小的基础上, 获得新会

                 话序列.
   314   315   316   317   318   319   320   321   322   323   324