簡単な幾何学的な説明があります。Rで次の例を試して、最初の主成分が分散を最大化することを思い出してください。
library(ggplot2)
n <- 400
z <- matrix(rnorm(n * 2), nrow = n, ncol = 2)
y <- sample(c(-1,1), size = n, replace = TRUE)
# PCA helps
df.good <- data.frame(
y = as.factor(y),
x = z + tcrossprod(y, c(10, 0))
)
qplot(x.1, x.2, data = df.good, color = y) + coord_equal()
# PCA hurts
df.bad <- data.frame(
y = as.factor(y),
x = z %*% diag(c(10, 1), 2, 2) + tcrossprod(y, c(0, 8))
)
qplot(x.1, x.2, data = df.bad, color = y) + coord_equal()
PCAヘルプ
最大分散の方向は水平であり、クラスは水平に分離されます。
PCAが痛い
最大分散の方向は水平ですが、クラスは垂直に分離されています