LoginSignup
6
2

More than 1 year has passed since last update.

n変数関数の特徴量選択の手法 ~ Functional-Anova ~

Last updated at Posted at 2019-06-01

はじめに

機械学習のパラメータ初期設定に多数のパラメータが存在したり,データ解析の場で大量の変数が存在する場合にどの変数がどの程度性能に影響を及ぼすか知ることは非常に重要である.一般に機械学習の世界では実際に重要なパラメータの数はさほど多くないと言われており,2011年のJames Bergstraの論文low effective dimensionality という概念が提示されている.今回の記事ではその low effective dimensionality への対応策の一つとして,分散分析の一種であり,n変数関数に対応しているFunctional-Anovaの説明をしたいと思う.

Functional-Anova

Anova(分散分析)とは

$n$変数関数の内,$m$ 変数 ( $m < n$ )が変動する際に関数の値がどの程度変動するか分析するもの.

変数設定

変数は以下のように規定される.

\begin{align}
N \in R^n :& f(\theta) の入力\thetaの空間 \\
U \in R^m :& Nの部分空間\\
V \in R^{(n-m)} :& Uの直交補空間 \\
W \subsetneq U :& Uの部分空間の内,U自身を除いた部分空間 \\
\theta \in N :& Nの要素 \\
\theta_U \in U :& Uの要素 \\
\theta_V \in V :& Vの要素 \\
U \cap V = \emptyset :& UとVは直交\\
U \cup V = N :& VはUの補空間\\
F_S(\theta_S) :& 入力を空間 S の要素 \theta_S としたときの関数 \\
f_S(\theta_S) :& 入力を空間 S の要素 \theta_S とし,Sより低ランクの特徴空間の寄与を無視した関数 \\
\end{align}

仮定

Taylor展開によれば,$C^\infty$級の$n$ 変数関数は適当な $m$ 変数関数の和として表すことが可能.ここで観測誤差を考慮しなければ,$n$ 変数関数は以下のように表すことができる.

f(\theta) = \sum_{U \subseteq N} f_U(\theta_U|\theta)

また,同様に部分空間との関係性から以下のことも言える.

F_U(\theta_U) = \sum_{W \subseteq U} f_W(\theta_W) = f_U(\theta_U) + \sum_{W \subsetneq U} f_W(\theta_W|\theta_U)

各変数の分散

ある $m$ 変数(例えば,2変数で $x_1, x_3$ の相互作用含む寄与率を調べたいときなど)の分散を調べる手法を考える.まずは $N$ の任意の部分空間 $U$ に対して,その直交補空間 $V$ で積分することによって $U$ の部分空間に落とすように積分消去した関数を得る.

F_U(\theta_U) = \int f(\theta_U, \theta_V)P(\theta_V) d\theta_V \\  

次に $N$ の任意の部分空間 $U$ から,$U$ に対する任意の部分空間 $W$ において積分消去で次元を落とした関数 $f_W(\theta_W)$ を引くことで $F_U$ から $U$ よりも低次元な特徴空間による寄与を取り除く.つまり,真に $U$ の特徴空間のみに依存した関数にする.自明ではあるが,$f_W(\theta_W|\theta_U)$ の入力 $\theta_W$ は $\theta_U$ よりも低次元であるから $\theta_W$ は事前に $\theta_U$ さえ定めれば一意に決まる.

f_U(\theta_U) = F_U(\theta_U) - \sum_{W \subsetneq U} f_W(\theta_W|\theta_U)

最後に,$U$ の特徴空間のみに依存した関数の分散を取ることで,その特徴空間の関数に対する変動寄与がわかる.

\sigma^2_U = \int {f_U(\theta_U)}^2 P(\theta_U) d\theta_U

以上の式変形において登場する $P(\theta_U)$ は確率密度関数であるが,$\theta_U$ はAutoMLを行う際は使用者側で適当にサンプリングを行うものであるため,一様分布を仮定している.則ち,$P(\theta_U) = \frac{1}{||U||}$ (= $U$ の超体積の逆数)となる.

上記で得られた $\sigma^2_U$ を $\sigma^2 = \int (f(\theta) - y(\theta))^2 P(\theta) d\theta$ で割ることによって,$\sigma^2_U / \sigma^2$ から特徴空間 $U$ がどの程度関数の変動に寄与しているかわかるようになる.

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2