Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
主成分分析(PCA)
~ggbiplot・bPCA~
広島大学大学院教育学研究科
難波 修史
第6回Hiroshima.R
2016/02/20
自己紹介
•難波 修史(なんば しゅうし)
•広島大学大学院教育学研究科M2
•感情表情の表出・認知の研究してます。
•R歴:ちょこちょこ
•twitter:@NSushi
主成分分析とは
•英語で書くとPrincipal component
analysis(以下PCA
•データ解析で用いられる次元縮約手法
•文字通り、全体の指標を端的に判断す
るために、複数の要素から2~3程度の
“主成分”を計算する。
もっとわかりやすく
• 参照:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1236450762
幅が不明 高さが不明
長さが不明
※あくまでイメージです。
斜め45度から見れば?
全部の情報(総合的な車の大きさ)は見える
※ただし各々の精度は落ちる
つまり・・・
•主成分分析とは、一度の視覚で
全体像を見るためのものである。
•どこの角度から見れば、もっと
も良好に全体が見渡せるのか、
それを調べる分析である。
by uminin0055さん
想像してください
•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...
縮約!!!
• p次元のデータをq次元の下位空間 (q ≦ p) に
縮約するための線型結合の一般式
• zq (第q主成分) = a1qx1 + a2qx2 + … + anqxp
• Zn × q (主成分得点)
= Xn × p ・An ...
PCAをやる上でのアドバイス
• PCAはスケール不変性(スケールを変えて
も特徴が変化しない性質)を持たない
ー> p個の変数は全て標準化すべき
•主成分の数は手法に依存
•2 or 3つの主成分は視覚化の目的のために
使用できる
じゃあ、やってみよう^^
•R内にはたくさんのPCA用のパッ
ケージや機能がある
•prcompをつかうっす
+ ggbiplot
使用するデータ:iris
•説明不要の大人気Data
•Sepal = がく片の長さと幅
•Petal = 花びらの長さと幅
•Species = 花の種類
data (iris)
str (iris) #dataの構造確認
PCAの準備
•まずは連続変数に対してlog変換を
• Venables, W. N., Brian D. R. Modern applied statistics with S-PLUS. Springer-verlag. (Section ...
データの標準化
#PCA: center = T and scale. = T are highly advisable
ir.pca <- prcomp(log.ir, center=T, scale. = T)
•変数の大きさや歪度がPCの...
標準偏差+固有ベクトル
•prcomp = 利用可能な主成分を返す。
•print = 各4PC (さっきのz) の標準偏差
+連続変数 (さっきのx) の線型結合
係数である固有ベクトル (さっきのa)
x1~x4
a1~a4
Plot:各PCの分散
• plot = 分散 (y軸) と主成分 (x軸) のplot
•必要なPCの数を視覚的に判別可能
plot (ir.pca,
type = “l”)
Summary:主成分の重要性
summary (ir.pca)
•最初の行=各主成分の標準偏差
•2行目=各標準偏差の2乗が合計に占める
割合(寄与率)
•3行目=2行目の累積(第2までで95%)
ggbiplot:図にしてみよう
•まずは準備編
library(devtools)
install_github (“ggbiplot”, “vqv”)
※github上で利用可能なfunctionです!
library(ggbiplot)
ggbiplot:描くのだ
• g <- ggbiplot(ir.pca, obs.scale = 1,
var.scale = 1, groups = ir.species,
ellipse = T, circle = T)
• g <- g...
できたのがこれ
Box and Cox変換:準備
• 上記では対数変換してるけど、より一般的
なBox and Cox変換(偏ったデータを正規分
布に近づける変換)も可能だよ。
•caret packageのpreProcessで一発よ
require(car...
Box and Coxの結果
#Box(ryの各主成分
PC = predict (trans, iris[,1:4])
# 固有ベクトル
trans$rotation
ちなみにggbiplotは
prcomp() or princomp()の...
PCAについていろいろ
調べてると。。。
BGM:なんとかかんとかUC
bPCAとはなんぞや?
• PCAからJan Smyckaが着想し、開発してる
パッケージ
• データが多変量正規分布しているものと
して考えることで、MCMCを用いてデー
タに多変量正規分布を当てはめ、平均及
び共分散の事後分布を求めることで...
いいところ
• (共分散行列を通して)変数間の結合に
関する事前情報を提供可能
• PCAの安定性(不確実性)を評価可能:
特にサンプルサイズが小さい時
• PCや固定ベクトルに関する事後分布をさ
らなる利用のために抽出できる
あかんところ
• 変数が多いと極端に遅い
• 根本的なMVN(多変量正規分布)の前提が
問題
• summaryやplottingにおいて、MCMC連鎖の中
で変数間の重要な結びつきをこわしうる:
JAGS sampler内で固定値・固定ベクト...
とりあえずいれてみよう
#もちろんdevtoolsを読み込んでから
install_github(“bPCA”, username=“petrkeil”)
library(bPCA)
# またirisつかいましょう
str(iris)
summ...
sim.bPCA関数
bPCA.fitted <- sim.bPCA(iris[,1:4],
n.chains=3, n.iter=1000, n.burnin=500)
•#prior 共分散行列も選択可能です
•#詳しくはhelp(sim....
固有値
•固有値(=主成分得点のSDの2乗:
元のデータの情報の含有レベル)
eigenvalplots.bPCA(bPCA.fitted,
iris[,1:4)
eigenvalplots.bPCAの図
2.5, 50, 97.5%分位点の事後分布
#下限・真ん中・上限の事後分布をplot
biplots.bPCA(bPCA.fitted, iris[,1:4],
axes.to.plot=1:2, scale=0.1)
固有ベクトルの事後分布
#固有ベクトルの事後分布の要約
loading.chain
<- get.loadings.chain.bPCA(bPCA.fitted,
iris[,1:4])
summary.loadings.bPCA(loadin...
出てくるFigure
Console上
まだ発展途上なので多少はね?
• We do not guarantee the very idea to be correct
by共同開発者っぽい人
引用:http://www.petrkeil.com/?p=2316
• 気になる人はぜひ...
まとめ
• PCA=データを縮約して視覚化する手法
• データ前処理 -> prcomp
-> ggbiplot -> キモチイイ
• bPCAというものもあるらしい
※(MCMCハァハァ(*´Д`)する方専用
• 間違い・修正点などなにかござ...
参考サイト
• https://www1.doshisha.ac.jp/~mjin/R/24/24.html
• https://tgmstat.wordpress.com/2013/11/21/introd
uction-to-princip...
主成分分析(Pca)
Nächste SlideShare
Wird geladen in …5
×

主成分分析(Pca)

5.609 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Daten & Analysen
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2ZDZFYj ♥♥♥
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Follow the link, new dating source: ❤❤❤ http://bit.ly/2ZDZFYj ❤❤❤
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

主成分分析(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

×