推薦モデル構築
「この人にはこれを勧める」モデルを作ります。 過去の購入や閲覧の記録から、まだ触れていないアイテムの中で好みに合いそうなものを推定します。
作ったモデルはモデルで推薦アイテム算出で使います。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| モデル | モデル |
| 構築モデル情報 | データ |
出力が 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 | 購入回数 |
|---|---|---|
| C001 | P010 | 2 |
| C001 | P022 | 1 |
同じ「キー列 × アイテム列」の組が 2 行あるとエラーになります。 購入履歴をそのまま入れるのではなく、先にデータ集計で組ごとに 1 行へまとめてください。重みを使うなら、そのときに回数も数えます。
重み付けする列を使わない場合、どの組も同じ重み(1)として扱われます。
エラーと対処
キー列とアイテム列の組が重複している
キー列とアイテム列の組み合わせに重複があります。重複行の処理を行い、一意になるようにしてください。
直し方 — データ集計で組ごとに 1 行にまとめるか、重複行の処理で一意にします。
1 つのキーに複数の特徴量がある
キー列に対応する特徴量を使用するを on にしたときに出ます。同じ顧客に違う年代が付いている、といった場合です。
キー列に対応する特徴量にて、1つのキーの値に複数の特徴量が紐づいて重複しています。一意になるようにしてください。
直し方 — キーごとに 1 行になるよう集計してから結合し直します。
1 つのアイテムに複数の特徴量がある
アイテム列に対応する特徴量を使用するを on にしたときに出ます。
アイテム列に対応する特徴量にて、1つのアイテムの値に複数の特徴量が紐づいて重複しています。一意になるようにしてください。
直し方 — アイテムごとに 1 行になるよう集計してから結合し直します。
選んだ列が見つからない
前の処理で列名が変わった、または列が消えたとき。
対象の列が存在しません。
直し方 — キー列・アイテム列・重み付けする列・特徴量の列を選び直してください。
列を選んでいない
重み付けする列を使用するなどを on にしたまま、列を選ばずに実行したとき。キー列・アイテム列と違って、これらには必須の印が付きません。
対象の列が選択されていません。
直し方 — 使わないならチェックを off に戻し、使うなら列を選んでください。
よく使う例
1. 購入履歴から推薦する
顧客ごとにおすすめ商品を出したいとき。
入力
| 顧客ID | 商品ID |
|---|---|
| C001 | P010 |
| C001 | P022 |
| C002 | P010 |
設定
| 設定項目 | 値 |
|---|---|
| キー列を選択 | 顧客ID |
| アイテム列を選択 | 商品ID |
| アルゴリズムを選択 | 協調フィルタリング |
出力 — モデル と、項目 = 採用モデル / 値 = 協調フィルタリング の 1 行の 構築モデル情報 が出ます。モデルをモデルで推薦アイテム算出につなぎます。
2. 購入回数を重みにする
何度も買った商品を強く評価したいとき。
入力
| 顧客ID | 商品ID | 購入回数 |
|---|---|---|
| C001 | P010 | 5 |
| C001 | P022 | 1 |
設定
| 設定項目 | 値 |
|---|---|
| 重み付けする列を使用する | on |
| 重み付けする列を選択 | 購入回数 |
出力 — 購入回数の多い組が強く効いたモデルになります。
3. すでに買ったものも出す
消耗品なのでリピートを勧めたいとき。
入力 — 例 1 と同じ
設定
| 設定項目 | 値 |
|---|---|
| 評価済みのアイテムもレコメンドする | on |
出力 — モデルで推薦アイテム算出の結果に、すでに買った商品も並びます。
4. 顧客の属性を使う
年代や地域も考慮したいとき。
入力
| 顧客ID | 商品ID | 年代 | 地域 |
|---|---|---|---|
| C001 | P010 | 30代 | 東日本 |
| C002 | P010 | 50代 | 西日本 |
設定
| 設定項目 | 値 |
|---|---|
| アルゴリズムを選択 | Factorization Machine |
| キー列に対応する特徴量を使用する | on |
| キー列に対応する特徴量を選択 | 年代、地域 |
出力 — 属性を取り込んだモデルになります。同じ顧客に違う年代が付いていないかを先に確かめてください。
5. 商品の属性も使う
商品のカテゴリや価格帯も考慮したいとき。
入力
| 顧客ID | 商品ID | 商品カテゴリ |
|---|---|---|
| C001 | P010 | 食品 |
| C002 | P022 | 衣料 |
設定
| 設定項目 | 値 |
|---|---|
| アルゴリズムを選択 | Factorization Machine |
| アイテム列に対応する特徴量を使用する | on |
| アイテム列に対応する特徴量を選択 | 商品カテゴリ |
出力 — 商品の属性を取り込んだモデルになります。履歴の少ない商品でも、属性の近い商品から推定できます。