スモールデータを用いたデータ解析・機械学習のアプローチのまとめ

分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。

スモールデータ、すなわちサンプル数が小さいデータセットにおいては、データ解析・機械学習を慎重に行う必要があります。スモールデータにおける問題の詳細は、こちらに書いた通りです。

小さなデータセットが抱える大きな問題
サンプル数が小さいデータセットには、データ解析で回帰分析やクラス分類をするとき、とてつもなく大きな問題があります。回帰分析やクラス分類における問題というと、精度の高いモデルが構築できないことを想像するかもしれません。逆です。精度の高いモデル...

 

ここでは、そのようなスモールデータに対するアプローチ方法をまとめます。アプローチ方法として、状況の評価と状況の改善がありますので、それらに分けてまとめます。

 

[状況の評価] y-randomization

状況の評価としては、y-randomization があります。

y-randomizationで過学習(オーバーフィッティング), Chance Correlation(偶然の相関)の危険度を評価!
回帰モデル・クラス分類モデルの評価のなかで、yランダマイゼーション (y-randomization) についてです。y-scrambling と呼んだりもします。やることは簡単で、目的変数 y の値をサンプル間でシャッフルして、回帰モデル...

 

y-randomization は、現状のスモールデータが偶然の相関の影響をどれくらい受けているかを評価します。現状のスモールデータで構築したモデルを評価したときに、評価結果がどれだけ信頼できないかを評価できます。

トレーニングデータとテストデータの分割や後に出てくるダブルクロスバリデーションによって、回帰モデルやクラス分類モデルの予測性能を評価しますが、スモールデータでは偶然の相関によって、例えば r2 が 1 になりやすかったり、正解率が 100% になりやすかったりします。r2 が 0.9 になったとしても、y-randomization の結果の r2 が 0.8 でしたら、その 0.9 にはほとんど意味がなく、0.9 – 0.8 = 0.1 しか意味がありません。このように、y-randomization によりスモールデータの状況の評価ができます。

 

[状況の改善] ダブルクロスバリデーション

状況の改善としてダブルクロスバリデーションがあります。

ダブルクロスバリデーション(モデルクロスバリデーション)でテストデータいらず~サンプルが少ないときのモデル検証~
回帰モデルやクラス分類モデルを検証するときの話です。モデルの検証一般的には、データセットが与えられたとき、サンプルをモデル構築用サンプル (トレーニングデータ, training dataset) とモデル検証用サンプル (テストデータ, ...

 

トレーニングデータとテストデータの分割では、全サンプルを2つ、すなわちトレーニングデータとテストデータに分けるため、どちらか一方を増やすともう一方が減ってしまいます。スモールデータでサンプル数が小さいときには、トレーニングデータとテストデータのいずれかのサンプルが少なくなってしまいます。

ダブルクロスバリデーションでは、テストデータを全サンプルに、トレーニングデータを (全サンプル – 1サンプル) にできます。ダブルクロスバリデーションによって安定的に予測モデルやクラス分類モデルの予測精度評価ができるため、モデルの過信または過小評価を防げます。

 

[状況の改善] 特徴量を減らす

状況の改善として、特徴量を減らす方法があります。y-randomization で触れたように、スモールデータの問題の一つが偶然の相関です。特徴量を減らすことで、偶然の相関を低減できます。ただし、特徴量を減らすときに、適切な方法で減らしたり、一部特徴量を追加してその分他の特徴量を多く減らしたりすることが重要です。また、特徴量を減らすときに、y の情報を使用してはいけません。y の情報を使うことで、結局、偶然の変換によって特徴量を減らすことになってしまいます。

x だけで特徴量を減らす方法としては、同じ値を持つサンプルの割合や x 間の相関係数に基づいて削除する方法があります。

[Pythonコード付き] 相関係数で変数選択したり変数のクラスタリングをしたりしてみましょう
回帰分析やクラス分類をする前の、データセットの前処理の話です。2 つの説明変数 (記述子・特徴量) の間で、相関係数の絶対値が大きいとき、それらの変数は似ているということです。余計な変数は、回帰モデル・クラス分類モデルに悪影響を及ぼすため、...

 

また、主成分分析やオートエンコーダのように、x の情報を圧縮して x の数を減らした潜在変数に変換することで、特徴量の数を減らす方法も有効です。

他にも、特徴量エンジニアリングによって、ドメイン知識を用いていくつかの特徴量を1つにまとめることで、数を減らすことができます。

 

[状況の改善] x と y の関係を線形にする

状況の改善として、XとYの間の関係を線形に近づけることも有効です。スモールデータのようにサンプル数が小さいと、過学習 (オーバーフィッティング) を起こしやすくなります。また、非線形モデルは、線形モデルと比較して、オーバーフィッティングを起こしやすいです。元々の特徴量から、例えばドメイン知識等で非線形変換を行うことで、(比較的オーバーフィッティングを起こしにくい) 線形モデルでモデリングできます。

 

[状況の改善] 半教師あり学習

状況の改善として、半教師あり学習があります。

[Pythonコード付き] 主成分分析(PCA)に基づく半教師あり学習
回帰分析のときに、教師ありデータ (目的変数 y の値がそろったデータ) と教師なしデータ (y の値がないデータ) とを合わせてから主成分分析 (Principal Component Analysis, PCA) で成分 (潜在変数) ...

 

基本的に、スモールデータでサンプルが少ないのは、y の値をもつサンプルが少ないためであり、例えば、分子のデータなど、y は不明である一方でサンプル自体 (x のデータ) は豊富なことはあります。このようなサンプルを使う半教師あり学習によって、スモールデータの状況を改善できます。例えば、y の不明な x の (豊富な) サンプルを用いて、主成分分析やオートエンコーダを用いて次元圧縮し、そこで計算された潜在変数を x として、y との間でモデル構築を行います。

以下の 論文も参考になると思います。

半教師あり学習するときはサンプル選択しましょう![金子研論文][Pythonコードあり]
半教師あり学習 (半教師付き学習) に関する、金子研学生との共著論文が Chemometrics and Intelligent Laboratory Systems に掲載されました。半教師あり学習のメリットはこちらに書いたとおりでして、...
回帰分析における半教師あり学習 (半教師付き学習) のメリットを確認しました!
以前に、半教師あり学習 (半教師付き学習) における4つのメリットについて書きましたが、その中で回帰分析におけるメリットを議論して、それをQSAR解析・QSPR 解析で確認した論文が、掲載されましたのでご紹介致します。金子研オンラインサロン...

 

[状況の改善] 転移学習

状況の改善として、転移学習があります。

転移学習の方法の選び方
分子設計・材料設計・プロセス設計において、分子記述子や合成条件・製造条件・プロセス条件などの特徴量 x と物性・活性・特性などの目的変数 y の間で、データセットを用いて機械学習により数理モデル y = f(x) を構築したり、構築されたモ...

 

対象とする y の値をもつサンプルが少ない場合でも、他の y の値であればもっているサンプルは存在したり、分子シミュレーションやプロセスシミュレーションによって別の y のサンプルを生成することができたりします。このようなデータを活用して転移学習をすることで、対象の y をモデル構築しやすくなります。

 

今回は、スモールデータ、すなわちサンプル数の少ないデータをデータ解析・機械学習するときのアプローチをまとめました。ぜひ、これらのアプローチを使用することで、スモールデータからでもロバストなモデルを構築していただければと思います。

 

以上です。

質問やコメントなどありましたら、X, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました