Мне трудно понять один или два аспекта кластерного пакета. Я внимательно следую примеру Quick-R , но не понимаю один или два аспекта анализа. Я включил код, который я использую для этого конкретного примера.
## Libraries
library(stats)
library(fpc)
## Data
mydata = structure(list(a = c(461.4210925, 1549.524107, 936.42856, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131.4349206, 0, 762.6110846,
3837.850406), b = c(19578.64174, 2233.308842, 4714.514274, 0,
2760.510002, 1225.392118, 3706.428246, 2693.353714, 2674.126613,
592.7384164, 1820.976961, 1318.654162, 1075.854792, 1211.248996,
1851.363623, 3245.540062, 1711.817955, 2127.285272, 2186.671242
), c = c(1101.899095, 3.166506463, 0, 0, 0, 1130.890295, 0, 654.5054857,
100.9491289, 0, 0, 0, 0, 0, 789.091922, 0, 0, 0, 0), d = c(33184.53871,
11777.47447, 15961.71874, 10951.32402, 12840.14983, 13305.26424,
12193.16597, 14873.26461, 11129.10269, 11642.93146, 9684.238583,
15946.48195, 11025.08607, 11686.32213, 10608.82649, 8635.844964,
10837.96219, 10772.53223, 14844.76478), e = c(13252.50358, 2509.5037,
1418.364947, 2217.952853, 166.92007, 3585.488983, 1776.410835,
3445.14319, 1675.722506, 1902.396338, 945.5376228, 1205.456943,
2048.880329, 2883.497101, 1253.020175, 1507.442736, 0, 1686.548559,
5662.704559), f = c(44.24828759, 0, 485.9617601, 372.108855,
0, 509.4916263, 0, 0, 0, 212.9541122, 80.62920455, 0, 0, 30.16525587,
135.0501384, 68.38023073, 0, 21.9317122, 65.09052886), g = c(415.8909649,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 637.2629479, 0, 0,
0), h = c(583.2213618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0), i = c(68206.47387, 18072.97762, 23516.98828,
13541.38572, 15767.5799, 19756.52726, 17676.00505, 21666.267,
15579.90094, 14351.02033, 12531.38237, 18470.59306, 14149.82119,
15811.23348, 14637.35235, 13588.64291, 12549.78014, 15370.90886,
26597.08152)), .Names = c("a", "b", "c", "d", "e", "f", "g",
"h", "i"), row.names = c(NA, -19L), class = "data.frame")
Затем я стандартизирую переменные:
# standardize variables
mydata <- scale(mydata)
## K-means Clustering
# Determine number of clusters
wss <- (nrow(mydata)-1)*sum(apply(mydata,2,var))
for (i in 2:15) wss[i] <- sum(kmeans(mydata, centers=i)$withinss)
# Q1
plot(1:15, wss, type="b", xlab="Number of Clusters", ylab="Within groups sum of squares")
# K-Means Cluster Analysis
fit <- kmeans(mydata, 3) # number of values in cluster solution
# get cluster means
aggregate(mydata,by=list(fit$cluster),FUN=mean)
# append cluster assignment
mydata <- data.frame(mydata, cluster = fit$cluster)
# Cluster Plot against 1st 2 principal components - vary parameters for most readable graph
clusplot(mydata, fit$cluster, color=TRUE, shade=TRUE, labels=0, lines=0) # Q2
# Centroid Plot against 1st 2 discriminant functions
plotcluster(mydata, fit$cluster)
У меня вопрос, как может график, который показывает количество кластеров (отмечен Q1
в моем коде), может быть связан с фактическими значениями (номер кластера и имя переменной)?
Обновление: теперь я понимаю, что эта clusplot()
функция представляет собой двумерный график с PCA1 и PCA2. Однако я не понимаю связи между компонентами PCA и группами кластеров. Какова связь между значениями PCA и группами кластеризации? Я читал в другом месте о связи между Kmeans и PCA, но я до сих пор не понимаю, как они могут отображаться на одном и том же двумерном графике.
источник
Ответы:
Я не совсем понял вопрос 1, но попробую ответить. График Q1 показывает, как изменяется сумма квадратов (wss) при изменении номера кластера. На графиках такого типа вы должны искать изгибы на графике, излом на 5 указывает, что это хорошая идея использовать 5 кластеров.
WSS имеет отношение к вашим переменным в следующем смысле, формула для WSS
Ответ на вопрос 2 таков. На самом деле вы смотрите на
clusplot()
график ваших наблюдений в главной плоскости. Эта функция выполняет подсчет баллов по основным компонентам для каждого из ваших наблюдений, выстраивая эти баллы и раскрашивая по кластерам.Анализ главных компонентов (PCA) - это метод сокращения измерений; он «суммирует» информацию всех переменных в пару «новых» переменных, называемых компонентами. Каждый компонент отвечает за объяснение определенного процента от общей изменчивости. В примере вы читаете «Эти два компонента объясняют 73,95% общей изменчивости».
Функция
clusplot()
используется для определения эффективности кластеризации. В случае успешной кластеризации вы увидите, что кластеры четко разделены в основной плоскости. С другой стороны, вы увидите, что кластеры объединены в основной плоскости, когда кластеризация не удалась.Для дальнейшего ознакомления с анализом основных компонентов вы можете прочитать вики. если вы хотите книгу, которую я предлагаю «Современные многовариантные методы» от Izenmann, там вы найдете PCA и k-means.
Надеюсь это поможет :)
источник
clusplot()
функции. Какова связь между значениями PCA и группами кластеризации? Я читал в другом месте о связи между Kmeans и PCA, но я до сих пор не понимаю, как они могут отображаться на одном и том же двумерном графике. (Возможно, это должен быть новый вопрос сам по себе).mydata
, то есть то, что вы фактически видите на графике. Форма точек строится с использованиемfit$cluster
второго параметраclusplot()
. Может быть, вам следует глубже изучить PCA. Дайте мне знать, если это помогло вам, или если у вас есть дальнейшие ссылки.fit$cluster
связаны с PCA "координаты"? Я думаю, что понимаю, как работает PCA, но, насколько я понимаю, каждый компонент не может быть объяснен с помощью переменных из исходных данных (скорее, это линейная комбинация необработанных данных), поэтому я не понимаю, как это может быть связанные с кластерами.fit$cluster
имеет отношения к PCA. Чтоclusplot()
значит - построить точки, используя «новые» координаты, и пометить их, используяfit$cluster
. Я получил «+» для кластера 3, «o» для кластера 1 и треугольник для кластера 2. Функцияclusplot()
полезна для визуализации кластеризации.fit$cluster
:)