2. Постановка завдання
Завданням класифікації даних є розбиття наявної
множини точок на задану кількість кластерів так, щоб сума
квадратів відстаней точок до центрів кластерів була
мінімальною.
В точці мінімуму всі центри кластерів збігаються з центрами
відповідних областей діаграми Вороного.
Основні алгоритми:
Хартігана-Вонга
Ллойда
Форджи
Маккуина
3. Початкове наближення
Перш за все необхідно задати початкові наближення
центрів кластерів.
Для цього найчастіше використовують такі способи:
безпосередньо задають центри кластерів;
задають кількість кластерів k та беруть як центри,
координати k перших точок;
задають кількість кластерів k та беруть як центри,
координати k випадково обраних точок (доцільно
здійснювати розрахунки для декількох випадкових
запусків алгоритму).
4. Ітераційна процедура
1. Зарахування кожної точки до кластера, центр якого є
найближчим до неї. Як міру близькості найчастіше беруть
квадрат евклідової відстані, але можуть бути обрані й інші
міри відстані.
2. Перерахунок координат центрів кластерів. Якщо мірою
близькості є евклідова відстань (або її квадрат), центри
кластерів розраховують як середні арифметичні відповідних
координат точок, що належать до цих кластерів.
Ітерації зупиняють, коли здійснено задану максимальну
кількість ітерацій або якщо перестає змінюватися склад
кластерів.
5. Обмеження та недоліки
Вибір кількості
кластерів
(початкового
наближення)
Обмеження
(недоліки)
Попередній аналіз
даних
Чутливість до
викидів
Застосування
Повільна робота
на великих
масивах
k-медіан
Застосування
випадкових
вибірок з масивів
6. Формування масиву даних
a1 = matrix(c(rnorm(20, mean = 5, sd = 1), rnorm(20, mean = 5,
sd = 1)), nrow=20, ncol = 2)
a2 = matrix(c(rnorm(20, mean = 5, sd = 1), rnorm(20, mean =
13, sd = 1)), nrow=20, ncol = 2)
a3 = matrix(c(rnorm(20, mean = 12, sd = 1), rnorm(20, mean =
6, sd = 1)), nrow=20, ncol = 2)
a4 = matrix(c(rnorm(20, mean = 12, sd = 1), rnorm(20, mean =
12, sd = 1)), nrow=20, ncol = 2)
a <- rbind(a1,a2,a3,a4)
Функція rbind() формує матрицю a, в якій перші 20 рядків є
відповідними елементами матриці a1, наступні 20 – матриці
a2 й т. д.
8. Функція kmeans()
Для формування кластерів методом k-середніх можна
використовувати функцію:
kmeans(x, centers, iter.max = 10, nstart = 1, algorithm =
c("Hartigan-Wong", "Lloyd", "Forgy", "MacQueen") )
x – матриця числових даних;
centers – початкове наближення центрів кластерів або кількість
кластерів (тоді як початкове наближення буде взято відповідну
кількість випадково обраних рядків матриці x);
iter.max – максимальна кількість ітерацій;
nstart – кількість випадкових множин, які треба вибрати, якщо
centers – це кількість кластерів;
algorithm – вибір алгоритму кластеризації.
13. Залишки
За допомогою команди sd(resid.a) можна розрахувати
стандартні відхилення залишків. Вони є близькими до
заданих значень стандартних відхилень вихідних масивів
точок, що підтверджує адекватність результатів
кластеризації.