ШІ 101
Що таке кластеризація K-Means?

Кластеризація K-Means – це алгоритм неперевіреного навчання, і серед усіх алгоритмів неперевіреного навчання кластеризація K-Means, можливо, найчастіше використовується, завдяки своїй потужності та простоті. Як працює кластеризація K-Means саме?
Коротка відповідь полягає в тому, що кластеризація K-Means працює шляхом створення опорної точки (центроїду) для бажаної кількості класів, а потім призначення даних до класів кластерів на основі того, яка опорна точка найближча. Хоча це швидке визначення кластеризації K-Means, давайте витратимо деякий час, щоб глибше зануритися в кластеризацію K-Means і краще зрозуміти, як вона працює.
Визначення кластеризації
Перед тим, як розглянути точні алгоритми, які використовуються для виконання кластеризації K-Means, давайте витратимо деякий час, щоб визначити кластеризацію в цілому.
Кластери – це просто групи предметів, а кластеризація – це розміщення предметів у ці групи. У сенсі науки про дані алгоритми кластеризації намагаються зробити дві речі:
- Забезпечити, щоб усі дані в кластері були якомога більш схожими один на одного.
- Забезпечити, щоб усі дані в різних кластерах були якомога більш несхожими один на одного.
Алгоритми кластеризації групують предмети разом на основі деякої міри схожості. Це часто робиться шляхом знаходження “центроїду” різних можливих груп у наборі даних, хоча не виключно. Існує багато різних алгоритмів кластеризації, але мета всіх алгоритмів кластеризації одна – визначити групи, властиві набору даних.
Кластеризація K-Means
Кластеризація K-Means – це один із найстаріших і найчастіше використовуваних типів алгоритмів кластеризації, і вона працює на основі квантування векторів. Існує точка в просторі, вибрана як початок, а потім вектори проводяться від початку до всіх даних у наборі даних.
Загалом кластеризацію K-Means можна розділити на п’ять різних кроків:
- Помістіть усі екземпляри в підмножини, де кількість підмножин дорівнює K.
- Знайдіть середню точку/центроїд нових створених кластерних розділів.
- На основі цих центроїдів призначте кожну точку певному кластеру.
- Обчисліть відстані від кожної точки до центроїдів і призначте точки кластерам, де відстань від центроїду мінімальна.
- Після призначення точок кластерам знайдіть новий центроїд кластерів.
Вище вказані кроки повторюються до завершення процесу навчання.

На початковому етапі центроїди розміщуються десь серед даних.
Фото: Weston.pace via wikimedia commons, GNU Free Documentation License (https://commons.wikimedia.org/wiki/File:K_Means_Example_Step_1.svg)
Альтернативно, після розміщення центроїдів ми можемо уявити собі кластеризацію K-Means як перемикання між двома різними фазами: маркування даних і оновлення центроїдів.

На другому етапі використовується метрика відстані, such як Євклідова відстань, для розрахунку, до якого центроїду найближча дана точка, а потім точки призначені цьому кластеру. Фото: Weston.pace via Wikimedia Commons, GNU Free Doc License (https://commons.wikimedia.org/wiki/File:K_Means_Example_Step_2.svg)
На етапі маркування даних кожна точка даних призначена мітці, яка розміщує її в кластері, що належить найближчому центроїду. Найближчий центроїд зазвичай визначається за допомогою квадратної Євклідової відстані, хоча можуть використовуватися інші метрики відстані, такі як відстань Манхеттена, Косинус і Джаккард, залежно від типу даних, що подаються в алгоритм кластеризації.

На третьому етапі центроїди переміщуються до середнього значення всіх даних у кластері. Класи потім призначені знову. Фото: Weston.pace via Wikiemedia Commons, CC SA 3.0 (https://commons.wikimedia.org/wiki/File:K_Means_Example_Step_3.svg)
На етапі оновлення центроїдів центроїди обчислюються шляхом знаходження середньої відстані між усіма даними в кластері.
Як вибрати правильне значення для “K”
Враховуючи, що кластеризація K-Means – це ненадзорований алгоритм, а кількість класів не відома заздалегідь, як ви вирішуєте питання про належну кількість класів/правильне значення для K?
Одним із методів вибору правильного значення K є так званий “техніка ліктя“. Техніка ліктя полягає в тому, що алгоритм кластеризації K-Means запускається для діапазону різних значень K, а потім використовується метрика точності, зазвичай сума квадратів похибок, для визначення, які значення K дають найкращі результати. Сума квадратів похибок визначається шляхом розрахунку середньої відстані між центроїдом кластеру та даними в цьому кластері.
Термін “техніка ліктя” походить від того факту, що коли ви побудуєте графік суми квадратів похибок щодо різних значень K, отриманий графік часто має форму “ліктя”, де сума квадратів похибок швидко зменшується для перших кількох значень K, але потім рівняється. У таких умовах значення K, розташоване в лікті, є найкращим значенням для K, оскільки після цього значення повертаються швидко зменшуються.
Міні-батч кластеризації K-Means
Когда набори даних зростають, зростає і час обчислення. Базова кластеризація K-Means може зайняти багато часу для завершення, коли вона запускається на величезних наборах даних, і в результаті були зроблені зміни в кластеризації K-Means, щоб зменшити просторові та часові витрати алгоритму.
Міні-батч кластеризації K-Means – це варіант кластеризації K-Means, де розмір набору даних, який розглядається, обмежений. Звичайна кластеризація K-Means працює з увесь набір даних/батч одночасно, тоді як міні-батч кластеризації K-Means розбиває набір даних на підмножини. Міні-батчі випадково вибрані з усього набору даних, і для кожного нового ітераційного процесу вибирається новий випадковий зразок і використовується для оновлення положення центроїдів.
У міні-батч кластеризації K-Means кластери оновлюються за допомогою комбінації значень міні-батчу та швидкості навчання. Швидкість навчання зменшується протягом ітерацій, і це обернена величина кількості даних, розміщених у певному кластері. Ефект зменшення швидкості навчання полягає в тому, що вплив нових даних зменшується, і збіжність досягається, коли, після декількох ітерацій, немає змін у кластерах.
Результати досліджень щодо ефективності міні-батч кластеризації K-Means свідчать про те, що вона може успішно зменшити час обчислення з незначним компромісом у якості кластерів.
Застосування кластеризації K-Means
Кластеризацію K-Means можна безпечно використовувати в будь-якій ситуації, коли дані можна сегментувати на окремі групи/класи. Ось деякі приклади загальних випадків використання кластеризації K-Means.
Кластеризацію K-Means можна застосовувати до класифікації документів, групування документів на основі особливостей, таких як теми, теги, використання слів, метадані та інші особливості документів. Вона також може бути використана для класифікації користувачів на ботів чи не ботів на основі моделей діяльності, таких як публікації та коментарі. Кластеризацію K-Means можна використовувати для розміщення людей у групи на основі рівнів занепокоєння під час моніторингу їхнього здоров’я, на основі особливостей, таких як супутні захворювання, вік, історія пацієнта тощо.
Кластеризацію K-Means також можна використовувати для більш відкритих завдань, таких як створення систем рекомендацій. Користувачів системи, подібної до Netflix, можна згрупувати разом на основі моделей перегляду та рекомендувати подібний контент. Кластеризацію K-Means можна використовувати для завдань виявлення аномалій, виділення потенційних випадків шахрайства чи дефектних предметів.












