Предположим, что mat_pages [] содержит страницы в столбцах (которые вы хотите кластеризовать) и отдельных лиц в строках. Вы можете кластеризовать страницы на основе отдельных данных в Rby, используя следующую команду:
pc <- prcomp(x=mat_pages,center=TRUE,scale=TRUE)
Матрица нагрузок - это матрица собственных векторов разложения данных SVD. Они дают относительный вес каждой страницы при подсчете баллов. Нагрузки с большими абсолютными значениями оказывают большее влияние на определение показателя соответствующего основного компонента.
Тем не менее, я также должен указать на то, что использование PCA для кластеризации страниц не оправдано. Причиной этого является то, что нагрузки придают PAGES больший вес с более высокой вариацией, независимо от того, является ли эта вариация действительной из-за содержания PAGE или по какой-либо другой причине (может быть технической или индивидуальной вариацией). Нагрузки не обязательно отражают истинные различия между группами, которые (возможно) ваш основной интерес. НО, эта кластеризация действительно отражает различия в группе при условии, что все страницы имеют одинаковую дисперсию (я не знаю, является ли это допустимым предположением).
Если у вас есть мощные вычислительные средства (которые могут быть возможны с учетом вашего размера данных), использование иерархических моделей может быть хорошей идеей. В R это можно сделать с помощью пакета lme4.
Что делать после того, как вы набрали очки?
Это грубое предположение, и анализ во многом зависит от того, как выглядят данные. Кроме того, я предполагаю, что этот процесс будет крайне невозможен для группировки данных, которые у вас есть.
pc.col <- paste("page", 1:27000, sep=".")
pdf("principle-components.pdf")
plot(pc$x[,1:2]) ## Just look at the 1st two loadings (as you can see the groupings in a plane)
dev.off()
Надеемся, что это может дать вам представление о том, как данные группируются в.
Предупреждение: это не то, что я бы порекомендовал.
Моя рекомендация:
Подобные проблемы часто возникают в геномике. В вашем случае страницы соответствуют генам, а индивиды соответствуют пациентам (в основном индивиды имеют то же значение, что и в геномике)
Вы хотите кластеризовать страницы на основе данных.
Вы можете использовать много кластеризованных пакетов в R, на которые были указаны другие ответы. Основная проблема с пакетами, как hclust, заключается в том, как определить количество кластеров. Некоторые из моих любимых:
- pvclust (Предоставляет вам кластеры, а также дает p-значение для каждого кластера. Используя p-значение, вы можете определить статистически значимые кластеры. Проблема : требует больших вычислительных мощностей, и я не уверен, будет ли она работать с данными вашего размер)
- hopach (Дает вам приблизительное количество кластеров и кластеров)
- В Bioconductor доступны другие пакеты, пожалуйста, проверьте их в представлении задач.
Вы также можете использовать кластерные алгоритмы, такие как k-means и т. Д. Я уверен, что я видел ветку на этом форуме о кластеризации. Ответы были очень подробными. Тал Галили спросил, правильно ли я помню.
Это, безусловно, проблема кластеризации. Проверьте
cluster
пакет Rs , чтобы получить обзор параметров алгоритма (pam
и ониagnes
являются лучшими для запуска; они представляют два основных потока в кластеризации - центроиды и иерархический ).Основная проблема использования кластеризации ваших данных - определить хороший показатель сходства между страницами; простой - использовать манхэттенское расстояние; немного сложнее подсчитать количество обычных зрителей и нормализовать его, скажем, средним числом зрителей первой и второй страниц - это должно заставить замолчать эффекты популярности.
РЕДАКТИРОВАТЬ: Хорошо, теперь я видел размер данных ... это, вероятно, заставит R взорваться, так как ему требуется один треугольник матрицы для хранить расстояния. Проверьте этот отчет для возможных решений.(number of pages)×(number of pages)
источник
Уменьшение размерности в основном применяет алгоритм кластеризации к атрибутам (столбцам). Из-за довольно большой размерности вашего набора данных вы можете попытаться использовать SOM (самоорганизующаяся карта / сеть Кохонена) для создания карты для отдельных лиц или страниц. Затем вы можете увидеть, являются ли значимые (интерпретируемые) шаблоны.
источник
Если вы делаете PCA, я бы посоветовал кратко проверить другие компоненты, кроме только первых двух. Когда у вас есть
prcomp
объектpc
(см. Пост Suncoolsu), вы можетеplot(pc)
увидеть количество отклонений, связанных с различными основными компонентами. Вы также можете легко визуализировать несколько (обычно три или четыре) из нихpairs(pc$x[,1:3])
или, используяlattice
,splom(pc$x[,1:3])
.источник