購入前に目次をご確認ください

インプレス[コンピュータ・IT]ムック [第2版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践

インプレス / 2018年03月16日 / 全623ページ

著者陣の経験に基づく洞察とより専門的な知識を学べる―本書では、機械学習の各理論、数学的背景、Pythonコーディングの実際を網羅的に解説。初期のアルゴリズムから、ニューラルネットワーク(CNN/RNN)までの手法を取り上げます。Python関連ライブラリとしてはscikit-learnやTensorFlowなどを使用。第2版では、第1版への読者のフィードバックを随所に反映し、ライブラリの更新に対応しました。13章以降はほとんど新規の書き下ろしです。本書は、機械学習を本格的に理解・実践するのに不可欠な一冊となっています。

目次

  • 商標・サンプルコード・正誤表
  • 口絵
  • 謝辞
  • 著者/レビュー担当者紹介
  • はじめに
  • 第1章 「データから学習する能力」をコンピュータに与える1.1 データを知識に変える「知能機械」
  • 1.2 3種類の機械学習
  • 1.2.1 「教師あり学習」による未来予測
  • 1.2.2 強化学習による対話問題の解決
  • 1.2.3 「教師なし学習」による隠れた構造の発見
  • 1.3 基本用語と表記法
  • 1.4 機械学習システムを構築するためのロードマップ
  • 1.4.1 前処理:データ整形
  • 1.4.2 予測モデルのトレーニングと選択
  • 1.4.3 モデルの評価と未知のインスタンスの予測1.5 機械学習にPythonを使用する1.5.1 PythonとPython Package Indexのパッケージのインストール
  • 1.5.2 Anacondaとパッケージマネージャの使用1.5.3 科学計算、データサイエンス、機械学習のパッケージ
  • まとめ
  • 第2章 分類問題―単純な機械学習アルゴリズムのトレーニング2.1 人工ニューロン―機械学習の前史
  • 2.1.1 人工ニューロンの正式な定義
  • 2.1.2 パーセプトロンの学習規則
  • 商標・サンプルコード・正誤表
  • 口絵
  • 謝辞
  • 著者/レビュー担当者紹介
  • はじめに
  • 第1章 「データから学習する能力」をコンピュータに与える1.1 データを知識に変える「知能機械」
  • 1.2 3種類の機械学習
  • 1.2.1 「教師あり学習」による未来予測
  • 1.2.2 強化学習による対話問題の解決
  • 1.2.3 「教師なし学習」による隠れた構造の発見
  • 1.3 基本用語と表記法
  • 1.4 機械学習システムを構築するためのロードマップ
  • 1.4.1 前処理:データ整形
  • 1.4.2 予測モデルのトレーニングと選択
  • 1.4.3 モデルの評価と未知のインスタンスの予測1.5 機械学習にPythonを使用する1.5.1 PythonとPython Package Indexのパッケージのインストール
  • 1.5.2 Anacondaとパッケージマネージャの使用1.5.3 科学計算、データサイエンス、機械学習のパッケージ
  • まとめ
  • 第2章 分類問題―単純な機械学習アルゴリズムのトレーニング2.1 人工ニューロン―機械学習の前史
  • 2.1.1 人工ニューロンの正式な定義
  • 2.1.2 パーセプトロンの学習規則
  • 2.2 パーセプトロンの学習アルゴリズムをPythonで実装する2.2.1 オブジェクト指向のパーセプトロンAPI
  • 2.3 Irisデータセットでのパーセプトロンモデルのトレーニング
  • 2.4 ADALINEと学習の収束
  • 2.5 勾配降下法によるコスト関数の最小化
  • 2.5.1 ADALINEをPythonで実装する
  • 2.5.2 特徴量のスケーリングを通じて勾配降下法を改善する
  • 2.6 大規模な機械学習と確率的勾配降下法
  • まとめ
  • 第3章 分類問題―機械学習ライブラリscikit-learnの活用
  • 3.1 分類アルゴリズムの選択3.2 scikit-learn活用へのファーストステップ:パーセプトロンのトレーニング
  • 3.3 ロジスティック回帰を使ってクラスの確率を予測するモデルの構築
  • 3.3.1 ロジスティック回帰の直観的知識と条件付き確率
  • 3.3.2 ロジスティック関数の重みの学習
  • 3.3.3 ADALINE実装をロジスティック回帰のアルゴリズムに変換する
  • 3.3.4 scikit-learnを使ったロジスティック回帰モデルのトレーニング
  • 3.3.5 正則化による過学習への対処
  • 3.4 サポートベクトルマシンによる最大マージン分類3.4.1 最大マージンを直観的に理解する
  • 3.4.2 スラック変数を使った線形分離不可能なケースへの対処
  • 3.4.3 scikit-learnでの代替実装
  • 3.5 カーネルSVMを使った非線形問題の求解3.5.1 線形分離不可能なデータに対するカーネル手法
  • 3.5.2 カーネルトリックを使って分離超平面を高次元空間で特定する
  • 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 欠測値を補完する
  • 4.1.4 scikit-learnの推定器API
  • 4.2 カテゴリデータの処理4.2.1 名義特徴量と順序特徴量
  • 4.2.2 順序特徴量のマッピング
  • 4.2.3 クラスラベルのエンコーディング
  • 4.2.4 名義特徴量でのone-hotエンコーディング
  • 4.3 データセットをトレーニングデータセットとテストデータセットに分割する
  • 4.4 特徴量の尺度を揃える
  • 4.5 有益な特徴量の選択4.5.1 モデルの複雑さに対するペナルティとしてのL1/L2正則化
  • 4.5.2 L2正則化の幾何学的解釈
  • 4.5.3 L1正則化による疎な解
  • 4.5.4 逐次特徴選択アルゴリズム
  • 4.6 ランダムフォレストで特徴量の重要度にアクセスする
  • まとめ
  • 第5章 次元削減でデータを圧縮する5.1 主成分分析による教師なし次元削減
  • 5.1.1 主成分分析の主要なステップ
  • 5.1.2 主成分を抽出する
  • 5.1.3 全分散と説明分散
  • 5.1.4 特徴変換
  • 5.1.5 scikit-learnの主成分分析
  • 5.2 線形判別分析による教師ありデータ圧縮
  • 5.2.1 主成分分析と線形判別分析
  • 5.2.2 線形判別分析の内部の仕組み5.2.3 変動行列を計算する
  • 5.2.4 新しい特徴部分空間の線形判別を選択する
  • 5.2.5 新しい特徴空間にサンプルを射影する
  • 5.2.6 scikit-learnによる線形判別分析
  • 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 多クラス分類のための性能指標
  • 6.6 クラスの不均衡に対処する
  • まとめ
  • 第7章 アンサンブル学習―異なるモデルの組み合わせ7.1 アンサンブルによる学習
  • 7.2 多数決による分類器の結合7.2.1 単純な多数決分類器を実装する
  • 7.2.2 多数決の原理に基づいて予測を行う
  • 7.3 アンサンブル分類器の評価とチューニング
  • 7.4 バギング:ブートストラップ標本を使った分類器アンサンブルの構築
  • 7.4.1 バギングの概要
  • 7.4.2 バギングを使ってWineデータセットのサンプルを分類する
  • 7.5 アダブーストによる弱学習器の活用
  • 7.5.1 ブースティングの仕組み
  • 7.5.2 scikit-learnを使ってアダブーストを適用する
  • まとめ
  • 第8章 機械学習の適用1―感情分析
  • 8.1 IMDbの映画レビューデータセットでのテキスト処理8.1.1 映画レビューデータセットを取得する
  • 8.1.2 映画レビューデータセットをより便利なフォーマットに変換する
  • 8.2 BoWモデルの紹介
  • 8.2.1 単語を特徴ベクトルに変換する
  • 8.2.2 TF-IDFを使って単語の関連性を評価する
  • 8.2.3 テキストデータのクレンジング
  • 8.2.4 文書をトークン化する
  • 8.2.5 文書を分類するロジスティック回帰モデルのトレーニング
  • 8.3 さらに大規模なデータの処理:オンラインアルゴリズムとアウトオブコア学習
  • 8.4 潜在ディリクレ配分によるトピックモデルの構築
  • 8.4.1 潜在ディリクレ配分を使ってテキスト文書を分解する8.4.2 scikit-learnの潜在ディリクレ配分
  • まとめ
  • 第9章 機械学習の適用2―Webアプリケーション9.1 学習済みのscikit-learn推定器をシリアライズする
  • 9.2 データストレージとしてSQLiteデータベースを設定する
  • 9.3 Flaskを使ってWebアプリケーションを開発する9.3.1 はじめてのFlask Webアプリケーション
  • 9.3.2 フォームの検証とレンダリング
  • 9.3.3 ディレクトリ構造を設定する
  • 9.3.4 Jinja2テンプレートエンジンを使ってマクロを実装する
  • 9.3.5 CSSを使ってスタイルを追加する
  • 9.3.6 結果を表示するページを作成する
  • 9.4 映画レビュー分類器をWebアプリケーションとして実装する
  • 9.4.1 ファイルとディレクトリ:ディレクトリツリーの確認9.4.2 メインアプリケーションをapp.pyとして実装する
  • 9.4.3 レビューフォームを作成する
  • 9.4.4 結果ページのテンプレートを作成する
  • 9.5 WebアプリケーションをパブリックWebサーバーにデプロイする9.5.1 PythonAnywhereのアカウントを作成する
  • 9.5.2 映画レビューアプリケーションをアップロードする
  • 9.5.3 映画レビュー分類器を更新する
  • まとめ
  • 第10章 回帰分析―連続値をとる目的変数の予測10.1 線形回帰
  • 10.1.1 単線形回帰
  • 10.1.2 重線形回帰10.2 Housingデータセットの探索
  • 10.2.1 Housingデータセットをデータフレームに読み込む
  • 10.2.2 データセットの重要な特性を可視化する
  • 10.2.3 相関行列を使って関係を調べる
  • 10.3 最小二乗線形回帰モデルの実装10.3.1 勾配降下法を使って回帰パラメータの回帰を解く
  • 10.3.2 scikit-learnを使って回帰モデルの係数を推定する
  • 10.4 RANSACを使ったロバスト回帰モデルの学習
  • 10.5 線形回帰モデルの性能評価
  • 10.6 回帰に正則化手法を使用する
  • 10.7 多項式回帰:線形回帰モデルから曲線を見い出す
  • 10.7.1 scikit-learnを使って多項式の項を追加する
  • 10.7.2 Housingデータセットで非線形関係をモデル化する
  • 10.7.3 ランダムフォレストを使って非線形関係に対処する
  • まとめ
  • 第11章 クラスタ分析―ラベルなしデータの分析11.1 k-means法を使った類似度によるオブジェクトのグループ化
  • 11.1.1 scikit-learnを使ったk-meansクラスタリング
  • 11.1.2 k-means++法を使ってセントロイドの初期値をよりスマートに設定する
  • 11.1.3 ハードクラスタリングとソフトクラスタリング
  • 11.1.4 エルボー法を使ってクラスタの最適な個数を求める
  • 11.1.5 シルエット図を使ってクラスタリングの性能を数値化する
  • 11.2 クラスタを階層木として構成する
  • 11.2.1 ボトムアップ方式でのクラスタのグループ化
  • 11.2.2 距離行列で階層的クラスタリングを実行する
  • 11.2.3 樹形図をヒートマップと組み合わせる
  • 11.2.4 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.3.3 バックプロパゲーションによるニューラルネットワークのトレーニング
  • 12.4 ニューラルネットワークでの収束
  • 12.5 ニューラルネットワークの実装についての補足
  • まとめ
  • 第13章 ニューラルネットワークのトレーニングをTensorFlowで並列化
  • 13.1 TensorFlowとトレーニングの性能
  • 13.1.1 TensorFlowとは何か13.1.2 TensorFlowの学び方
  • 13.1.3 TensorFlow:最初のステップ
  • 13.1.4 配列構造を操作する
  • 13.1.5 TensorFlowの低レベルAPIを使って単純なモデルを開発する
  • 13.2 TensorFlowの高レベルAPI:ニューラルネットワークの効率的なトレーニング
  • 13.2.1 TensorFlowのLayers.APIを使って多層ニューラルネットワークを構築する
  • 13.2.2 Kerasを使って多層ニューラルネットワークを開発する
  • 13.3 多層ニューラルネットワークでの活性化関数の選択
  • 13.3.1 ロジスティック関数のまとめ
  • 13.3.2 ソフトマックス関数を使って多クラス分類の所属確率を推定する
  • 13.3.3 双曲線正接関数を使って出力範囲を拡大する
  • 13.3.4 ReLUで勾配消失問題に対処する
  • まとめ
  • 第14章 TensorFlowのメカニズムと機能
  • 14.1 TensorFlowの主な特徴14.2 TensorFlowの階数とテンソル
  • 14.2.1 テンソルの階数と形状を取得する方法
  • 14.3 TensorFlowの計算グラフ
  • 14.4 TensorFlowのプレースホルダ14.4.1 プレースホルダを定義する
  • 14.4.2 プレースホルダにデータを供給する
  • 14.4.3 さまざまなバッチサイズに合わせてプレースホルダを定義する
  • 14.5 TensorFlowの変数14.5.1 変数を定義する
  • 14.5.2 変数を初期化する
  • 14.5.3 変数スコープ
  • 14.5.4 変数を再利用する
  • 14.6 回帰モデルの構築
  • 14.7 計算グラフのオブジェクトを名前で実行する
  • 14.8 TensorFlowでのモデルの保存と復元
  • 14.9 テンソルを多次元配列として変換する
  • 14.10 計算グラフの構築に制御フローを使用する
  • 14.11 計算グラフをTensorBoardで可視化する
  • 14.11.1 TensorBoardをさらに試してみるまとめ
  • 第15章 画像の分類―ディープ畳み込みニューラルネットワーク15.1 畳み込みニューラルネットワークの構成要素
  • 15.1.1 畳み込みニューラルネットワークと特徴階層
  • 15.1.2 離散畳み込みを実行する
  • 15.1.3 サブサンプリング
  • 15.2 畳み込みニューラルネットワークの構築15.2.1 複数の入力チャネルを操作する
  • 15.2.2 ドロップアウトによるニューラルネットワークの正則化
  • 15.3 TensorFlowを使ってディープ畳み込みニューラルネットワークを実装する
  • 15.3.1 多層CNNアーキテクチャ15.3.2 データの読み込みと前処理
  • 15.3.3 TensorFlowの低レベルAPIを使ってCNNを実装する
  • 15.3.4 TensorFlowのLayers APIを使ってCNNを実装する
  • まとめ
  • 第16章 系列データのモデル化―リカレントニューラルネットワーク
  • 16.1 系列データ16.1.1 系列データのモデル化:順序は大切16.1.2 系列データを表現する
  • 16.1.3 シーケンスモデルのさまざまなカテゴリ
  • 16.2 リカレントニューラルネットワーク:シーケンスモデルの構築16.2.1 RNNの構造とデータの流れを理解する
  • 16.2.2 RNNで活性化を計算する
  • 16.2.3 長期的な相互作用の学習
  • 16.2.4 LSTMのユニット
  • 16.3 多層RNNの実装:TensorFlowでのシーケンスモデルの構築
  • 16.4 プロジェクト1:多層RNNを使ったIMDb映画レビューの感情分析16.4.1 データの準備
  • 16.4.2 埋め込み
  • 16.4.3 RNNモデルの構築
  • 16.4.4 SentimentRNNクラスのコンストラクタ16.4.5 buildメソッド
  • 16.4.6 trainメソッド
  • 16.4.7 predictメソッド
  • 16.4.8 SentimentRNNクラスのインスタンス化16.4.9 感情分析RNNモデルのトレーニングと最適化
  • 16.5 プロジェクト2:文字レベルの言語モデルとしてRNNをTensorFlowで実装
  • 16.5.1 データの準備
  • 16.5.2 文字レベルのRNNモデルの構築16.5.3 CharRNNクラスのコンストラクタ
  • 16.5.4 buildメソッド
  • 16.5.5 trainメソッド
  • 16.5.6 sampleメソッド
  • 16.5.7 CharRNNモデルの作成とトレーニング
  • 16.5.8 サンプリングモードのCharRNNモデル
  • 本章と本書のまとめ
  • 付録A Jupyter Notebookの基本的な使用方法A.1 インストールと起動
  • A.2 ノートブックの作成と保存
  • A.3 セルの入力と実行
  • A.4 他のフォーマットへの変換
  • A.5 拡張機能
  • A.6 参考文献
  • 付録B matplotlibによる可視化の基礎B.1 pyplotを用いた可視化
  • B.2 描画対象のFigureの明示
  • B.3 複数の図のプロット
  • B.4 アニメーションの作成
  • B.5 日本語フォントの設定
  • 付録C 行列の固有分解の基礎C.1 行列によるベクトルの回転
  • C.2 固有ベクトル:行列を掛けても向きが変化しないベクトル
  • C.3 行列の階数(ランク)
  • C.4 参考文献
  • 索引
  • プロフィール/STAFF LIST
  • 奥付

※このデジタル雑誌には目次に記載されているコンテンツが含まれています。それ以外のコンテンツは、本誌のコンテンツであっても含まれていません のでご注意ください。

※電子版では、紙の雑誌と内容が一部異なる場合や、掲載されないページがある場合があります。

 

電子書籍は初めての方へ。マガストアで一度購入すると、スマホでもタブレットでもPCでも閲覧できます。

電子書籍は初めての方へ

ジャンル別ランキング
「パソコン・モバイル」
2024年04月17日

総合ランキング
2024年04月17日

アプリダウンロード
はこちら

App Store でマガストアをダウンロード Android app on Google Play