分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。
金子研において、学生が研究室配属になった後は、新人研修として Python プログラミングを学んだり 色々なデータ解析・機械学習をしたりします。そして毎週、進捗の状況を報告してもらっています。その報告する資料の作り方として、データ解析・機械学習の結果は図表にしましょう、ということを学生にお話ししています。
結果を数値だけで示したり、文章で表現したりする前に、できる限り図と表とで表現できないか検討してみましょう。
例えば、データセットを概観するときに、統計量を確認したり、主成分分析などの可視化手法でデータセットを見える化・可視化したりすることがありますが、統計量や低次元化後のデータを数値で示すのではなく、統計量を表でまとめたり、箱ひげ図で図示したり、低次元化後のプロットを図で表示したりするようにします。ちなみに、表にも数値は含まれますが、統計量等の結果については、有効数字も意識するようにしましょう。例えば Python で出力される結果はひたすら数字の羅列が続きますが、後半の数字に意味はありません。
他にも、回帰分析手法やクラス分類手法ごとに、モデルの予測精度を比較するときに、回帰分析における r2 や RMSE や MAE、クラス分類における正解率や検出率や精度や F値などを示すだけでなく、回帰分析における実測値と予測値との間でプロットを作成したり、混同行列を作ったりして確認します。
モデルを構築した後に、新たなデータの予測をするとき、y の予測値、モデルの適用範囲の指標、獲得関数などの値は、予測する仮想サンプルの数が大きければ大きいほど、大量に出てくることになります。これらの中の、チャンピオンデータ、例えば y の予測値が最も良好なデータや、獲得関数の値が最も大きいデータだけを示すのではなく、y の予測値や獲得関数の値をヒストグラムで示したり、モデルの適用範囲の指標と y の予測値との間の関係を散布図で示したりしましょう。
他の解析の内容でもそうですが、データ解析・機械学習の結果を図や表で示すことが重要です。その理由として、1つはディスカッションする相手に情報を伝えやすくなるためです。ただ1つの数字を見せるよりも、そのデータの全体における位置づけを他のデータとの比較することで、相手により多くの情報を伝えられたり相手が結果を確認しやすくなったり、ディスカッションがスムースに進んだりします。
もう一つの理由は、特異な結果や自分の間違いに気づきやすくなるためです。散布図において、プロットが変に並んでいたり、外れ値があったりすることについて、図示することで確認しやすくなります。それらが重要な結果かもしれませんし、もしくは自身のプログラミングのミスかもしれません。特異な結果であれば、より深掘りしますし、データや自分のコードの間違いであれば、それを改善することができます。いずれにせよ、次につながります。
このように、Python のコードを書いたり、データ解析・機械学習をしたりすることも重要ですが、それらの結果を適切に図や表で表現することも同じくらい重要です。データ解析・機械学習の結果を確認したり、他の人とディスカッションしたりするための資料を作るときは、可能な限り図や表にするようにしましょう。
ちなみに、Datachemical LAB では、上のような考えに基づいて、図や表を作成する機能が豊富に搭載されています。ぜひご検討ください。
以上です。
質問やコメントなどありましたら、X, facebook, メールなどでご連絡いただけるとうれしいです。