/ / К-означава клъстеринг, използвайки Inversion Distance - c ++, алгоритъм, k-средства

К-означава клъстериране с използване на Inversion Distance - c ++, алгоритъм, k-средства

Първо, се опитвам да разбера как да го направяприложи този алгоритъм за решаване на домашен проект. Така че, аз не търся решение за домашна работа, просто помогна да завърша моя алгоритъм, който решава проблема.

Опитвам се да използвам клъстерите с К-средства за клъстераголям набор (2 ^ 6) масиви. Тези масиви са уникални пермутации на последователността [0,1,2 ... 31]. Но вместо да използвам евклидовото разстояние, трябва да използвам разстоянието на инверсия.

Първата ми стъпка в k-means е да избера k = 10 случайниточки от масива от данни. След това изчислявам разстоянието на инверсия на всяка стойност в набора данни към всяка от случайните k-точки. Това дава началното групиране.

Сега не мога да разбера как да конвертирате следващиястъпка от евклидовото разстояние до разстоянието на инверсия. Как мога да намеря центъра на всеки от тези клъстери (по отношение на разстоянието на инверсия), за да мога да повторя стъпката за клъстеризиране?



Като спътнически въпрос, евклидовото разстояние е добро сближаване за (или еквивалентно) разстояние на инверсия? Не вярвам, че е така, но не съм сигурен как да го докажа.

Благодаря на всички предварително.

Отговори:

1 за отговор № 1

Като цяло, вие не мога използвайте k-средства с неевродиански разстояния. Можете да опитате да изпълните алгоритъма с тях, но много малко може да се каже за значението на конвергенцията, когато алгоритъмът се прекратява.

Както можете да видите вписването в Wikipedia, евклидовото разстояние е присъщо на алгоритъма. Той работи чрез редуване между E и M типове стъпки (както в ЕМ алгоритъма), а за евклидовото разстояние може да се покаже, че и двете стъпки минимизират същата обективна функция. За други разстояния, въпреки кода, който изглежда същият, той не се държи като цяло.

Вижте също този въпрос в кръстосано потвърден.

Ако имате различно разстояние, трябва да използвате нещо друго, например, йерархичното групиране или к-medoids.