1
rd-7. 次元削減,主成分分
金子邦彦
データサイエンス演習
R システムを使用)
https://www.kkaneko.jp/de/rd/index.html
アウトライン
7-1. 主成分分析と次元削減
7-2. Rシステムでの主成分分析の実行
7-3. ロバストな主成分分析
2
7-1 主成分分析と次元削減
3
データの次元
4
x
y
z
0
-
20
0
10
20
0.1
データの次元データの表現に必要な最小の情報の数
空間の中の2つの点 2つのデータ「0 -20 0」と
10 20 0.1
次元数:3
データの次元
5
温度
湿度
25
60
28
70
さまざまなデータについて、次元を考えることが可能
2つのデータ「25 60」と
28 70
次元数:2
次元削減
6
x
y
z
0
-
20
0
10
20
0.1
元データ: 次元数は
x
y
0
-
20
10
20
属性 z を削除
次元数は2
データの次元削減を考えることが可能
次元削減の効果
可視化のため
データを散布図などのグラフにするとき、データを2次元や
3次元に次元削減
本質でない情報の除去のため
データにノイズが含まれていたり、分析のために不要なもの
が含まれている場合、次元削減を行う
計算の効率化のため
次元削減によりデータ全体のサイズが少なくなり、計算の効
率化ができる
7
次元削減の手法①
次元削減の単純な方法
属性の削除
近似直線への投影
8
x
y
z
0
-
20
0
10
20
0.1
x
y
0
-
20
10
20
次元数は3次元数は2
次元数は2次元数は1
次元削減の手法②
次元削減にはさまざまなアプローチがある
主成分分析(PCA),ロバストな主成分分析
データの分散が最大になる方向に軸を見つけるデータの
特徴を最もよく表すを見つける).
T-SNE
データ間の距離を用いる.距離を保つようにしながら次元削減.
Linear Discriminant Analysis
教師有りの機械学習の技術を使用.
「データは、種類ごとの正規分布」,「各種類のデータは同じ
形状の分布である(共通の共分散行列を持つ).ただし,平均は
違ってもよい」という性質の成り立つデータに有効
QDA
LDAの改良.「共通の共分散行列を持つ」という仮定を置かない9
主成分分析と主軸
主成分分析では、データの分散が最大となる方向の軸
という
主成分分析では、元のデータの次元数同じ数主軸を作
成できる
10
1番目の主軸
2番目の主軸
次元数は2主軸を
主成分分析と主軸
主成分分析では、元のデータの次元数同じ数主軸を作成
できる
1番目の主軸は,データの分散が最大になるような方向の
2番目の主軸は,1番目の主軸とは異なる方向で、その方
向における分散が最大
1番目の主軸に対するデータの成分を取り除いた残りのデー
タから行う
3番目以降も同様
3番目の主軸1番目と2番目の主軸に対する成分を取り除い
残りのデータから、その方向における分散が最大となるよ
うに選ぶ
得られた各主軸は互いに直交(各段階で「成分を取り除く」
ので) 11
主成分分析
主成分分析では,得られた主軸の中から、上位の主軸
,下位の主軸を削除.
選ばれた主軸に,元データを投影することで,次元削減を
行う.この投影は線形変換である.
12
1番目の軸
2番目の軸
1番目の軸
元データ: 次元は2次元は1
主成分分析の例
元データ
13
1番目の
主軸 2番目の
主軸
主成分分析の結果
主成分分析の例
元データ
14
1番目の
主軸 2番目の
主軸
主成分分析の結果
7-2 Rシステムでの主成分分析
の実行
15
パッケージの設定
次の手順で,必要なパッケージをインストール
パッケージをインストールするのにインターネッ
ト接続が必要
install.packages("ggplot2") を実行
install.packages("pcaPP") を実行
16
合成データからランダムに100個選び,主成
分分析を実施
17
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,000
サイズ100
のデータを2セッ
合成データの生成
合成データに
相関関係をもたせる
この2行が主成分分析
主成分分析
合成データからランダムに100個選びデータ
を作る
18
合成データ
タイプ:数値(整数化しない)
サイズ:100,000
サイズ100
のデータを2セット
主成分分析
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)
合成データの生成
合成データに
相関関係をもたせる
この2行が主成分分析
7-3 ロバストな主成分分析
19
主成分分析
主成分分析は,便利であるが,万能ではない
ノイズを含むデータについて,ノイズがランダムであれば,
主軸影響はない
ノイズがランダムでない場合,ノイズが主軸に影響を及ぼ
し,次元削減に悪影響
ノイズの他にも、外れ値(他の値と比べて、異常に離れた
値)、計測漏れ(データが空,データが0)も、次元削減に
悪影響
外れ値計測漏れなどの不適切なデータは、手作業や、適切
な分析手法で取り除く必要あり 20
外れ値の検出:データが正規分布に従っていると
仮定し,「平均から何倍の標準偏差以上離れてい
るデータを外れ値」とするなど
欠損データの取り扱い無視したり,平均値や中
央値で補完する.欠損データにパターンがある場
合には,欠損データの原因を調べる手が仮になる
場合がある.
異常検出:統計,機械学習の手法がある
21
外れ値を含むデータの合成の例
22
d11
外れ値が混入
d9 d10
外れ値
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()
外れ値の混入
主成分分析は外れ値に弱い
23
d11
外れ値が混入
d9
全データから
忠実に軸を
算出
主成分分析は外れ値に弱い
24
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)
外れ値の混入
ロバストな主成分分析
【基本は】
外れ値計測漏れなどの不適切なデータは、手作業や、適切
な分析手法で取り除く必要あり
ロバストな主成分分析
ノイズがあったり,一部,外れ値や計測漏れが混入していた
としても,それらの悪影響が少ないように改良された主成分
分析
25
主成分分析のバリエーション①
ロバスト主成分分析(robust PCA
主成分分析データの外れ値の影響を受けやすい
外れ値(他のデータから大きく離れたデータ)は、大きく
離れているからこそ、データの分散値に大きな影響を与え
る可能性がある
ロバスト主成分分析は、この問題を克服するための一手法
26
文献
Algorithms for Projection-Pursuit Robust Principal Component Analysis" by C. Croux,
P. Filzmoser, and M. Oliveira, published in Chemometrics and Intelligent Laboratory
Systems, Vol. 87, pp. 218-225, 2007
主成分分析のバリエーション②
Principal Component Pursuit
ロバストな主成分分析の一手法
27
文献
Robust principal component analysis?” by E. J. Candes, X. Li, Y. Ma, and J. Wright,
published in Journal of the ACM (JACM), 58(3), 11, 2011
robust PCA の実行結果例
PCA
Robust PCA
28
pcaPP パッケージを使用
d11
外れ値が混入
外れ値に対して
ある程度の
耐性がある
d9
pcaPP パッケージを用いて robust PCA
29
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)
外れ値の混入
全体まとめ
主成分分析と次元削減主成分分析(PCA次元削減
一手法.多次元データを低次元データに変換
主成分分析の特徴主軸は,データの分散を最大限に保つ
ように選ばれる.元のデータセットの情報を可能な限り保
するように次元削減を行う.
ロバストな主成分分析主成分分析では、外れ値が分散に
大きな影響を与,得られる主軸が不適切になるという問題
がある.ロバストな主成分分析は、この問題を克服するこ
とを目的としている.
30