コンテンツにスキップ

推薦モデル構築

「この人にはこれを勧める」モデルを作ります。 過去の購入や閲覧の記録から、まだ触れていないアイテムの中で好みに合いそうなものを推定します。

作ったモデルはモデルで推薦アイテム算出で使います。

入出力

ポート内容
入力データデータ
モデルモデル
構築モデル情報データ

出力が 2 つあります。 モデル をモデルで推薦アイテム算出につなぎます。

Spark エンジンでは動きません。

構築モデル情報 は 1 行 2 列の小さな表です。項目 に 採用モデル、値 に選んだアルゴリズムの名前が入るだけで、推薦の中身は入りません。推薦したアイテムはモデルで推薦アイテム算出の出力に出ます。

設定項目

キー列を選択必須
推薦する相手。顧客 ID など。数値と文字列が選べます。
アイテム列を選択必須
推薦するもの。商品 ID など。数値と文字列が選べます。
アルゴリズムを選択必須
協調フィルタリング(既定)/ Matrix Factorization / Factorization Machine。選んだ側によってオプションが変わります。

オプション(どのアルゴリズムでも出るもの)

重み付けする列を使用する
既定は off。on にすると重み付けする列を選択が出ます。
重み付けする列を選択
重み付けする列を使用するが on のときだけ出ます。数値の列だけ選べます。購入回数や評価点を指定します。
評価済みのアイテムもレコメンドする
既定は off。off だと、すでに購入・評価したものは勧めません。

Factorization Machine のときだけ出るもの

キー列に対応する特徴量を使用する
既定は off。on にするとキー列に対応する特徴量を選択が出ます。
キー列に対応する特徴量を選択
顧客の属性(年代・地域など)。数値と文字列が選べます。複数選べます。
アイテム列に対応する特徴量を使用する
既定は off。on にするとアイテム列に対応する特徴量を選択が出ます。
アイテム列に対応する特徴量を選択
商品の属性(カテゴリ・価格帯など)。数値と文字列が選べます。複数選べます。

3 つのアルゴリズム

アルゴリズム考え方向いている場面
協調フィルタリング似た人が買ったものを勧めるまず試す(既定)
Matrix Factorization潜在的な好みの軸を見つけるデータが多い
Factorization Machine属性も一緒に使える顧客や商品の属性がある

属性を使えるのは Factorization Machine だけです。ほかの 2 つを選ぶと、属性の設定項目自体が出ません。

入力データの形

1 行が「誰が何に触れたか」 です。

顧客ID商品ID購入回数
C001P0102
C001P0221

同じ「キー列 × アイテム列」の組が 2 行あるとエラーになります。 購入履歴をそのまま入れるのではなく、先にデータ集計で組ごとに 1 行へまとめてください。重みを使うなら、そのときに回数も数えます。

重み付けする列を使わない場合、どの組も同じ重み(1)として扱われます。

エラーと対処

キー列とアイテム列の組が重複している

キー列とアイテム列の組み合わせに重複があります。重複行の処理を行い、一意になるようにしてください。

直し方 — データ集計で組ごとに 1 行にまとめるか、重複行の処理で一意にします。

1 つのキーに複数の特徴量がある

キー列に対応する特徴量を使用するを on にしたときに出ます。同じ顧客に違う年代が付いている、といった場合です。

キー列に対応する特徴量にて、1つのキーの値に複数の特徴量が紐づいて重複しています。一意になるようにしてください。

直し方 — キーごとに 1 行になるよう集計してから結合し直します。

1 つのアイテムに複数の特徴量がある

アイテム列に対応する特徴量を使用するを on にしたときに出ます。

アイテム列に対応する特徴量にて、1つのアイテムの値に複数の特徴量が紐づいて重複しています。一意になるようにしてください。

直し方 — アイテムごとに 1 行になるよう集計してから結合し直します。

選んだ列が見つからない

前の処理で列名が変わった、または列が消えたとき。

対象の列が存在しません。

直し方 — キー列・アイテム列・重み付けする列・特徴量の列を選び直してください。

列を選んでいない

重み付けする列を使用するなどを on にしたまま、列を選ばずに実行したとき。キー列・アイテム列と違って、これらには必須の印が付きません。

対象の列が選択されていません。

直し方 — 使わないならチェックを off に戻し、使うなら列を選んでください。

よく使う例

1. 購入履歴から推薦する

顧客ごとにおすすめ商品を出したいとき。

入力

顧客ID商品ID
C001P010
C001P022
C002P010

設定

設定項目値
キー列を選択顧客ID
アイテム列を選択商品ID
アルゴリズムを選択協調フィルタリング

出力 — モデル と、項目 = 採用モデル / 値 = 協調フィルタリング の 1 行の 構築モデル情報 が出ます。モデルをモデルで推薦アイテム算出につなぎます。

2. 購入回数を重みにする

何度も買った商品を強く評価したいとき。

入力

顧客ID商品ID購入回数
C001P0105
C001P0221

設定

設定項目値
重み付けする列を使用するon
重み付けする列を選択購入回数

出力 — 購入回数の多い組が強く効いたモデルになります。

3. すでに買ったものも出す

消耗品なのでリピートを勧めたいとき。

入力 — 例 1 と同じ

設定

設定項目値
評価済みのアイテムもレコメンドするon

出力 — モデルで推薦アイテム算出の結果に、すでに買った商品も並びます。

4. 顧客の属性を使う

年代や地域も考慮したいとき。

入力

顧客ID商品ID年代地域
C001P01030代東日本
C002P01050代西日本

設定

設定項目値
アルゴリズムを選択Factorization Machine
キー列に対応する特徴量を使用するon
キー列に対応する特徴量を選択年代、地域

出力 — 属性を取り込んだモデルになります。同じ顧客に違う年代が付いていないかを先に確かめてください。

5. 商品の属性も使う

商品のカテゴリや価格帯も考慮したいとき。

入力

顧客ID商品ID商品カテゴリ
C001P010食品
C002P022衣料

設定

設定項目値
アルゴリズムを選択Factorization Machine
アイテム列に対応する特徴量を使用するon
アイテム列に対応する特徴量を選択商品カテゴリ

出力 — 商品の属性を取り込んだモデルになります。履歴の少ない商品でも、属性の近い商品から推定できます。

関連