Ініціалізація центрів K-засобів за допомогою випадкових підпроборів набору даних?


13

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

Наприклад, припустимо, я хочу 5 clusters. Я вважаю 5 random samples, size=20%оригінальний набір даних. Чи можу я потім взяти середнє значення кожного з цих 5 випадкових вибірок і використовувати ці засоби як мої 5 початкових центрів кластерів? Я не знаю, де я це читав, але мені хотілося знати, що ви думаєте про цю ідею.


ОНОВЛЕННЯ: Будь ласка, дивіться цей потік Ініціалізація кластеризації K-засобів: які існують методи? для загального обговорення різних методів ініціалізації.


11
Якщо ви випадково розділите зразок на 5 підпроборів, то ваші 5 засобів майже збігаються. Який сенс робити такі близькі точки початковими центрами кластерів? У більшості K-засобів реалізації вибір за замовчуванням початкових центрів кластерів базується на протилежній ідеї: знайти 5 точок, які найбільш віддалені один від одного, і зробити їх початковими центрами.
ttnphns

2
@ttnphns Це була б гарна відповідь.

2
Я думаю, що було б набагато краще вибрати загальну середню оцінку як одну точку і вибрати інші, які знаходяться далеко від цього центру в різних напрямках.
Майкл Р. Черник

1
Має сенс. Як я міг би розібратися щодо пошуку цих 5 балів, які знаходяться далеко один від одного? Дякую!
JEquihua

@JEquihua, я розмістив свій коментар як відповідь і додав деталі, які ви запитуєте.
ttnphns

Відповіді:


16

Якщо ви випадково розділите зразок на 5 підпроборів, то ваші 5 засобів майже збігаються. Який сенс робити такі близькі точки початковими центрами кластерів?

У багатьох реалізаціях K-засобів вибір стандартних центрів кластерів за замовчуванням базується на протилежній ідеї: знайти 5 точок, які найбільш віддалені один від одного, і зробити їх початковими центрами. Ви можете запитати, який може бути спосіб знайти ті далеко відстані точки? Ось що K-засоби SPSS роблять для цього:

Візьміть будь-які k випадків (точок) набору даних як вихідні центри. Усі інші випадки перевіряються на можливість заміни таких як вихідних центрів такими умовами:

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

Якщо умова (а) не виконується, умова (б) перевіряється; якщо його не влаштовують, то справа не стає центром. В результаті такого запуску випадків ми отримуємо k кращих випадків у хмарі, які стають початковими центрами. Результат цього альго, хоча і досить надійний, не є повністю нечутливим до початкового вибору "будь-яких k випадків" та до порядку сортування випадків у наборі даних; Таким чином, кілька випадкових спроб запуску все ще вітаються, як це завжди буває з K-засобами.

Дивіться мою відповідь зі списком популярних методів ініціалізації для k-засобів. Метод розбиття на випадкові підпроби (тут я критикував мене та інші), а також описаний метод, використовуваний SPSS - також є у списку.


1
Після того, як я зробив те, що ви описуєте, яку статистику я міг би використати, щоб визначити, яка точка ініціалізації веде до кращого розділу? Спасибі тобі за все.
JEquihua

Використання кращих точок як початкових центрів один раз не гарантує отримання найкращого розділу в підсумку, думаючи, що вони (порівняно з випадковими початковими центрами) зменшують шанс потрапити в пастку до "локального оптимуму", і вони прискорюють процес конвергенції. . Змінюючи порядок справ, зробіть весь розділ k-означає 2-5 разів, збережіть кінцеві одержані центри, середні їх та введіть як початкові для однієї остаточної кластеризації. Ця перегородка, безумовно, найкраща. Насправді вам не потрібна якась спеціальна статистика, щоб перевірити її, якщо тільки ви не збираєтеся порівнювати групи різних k
ttnphns

1
Я хочу порівнювати розділи різних k. Що я можу використовувати? Яка гарна ідея? дякую, що мені так допомогли. @ttnphns.
JEquihua

Існує велика кількість "внутрішніх" критеріїв кластеризації . Одним з найбільш підходящих для k-засобів є Calinski-Harabasz (багатофакторний Fisher's F). Google для нього або для інших.
ttnphns

7

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

Якщо ви хочете побачити ще якусь схему ініціалізації звуку для k-засобів, перегляньте k-означає ++. Вони розробили досить розумний метод посіву k-засобів.

  • Артур, Д. та Васильвіцький, С. (2007).
    k-означає ++: переваги дбайливого висіву ".
    Матеріали вісімнадцятого щорічного симпозіуму ACM-SIAM про дискретні алгоритми

Авторські слайди: http://www.ima.umn.edu/~iwen/REU/BATS-Means.pdf


Я читав це, це виглядає досить інтуїтивно вигідно, але думаю, що ще потрібно довести, що він працює краще, ніж просто взяти багато випадкових ініціалізаційних точок. Я знайшов цей простий код у випадку, якщо ви хочете спробувати його: kmpp <- функція (X, k) {n <- nrow (X) C <- числовий (k) C [1] <- зразок (1: n, 1) для (i in 2: k) {dm <- distmat (X, X [C,]) pr <- застосовувати (dm, 1, хв); pr [C] <- 0 C [i] <- зразок (1: n, 1, prob = pr)} kmeans (X, X [C,])}
JEquihua

Відомо, що значно скорочує кількість ітерацій до конвергенції та дає в середньому кращі результати. Я можу підтвердити, що у власних експериментах kmeans ++ - це шлях. Я використовую реалізацію ELKI.
Мав QUIT - Anonymous-Mousse

Що таке впровадження ELKI? де я можу це подивитися? привітання!
JEquihua


4

Використання засобів випадкових вибірок дасть вам протилежне тому, що вам потрібно, як вказував ttnphns у своєму коментарі. Нам знадобиться спосіб знайти точки даних, які знаходяться досить далеко один від одного.

В ідеалі ви можете перебрати всі точки, знайти відстані між ними, визначити, де відстані найбільші ...

Не уникати наміру ОП, але я думаю, що "рішення" вбудоване в алгоритм k-засобів. Ми виконуємо кілька ітерацій та перераховуємо кластерні центроїди на основі попередніх ітерацій. Ми також зазвичай кілька разів запускаємо алгоритм kmeans (із випадковими початковими значеннями) та порівнюємо результати.

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


Після того, як я зробив те, що ви описуєте, яку статистику я міг би використати, щоб визначити, яка точка ініціалізації веде до кращого розділу? Спасибі тобі за все.
JEquihua

2

k


Має багато сенсу. Чи можу я запитати вас те саме, що я запитав Амана. Припустимо, я беру на мільйон випадкових початкових балів. Що я можу використати, щоб визначити, який із отриманих розділів найкращий? Привітання! @gmacfarlane
JEquihua

k

k
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.