機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

カーネル密度推定法 - Parzen推定法

カーネル密度推定法 - Parzen推定法

ある D 次元のユークリッド空間中の未知の確率密度 p({\bf x}) から、観測値の集合が得られていて、
この集合から p({\bf x}) を推定したいとします。

\bf x を含むある小さな領域 \mathcal{R} を考えます。この領域に割り当てられた確率は

\begin{eqnarray}
P=\int_{\mathcal R}p({\bf x}){\rm d}{\bf x}\tag{1}
\end{eqnarray}

になります。
p({\bf x}) から N 個のサンプルが得られたとき、各サンプルが領域 \mathcal R 内である確率は P なので、
\mathcal R 内のデータ個数 K は二項分布に従います。

\begin{eqnarray}
{\rm Bin}(K|N,P)=\frac{N!}{K!(N-K)!}P^K(1-P)^{N-K}\tag{2}
\end{eqnarray}

二項分布の期待値、分散は E[K]=NP,V[K]=NP(1-P) であり、
期待値と分散の公式は、E[aX]=aE[X]、V[aX]=a^2[X] であるので、
K/N の平均と分散は以下のようになります。

\begin{eqnarray}
\mathbb{E}[K/N]&=&\frac{\mathbb{E}[K]}{N}\\
&=&\frac{NP}{N}\\
&=&P\tag{3}\\
\end{eqnarray}

\begin{eqnarray}
{\rm var}[K/N]&=&\frac{{\rm var}[K/N]}{N^2}\\
&=&\frac{NP(1-P)}{N^2}\\
&=&\frac{P(1-P)}{N}\tag{4}\\
\end{eqnarray}

大きな N について、(3) より

\begin{eqnarray}
K\simeq NP\tag{5}
\end{eqnarray}

と表せます。
確率密度 p({\bf x}) がこの領域内でほぼ一定とみなせるほど十分に小さいとも仮定できるのであれば、

\begin{eqnarray}
P=\int_{\mathcal R}p({\bf x}){\rm d}{\bf x}\simeq p({\bf x})V\tag{6}
\end{eqnarray}

となります。V は領域 R の体積です。
 (6)V\mathbb R^1 であれば長さ、\mathbb R^2 であれば面積で考えると分かりやすいです。

(6) のイメージ図を描きました。
P=\int_{\mathcal R}p({\bf x}){\rm d}{\bf x}が薄赤色の長方形の面積で近似できるってことです。

(5),(6) より、

\begin{eqnarray}
p({\bf x})=\frac{K}{NV}\tag{7}
\end{eqnarray}

カーネル密度推定法では V を固定して考えます。

確率密度を求めたいデータ点を \bf x とし、この点を中心とする小さな超立方体を領域 \mathcal{R} とします。
この領域内にある点の数 K を数えるには、次の関数を定義しておくと便利です。

\begin{eqnarray}
k({\bf u})=
\left\{
    \begin{array}{l}
      1,\ |u_i| \leq\frac{1}{2}\hspace{20px}i=1,\ldots,D\\
     0,\ それ以外
    \end{array}\tag{8}
  \right.
\end{eqnarray}

k({\bf u}) のグラフは以下です。(多次元だとグラフが書きにくいので、{\bf u}1 次元としてグラフを書きます。)

k(({\bf x} -{\bf x}_n)/ h) は、{\bf x} を中心とする一辺が h の立方体の内部に.
データ点 {\bf x}_n があれば 1 に、そうでなければ 0 となります。

よって、この立方体内部の総点数は

\begin{eqnarray}
K=\sum_{n=1}^N k\left(\frac{{\bf x}-{\bf x}_n}{h}\right)\tag{9}
\end{eqnarray}

となります。

k(({\bf x} -{\bf x}_n)/ h) のグラフは以下です。(多次元だとグラフが書きにくいので、{\bf x}1 次元としてグラフを書きます。)

(9)(7) に代入すると以下のようになります。

\begin{eqnarray}
p({\bf x})=\frac{1}{N}\sum_{n=1}^N\frac{1}{h^D}k\left(\frac{{\bf x}-{\bf x}_n}{h}\right)\tag{10}
\end{eqnarray}

(10) では、一辺が hD 次元超立方体の体積が V=h^D であることを用いました。
(10) は立方体のふちで、人為的な不連続が生じます。
一般的な選択はガウスカーネルで、次の確率密度モデルになります。

\begin{eqnarray}
p({\bf x})=\frac{1}{N}\sum_{n=1}^N\frac{1}{(2\pi h^2)^{D/2}}\exp\left(-\frac{||{\bf x}-{\bf x}_n||^2}{2h^2}\right)\tag{11}
\end{eqnarray}

h の値を変えて、カーネル密度推定を行った図を下に示します。

参考文献

パターン認識機械学習 上巻

偉人の名言


今いる場所が嫌なら変えた方が良い。あなたは木ではないのだから。
ジム・ローン

目次へ戻る