Python機械学習プログラミング 達人データサイエンティストによる理論と実装
Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)
インプレス
著者:Sebastian Raschka
訳者:株式会社クイープ
監訳:福島真太朗
本書に寄せて
謝辞
著者紹介
レビュー担当者紹介
はじめに
第1章 「データから学習する能力」をコンピュータに与える
1.1 データを知識に変える「知能機械」
1.2 3種類の機械学習
1.3 「教師あり学習」による未来予測
1.3.1 クラスラベルを予測するための分類
1.3.2 連続値を予測するための回帰
1.4 強化学習による対話問題の解決
1.5 「教師なし学習」による隠れた構造の発見
1.5.1 クラスタリングによるグループの発見
1.5.2 データ圧縮のための次元削減
1.6 基本用語と表記法
1.7 機械学習システムを構築するためのロードマップ
1.8 前処理:データ整形
1.8.1 予測モデルのトレーニングと選択
1.8.2 モデルの評価と未知のインスタンスの予測
1.9 機械学習にPythonを使用する
1.9.1 Pythonパッケージのインストール
まとめ
第2章 分類問題-機械学習アルゴリズムのトレーニング
2.1 人工ニューロン-機械学習の前史
2.2 パーセプトロンの学習アルゴリズムをPythonで実装する
2.3 Irisデータセットでのパーセプトロンモデルのトレーニング
2.4 ADALINEと学習の収束
2.5 勾配降下法によるコスト関数の最小化
2.5.1 ADALINEをPythonで実装する
2.6 大規模な機械学習と確率的勾配降下法
まとめ
第3章 分類問題-機械学習ライブラリscikit-learnの活用
3.1 分類アルゴリズムの選択
3.2 scikit-learn活用へのファーストステップ
3.2.1 scikit-learnを使ったパーセプトロンのトレーニング
3.3 ロジスティック回帰を使ったクラスの確率のモデリング
3.3.1 ロジスティック回帰の直観的知識と条件付き確率
3.3.2 ロジスティクス関数の重みの学習
3.3.3 scikit-learnによるロジスティック回帰モデルのトレーニング
3.3.4 正則化による過学習への対応
3.4 サポートベクトルマシンによる最大マージン分類
3.4.1 最大マージンを直接的に理解する
3.4.2 スラック変数を使った非線形分離可能なケースへの対処
3.4.3 scikit-learnでの代替実装
3.5 カーネルSVMを使った非線形問題の求解
3.5.1 カーネルトリックを使って分離超平面を高次元空間で特定する
3.6 決定木学習
3.6.1 情報利得の最大化:できるだけ高い効果を得る
3.6.2 決定木の構築
3.6.3 ランダムフォレストを使って弱い学習アルゴリズムと強い学習アルゴリズムを結合する
3.7 k近傍法:怠情学習アルゴリズム
まとめ
第4章 データ前処理-よりよいトレーニングセットの構築
4.1 欠測データへの対処
4.1.1 欠測値を持つサンプル/特徴量を取り除く
4.1.2 欠測値を補完する
4.1.3 scikit-learnの推定機API
4.2 カテゴリデータの処理
4.2.1 順序特徴量のマッピング
4.2.2 クラスラベルのエンコーディング
4.2.3 名義特徴量でのone-hotエンコーディング
4.3 データセットをトレーニングデータセットとテストデータセットに分離する
4.4 特徴量の尺度を揃える
4.5 有益な特徴量の選択
4.5.1 L1正則化による疎な解
4.5.2 逐次特徴選択アルゴリズム
4.6 ランダムフォレストで特徴量の重要度にアクセスする
まとめ
第5章 次元削減でデータを圧縮する
5.1 主成分分析による教師なし次元削減
5.1.1 共分散行列の固有対を求める
5.1.2 特徴変換
5.1.3 scikit-learnの主成分分析
5.2 線形判別分析による教師ありデータ圧縮
5.2.1 変動行列を計算する
5.2.2 新しい特徴部分空間の線形判別を選択する
5.2.3 新しい特徴空間にサンプルを射影する
5.2.4 scikit-learnによるLDA
5.3 カーネル主成分分析を使った非線形写像
5.3.1 カーネル関数とカーネルトリック
5.3.2 Pythonでカーネル主成分分析を実装する
5.3.3 新しいデータ点を射影する
5.3.4 scikit-learnのカーネル主成分分析
まとめ
第6章 モデル評価とハイパーパラメータのチューニングのベストプラクティス
6.1 パイプラインによるワークフローの効率化
6.1.1 Breast Cancer Wisconsinデータセットを読み込む
6.1.2 パイプラインで変換器と推定器を結合する
6.2 k分割交差検証を使ったモデルの性能の評価
6.2.1 ホールドアウト法
6.2.2 k分割交差検証
6.3 学習曲線と検証曲線によるアルゴリズムの診断
6.3.1 学習曲線を使ってバイアスとバリアンスの問題を診断する
6.3.2 検証曲線を使って過学習と学習不足を明らかにする
6.4 グリッドサーチによる機械学習モデルのチューニング
6.4.1 グリッドサーチを使ってハイパーパラメータをチューニングする
6.4.2 入れ子式の交差検証によるアルゴリズムの選択
6.5 さまざまな性能評価指標
6.5.1 混同行列を解釈する
6.5.2 分類モデルの適合率と再現率を最適化する
6.5.3 ROC曲線をプロットする
6.5.4 多グラス分類のための性能指標
まとめ
第7章 アンサンブル学習-異なるモデルの組み合わせ
7.1 アンサンブルによる学習
7.2 単純な多数決分類器の実装
7.2.1 多数決方式の分類アルゴリズムを組み合わせる
7.3 アンサンブル分類器の評価とチューニング
7.4 バギング:ブートストラップ標本を使った分類器アンサンブルの構築
7.5 アダブーストによる弱学習器の活用
まとめ
第8章 機械学習の適用1-感情分析
8.1 IMDbの映画レビューデータセットの取得
8.2 BoWモデルの紹介
8.2.1 単語を特徴ベクトルに変換する
8.2.2 TF-IDFを使って単語の関連性を評価する
8.2.3 テキストデータのクレンジング
8.2.4 ドキュメントをトークン化する
8.2.5ドキュメントを分類するロジスティック回帰モデルのトレーニング
8.3 さらに大規模なデータの処理:オンラインアルゴリズムとアウトオブコア学習
まとめ
第9章 機械学習の適用2-Webアプリケーション
9.1 学習済みのscikit-learn推定器をシリアライズする
9.2 データストレージとしてSQLiteデータベースをセットアップする
9.3 Flaskを使ってWEbアプリケーションを開発する
9.3.1 はじめてのFlask WEbアプリケーション
9.3.2 フォームの検証とレンダリング
9.4 映画レビュー分類器をWebアプリケーションとして実装する
9.5 WebアプリケーションをパブリックWebサーバーにデプロイする
9.5.1 映画レビュー分類器を更新する
まとめ
第10章 回帰分析-連続値をとる目的変数の予測
10.1 単純な線形回帰モデル
10.2 Housingデータセットの探索
10.2.1 データセットの重要な特性を可視化する
10.3 最小二乗線形回帰モデルの実装
10.3.1 勾配降下法を使って回帰パラメータの回帰を解く
10.3.2 scikit-learnを使って回帰モデルの係数を推定する
10.4 RANSACを使ったロバスト回帰モデルの学習
10.5 線形回帰モデルの性能評価
10.6 回帰に正則化手法を使用する
10.7 多項式回帰:線形回帰モデルから曲線を見い出す
10.7.1 Housingデータセットで非線形関係をモデリングする
20.7.2 ランダムフォレストを使って非線形関係に対処する
まとめ
第11章 クラスタ分析-ラベルなしデータの分析
11.1 k-means法を使った類似度によるオブジェクトのグループ化
11.1.1 k-means++法
11.1.2 ハードクラスタリングとソフトクラスタリング
11.1.3 エルボー法を使ってクラスタの最適な個数を求める
11.1.4 シルエット図を使ってクラスタリングの性能を数値化する
11.2 クラスタを階層木として構成する
11.2.1 距離行列で階層的クラスタリングを実行する
11.2.2 樹形図をヒートマップと組み合わせる
11.2.3 scikit-learnを使って凝集型階層的クラスタリングを適用する
11.3 DBSCANを使って高密度の領域を特定する
まとめ
第12章 ニューラルネットワーク-画像認識トレーニング
12.1 人工ニューラルネットワークによる複雑な関数のモデリング
12.1.1 単層ニューラルネットワークのまとめ
12.1.2 多層ニューラルネットワークアーキテクチャ
12.1.3 フォワードプロパゲーションによるニューラルネットワークの活性化
12.2 手書きの数字を分類する
12.2.1 MNISTデータセットを取得する
12.2.2 多重パーセプトロンを実装する
12.3 人工ニューラルネットワークをトレーニングする
12.3.1 ロジスティック関数を計算する
12.3.2 バックプロパゲーションを使ってニューラルネットワークをトレーニングする
12.4 バックプロパゲーションに対する直観を養う
12.5 勾配チェックを使ったニューラルネットワークのデバッグ
12.6 ニューラルネットワークでの収束
12.7 その他のニューラルネットワークアーキテクチャ
12.7.1 畳み込みニューラルネットワーク
12.7.2 リカレントニューラルネットワーク
12.8 ニューラルネットワークの実装についての補足
まとめ
第13章 ニューラルネットワーク-数値計算ライブラリTheanoによるトレーニングの並列化
13.1 Theanoを使った式の構築、コンパイル、実行
13.1.1 Theanoとは何か
13.1.2 はじめてのTheano
13.1.3 Theanoを設定する
13.1.4 配列構造を操作する
13.1.5 線形回帰の例
13.2 フィードフォワードニューラルネットワークでの活性化関数の選択
13.2.1 ロジスティック関数のまとめ
13.2.2 ソフトマックス関数を使って多クラス分類の確率を指定する
13.2.3 双曲線正接関数を使って出力範囲を拡大する
13.3 Kerasを使ったニューラルネットワークの効率的なトレーニング
まとめ
付録A Jupyter Notebookの基本的な使い方
付録B matplotlibによる可視化の基礎
付録C 行列の固有分解の基礎
索引