最近の本職はマテリアルズインフォマティクスで、機械学習を活用した材料開発を行っている。新奇な材料を開発するために、材料側の種々の変数(例えば製造条件、組成、構造等)と材料の特性の関係をうまく説明可能とするようなモデルを作成している。このとき、前者を説明変数、後者を目的変数と呼び、目的変数を説明変数でうまく説明できるようなモデルを作っているということになる。
説明変数は特徴量とも呼ばれ、一般に機械学習において、どのような説明変数を採用するかというのは非常に重要で、それだけで「特徴量エンジニアリング」などとも呼ばれている。特徴量エンジニアリングの中身も沢山あるが、今回はその中の説明変数の選択方法について記載する。
マテリアルズインフォマティクスにおいて、説明変数は上にも記載したようにその材料自体が持つ特徴、例えば組成や構造、分子量のような情報と、それを製造する製造条件とがある。製造条件は細かくとると沢山ありうるし、物質自体の特徴も沢山の因子が考えられる。解析する側からすると、説明変数はできるだけ一杯集めておきたいという気持ちになるが、あまりにも多くなると計算時間が掛かるようになるし、過学習に陥る可能性も大きくなる。過学習というのは、モデルを作成するときのテストデータはうまく説明できるが新しいデータは説明できなくなる、という事象で、機械学習では常に問題となりうるところである。
そこで、説明変数を選択するようなライブラリも世の中には幾つか提供されている。例えばBorutaというライブラリでは、説明変数をランダムに入れ替えたときとそうでないときを比較することでその説明変数の重要度を判断するようなロジックで説明変数を選択してくれる。
実際にBorutaを使用してみると、確かに説明変数を減少させることができ、更に使用した方が決定係数(R2:モデルの妥当性を表す指標)も高くなることが多い。更にBorutaはランダムに説明変数を入れ替えているので過学習に陥る可能性は低いとされている。
今回もう1つ紹介するのは、SHAPというライブラリである。SHAPはゲーム理論に基づいて特徴量の解釈をしやすくするものである。機械学習によりモデルができても、そのモデルが解釈できないと人に説明するときに説明しづらい。SHAPは各因子の貢献度を求めることでその因子の重要度を判断するという考え方で、具体的にはSHarpley Valueという数値を計算していくものである。
このSHarpley Valueを用いて変数選択をすることを考えてみた。これは各説明変数の貢献度を求めることなので、貢献度の高い説明変数のみを採用することが可能である。
ちょっと長くなってしまったので、具体的な方法は次回記載することとする。
#特徴量エンジニアリング #Boruta #SHAP

コメント