特徴量選択・変数選択をするときのハイパーパラメータの決め方や考え方

分子設計・材料設計・プロセス設計・プロセス制御において、分子記述子・合成条件や製造条件・プロセス条件・プロセス変数などの特徴量 x と材料の物性・活性・特性や製品の品質など目的変数 y との間で数理モデルを構築します。y の関係のない x を削除したり、構築されたモデルの解釈性を上げたりするため、特徴量選択・変数選択をすることがあります。

特徴量選択をするとき、特徴量選択手法には、解析者が事前に決めるべきパラメータ (ハイパーパラメータ) があります。さらに、特徴量選択手法において回帰分析手法やクラス分類手法を使用するときは、それらの手法におけるハイパーパラメータもあります。今回は、これらのハイパーパラメータの決め方や考え方についてお話しします。

特徴量選択において、ハイパーパラメータを決めるときに考えることは以下の三点です。

 

  • 計算時間: 現実的な時間で終了するか?
  • 手法の達成度: 特徴量選択手法として問題なく達成できているか?
  • オーバーフィッティング: オーバーフィッティングを起こさないか?

 

例を挙げながら説明していきます。

LASSO や、PLS の Variable Importance in Projection (VIP) を考えます。

リッジ回帰(Ridge Regression, RR), Least Absolute Shrinkage and Selection Operator (LASSO), Elastic Net (EN)~誤差の二乗和と一緒に回帰係数の値も小さくする~
リッジ回帰(Ridge Regression, RR), Least Absolute Shrinkage and Selection Operator (LASSO), Elastic Net (EN) について、pdfとパワーポイントの...
部分的最小二乗回帰(Partial Least Squares Regression, PLS)~回帰分析は最初にこれ!~
部分的最小二乗回帰 (Partial Least Squares Regression, PLS) について、pdfとパワーポイントの資料を作成しました。データセットが与えられたときに、PLSで何ができるか、どのようにPLSを計算するかが説...
波長選択と転移学習により培養液におけるグルコース濃度と乳酸濃度の予測精度が向上しました![日立製作所&金子研の共同研究論文]
日立製作所と金子研における共同研究の成果の論文が Analytical Science Advances に掲載されましたので、ご紹介します。タイトルは Transfer learning and wavelength sel...

 

ハイパーパラメータである LASSO の λ や PLS の最適成分数はクロスバリデーションで最適化するとよいです。計算時間もあまりかかりませんし、特徴量選択が効果的なのはある程度予測精度の高い LASSO モデルや PLS モデルが構築されたときであるため、手法の達成度としてもクロスバリデーションにより予測精度を考慮してハイパーパラメータを最適化するので問題ありません。またハイパーパラメータの種類は一つであり、クロスバリデーションであればオーバーフィッティングは起こりにくいと考えられます。このため、クロスバリデーションで LASSO の λ や PLS の最適成分数を最適化して、その後にモデルを構築して特徴量選択をするという流れになります。

続いて、Borutaについて考えます.

[解析結果付き] Boruta、ランダムフォレストの変数重要度に基づく変数選択手法
Boruta という、ランダムフォレスト (Random Forest, RF) の変数重要度に基づいた変数選択手法について、パワーポイントの資料とその pdf ファイルを作成しました。いろいろなデータセットを解析しましたが、モデルの推定性...

 

Boruta の percental (p) は、事前にいくつか候補をあげておき (80%, 90%, 100% など)、それらの値で特徴量選択したあとに比較検討するとよいでしょう。というのも、Boruta を実行したあとにモデルの予測精度の何らかの指標が出力されるわけではありませんし、特徴量選択しただけではハイパーパラメータの良し悪しを判断することは難しいです。特徴量選択した後に、いろいろな回帰分析手法やクラス分類手法でモデルの予測精度の検討をするのがよいです。サンプルや特徴量の数が非常に多いと計算時間はかかりますが、一般的にあまり計算時間はかかりません。そのため、p をもう少し細かく、例えば 80%, 81%, 82%, …, 99%, 100% のように振ることを考える方がいらっしゃるかもしれません。ただ、あまり細かく振りすぎると、その後にいろいろな回帰分析手法やクラス分類手法で検討することもあり、偶然予測精度が高く見積もられたものが選ばれてしまい、偶然の相関を拾ってしまいオーバーフィッティングを起こしてしまう可能性があります。そのため、80%, 90%, 100% のようにざっくりと振っておいた方がよいです。このあたりは、SVM や SVR のハイパーパラメータを 2 の何乗かで振るのと少し似ています。

サポートベクターマシン(Support Vector Machine, SVM)~優秀な(非線形)判別関数~
 サポートベクターマシン(Support Vector Machine, SVM)について、pdfとパワーポイントの資料を作成しました。データセットが与えられたときに、SVMで何ができるか、どのようにSVMを計算するかが説明されています。p...
サポートベクター回帰(Support Vector Regression, SVR)~サンプル数10000以下ならこれを使うべし!~
サポートベクター回帰(Support Vector Regression, SVR)について、pdfとパワーポイントの資料を作成しました。データセットが与えられたときに、SVRで何ができるか、SVRの特徴、どのように計算するかが説明されてい...

 

では Boruta におけるランダムフォレストのハイパーパラメータである特徴量の数もしくは特徴量の数の割合はどうでしょうか。Boruta において、このハイパーパラメータは基本的にある程度ざっくりと決めておけば結果に大きな影響を与えないため、ここでは Boruta の前に、例えば OOB で最適化しておき、それを使用して実行するとよいでしょう。Boruta 内で毎回最適化すると、計算時間もかかりますし、オーバーフィッティングの危険性も出てきます。

最後に GAPLS や GASVR についてです。

GAPLS, GASVR でモデルの推定性能がよくなるように説明変数の選択をしよう![Pythonコードあり]
遺伝的アルゴリズム (Genetic Algorithm, GA) を使って説明変数を選択する話です。2つの手法である Genetic Algorithm-based Partial Least Squares (GAPLS) ...

 

個体数や世代数については、それぞれある程度大きくしておけば十分です。計算時間を見ながら個体数を大きくしておき、世代数は手法の達成度として GA の収束を見て、十分収束するくらい大きい数を選ぶとよいでしょう。

GAPLS における PLS の最適成分数について、GA の繰り返し計算のなかで x の数や種類が変わると最適成分数も変わるため、その都度更新される方がよいです。ハイパーパラメータの数も一つと計算時間がかからないため GA 内でモデル構築するたびにクロスバリデーションで最適化するとよいでしょう。

一方で GASVR においては、もちろん GASVR でも GAPLS と同様に x の数や種類が変わると最適値も変わるため、その都度更新される方がよいのですが、クロスバリデーションで最適化すると計算時間がかかってしまいます。SVR のハイパーパラメータを高速に最適化できる方法があるとはいえ、

[Pythonコードあり] サポートベクター回帰(Support Vector Regression, SVR)のハイパーパラメータを高速に最適化する方法
サポートベクター回帰 (Support Vector Regression, SVR) は、こちら:サポートベクター回帰(Support Vector Regression, SVR)~サンプル数10000以下ならこれを使うべし!~ にある...

 

GA の計算回数は大きいため結構計算時間がかかってしまいます。そのため、GA の染色体に SVR のハイパーパラメータを入れておき、特徴量と一緒に最適化するとよいでしょう。

特徴量選択手法やそこで使われる回帰分析手法やクラス分類手法は、上に挙げた例以外にもありますが、これまでお話した3点の考え方に基づいて最適化の方法を決めるとよいでしょう。

 

以上です。

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

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