Raw

Лекція 9. Задачі кластеризації. Метод kk-середніх

Огляд

Модулі 3 і 4 присвячені двом спорідненим, але принципово різним задачам. У Лекціях 68 ми розв’язували класифікацію: маючи навчальну вибірку з відомими мітками класів, будували правило, що приписує клас новому об’єкту. Це навчання з учителем (англ. supervised learning) — «учитель» у вигляді правильних відповідей вказує алгоритму, до чого прагнути.

Тепер уявіть, що міток немає зовсім. Є лише таблиця об’єктів з їхніми ознаками — покупці з історією покупок, документи, пікселі зображення, зорі на знімку — і треба самотужки виявити в них природну структуру: поділити на групи так, щоб усередині групи об’єкти були схожі, а між групами — різні. Це задача кластеризації — центральна задача навчання без учителя (англ. unsupervised learning), якій присвячено весь Модуль 4.

У цьому розділі ми означуємо задачу кластеризації та відмежовуємо її від класифікації; показуємо, чому її не можна розв’язати простим перебором усіх розбиттів (тут з’явиться число Стірлінга з комбінаторики); оглядаємо п’ять класів методів; уводимо функції відстані, без яких «схожість» не має числового змісту; і докладно розбираємо найпопулярніший метод розбиття — kk-середніх (kk-means) — з його цільовою функцією (сумою квадратів помилок), алгоритмом, критерієм збіжності, сильними й слабкими сторонами. Наприкінці розглянемо нечіткий варіант — метод cc-середніх, де об’єкт належить кільком кластерам частково. Лекція 10 продовжить тему ієрархічними методами, що будують не одне розбиття, а цілу вкладену систему кластерів.

Практичний бік. Ітерації kk-середніх «руками» на малому наборі точок ви виконаєте в аудиторії, а сам алгоритм реалізуєте програмою в Лабораторній роботі 9.


9.1 Задача кластеризації

Означення (кластеризація). Кластеризацією (англ. clustering) називають процес розбиття вибірки об’єктів на підмножини — кластери — так, щоб об’єкти в межах одного кластера були схожі між собою, а об’єкти різних кластерів — несхожі. Мітки груп заздалегідь невідомі й самі є результатом роботи алгоритму.

Формально задано множину об’єктів X={x1,x2,,xn}X = \{x_1, x_2, \dots, x_n\}, кожен з яких — вектор ознак xiRdx_i \in \mathbb{R}^d. Треба знайти розбиття {C1,C2,,Ck}\{C_1, C_2, \dots, C_k\} множини XX, тобто систему підмножин, що

C1C2Ck=X,CaCb= (ab),Cc.C_1 \cup C_2 \cup \dots \cup C_k = X, \qquad C_a \cap C_b = \varnothing \ (a \ne b), \qquad C_c \ne \varnothing.

Кластери не перетинаються (кожен об’єкт — рівно в одному), покривають усю вибірку й непорожні. «Схожість» вимірюють через відстань (§9.4): чим менша відстань між об’єктами, тим вони схожіші.

Ключова відмінність від класифікації — у природі навчання:

Класифікація (Модуль 3) Кластеризація (Модуль 4)
Мітки в навчанні відомі (є «правильні відповіді») невідомі
Тип навчання з учителем (supervised) без учителя (unsupervised)
Що шукаємо правило «ознаки \to відомий клас» саму структуру груп
Число груп задане мітками часто треба обрати самому
Як оцінити якість точність на тесті з мітками внутрішні міри (компактність, §9.5)

Типова помилка (кластери \ne класи). Знайдені кластери — це groupings за схожістю ознак, а не готові змістовні класи. Алгоритм може розділити людей за зростом, тоді як вас цікавив дохід; або злити в один кластер дві змістовно різні групи, схожі за обраними ознаками. Інтерпретацію кластерів завжди робить людина, дивлячись на об’єкти всередині кожного.


9.2 Розв’язання перебором. Число Стірлінга

Найпряміший задум — перебрати всі можливі розбиття вибірки на kk груп, для кожного порахувати міру якості (компактність кластерів) і обрати найкраще. Задум правильний, але обчислювально нездійсненний: розбиттів надзвичайно багато. Скільки саме — каже комбінаторика.

Означення (число Стірлінга другого роду). Число Стірлінга другого роду S(n,k)S(n, k) — це кількість способів розбити множину з nn різних об’єктів на kk непорожніх підмножин, що не враховують порядку (групи не пронумеровані).

Ці числа задовольняють рекурентне співвідношення (кожен новий об’єкт або утворює власну групу, або приєднується до однієї з kk наявних):

S(n,k)=kS(n1,k)+S(n1,k1),S(n,1)=S(n,n)=1.S(n, k) = k \cdot S(n-1, k) + S(n-1, k-1), \qquad S(n, 1) = S(n, n) = 1.

Обчислимо перші рядки трикутника S(n,k)S(n, k):

n\kn \backslash k 1 2 3 4 5 Bn=kS(n,k)B_n = \sum_k S(n,k)
1 1 1
2 1 1 2
3 1 3 1 5
4 1 7 6 1 15
5 1 15 25 10 1 52

Останній стовпець — число Белла BnB_n: скільки всього є розбиттів nn об’єктів (на будь-яке число груп, Bn=kS(n,k)B_n = \sum_{k} S(n,k)). Наприклад, для n=6n = 6 їх уже B6=203B_6 = 203. Якщо ми не знаємо kk наперед, перебирати довелося б саме BnB_n варіантів.

Приклад 9.1 (усі розбиття на 2 групи). Для n=4n = 4 об’єктів {a,b,c,d}\{a,b,c,d\} на k=2k = 2 групи маємо S(4,2)=7S(4, 2) = 7 розбиттів:

{a}{bcd}, {b}{acd}, {c}{abd}, {d}{abc}, {ab}{cd}, {ac}{bd}, {ad}{bc}.\{a\}\{bcd\},\ \{b\}\{acd\},\ \{c\}\{abd\},\ \{d\}\{abc\},\ \{ab\}\{cd\},\ \{ac\}\{bd\},\ \{ad\}\{bc\}.

Для двох груп є зручна формула: кожен об’єкт, крім першого, потрапляє «з першим» або «окремо», що дає 2n12^{n-1} варіантів, з яких один (усі разом) лишає другу групу порожньою:

S(n,2)=2n11.S(n, 2) = 2^{\,n-1} - 1.

Перевіримо: S(4,2)=231=7S(4,2) = 2^3 - 1 = 7; S(10,2)=291=511S(10, 2) = 2^9 - 1 = 511 — саме це число стоїть у таблиці на слайді лекції.

Приклад 9.2 (вибух комбінаторної складності). Порахуємо S(n,2)S(n, 2) для зростаючих nn:

nn S(n,2)=2n11S(n, 2) = 2^{n-1}-1
10 511511
20 524287524\,287
50 5.63×1014\approx 5.63 \times 10^{14}
100 6.34×1029\approx 6.34 \times 10^{29}

І це лише для двох груп — найповільніший стовпець. Уже при k=10k = 10 число розбиттів 5050 об’єктів сягає 2.62×1043\approx 2.62 \times 10^{43}, а 100100 об’єктів — 2.75×1093\approx 2.75 \times 10^{93}. Жоден комп’ютер не перебере стільки варіантів за час існування Всесвіту.

Вибух числа розбиттів S(n,2)=2^(n-1)−1 на логарифмічній шкалі: за сотню об'єктів воно сягає 10^29

Висновок. Точний перебір розбиттів неможливий навіть для сотні об’єктів. Тому всі практичні методи кластеризації — це евристики: вони не гарантують глобально найкращого розбиття, але швидко знаходять добре розбиття. Метод kk-середніх (§9.5) — класичний приклад такої евристики.


9.3 Класи методів кластеризації

Методи кластеризації прийнято ділити на п’ять великих класів за тим, як вони формують кластери.

  • Методи розбиття (англ. partitioning). Одразу ділять вибірку на задане число kk кластерів і покращують поділ ітераціями. Приклади: kk-середніх (§9.5), kk-медоїдів (центр — реальний об’єкт, а не середнє). Швидкі, масштабовані; треба задати kk.
  • Ієрархічні методи (англ. hierarchical) — об’єднувальні (агломеративні: почати з окремих об’єктів і зливати) або роздільні (дивізивні: почати з усієї вибірки й ділити). Будують дерево вкладених кластерів (дендрограму), не вимагають наперед задавати kk (тема Лекції 10).
  • Методи на основі щільності (англ. density-based, напр. DBSCAN). Кластер — це область високої щільності точок, відокремлена розрідженими областями. Знаходять кластери довільної форми й автоматично позначають викиди.
  • Решіткові методи (англ. grid-based, напр. STING, CLIQUE). Розбивають простір ознак на скінченну сітку комірок і працюють з комірками, а не окремими точками, — дуже швидко на великих даних.
  • Модельні методи (англ. model-based). Припускають, що дані породжені сумішшю розподілів (напр., суміш гаусіан, GMM), і підбирають параметри моделі; належність об’єкта до кластера стає ймовірнісною.

У цій лекції ми зосереджуємось на найпоширенішому методі розбиття — kk-середніх, — а в кінці розглянемо його «м’який», модельний за духом варіант — нечіткий cc-середніх (§9.9).


9.4 Поняття та функції відстані

«Схожість» об’єктів у кластеризації задають через відстань: близькі об’єкти схожі, далекі — різні. Щоб відстань поводилася розумно, від функції d(x,y)d(x, y) вимагають властивостей метрики.

Означення (метрика). Функція d:X×XRd : X \times X \to \mathbb{R} є метрикою (функцією відстані), якщо для всіх x,y,zx, y, z:

  1. невід’ємність та тотожність: d(x,y)0d(x, y) \ge 0, причому d(x,y)=0    x=yd(x, y) = 0 \iff x = y;
  2. симетричність: d(x,y)=d(y,x)d(x, y) = d(y, x);
  3. нерівність трикутника: d(x,z)d(x,y)+d(y,z)d(x, z) \le d(x, y) + d(y, z).

Для векторів ознак x=(x1,,xd)x = (x_1, \dots, x_d) і y=(y1,,yd)y = (y_1, \dots, y_d) найуживаніші відстані — окремі випадки відстані Мінковського порядку pp:

Означення (відстань Мінковського).

dp(x,y)=(i=1dxiyip)1/p,p1.d_p(x, y) = \left( \sum_{i=1}^{d} |x_i - y_i|^{p} \right)^{1/p}, \qquad p \ge 1.

Три важливі окремі випадки:

Назва pp Формула
Манхеттенська (міська, L1L_1) 11 $\displaystyle\sum_{i}
Евклідова (L2L_2) 22 i(xiyi)2\displaystyle\sqrt{\sum_{i} (x_i - y_i)^2}
Чебишова (LL_\infty) \to\infty $\displaystyle\max_{i}

Евклідова відстань — звичайна «пряма» відстань між точками; манхеттенська рахує шлях уздовж осей (як кварталами міста); чебишова бере найбільше з покоординатних відхилень. Метод kk-середніх за замовчуванням використовує евклідову відстань (точніше, її квадрат — див. §9.5).

Приклад 9.3 (обчислення відстаней). Нехай x=(2,3)x = (2, 3), y=(5,7)y = (5, 7). Покоординатні відхилення: 25=3|2-5| = 3, 37=4|3-7| = 4. Тоді

d1(x,y)=3+4=7,d2(x,y)=32+42=25=5,d(x,y)=max(3,4)=4.d_1(x, y) = 3 + 4 = 7, \qquad d_2(x, y) = \sqrt{3^2 + 4^2} = \sqrt{25} = 5, \qquad d_\infty(x, y) = \max(3, 4) = 4.

Відстань Мінковського порядку p=3p = 3: d3=(33+43)1/3=(27+64)1/3=911/34.498d_3 = (3^3 + 4^3)^{1/3} = (27 + 64)^{1/3} = 91^{1/3} \approx 4.498. Зі зростанням pp відстань зменшується від L1=7L_1 = 7 до L=4L_\infty = 4.

Евклідова, манхеттенська та чебишова відстані між точками x=(2,3) і y=(5,7): прямокутний трикутник з катетами 3 і 4

Типова помилка (несумірні ознаки). Якщо ознаки мають різні масштаби (напр., «вік» у роках 2060\sim 20\text{–}60 і «дохід» у гривнях 10000100000\sim 10\,000\text{–}100\,000), евклідова відстань майже цілком визначається доходом — вік «тоне». Перед кластеризацією ознаки зазвичай нормалізують (напр., до нульового середнього й одиничної дисперсії), щоб кожна робила співмірний внесок у відстань. Це робитимете й у домашньому завданні (середній рівень).


9.5 Метод kk-середніх. Сума квадратів помилок

Метод kk-середніх (kk-means) — найвідоміший метод розбиття. Ідея: кожен кластер представлений своїм центромцентроїдом μc\mu_c, — а об’єкти відносять до найближчого центроїда. Якість такого розбиття вимірюють сумою квадратів помилок.

Означення (центроїд). Центроїд кластера CcC_c — це середнє (центр ваги) його об’єктів:

μc=1CcxCcx.\mu_c = \frac{1}{|C_c|} \sum_{x \in C_c} x.

Означення (сума квадратів помилок, SSE). Цільова функція методу kk-середніх — сума квадратів помилок (англ. sum of squared errors): сума квадратів відстаней від кожного об’єкта до центроїда його кластера:

SSE=c=1kxCcxμc2.\mathrm{SSE} = \sum_{c=1}^{k} \sum_{x \in C_c} \lVert x - \mu_c \rVert^2.

Величина SSE\mathrm{SSE} вимірює компактність кластерів: що щільніше об’єкти згруповані навколо своїх центрів, то вона менша. Формальна задача kk-середніх:

Формальна задача. Знайти розбиття {C1,,Ck}\{C_1, \dots, C_k\}, що мінімізує SSE\mathrm{SSE}. Точний розв’язок — NP-складна задача (перебір розбиттів, §9.2), тому kk-середніх шукає локальний мінімум ітераційно.

Чому центроїд — це саме середнє? Бо для фіксованого набору точок кластера середнє — це та точка μ\mu, що мінімізує xxμ2\sum_{x} \lVert x - \mu \rVert^2 (сума квадратів відстаней). Це прямий наслідок того, що середнє мінімізує дисперсію (Лекція 2). Тому крок «перерахувати центр як середнє» гарантовано зменшує (не збільшує) SSE — саме на цьому тримається збіжність алгоритму.


9.6 Алгоритм kk-середніх

Алгоритм чергує два кроки: віднесення точок до найближчих центрів і перерахунок центрів як середніх утворених кластерів.

kMeans(точки X, число кластерів k):
  1. ІНІЦІАЛІЗАЦІЯ: обрати k псевдовипадкових центроїдів mu_1, ..., mu_k
  повторювати:
     2. ВІДНЕСЕННЯ: кожну точку x віднести до кластера з найближчим центроїдом
                    c(x) = argmin_c  d(x, mu_c)
     3. ПЕРЕРАХУНОК: для кожного кластера обчислити новий центроїд
                    mu_c = (середнє всіх точок кластера C_c)
     4. якщо центроїди НЕ ЗМІСТИЛИСЯ -> СТОП (кластери побудовано)
        інакше -> повернутися до кроку 2
  повернути кластери C_1, ..., C_k та центроїди

Крок 2 (віднесення об’єкта). Об’єкт xx потрапляє до того кластера, чий центроїд найближчий:

c(x)=argminc{1,,k}  d(x,μc)=argminc  xμc2.c(x) = \arg\min_{c \in \{1,\dots,k\}} \; d(x, \mu_c) = \arg\min_{c} \; \lVert x - \mu_c \rVert^2.

Оскільки корінь — монотонна функція, порівнювати можна квадрати відстаней — це уникає обчислення кореня й дає той самий результат. У прикладах ми все ж показуватимемо самі відстані для наочності.

Крок 4 (критерій збіжності). Алгоритм зупиняється, коли центроїди перестали зміщуватися. Це рівносильно тому, що не змінилося жодне віднесення точок (стабільне розбиття) і що SSE перестала спадати. Можна довести, що кожна ітерація не збільшує SSE, а розбиттів скінченне число, — тож алгоритм завжди збігається за скінченну кількість кроків (на практиці — за кілька ітерацій). На практиці додають і «м’які» критерії: зупинятися, коли зсув центрів менший за поріг ε\varepsilon або досягнуто максимуму ітерацій.


9.7 Приклад роботи алгоритму

Приклад 9.4. Кластеризуємо 66 точок на площині у k=2k = 2 кластери:

A(1,2), B(2,2), C(2,4),D(7,4), E(8,5), F(7,6).A(1,2),\ B(2,2),\ C(2,4),\quad D(7,4),\ E(8,5),\ F(7,6).

Візьмемо невдалу ініціалізацію — обидва початкові центроїди зліва: μ1=A(1,2)\mu_1 = A(1,2), μ2=B(2,2)\mu_2 = B(2,2). Простежимо, як алгоритм її виправляє.

Ітерація 1. Відстані від кожної точки до центрів (евклідові) та віднесення:

Точка d(,μ1=(1,2))d(\cdot, \mu_1{=}(1,2)) d(,μ2=(2,2))d(\cdot, \mu_2{=}(2,2)) Кластер
A(1,2)A(1,2) 0.0000.000 1.0001.000 C1C_1
B(2,2)B(2,2) 1.0001.000 0.0000.000 C2C_2
C(2,4)C(2,4) 2.2362.236 2.0002.000 C2C_2
D(7,4)D(7,4) 6.3256.325 5.3855.385 C2C_2
E(8,5)E(8,5) 7.6167.616 6.7086.708 C2C_2
F(7,6)F(7,6) 7.2117.211 6.4036.403 C2C_2

Розбиття: C1={A}C_1 = \{A\}, C2={B,C,D,E,F}C_2 = \{B, C, D, E, F\}. Перераховуємо центроїди як середні:

μ1=A=(1,2),μ2=(2+2+7+8+75,2+4+4+5+65)=(5.2, 4.2).\mu_1 = A = (1, 2), \qquad \mu_2 = \left(\tfrac{2+2+7+8+7}{5}, \tfrac{2+4+4+5+6}{5}\right) = (5.2,\ 4.2).

Після перерахунку SSE=43.6\mathrm{SSE} = 43.6 (було 119119 до першого перерахунку).

Ітерація 2. З новими центрами μ1=(1,2)\mu_1 = (1,2), μ2=(5.2, 4.2)\mu_2 = (5.2,\ 4.2):

Точка d(,μ1)d(\cdot, \mu_1) d(,μ2)d(\cdot, \mu_2) Кластер
A(1,2)A(1,2) 0.0000.000 4.7414.741 C1C_1
B(2,2)B(2,2) 1.0001.000 3.8833.883 C1C_1
C(2,4)C(2,4) 2.2362.236 3.2063.206 C1C_1
D(7,4)D(7,4) 6.3256.325 1.8111.811 C2C_2
E(8,5)E(8,5) 7.6167.616 2.9122.912 C2C_2
F(7,6)F(7,6) 7.2117.211 2.5462.546 C2C_2

Тепер точки BB і CC перейшли до C1C_1: розбиття стало C1={A,B,C}C_1 = \{A, B, C\}, C2={D,E,F}C_2 = \{D, E, F\} — природний поділ «лівих» і «правих» точок. Нові центроїди:

μ1=(1+2+23,2+2+43)=(53,83)(1.667, 2.667),μ2=(7+8+73,4+5+63)=(223,5)(7.333, 5). \mu_1 = \left(\tfrac{1+2+2}{3}, \tfrac{2+2+4}{3}\right) = \left(\tfrac{5}{3}, \tfrac{8}{3}\right) \approx (1.667,\ 2.667), \quad \mu_2 = \left(\tfrac{7+8+7}{3}, \tfrac{4+5+6}{3}\right) = \left(\tfrac{22}{3}, 5\right) \approx (7.333,\ 5).

SSE=6.0\mathrm{SSE} = 6.0.

Три панелі ітерацій k-середніх: ініціалізація з обома центрами зліва, перше та друге віднесення точок із рухом центроїдів до правильного поділу

Ітерація 3. З цими центрами віднесення не змінюється (A,B,CC1A, B, C \to C_1; D,E,FC2D, E, F \to C_2), тож центроїди лишаються тими самими — критерій збіжності виконано, алгоритм завершено. Простежимо, як монотонно спадала цільова функція:

SSE:119  43.6  6.0  6.0 (стабілізувалася).\mathrm{SSE}: \quad 119 \ \to\ 43.6 \ \to\ 6.0 \ \to\ 6.0 \ (\text{стабілізувалася}).

Крива монотонного спадання SSE за ітераціями до збіжності: 119, потім 43.6, далі 6 і стабілізація на 6

Відповідь: кластери {A,B,C}\{A, B, C\} і {D,E,F}\{D, E, F\} з центрами (53,83)(\tfrac53, \tfrac83) та (223,5)(\tfrac{22}{3}, 5); фінальна SSE=6\mathrm{SSE} = 6. Попри «невдалий» старт (обидва центри в одному згустку) алгоритм за дві ітерації знайшов правильне розбиття.

Фінальні кластери прикладу: точки A, B, C та D, E, F розфарбовані за кластером із центроїдами-хрестиками й підписом SSE=6


9.8 Сильні та слабкі сторони

Сильні сторони. kk-середніх простий, швидкий (складність O(nkdt)O(n k d \cdot t) на tt ітерацій) і добре масштабується на великі дані; результат легко інтерпретувати через центроїди («типовий представник» кластера).

Слабкі сторони й способи їх пом’якшити.

  • Треба задати kk. Число кластерів — вхідний параметр, а «правильне» kk наперед невідоме. Його підбирають, порівнюючи розбиття за різних kk: метод ліктя (elbow) шукає kk, після якого SSE спадає вже повільно; силует (silhouette) оцінює, наскільки об’єкти «свої» у своїх кластерах (докладніше — Лекція 10 та високий рівень лабораторної).
  • Чутливість до ініціалізації. Різні початкові центроїди дають різні локальні мінімуми SSE. Рятунок — кілька запусків з різною випадковою ініціалізацією й вибір розбиття з найменшою SSE; розумніший старт дає прийом kk-means++ (центри розставляють якнайдалі один від одного).
  • Чутливість до викидів. Оскільки центр — це середнє, один далекий викид сильно зміщує центроїд. Стійкіший варіант — kk-медоїдів, де центром є реальний об’єкт (медоїд), а не середнє.
  • Сферичні кластери. Мінімізуючи суму квадратів, kk-середніх схильний утворювати опуклі, приблизно кулясті кластери близького розміру. Витягнуті, вкладені чи різнорозмірні кластери він розділяє погано — там доречніші щільнісні або ієрархічні методи.

Метод ліктя: залежність SSE від числа кластерів k із помітним «ліктем» при k=2, після якого SSE спадає повільно

Типова помилка (масштаб і викиди — перед кластеризацією). Найчастіші причини «дивних» кластерів — ненормалізовані ознаки (§9.4) та невилучені викиди. І те, й те спотворює відстані та центроїди. Підготовка даних (нормалізація, обробка викидів) для kk-середніх важливіша за вибір самого алгоритму.


9.9 Нечіткий метод cc-середніх

У kk-середніх віднесення жорстке: об’єкт належить рівно одному кластеру. Але межові об’єкти (посередині між двома згустками) природніше вважати такими, що належать частково обом. Цю ідею реалізує нечіткий метод cc-середніх (англ. fuzzy cc-means, FCM).

Означення (матриця приналежності). Замість жорсткого віднесення FCM зберігає ступені приналежності uic[0,1]u_{ic} \in [0, 1] — наскільки об’єкт xix_i належить кластеру cc, — причому для кожного об’єкта

c=1kuic=1.\sum_{c=1}^{k} u_{ic} = 1.

Матриця U=[uic]U = [u_{ic}] узагальнює жорстке розбиття (де uicu_{ic} дорівнювало б лише 00 чи 11) на «м’яке». Цільова функція зважує кожен квадрат відстані ступенем приналежності, піднесеним до параметра нечіткості m>1m > 1 (зазвичай m=2m = 2):

Означення (функція втрат FCM).

Jm=i=1nc=1kuicmxiμc2.J_m = \sum_{i=1}^{n} \sum_{c=1}^{k} u_{ic}^{\,m} \, \lVert x_i - \mu_c \rVert^2.

Алгоритм чергує оновлення центрів і матриці приналежності:

cMeans(точки X, число кластерів k, нечіткість m):
  1. ініціалізувати центроїди (або матрицю приналежності U) випадково
  повторювати:
     2. ПРИНАЛЕЖНІСТЬ: перерахувати u_ic за формулою нижче
     3. ЦЕНТРИ: перерахувати mu_c як ЗВАЖЕНЕ середнє (ваги u_ic^m)
     4. РОЗРАХУНОК ВТРАТ J_m
     5. якщо J_m майже не зменшилася -> СТОП, інакше -> до кроку 2
  • Центр — зважене середнє всіх точок (а не лише «своїх»):

μc=i=1nuicmxii=1nuicm.\mu_c = \frac{\sum_{i=1}^{n} u_{ic}^{\,m}\, x_i}{\sum_{i=1}^{n} u_{ic}^{\,m}}.

  • Приналежність — тим більша, чим ближчий об’єкт до центра cc порівняно з іншими центрами:

uic=1j=1k(d(xi,μc)d(xi,μj))2/(m1).u_{ic} = \frac{1}{\displaystyle\sum_{j=1}^{k} \left( \frac{d(x_i, \mu_c)}{d(x_i, \mu_j)} \right)^{2/(m-1)}}.

Приклад 9.5 (обчислення приналежності). Нехай m=2m = 2, центри μ1=(1,1)\mu_1 = (1,1), μ2=(5,5)\mu_2 = (5,5), а об’єкт x=(3,2)x = (3, 2). Відстані: d1=(31)2+(21)2=52.236d_1 = \sqrt{(3-1)^2 + (2-1)^2} = \sqrt5 \approx 2.236, d2=(35)2+(25)2=133.606d_2 = \sqrt{(3-5)^2 + (2-5)^2} = \sqrt{13} \approx 3.606. При m=2m = 2 показник 2/(m1)=22/(m-1) = 2, тож формула зводиться до обернених квадратів відстаней:

u1=1/d121/d12+1/d22=1/51/5+1/13=0.20.27690.722,u2=1u10.278. u_{1} = \frac{1/d_1^2}{1/d_1^2 + 1/d_2^2} = \frac{1/5}{1/5 + 1/13} = \frac{0.2}{0.2769} \approx 0.722, \qquad u_{2} = 1 - u_{1} \approx 0.278.

Об’єкт на 72%72\% належить першому кластеру й на 28%28\% — другому (ближчий до μ1\mu_1, тож і приналежність до нього більша). Щоб дістати жорстке розбиття, об’єкт відносять до кластера з найбільшою приналежністю.

FCM корисний, коли кластери перекриваються й потрібна «впевненість» віднесення, а не лише мітка; він є містком до модельних методів (§9.3), де приналежність трактують як ймовірність.


Застосування в аналітиці даних

  • Сегментація клієнтів. Поділ покупців на групи за поведінкою (сума й частота покупок, категорії товарів) для таргетованого маркетингу — класичне застосування kk-середніх.
  • Стиснення зображень (квантування кольорів). Кластеризація пікселів у просторі кольорів RGB на kk груп і заміна кожного пікселя центроїдом його кластера зменшує палітру до kk кольорів.
  • Виявлення аномалій. Об’єкти, далекі від усіх центроїдів (з великим внеском у SSE), — кандидати у викиди; щільнісні методи роблять це ще природніше.
  • Групування документів і тем. Кластеризація текстів за векторами ознак (частоти слів) виявляє тематичні групи без наперед заданих рубрик.
  • Попередній етап для інших методів. Мітки кластерів часто стають новою ознакою або способом стиснути дані перед класифікацією чи візуалізацією.

Підсумок

  • Кластеризація — поділ вибірки на групи схожих об’єктів без заздалегідь відомих міток; це навчання без учителя, на відміну від класифікації (з учителем) з Модуля 3.
  • Точний перебір розбиттів неможливий: їх число — Стірлінга S(n,k)S(n,k) (для двох груп S(n,2)=2n11S(n,2) = 2^{n-1}-1) — росте надзвичайно швидко (уже S(10,2)=511S(10,2) = 511, а S(100,2)6.3×1029S(100,2) \approx 6.3 \times 10^{29}). Тому всі методи — евристики.
  • Методи діляться на розбиття, ієрархічні, щільнісні, решіткові, модельні.
  • Схожість вимірюють відстанню: евклідова (L2L_2), манхеттенська (L1L_1), Мінковського (LpL_p), чебишова (LL_\infty). Ознаки різного масштабу нормалізують.
  • kk-середніх мінімізує суму квадратів помилок SSE=cxCcxμc2\mathrm{SSE} = \sum_c \sum_{x \in C_c} \lVert x - \mu_c \rVert^2, чергуючи віднесення точок до найближчого центроїда й перерахунок центроїдів як середніх. Збігається, коли центроїди перестають зміщуватися; SSE монотонно спадає. У прикладі кластери {A,B,C}\{A,B,C\}, {D,E,F}\{D,E,F\} дали SSE=6\mathrm{SSE} = 6.
  • Слабкі місця kk-середніх: треба задати kk; чутливість до ініціалізації (рятують кілька запусків / kk-means++) та викидів (kk-медоїдів); схильність до сферичних кластерів.
  • Нечіткий cc-середніх дає м’яке віднесення — матрицю приналежності uicu_{ic} (cuic=1\sum_c u_{ic} = 1) — і мінімізує Jm=icuicmxiμc2J_m = \sum_i \sum_c u_{ic}^{m} \lVert x_i - \mu_c \rVert^2, оновлюючи центри зваженим середнім.

Вправи

Для розігріву

  1. Чим кластеризація відрізняється від класифікації? Наведіть по одному прикладу задачі кожного типу з вашої предметної області.
  2. Для точок x=(0,0)x = (0, 0) і y=(3,4)y = (3, 4) обчисліть манхеттенську, евклідову та чебишову відстані. Яка з них найбільша, яка найменша й чому?
  3. Запишіть означення SSE. Що станеться зі значенням SSE, якщо збільшити kk аж до k=nk = n (кожна точка — окремий кластер)?

Стандартні

  1. Обчисліть S(5,2)S(5, 2) і S(5,3)S(5, 3) за рекурентною формулою, спираючись на рядок n=4n = 4 трикутника. Перевірте S(5,2)S(5,2) формулою 2n112^{n-1}-1.
  2. Дано точки P1(1,1)P_1(1,1), P2(1,2)P_2(1,2), P3(2,1)P_3(2,1), P4(6,5)P_4(6,5), P5(5,6)P_5(5,6), P6(6,6)P_6(6,6) і k=2k = 2. Узявши початкові центроїди μ1=P1\mu_1 = P_1, μ2=P4\mu_2 = P_4, виконайте одну ітерацію kk-середніх: віднесіть точки й перерахуйте центроїди.
  3. Для об’єкта x=(2,2)x = (2, 2) і центрів μ1=(0,0)\mu_1 = (0, 0), μ2=(4,5)\mu_2 = (4, 5) обчисліть нечіткі приналежності u1,u2u_1, u_2 при m=2m = 2. До якого кластера віднести xx за жорстким рішенням?

Підвищеної складності

  1. Доведіть, що для фіксованого кластера точок {x1,,xm}\{x_1, \dots, x_m\} сума квадратів відстаней ixiμ2\sum_i \lVert x_i - \mu \rVert^2 мінімальна саме при μ=1mixi\mu = \frac{1}{m}\sum_i x_i (центроїд — середнє). (Підказка: розкрийте квадрат покоординатно й прирівняйте похідну за μ\mu до нуля.)
  2. Поясніть, чому кожна ітерація kk-середніх не збільшує SSE (розгляньте окремо крок віднесення й крок перерахунку) і чому звідси випливає збіжність за скінченну кількість кроків. Чи гарантує це глобальний мінімум?
  3. Наведіть приклад розташування точок на площині, для якого kk-середніх з k=2k = 2 дає різні розбиття залежно від початкових центроїдів. Як на практиці борються з цією залежністю від ініціалізації?
  4. Виведіть, що для двох кластерів (k=2k = 2) число можливих непорожніх розбиттів nn об’єктів дорівнює 2n112^{n-1} - 1, і поясніть комбінаторний сенс кожного доданка у виведенні.

Lectures/DA-L09.md · 39.7 KB · updated 2026-08-05 09:27