Добра стаття

Спектральна кластеризація

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Спектральна кластеризація — метод кластеризації, оснований на концепції зв'язності графів[en]. На відміну від інших методів, таких як метод к-середніх, що шукають щільні, компактні, опуклі кластери, спектральна кластеризація може знаходити кластери довільної форми.

Метод був розроблений у 1970-х для розділення графів і пізніше був багаторазово поліпшений і застосований для ширшого класу задач. Його ідея полягає в тому, щоб, розглядаючи множину спостережень як зважений граф (де кожному спостереженню відповідає вершина, а ребра мають вагу, що дорівнює подібності пари спостережень), знайти такий мінімальний розріз цього графа, щоб два отримані підграфи були близькими за розміром.

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

Історія[ред. | ред. код]

Приклад розбиття графа на дві частини
Приклад спектрального розбиття простого графа на дві частини. Вершини 1-4 відповідають додатнім компонентам вектора Фідлера, а 5-8 — від'ємним. Тоді розірваними мають бути лише два ребра

Ідея спектральної кластеризації ґрунтується на роботах Кеннета Холла — він шукав спосіб спроєктувати граф на числову пряму та, більш загально, в багатовимірний евклідів простір і запропонував використовувати для цього власні вектори матриці Лапласа[1][2][3], а також Доната й Хоффмана, які помітили, що власні вектори модифікованої матриці зв'язності можна застосувати для задачі розбиття графа на рівні частини[4][3]. У 1973–1975 роках чеський математик Мирослав Фідлер[en] показав, що найменше ненульове власне значення матриці Лапласа графа відповідає його зв'язності й показав зв'язок відповідного власного вектора та породжуваної ним кластеризації в загальному випадку (результати Доната й Хоффмана стосувалися деяких специфічних типів графів)[3][5]. Доробок Фідлера в спектральній теорії графів є значним, тому найменше ненульове власне значення матриці Лапласа називають числом Фідлера, а відповідний вектор — вектором Фідлера. Пізніше було показано, що графи з маленьким числом Фідлера мають маленьке співвідношення кількості видалених ребер до кількості вершин, які розділяються, що відповідає уявленню про «хорошу» кластеризацію[3].

Застосування алгоритму стримувалося важкістю задачі пошуку власних значень та векторів, допоки у 80-х роках не з'явилися ефективніші алгоритми, такі як метод Ланцоша[en], і багато експериментів на реальних графах показали практичну придатність методу[3].

«Тарганячий граф» з роботи Міллера і Гваттарі. Наївна спектральна кластеризація пропонує розділити граф навпіл за вертикальною лінією (розриваючи k зв'язків) замість того щоб розділити його за горизонтальною, розриваючи лише два зв'язки.

Спектральна кластеризація швидко стала популярною й стандартною в багатьох галузях, проте в 1995 році Міллер і Гваттарі привернули увагу до дивної поведінки алгоритму на деяких типах графів[3]. Застосований Фідлером підхід, згідно з яким два кластери графа визначалися за тим, більші чи менші за нуль відповідні компоненти вектора Фідлера (наївна бісекція), давав вочевидь неправильну кластеризацію на графах, що могли траплятися в реальному житті[3]. Також у роботі було запропоновано застосовувати для поділу не лише вектор Фідлера, а й ще кілька найменших ненульових власних векторів[6].

Також велися пошуки оптимального значення для поділу вектора Фідлера (замість нульового). 1992 року Ларс Хаген і Ендрю Канг запропонували новий підхід для оцінки, Ratio-Cut, який дозволив краще знаходити кластери неоднакового розміру[7], а в 2000 році Цзяньбо Ши і Джитендра Малик[en] запропонували ще одну метрику якості кластеризації і показали, що для пошуку найкращого розрізу за нею необхідно модифікувати матрицю Лапласа. Така модифікована матриця отримала назву нормалізована матриця Лапласа, а сам метод отримав назву Normal-Cut (або NCut)[8]. 2001 року був запропонований MinMaxCut[9].

В 2001 році Цзяньбо Ши і Марина Мейла запропонували нову інтерпретацію спектральної кластеризації за методом NCut: при марківському випадковому блуканні по графу кластеризація виділяє такі компоненти, переходи між якими відбуваються якнайрідше[10].

Того ж року Ендрю Ин, Майкл Джордан і Яїр Вайс запропонували використовувати кластеризацію к-середніх на просторі, утвореному власними векторами. Важливою зміною в їх підході є те, що застосовуються власні вектори, що відповідають найбільшим, а не найменшим власним значенням, а також використовується спеціальна форма матриці Лапласа[11]. Метод Ина-Джордана-Вайса набув популярності та часто згадується як NJW-алгоритм.

Алгоритм[ред. | ред. код]

Побудова матриці суміжності[ред. | ред. код]

Для представлення всіх спостережень у вигляді графа потрібно визначити функцію подібності. Ця функція двох аргументів має бути невід'ємною й симетричною. Подібність велика для близьких точок і прямує до нуля для далеких. Якщо максимальна подібність дорівнює 1, вона може бути інтерпретована як імовірність того, що спостереження належать до одного кластеру[12]. Для потреб алгоритму подібність точок самих собі зануляється: , тобто отриманий граф не має петель.

Якщо близькість точок визначається відстанню між ними, простим вибором здається подібність як величина, обернена до відстані між точками:

Проте ця величина дуже сильно реагує на малі зміни для близьких точок, тому в знаменник додають деяку константу:

Більш популярним вибором є гаусове ядро:

,
де t — деякий масштабний коефіцієнт, що задається вручну,

або його нормалізований варіант:

,
де — відстань між точкою та її n-тим найближчим сусідом[13].

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

Попарні подібності між точками формують матрицю подібності (англ. Affinity matrix), яка позначається як .

Таку матрицю можна вважати матрицею суміжності зваженого повного графа (тобто такого, де ребра існують між будь-якими двома вершинами), а можна обнулити деякі з елементів, зменшуючи кількість ребер. Існує кілька підходів до того, які ребра залишати[14]:

  1. Тільки якщо відстань між відповідними точками є меншою за деяку величину
  2. Тільки якщо точка входить до найближчих сусідів точки або ж точка входить до найближчих сусідів точки
  3. Тільки якщо точка входить до найближчих сусідів точки і одночасно точка входить до найближчих сусідів точки (mutual K-nearest-neighbors graph)

Побудова матриці Лапласа й обчислення її власних векторів[ред. | ред. код]

Задамо діагональну матрицю , чиї елементи дорівнюють сумі ваг всіх ребер, що виходять із відповідної вершини:

Тоді матриця Лапласа визначається як . У деяких джерелах її називають матрицею Кірхгофа.

Також застосовується нормалізована матриця Лапласа: [8]. Іншим способом нормалізації матриці Лапласа є [15].

Для NSW-алгоритму матриця Лапласа обчислюється як [11].

У будь-якому випадку після обчислення матриці Лапласа (нормалізованої чи ні) необхідно обчислити її власні значення та власні вектори.

Кластеризація за власними векторами[ред. | ред. код]

Граф, що складається з двох компонент, і вектор Фідлера цього графу. Позитивні й негативні компоненти вектора добре розділяються

Якщо граф, що задається матрицею суміжності , має компонент, то власних чисел матриці Лапласа будуть нульовими[16]. Решта з них завжди будуть додатними. Для кластеризації необхідно взяти один або більше векторів, що відповідають найменшим ненульовим власним значенням. У найпростішому варіанті береться один вектор. Кількість компонент вектора дорівнює кількості точок у графі. У випадку хорошої кластеризації компоненти вектора утворюють яскраво виражені кластери, які можуть бути зіставлені з оригінальними точками. Часто значення, що розділяє два кластери, лежить поблизу нуля (або дорівнює нулю).

Вектор Фідлера для «тарганячого графу». Позитивні й негативні компоненти вектора розділяються погано, проте можливий поділ на три кластери замість двох

Для поділу на більш ніж два кластери алгоритм можна застосовувати рекурсивно, але для деяких графів кращим є поділ одразу на кілька компонент. Якщо в спектрі графа є розрив (англ. eigengap), тобто проміжок між і ненульовими власними значеннями значно більший за проміжки між сусідніми з ними власними значеннями, то кількість кластерів дорівнює .

Якщо ж використовуються більше одного власного вектора, з них формується нова матриця, у якій кожен рядок відповідає точці графа, а кожен стовпчик — одному з обраних власних векторів. Така матриця може бути інтерпретована як точки в деякому -вимірному просторі (де — кількість векторів). У цьому просторі можна провести кластеризацію за якоюсь простою процедурою, зазвичай k-середніх або DBSCAN. Кластери, виявлені в цьому просторі власних векторів, відповідають кластерам в оригінальному просторі[16].

NJW-алгоритм працює аналогічно, проте через інший вигляд матриці Лапласа застосовуються вектори, яким відповідають найбільші власні числа, а не найменші. Кількість векторів у цьому випадку також дорівнює кількості кластерів, які бажано отримати[11].

Цільові функції кластеризації[ред. | ред. код]

Існує кілька підходів оцінювання кластеризації[17]:

  • RatioCut: шукає такий поділ на два підграфи і , що мінімізується величина
або , де — сумарна вага зв'язків, що розриваються, а кількість вершин в отриманих кластерах[7].

Цей принцип може бути розширений і на випадок більше ніж двох кластерів[18]:

  • NormalCut: мінімізує величину
, де сумарна вага всіх ребер, які виходять з вершин кластера А (включно з тими, які з'єднують його з іншими кластерами)[8].
  • MinMaxCut: мінімізує величину
, тобто в знаменнику на відміну від NormalCut стоїть сума ваги лише тих ребер, які з'єднують точки всередині кластеру (ребра, що сполучають різні кластери, не враховуються)[9].

Принцип роботи алгоритму[ред. | ред. код]

Уявімо, що ми маємо зважений граф з вершинами , ребрами та матрицею суміжності , який деяким чином розділяємо на два кластери. Позначивши належність кожної точки до одного з кластерів числом 1 або -1, ми отримаємо вектор виду x=[1, 1, -1, 1, ....., -1, 1], який описуватиме конкретну кластеризацію. Якщо ми хочемо, щоб кластери мали однаковий розмір, ми можемо записати умову

(рівність є наближеною, оскільки, наприклад, при непарній кількості вершин така сума не може дорівнювати нулю).

Тепер спробуємо з врахуванням цієї умови оцінити величину

, де сумування проходить по всіх ребрах графа.

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

Проте наближена умова, представлена вище, непрактична, тому необхідно дещо видозмінити цю задачу. Нехай можуть набувати довільних дійсних значень. Тоді можна переписати умову у строгому вигляді:

Також, щоб уникнути тривіального розв'язку , який виникатиме в цьому випадку, додамо другу умову

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

Вираз вище пов'язаний із ненормалізованою матрицею Лапласа графу[19]:

Тобто, нам необхідно знайти такий вектор , при якому вираз набуває мінімального значення, враховуючи умови

і

Доведемо, що розв'язок цієї задачі у випадку однозв'язного графа дається власним вектором, що відповідає другому найменшому власному значенню матриці Лапласа цього графа.

Сума будь-якого рядка або стовпчика матриці дорівнює нулю, тому можна записати

отже, одне з власних чисел дорівнює нулю, а відповідний власний вектор має всі компонент рівними. Зі спектральної теореми випливає, що всі власні вектори утворюють ортонормований базис, тобто їх довжина дорівнює 1[19]. Отже, всі компоненти першого вектора дорівнюють . Решта власних чисел матриці Лапласа більші за нуль (в подальшому будемо вважати, що всі власні числа пронумеровані в порядку зростання і в тому ж порядку пронумеровані відповідні їм вектори). Довжина будь-якого з пов'язаних із ними власних векторів також дорівнює одиниці, а отже

Також, скалярний добуток будь-якої пари векторів дорівнює нулю, а отже для будь-якого власного вектора, крім першого,

Вектор може бути розкладений у базисі власних векторів[19]

Проте якщо сума компонентів вектора , який ми шукаємо, дорівнює нулю, то множник при першому власному векторі (єдиному, сума компонентів якого ненульова) дорівнює нулю. Крім того, сума квадратів компонентів дорівнює сумі квадратів коефіцієнтів розкладу

Тоді, скориставшись тим, що за визначенням власних векторів , ми можемо записати, що[19]

Оскільки , а сума квадратів дорівнює одиниці, то зрозуміло, що мінімального значення функція набуває, коли . Тобто вектор дорівнює другому власному вектору[19].

Інтерпретація випадкового блукання[ред. | ред. код]

Якщо ми розглянемо марківське випадкове блукання по графу таке, що матриця містить у собі ймовірності переходу від вершини до вершини, то спектральна кластеризація описуватиме розбиття на такі групи вершин, що переходи між ними є дуже малоймовірними[16][10].

Застосування[ред. | ред. код]

Спектральну кластеризацію вважають одним із найбільш прогресивних і популярних методів кластеризації завдяки універсальності (здатності працювати з багатовимірними даними й обробляти категоріальні ознаки) і можливості знаходити кластери довільної форми. Вона знаходить застосування в біології (аналіз експресії генів, послідовності амінокислот у білках), соціології, психології, обробці зображень (виділення об'єктів на зображенні)[14][20][21][22][23].

При використанні алгоритму користувач має визначити наступні параметри:

  • Матриця суміжності графа. Є одним з найважливіших параметрів, бо визначає власне зовнішній вид графа. Можна розділити цю задачу на дві підзадачі:
    1. Визначення функції подібності. Деякі функції подібності (в тому числі найпопулярніша, гауссове ядро) мають у собі додаткові гіперпараметри, такі як масштабний фактор[14].
    2. Вибір, чи буде граф повним або ж кожна точка буде з'єднуватися лише з найближчими сусідами. У другому випадку з'являється додатковий параметр — кількість сусідів або максимальна відстань між ними[14].
  • Вибір матриці Лапласа (нормалізована або ненормалізована). Якщо задача краще відповідає RatioCut, то краще використовувати ненормалізовану матрицю, а якщо NCut, то нормалізовану. Якщо є сумніви, загалом кращим вибором вважається нормалізована матриця Лапласа[14].
  • Кількість кластерів, на які потрібно розділити граф, і метод поділу (рекурсивний або кластеризація через k-середніх). Якщо у спектрі графа є яскраво виражений розрив[en], то його положення може вказувати на оптимальну кількість кластерів[14].

Попри значні переваги, спектральна кластеризація має й кілька недоліків[24]:

  • Вона порівняно повільна (через необхідність обчислення власних векторів великих матриць)
  • Не зрозуміла інтуїтивно, і часом результати можуть бути складними для інтерпретації
  • Чутлива до випадкових початкових значень. Для кращого результату бажано запустити алгоритм кілька разів. Також це призводить до нестабільної роботи на зашумлених даних.

Порівняння з іншими алгоритмами кластеризації[ред. | ред. код]

Порівняння спектральної кластеризації (ліворуч) і кластеризації методом к-середніх на неглобулярних кластерах

Багато алгоритмів кластеризації, такі як метод k–середніх або модель гаусової суміші[en], шукають глобулярні кластери — тобто опуклі кластери, які мають «центр» із великою щільністю, навколо якого й розподілені спостереження. Вони мають труднощі з пошуком кластерів складних форм (неопуклі фігури, протяжні лінії). На відміну від таких методів, спектральна кластеризація знаходить кластери довільної форми, зокрема такі складні, як спіралі, що переплітаються[25].

Результати алгоритмів, що базуються на оцінці щільності кластерів, таких як DBSCAN, подібні до результатів спектральної кластеризації, проте такі алгоритми можуть залишати частину точок не включеними в жоден з кластерів (особливо якщо різні кластери мають різну щільність). Спектральна кластеризація розподіляє всі точки спостереження[26]. Проте спектральна кластеризація потребує задання кількості кластерів, тоді як DBSCAN — ні[27].

Більшість алгоритмів працюють із координатами точок у просторі ознак, або ж із матрицею відстаней між точками, тоді як спектральна кластеризація працює з матрицею подібності, що дозволяє їй бути гнучкішою в деяких випадках (наприклад, кластеризація слів у тексті)[28].

Реалізація в програмних бібліотеках[ред. | ред. код]

Спектральна кластеризація включена в спеціалізовані математичні пакети на багатьох мовах: Scikit-learn і Dask, написані мовою Python[29][30], пакет kernlab на R[31], пакет SpectralClustering мовою Julia[32], бібліотека Dlib на C++[33]. Також алгоритм реалізовано в математичних пакетах MATLAB[34], SAS[35].

Примітки[ред. | ред. код]

  1. Hall, Kenneth M. (1970). An r-Dimensional Quadratic Placement Algorithm. Management Science (англ.). 17 (3): 219—229.
  2. Essential spectral theory, Hall’s spectral graph drawing, the Fiedler value(англ.)
  3. а б в г д е ж Spielman, Daniel A.; Teng, Shang-Hua (2007). Spectral partitioning works: Planar graphs and finite element meshes. Linear Algebra and its Applications (англ.). 421 (2-3): 284—305. doi:10.1016/j.laa.2006.07.020.
  4. Donath, W.; Hoffman, A. (1972). Algorithms for partitioning of graphs and computer logic based on eigenvectors of connection matrices (PDF). IBM Technical Disclosure Bulletin (англ.). 15 (3): 938—944.
  5. Fiedler, Miroslav (1975). A property of eigenvectors of nonnegative symmetric matrices and its application to graph theory (PDF). Czechoslovak Mathematical Journal (англ.). 25 (4): 619—633.
  6. Guattery, Stephen; Miller, Gary L. (1995). On the Performance of Spectral Graph Partitioning Methods (PDF). ACM-SIAM Symposium on Discrete Algorithms (англ.): 233—242.
  7. а б Hagen, Lars; Kahng, Andrew B. (1992). New spectral methods for ratio cut partitioning and clustering (PDF). IEEE Transactions on Computer-Aided Design (англ.). 11 (9): 1074—1085.
  8. а б в Shi, Jianbo; Malik, Jitendra (2000). Normalized Cuts and Image Segmentation (PDF). IEEE Transactions on Pattern Analysis and Machine Intelligence (англ.). 22 (8): 888—905. doi:10.1109/34.868688.
  9. а б Ding, Chris; Xiaofeng, He; Hongyuan, Zha (2001). A min-max cut algorithm for graph partitioning and data clustering (PDF). Proceedings 2001 IEEE International Conference on Data Mining (англ.): 107—114. doi:10.1109/ICDM.2001.989507.
  10. а б Meila, Marina; Shi, Jianb (2000). Learning Segmentation by Random Walks (PDF). Advances in Neural Information Processing Systems 13 (NIPS 2000) (англ.): 837—843. doi:10.5555/3008751.3008873. {{cite journal}}: Перевірте значення |doi= (довідка)
  11. а б в Ng, Andrew Y.; Jordan, Michael I.; Weiss, Yair (2001). On Spectral Clustering: Analysis and an algorithm (PDF). Proceedings of the 14th International Conference on Neural Information Processing Systems: Natural and Synthetic (англ.): 849—856. doi:10.5555/2980539.2980649. {{cite journal}}: Перевірте значення |doi= (довідка)
  12. Affinity Matrix(англ.)
  13. Peluffo, D.; López, D. F.; Rodríguez, J. L. (2010). Affinity matrix selection for spectral clustering (PDF). XV Symposium of Image, Signal Processing, and Artificial Vision (STSIVA) (англ.).
  14. а б в г д е von Luxburg, Ulrike (2007). A Tutorial on Spectral Clustering (PDF). Statistics and Computing (англ.). 17 (4): 395—416. doi:10.1007/s11222-007-9033-z.
  15. Хасті,Тібширані,Фрідман, 2020, с. 574.
  16. а б в Хасті,Тібширані,Фрідман, 2020, с. 575.
  17. Dhillon, I.; Guan, Y.; Kulis, B. (2004). A Unified View of Kernel k-means, Spectral Clustering and Graph Cuts (PDF). University of Texas Dept. of Computer Science (англ.) (TR-04-25).
  18. Roxborough, Tom; Sen, Arunabha (1997). [Graph Clustering Using Multiway Ratio Cut (PDF). Graph Drawing, 5th International Symposium (англ.): 291—296. doi:10.1007/3-540-63938-1_71.
  19. а б в г д Graph Theory(англ.)
  20. Pentney, William; Meila, Marina (2005). Spectral Clustering of Biological Sequence Data (PDF). Proceedings of the national conference on artificial intelligence (англ.). 20: 845—850.
  21. Spectral clustering for image segmentation(англ.)
  22. Алгоритми сегментації напівтонових зображень для систем комп'ютерного зору
  23. Huang, Grace; Benos, Panayotis (2013). Spectral clustering strategies for heterogeneous disease expression data. Pac Symp Biocomput (англ.): 212—223.
  24. When to use spectral clustering(англ.)
  25. Practical 2: Cluster Detection(англ.)
  26. Comparing different clustering algorithms on toy datasets(англ.)
  27. Using Internal Validity Measures to Compare Clustering Algorithms(англ.)
  28. K-means and Spectral Clustering (англ.)
  29. sklearn.cluster.SpectralClustering
  30. dask_ml.cluster.SpectralClustering
  31. kernlab: Kernel-Based Machine Learning Lab(англ.)
  32. SpectralClustering.jl(англ.)
  33. spectral_cluster.h
  34. spectralcluster(англ.)
  35. Tip: Spectral Clustering in SAS Enterprise Miner Using Open Source Integration Node(англ.)

Література[ред. | ред. код]