データ化学工学研究室物語
第I部 研究室配属前夜のデータ化学工学
研究室配属前の学部三年生が、AI・機械学習を化学・化学工学の研究に使う考え方を学ぶ。
第4章 表を眺めても見えないもの
新人トレーニングの三週目に与えられた課題は、前の週に意味を整理した表を、二枚の図に変えることだった。
co2_permeability の分布を示す図を一つ。
co2_permeability と co2_n2_selectivity の関係を示す図を一つ。
図の設定を少し変えて、見え方がどう変わるかも確認してください。
第3章の報告会が終わった日の夕方、先輩から slack に届いた課題を、遥は研究室の席でもう一度読み返した。
分布を示す図。
二つの変数の関係を示す図。
講義で、ヒストグラムと散布図という名前は聞いたことがある。実験レポートでグラフを作ったこともある。
それでも今回は、図を作ること自体が目的ではないはずだった。
図にして、何を見るのか。
設定を変えて、何を確かめるのか。
遥は、前の週に作成したデータ辞書を開いた。
co2_permeability:二酸化炭素の透過係数。
co2_n2_selectivity:二酸化炭素と窒素の理想選択性。
measurement_temperature:透過試験時の温度。
最初の解析では、測定温度を一定にしたデータで材料の違いを比較する。
自分でそう提案したことを思い出し、遥は measurement_temperature が同じサンプルだけを選んだ。
元のデータは変更せず、作業用ファイルから条件に合う行を取り出す。
欠損している co2_n2_selectivity は、散布図を作るときだけ除外する。透過係数の値は存在しているため、ヒストグラムには使える。
前の週に考えたことが、今週の作業手順になっていた。
遥は少しだけうれしくなった。
研究室から共有されていたサンプルプログラムを開き、co2_permeability の列を指定した。
実行すると、青い棒が横に並んだ図が表示された。
横軸には co2_permeability。
縦軸には frequency。
二酸化炭素の透過係数がどの範囲に何個あるかを示すヒストグラムだった。
遥は画面を見た。
左側に高い棒があり、右側に低い棒がまばらに続いている。
ほとんどのサンプルは透過係数が低く、ごく少数だけ値が高い。
そう読める気がした。
遥はノートに書いた。
透過係数の小さい高分子膜が多い。
透過係数の高い高分子膜は少ない。
書いてから、画面の上にある設定を見た。
number_of_bins = 10。
ビンの数。
データの値の範囲を、十個に区切っているという意味だった。
課題には、図の設定を少し変えるようにとある。
遥はビンの数を 5 に変えた。
棒の数が減り、図は単純になった。
透過係数の低いサンプルが多いという印象は同じだったが、途中の細かな凹凸は消えた。
次に 20 にした。
今度は棒が細くなり、低い値の範囲にも、いくつかの山があるように見えた。
50 にすると、棒はさらに細くなった。
隣り合う棒の高さが大きく上下し、全体の形より、一つ一つの値が目立つ図になった。
同じデータなのに、違う分布のように見える。
遥は三枚の図を並べた。
どれが正しいのだろう。
対話型AIに尋ねた。
ヒストグラムのビン数には、唯一の正解がありますか。サンプル数が少ない化学データでは、どのように決めればよいですか。
回答には、平方根を使う方法、データの範囲や四分位範囲を使う方法など、いくつかの目安が示された。
ただし、データの目的やサンプル数によって適切な見え方は異なるため、複数の設定を比較することが重要だとも書かれていた。
遥は、以前より少し慎重にその回答を読んだ。
AIが挙げた方法の名前を検索し、統計の入門資料でも確認した。
最良のビン数が一つに決まるわけではない。
少なすぎれば構造が隠れ、多すぎれば偶然のばらつきが強調される。
図を作る人が、見せたい形に合わせて自由に選んでもよい、という意味でもない。
遥はノートに書いた。
ビン数を変えても共通して見えることは何か。
ビン数によってだけ現れる形を、強く解釈しすぎない。
それなら、5, 10, 20 の図を比較し、10 を最初の表示として使うのがよさそうだった。
しかし、まだ気になることがあった。
横軸の右端にある数個のサンプルのために、左側の棒が狭い範囲に押し込められている。
透過係数の最大値は、最小値の何倍なのだろう。
遥は列の最大値と最小値を確認した。
桁がいくつも違っていた。
値が数倍ではなく、数十倍、数百倍と広がっている。
このようなデータを図にするとき、対数目盛を使うことがあると、前日に読んだ資料に書かれていた。
遥はすぐに設定を変える前に、値を確認した。
ゼロはない。負の値もない。欠損している透過係数もない。
対数を扱うための最低限の条件は満たしている。
横軸を対数目盛にしたヒストグラムを作ると、左側に固まっていたサンプルが横に広がった。
先ほどは一つの大きな山に見えた範囲の中にも、値の偏りがあることが分かった。
一方で、横軸の数字の間隔は、普通の目盛とは違っている。
同じ長さの間隔が、同じ差ではなく、同じ倍率を表している。
遥は図の横軸を見ながら、対数目盛を知らない人が見たら誤解しないだろうかと考えた。
軸の名前には、単位と、対数目盛であることが分かる表示が必要だ。
図のタイトルにも、測定温度を一定にしたサンプルであることを書いた。
最初に作った図には、単位も測定条件もなかった。
図だけを見た人には、何を数えた図なのか十分に伝わらない。
遥は保存するファイル名も変えた。
histogram_co2_permeability_fixed_temperature_linear.png。
histogram_co2_permeability_fixed_temperature_log.png。
長い名前だったが、後から見ても違いが分かる。
次は、co2_permeability と co2_n2_selectivity の散布図だった。
横軸に透過係数、縦軸に選択性を指定して実行する。
最初の図では、ほとんどの点が左側に集まり、右側に数個の点が離れていた。
透過係数の大きい点ほど、選択性が低いようにも見える。
けれど、点が重なり、関係を読み取りにくい。
遥は両方の軸を対数目盛にした図も作った。
点の重なりが減り、左上から右下へ、ゆるやかに広がる形が見えた。
透過係数が大きいほど、選択性が低くなる傾向。
第2章で調べた、透過性と選択性のトレードオフが、データにも表れているように見えた。
遥は、すぐにスライドへ『トレードオフを確認した』と書きかけた。
その手を止めた。
見えたように思うことと、確認できたことは同じではない。
まず、何を根拠にそう言うのかを考える必要がある。
遥は相関係数を計算した。
元の値のまま計算した場合も、対数を取った値で計算した場合も、負の値になった。
ただし、値は同じではなかった。
データの表し方を変えると、関係の強さを表す数字も変わる。
相関係数は、二つの変数の直線的な関係を一つの数字にしたものだと、入門資料に書かれていた。
散布図が曲がっていたり、いくつかの集団に分かれていたりすれば、一つの相関係数だけでは関係を表せない。
さらに、相関があるからといって、透過係数が選択性を下げる原因だと断定できるわけではない。
高分子構造や製膜条件の違いが、両方の値に影響している可能性もある。
遥はスライドの文章を直した。
測定温度を一定にした今回のデータでは、透過係数が高いサンプルほど選択性が低い傾向が見られた。
一般的な因果関係を示したものではない。
対象としたデータの範囲外にも当てはまるかは分からない。
書き加えるほど、結論が弱くなるようにも見えた。
けれど、第2章で覚えた『言いすぎない』ということは、こういうことなのだと思った。
散布図を拡大すると、一つだけ気になる点があった。
透過係数も選択性も、周囲の点より高い。
全体の右下がりの傾向から外れ、右上に離れている。
polymer_047。
有望な材料なのだろうか。
それとも、入力ミスなのだろうか。
遥は作業用ファイルを開き、該当する行を確認した。
元の raw ファイルとも値を照合した。
転記による違いはない。
測定温度も、今回選んだ条件と一致している。
欠損値をゼロに変えたわけでもない。
それでも、測定そのものが正しいか、単位が正しいかまでは、このファイルだけでは分からなかった。
遥は、外れた点を図から削除した場合の散布図も作ってみた。
右下がりの関係は、前よりきれいに見えた。
相関係数の絶対値も大きくなった。
一瞬、この図の方が発表しやすいと思った。
けれど、polymer_047 を削除する理由は、『関係がきれいに見えないから』でしかない。
それでは、データを結論に合わせていることになる。
遥は、削除前と削除後の図を保存し、削除前を主な結果にすることにした。
polymer_047 には、確認が必要なサンプルとして名前を表示した。
その日の午後、紺色のパーカーの先輩が研究室に来た。
遥は画面を見せた。
『この点を、外れ値として削除してよいか迷っています』
先輩は散布図を見た。
『どうして削除したいんですか』
『他の点と離れていて、全体の傾向を弱くしているからです』
言ってから、理由として不十分だと自分でも分かった。
先輩はうなずいた。
『離れていることは分かります。でも、離れていることと、間違っていることは別ですね』
『まず、測定や入力の誤りかを確認するんですよね』
『そうです。それに、正しい値なら、研究上いちばん面白いサンプルかもしれません』
先輩は点を指した。
『透過性と選択性の両方が高いなら、なぜこのサンプルだけ違うのかを調べたくなりませんか』
遥は polymer_047 の記述子と製膜温度を、他のサンプルと比較した。
polymer_descriptor_1 の値が、データの端に近い。
周囲に似たサンプルが少ない。
『このサンプルは、他のサンプルと構造がかなり違う可能性があります』
『そうかもしれません。ただ、descriptor_1 が何を表しているかをまだ確認していないので、構造が違うと断定はできませんね』
『はい。推測はできても、決定はできません』
第3章で書いた言葉が、自然に口から出た。
先輩は少し笑った。
『それで大丈夫です。外れた点は、消す前に理由を調べる。測定ミスなら修正する。対象外なら、なぜ対象外かを説明して除く。正しいサンプルなら、その違いを研究する。最初から削除と決めないことです』
遥はノートに書いた。
外れ値 ≠ 誤り。
外れている理由を考える。
先輩は、遥が作ったヒストグラムを見た。
『こちらは、なぜ対数目盛にしたんですか』
『値が何桁にも広がっていて、普通の目盛では低い範囲の違いが見えにくかったからです』
『では、対数目盛の図だけを出しますか』
遥は少し考えた。
『元の値の広がり方を示す図も残した方がよいと思います。対数目盛の方が分布は見やすいですが、見え方を変えていることを明示しないといけません』
『いいですね。図の設定は、正解を作るためではなく、別の角度からデータを見るために変えます』
先輩は、ビン数を変えた三枚の図にも目を通した。
『この三枚から、何が言えますか』
『ビン数に関係なく、透過係数が広い範囲に分布していて、高い値のサンプルが少ないことは共通しています。ただ、細かな山の数はビン数で変わるので、そこは強く解釈できません』
『それなら、比較した意味がありますね』
遥は、図を作ることが少しだけ分かってきた気がした。
見やすい図を一枚作ることではない。
設定を変えても残る特徴と、設定によって現れたり消えたりする特徴を分ける。
図が示すことと、示さないことを考える。
新人トレーニング三回目の進捗報告会では、遥は最初に、線形目盛のヒストグラムを映した。
続いて、ビン数を変えた図を並べた。
最後に、対数目盛の図を示した。
『同じデータですが、設定によって見え方が変わりました』
先生が尋ねた。
『見え方が変わったとき、どの図を採用しましたか』
『主な図としては、ビン数を十にした対数目盛のヒストグラムを選びました。ただし、線形目盛の図と、ビン数を変えた図も確認しました』
『なぜ、対数目盛ですか』
遥は先輩に説明した内容を、自分の言葉でもう一度話した。
『透過係数が何桁にも広がっていて、線形目盛では多くのサンプルが狭い範囲に集まり、分布の違いが見えにくかったからです。ただし、対数目盛であることと単位は、軸に明記しました』
先生は図を見た。
『このヒストグラムから、何が言えますか』
『透過係数は狭い範囲に均等に分布しているのではなく、広い範囲に偏って分布しています。高い透過係数を持つサンプルは少数です』
『何は言えませんか』
『なぜその分布になったかは、この図だけでは分かりません。高分子構造、製膜温度、測定条件などとの関係を別に確認する必要があります』
先生はうなずいた。
『ヒストグラムは一つの変数の分布を見せますが、原因までは説明しません』
次に散布図を示した。
線形目盛では点が左側に集まっている図。
両軸を対数目盛にした図。
測定温度を一定にしたデータと、すべての測定温度を含むデータの図。
課題では二枚の図を求められていたが、遥は自分で比較用の図を一枚追加していた。
『測定温度を混ぜた図では、点のばらつきが大きくなりました。測定温度を一定にすると、透過係数と選択性の負の関係が、少し見えやすくなりました』
先生が尋ねた。
『それは、測定温度が原因だと証明したことになりますか』
『いいえ。温度以外の違いもあるため、原因とは言えません。ただ、条件をそろえずに材料だけの違いとして解釈するのは危険だと考えました』
『第3章で考えたことが、図で確かめられましたね』
遥は、はい、と答えた。
先生は、右上に離れた polymer_047 を指した。
『この点は、どうしましたか』
『削除していません。raw ファイルとの照合と測定条件の確認はしましたが、測定自体や単位が正しいかは追加確認が必要です。正しい値なら、他のサンプルと違う理由を調べる対象だと思います』
『削除した図も作りましたか』
『はい。削除すると相関は強く見えました。でも、傾向をきれいにするために削除するのは適切でないと考えました』
先生は、少し間を置いてから言った。
『図は、主張を飾るためのものではありません。都合のよい結論に近づけるために設定を変えるものでもありません』
先生は散布図に視線を戻した。
『図は、データに対して次の問いを作るための道具です』
次の問い。
polymer_047 は、なぜ他のサンプルと違うのか。
透過係数の分布が広いのは、どの特徴量が関係しているのか。
測定温度を変えると、同じ高分子膜の値はどのように動くのか。
図を作る前には見えていなかった問いが、画面の上に点や棒として現れていた。
先生は、遥の散布図の軸を指した。
『最後に、図だけを他の人へ渡しても、内容が分かるようになっていますか』
遥は確認した。
横軸と縦軸の名前。
単位。
対数目盛であること。
対象とした測定温度。
欠損値を含むサンプル数。
図のタイトル。
すべて入れたつもりだった。
しかし、凡例に使った fixed temperature という表現だけでは、具体的な温度が分からない。
『測定温度の値を、図の中か説明文に明記します』
『そうしてください。研究室で口頭説明を聞けば分かる図ではなく、初めて見る人にも分かる図を作りましょう』
遥は修正点をノートに書いた。
図には、作った人の説明がなくても読める情報を入れる。
報告会のあと、遥は図を作り直した。
見た目を派手にする変更はしなかった。
軸の名前と単位をそろえた。
測定温度を明記した。
対数目盛であることを示した。
欠損値によって散布図から除外されたサンプル数を、図の説明に書いた。
polymer_047 には小さくラベルを付け、確認中であることをメモした。
そして、各図を作ったプログラムも、図と同じ名前が分かるように保存した。
同じ図を後から再現できるようにするためだった。
表を見ていたとき、遥には数字が縦と横に並んでいるだけだった。
ヒストグラムにすると、一つの変数がどの範囲に集まり、どこまで広がっているかが見えた。
散布図にすると、二つの変数が一緒にどのように変わるかが見えた。
条件を分けると、混ざっていた違いの一部が見えた。
外れた点に名前を付けると、消したくなる邪魔な点ではなく、調べるべきサンプルに変わった。
けれど、図がすべてを教えてくれるわけではない。
図の形は、軸、ビン数、対象サンプル、変換方法によって変わる。
見る側だけでなく、作る側も、その影響を受ける。
遥はノートに書いた。
表を図にすると、見えなかったものが見える。
ただし、図の作り方によって、見え方も変わる。
その下に、もう一行加えた。
図は答えではなく、次の問いを見つけるための道具。
作業を終えると、slack に先輩から次の課題が届いていた。
次回は、polymer_descriptor_1 と polymer_descriptor_2 が何を表しているかを考えます。
高分子の繰り返し単位の化学構造と、記述子の説明資料を共有します。
化学構造を、機械学習で扱える数字にする方法を調べてみてください。
添付された資料には、いくつかの高分子の繰り返し単位が描かれていた。
ベンゼン環。
カルボニル基。
エーテル結合。
窒素原子。
その横には、分子量、原子の数、官能基の数、極性に関係する値など、数字の列が並んでいた。
第3章では、列の意味を確認した。
第4章では、その列の分布と関係を図にした。
では、そもそも化学構造は、どのように一列の数字になるのだろう。
遥は、画面に映った高分子の繰り返し単位と、polymer_descriptor_1 の列を見比べた。
化学構造は図の形をしている。
機械学習のデータは表の形をしている。
その間を、何がつないでいるのだろう。
遥はノートの新しいページを開いた。
次に調べる問いが、また一つ増えた。
===
続きはこちら
