Jak mogę sprawdzić, czy moje grupowanie danych binarnych jest znaczące

12

Robię analizy koszyka na zakupy. Mój zestaw danych to zbiór wektorów transakcji z produktami, które są kupowane.

Kiedy stosuję k-średnich w transakcjach, zawsze otrzymam jakiś wynik. Matryca losowa prawdopodobnie pokazywałaby także niektóre skupienia.

Czy istnieje sposób na sprawdzenie, czy skupienie, które znalazłem, jest znaczące, czy też może być bardzo przypadkowe. Jeśli tak, jak mogę to zrobić.

Peter Smit
źródło

Odpowiedzi:

14

Jeśli chodzi o analizę koszyka, uważam, że głównym celem jest zindywidualizowanie najczęstszych kombinacji produktów kupowanych przez klientów. association rulesReprezentują najbardziej naturalne metody tutaj (w rzeczywistości były one właściwie opracowane do tego celu). Analiza kombinacji produktów zakupionych przez klientów oraz liczba powtórzeń tych kombinacji prowadzi do reguły typu „jeśli warunek, a następnie wynik” z odpowiednim pomiarem ciekawości. Możesz również rozważyć Log-linear modelsw celu zbadania powiązań między rozważanymi zmiennymi.

Jeśli chodzi o tworzenie klastrów, oto kilka informacji, które mogą się przydać:

Na początku zastanów się Variable clustering. Grupowanie zmiennych służy do oceny kolinearności, redundancji oraz do dzielenia zmiennych na klastry, które można ocenić jako pojedynczą zmienną, co powoduje zmniejszenie danych. Poszukaj varclusfunkcji (pakiet Hmisc w R)

Ocena stabilności klastra: funkcja clusterboot{pakiet R Rpc}

Statystyka oparta na odległości do sprawdzania poprawności klastra: funkcja cluster.stats{pakiet R Rpc}

Jak wspomniano w mbq, użyj szerokości sylwetki do oceny najlepszej liczby klastrów. Zobacz to . Jeśli chodzi o szerokości sylwetki, zobacz także funkcję optsil .

Oszacuj liczbę klastrów w zbiorze danych za pomocą statystyki luki

Aby obliczyć wskaźniki niepodobności i miary odległości, zobacz dsvdis i vegdist

Algorytm klastrowania EM może decydować o tym, ile klastrów ma zostać utworzonych metodą krzyżowej weryfikacji (jeśli nie można określić apriori, ile klastrów ma zostać wygenerowanych). Chociaż algorytm EM ma gwarantowane zbiegnięcie się do maksimum, jest to maksimum lokalne i niekoniecznie musi być takie samo jak maksimum globalne. Aby zwiększyć szansę na uzyskanie globalnego maksimum, całą procedurę należy powtórzyć kilka razy, z różnymi wstępnymi domysłami dla wartości parametrów. Ogólną liczbę logarytmów prawdopodobieństwa można wykorzystać do porównania różnych uzyskanych konfiguracji końcowych: wystarczy wybrać największą z lokalnych maksimów . Implementację klastra EM można znaleźć w projekcie WEKA typu open source

To także ciekawy link.

Szukaj również tutaj dlaFinding the Right Number of Clusters in k-Means and EM Clustering: v-Fold Cross-Validation

Wreszcie możesz zbadać wyniki grupowania za pomocą klastra

George Dontas
źródło
8

Jest to metoda wykorzystująca Monte Carlo do wykazania poprawności wyniku.

Nasza hipoteza zerowa H_0 jest taka, że ​​nasz zestaw danych nie ma interesującego grupowania. Nasza alternatywna hipoteza H_1 jest taka, że ​​nasz zestaw danych zawiera interesujące klastry.

Niniejszym myślimy o interesującym jako, bardziej interesującym niż struktura grupowania losowego zestawu danych z tymi samymi marginesami wierszy i kolumn. Oczywiście można wybrać inne ograniczenia, ale luźne ograniczenia spowodują, że nasz wynik będzie zbyt ogólny, a wąskie ograniczenia spowodują, że skupienie będzie zbyt duże, przez co nasz wynik będzie automatycznie nieistotny. Marginesy, jak zobaczymy, są dobrym wyborem ze względu na istniejące metody losowania z nim.

Zdefiniujmy jako naszą statystykę testową błąd skupienia (kwadrat w odległości wewnątrz klastra), T od Π_0. Wartość naszego oryginalnego zestawu danych wynosi t .

Nic nie wiemy o tej dystrybucji, poza tym, że możemy z niej pobierać próbki. Co czyni go dobrym kandydatem do Monte Carlo.

Teraz rysujemy n (iid) losowych próbek z Π_0 i obliczamy empiryczną wartość p za pomocą wzoru p_emp = 1 / (n + 1) * (Σ_i = 1-n I (t_i> = t) + 1)

Losowe próbkowanie można przeprowadzić przez losową wymianę. Mówiąc najprościej, kwadrat jest przeszukiwany za pomocą dwóch przeciwległych rogów 1 i pozostałych dwóch rogów a 0. Następnie rogi są odwracane. Pozwala to zachować marginesy kolumny i wiersza. Procedurę powtarza się tyle razy, aż zestaw danych jest wystarczająco losowy (zajmie to kilka eksperymentów). Więcej informacji na ten temat można znaleźć w Ocenianiu wyników wyszukiwania danych za pomocą swapowej randomizacji Gionis i in. glin.

Jednym ze sposobów na to jest zdefiniowanie rozkładu danych i przyjęcie błędu klastrowania jako statystyki testowej t.

Na przykład, jeśli weźmiemy pod uwagę wszystkie zestawy danych z tymi samymi marginesami wierszy i kolumn jako nasz rozkład danych, wówczas możemy pobrać n losowych macierzy Xi z tego rozkładu i obliczyć dla nich błąd grupowania. Następnie możemy obliczyć imperatywną wartość p według wzoru

Peter Smit
źródło
4

Istnieje coś takiego jak sylwetka , która do pewnego stopnia definiuje statystykę, która określa jakość klastra (na przykład służy do optymalizacji k). Teraz możliwy Monte Carlo wyglądałby następująco: generujesz wiele losowych zestawów danych podobnych do twojego oryginalnego (na przykład poprzez tasowanie wartości między wierszami w każdej kolumnie), grupujesz i uzyskujesz rozkład średniej sylwetki, który następnie można wykorzystać do testowania istotności sylwetki w rzeczywistych danych. Nadal administruję tym, że nigdy nie próbowałem tego pomysłu.


źródło
1
To przypomina mi plakat, który widziałem na konferencji Human Brain Mapping 2010. Tom Nichols wykorzystał parametryczny bootstrap, aby ocenić stabilność korelacji i sylwetki kopenetycznej w hierarchicznym grupowaniu, ale zobacz jego plakat: j.mp/9yXObA .
chl
@chl Thanks; rzeczywiście ostatnio widziałem podobne rzeczy zrobione w moim laboratorium; wynik był taki, że klastry nie są znaczące: - /
Zgadzam się, że to brzmi jak ładowanie.
Vass
(FYI: interpretacja wartości sylwetki ). Zauważ też, że wartość sylwetki nie jest zdefiniowana dla klastra k = 1, więc nie możemy porównać hipotezy k = 1 (tj. Zestaw danych jest nieklastrowany) z k> 1 (zestaw danych jest klastrowany) przy użyciu wartości sylwetki.
Franck Dernoncourt