LoginSignup
2
5

More than 3 years have passed since last update.

Rでt-SNEを使ってみた(高次元データの圧縮)

Posted at

はじめに

先日、t-SNEによる高次元データの圧縮(2次元か3次元に落として可視化)というものを知り、こちらの記事にわかりやすくまとめてあるのを拝見しました。
ひとまず実践ということで、Rtsneパッケージを用いたmtcarsの可視化に挑戦した結果が本稿になります。

データ

今回はRのサンプルデータとして用意されているmtcars(燃費等の11次元データ)を用いますが、
アメリカ車、ヨーロッパ車、日本車に分けて可視化してみたかったので、Regionという列を加えています。

mpg cyl disp hp drat wt qsec vs am gear carb Region
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 JP
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 JP
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 JP
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 US
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 US
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 EU
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 US
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 EU
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 EU
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 EU
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 EU
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 EU
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 EU
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 EU
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 US
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 US
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 US
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 EU
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 JP
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 JP
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 JP
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 US
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 US
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 US
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 US
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 EU
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 EU
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 EU
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 US
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 EU
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 EU
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 EU

使ってみた

基本的にはRtsneのExampleに従ってやってみます。?Rtsneを参照。

library(Rtsne)
library(ggplot2)
library(dplyr)

mt<- read.csv("mtcars.csv")#csvで上記表データ読み込み
mtmtrx<- mt[,2:12] %>% as.matrix()#解析したい部分をmatrixに変換

set.seed(718)

tsne_out <- Rtsne(mtmtrx,pca=TRUE,perplexity=8,theta=0)#perplexityは任意の値
tsne_value<-as.data.frame(tsne_out$Y)
p<-ggplot(tsne_value,aes(V1,V2,col=mt$Region))+geom_point()+
     stat_ellipse(type = "norm",linetype=1)
p

出来た図がこちらです。
mtcrs.png

群ごとに差がありそうなのが意外でしたね。
どのパラメーターが寄与しているのか私には分かりませんが、日本車とアメ車には違いがあるように見てとれます。
せっかくなのでPERMANOVAも実施してみます。(pairwise.adonisを使用)

pairwise.adonis(mt[,2:12],mt$Region)

#結果
     pairs Df  SumsOfSqs   F.Model        R2 p.value p.adjusted sig
1 JP vs US  1 0.68760533 53.930876 0.7823907   0.001      0.003   *
2 JP vs EU  1 0.08870433  2.843071 0.1301589   0.100      0.300    
3 US vs EU  1 0.51090113 20.716426 0.4632845   0.001      0.003   *

なるほど、たしかに日本車とアメ車は違うっぽいですね。
アメ車とヨーロッパ車の違いはあまり図からは読み取れませんでしたが、p値は有意なようです。

さいごに

私自身分かっていない部分も多いです(特に適切なperplexityについて)が、tSNEなかなか面白いですね。
revise等あればお願いします! enjoy!

2
5
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
2
5