「Pythonで学ぶ実験計画法入門」書評

画像1

講談社サイエンティフィクさんより、「Pythonで学ぶ実験計画法入門」という本をご恵贈いただきました。この本はしばらく前から話題になっている「マテリアルズ・インフォマティクス(MI)」の実践的な入門書となっています。

高効率な電池を作りたい、高い転移温度を持つ超伝導体を作りたい、高機能な薬を作りたいなど、何かしら目的があるとします。この時、例えば合成する物質の組み合わせや割合、実験方法(たとえば合成温度)など、多くの実験パラメータがあり、それらの中から良いパラメータの組み合わせを探さなければなりません。これは、入力パラメータをX、出力(例えば電池の効率)をYとした時、Yを最大化するようなXを探しなさい、という問題になります。我々が欲しいのは、あるYを実現するXです。しかし、実験してわかるのはXを入力とした時のYです。そこで、いくつかのX→Yの組み合わせから、良さそうなXの候補を効率的に探したくなります。これを経験や勘ではなく、ベイズ推定などの手法に基づいて効率的にやりましょう、というのがマテリアルズ・インフォマティクスです。

1章、2章は導入で、そもそもマテリアルズ・インフォマティクスとはなにか、なぜデータ解析や機械学習が重要なのかが説明されています。特に、1.4「なぜベイズ最適化が必要なのか」については、単に高いYが予想されるXではなく、Yのばらつきも考慮した方が良いことが説明されており、なるほど、と思いました。

3章からは、実際にデータセットをPythonで処理しながら読みすすめることになります。GitHubリポジトリが用意されており、 

git clone https://github.com/hkaneko1985/python_doe_kspub.git

を実行するだけで、必要なものがすべて揃います。Anacondaが入っていればSpyderもあるでしょうから、あとはSpyderでサンプルスクリプトを読み込んで実行ボタンをポチポチ押すだけで本の結果を再現できます。データを読み込み、ヒストグラムや散布図を作ったり、決定木やランダムフォレストを使って予想したりと、Kaggleをやったことある人にはおなじみの処理が並んでいます。数式による説明もありますが、まずはどんどん実行して、「本と同じ図が出るなぁ」と思うだけでも結構楽しいです。いつもVS CodeかJupyter Notebookを使っており、今回はじめてSpyderを使いましたが、変数エクスプローラがわりと便利ですね。

4章はモデルの適用範囲の話です。何かしらの処理より、入力Xから出力Yを予想できるモデルを作ったとします。いちどモデルを作ってしまえば、どんなXを入力しようがYとして何かしらの値が得られますが、当然ですが学習に使ったXの範囲から大きくはずれた値を入力したら、その出力は信用できません。こういう話が真面目に書いてある本はあまり見たことがなく、ユニークです。

6章は応用事例、7章は混合ガウスモデルによる回帰の説明、8章は数学の基礎やPython環境の構築などにあてられているため、本書でまず学ぶべき内容は、3、4、5章にまとまっていると言えそうです。3、4章は、XとYの組み合わせから、X→Yを推定するモデルを作る話でした。5章では、このモデルを使って、「次のどのXを試すべきか」を推定する、適応的実験計画法を導入します。これも、まずはざっとコードを実行して「うまくいってるな」と確認してから、何をやっているかを理解し、自分のデータセットに入れ替えて実行してみたりすると良さそうです。ちなみに私の環境ではsample_program_05_03_next_sample_selection.pyがSegmentation faultで実行に失敗したので、後で原因を調べておきます。

本書は、豊富なサンプルコードとサンプルデータに基づき、極めて実践的にマテリアルズ・インフォマティクスが学べる良書だと思います。サンプルコードは10行から100行程度、長くても300行程度と短く簡潔にまとめられており、中身を追うのも難しくないでしょう。

「まえがき」には、本書を著すにいたった著者の思いが書かれています。コロナで思うように実験ができなくなっていること、さらにもともと日本では生産人口が減っており、実験方法を効率化しなければ「ものづくり」の未来が衰退してしまうことへの危機感から、データ解析、機械学習を導入し、さらに適応的実験計画法を実践することで実際の実験回数・製造回数を減らしましょう、という内容です。機械学習が流行して、「機械学習で○○する」的な書籍が雨後の筍のように出版されましたが、本書は類書とは異なり「機械学習のための機械学習」ではなく「使うための機械学習」に徹しており、極めて実践的な内容だと感じました。「マテリアルズ・インフォマティクスに興味はあるけど、プログラミングは敷居が高い」と感じている実験家の方におすすめできる本だと思います。

最後に、献本いただく際にいただいた出版社の方のメールの一部を紹介させてください。

「とてもいい本なので、先生にご紹介いただければ、きっと多くの読者の関心を得られるのではないかと思います」

もちろん出版社にとって出した本は売れるに越したことはありませんが、「いい本だから多くの人の目に触れてほしい」という気持ちで作られていることが感じられました。

P.S. 特にシリーズというわけではないのですが、拙著「ゼロから学ぶPythonプログラミング」となんとなく装丁が似ております。合わせて是非。

画像2


この記事が気に入ったらサポートをしてみませんか?