総務省テキスト 第4章 機械学習(教師なし学習) p95の解説です。
主成分分析は、変数間の相関関係を用いて無相関な合成変数を求めることで、多くの変数を少ない変数に縮約する手法です。
例えば、データを2次元に縮約できれば多次元のデータを2次元のグラフに表すことができます。
自分のyoutubeチャンネルの傾向を主成分にまとめてみましょう。
各チャンネルの動画数をジャンル別にまとめたデータを読み込みます。
df <- read.csv("data/syuseibun.csv")
#4項目のデータを取り出す
df.pca <- df[c(2:4)]
変数の縮約とはどのようなことでしょうか?
簡単のため、
x_1:ケーキの動画数 x_2:カフェの動画数 x_3:食レポの動画数
として説明します。変数の縮約とは、
\(a_1^2+a_2^2+a_3^2=1\)という制約のもとで、3つの変数\(x_1,x_2,x_3\)を
\(y=a_1x_1+a_2x_2+a_3x_3\)
のように 一つの変数 y にまとめることをいいます。
このとき、yの分散が大きいほどチャンネルの特徴が識別しやすくなります。
分散が最大となるように係数を定めた変数を第1主成分といい、2番目に分散が大きい変数を第2主成分といいます。
res <- prcomp(df.pca, scale=FALSE)
par(family = "HiraKakuProN-W3")
biplot(res,cex=0.6)
scale=FALSE のすると、変数を標準化しないで主成分分析を行います。
軸には標準化しない目盛と標準化した目盛が併記されています。
赤い文字の位置は、その項目の第1主成分、第2主成分のウェイトを表している。
round(res$rotation, 2)
## PC1 PC2 PC3
## ケーキ -0.68 0.08 -0.73
## カフェ -0.11 0.97 0.21
## 食レポ -0.72 -0.22 0.66
第1主成分 \(PC1=(-0.68)x_1+(-0.11)x_2+(-0.72)x_3\)
第2主成分 \(PC2=(0.08)x_1+(0.97)x_2+(-0.22)x_3\)
ケーキ \(x_1=(-0.68)PC1+(0.08)PC2+(-0.73)PC3\)
であり、
\((-0.68,0.88)\)にケーキの矢印が表示されている。
summary(res)
## Importance of components:
## PC1 PC2 PC3
## Standard deviation 44.7142 18.4638 12.71758
## Proportion of Variance 0.7991 0.1363 0.06464
## Cumulative Proportion 0.7991 0.9354 1.00000
標準偏差はPC1が最大、分散の全体に占める割合( Proportion of Variance)
は 0.7991
累積寄与率(Cumulative Proportion)は, PC1,PC2で
0.9354、90%以上を説明できていることになる。
全ての変数に対して主成分分析を行うと、以下のようになる。
ただし、変数を標準化し、結果は長いので図だけを表示した。
#相関行列に基づく主成分分析 prcomp の実行
df.pca <- df[c(2:11)]
res2 <- prcomp(df.pca, scale=T)
#summary(res2)
#pc <- res2$x;pc
par(family = "HiraKakuProN-W3") #日本語フォントの指定
biplot(res2,cex=0.5)
# 主成分得点のファイルへの掃き出し
#write.csv(pc, file = "pca_cor.csv")