Набор данных радужной оболочки - хороший пример изучения 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)