データ分析関連のまとめ

データ分析・機械学習周りのもくもく会LTやイベント参加をまとめていきます

Hyperparameter Importance Across Datasets

Hyperparameter Importance Across Datasets(KDD2018 Research Track Papers)を読んでまとめました。
解釈間違い等ある時がありますので、その場合指摘いただけると助かります。

背景と概要

背景

  • 機械学習の予測モデル開発において、自動的にハイパーパラメータを最適化する手法が使われている。
  • hyperparameterの最適化には、以下のような手法が用いられている
    • Random search
    • Bayesian optimization
    • evolutionary optimization
    • meta-learning
    • bandit-based method
  • ただし、1つのデータセットだけの情報や直観のみに基づいたhyperparameterの調整を行うことにはリスクがあるため、複数のデータセットに基づいたhyperparameterの重要性を把握することが望ましい。

概要

  • 本論文では、以下の2つを目指している
    • 一般的にどのhyperparameterが重要なのか?
    • そのhyperparamterはどのような値が良いのか?
  • hyperparamter importanceを学習するためにfunctional-ANOVAを使用している
  • 複数データセットの出力からカーネル密度推定を行い一般的なhyperparamterの傾向をみている

Hyperarameter importance

Functional ANOVA

  • n個のhyperparameterを持ち、下記のdomainとconfiguration space(hyperparameterに対応するn次元の空間)を持つアルゴリズムAを考える

domain:  {\Theta}_1 , ... , {\Theta}_n


configuration\ space:  {\Theta} = {\Theta}_1 \times ... \times {\Theta}_n

N:Aの全hyperparameterのセット
また、Aをインスタンス化したベクトルと、その部分インスタンスを下記のように表記する


instantiation\ vector:  \theta = ({\theta}_1 , ... , {\theta}_n)\ \ ({\theta}_ i  \in {\Theta}_i)


partial\ instantiation\ vector:  {\theta}_U = ({\theta}_i , ... , {\theta}_j)\ \ (U \subseteq N)


({\theta}_N ={\theta}となる)

Functional ANOVAでは上記で定義したインスタンスで以下の分散を計算する。
(今回、中の関数の詳細までは進みません)


\mathbb{V} = {\sum}_{U \subset N} {\mathbb{V}}_U\ ,\  {\mathbb{V}}_U=\frac{1}{||{\Theta}_U||} \int \hat{f}_U({\theta}_U)^2d{\theta}_U

||{\Theta}_U||:確率分布(均一な分布を仮定)

functional ANOVAでは、 \mathbb{V}_U / \mathbb{V} を計算することで各々のhyperparameterの相対的な分散から寄与度を測る事が出来る。
これがhyperparameter importanceとなり、分散が大きいと重要度が高く、小さいと重要度が低いといえる。

カーネル密度推定

  • hyperparameterの重要性がわかった後は、どの値が良いのかを知りたい。
  • 本論文では複数のデータセットの結果から一般的にどの値が良いか測るために、カーネル密度推定を行っている。
  • 更にparameter importanceのトップn個(論文では10個)においてこの推定を行う事で計算量等を適切に抑えている。
  • future workとして、別の推定方法も検討しているとのこと。

結果

アルゴリズムの結果

SVM

Random Forest

  • minimum samples per leafとmaximal number of featuresの分岐を決定するhyperparameterの重要度が高くなっている。

    Adaboost

  • max_depth,learning_rateの順になっている
    f:id:yhiss:20191221155621p:plain
    Random forestとAdaboostの結果

カーネル密度推定

  • 各々のアルゴリズムにおける一番重要度の高いhyperparameterのカーネル密度推定結果。
  • 数値が高いhyperparameterの値にした方が良い。

f:id:yhiss:20191221155937p:plain
カーネル密度推定結果

まとめ

  • アルゴリズムのhyperparameter importanceを計算し、一般的な傾向を推定する事を行っている
    • hyperparameter importanceの計算:functional-ANOVA
    • 一般的な傾向の推定:カーネル密度推定
  • 経験則的に効くと思われていたhyperparameterが一般的にも効きそうな結論だった。
  • 個人的にはAdaboostのmax_depthの値を更に大きいところまで取った場合の結果が気になる。

参考文献

https://www.kdd.org/kdd2018/accepted-papers/view/hyperparameter-importance-across-datasets