Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

主成分分析(Pca)

6,610 views

Published on

第6回HiRoshimaRで発表した資料です。

Published in: Data & Analytics
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2ZDZFYj ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ❤❤❤ http://bit.ly/2ZDZFYj ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

主成分分析(Pca)

  1. 1. 主成分分析(PCA) ~ggbiplot・bPCA~ 広島大学大学院教育学研究科 難波 修史 第6回Hiroshima.R 2016/02/20
  2. 2. 自己紹介 •難波 修史(なんば しゅうし) •広島大学大学院教育学研究科M2 •感情表情の表出・認知の研究してます。 •R歴:ちょこちょこ •twitter:@NSushi
  3. 3. 主成分分析とは •英語で書くとPrincipal component analysis(以下PCA •データ解析で用いられる次元縮約手法 •文字通り、全体の指標を端的に判断す るために、複数の要素から2~3程度の “主成分”を計算する。
  4. 4. もっとわかりやすく • 参照:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1236450762 幅が不明 高さが不明 長さが不明 ※あくまでイメージです。
  5. 5. 斜め45度から見れば? 全部の情報(総合的な車の大きさ)は見える ※ただし各々の精度は落ちる
  6. 6. つまり・・・ •主成分分析とは、一度の視覚で 全体像を見るためのものである。 •どこの角度から見れば、もっと も良好に全体が見渡せるのか、 それを調べる分析である。 by uminin0055さん
  7. 7. 想像してください •n個の個体につき,p個の変数 •(n × p)の行列(=X):列 iの変数 x1 x2 x3 x... xi x... xp 個体1 x11 x12 x13 x... x1i x... x1p 個体2 x21 x22 x23 x... x2i x... x2p 個体... x.. x.. x.. x... x.. x... x.. 個体n xn 1 xn 2 xn 3 x... xni x... xnp Xn × p →
  8. 8. 縮約!!! • p次元のデータをq次元の下位空間 (q ≦ p) に 縮約するための線型結合の一般式 • zq (第q主成分) = a1qx1 + a2qx2 + … + anqxp • Zn × q (主成分得点) = Xn × p ・An × q(行列の演算 • Zでデータをできるだけ説明したい ⇒ Zの分散を最大化するように各係数を決定 第1 第2 … 第i … 第q x1の係数 a11 a12 a... a1i a... a1p x2の係数 a21 a22 a... a2i a... a2p x.. a.. a.. a... a.. a... a.. xn の係数 an 1 an 2 a... ani a... anp An × q →
  9. 9. PCAをやる上でのアドバイス • PCAはスケール不変性(スケールを変えて も特徴が変化しない性質)を持たない ー> p個の変数は全て標準化すべき •主成分の数は手法に依存 •2 or 3つの主成分は視覚化の目的のために 使用できる
  10. 10. じゃあ、やってみよう^^ •R内にはたくさんのPCA用のパッ ケージや機能がある •prcompをつかうっす + ggbiplot
  11. 11. 使用するデータ:iris •説明不要の大人気Data •Sepal = がく片の長さと幅 •Petal = 花びらの長さと幅 •Species = 花の種類 data (iris) str (iris) #dataの構造確認
  12. 12. PCAの準備 •まずは連続変数に対してlog変換を • Venables, W. N., Brian D. R. Modern applied statistics with S-PLUS. Springer-verlag. (Section 11.1) log.ir <- log(iris[, 1:4]) ir.species <- iris[, 5] #主成分の視覚化用
  13. 13. データの標準化 #PCA: center = T and scale. = T are highly advisable ir.pca <- prcomp(log.ir, center=T, scale. = T) •変数の大きさや歪度がPCの結果に影響 するため、PCA前の歪度変換(center and scale. = T)がいい感じだよ
  14. 14. 標準偏差+固有ベクトル •prcomp = 利用可能な主成分を返す。 •print = 各4PC (さっきのz) の標準偏差 +連続変数 (さっきのx) の線型結合 係数である固有ベクトル (さっきのa) x1~x4 a1~a4
  15. 15. Plot:各PCの分散 • plot = 分散 (y軸) と主成分 (x軸) のplot •必要なPCの数を視覚的に判別可能 plot (ir.pca, type = “l”)
  16. 16. Summary:主成分の重要性 summary (ir.pca) •最初の行=各主成分の標準偏差 •2行目=各標準偏差の2乗が合計に占める 割合(寄与率) •3行目=2行目の累積(第2までで95%)
  17. 17. ggbiplot:図にしてみよう •まずは準備編 library(devtools) install_github (“ggbiplot”, “vqv”) ※github上で利用可能なfunctionです! library(ggbiplot)
  18. 18. ggbiplot:描くのだ • g <- ggbiplot(ir.pca, obs.scale = 1, var.scale = 1, groups = ir.species, ellipse = T, circle = T) • g <- g + scale_color_discrete(name = ‘’) • g <- g + theme(legend.direction = ‘horizontal’, legend.position = ‘top’) • print(g) main関数 groups消す speciesの 位置変える
  19. 19. できたのがこれ
  20. 20. Box and Cox変換:準備 • 上記では対数変換してるけど、より一般的 なBox and Cox変換(偏ったデータを正規分 布に近づける変換)も可能だよ。 •caret packageのpreProcessで一発よ require(caret) trans = preProcess(iris[,1:4], method = c(“BoxCox”, “center”, “scale”, “pca”))
  21. 21. Box and Coxの結果 #Box(ryの各主成分 PC = predict (trans, iris[,1:4]) # 固有ベクトル trans$rotation ちなみにggbiplotは prcomp() or princomp()の objectしか認識しません
  22. 22. PCAについていろいろ 調べてると。。。
  23. 23. BGM:なんとかかんとかUC
  24. 24. bPCAとはなんぞや? • PCAからJan Smyckaが着想し、開発してる パッケージ • データが多変量正規分布しているものと して考えることで、MCMCを用いてデー タに多変量正規分布を当てはめ、平均及 び共分散の事後分布を求めることで、 PCAの主成分、得点、固有値の事後分布 を求めることができる。
  25. 25. いいところ • (共分散行列を通して)変数間の結合に 関する事前情報を提供可能 • PCAの安定性(不確実性)を評価可能: 特にサンプルサイズが小さい時 • PCや固定ベクトルに関する事後分布をさ らなる利用のために抽出できる
  26. 26. あかんところ • 変数が多いと極端に遅い • 根本的なMVN(多変量正規分布)の前提が 問題 • summaryやplottingにおいて、MCMC連鎖の中 で変数間の重要な結びつきをこわしうる: JAGS sampler内で固定値・固定ベクトル・主 成分をすべて計算するのが現状最善の策 • JAGSを通してMCMCするのでstanに慣れてると(*´Д`)レベル (QOL) が下がる。
  27. 27. とりあえずいれてみよう #もちろんdevtoolsを読み込んでから install_github(“bPCA”, username=“petrkeil”) library(bPCA) # またirisつかいましょう str(iris) summary(iris[,1:4)
  28. 28. sim.bPCA関数 bPCA.fitted <- sim.bPCA(iris[,1:4], n.chains=3, n.iter=1000, n.burnin=500) •#prior 共分散行列も選択可能です •#詳しくはhelp(sim.bPCA)
  29. 29. 固有値 •固有値(=主成分得点のSDの2乗: 元のデータの情報の含有レベル) eigenvalplots.bPCA(bPCA.fitted, iris[,1:4)
  30. 30. eigenvalplots.bPCAの図
  31. 31. 2.5, 50, 97.5%分位点の事後分布 #下限・真ん中・上限の事後分布をplot biplots.bPCA(bPCA.fitted, iris[,1:4], axes.to.plot=1:2, scale=0.1)
  32. 32. 固有ベクトルの事後分布 #固有ベクトルの事後分布の要約 loading.chain <- get.loadings.chain.bPCA(bPCA.fitted, iris[,1:4]) summary.loadings.bPCA(loading.chain, vars.to.get=1:4, axes.to.get=1;2)
  33. 33. 出てくるFigure
  34. 34. Console上
  35. 35. まだ発展途上なので多少はね? • We do not guarantee the very idea to be correct by共同開発者っぽい人 引用:http://www.petrkeil.com/?p=2316 • 気になる人はぜひ色々調べてみて下さい! • 今後に期待大ですね! ※パッケージは2014年11月以降更新されてい ません。
  36. 36. まとめ • PCA=データを縮約して視覚化する手法 • データ前処理 -> prcomp -> ggbiplot -> キモチイイ • bPCAというものもあるらしい ※(MCMCハァハァ(*´Д`)する方専用 • 間違い・修正点などなにかございましたら twitter:@NSushi までお願いします!
  37. 37. 参考サイト • https://www1.doshisha.ac.jp/~mjin/R/24/24.html • https://tgmstat.wordpress.com/2013/11/21/introd uction-to-principal-component-analysis-pca/ • http://www.r-bloggers.com/computing-and- visualizing-pca-in-r/ • http://www.petrkeil.com/?p=2316 • http://statsbeginner.hatenablog.com/entry/2014/0 7/27/121214

×