Rozwiązania do ciągłej identyfikacji klastrów online?

11

Pokażę przykład hipotetycznej aplikacji do klastrowania online:

wprowadź opis zdjęcia tutaj

W chwili n punkty 1,2,3,4 są przydzielane do niebieskiej grupy A, a punkty b, 5,6,7 są przydzielane do czerwonej grupy B.

W chwili n + 1 wprowadzany jest nowy punkt a, który jest przypisany do niebieskiej gromady A, ale powoduje również przypisanie punktu b również do niebieskiej gromady A.

W końcowych punktach 1,2,3,4, a, b należą do A, a punkty 5,6,7 do B. Wydaje mi się to rozsądne.

To, co na pierwszy rzut oka wydaje się proste, jest w rzeczywistości nieco trudne - utrzymanie identyfikatorów na różnych etapach czasu. Pozwólcie, że wyjaśnię ten punkt bardziej granicznym przykładem:

wprowadź opis zdjęcia tutaj

Zielony punkt spowoduje połączenie dwóch niebieskich i dwóch czerwonych punktów w jedną gromadę, którą arbitralnie postanowiłem pokolorować na niebiesko - pamiętaj, że to już moje ludzkie heurystyczne myślenie w pracy!

Komputer, aby podjąć tę decyzję, będzie musiał użyć reguł. Na przykład, gdy punkty są scalane w klaster, to tożsamość klastra jest określana przez większość. W takim przypadku grozi nam remis - zarówno niebieski, jak i czerwony mogą być prawidłowymi wyborami dla nowego (tutaj niebieskiego koloru) klastra.

Wyobraź sobie piąty czerwony punkt blisko zielonego. Wtedy większość byłaby czerwona (3 czerwone kontra 2 niebieskie), więc czerwony byłby dobrym wyborem dla nowej gromady - ale byłoby to sprzeczne z jeszcze jaśniejszym wyborem czerwieni dla skrajnej prawej gromady, ponieważ były one czerwone i prawdopodobnie powinny tak pozostać .

Myślenie o tym jest podejrzane. Pod koniec dnia chyba nie ma do tego idealnych reguł - raczej heurystyka optymalizująca niektóre kryteria stabilności.

To w końcu prowadzi do moich pytań:

  1. Czy ten „problem” ma nazwę, do której można się odwoływać?
  2. Czy istnieją „standardowe” rozwiązania tego problemu i ...
  3. ... czy może jest nawet pakiet R?

Rozsądne dziedziczenie tożsamości klastrów w powtarzalnym grupowaniu

Raffael
źródło
Cross-post ze statystyk stats.stackexchange.com/questions/111911/... ORAZ stackoverflow: stackoverflow.com/questions/24970702
- ZAKOŃCZONY - Anony-Mousse
Czy problem polega na tym, że próbujesz utrzymać tożsamość klastrów w jak największym stopniu na każdym kroku? Czyli w N + 1 możesz powiedzieć, jak zmienił się klaster, ponieważ istnieje pewna zależność między klastrami w N a tymi w N + 1? A trudne jest to, co się stanie, jeśli klastry zostaną podzielone i scalone?
Spacedman,
@Spacedman: BINGO :) joyofdata.de/blog/…
Raffael
Zapraszam do obejrzenia tego i tego
farhawa,

Odpowiedzi:

1

Dylemat stabilności-plastyczności, wskaźników uczenia się i algorytmów zapominania:

Po pierwsze, powiem, że jest to naprawdę świetne pytanie i jest to rodzaj rzeczy prowokujących do myślenia, które naprawdę poprawiają rozumienie algorytmów ML.

  1. Czy ten „problem” ma nazwę, do której można się odwoływać?

Jest to ogólnie określane jako „stabilność”. Zabawne jest to, że stabilność jest tak naprawdę użyteczną koncepcją w zwykłym klastrowaniu, tzn. Nie w Internecie. „Stabilność” algorytmu jest często wybierana jako kryterium wyboru, czy wybrano odpowiednią liczbę klastrów. Mówiąc dokładniej, opisany przez ciebie problem stabilności klastrów online jest nazywany stability-plasticity dilemma.

  1. Czy istnieją „standardowe” rozwiązania tego problemu i ...

Po pierwsze, główną odpowiedzią jest to, że wiele algorytmów klastrowania online jest zaskakująco stabilnych, gdy zostały dobrze przeszkolone z dużą grupą początkowych danych. Jednak nadal jest to problem, jeśli chcesz naprawdę ustalić tożsamość punktów klastra, jednocześnie pozwalając algorytmowi reagować na nowe dane. Trudność twojego punktu została krótko omówiona we wstępie do uczenia maszynowego autorstwa Ethem Alpaydin. Na stronie 319 wyprowadza internetowy algorytm k-średnich poprzez zastosowanie stochastycznego spadku gradientu, ale wspomina, że stability-plasticity dilemmapowstaje przy wyborze wartości współczynnika uczenia się. Niski wskaźnik uczenia się powoduje stabilność, ale system traci zdolność adaptacji, gdy jako większy wskaźnik uczenia się zyskuje zdolność adaptacji, ale traci stabilność klastra.

Uważam, że najlepszą ścieżką naprzód jest wybór implementacji klastrowania online, która pozwala kontrolować algorytm stochastycznego spadku gradientu, a następnie wybrać szybkość uczenia się, aby zmaksymalizować stabilność i adaptację najlepiej, jak to możliwe, przy użyciu solidnej procedury weryfikacji krzyżowej.

Inną metodą, którą widziałem, jest jakiś algorytm zapominania, np. Zapominanie starszych punktów w miarę dojrzewania strumienia danych. Pozwala to na dość stabilny system w szybkich skalach czasowych i pozwala na ewolucję w wolniejszych skalach czasowych. Adaptive Resonance Theoryzostał stworzony, aby spróbować rozwiązać stability-plasticity dilemma. Można znaleźć ten artykuł ciekawy.

Nie mam wystarczającej znajomości mini-batch k-meansjęzyka R, aby zasugerować algorytm, ale sugeruję, abyś poszukał algorytmu, który pozwala kontrolować szybkość uczenia się w jego stochastycznym algorytmie spadku gradientu.

Mam nadzieję, że to pomoże!

AN6U5
źródło