推薦システム実践入門

―仕事で使える導入ガイド

[cover photo]
TOPICS
System/Network
発行年月日
PRINT LENGTH
296
ISBN
978-4-87311-966-3
FORMAT
Print PDF EPUB
Ebook
3,520円
Ebookを購入する
Print
3,520円

情報化時代が到来し、日常で意思決定をする回数と選択肢の数が急増したことで、推薦システムの需要が高まっています。そのため、昨今では多くのウェブサービスへ新たに推薦システムの導入が検討されることも増えました。本書では、推薦システムの概要から、UI/UX、アルゴリズム、実システムへの組み込み、評価まで紹介し、適切な推薦システムの実装ができるようになります。「実際の仕事に活かす」ことを目的に、著者たちが実務で経験した推薦システムの成功事例や失敗事例を交えながら、実サービスに推薦システムを組み込むという観点を重視した入門的な内容です。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第2刷正誤表

※2022年12月更新

■P.137 7行目
【誤】(r - (pq + b)^2
【正】(r - (pq + b))^2

第3刷正誤表

※2024年1月更新

■P.132 コードの下から6行目
【誤】user_index = user_id2index[row["user_id"]]
【正】user_index = user_id2index[user_id]

■P.133 1つめの予測評価値
【誤】Precision@K=0.009, Recall@K=0.029
【正】Precision@K=0.025, Recall@K=0.080

■P.133 2つめの予測評価値
【誤】Precision@K=0.013, Recall@K=0.043
【正】Precision@K=0.019, Recall@K=0.064

■P.135 コードの下から12行目
【誤】user_index = user_id2index[row["user_id"]]
【誤】user_index = user_id2index[user_id]

■P.135 1つめの予測評価値
【誤】Precision@K=0.010, Recall@K=0.032
【誤】Precision@K=0.024, Recall@K=0.077

■P.135 2つめの予測評価値
【誤】Precision@K=0.012, Recall@K=0.040
【正】Precision@K=0.020, Recall@K=0.067

■P.139 上から10行目
【誤】SVDやNMFに比べて
【正】しきい値がない場合に比べて

目次

まえがき

1章 推薦システム
    1.1 推薦システム
    1.2 推薦システムの歴史
    1.3 推薦システムの種類
        1.3.1 インプット(データの入力)
        1.3.2 プロセス(推薦の計算)
        1.3.3 アウトプット(推薦の提示)
    1.4 検索システムと推薦システム
        1.4.1 検索システム
        1.4.2 検索システムと推薦システムの比較
    1.5 まとめ

2章 推薦システムのプロジェクト
    2.1 推薦システム開発に必要な3つのスキル
    2.2 推薦システムのプロジェクトの進め方
        2.2.1 課題定義
        2.2.2 仮説立案
        2.2.3 データ設計・収集・加工
        2.2.4 アルゴリズム選定
        2.2.5 学習・パラメータチューニング
        2.2.6 システム実装
        2.2.7 評価、改善
    2.3 まとめ

3章 推薦システムのUI/UX
    3.1 UI/UXの重要性
    3.2 サービスを利用するユーザーの目的に応じたUI/UX事例
        3.2.1 適合アイテム発見
        3.2.2 適合アイテム列挙
        3.2.3 アイテム系列消費
        3.2.4 サービス内回遊
    3.3 サービスの提供者の目的に応じたUI/UX事例
        3.3.1 新規・低利用頻度ユーザーの定着
        3.3.2 サービスへの信頼性向上
        3.3.3 利用頻度向上・離脱ユーザーの復帰
        3.3.4 クロスセル
        3.3.5 長期的なユーザーのロイヤルティ向上
    3.4 関連トピック
        3.4.1 アイテムの「類似度」
        3.4.2 目新しさ・セレンディピティ・多様性
        3.4.3 推薦アイテムの選別
        3.4.4 推薦理由の提示
    3.5 まとめ

4章 推薦アルゴリズムの概要
    4.1 推薦アルゴリズムの分類
    4.2 内容ベースフィルタリング
        4.2.1 概要
        4.2.2 アイテム特徴の獲得
        4.2.3 ユーザープロファイルの獲得
    4.3 協調フィルタリング
        4.3.1 メモリベース法のアルゴリズム概要
        4.3.2 嗜好データの獲得と評価値行列
        4.3.3 モデルベース法のアルゴリズム概要
        4.3.4 メモリベース法とモデルベース法の協調フィルタリングの比較
    4.4 内容ベースフィルタリングと協調フィルタリングの比較
        4.4.1 多様性の向上
        4.4.2 ドメイン知識を扱うコスト
        4.4.3 コールドスタート問題への対応
        4.4.4 ユーザー数が少ないサービスにおける推薦
        4.4.5 被覆率の向上
        4.4.6 アイテム特徴の活用
        4.4.7 予測精度
        4.4.8 比較のまとめ
    4.5 推薦アルゴリズムの選択
    4.6 嗜好データの特徴
        4.6.1 明示的獲得と暗黙的獲得の比較
        4.6.2 嗜好データを扱う際の注意点
    4.7 まとめ

5章 推薦アルゴリズムの詳細
    5.1 各アルゴリズムの比較
    5.2 MovieLensのデータセット
        5.2.1 データのダウンロード
        5.2.2 MovieLensのデータ概要
        5.2.3 評価方法
        5.2.4 統一フォーマットによる計算
    5.3 ランダム推薦
    5.4 統計情報や特定のルールに基づく推薦
    5.5 アソシエーションルール
        5.5.1 支持度
        5.5.2 確信度
        5.5.3 リフト値
        5.5.4 アプリオリアルゴリズムによる高速化
    5.6 ユーザー間型メモリベース法協調フィルタリング
    5.7 回帰モデル
    5.8 行列分解
        5.8.1 行列分解の概要
        5.8.2 特異値分解(SVD:Singular Value Decomposition)
        5.8.3 非負値行列分解(NMF:Non-negative Matrix Factorization)
        5.8.4 明示的な評価値に対する行列分解(MF:Matrix Factorization)
        5.8.5 暗黙的な評価値に対する行列分解(IMF:Implicit Matrix Factorization)
        5.8.6 BPR(Bayesian Personalized Ranking)
        5.8.7 FM(Factorization Machines)
    5.9 自然言語処理手法の推薦システム応用
        5.9.1 トピックモデル
        5.9.2 LDAを利用したコンテンツベース推薦
        5.9.3 LDAを利用した協調フィルタリング推薦
        5.9.4 word2vec
        5.9.5 word2vecを利用したコンテンツベース推薦
        5.9.6 word2vecを利用した協調フィルタリング推薦(item2vec)
    5.10 深層学習(Deep Learning)
        5.10.1 深層学習を活用した推薦システム
        5.10.2 実装
        5.10.3 実務での深層学習の活用
    5.11 バンディットアルゴリズム
    5.12 まとめ

6章 実システムへの組み込み
    6.1 システム概要
        6.1.1 バッチ推薦とリアルタイム推薦
        6.1.2 代表的な推薦システム概要
        6.1.3 多段階推薦
        6.1.4 近似最近傍探索
    6.2 ログの設計
        6.2.1 クライアントサイドのログ
        6.2.2 サーバーサイドのログ
        6.2.3 ユーザー行動ログの具体例
    6.3 実システムの例
        6.3.1 バッチ推薦
        6.3.2 リアルタイム推薦
    6.4 まとめ

7章 推薦システムの評価
    7.1 3つの評価方法の概要
    7.2 オフライン評価
        7.2.1 モデルの精度評価
        7.2.2 モデルのバリデーション
        7.2.3 モデルのチューニング
        7.2.4 評価指標
    7.3 オンライン評価
        7.3.1 A/Bテスト
        7.3.2 インターリービング
    7.4 ユーザースタディによる評価
        7.4.1 調査の設計
        7.4.2 アンケートの一例
    7.5 まとめ

8章 発展的なトピック
    8.1 国際会議
    8.2 バイアス
        8.2.1 セレクションバイアス
        8.2.2 同調バイアス
        8.2.3 表示バイアス
        8.2.4 ポジションバイアス
        8.2.5 人気バイアス
        8.2.6 不公平性
        8.2.7 フィードバックループによるバイアスの増幅
    8.3 相互推薦システム
        8.3.1 従来の推薦システムと相互推薦システムの比較
    8.4 Uplift Modeling
    8.5 ドメインに応じた特徴と課題
        8.5.1 楽曲推薦
        8.5.2 ファッション推薦
        8.5.3 ニュース推薦
        8.5.4 動画推薦
        8.5.5 食の推薦
        8.5.6 仕事の推薦
    8.6 まとめ

付録A Netflix Prize
    A.1 Netflixの創業
    A.2 推薦システムの開発
    A.3 Netflix Prize
        A.3.1 Netflix Prizeの影響
    A.4 Netflixでの推薦システムの具体例
    A.5 まとめ

付録B ユーザー間型メモリベース法の詳細

あとがき
索引