【統計検定】フィッシャー情報量とクラメール・ラオの不等式について解説|python

こんにちは、青の統計学です。

今回は、正規分布を例に取って、フィッシャー情報量とクラメール・ラオの不等式について深掘りできればと思います。

統計検定準一級の試験範囲にもなっておりますので、この機会に是非理解していきましょう。

統計検定のチートシートは以下をクリック!

【最短合格】統計検定準一級のチートシート|難易度や出題範囲について

【第2弾】統計検定準1級のチートシート|最短合格への道

【やや細かい】G検定のチートシート|最短合格

【最短】統計検定2級合格ロードマップとチートシート|おすすめの本について

フィッシャー情報量(Fisher information)

フィッシャー情報量とは、I(θ)の形で表される、「確率分布がθ(パラメータ)に対してどのくらい変わりやすいか」を示す指標です。

以下のような形で表されます。

$$I(θ)=E[(\frac{d}{dθ}log f (X_1;θ))^2]$$

確率密度に対して対数をとり、微分したものを2乗して期待値をとったものが、フィッシャー情報量です。

ガウス分布のフィッシャー情報量を求めてみましょう。

ガウス分布の確率密度関数は以下のとおりです。

$$f(y) = {\frac{1}{\sqrt{2πσ^2}}exp(-{\frac{(y-μ)^2}{2σ^2}})}$$

詳しい計算は省略しますが、フィッシャー情報量は分散の逆数になります。

$$I(θ)={\frac{1}{σ^2}}$$

ガウス分布については、以下のコンテンツをご覧ください。

【例題つき】正規分布(ガウス分布)の確率密度について|R

では、具体的にはいつ使われるのかをみてみましょう。

漸近正規性(asymptotic normality)

フィッシャー情報量は、漸近正規性に登場します。

漸近正規性とは、最尤推定量が持つ嬉しい性質の一つであり、一致性の議論を進めた性質でもあります。

$${\sqrt{n}}(\hat{θ}^{ML}-θ)\approx N(0,{\frac{1}{I(θ)}})$$

推定量と真のパラメータの差とサンプル数の根号は、期待値0で分散がフィッシャー情報量の逆数を持つ正規分布に分布収束するという性質です。

I(θ)はデータ一個あたりのフィッシャー情報量です。

ちなみに一致性については、以下のコンテンツでも解説しておりますが、

一致性とは、「推定量はnが大きくなればなるほど、真のパラメータに確率収束する」という性質です。

最尤推定量は、一致性や漸近正規性を持ちますが、不偏性を満たさないのでご注意ください。

不偏性とは、「推定量の期待値は、真のパラメータと等しい」という性質です。

【尤度って?】尤度関数と最尤推定量の解説と例題

【例題つき】固定効果推定と固定効果モデルについて解説|ランダム効果も添えて

中心極限定理(central limit theorem)

少し脱線しますが、この機会に中心極限定理と大数の弱法則についてご紹介します。

中心極限定理とは、以下のような性質です。

ただし、X _nは独立かつ同一な分布(平均μ,分散σ^2)に従うとします。

$${\sqrt{n}({\overline{X}_n-μ}) \to N(0,σ^2)}$$

平均0と分散σ^2の正規分布に分布収束するという意味です。

大数の弱法則(weak law of large number)

大数の弱法則とは、標本平均が母平均に確率収束するという性質です。

$${\overline{X}_n = {\frac{1}{n}}\sum_{i=1}^{N}X_i \to μ}$$

中心極限定理の場合と同様に、確率変数は独立で同一な分布に従います。

大数の強法則

大数の弱法則とは異なり、大数の強法則とは「確率変数が独立同一な分布であれば、標本数が十分に大きいとき、標本平均と標本分散は母平均と母分散に収束する」というものです。分散の収束についても言及されています。

クラメール・ラオの不等式(Cramér–Rao bound)

様々な不偏推定量の中では、その分散が最小となる推定量を採用したいものです。

ここで紹介する「クラメール・ラオの不等式」はそんな不偏推定量の分散の下限を与えるものです。

フィッシャー情報量を使って以下のような不等式が作れます。

これをクラメール・ラオの不等式と呼び、推定量が不偏推定量であることが条件ですが、推定誤差の期待値の下限を設定することができます。

$$E[\hat{θ}-θ] \geq \frac{1}{nI(θ)}$$

一致推定量の分散が、クラメール・ラオの下限を満たす時、

つまり、推定量の誤差の期待値がサンプル数とフィッシャー情報量の積の逆数となる時、推定量は漸近有効性を持つと言います。

細かい話ですが、この時の推定量は最小分散不偏推定量と呼びます。

フィッシャー情報量の捉え方

さて、クラメール・ラオの不等式から、フィッシャー情報量の大小で推定量を評価してみます。

-フィッシャー情報量が大きい場合-

フィッシャー情報量が大きいと、誤差が小さく、θの推定精度よいです。

分散が小さくなります。

-フィッシャー情報量が小さい場合-

フィッシャー情報量が小さいと、誤差が大きく、θの推定精度が悪いです。

分散が大きくなります。

CODE(判別問題)|python

フィッシャー情報量の応用例として、機械学習における特徴量の選択について解説いたします。

今回は乳がんデータセットを使って、どの特徴量が比較的予測に重要なのかを考えます。

特徴量選択において、フィッシャー情報量は以下のような式で表されます。

パラメータ推定の場合と少し形を変えています。

$$I(x, y) = \sum_{c \in C} \sum_{v \in V} p(c, v) \log \frac{p(c, v)}{p(c)p(v)}$$

ここで、xは特徴量、yは目的変数、Cは目的変数のクラス、Vは特徴量の値の集合を表します。

p(c)はクラスcが出現する確率、p(v)は特徴量xが値vを取る確率、p(c, v)はクラスcが出現し、かつ特徴量xが値vを取る確率を表します。

この式は、特徴量と目的変数の同時分布と、それらの周辺分布を比較していることになります。

フィッシャー情報量は、特徴量xが目的変数yを予測する上での重要度を表す指標であり、値が大きいほど予測に役立つ特徴量であると言えます。

from sklearn.datasets import load_breast_cancer
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_classif
data = load_breast_cancer()
X, y = data.data, data.target
selector = SelectKBest(f_classif, k=10)
selector.fit(X, y)
selected_features = selector.get_support(indices=True)
print(data.feature_names[selected_features])
['mean radius' 'mean texture' 'mean perimeter' 'mean area' 'mean concavity'
 'radius error' 'perimeter error' 'area error' 'worst radius' 'worst perimeter']

SelectBestの引数kには、重要と判定された特徴量の出力個数を入力します。

ここでは10個にしています。乳がんデータセットの特徴量が30個くらいなので、上位1/3の重要な特徴量のみを抽出していることになります。

具体的には、フィッシャー情報量を用いた特徴量選択では、すべての特徴量についてフィッシャー情報量を計算しています。

予測に対して「重要」とは

フィッシャー情報量を用いた特徴量選択において、「重要」というのは、特徴量が目的変数と強い関係性を持っているということです。

つまり、ある特徴量が目的変数を予測する上で重要であるということは、その特徴量を使うことで予測精度が向上する可能性が高いということです。

例えば、乳がんデータセットにおいては、特定の腫瘍の大きさや形状、細胞核の形態、クロマチンの存在などの特徴量ががんの種類(良性か悪性か)を予測する上で重要であることが知られています。

フィッシャー情報量を用いた特徴量選択によって、これらの特徴量を選択することで、より正確ながんの診断が可能となります。

他にも嬉しいこととしては、重要な特徴量を選択することで、モデルの学習に必要な情報の量が減り、計算時間やメモリ使用量を削減できる場合もあります。

また、不要な特徴量を除外することで、モデルの過学習を防ぎ、汎化性能を向上させることもできます。

相関関係による特徴量の選択と何が違うのか

目的変数との相関関係とフィッシャー情報量による特徴量選択とは、微妙に異なる概念です。

-相関関係-

相関関係とは、2つの変数がどの程度同じ傾向を持っているかを表す指標です。

例えば、ある特徴量が大きくなると目的変数も大きくなる場合、これらの変数は正の相関があると言います。

逆に、ある特徴量が大きくなると目的変数が小さくなる場合、これらの変数は負の相関があると言います。

【外れ値に対処】順位相関係数と相関係数の違いについて | python

-フィッシャー情報量-

一方、フィッシャー情報量による特徴量選択は、ある特徴量が目的変数とどの程度強い関係性を持っているかを測定するための方法です。

フィッシャー情報量は、2つの確率分布がどの程度異なるかを表す指標であり、特徴量の取りうる値が目的変数を分類するための重要な情報を提供することができます。

つまり、相関関係は2つの変数の関係を表す指標であり、特徴量選択においても重要な指標ではあります。

しかしフィッシャー情報量は、特定の特徴量が目的変数と強く関連しているかどうかを評価するためのより精密な指標となります。

「どの特徴量がどれくらい重要なのか」というのは、因果関係を見る上でもとても重要な論点です。

機械学習には、大きく分けて「予測」と「識別」というタスクがありますが、今回は「識別」の話です。

以下のコンテンツでも詳しく掘り下げています。

【SHAP】特徴量重要度や寄与度、限界効果を意思決定者にうまく伝えたい話|python

フィッシャー情報量の応用例について

ここでは、フィッシャー情報量が何に応用されているのかを解説いたします。

フィッシャー情報量は、機械学習だけでなく、さまざまな分野で応用されています。

具体的には、以下のような応用例があります。

自然言語処理:文書分類やトピックモデルにおいて、単語の出現頻度に応じてフィッシャー情報量を計算し、重要な単語を選択することができます。

また、単語の意味を表すベクトルを生成するWord2Vecの学習にも使用されています。

遺伝子解析:遺伝子発現データの解析において、フィッシャー情報量を用いて発現に関連する遺伝子を選択することができます。

また、ゲノムワイド関連解析においても使用されています。

画像処理:画像認識において、フィッシャー情報量を用いて重要な特徴量を選択することができます。

特徴量選択によって、画像処理の計算時間を短縮することができます。

統計解析:統計解析において、フィッシャー情報量を用いて変数の重要度を評価することができます。

多重共線性を回避するために、重要な変数のみを選択することができます。

以上が、フィッシャー情報量の概要や特徴量選択の手順、そして応用例についての解説です。

機械学習やデータ分析の分野で、フィッシャー情報量は重要な役割を果たしています。

特徴量選択を行うことで、過剰適合や計算時間の増加を回避し、モデルの性能を向上させることができます。

フィッシャー情報量を適切に活用して、より高度なデータ分析を行いましょう。

補足|KL divergenceとフィッシャー情報量の関連について

少し高度な内容になりますが、KLdivergenceをご紹介します。

KLダイバージェンスは、ある確率分布が別の確率分布とどの程度異なるかを測定するための尺度です。

$$\begin{equation} D_{KL}(P || Q) = \sum_{i} P(i) \log \frac{P(i)}{Q(i)} \end{equation}$$

KLダイバージェンスは0で最小値をとり、この場合の確率分布PとQは同一です。

確率分布の尤度比の期待値を取っており、一つの確率分布を真の確率分布と仮定した場合に、別の確率分布を用いて情報を符号化するときの”情報損失”を測定しています。

機械学習の文脈では、KLダイバージェンスは真のデータ分布とモデルの分布との間の差異を測定するのにしばしば使用されます。

では、フィッシャー情報量とこのKLダイバージェンスにはどんな関係があるのでしょうか?

実はKLダイバージェンスのテイラー展開の二次項を考えると、フィッシャー情報量が現れます。

KLダイバージェンス \(D_{KL}(p(x; \theta) || q(x; \theta + \delta))\) は、パラメータ化された確率分布 \(p(x; \theta)\) と\( q(x; \theta + \delta)\)の間で、パラメータ \(θ\)の微小な変化 \(δ\) に対する感度を測定します:

$$\begin{equation} D_{KL}(p(x; \theta) || q(x; \theta + \delta)) = E_p \left[ \log \frac{p(x; \theta)}{q(x; \theta + \delta)} \right] \end{equation}$$

このKLダイバージェンスのテイラー展開の二次項を考えると、フィッシャー情報量が現れます。

$$\begin{equation} D_{KL}(p(x; \theta) || q(x; \theta + \delta)) \approx \frac{1}{2} \delta^T I(\theta) \delta \end{equation}$$

\(\delta^T I(\theta) \delta\)はフィッシャー情報行列とパラメータ変化\(\delta \)の2次形式で表されます。

この結果から、フィッシャー情報量(またはフィッシャー情報行列)はパラメータの微小な変化に対する確率分布の敏感度、すなわちKLダイバージェンスの二次の近似を表していると言えます。

とはいえ確かに関連していますが、それぞれが測定しているのは異なる概念です。

おさらいすると、

KLdivergence

ある確率分布が別の確率分布とどれだけ異なるかを測定します。
直感的には、「分布Pを用いて分布Qをどれだけよく表現できるか」を示しています。
フィッシャー情報量

パラメータの微小な変化に対する確率分布の敏感度を測定します。
フィッシャー情報量が大きいほど、パラメータの微小な変化による確率分布の変化が大きく、したがってパラメータをより正確に推定することが可能となります。

FOLLOW ME !