Набір даних райдужної оболонки - прекрасний приклад для вивчення PCA. Однак, перші чотири стовпці, що описують довжину і ширину часточок і пелюсток, не є прикладом сильно перекошених даних. Тому журнал-перетворення даних не сильно змінює результати, оскільки отримане обертання основних компонентів є абсолютно незмінним шляхом перетворення журналу.
В інших ситуаціях перетворення журналу - хороший вибір.
Ми виконуємо PCA, щоб отримати уявлення про загальну структуру набору даних. Ми централізуємо, масштабуємо, а іноді і перетворюємо журнал, щоб відфільтрувати деякі тривіальні ефекти, які можуть домінувати над нашим PCA. Алгоритм PCA, в свою чергу, знайде обертання кожного ПК для мінімізації залишків у квадраті, а саме суму квадратичних перпендикулярних відстаней від будь-якого зразка до ПК. Великі значення мають, як правило, високі важелі.
Уявіть, що потрібно ввести два нових зразки в дані райдужки. Квітка з довжиною пелюстки 430 см та однією довжиною пелюсток 0,0043 див. Обидві квітки дуже ненормальні, оскільки в 100 разів більше і в 1000 разів менше, ніж середні приклади. Варіант першої квітки величезний, так що перші ПК в основному описують відмінності між великою квіткою та будь-якою іншою квіткою. Кластеризація видів неможлива через ту сторону. Якщо дані перетворені в журнал, тепер абсолютне значення описує відносну зміну. Зараз маленька квітка є найбільш ненормальною. Тим не менш, можна як містити всі зразки в одному зображенні, так і забезпечувати справедливу групування видів. Ознайомтеся з цим прикладом:
data(iris) #get data
#add two new observations from two new species to iris data
levels(iris[,5]) = c(levels(iris[,5]),"setosa_gigantica","virginica_brevis")
iris[151,] = list(6,3, 430 ,1.5,"setosa_gigantica") # a big flower
iris[152,] = list(6,3,.0043,1.5 ,"virginica_brevis") # a small flower
#Plotting scores of PC1 and PC" without log transformation
plot(prcomp(iris[,-5],cen=T,sca=T)$x[,1:2],col=iris$Spec)
#Plotting scores of PC1 and PC2 with log transformation
plot(prcomp(log(iris[,-5]),cen=T,sca=T)$x[,1:2],col=iris$Spec)