モデルの予測精度を上げるための考え方・方針

シェアする

目的変数 Y と説明変数 X との間で、回帰分析やクラス分類を行い、モデル Y = f(X) を構築します。もちろん予測精度の高いモデルが望ましいですので、モデルの予測精度を上げるために、いろいろと工夫をします。その工夫の方針は、以下の 5 つです。

  1. Y を表現できる情報を X に追加する
  2. Y を表現する情報を X から抽出する
  3. Y と関係ない情報を X から除く
  4. Y と X が一貫した関係をもつデータセットにする
  5. モデルの適用範囲を広げる

そもそも X の中に Y に関連する情報がないと (極端な話、乱数の X しかないと)、どんな回帰分析手法、クラス分類手法を用いても、予測精度の良いモデルはできません。そこで、たとえば材料設計のときに Y が何らかの材料の物性であるとき、その物性と関連するような特徴量は何か、考えますし、プラントのプロセスデータを扱うときに Y が何らかの製品品質であるとき、その品質と関連するようなプロセス変数は何か考えます。ちなみに複数の物質が混ざっているときはこちらに書いたとおりです。

特徴量に関する基本的な考え方~複数の物質が混合されてできた物質~
ポリマー設計において、共重合体 (コポリマー) の特徴量を考えるとき、各モノマーを数値化した後に、それらのモノマーの組成比を重みとした重みつ...

X の中に Y に関連する情報があっても、その情報を抽出してモデル化できないと意味がありません。X と Y の間の関係が非線形のときは、線形手法ではなく非線形手法を用いる必要があります。また関係が複雑で、さらにサンプルがたくさんあるときは、深層学習を用いるとよいです。ただ実際には、X と Y の関係がどのようなものかわかりませんので、いろいろな手法を検討することになります。

回帰分析手法・クラス分類手法の選び方
いつもどんな感じで回帰分析手法・クラス分類手法を選んでいるかお話します。予測結果の r2, RMSE, MAE, 正解率, ... といった...

Y に関係する情報を X に含めることが大事な一方で、逆に関係しない情報が X の中にあると、モデル構築のときのノイズとなります。ノイズにもフィットするようにモデルが構築されてしまい、新しいデータ (モデル構築時のデータとはノイズが異なるデータ) に対する予測精度は下がってしまいます。いわゆるオーバーフィッティングです。Y に関係する X の情報がノイズに埋もれてしまい、適切に抽出できないこともあります。いわゆるアンダーフィッティングです。もちろん回帰分析手法やクラス分類手法で対処できる部分もありますが、事前にわかるときは、あらかじめノイズを除去しておくとよいです。

変数選択・特徴量選択のときの意識は、モデルの予測精度を上げることより、不要な変数・特徴量を削除することです
回帰モデルやクラス分類モデルの予測精度を上げるためモデルを解釈するため色々な目的で変数選択 (特徴量選択) をしていると思います。相関係数に...

データセットの中に外れ値があったり、

外れ値検出 (Outlier Detection) もしくは 外れサンプル検出 (Outlier Sample Detection) ~他の値・サンプルと大きく異なる値・サンプルを見つけよう!~

データセット内に X と Y の関係性が異なるサンプルが混在していたりすると、適切にモデル構築することができません。たとえば X と Y の間に直線関係があり、X と Y の直線がある傾きのサンプル群と、別の傾きのサンプル群とが一緒にあるデータセットでは、どのような傾きにしたらよいかわかりません。回帰分析手法やクラス分類手法を用いるときは、X と Y が一貫した関係をもつデータセットを使用しましょう。たとえば、Y とは別のカテゴリーの情報に基づいてサンプルを分割してからモデルを構築することが望ましいときもあります。

こちらに書いた通り、

モデルの予測精度は、目的変数Yの誤差だけでなくモデルの適用範囲を含めて議論しましょう
新型コロナウイルスの影響もあり、セミナーや講演会はオンラインで行うようになってきました。対面でやるときも、オンラインでやるときも、だいたいど...

モデルの予測精度は、いわゆる混同行列・正解率などや、実測値 vs. 推定値プロット・ r2 などだけでなく、モデルの適用範囲 (Applicability Domain, AD) の広さも関係しています。サンプルの数を増やしたり、X をうまく抽象化したりして AD を広げることを考えます。

特徴量を抽象化して、モデルの逆解析により得られるサンプルの多様性を高める
目的変数 Y と説明変数 X の間で回帰モデルやクラス分類モデル Y = f(X) を構築して、Y がわからない X の値をモデルに入力する...

以上です。

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

シェアする

フォローする