試験公開中

このエントリーをはてなブックマークに追加

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

インプレス

4,000円+税

機械学習の各理論、数学的背景、Pythonコーディングの実際を網羅的に解説。初期のアルゴリズムから、ニューラルネットワーク(CNN/RNN)までの手法を取り上げます。第2版では、第1版への読者のフィードバックを随所に反映し、ライブラリの更新に対応しました。13章以降はほとんど新規の書き下ろしです。

【注意】本書のEPUB版は固定レイアウト型になっております。文字の大きさの変更や検索、引用などはお使いいただけません。画面の大きい端末でご利用ください。

関連サイト

本書の関連ページが用意されています。

内容紹介

機械学習本ベストセラーの第2版!

著者陣の経験に基づく洞察とより専門的な知識を学べる

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

◎本書は『Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow, 2nd Edition』の翻訳書です。

◎微積分/線形代数、Pythonの文法、データ分析用ライブラリについてある程度理解している必要があります。

■「はじめに」より抜粋

機械学習の実践的なサンプルコードを調べて試してみるのは、この分野に飛び込むのにうってつけの方法である。幅広い概念が明確になるからだ。本書では、Python言語と機械学習ライブラリを使って機械学習の実装を体験してみるほか、アルゴリズムの背後にある数学的な概念を紹介する。それらの概念は、機械学習をうまく利用するために欠かせないものである。したがって、本書は単なる実用書ではない。本書では、機械学習の概念を必要に応じて詳しく説明する。

書誌情報

  • 著者: Sebastian Raschka, Vahid Mirjalili(著), 株式会社クイープ(訳), 福島真太朗(監訳)
  • 発行日: (紙書籍版発行日: 2018-03-16)
  • 最終更新日: 2018-06-21
  • バージョン: 1.2.0
  • ページ数: 624ページ(PDF版換算)
  • 対応フォーマット: PDF, EPUB
  • 出版社: インプレス

対象読者

◎機械学習やデータサイエンスに興味のあるIT技術者/研究者/学生。◎微積分/線形代数、Pythonの文法、データ分析用ライブラリについてある程度理解している必要があります。

著者について

Sebastian Raschka

計算生物学の学術研究プロジェクトで新しいコンピュータ手法の開発に取り組む。データ分析の情報サイト「Analytics Vidhya」では、GitHub上で影響力のあるデータサイエンティストの第1位にランクイン。また、オープンソースの機械学習ライブラリの開発にも参加。データサイエンティストの世界的なコミュニティKaggleが開催する機械学習コンテストでは優秀な結果を出している。

Vahid Mirjalili

ミシガン大学コンピュータサイエンス工学科に在籍。さまざまなコンピュータビジョンプロジェクトで機械学習の応用研究に携わる。分子構造の大規模計算シミュレーションの手法を開発したことで博士号を取得。Pythonコーディングで驚異的な経験を積み、同大学でPythonプログラミングを教える。

株式会社クイープ

1995年、米国サンフランシスコに設立。コンピュータシステムの開発、ローカライズ、コンサルティングを手がけている。2001年に日本法人を設立。主な訳書に、『Machine Learning実践の極意 機械学習システム構築の勘所をつかむ!』『TensorFlow機械学習クックブック Pythonベースの活用レシピ60+』などがある(いずれもインプレス発行)。www.quipu.co.jp

福島真太朗

1981年生まれ。株式会社トヨタIT開発センターのシニアリサーチャー。2004年東京大学理学部物理学科卒業。2006年東京大学大学院新領域創成科学研究科複雑理工学専攻修士課程修了。現在、東京大学大学院情報理工学系研究科数理情報学専攻博士課程に在学中。専攻は機械学習・データマイニング・非線形力学系。

目次

はじめに

第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

Home 書籍一覧 [第2版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践 ▲ ページトップへ戻る