
【第601回】Personalization:Affinity に応じた商品レコメンドを設定する
前回の記事では、TrailNest のカテゴリごとの Affinity を参照し、最もスコアが高いカテゴリの Hero Banner を表示しました。
今回は、そのカテゴリに該当する商品をおすすめするために、Product Recommendation の設定へ進みます。
例えば、Backpacks への興味が最も高い顧客には Backpacks の商品を、Sleeping への興味が最も高い顧客には Sleeping の商品を表示する構成です。商品は閲覧済みのものに限定せず、まだ見ていない商品も候補にします。
この回では、商品を選ぶ Recommender を設定します。次回は最高スコアのカテゴリを渡す処理と商品カードの表示をつなぎます。
Personalization 基礎シリーズ
Sitemap Builder シリーズ
Data 360 設定シリーズ
Personalization 設定シリーズ
今回の商品の選び方
今回の構成は、次の役割に分かれます。
Affinity:顧客の興味をカテゴリごとに数値化する
既存の Hero 用 Decision:raw_affinity_score の降順で、最高スコアのカテゴリを返す
Recommender:渡されたカテゴリに該当する商品を選ぶ
Experience Template:選ばれた商品をカードとして表示する
最高スコアのカテゴリを決める方法は、前回と同じです。Recommender 側で別のカテゴリ判定を行うのではなく、取得したカテゴリを商品選択にも使用します。
今回は Rule-Based Recommendations を使用します。カテゴリへの興味は Affinity によって変化しますが、同じカテゴリ内での商品の順番は検証用に価格の昇順とします。AI による購入確率や、人気ランキングの順番ではありません。
① Item Data Graph の商品カテゴリを確認する
以前の記事で作成した商品用の Item Data Graph を開き、次の項目が参照できることを確認します。
商品 ID
商品カテゴリ
価格
商品名
画像 URL
商品ページ URL、またはページ URL の生成に使用する商品コード
カテゴリの値は、前回の Decision が返すコードと合わせます。
backpacks
tents
sleeping
apparel
footwear
accessories
例えば、Decision が apparel を返す場合、商品側も apparel であることを確認します。Outdoor Apparel のような表示ラベルを、カテゴリコードとして比較しないようにしてください。
② Recommender を作成する
Personalization アプリで Recommenders を開き、新規で以下を登録します。
Profile Data Graph:TrailNest Profile
Item Data Graph:TrailNest Item Data Graph
Recommender Name:TrailNest Category Recommendations
Recommender API Name:TrailNest_Category_Recommendations

画面上にある Fallback Recommender とは、メインのレコメンドで商品が足りないときに、不足分を補う予備の Recommender です。
例えば、4 商品を表示したいのに、カテゴリの絞り込みで 2 商品しか返らなかった場合、残りを別の Recommender から補います。
メイン:顧客が最も興味を持つカテゴリの商品
Fallback:全カテゴリの人気商品など
今回はいったん無効で進めます。 別カテゴリの商品で補われると、Affinity による絞り込みが成功しているか分かりにくくなるためです。
次の設定では、Rule-Based Recommendations を選択します。

③ カテゴリ内の商品の並び順を設定する
Data Graph Resource で、Item Data Graph の Direct Attributes から価格の項目を選択します。
Data Graph Resource:Price
Sort Order:Ascending(昇順)

今回の確認では、同じカテゴリの商品が価格の低い順に返ることを確認します。商品 ID や商品名ではなく、数値型の価格項目を指定してください。
この設定は、興味の強さとは別です。Affinity で対象カテゴリを選び、そのカテゴリの中で価格順に商品を並べます。
④ まずカテゴリを固定して Filter を確認する
まずは、この Recommender 上で、テストとして商品カテゴリの項目と絞り込みが正しく機能するかを確認します。
Filters の Include 側で、次の条件を追加します。
Item Data Graph Resource:Category
Filter Type:Static
Operator:Is Equal To(文字列の一致)
Value:apparel

この段階では apparel を固定しているため、顧客の Affinity はまだ商品の絞り込みに反映されません。まず、Apparel の商品だけを返せることを確認します。
設定を保存し、Recommender の処理状況を確認します。

⑤ Simulate で返却商品を確認する
作成した Recommender を開き、Simulate をクリックします。

何らかの以下の辺りを選択します。今回は固定のためどれでも良いです。
Sample Recipient:Unified Individual ID
Anchor Item ID:今回は指定しません
Simulate を実行します。

次の内容を確認します。
返された商品が Apparel カテゴリ に該当する
価格の安いものから昇順 で返る

⑥ Dynamic Context Variable に変更する
固定値での絞り込みが確認できたので、次に、リクエストで渡されたカテゴリを Filter の値として使用する設定へ変更します。これにより、カテゴリごとに Recommender を作成する必要がなくなります。
編集画面で、商品カテゴリの条件を、次の設定に変更します。
Item Data Graph Resource:Category
Filter Type:Static
Operator:Is Equal To
Value:{!Top_Category}

{!Top_Category} は、顧客の Affinity を直接参照するものではなく、リクエストで渡された Top_Category の値を使用する設定です。
今回の Simulate 画面では、その値を指定できないため、動的なカテゴリによる絞り込みの確認は次回に行います。今回の検証では、固定値の apparel を使い、カテゴリの絞り込みと価格の昇順を確認しました。
設定が終わったら「保存」して閉じます。
いかがでしたでしょうか。
今回は、Item Data Graph の商品情報を使い、指定されたカテゴリの商品を返す Recommender を設定しました。
まず、カテゴリを apparel に固定して、対象商品の絞り込みと価格の昇順を確認しました。その後、Filter の値を Dynamic Context Variable に変更し、リクエストで渡されたカテゴリを使用する設定にしました。
次回は、Affinity が最も高いカテゴリを商品レコメンドへ渡し、TrailNest に商品カードとして表示します。顧客の行動に応じて、Hero Banner とおすすめ商品のカテゴリが連動して変わる構成へ進みます。
今回は以上です。