有給医のライフハック記録

医師の語る人生最適化戦略

『スッキリわかる Pythonによる機械学習入門』をGoogle Colaboratoryで写経【機械学習の入門書】

 

2022年1月下旬から2月上旬にかけて読んだ技術書を紹介します。いままでと同様、今回も機械学習についての書籍を選び、実践していましたよ。

 

サラッと立ち読みした感じ、悪くなさそうでしたので、読んでみることにしました。なお、書籍では「jupyter notebook」環境であることを前提にコードが載っていますが、僕が大好きな「Google Colaboratory 」でも問題なく全てのコードが動きました

 

環境設定が面倒くさい人、python環境があらかじめインストールしてあり内部的にぶつかりそうな人、についてはGoogleブラウザでの実行をおススメします。

 

ここから本題です。

 

『スッキリわかる Pythonによる 機械学習入門』

出版社:インプレス 、著者:須藤秋良 

おススメ度:★★★★★

 

題名のとおり「ザ・機械学習の入門書」という書籍です。ページ数は全体で600ページ強あり、入門書とはいうものの、かなりガッツリした構成になっています。

 

全体を通じて解説は分かりやすく、特段の数学知識がなくても実践できます。ただし、やはりというか、pythonの基本構文が分からないと意味不明になってしまうと思いますね。

 

また頻繁に使う構文やメソッドについて随所で要約がありますし、最後のほうのページは辞書のようになっていますので、後からでも参照しやすいのがメリットですかね。

 

ただし、いわゆる「ディープラーニング関係」の技術については、省略されています。あくまで古典的というか、いわゆる「機械学習」がメインです。こちらについては、あとで章立てで触れています。

 

概要

章立て

大まかな章立ては、次のような感じ。

第Ⅰ部:機械学習の総括。統計学事項のまとめ。

第Ⅱ部:本題部分。「教師あり学習」の回帰と分類をひと通り眺める感じ。

第Ⅲ部:応用。「教師あり学習」の応用技術に加えて、「教師なし学習」のクラスタリングと次元削除を扱う。

そもそも論(必見)

そもそも、の話。AI、機械学習ディープラーニングあたりの単語がごちゃ混ぜになっている方って、案外多いのかな、と。僕も最近まで全く知らなかったのですが。ここで一つ整理します。

 

AI(人工知能) ⊃ 機械学習 ⊃ ディープラーニング技術

 

AI(人工知能)という大きな括りがあって、そのなかの一要素として機械学習があります。さらに、機械学習のうち、最近流行のものがディープラーニング技術というわけ。AIっていうタームは実際のところボヤっとした定義でして、すごく抽象的なんですよね。たぶん、python機械学習自体には興味が無い人でも、知っておいたほうがいい括りだと思います。

 

でもって。機械学習ってそもそも何、って話で。ずばり「データの集合を機械(コンピュータ)に投げて、法則性を見つける。分類させる」方法論ってところ。すごくざっくりですけれども。この定義自体は変わりがないもので、これも覚えておいたほうが良いです。

 

プログラミング自体が思っているよりも、すごく原始的な営みなんですよね。人間が法則を見つけて、条件分岐(ifとかwhile)を実装しなきゃならない。面倒くさいし、そもそも分類条件を人間が書くのにも限界があって。人間がプログラミングをする手間を省きたいわけです。

 

ですので、機械自体に判断させる技術、というのが脚光を浴びたわけです。

教師あり学習 と 教師なし学習

教師、って単語を聞くと、なんか小難しい気がしますが。なんてことはなくて、実際には「データのセット」というだけ。

 

教師あり学習、の場合、「入力データ」と「正解(分類だったり数値だったり)」がセットで機械に与えられます。セットで与えてあげて、たとえば数値を予測したり分類を当てさせたりするわけです。

教師なし学習、の場合、「入力データ」のみを機械に与えて、たとえばデータを整理したり、という風に加工するわけです。

流れ

書籍中ではPandasという表計算に使うライブラリと、scikit-learnという機械学習モデル作成のライブラリを使っています。Pandasの使い方が、かなり独特なので、こちらは興味があれば書籍を買ってみてください。

 

「事業目標の明確化→データ確保→前処理(Pandas)→学習(scikit-learn)→評価」

 

というPDCAサイクルを回すイメージです。

 

ちなみに、上でいうと、前処理は得られたデータを加工して解析しやすくする課程です。学習は文字通り、データを与えて機械に学習させて、法則をあぶりだす過程です。

 

個人的見解

すぐに大規模な開発に使用できる、というものでもありませんが。

 

個人や小企業レベルで使う予測モデルを作るぶんには、十分に通用すると思います。

 

ただ、やってて思ったのは「機械学習って結局データが命だよな」と。画像にしろ何にしろ、データがないことには話が進みません。またデータ数が小さいと、ノイズが入り込みやすく、これまた有効なモデルが作れないのです。

 

プログラミングや機械学習技術うんぬんの前に、そもそも膨大なデータを集めるほうが有効な投資になると思います。費用対効果的に。

 

ですので、もし会社で機械学習やらディープラーニングの開発部門を立ち上げたいのなら、とにもかくにも「膨大なデータベース」を確保してください。社内サーバーを立てて、SQLでデータベース構築するくらいまでなら、IT素人でも全然、余裕で出来ると思います。技術屋を呼ぶのは、そこから先で十分間に合うでしょう。

 

そんな風に感じました。

 

語郎