---
# System prepended metadata

title: 推薦システム 第5章 問題設定とシステム構成

---

# 推薦システム 第5章 問題設定とシステム構成

## 問題設定

### よく使われる推薦モジュールの分類

#### 特集モジュール(FM)

おすすめアイテムをユーザにお届け(アイテム・ユーザー間の繋がりを評価)

* 一般FM 
    * コンテンツネットワーク内の異なるドメイン特化型サイト(スポーツ, 音楽, 映画など)に誘導
* ドメイン特化型FM
    * yahooトップページの「ニュース」「エンタメ」みたいな欄
* 個別化FM
    * 各ユーザーの個人的関心にあった推薦をする
    * youtubeのあなたへのおすすめ


#### 他にもいろいろ
* ネットワーク更新モジュール(NM)
    * SNS用のやつ
    * 隣接ユーザからの更新情報(プロフィール, 写真の共有, ...)を推薦
    * シェア、いいねなどのソーシャルアクションも推薦対象
    * ユーザー間の繋がりの強さを評価
* 関連コンテンツモジュール(RM)
    * 詳細ページの主要コンテンツに関連するアイテムを推薦する
    * Amazonの「この商品を買った人は...」のやつ
    * アイテム間の繋がりの強さを評価


#### もう一つのFM(Factorization Machines)

* 行列分解(Matrix Factorization)に代わる手法
* 1行は1アクションに対応しているので、rating以外のパラメータも載せられる(時間など)
* スパースなデータにも強いらしい

![](https://i.imgur.com/8ouncRk.png =500x400)
* 参考
    * [Factorization Machinesについて調べてみた - Qiita](https://qiita.com/wwacky/items/b402a1f3770bee2dd13c)
    * https://tech-blog.fancs.com/entry/factorization-machines

### アプリケーション設定
推薦方法を選択するには、対象となるアプリケーションの特性を考慮する必要がある

* 信頼できるユーザ識別子が得られるか?
    * SNS、ショッピングサイトなど->ログインが必要なので◎
    * 一般/ドメイン特化型ポータル->ログイン不要なのでbcookiesでガマン△
        * ユーザではなくウェブブラウザの識別子なのでノイズを含んでいるとみなす


### 一般的な統計手法

7~10章ではオフラインモデル, オンラインモデル, 探索活用戦略の3つを以下のアプリケーション設定に対して検討するらしい

#### Most-Popular推薦(->6章)

* CTRが最も高いアイテムを素早く推定し、全てのユーザに推薦する
* 概念は単純だが、一般/ドメイン特化型ポータルでのFMでは有効であり、ベースラインとしても使われるらしい

#### 個別化推薦(->7,8章)

* 個々のユーザが特定のアイテムにどう反応するかを推定
* 過去のサンプルがたくさんあるユーザと全くないユーザを同時にモデル化
* ウェブサイトのFMやNMに適用可能

#### コンテキスト依存型推薦(->10章)
* ユーザ, アイテムに加えて新たな次元としてコンテキストを加えた3次元テンソルを用いてCTRを予測
* ウェブサイトの詳細ページにRMを構築するのに有用


## システム構成
* p109図5.5参照

### 主要な構成要素
* 推論サービス : ウェブサーバの推薦要求を受け取って推薦アイテムを返す
* ストレージシステム : ユーザー/アイテム素性ベクトル, モデルなど推論に用いるデータのストレージ
* オフライン学習器 : 一定期間で得たユーザの応答データを用いて学習を行い、定期的(一日ごととか)にモデルを更新する
* オンライン学習器 : 最新のユーザ応答データを用いてリアルタイムでモデルを調整する

### 考えるべきことの例
時間の影響を受けやすいポータルにおける個別化推薦FMの例
* ユーザの素性ベクトルはどこで手に入れるか->プロフィール情報
* ユーザの関心は1日では対して変わらない->オフライン学習器
* アイテムは時間に敏感(ニュース記事など)->オンライン学習器
* オフライン/オンライン学習器の同期
    * 一般にオフライン学習は時間がかかる(をかける)らしい
    1. オフラインの学習開始
    2. いつも通りオンラインの方は古いパラメータを更新し続ける
    3. オフライン学習完了
    4. 1, 3の間のデータはオフライン学習できていないので、このデータで新しいパラメータをオンラインを用いて学習