6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

機械学習/カーネル法

Last updated at Posted at 2020-04-16

1.はじめに

 今回は、カーネル法についてまとめます。

2.カーネル法

 SVM等で非線形問題を解くときに、トレーニングデータを射影関数φを使って高次元の特徴空間に射影して学習し、学習後に同じ射影関数φを使って元に戻して解く方法をカーネル法と言います。
   $f(x)=b+\sum_{i=1}^m \alpha_ix^Tx^{(i)}=b+\sum_{i=1}^m \alpha_i*\phi(x)*\phi(x^{(i)})$

 但し、この方法には1つ問題があって、射影する特徴空間の次元数が非常に高くなってしまうことが多く、新しい特徴量 $\phi(x),\ \phi(x^{(i)})$ を生成する計算コストが非常に高くなってしまいます。

 そこで、射影関数の内積結果 $\phi(x)* \phi(x^{(i)})$ を既知の変数だけで計算する手法を カーネルトリックと言い、その条件を満たす関数 $f(x,x^{(i)})=\phi(x)* \phi(x^{(i)})$をカーネル関数と言います。

3.カーネル関数

 よく使われるカーネル関数は、
1)多項式カーネル  
  $K(X_i,X_j)=(X_i^TX_j+c)^d$

2)ガウスカーネル
  $K(X_i,X_j)=exp
\begin{bmatrix}
-\frac{||x_i-x_j||^2}{2 \sigma^2}
\end{bmatrix}$

3)シグモイドカーネル
  $K(X_i,X_j)=tanh(bX_i^TX_j+c)$

4.多項式カーネルの導出

 2次元から3次元へ射影する下記の式を考えます
$\phi(x)=\phi(x_1,x_2)=(x_1^2, \sqrt2 x_1x_2, x_2^2)$

 すると、射影関数の内積は、
$\phi(x)^T\phi(y)=(x_1^2,\sqrt2 x_1x_2,x_2^2)^T
(y_1^2,\sqrt2 y_1y_2,y_2^2)$
$=x_1^2y_1^2+2x_1y_1x_2y_2+x_2^2y_2^2=
(x_1y_1+x_2y_2)^2$
$=((x_1, x_2)^T(y_1, y_2))^2=(x^Ty)^2$

つまり、射影関数の内積は、元のベクトルの内積の二乗で表せるわけです。
これは、多項式カーネルの c=0, d=2 の場合に相当します。

6
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?