本「フリーライブラリで学ぶ機械学習入門」
勉強会の講義をまとめただけあって、筆者が入門レベルとしてわかってほしいと思ってる所はほぼ分かる(まだ途中読み)。Jupyter notebookを使って順々にスクリプトを自分で動かしていくので、実作業としてもわかりやすい。
(Jupyter notebookはスクリプトの途中に勝手にprint文をどんどん挿入できて、変数に何が入ってるかを確かめられることを覚えてからは、一段と理解が深まった。本筋に関係ないけどこれ便利だわ)
内容としては機械学習の大枠の説明、回帰木、ランダムフォレスト、クラスタリング、潜在ディリクレ分配法、協調フィルタリング、評判分析、画像認識、ディープラーニング理論・実践とよく詰め込んだものだと思う。
機械学習の大枠を実践として知りたい人にはとてもいい本だと思う。プログラム自体が初心者の人には辛い。少なくともPythonの文法は別でやる必要がある。
やってみればすぐ分かるのだけど、たとえば手書き数字の認識プログラムは、プログラムに慣れた人なら半日で基本のところは使えるようになると思う。それぐらい既に確立された技術になっている。(どうやって認識しているのかはブラックボックスのままだが)
問題になるのはリアルに業務として手書き数字を認識させる際の、データ切り取り方や、画像のサイズ圧縮する際の数字としての特徴を残すための方法論だろうと。普通に手書きしてスキャンして、適当に画像を切って読み込ませるたらデータ的中率は0%になった!(笑)余白を限界までなくして画像を切り取ったら60%くらいになった。この余白を無くす切り取りを自動化するところからが始まり。その先をどうやったら99%とかいくんだろうか。
個人的には、Python初心者としてAnacondaやJupyter notebookのインストールでけっこうつまづいた。同じ困った人向けの情報として、kerasのcifar10.load_data()でエラーがでたとき:(ダウンロードの途中でやめてしまったときなど)は、Macなら隠しフォルダを表示できるようにして、usr/login_name/の中にある「.keras」フォルダを削除すると動くかもしれない。
Pythonに限らないんだろうけど、新しいプログラミング言語を導入するときの、最初の環境設定のみを対象にした個人レッスンって需要あると思うんだけど。
一人でやったから雑誌や本を20冊くらい調べてやっと、何がなんだか分かるようになったけど、かけた時間のもったいなさと言ったら。「パスが通らない」の一つをとっても。
機械学習をかじって思ったのは「機械学習って”差分”を減らしていく」ことを、いろんなやり方でやるってことなんね。どんな現象も最終的には、「モデルA = 0.98、モデル B = 0.97だから、モデルAを採用する」みたいな形になって。面白いようなつまらないような。
この本の次にもう3冊用意してある。オトナだから時間をお金で買うのだ。
これは「フリーライブラリで学ぶ機械学習」の兄弟編でいいと思う。説明量が増えてもう一歩先へという感じ。

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
- 作者: Andreas C. Muller,Sarah Guido,中田秀基
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/05/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
次はその発展編。と思ったけど著者はこれすら入門編の位置付けらしい。使ったあとにまた感想を書いてみる。

- 作者: Willi Richert,Luis Pedro Coelho,斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/10/25
- メディア: 大型本
- この商品を含むブログ (5件) を見る
ここまで出来るようになったらすごい!けどやってることは相変わらず差分の精度を上げること。
最後は、ディープラーニング自体を自分で理解&実装しようという志の高い本。ブラックボックスをなくし、本気でゼロから作る。買ったはいいけど、そこまでやるかどうか。。。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (16件) を見る