総務省テキスト 第4章 機械学習(教師なし学習) p95の解説です。

主成分分析は、変数間の相関関係を用いて無相関な合成変数を求めることで、多くの変数を少ない変数に縮約する手法です。
例えば、データを2次元に縮約できれば多次元のデータを2次元のグラフに表すことができます。

1 youtubeチャンネルをまとめる

自分の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")