パターン認識と機械学習(下)のカーネル法を勉強しています。カーネル法とは直接関係ないようですが、カーネル密度推定法(パターン認識と機械学習(上)で紹介されています)を勉強したので記事にします。
カーネル密度推定法とは、サンプルデータから元の確率分布を推定するノンパラメトリック手法です。パラメトリックな手法とは、何らかの確率分布を推定する際に、先にモデルを決めてしまうようなやり方です。例えば正規分布であることを仮定すると、サンプルの標本平均と標本分散は正規分布のパラメータの推定量となります。このような方法では、仮定が間違っていれば正確な推定をすることができません。これに対してノンパラメトリックな手法では、分布の形状を仮定せずに推定します。
ここからが本題。ある未知の確率分布からサンプルが得られて、このデータから
を推定したいとします。
を含む小さな領域
を考えると、この領域内でデータが生起する確率
は、
です。から
個のサンプルが得られたとき、各サンプルが領域
内である確率は
ですから、
内のデータ個数
は二項分布
に従います。(回の試行で確率
の事象が
回発生する二項分布) 二項分布の期待値、分散の公式より、
、
です。また、期待値と分散は
、
の関係がありますから、
です。式(4)より、が大きくなれば、
の分散が小さくなることがわかります。
の期待値は
ですから、分散が小さいとき、
と書けます。また、の範囲内で
が一定とみなせるほど小さいと仮定すると、
の体積を
として
が成り立ちます。この式(6)はちょっと戸惑いましたが、1変数の確率密度関数をイメージして、面積で考えたら理解できました。
さて、式(5)、(6)より、ある領域内での
の推定値は
となります。ここで、は領域
の体積ですから領域の場所に応じて変化する値ですが、カーネル密度推定法では
を固定して考えます。すると
は定数になります。
は
内のデータの個数でしたので、僕の解釈ですが、式(7)は範囲を十分に小さくしたヒストグラムのようなものと考えると、なんかすっきりしました。単純にヒストグラムの値が確率密度の推定値って言ってるだけですよね。多分。
適当な正規分布からサンプリングしたデータをヒストグラムにすると普通は左図のようなものになりますが、範囲を十分に小さくすると右図のようになります。で、これだと範囲を狭くしすぎてデータが存在しない部分は確率密度が不明なので、カーネル関数を使って推定するっていうのがカーネル密度推定法です。じゃあ左図のヒストグラムのままでこれを推定値とすればいいじゃんって話なんですけど、1変数程度の場合はこれでもいいそうですが、確率変数の次元が大きくなると通用しなくなるそうです。*1
さて、肝心な推定方法です。以下のような関数を定義します。
確率変数の次元をとしたとき、
です。式(8)は、
が原点を中心とする単位立方体内にあるときのみ1となる関数です。次に
を考えます。ここで
は推定したい確率分布から得られたサンプルデータです。これは
を中心とする一辺が
の立方体内部に、
があるときに1となりますので、得られたサンプルデータが、この領域内にある個数
は
と書けます。式(9)を式(7)に代入すれば、この領域の体積はですから、
となります。この式(10)が推定した確率密度関数になります。実はがカーネル関数と呼ばれるもので、以下を満たせば任意の関数を使うことができます。
この条件は式(10)が確率密度関数となるために必要な条件です。負の値があったり、全区間で積分して1にならなければ確率密度関数にはなりません。
さて、一般的にはガウスカーネルが用いられるそうです。ガウスカーネルを用いると、式(10)の確率密度関数は次のようになります。
式(13)で、の値を大きくとると推定される分布形状がなだからかになり、値を小さくとるとサンプル点に過敏に反応した形状となります。ちょっと日本語が下手くそですけど、、、まあ正規分布の分散に相当するパラメータなのでイメージ湧きますよね。
次回、式(13)を使って確率分布の推定の実験をしてみたいと思います。→カーネル密度推定法の実験
*1:と、どこかで読んだのですが、メモしておらず参照元不明