【論文紹介】Next-item Recommendations in Short Sessions

文献情報

タイトル:Next-item Recommendations in Short Sessions
著者:Wenzhuo Song, Shoujin Wang, Yan Wang, Shengsheng Wang
会議:RecSys 2021

概要

セッション内のアイテムが5件以下のショートセッションを対象としたアイテム推薦手法INSERTを提案。セッションにユーザ情報が紐付いていて、推薦対象となるユーザの過去のセッション情報を使用可。

従来研究との差異

従来研究では、アイテムが6件以上含まれるロングセッションを対象とした推薦手法を提案していて、実験の際はショートセッションはデータセットから除去していた。しかし、現実のデータではショートセッションの方が多く(全セッションのうちDeliciousでは64.03%、Redditでは96.95%がショートセッション)、ショートセッションに対する推薦は重要な課題であり、かつ「セッションが短い=使える情報が少ない」なので従来手法では十分に対応できないチャレンジングな問題である。

提案手法

提案手法の概要は以下の図のようになっている(図は論文中の図2より引用)。図の左下のセッションが推薦対象となるセッションであり、「?」の位置に推薦すべきアイテムを予測する。Local Module、Global Module、Prediction Moduleの3つのコンポーネントから構成される。

Local Module

推薦対象となるセッションsを表現するベクトルを求める。セッション内のアイテムは時系列順に並んでいて、各アイテムはベクトルで表現されているので、セッションsの先頭のアイテムベクトルから順にGRUに投入し、最後のアイテムベクトルを投入後に得られたベクトルをsのベクトル(図のhc)とする。

Global Module

推薦対象となるセッションsは短いため、Local Moduleで得られるベクトルhcではセッションsの特徴を十分に表現できない。そこで、sのユーザuの過去のセッションと、u以外のユーザのセッションの中から、sと類似するセッションを使ってsのベクトル表現を補完する。uの過去のセッションを対象とした処理(図の「Current User's Prior Knowledge Learning」)とu以外のユーザのセッションを対象とした処理(図の「Other Users' Prior Knowledge Learning」)はほぼ同じなので、以下では前者のみ説明する。

推薦対象となるセッションsのユーザuが、図にあるようにこれまでにセッションの履歴を5個持っているとする。ここでやりたいのは、(1)「その5個の各セッションをベクトルで表現」したうえで、(2)「sと類似したセッションの重みが大きくなるように5個のベクトルを足し合わせたベクトルを作る」ことで、Local Moduleで得たhcを補うことである。
処理(1)は、セッション内のアイテムベクトルの重み付き和で求める。その際の重みは、attention(ユーザベクトルと各アイテムベクトルの内積を使用)により計算する。図の「Session Encoder」がこの処理に相当する。
処理(2)では、uの過去のセッションのひとつをs'としたとき、sとs'の類似度を重みとしている。sのベクトル表現はhcで得られているので、s'内の各アイテムベクトルとhcの内積の最大値をsとs'の類似度とする。つまり、s'内のアイテムで現在のセッションと最も類似したアイテムだけからセッション間類似度を計算している。s'内の各アイテムベクトルは、GRUを通して得られたものを使用。図の「SSRN」がこの処理に相当する。

以上で3種類のベクトル(Local Moduleで求めたセッションsのベクトルhc、Global Moduleで求めたuの過去のセッションベースのベクトル、Global Moduleで求めた他のユーザのセッションベースのベクトル)が得られたので、それらを足し合わせたものをsの最終的なベクトルとする。あとは、MLP+softmaxで全アイテムに対する推薦スコアを計算。

実験

ソーシャルブックマークのDeliciousと、掲示板型ソーシャルニュースサイトのRedditのデータを使用。各ユーザの履歴から1時間を閾値としてセッションを作成。比較手法としてはTransformerベースのSASRec、BERTベースのBERT4Recなどを使用。RecallとMRRで評価し、RedditのRecallを除いて提案手法のINSERTが最も高精度であった。


この記事が気に入ったらサポートをしてみませんか?