内容紹介
機械学習の手法の1つ、教師なし学習に絞って解説した実践書!
教師なし学習は、大きく3つに分類される機械学習の手法のうちの1つ。従来は、教師あり学習が主流でしたが、これからのデータ分析の形を考えると、教師なし学習も大きな一角を占めていくと考えられています。本書では、実践的な視点で、データ内に隠れている見つけにくいパターンを特定し、異常を検出し、自動的に特徴量抽出と選択を行っていきます。さらには、異なる機械学習手法の長所と短所を比較し、データに最適な手法の選び方についても、示していきます。
このような方におすすめ
学生、データサイエンティスト、データ分析にかかわる人、機械学習に興味がある人
目次
詳細目次
目次
まえがき
Ⅰ部 教師なし学習の基礎
1章 機械学習エコシステムにおける教師なし学習の立ち位置
1.1 基本的な機械学習用語
1.2 ルールベース vs. 機械学習
1.3 教師あり学習 vs. 教師なし学習
1.3.1 教師あり学習の利点と欠点
1.3.2 教師なし学習の利点と欠点
1.4 教師なし学習を用いて機械学習システムを改良する
1.4.1 ラベル付きデータが十分にない
1.4.2 過剰適合
1.4.3 次元の呪い
1.4.4 特徴量エンジニアリング
1.4.5 外れ値
1.4.6 データドリフト
1.5 教師あり学習アルゴリズムの紹介
1.5.1 線形手法
1.5.2 近傍ベース法
1.5.3 決定木ベースの手法
1.5.4 サポートベクタマシン
1.5.5 ニューラルネットワーク
1.6 教師なし学習アルゴリズムの詳細
1.6.1 次元削減
1.6.2 クラスタリング
1.6.3 特徴量抽出
1.6.4 教師なし深層学習
1.6.5 教師なし学習を用いた逐次データ分析
1.7 教師なし学習を用いた強化学習
1.8 半教師あり学習
1.9 教師なし学習の応用例
1.9.1 異常検出
1.10 結論
2章 機械学習プロジェクトのはじめから終わりまで
2.1 環境の準備
2.1.1 バージョン管理:Git
2.1.2 本書のGitレポジトリのクローン
2.1.3 科学技術計算ライブラリ:Anacondaディストリビューション
2.1.4 ニューラルネットワーク:TensorFlowとKeras
2.1.5 勾配ブースティングその1:XGBoost
2.1.6 勾配ブースティングその2:LightGBM
2.1.7 クラスタリングアルゴリズム
2.1.8 対話的環境:Jupyter Notebook
2.2 データの概要
2.3 データの準備
2.3.1 データの取得
2.3.2 データの調査
2.3.3 特徴量行列とラベル配列の作成
2.3.4 特徴量エンジニアリングと特徴量選択
2.3.5 データの可視化
2.4 モデルの準備
2.4.1 訓練セットとテストセットへの分割
2.4.2 コスト関数の選択
2.4.3 k分割交差検証セットの作成
2.5 機械学習モデル(PartⅠ)
2.5.1 モデル#1:ロジスティック回帰
2.6 評価尺度
2.6.1 混同行列
2.6.2 適合率-再現率曲線
2.6.3 ROC:受信者動作特性
2.7 機械学習モデル(PartⅡ)
2.7.1 モデル#2:ランダムフォレスト
2.7.2 モデル#3:勾配ブースティング器(XGBoost)
2.7.3 モデル#4:勾配ブースティング器(LightGBM)
2.8 テストセットを用いた4つのモデルの検証
2.9 アンサンブル
2.9.1 スタッキング
2.10 最後のモデル選択
2.11 実運用システムパイプライン
2.12 まとめ
Ⅱ部 scikit-learnを用いた教師なし学習
3章 次元削減
3.1 次元削減を行う動機
3.1.1 MNIST数字データセット
3.2 次元削減アルゴリズム
3.2.1 線形射影 vs. 多様体学習
3.3 PCA(主成分分析)
3.3.1 PCAの概要
3.3.2 PCAの使い方
3.3.3 インクリメンタルPCA
3.3.4 スパースPCA
3.3.5 カーネルPCA
3.4 特異値分解
3.5 ランダム射影
3.5.1 ガウス型ランダム射影
3.5.2 スパースランダム射影
3.6 Isomap
3.7 MDS(多次元尺度構成法)
3.8 LLE(局所線形埋め込み)
3.9 t-SNE
3.10 他の次元削減手法
3.11 辞書学習
3.12 ICA(独立成分分析)
3.13 まとめ
4章 異常検出
4.1 クレジットカード不正検出
4.1.1 データの準備
4.1.2 異常スコア関数の定義
4.1.3 評価尺度の定義
4.1.4 プロット関数の定義
4.2 通常のPCAによる異常検出
4.2.1 元の次元数と同じ数の主成分を用いるPCA
4.2.2 最適な主成分数の探索
4.3 スパースPCAによる異常検出
4.4 カーネルPCAによる異常検出
4.5 ガウス型ランダム射影を用いた異常検出
4.6 スパースランダム射影を用いた異常検出
4.7 非線形異常検出
4.8 辞書学習による異常検出
4.9 ICAによる異常検出
4.10 テストセットに対する不正検出
4.10.1 通常のPCAを用いたテストセットに対する異常検出
4.10.2 ICAを用いたテストセットに対する異常検出
4.10.3 辞書学習を用いたテストセットに対する異常検出
4.11 まとめ
5章 クラスタリング
5.1 MNIST数字データセット
5.1.1 データの準備
5.2 クラスタリングアルゴリズム
5.3 k平均法
5.3.1 k平均法のクラスタ慣性
5.3.2 クラスタリング結果の評価
5.3.3 k平均法の精度
5.3.4 k平均法と主成分の数
5.3.5 元のデータセットに対するk平均法
5.4 階層クラスタリング
5.4.1 凝集型階層クラスタリング
5.4.2 デンドログラム
5.4.3 クラスタリング結果の評価
5.5 DBSCAN
5.5.1 DBSCANアルゴリズム
5.5.2 DBSCANのMNIST数字データセットへの適用
5.5.3 HDBSCAN
5.6 まとめ
6章 グループ分け
6.1 LendingClubデータ
6.1.1 データの準備
6.1.2 文字列から数値への変換
6.1.3 欠損値の補間
6.1.4 特徴量エンジニアリング
6.1.5 最終的な特徴量集合の選択とスケール変換
6.1.6 評価用ラベルの指定
6.2 クラスタリングの評価
6.3 k平均法の適用
6.4 階層クラスタリングの適用
6.5 HDBSCANの適用
6.6 まとめ
Ⅲ部 TensorFlowとKerasを用いた教師なし学習
7章 オートエンコーダ
7.1 ニューラルネットワーク
7.1.1 TensorFlow
7.1.2 Keras
7.2 オートエンコーダ:エンコーダとデコーダ
7.3 未完備オートエンコーダ
7.4 過完備オートエンコーダ
7.5 デンス vs. スパースオートエンコーダ
7.6 ノイズ除去オートエンコーダ
7.7 変分オートエンコーダ
7.8 まとめ
8章 オートエンコーダハンズオン
8.1 データの準備
8.2 オートエンコーダの構成要素
8.3 活性化関数
8.4 最初のオートエンコーダ
8.4.1 損失関数
8.4.2 最適化手法
8.4.3 モデルの訓練
8.4.4 テストセットを用いた評価
8.5 線形活性化関数を用いた2層未完備オートエンコーダ
8.5.1 ノード数を増やしてみる
8.5.2 層を増やしてみる
8.6 非線形オートエンコーダ
8.7 線形活性化関数を用いた過完備オートエンコーダ
8.8 線形活性化関数を用いドロップアウトを適用した過完備オートエンコーダ
8.9 線形活性化関数を用いたスパース過完備オートエンコーダ
8.10 線形活性化関数を用いドロップアウトを適用したスパース過完備オートエンコーダ
8.11 ノイズのあるデータセットへの対応
8.12 ノイズ除去オートエンコーダ
8.12.1 線形活性化関数を用いた2層ノイズ除去未完備オートエンコーダ
8.12.2 線形活性化関数を用いた2層ノイズ除去過完備オートエンコーダ
8.12.3 ReLU活性化関数を用いた2層ノイズ除去過完備オートエンコーダ
8.13 まとめ
9章 半教師あり学習
9.1 データの準備
9.2 教師ありモデル
9.3 教師なしモデル
9.4 半教師ありモデル
9.5 教師あり学習と教師なし学習の威力
9.6 まとめ
Ⅳ部TensorFlowとKerasを用いた深層教師なし学習
10章 制限付きボルツマンマシンを用いた推薦システム
10.1 ボルツマンマシン
10.1.1 制限付きボルツマンマシン(RBM)
10.2 推薦システム
10.2.1 協調フィルタリング
10.2.2 The Netflix Prize
10.3 MovieLensデータセット
10.3.1 データの準備
10.3.2 コスト関数の定義:平均二乗誤差
10.3.3 ベースライン実験
10.4 行列分解
10.4.1 潜在因子が1の場合
10.4.2 潜在因子が3の場合
10.4.3 潜在因子が5の場合
10.5 RBMを用いた協調フィルタリング
10.5.1 RBMニューラルネットワークの構造
10.5.2 RBMクラスの部品の作成
10.5.3 RBMを用いた推薦システムの訓練
10.6 まとめ
11章 深層信念ネットワークを用いた特徴量検出
11.1 深層信念ネットワークの詳細
11.2 MNIST画像クラス分類
11.3 制限付きボルツマンマシン
11.3.1 RBMクラスの構成要素の構築
11.3.2 RBMモデルを用いた画像の生成
11.3.3 中間特徴量検出を見る
11.4 3つのRBMからなるDBNの学習
11.4.1 不正検出の試行
11.4.2 生成された画像
11.5 完全な深層信念ネットワーク
11.5.1 DBNの学習プロセス
11.5.2 DBNの学習
11.6 教師なし学習を用いた教師あり学習手法の改善
11.6.1 画像クラス分類器を改善するための画像生成
11.7 LightGBMを用いた画像クラス分類器
11.7.1 教師あり学習だけの場合
11.7.2 教師なし学習と教師あり学習を併用したシステム
11.8 まとめ
12章 敵対的生成ネットワーク
12.1 GANの考え方
12.1.1 GANの威力
12.2 深層畳み込み敵対的生成ネットワーク
12.3 畳み込みニューラルネットワーク
12.4 DCGAN再訪
12.4.1 DCGANの生成ネットワーク
12.4.2 DCGANの識別ネットワーク
12.4.3 識別モデルと敵対的モデル
12.4.4 MNISTデータセット用DCGAN
12.5 MNIST DCGANの動作
12.5.1 合成画像の生成
12.6 まとめ
13章 時系列クラスタリング
13.1 心電図データ
13.2 時系列クラスタリングに対するアプローチ
13.2.1 k-Shape法
13.3 k-Shape法による時系列クラスタリング:ECGFiveDays
13.3.1 データの準備
13.3.2 訓練と評価
13.4 k-Shape法による時系列クラスタリング:ECG5000
13.4.1 データの準備
13.4.2 訓練と評価
13.5 k平均法を用いたECG5000に対する時系列クラスタリング
13.6 階層DBSCANによる時系列クラスタリング:ECG5000
13.7 時系列クラスタリングアルゴリズムの比較
13.7.1 すべてのデータセットに対するk-Shape法の実行
13.7.2 すべてのデータセットに対するk平均法の実行
13.7.3 すべてのデータセットに対するHDBSCANの実行
13.7.4 3つの時系列クラスタリング手法の比較
13.8 まとめ
14章 終わりに
14.1 教師あり学習
14.2 教師なし学習
14.2.1 scikit-learn
14.2.2 TensorFlowとKeras
14.3 強化学習
14.4 教師なし学習応用が期待される分野
14.5 教師なし学習の未来
14.6 最後に一言
索引
続きを見る