#はじめに
先日、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
群ごとに差がありそうなのが意外でしたね。
どのパラメーターが寄与しているのか私には分かりませんが、日本車とアメ車には違いがあるように見てとれます。
せっかくなので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!