Rによるカーネル主成分分析
はじめに
下の記事では主成分分析の簡単な説明とRでの使い方について触れました
今回はPRML12章をもとにカーネル主成分分析についてのお話です
- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/02/29
- メディア: 単行本
- 購入: 6人 クリック: 14回
- この商品を含むブログを見る
イメージ
主成分分析では線形な関数をもとにしていました。
非線形な関数をある種の変換したあとに主成分分析をするというのが今回の話。
具体的には
①特徴ベクトルと呼ばれる物で一旦データを変換する
②主成分分析を行う
ここでポイントとしては、特徴ベクトルの内積の形さえ分かれば主成分分析ができてしまうということです。特徴ベクトル自体を指定しなくていいというところがPRML6章で言われているカーネルトリックという手法です。
Rによるカーネル主成分分析
パッケージ・kernlabのインストール
まずは、必要となるパッケージをインストールしましょう。
install.packages("kernlab", dependencies=TRUE)
により、kernlabを適当なミラーサイトから落としましょう。
パッケージを読み込み
library(kernlab)
データの読み込みと整理
data(iris)
iris.data <- iris[, 1:4]
iris.lab <- iris[, 5]
ラベルを貼る
lab <- as.integer(iris.lab)
lev <- levels(iris.lab)
カーネル主成分分析の実行と図示
result <- kpca(~., data=iris.data, features=2, kpar=list(sigma=0.1))
plot(rotated(result), col=lab, pch=lab)
図にレジェンドをつけて完成
legend("topright", legend=lev, pch=1:3, col=1:3)
主成分分析との比較
主成分分析
カーネル主成分分析
コードまとめ
library(kernlab)
data(iris)
iris.data <- iris[, 1:4]
iris.lab <- iris[, 5]
lab <- as.integer(iris.lab)
lev <- levels(iris.lab)
result <- kpca(~., data=iris.data, features=2, kpar=list(sigma=0.1))
plot(rotated(result), col=lab, pch=lab)
legend("topright", legend=lev, pch=1:3, col=1:3)