広告 書評 統計学

【書評】スモールデータ解析と機械学習

スモールデータ解析と機械学習2

どうも。こんにちは。
ケミカルエンジニアのこーしです。

本日は、「スモールデータ解析と機械学習」の書評を書いていきます!

「ビッグデータで覇権を握るのは GAFAM などのビッグテック。ならば戦場を変えるしかない!」

本書は、ビッグデータ全盛の時代に、あえて「取りこぼされたデータ」へ目を向ける、そんな逆張りの戦略書です。

同時に、古典的な機械学習の手法を理論からしっかり学べる教科書です。

私自身、化学プラントのプロセスデータを扱うケミカルエンジニアとして、本書を3 回通読 しました。

通読するたびに新しい発見がある——そんな一冊を、現場目線でレビューしていきます!

 

対象読者

本書が最も刺さるのは、現場で「数の少ない、偏ったデータ」と日々格闘している人です。

具体的には次のような方に強くオススメします。

  • 製造ライン・プラントのエンジニア
    プロセスデータは変数同士が必ず相関し合う「多重共線性のかたまり」
    本書はその扱いに正面から向き合っています
  • 医療・MI(マテリアルズインフォマティクス)・官能検査などの研究者
    個別症例、実験データ、レアイベント、におい・味・触感といった「ビッグテックが取りこぼすデータ」を扱う人

本書の前書きには、こんな耳の痛い一節があります。

いきなり深層学習とその Python フレームワークから勉強をスタートして、古典的な機械学習の手法について学習が追いついていない "なんちゃってデータサイエンティスト" のみなさんにも、基礎を固めるという意味でおすすめします.

ちなみに著者の藤原先生は京都大学の化学工学出身であり、プラントエンジニアの肌感覚に驚くほどフィットする内容です。

 

難易度と読了時間

難易度:中級(統計検定準1級レベル以上)

本書の魅力は、数式・文章による説明・Python コードがバランスよく配置されている点です。

多くの教科書は「数式の意味はわかっても、実際どうプログラムで計算するのかイメージしづらい」という弱点を抱えていますが、本書は Python コードまで載っているため、アウトプットのイメージまで一気に掴めます。

ただし、一点だけ注意があります。線形代数の前提知識は必須です。

第 2 章でいきなり主成分分析と特異値分解が登場し、ラグランジュの未定乗数法で目的関数を最大化すると固有値問題に帰着するという流れで進みます。

当然ながら、線形代数の公式そのものは軽くしか扱われないので、

固有値分解・特異値分解・レイリー商あたりに不安がある人は、線形代数を一度復習してから読む

ことを強くおすすめします。

逆に言えば、線形代数を復習した直後に読むと、他書とのアプローチの違いを楽しめる構成になっています。

読了時間の目安:

  • 基礎がある人が通読 … おおよそ 1〜2 週間(1 日 30〜60 分ペース)
  • サンプルコードを動かしながら/手を動かして学ぶ … 1 か月程度
  • 第 1 章・第 7 章の「心構え」だけなら … 1〜2 時間

最後の点は意外と重要で、後述するとおり 第 1 章と第 7 章だけでも読む価値がある一冊です。

 

本書の内容と特徴

本書は、全 7 章構成です。

次元削減 → 回帰 → 変数選択 → 不均衡データ → 異常検知、と「スモールデータ解析の王道ルート」を一本道で辿れる構成になっています。

本書全体の特徴

  • 数式・文章・Python コードの三位一体で、理論から実装まで一気通貫
  • 実データでの手法比較ができ、「どの手法がどう効くか」が腹落ちする
  • PLS をスモールデータの武器として丁寧に解説
  • 技術だけでなく現場の心構えまで踏み込む(第 1 章・第 7 章)

 

第 1 章 スモールデータとは

本書の目玉のひとつである「スモールデータ解析」という”個別最適”の戦略的価値が言語化されています。

たとえば、下記のようなデータが「スモールデータ」に該当します。

  • 装置故障などの異常データ
  • 震災や大雨など大規模災害のデータ(極端事象)
  • 実験にて収集されるデータ
  • 倫理的な制約などで、収集してよいサンプル数が制限されているデータ
  • 味や香りの評価など、エキスパートが五感を用いて実施する官能検査データ

これらのデータの解析においては、データが少量であるため、CNNのようにデータから直接特徴を抽出することは困難で、古典的な多変量解析、機械学習の手法を使わざるを得ません。

 

第 2 章 相関関係と主成分分析

主成分分析(PCA)と特異値分解(SVD)を、数式だけでなく文章でもたっぷり説明してくれます。

ラグランジュの未定乗数法で目的関数を最大化すると固有値問題に帰着するという導出の流れがとてもわかりやすいです。

線形代数の教科書を復習した後に読むと理解が深まります。

 

第 3 章 回帰分析と最小二乗法

第3章では、下記について理論もたっぷり学ぶことができます。

  • 最小二乗法
  • BLUE
  • 多重共線性
  • 擬似逆行列
  • 主成分回帰(PCR)
  • リッジ回帰
  • PLS(部分的最小二乗回帰) 

プロセスデータは、タンクの温度と圧力が相関する(ボイル=シャルルの法則)ように、変数同士が相関しているのが当たり前です。

単純な重回帰では多重共線性で回帰係数が不安定になるため、PCR や PLS で相関を処理してやる必要があります。

本書はこの問題を、次のように整理してくれています。

手法 特徴 弱点
リッジ回帰 正則化で係数を安定化 スモールデータ(N<M)
でも係数を計算できるが、解釈しづらい
主成分回帰(PCR) 入力変数の相関を使って次元削減 入出力間の相関は考慮しないため情報を捨てがち
PLS 回帰 入力の線形結合で潜在変数を作り、入出力間の相関まで考慮 スモールデータに強い王道

(N:データ数、M:入力変数の数、R:潜在変数/主成分の数)

個人的には、非線形も扱えるガウス過程回帰や LightGBM の方が精度では強力だと思っています。

それでも現場で PLS が大活躍するのは、最悪Excel でも運用できるからです。

「モデル構築は Python で行い、推論は Excel で」という運用ができ、しかも重み係数から「どの変数が効いているか」を直感的に理解できるので、統計学に詳しくない現場の方々に使ってもらう際の抵抗が圧倒的に少ないです。

 

評価指標についても、初歩ながら大事な指摘があります。

回帰モデルはテストデータの RMSE と相関係数 rだけでなく、実測値と予測値のパリティプロットを必ず目視確認すべきという指摘です。

RMSE は予測値がほぼ一定でも低めに出がちですし、相関係数はバイアスを検知しにくいため、この2 つの指標で絞り込みつつ、パリティプロットで最終判断するようにしましょう!

 

第 4 章 線形回帰モデルにおける入力変数選択

PLS の変数選択手法を 3 つ比較します。

  • PLS-beta … 標準回帰係数の絶対値が小さい変数を削除
  • VIP 法 … 各変数が予測変動に与える影響の大きさで選択
  • NCSC 法 … 変数同士の相関でクラスタリングして選択

k 平均法がユークリッド距離でクラスタリングするのに対し、NCSC 法は相関関係に基づいてクラスタリングするのがポイントです。

距離が近いからといって同じように出力変数へ影響するとは限りません。

あらゆる相関が複雑に絡み合う化学プラントのプロセスデータでは、NCSC 法のほうが理にかなっているケースが多いと感じます。

また、精度が同等なら、より少ない変数で説明できるモデルのほうが良い(オッカムの剃刀)という指摘も納得です。

実務ではランダムフォレストの変数重要度を使う Boruta のほうが強力なこともありますが、NCSC 法に軍配が上がる場面もあり、引き出しは多いに越したことはありません。

 

第 5 章 分類問題と不均衡データ問題

レアイベントを扱うスモールデータでは避けて通れないテーマです。

  • サンプリング手法(データを増減させて偏りを是正)
    • アンダーサンプリング(多数派を減らす)… ランダムアンダーサンプリング(RUS)、トメクリンク など
    • オーバーサンプリング(少数派を増やす)… SMOTEADASYN など
  • アンサンブル学習(複数の弱学習器を組み合わせる)
    • バギング … ランダムフォレストなど
    • ブースティング … AdaBoost、RUSBoostなど

アンサンブル学習は実務でも非常に有用で、異常検知ではサンプリング手法も使いこなせると強い武器になります。

 

第 6 章 異常検知問題

本書のクライマックスとも言えます。

  • 局所外れ値因子法(LOF)
  • アイソレーションフォレスト
  • 多変量統計的プロセス管理(MSPC)
  • オートエンコーダ(AE)

プラントの異常検知にそのまま使える手法を学ぶことができます。

「これを参考に"異常検知アプリ"を作って現場で使えるようにしたい!」と思いました。

 

第 7 章 データ収集や解析の心構え

第 1 章と対をなす、本書の目玉のひとつです。

技術書でありながら、最後は「心構え」で締めくくられます。

本書の手法を学んだうえでこの章を読むと、一段と深く心に沁みてきます。

  • 目的は「精度の高いモデルを作ること」ではない
  • 解くべき問題を見つけることこそ、人間の仕事
  • 三現主義(現場・現物・現実)
  • 解析を前提に収集したデータしか、解析できない
  • 現場との関係構築が最短ルート
  • データセットの質がすべてを決める/データセットの構築は解析者自身がやるべき

派手な AI よりも、「地味なデータセット作りこそが勝負所」という現場データを扱う人ほど刺さるメッセージです。

 

注意点

本書を実際に手を動かしながら読む人へ、読む前にぜひ知っておいてほしい注意点が 2 つあります。

 

① 紙面のサンプルコードには誤植が多い

本書に掲載されているPython コードは、写経していると誤植に何度もつまずきます。

紙面を信じて打ち込むとエラーで止まってしまう箇所が少なくないので、

オーム社の書籍ページからダウンロードできる公式のサンプルプログラム(9784274227783_program.zip)を使うことを強くおすすめします。

ダウンロードはこちらから(※本書をお買い求めになった方向け):

スモールデータ解析と機械学習 | Ohmsha(ダウンロードページ)

 

なお、著者は「はじめに」で、掲載コードは NumPy や Matplotlib 程度に絞り、本文の数式に沿った“素直な書き方”を優先したもので、Python としては洗練されておらず必ずしも実用的ではないと明言しています。

つまり、掲載コードはあくまで「教材(アルゴリズム理解のための写経用)」であり、実務では scikit-learn 等の既存ライブラリを使ってほしいとのことです。

 

② 誤植が多いのに「正誤表がない」

地味に困るのが「正誤表がない」点です。

これだけ誤植があるにもかかわらず、執筆時点でオーム社の書籍ページには正誤表が用意されていません。

(「正誤表はございません。」と明記されています。)

 

次に読むべき本

本書で土台を固めたあと、方向性に応じて次の書籍をおすすめします。

①『化学のための Python によるデータ解析・機械学習入門(改訂 2 版)』

本書と最も相性が良い一冊だと思います。

PLS・変数選択・ソフトセンサー・モデルの適用範囲(AD)・異常検知を学べます。

サンプルコードも GitHub で公開されており、手を動かしながら学べます。

本書と合わせて読むと、スモールデータ解析の解像度が一気に上がると思います。

 

②『Python で学ぶ実験計画法入門 ベイズ最適化によるデータ解析』

実験データという典型的なスモールデータを、ベイズ最適化で効率的に攻めたい人向けの書籍です。

MI(マテリアルズインフォマティクス)に関心があるなら次の一歩として最適です。

また、ガウス過程回帰についても学ぶことができるので、MIとは関係のないプロセスエンジニアにもおすすめしたい一冊です!

 

③『まるごと学べる 異常検知の実践知』

本書の第 6 章(異常検知)をさらに深掘りしたい人向けの書籍です。

私も今読もうとしているところで、異常検知について網羅的に学べる一冊です。

 

まとめ

本書のポイント

  • ビッグデータというレッドオーシャンを避け、スモールデータというブルーオーシャンで個別最適モデルを磨くための戦略書
  • PCA・PLS・変数選択・不均衡データ・異常検知という古典的手法の基礎を固め直せる教科書
  • 「派手な AI より地味なデータセット作り」という現場目線を思い出させてくれる一冊

特に第 1 章と第 7 章の「心構え」は、手法を一通り学んだ後ほど沁みてきます。

3 回読んでなお学びがある——それが本書を繰り返し手に取る理由です。

現場のデータと向き合うすべてのエンジニアに、自信を持っておすすめできる一冊です!

 

 

  • この記事を書いた人
  • 最新記事

こーし

■ケミカルエンジニア
■化学メーカー勤務
■現場配属の生産技術
■化学工学技士、統計検定1級など
■化学工学 × データサイエンス
pythonと数理統計学を勉強中!

-書評, 統計学
-, , , ,