分子設計・材料設計・プロセス設計・プロセス制御において、分子記述子・合成条件や製造条件・プロセス条件・プロセス変数などの特徴量 x と材料の物性・活性・特性や製品の品質など目的変数 y との間で数理モデルを構築します。y の関係のない x を削除したり、構築されたモデルの解釈性を上げたりするため、特徴量選択・変数選択をすることがあります。
特徴量選択をするとき、特徴量選択手法には、解析者が事前に決めるべきパラメータ (ハイパーパラメータ) があります。さらに、特徴量選択手法において回帰分析手法やクラス分類手法を使用するときは、それらの手法におけるハイパーパラメータもあります。今回は、これらのハイパーパラメータの決め方や考え方についてお話しします。
特徴量選択において、ハイパーパラメータを決めるときに考えることは以下の三点です。
- 計算時間: 現実的な時間で終了するか?
- 手法の達成度: 特徴量選択手法として問題なく達成できているか?
- オーバーフィッティング: オーバーフィッティングを起こさないか?
例を挙げながら説明していきます。
LASSO や、PLS の Variable Importance in Projection (VIP) を考えます。



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

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


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

個体数や世代数については、それぞれある程度大きくしておけば十分です。計算時間を見ながら個体数を大きくしておき、世代数は手法の達成度として GA の収束を見て、十分収束するくらい大きい数を選ぶとよいでしょう。
GAPLS における PLS の最適成分数について、GA の繰り返し計算のなかで x の数や種類が変わると最適成分数も変わるため、その都度更新される方がよいです。ハイパーパラメータの数も一つと計算時間がかからないため GA 内でモデル構築するたびにクロスバリデーションで最適化するとよいでしょう。
一方で GASVR においては、もちろん GASVR でも GAPLS と同様に x の数や種類が変わると最適値も変わるため、その都度更新される方がよいのですが、クロスバリデーションで最適化すると計算時間がかかってしまいます。SVR のハイパーパラメータを高速に最適化できる方法があるとはいえ、

GA の計算回数は大きいため結構計算時間がかかってしまいます。そのため、GA の染色体に SVR のハイパーパラメータを入れておき、特徴量と一緒に最適化するとよいでしょう。
特徴量選択手法やそこで使われる回帰分析手法やクラス分類手法は、上に挙げた例以外にもありますが、これまでお話した3点の考え方に基づいて最適化の方法を決めるとよいでしょう。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。