PCAとサポートベクターマシン

  • サポートベクターマシンはマシンラーニングの基本
  • Matlabとか数値計算系で実装が先行していて、Rでは追随、という形
  • パッケージe1071が先行のlibsvmとかを実装しているそうだ
  • kernlabっていうのものサポートベクターマシンの基本的な手法をサポートすることを目指したパッケージ(らしい)
  • サポートベクターマシンなので、いろいろできるけれど、昨日の記事の流れで行けば、基本的なPCAの発展としての…となる
  • 昨日は欠測値対応の話で、今日は非線形対応の話(昨日の欠測値の話にも「欠測値の穴埋めに非線形を使うか…」という文脈で『非線形』が出てきたけれど、ここで言う『非線形』は、空間をいったん持ち上げて『広いところ』で単純に切り分けつつ、そのあとで次元を戻すと、『非線形な切り分け』ができるよ、という意味での、マシンラーニングを使った「値変換的な非線形
  • kpca()関数とpredict()関数がkernlabパッケージでのkernel PCA用関数とその結果からの推定
  • こちらも参考
library(kernlab)
# another example using the iris
data(iris)
test <- sample(1:150,20)

kpc <- kpca(~.,data=iris[-test,-5],kernel="rbfdot",
            kpar=list(sigma=0.2),features=2)

#print the principal component vectors
pcv(kpc)

#plot the data projection on the components
plot(rotated(kpc),col=as.integer(iris[-test,5]),
     xlab="1st Principal Component",ylab="2nd Principal Component")

#embed remaining points 
emb <- predict(kpc,iris[test,-5])
points(emb,col=as.integer(iris[test,5]))