Як отримати "власні значення" (відсотки поясненої дисперсії) векторів, які не є власними векторами PCA?


10

Мені хотілося б зрозуміти, як я можу отримати відсоток дисперсії набору даних не в просторі координат, наданому PCA, а на дещо іншому наборі (повернутих) векторів.

введіть тут опис зображення

set.seed(1234)
xx <- rnorm(1000)
yy <- xx * 0.5 + rnorm(1000, sd = 0.6)
vecs <- cbind(xx, yy)
plot(vecs, xlim = c(-4, 4), ylim = c(-4, 4))
vv <- eigen(cov(vecs))$vectors
ee <- eigen(cov(vecs))$values
a1 <- vv[, 1]
a2 <- vv[, 2]
theta = pi/10
rotmat <- matrix(c(cos(theta), sin(theta), -sin(theta), cos(theta)), 2, 2)
a1r <- a1 %*% rotmat
a2r <- a2 %*% rotmat
arrows(0, 0, a1[1], a1[2], lwd = 2, col = "red")
arrows(0, 0, a2[1], a2[2], lwd = 2, col = "red")
arrows(0, 0, a1r[1], a1r[2], lwd = 2, col = "green3")
arrows(0, 0, a2r[1], a2r[2], lwd = 2, col = "green3")
legend("topleft", legend = c("eigenvectors", "rotated"), fill = c("red", "green3"))

Тому я знаю, що дисперсія набору даних по кожній з червоних осей, задана PCA, представлена ​​власними значеннями. Але як я міг отримати еквівалентні відхилення, що складають однакову кількість, але спроектував дві різні осі зеленого кольору, які є обертанням на пі / 10 основних компонентних осей. IE, з огляду на два ортогональні одиничні вектори, як я можу отримати дисперсію набору даних по кожній з цих довільних (але ортогональних) осей, так що вся дисперсія враховується (тобто сума власних значень) така ж, як і в PCA).


Дуже пов’язані: stats.stackexchange.com/questions/8630 .
амеба

Відповіді:


7

Якщо вектори є ортогональними, можна просто взяти дисперсію скалярної проекції даних на кожен вектор. Скажімо, у нас є матриця даних ( точок x розмірів) та набір ортонормальних векторів стовпців . Припустимо, дані отримані по центру. Варіантність даних по напрямку кожного вектора задається .Xnd{v1,...,vk}viVar(Xvi)

Якщо існує стільки ж векторів, скільки початкових розмірів ( ), сума дисперсій проекцій буде дорівнює сумі дисперсій вздовж вихідних розмірів. Але, якщо векторів менше, ніж вихідні розміри ( ), сума дисперсій, як правило, буде меншою, ніж для PCA. Один із способів думати про PCA полягає в тому, що він максимально збільшує цю величину (за умови обмеження, що вектори є ортогональними).k=dk<d

Ви також можете обчислити (пояснюється частка дисперсії), яка часто використовується для вимірювання того, наскільки добре задана кількість розмірів PCA представляє дані. Нехай представляє суму дисперсій вздовж кожного вихідного виміру даних. Тоді:R2S

R2=1Si=1kVar(Xvi)

Це лише співвідношення підсумованих дисперсій проекцій та підсумованих дисперсій по початкових розмірах.

Ще один спосіб думати про - це те, що він вимірює корисність, якщо ми намагаємося реконструювати дані з проекцій. Потім він приймає звичну форму, що використовується для інших моделей (наприклад, регресія). Скажімо, -та точка даних є векторним рядком . Зберігати кожен з базисних векторів уздовж стовпців матриці . Проекція й точки даних на всі вектори в задається . Коли менше векторів, ніж вихідні розміри (R2ix(i)ViVp(i)=x(i)Vk<d), ми можемо вважати це як лінійне відображення даних у простір зі зменшеною розмірністю. Ми можемо приблизно реконструювати точку даних з низькою мірні подання з допомогою відображення назад у вихідне простір даних: . Середня помилка відновлення у квадраті - це середня квадратна евклідова відстань між кожною вихідною точкою даних та її реконструкцією:x^(i)=p(i)VT

E=1nx(i)x^(i)2

Корисність придатності визначається так само, як і для інших моделей (тобто як один мінус частка необясненої дисперсії). Враховуючи середню квадратичну помилку моделі ( ) та загальну дисперсію модельованої кількості ( ), . У контексті нашої реконструкції даних середня помилка у квадраті - (помилка відновлення). Загальна дисперсія дорівнює (сума дисперсій вздовж кожного виміру даних). Тому:R2MSEVartotalR2=1MSE/VartotalES

R2=1ES

S також дорівнює середньому квадрату відстані Евкліда від кожної точки даних до середнього значення всіх точок даних, тому ми можемо також вважати порівнянням помилки відновлення з помилкою «найгіршої моделі», яка завжди повертає означають як реконструкцію.R2

Два вирази для еквівалентні. Як і вище, якщо існує стільки векторів, скільки початкових розмірів ( ), тоді буде одним. Але, якщо , , як правило, буде менше, ніж для PCA. Ще один спосіб думати про PCA - це мінімізувати помилку відновлення у квадраті.R2k=dR2k<dR2


+1, дуже чітке пояснення. Я хочу лише зазначити, що для повноти - це те, що ви написали, це лише в тому випадку, якщо ми розуміємо реконструкцію через той самий який був використаний для проектування. В цілому для довільного вектора проекції буде краща реконструкція, що дасть більший . У мене є відповідь, де я це детально пояснюю . Я погоджуюсь, що для цього конкретного питання те, що ви написали, саме те, що потрібно. R2try[ing] to reconstruct the data from the projectionsVvR2
амеба

Так, це хороший момент і приємне пояснення
user20160

Що робити, якщо у мене немає матриці даних, а просто матриці коваріації? Сума діагоналі матриці коваріації дає мені загальну дисперсію, і якби я застосував PCA до цієї матриці коваріації, власні значення давали б дисперсію вздовж кожного нового напрямку, так що пояснювана дисперсія є власним значенням / сумарною дисперсією. Але що мої вектори не є власними векторами?
Збентежений

... Наскільки я можу сказати, якщо ми почнемо з матриці коваріації C , то в цьому випадку потрібно взяти | Cv_i | / sum (diag ( C )) для пояснення% відхилення.
Збентежений
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.