仕事ではじめる機械学習

[cover photo]
TOPICS
Database
発行年月日
PRINT LENGTH
212
ISBN
978-4-87311-821-5
FORMAT
PDF EPUB

ソフトウェアエンジニアの間でも一般的な言葉になった「機械学習」。本書では、その機械学習やデータ分析の道具をどのようにビジネスに生かしていけば良いのか、また不確実性の高い機械学習プロジェクトの進め方などを「仕事で使う」という観点から整理します。 プロジェクトのはじめ方や、システム構成、学習のためのリソースの収集方法など、読者が「実際どうするの?」と気になるであろう点を中心にまとめています。上司に「人工知能でいい感じの成果を出してくれ」とあいまいな指示をされたとき、本書で学んだことが活きてくるに違いありません。

正誤表

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

第1刷の正誤表

下記をご参照ください。 第1刷正誤表

目次

まえがき

第I部

1章 機械学習プロジェクトのはじめ方
    1.1 機械学習はどのように使われるのか
    1.2 機械学習プロジェクトの流れ
        1.2.1 問題を定式化する
        1.2.2 機械学習をしなくて良い方法を考える
        1.2.3 システム設計を考える
        1.2.4 アルゴリズムを選定する
        1.2.5 特徴量、教師データとログの設計をする
        1.2.6 前処理をする
        1.2.7 学習・パラメータチューニング
        1.2.8 システムに組み込む
    1.3 実システムにおける機械学習の問題点への対処方法
        1.3.1 人手でゴールドスタンダードを用意して、予測性能のモニタリングをする
        1.3.2 予測モデルをモジュール化をしてアルゴリズムのA/Bテストができるようにする
        1.3.3 モデルのバージョン管理をして、いつでも切り戻し可能にする
        1.3.4 データ処理のパイプラインごと保存する
        1.3.5 開発/本番環境の言語/フレームワークは揃える
    1.4 機械学習を含めたシステムを成功させるには
    1.5 この章のまとめ

2章 機械学習で何ができる?
    2.1 どのアルゴリズムを選ぶべきか?
    2.2 分類
        2.2.1 パーセプトロン
        2.2.2 ロジスティック回帰
        2.2.3 SVM
        2.2.4 ニューラルネットワーク
        2.2.5 k-NN
        2.2.6 決定木、ランダムフォレスト、GBDT
    2.3 回帰
        2.3.1 線形回帰の仕組み
    2.4 クラスタリング・次元削減
        2.4.1 クラスタリング
        2.4.2 次元削減
    2.5 その他
        2.5.1 推薦
        2.5.2 異常検知
        2.5.3 頻出パターンマイニング
        2.5.4 強化学習
    2.6 この章のまとめ

3章 学習結果を評価しよう
    3.1 分類の評価
        3.1.1 正解率を使えば良いのか?
        3.1.2 データ数の偏りを考慮する適合率と再現率
        3.1.3 F値でバランスの良い性能を見る
        3.1.4 混同行列を知る
        3.1.5 多クラス分類の平均のとり方: マイクロ平均、マクロ平均
        3.1.6 分類モデルを比較する
    3.2 回帰の評価
        3.2.1 平均二乗誤差
        3.2.2 決定係数
    3.3 機械学習を組み込んだシステムのA/Bテスト
    3.4 この章のまとめ

4章 システムに機械学習を組み込む
    4.1 システムに機械学習を含める流れ
    4.2 システム設計
        4.2.1 混乱しやすい「バッチ処理」と「バッチ学習」
        4.2.2 バッチ処理で学習+予測結果をWebアプリケーションで直接算出する(リアルタイム処理で予測)
        4.2.3 バッチ処理で学習+予測結果をAPI経由で利用する(リアルタイム処理で予測)
        4.2.4 バッチ処理で学習+予測結果をDB経由で利用する(バッチ処理で予測)
        4.2.5 リアルタイム処理で学習をする
        4.2.6 各パターンのまとめ
    4.3 ログ設計
        4.3.1 特徴量や教師データに使いうる情報
        4.3.2 ログを保持する場所
        4.3.3 ログを設計する上での注意点
    4.4 この章のまとめ

5章 学習のためのリソースを収集しよう
    5.1 学習のためのリソースの取得方法
    5.2 公開されたデータセットやモデルを活用する
    5.3 開発者自身が教師データを作る
    5.4 同僚や友人などにデータ入力してもらう
    5.5 クラウドソーシングを活用する
    5.6 サービスに組み込み、ユーザに入力してもらう
    5.7 この章のまとめ

6章 効果検証
    6.1 効果検証の概要
        6.1.1 効果検証までの道程
        6.1.2 オフラインで検証しにくいポイント
    6.2 仮説検定の枠組み
        6.2.1 コインは歪んでいるか
        6.2.2 二群の母比率の差の検定
        6.2.3 偽陽性と偽陰性
    6.3 仮説検定の注意点
        6.3.1 繰り返し検定をしてしまう
        6.3.2 有意差とビジネスインパクト
        6.3.3 複数の検定を同時に行う
    6.4 因果効果の推定
        6.4.1 ルービンの因果モデル
        6.4.2 セレクションバイアス
        6.4.3 ランダム化比較試験
        6.4.4 過去との比較は難しい
    6.5 A/Bテスト
        6.5.1 2群の抽出と標本サイズ
        6.5.2 A/Aテストによる均質さの確認
        6.5.3 A/Bテストの仕組み作り
        6.5.4 テストの終了
    6.6 この章のまとめ

第II部

7章 映画の推薦システムをつくる
    7.1 シナリオ
        7.1.1 推薦システムとは
        7.1.2 応用シーン
    7.2 推薦システムをもっと知ろう
        7.2.1 データの設計と取得
        7.2.2 明示的データと暗黙的データ
        7.2.3 推薦システムのアルゴリズム
        7.2.4 ユーザー間型協調フィルタリング
        7.2.5 アイテム間型協調フィルタリング
        7.2.6 モデルベース協調フィルタリング
        7.2.7 内容ベースフィルタリング
        7.2.8 協調フィルタリングと内容ベースフィルタリングの得手・不得手
        7.2.9 評価尺度
    7.3 MovieLensのデータの傾向を見る
    7.4 推薦システムの実装
        7.4.1 Factorization Machineを使った推薦
        7.4.2 いよいよFactorizatoin Machineで学習する
        7.4.3 ユーザーと映画以外のコンテキストも加える
    7.5 この章のまとめ

8章 Kickstarterの分析、機械学習を使わないという選択肢
    8.1 KickstarterのAPIを調査する
    8.2 Kickstarterのクローラを作成する
    8.3 JSONデータをCSVに変換する
    8.4 Excelで軽く眺めてみる
    8.5 ピボットテーブルでいろいろと眺めてみる
    8.6 達成したのにキャンセルされたプロジェクトを見てみる
    8.7 国別に見てみる
    8.8 レポートを作る
    8.9 今後行いたいこと
    8.10 おわりに

9章 Uplift Modelingによるマーケティング資源の効率化
    9.1 Uplift Modelingの四象限のセグメント
    9.2 A/Bテストの拡張を通じたUplift Modelingの概要
    9.3 Uplift Modelingのためのデータセット生成
    9.4 2つの予測モデルを利用したUplift Modeling
    9.5 Uplift Modellingの評価方法、AUUC
    9.6 実践的な問題での活用
    9.7 Uplift Modelingを本番投入するには
    9.8 この章のまとめ

参考文献
あとがき