Машинне навчання · Теорія графів
📅 Липень 2026 ⏱ ≈ 13 хв читання 🎯 Просунутий рівень · Останнє оновлення: 9 липня 2026 р.

Спектральна кластеризація: як власні вектори лапласіана графа виявляють структуру кластерів

K-means зазнає невдачі, щойно кластери перестають бути круглими «плямами» — дві переплетені півмісяцеподібні форми, концентричні кільця чи спіраль легко зламають цей алгоритм. Спектральна кластеризація повністю обходить цю проблему: вона взагалі не дивиться на сирі координати, лише на граф подібності, і знаходить кластери, аналізуючи власні вектори лапласіана цього графа (матриці, побудованої зі зв'язків графа, яка описує, наскільки плавно можуть змінюватися значення на цьому графі).

Коротко: Замість того щоб вимірювати відстань по прямій, спектральна кластеризація будує граф подібності між точками, а потім аналізує власні вектори лапласіана цього графа. Друге за величиною власне значення (вектор Фідлера) показує природний розподіл графа надвоє; використання перших k власних векторів як координат і запуск k-means на них дозволяє знайти неопуклі кластери — півмісяці, кільця, спіралі — які звичайний k-means розпізнати не може.

Від точок до графа подібності

Спектральна кластеризація починається з відмови від евклідової відстані як основного сигналу і натомість будує граф подібності: зважений граф, де вага ребра wij вимірює, наскільки «близькі» точки i та j. Найпоширеніший вибір — гаусове (RBF) ядро, обмежене околом:

w_ij = exp(−‖x_i − x_j‖² / 2σ²)   якщо j ∈ kNN(i), інакше 0
σ контролює локальність; kNN зберігає граф розрідженим і локальним

Головна ідея: дві точки можуть бути «близькими» у термінах графа — з'єднаними через ланцюжок сусідів — навіть якщо вони далеко одна від одної по прямій. Саме це дозволяє спектральній кластеризації трактувати півмісяць чи спіраль як єдиний зв'язний регіон.

Лапласіан графа

Маючи зважену матрицю суміжності W та діагональну матрицю ступенів D (Dii = Σⱼ wij), неноормалізований лапласіан графа визначається як:

L = D − W
Симетрична, додатно напівозначена: xᵀLx = ½ Σᵢⱼ wᵢⱼ(xᵢ − xⱼ)² ≥ 0

Ця квадратична форма — суть усього: xᵀLx мале саме тоді, коли сильно зв'язаним точкам i, j присвоєні схожі значення xᵢ, xⱼ. Мінімізація цього виразу — це обмеження гладкості на графі, а мінімізатори — це нижні власні вектори L. На практиці перевагу надають нормалізованому лапласіану, оскільки він виправляє сильно різні ступені вузлів:

L_sym = D^(−1/2) L D^(−1/2) = I − D^(−1/2) W D^(−1/2)
L_rw = D⁻¹ L = I − D⁻¹W   (форма нормалізації за випадковим блуканням)

Вектор Фідлера та розрізи графа

L є додатно напівозначеною, тому всі її власні значення ≥ 0, а найменше з них завжди дорівнює 0 з власним вектором 1 (постійним) — для зв'язного графа рівно одне нульове власне значення. Друге за величиною власне значення λ₂ та відповідний йому власний вектор, вектор Фідлера, кодують найкращу «бісекцію» графа: точки з додатним значенням у векторі Фідлера утворюють одну сторону розрізу з малою вагою, а з від'ємним — іншу.

Власне значенняЗначення
λ₁ = 0Весь граф — одна компонента (якщо зв'язний)
λ₂ (Фідлера)Алгебраїчна зв'язність — наскільки легко розрізати граф надвоє
λ₂ ≈ 0Граф майже незв'язний — два природні кластери
λ₂, …, λ_k маліk природних кластерів (малий розрив після λ_k)

Нормалізований розріз і трюк релаксації

Формально ми хочемо розбити граф на k груп, мінімізуючи сумарну вагу ребер, розрізаних між групами, нормалізовану за розміром груп, щоб оптимізатор не міг просто ізолювати один вузол-викид (Ncut, Shi & Malik, 2000). Точне розв'язання цієї задачі NP-складне — це дискретна комбінаторна задача. Трюк полягає в тому, щоб релаксувати дискретне обмеження належності до кластера ±1 у неперервні дійсні значення, що перетворює мінімізацію Ncut на:

мінімізувати xᵀLx / xᵀDx   за умови xᵀD1 = 0
Це узагальнена задача на власні значення: Lx = λDx

Релаксований розв'язок — це саме власні вектори узагальненої задачі Lx = λDx (еквівалентно, власні вектори L_rw). Округлення неперервного розв'язку у вигляді власних векторів назад до дискретних міток кластерів — зазвичай простим k-means у просторі власних векторів — дає наближений, але зазвичай чудовий розподіл за Ncut.

Алгоритм на JavaScript

Об'єднуючи все разом: будуємо граф подібності, обчислюємо перші k власних векторів нормалізованого лапласіана, складаємо їх у стовпці, щоб отримати вкладення n×k, потім запускаємо k-means на рядках цього вкладення.

function spectralClustering(points, k, sigma = 1.0, kNN = 10) {
  const n = points.length;
  const W = buildKnnSimilarityGraph(points, kNN, sigma); // розріджені ваги n×n
  const D = W.map(row => row.reduce((a, b) => a + b, 0));

  // Симетричний нормалізований лапласіан: L_sym = I - D^-1/2 W D^-1/2
  const Lsym = identity(n).map((row, i) =>
    row.map((_, j) => (i === j ? 1 : 0) − W[i][j] / Math.sqrt(D[i] * D[j]))
  );

  // k найменших власних векторів (окрім тривіального постійного)
  const { eigenvectors } = symmetricEigenDecomposition(Lsym);
  const embedding = eigenvectors.slice(0, k); // k найменших, стовпці

  // Нормалізація рядків (трюк Ng-Jordan-Weiss), потім кластеризація k-means
  const rows = transposeAndNormalizeRows(embedding, n, k);
  return kMeans(rows, k);
}
Нормалізація рядків має значення: Ng, Jordan та Weiss (2002) показали, що нормалізація кожної вкладеної точки до одиничної довжини перед k-means робить кластери значно компактнішими у просторі власних векторів — точки, які «мають» бути разом, стають майже ідентичними рядками, а саме це й потрібно k-means.

Вибір k: евристика власного розриву

На відміну від k-means, спектральна кластеризація дає обґрунтований спосіб обрати k без окремого перебору silhouette-метрики: побудуйте графік відсортованих власних значень λ₁ ≤ λ₂ ≤ … і знайдіть найбільший стрибок (власний розрив) — |λk+1 − λk|. Великий розрив після λ_k свідчить про k добре розділених кластерів, оскільки k власних значень скупчені біля нуля, а решта різко відскакують.

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

Де спектральна кластеризація перемагає

Справжня сила спектральної кластеризації в тому, що вона майже не робить припущень про форму кластерів — лише про зв'язність графа — і саме тут центроїдні методи на кшталт k-means зазнають невдачі.

🧩 Дослідити кластеризацію наживо

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

Відкрити симуляцію →