関連サイト
本書の関連ページが用意されています。
内容紹介
機械学習を“実践”で使うスキルを1冊で身に付ける!
機械学習ライブラリの発展により、機械学習のモデル構築は非常に簡単になっています。一方で、構築したモデルを実際に活用するにはモデル構築以外にもデータの収集、前処理、アプリの構築といったプロセスが必要になります。
本書では、こういった機械学習を活用するための技術について包括的に学ぶことのできる書籍です。
「機械学習の基礎は学んだけれど、実際の自分の問題をどう機械学習に落とし込んでいいか分からない」
「機械学習のプログラムは書けるけれど、それをアプリにするにはどうしたらいいか分からない」
といった読者にぴったりの書籍です。
1章から3章までは、Python、Numpy/Pandas/Matplotlibなどライブラリ、scikit-learnを使っての機械学習、データ収集、データベース、Webアプリ制作、Git、デプロイなどについて基礎的な知識を学びます。
4章以降は、いくつかの実践的なユースケースに基づいて、機械学習を実際に近い流れで学習します。ユースケースにより違いはありますが、データ収集、前処理、モデル構築、機械学習による分析・分類、アプリ制作、デプロイといった流れで学習していきます。
4章はDocker Composeを使って分析サーバ、データベースサーバを構築し、その上でクラスタリングを行います。
5章は魚の画像をアップロードすると名前を教えてくれる画像判別アプリを作ります。
6章はWeb上からスクレイピングで収集した自然言語をもとに、特定の内容だけを抽出し、Slackに投稿するシステムを作ります。
7章はSNS(Instagram)から教師データを収集できるようになることを目指します。また、収集したデータを活用し、特定のキーワード(ハッシュタグ)に関する投稿に対し投稿のネガポジ分析ができるアプリケーションを作ります。
※本書の内容を実行するには、macOSでは10.13以降、WindowsではWindows10が必要です。
※なお、WindowsでDockerを使用すると、ツール側にバグが残っていたり、Windowsにインストールされている別のソフトとの干渉などによりエラーが出ることが多くあります。動作を確約できないため、本書では非推奨とさせていただきます(エラーはインターネット上の情報で解決できることもありますので検索をしてみてください)。
書誌情報
- 著者: 吉崎亮介, 鹿野高史, 佐藤芳樹, 山口純平, 小松博
- ページ数: 328ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
吉崎亮介
Chapter 1 ~3、6を担当。
株式会社キカガク代表取締役社長/東京大学 非常勤講師。1991年生まれ。舞鶴高専にて画像処理およびロボットの研究、京都大学大学院にて製造業向けの機械学習を用いた製造工程最適化の研究に従事。株式会社SHIFTでソフトウェアテストの研究開発を経て、株式会社Caratを共同創業。2017年1月より株式会社キカガクとして独立。日本マイクロソフトと共同でビジネス目線の教育事業や、東京大学で非常勤講師としてアカデミック向けの教育事業まで幅広く取り組み、3期目で受講生が20,000人を越える。
鹿野高史
Chapter 4を担当。
株式会社フォーエス所属。1978年生まれ。東京都出身、5人兄弟の長男。日本工業大学建築学科卒業後、フリーターを経て2003年株式会社フォーエス入社。業務系からコンシューマー向けのアプリケーション開発、OS・ネットワークのインフラ基盤構築などを経験。マネージメントなどジェネラリスト方面でキャリアを築いていたが、最近は方向転換し、好きな物作りに近いところでスペシャリストとしてキャリアを進めている。最近の主戦場はビッグデータの収集、分析、モニタリング周り。ユーザーが喜んで使ってもらえるサービスを提供していきたい。機械学習も1つ重要なファクターとして取り組んでいる。趣味はジョギング、スノボ、フットサルなど体を動かすことが好き。
佐藤芳樹
Chapter 5を担当。
1987年11月新潟県佐渡島出身。群馬大学工学部情報工学科でグラフ理論の研究を行う。卒業後、株式会社エヌデーデーに入社し、一貫して公益(主に鉄道)業界の業務システム開発に携わる。入社後、データサイエンスに興味を持ち、機械学習やPythonと出会う。近年は、BIシステム・データウェアハウス構築などデータ基盤関連プロジェクトを中心に参画している。趣味はダーツと博物展巡り。やっぱり亀が好き。
山口純平
Chapter 6を担当。
法政大学システム制御工学科を卒業後、外資系証券、外資系銀行のバックオフィスの業務効率化業務を推進。その後フリーランスとして、システムの上流工程、PMOとして多数のシステムプロジェクトに携わる。現在、会計系コンサル会社にて金融や公共、通信業界のクライアントへITアドバイザリーサービスを提供。最近はRPAに興味を持ち、将来的なRPAの高度化(RPAxAI)に向けて、AI技術やRPAプロジェクトの知識を習得している。趣味は野球観戦で、30年前からの熱狂的な「ソフトバンクホークス」ファン。球場で二人の愛娘と野球観戦を楽しんでいる。
小松博
Chapter 7を担当。
デジタルマーケター&エンジニア。早稲田大学卒、株式会社SO-AI Japan 代表取締役社長。SNSを活用したデジタルマーケティングに明るく、ゴルフ系オウンドメディアをデータドリブンによりサイト訪問者数を2ヶ月で980%アップさせるなど改善し、メディア売却を経験。また、特定業界に特化し、instagram上のバズった投稿事例のみを統計的に抽出できるアプリケーションを独力で開発するなど、SNS運用/広告運用等のデジタルマーケティングからAPI/機械学習を使ったアプリケーション開発まで、SNSマーケティング全域をカバー。現在は「Social、AI、カスタマーデータの活用を軸に、マーケターと顧客の相思相愛(SO-AI)を築く」ことをミッションとし、売上高グローバル1兆円規模の企業を中心にデジタルマーケティングサポートを行っている。
目次
はじめに
Part1 基礎編
Chapter1 イントロダクション
- 1-1 本書について
- 1-2 人工知能機械学習ディープラーニングの違い
- 1-2-1 人工知能(AI)
- 1-2-2 機械学習
- 1-2-3 ディープラーニング
- 1-3 訓練と推論
- 1-3-1 訓練
- 1-3-2 推論
- Column よくある落とし穴
- 1-4 機械学習システムの開発フロー
- 1-4-1 企画・ヒアリング
- 1-4-2 環境構築
- 1-4-3 前処理・構造化
- 1-4-4 モデル構築(機械学習)
- Column 実際の現場での機械学習の導入手順
- 1-4-5 仮運用・検証
- 1-4-6 システム統合
- 1-4-7 本章のまとめ
Chapter2 Pythonのインストールと基礎
- 2-1 Pythonのインストール
- 2-1-1 Windowsの場合
- 2-1-2 macOSの場合
- Column Homebrewとpipは何が違うの?
- 2-2 Jupyter Notebook
- Column Jupyter Notebookで文章や数式を書く
- Column Visual Studio Codeをインストールしておこう
- 2-3 Pythonの基礎
- 2-3-1 プログラミングの基礎
- 2-3-2 クラスとインスタンス
- 2-3-3 データの扱い方
- 2-3-4 複合データの扱い方
- 2-3-5 データの処理
- 2-3-6 条件分岐(if文)
- 2-3-7 繰り返し(for 文)
- 2-3-8 関数
- 2-3-9 クラス
- 2-3-10 プログラムの管理
Chapter3 機械学習を活用するための基礎知識
- 3-1 データ解析の基礎
- 3-1-1 NumPy
- 3-1-2 Pandas
- 3-1-3 Matplotlib
- 3-2 機械学習の基礎
- 3-2-1 scikit-learn
- 3-2-2 データセットの準備
- 3-2-3 モデルの訓練
- 3-2-4 モデルの検証
- 3-2-5 再現性を高めるための工夫
- 3-2-6 訓練済みモデルの保存
- 3-3 データ収集
- 3-3-1 icrawler
- 3-3-2 Selenium
- 3-4 データベース
- 3-4-1 SQLite
- 3-4-2 PostgreSQL
- 3-4-3 ipython-sql
- 3-4-4 SQLAlchemy
- 3-5 Webアプリケーション
- 3-5-1 WebサイトとWebアプリケーションの違い
- 3-5-2 Webアプリケーションの基本
- 3-5-3 Flask
- 3-5-4 推論用API
- 3-6 Git
- 3-6-1 Gitの全体像
- 3-7 デプロイ
- 3-7-1 IaaS
- 3-7-2 PaaS
- 3-7-3 Heroku
- 3-8 Dockerによる仮想環境構築
- 3-8-1 Dockerの基礎
- 3-8-2 コンテナの操作
- 3-8-3 Dockerfile
- 3-9 クラウド
- 3-9-1 Microsoft Azure
Part2 実践編
Chapter4 Docker Composeを利用した機械学習システム構築
- 4-1 本章について
- 4-1-1 本章のゴール
- 4-1-2 対象とする読者
- 4-2 データ分析基盤の構築
- 4-2-1 必要とされるサーバー機能
- 4-2-2 Docker Composeを利用したシステム基盤の構築
- 4-2-3 Docker Composeを用いた環境構築
- 4-2-4 DBコンテナの確認
- 4-2-5 分析コンテナの確認
- 4-2-6 コンテナの停止
- 4-2-7 本節のまとめ
- 4-3 クラスタリング
- 4-3-1 クラスタリングとは
- 4-3-2 データの理解
- 4-3-3 クラスタリングの実行と確認
- 4-4 データ分析と結果の保存
- 4-4-1 環境構築
- Column テーブル定義を変更したら
- 4-4-2 データ投入
- 4-4-3 分析の実行
- Column エルボー法
- 4-4-4 分析結果の保存
- 4-4-5 本章のまとめ
Chapter5 画像データを用いた教師あり学習アプリ構築
- 5-1 本章について
- 5-1-1 本章で作成するアプリ
- 5-2 データ収集
- 5-2-1 実装の概要
- 5-2-2 データ収集スクリプトの実装
- 5-2-3 データ収集スクリプトの実行
- 5-2-4 本節のまとめ
- 5-3 モデル構築
- 5-3-1 Custom Vision Serviceについて
- 5-3-2 モデル構築の準備
- 5-3-3 モデル構築
- 5-3-4 モデルの精度確認
- 5-3-5 データ選別
- Column 泥臭い前処理
- 5-3-6 モデル再構築
- 5-3-7 検証用スクリプトの実装
- 5-3-8 検証用スクリプトの実行
- 5-3-9 本節のまとめ
- 5-4 アプリ作成
- 5-4-1 ページ遷移とプロジェクト構成
- 5-4-2 共通部の実装
- 5-4-3 トップページの実装
- Column どこまでを機械学習に委ねるか
- 5-4-4 アップロード画像表示ページの実装
- 5-4-5 データベース処理の実装
- 5-4-6 分類結果表示ページの実装
- 5-4-7 本節のまとめ
- 5-5 デプロイ
- 5-5-1 デプロイ前の準備
- 5-5-2 デプロイ
- 5-5-3 本章のまとめ
Chapter6 文書分類、文書要約を用いたBot構築
- 6-1 本章について
- 6-1-1 本章の概要、目的
- 6-1-2 システムを作成するきっかけ
- 6-1-3 システムの概要
- 6-1-4 使用する主要なパッケージ
- 6-2 自然言語処理の基礎
- 6-2-1 Janomeを使った形態素解析
- 6-2-2 gensimを使ったトピック分析
- 6-2-3 Summpyを使った文章要約
- 6-3 文書分類
- 6-3-1 データセットを用意する
- 6-3-2 前処理
- 6-3-3 モデル構築
- 6-4 システム構築
- 6-4-1 Webスクレイピング
- 6-4-2 Slackとの連携
- 6-4-3 文書要約
- 6-4-4 Herokuで定期実行
Chapter7 SNSを用いた自然言語収集基盤構築とアプリ構築
- 7-1 本章について
- 7-1-1 本章で作成するアプリ
- 7-2 統合認証プラットフォーム「Auth0」について
- 7-2-1 認証プロトコル「OAuth2.0」
- 7-2-2 統合認証プラットフォーム Auth0
- 7-3 Instagram Graph API連携のための準備
- 7-3-1 Instagram Graph APIの概要
- 7-3-2 Hashtag Search APIを利用する準備について
- 7-3-3 Facebookにアプリを登録する
- 7-3-4 Auth0とFacebookを連携する
- Column Facebookのアクセストークンについて
- 7-4 Instagram Graph APIからデータを取得する
- 7-4-1 Instagram Graph APIからデータを取得するための準備
- 7-4-2 Instagram Graph APIからデータを取得する
- 7-4-3 本節のまとめ
- 7-5 Text Analyticsを用いたネガポジ判定の実装
- 7-5-1 Text Analyticsの概要
- 7-5-2 Text Analytics API利用のための準備
- 7-5-3 Text Analytics APIを使って、ネガポジ判定を行う
- 7-5-4 本節のまとめ
- 7-6 アプリケーション作成デプロイ
- 7-6-1 作成するアプリケーションの詳細
- Column HTML/CSS/JSをなるべく書かずにUI画面を作成する方法
- 7-6-2 アプリをローカル環境で実行する準備
- Column Pythonテンプレートエンジンjinja2
- 7-6-3 ローカルURLの登録
- Column Auth0 Lock
- 7-6-4 アプリをHerokuで実行する
- 7-6-5 本章のまとめ