rd-7. 主成分分析 (Rシステムでデータサイエンス演習)

Slides:



Advertisements
Similar presentations
社会統計 第 14 回 主成分分析 寺尾 敦 青山学院大学社会情報学部
Advertisements

生物統計学・第 5 回 比べる準備をする 標準偏差、標準誤差、標準化 2013 年 11 月 7 日 生命環境科学域 応用生命科学 類 尾形 善之.
衛星画像とセンサスデータを用 いたQOLのマッピング 筑波大学生命環境系 松下文経 2011年10月13日.
1 徹底討論「主成分分析 vs 因子分析」 主成分分析は因子分析ではない ! 狩野裕 (大阪大学) 日本行動計量学会第 30 回大会 於:多摩大学.
●母集団と標本 母集団 標本 母数 母平均、母分散 無作為抽出 標本データの分析(記述統計学) 母集団における状態の推測(推測統計学)
主成分分析 主成分分析は 多くの変数の中を軸を取り直すことで より低い次元で表現できるようにする。 データがばらついている方向ほど
因子分析,共分散構造分析 Factor Analysis Structural Equations Model
多変量解析 -重回帰分析- 発表者:時田 陽一 発表日:11月20日.
9. 主成分分析 Principal Component Analysis (PCA)
RコマンダーでANOVA 「理学療法」Vol28(7)のデータ
ファーストイヤー・セミナーⅡ 第8回 データの入力.
林俊克&廣野元久「多変量データの活用術」:海文堂
生物統計学・第3回 全体を眺める(2) 主成分分析
「データ学習アルゴリズム」 第3章 複雑な学習モデル 3.1 関数近似モデル ….. … 3層パーセプトロン
第6章 2つの平均値を比較する 2つの平均値を比較する方法の説明    独立な2群の平均値差の検定   対応のある2群の平均値差の検定.
回帰分析.
シミュレーション物理7 乱数.
確率・統計輪講資料 6-5 適合度と独立性の検定 6-6 最小2乗法と相関係数の推定・検定 M1 西澤.
データ分析入門(13) 第13章 主成分分析 廣野元久.
主成分分析                     結城  隆   .
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
回帰分析/多変量分析 1月18日.
5.5 The Linear Arboricity of Graphs (グラフの線形樹化数)
データの可視化 ~高次元データを見る~ 三枝 亮 (早稲田大学).
市場調査の手順 問題の設定 調査方法の決定 データ収集方法の決定 データ収集の実行 データ分析と解釈 データ入力 データ分析 報告書の作成.
回帰モデル・クラス分類モデルを 評価・比較するための モデルの検証 Model validation
2016年度 植物バイオサイエンス情報処理演習 第10回 情報解析(3) Rを使った主成分分析
Cプログラミング演習 第6回 ファイル処理と配列.
PCAからICAへ? 狩野裕+清水昌平 (大阪大学人間科学部) 日本行動計量学会:東京大学 平成12年10月.
独立成分分析 1.問題は何か:例:解法:全体の見通し 2007/10/17 名雪 勲.
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
プログラミング論 II 2008年吉日 主成分分析 数値積分
量的表現 Quantitation.
主成分分析 (Principle Component Analysis)
人工知能を動かしてみる(Keras を用いたニューラルネットワークの定義,コンパイル,学習,評価,予測)
T2統計量・Q統計量 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
pp-9. Python のモジュール、パッケージ
独立成分分析 (ICA:Independent Component Analysis )
中澤 港 統計学第4回 中澤 港
主成分分析 Principal Component Analysis PCA
プログラミング論 主成分分析
多変量解析 ~主成分分析~ 1.主成分解析とは 2.適用例と解析の目的 3.解析の流れ 4.変数が2個の場合の主成分分析
変換されても変換されない頑固ベクトル どうしたら頑固になれるか 頑固なベクトルは何に使える?
パターン認識特論 担当:和田 俊和 部屋 A513 主成分分析
部分的最小二乗回帰 Partial Least Squares Regression PLS
プロセスデータ解析学5 -主成分分析- 担当:長谷部伸治     金 尚弘.
ex-8. 平均と標準偏差 (Excel 実習シリーズ)
ベイジアンネットワーク概説 Loopy Belief Propagation 茨城大学工学部 佐々木稔
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
データ解析 静岡大学工学部 安藤和敏
自己組織化マップ Self-Organizing Map SOM
「ICAによる顔画像特徴量抽出とSVMを用いた表情認識」
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
ai-5. 人工知能の Python パッケージ TensorFlow と Keras の動作確認
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
第6回:得点を表示しよう! (文字の表示、乱数)
1ーQー18 音声特徴量抽出のための音素部分空間統合法の検討
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
最小二乗法による線形重回帰分析 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
pp-9. Python のモジュール、パッケージ
ex-8. 平均と標準偏差 (Excel を演習で学ぶシリーズ)
Locally-Weighted Partial Least Squares LWPLS 局所PLS
パターン認識特論 カーネル主成分分析 和田俊和.
生物統計学・第14回 全体を眺める(6) -相関ネットワーク解析-
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
rd-1. Rシステムと RStudio (Rシステムでデータサイエンス演習)
Cプログラミング演習 ニュートン法による方程式の求解.
生物統計学・第11回 全体を眺める(3) -主成分分析1:分析の基本-
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
Presentation transcript:

rd-7. 主成分分析 (Rシステムでデータサイエンス演習) https://www.kkaneko.jp/cc/rd/index.html 金子邦彦

7-1 主成分分析

主成分分析 (principle component analysis) とは 複数の変数から得られた標本をもとに,軸を 得るための方式 得られた「1番目の軸(主軸)」は,標本群 の分散が最大になるような軸である.

主成分分析の例 1番目の軸 2番目の軸 主成分分析の結果 元データ

主成分分析の例 1番目の軸 2番目の軸 主成分分析の結果 元データ

合成データからランダムに100個選び標本を作る サイズ100 の標本を2セット 合成データ タイプ:数値(整数化しない) サイズ:100,000 x <- rnorm(100000, mean=5, sd=5) y <- rnorm(100000, mean=5, sd=5) n <- floor( runif(100, 1, 100000+1) ) d8 <- data.frame( xx=x[n], yy=y[n] ) d8$yy <- d8$yy - (d8$xx + d8$yy) * 0.6 library(ggplot2) ggplot(d8, aes(x=xx)) + geom_point( aes(y=yy), size=3 ) + theme_bw() a <- prcomp(d8) print(a$rotation) 合成データに 負の相関関係をもたせる 主成分分析

合成データからランダムに100個選び標本を作る サイズ100 の標本を2セット 合成データ タイプ:数値(整数化しない) サイズ:100,000 x <- rnorm(100000, mean=5, sd=5) y <- rnorm(100000, mean=5, sd=5) n <- floor( runif(100, 1, 100000+1) ) d9 <- data.frame( xx=x[n], yy=y[n] ) d9$yy <- d9$yy + (d9$xx - d9$yy) * 0.8 library(ggplot2) ggplot(d9, aes(x=xx)) + geom_point( aes(y=yy), size=3 ) + theme_bw() a <- prcomp(d9) print(a$rotation) 合成データに 正の相関関係をもたせる 主成分分析

主成分分析 (principle component analysis) ◆標本数(つまり変数の数)が n のとき, n 個の軸が得 られる 1番目の軸(主軸)は,分散が最大になるような軸. 2番目の軸は,1番目の軸方向の成分を取り除いた残り で,分散が最大になる軸 3番目の軸は, 1, 2 番目の軸方向の成分を取り除いた残 りで,分散が最大になる軸   ・・・ 以上を n 個の軸を得るまで繰り返す 得られた軸は,互いに直交(垂直)

7-2 外れ値と主成分分析

主成分分析は万能というわけではない ◆ 標本には,必ず「ノイズ」が混入する ◆ ノイズがランダム(無作為)のときは,求まる軸の向 きに影響を及ぼさない ◆ ノイズがランダムでないときは,求まる軸の向きに影 響を及ぼす 外れ値: 明らかにおかしな値 計測もれ: 値がなぜか 0 になっている ◆ 手作業で「外れ値や計測もれなどの不正なデータを取 り除く」のが基本だが,自動で取り除くのが困難な状況 もある

外れ値を含むデータの合成の例 d9 + d10 d11 外れ値が混入 外れ値 外れ値を混ぜる x <- rnorm(100000, mean=5, sd=5) y <- rnorm(100000, mean=5, sd=5) n <- floor( runif(100, 1, 100000+1) ) d9 <- data.frame( xx=x[n], yy=y[n] ) d9$yy <- d9$yy + (d9$xx - d9$yy) * 0.8 d10 <- data.frame( xx=rnorm(10, mean=-20, sd=1), yy=rnorm(10, mean=5, sd = 1) ) d11 <- rbind( d9, d10 ) library(ggplot2) ggplot(d11, aes(x=xx)) + geom_point( aes(y=yy), size=3 ) + theme_bw() 外れ値を混ぜる

主成分分析は外れ値に弱い d9 d11 外れ値が混入 全データから 忠実に軸を 算出

主成分分析は外れ値に弱い d11 x <- rnorm(100000, mean=5, sd=5) y <- rnorm(100000, mean=5, sd=5) n <- floor( runif(100, 1, 100000+1) ) d9 <- data.frame( xx=x[n], yy=y[n] ) d9$yy <- d9$yy + (d9$xx - d9$yy) * 0.8 d10 <- data.frame( xx=rnorm(10, mean=-20, sd=1), yy=rnorm(10, mean=5, sd = 1) ) d11 <- rbind( d9, d10 ) library(ggplot2) ggplot(d11, aes(x=xx)) + geom_point( aes(y=yy), size=3 ) + theme_bw() a <- prcomp(d11) print(a$rotation) 外れ値を混ぜる

主成分分析のバリエーション - robust PCA - 外れ値があるデータでも,主成分分析したい  → この問題に取り組んだ手法が多数ある 例えば C. Croux, P. Filzmoser, M. Oliveira, (2007). Algorithms for Projection-Pursuit Robust Principal Component Analysis, Chemometrics and Intelligent Laboratory Systems, Vol. 87, pp. 218-225.

主成分分析のバリエーション - Principle Component Pursuit - 計測漏れがあるデータでも,主成分分析したい  → この問題に取り組んだ手法が多数ある 例えば Candes, E. J., Li, X., Ma, Y., & Wright, J. (2011). Robust principal component analysis?. Journal of the ACM (JACM), 58(3), 11

robust PCA を使うには 準備 インターネット接続が必要 インストール手順 install.packages("pcaPP")

robust PCA の実行結果例 pcaPP パッケージを使用 d9 d11 外れ値が混入 PCA robust PCA 外れ値に対して ある程度の 耐性がある

pcaPP パッケージを用いて robust PCA d11 x <- rnorm(100000, mean=5, sd=5) y <- rnorm(100000, mean=5, sd=5) n <- floor( runif(100, 1, 100000+1) ) d9 <- data.frame( xx=x[n], yy=y[n] ) d9$yy <- d9$yy + (d9$xx - d9$yy) * 0.8 d10 <- data.frame( xx=rnorm(10, mean=-20, sd=1), yy=rnorm(10, mean=5, sd = 1) ) d11 <- rbind( d9, d10 ) library(ggplot2) ggplot(d11, aes(x=xx)) + geom_point( aes(y=yy), size=3 ) + theme_bw() library(pcaPP) a2 <- PCAgrid(d11) print(a2$loadings) 外れ値を混ぜる