Czy klastrowanie wstępne pomaga zbudować lepszy model predykcyjny?


9

Do zadania modelowania rezygnacji rozważałem:

  1. Oblicz k klastrów dla danych
  2. Zbuduj k modeli dla każdego klastra osobno.

Uzasadnieniem tego jest to, że nie ma nic do udowodnienia, że ​​populacja subskrybentów jest jednorodna, więc uzasadnione jest założenie, że proces generowania danych może być różny dla różnych „grup”

Moje pytanie brzmi, czy jest to odpowiednia metoda? Czy coś narusza, czy z jakiegoś powodu jest uważane za złe? Jeśli tak, to dlaczego?

Jeśli nie, czy podzieliłbyś się najlepszymi praktykami w tym zakresie? I druga rzecz - czy generalnie lepiej lub gorzej jest robić klastrowanie wstępne niż drzewo modelowe (jak zdefiniowano w Witten, Frank - drzewo klasyfikacyjne / regresyjne z modelami przy liściach. Intuicyjnie wydaje się, że etap drzewa decyzyjnego jest tylko inną formą grupowania, ale idk, jeśli ma jakąkolwiek przewagę nad „normalnym” klastrowaniem).

Odpowiedzi:


3

Istnieje metoda nazywana regresją klastrową, która rozwiązuje podobny problem (najpierw klastruje dane, a następnie buduje modele predykcyjne). Zobacz na przykład to.


1
Sprawdziłem to tutaj: tandfonline.com/doi/abs/10.1080/00273170701836653 i znalazłem w streszczeniu: „W niektórych przypadkach większość zmian w zmiennej odpowiedzi jest wyjaśniona przez grupowanie obiektów, z niewielką dodatkową korzyścią zapewnianą przez modele regresji wewnątrz klastrów. W związku z tym istnieje ogromny potencjał nadmiernego dopasowania regresji klastrowej ". To nie wydaje się obiecujące.
Ziel

Ok, ale nie mówią, że to zawsze zawodzi. Nigdy nie korzystałem z tej metody, wiem tylko, że może to być połączenie podejścia nadzorowanego i bez nadzoru, ale istnieje niewielka liczba dokumentów, które używają tej metody.
Miroslav Sabo

Ponadto większość aplikacji, które znalazłem, dotyczą marketingu i finansów, więc może nadaje się szczególnie do tego rodzaju danych.
Miroslav Sabo

1
Wydaje się to bardzo intuicyjne w dziedzinie marketingu - rezygnacja, cross / upsell.
Ziel,

2

Dwa punkty, które są zbyt długie, aby można je było wypowiedzieć:

  • czyste klastry (tzn. zawierające przypadki tylko jednej klasy) same w sobie nie stanowią problemu: tak zwane klasyfikatory jednoklasowe modelują każdą klasę niezależnie od wszystkich innych. Poradzą sobie z tym doskonale.

  • Jeśli jednak klastry danych są w taki sposób, że klasy są dość rozdzielone, tj. Klastry są raczej czyste, oznacza to, że istnieje bardzo silna struktura, struktura, którą analiza klastrów może znaleźć bez wskazówek na podstawie etykiet klas. Oznacza to, że niektóre typy klasyfikatorów, takie jak metody najbliższego sąsiedztwa oparte na tej samej miary odległości stosowanej w analizie skupień, są odpowiednie dla danych.

  • Inna możliwość, sytuacje, w których klastry nie są czyste, ale kombinacja metod klastrowania i klasyfikacji może dobrze się sprawdzać, jest odpowiednia dla drzew. Drzewo zajmie się częścią klastrowania (a czyste węzły nie są uważane za problem.) Oto sztuczny przykład problemu XOR z 2 klastrami:
    Klaster XOR

  • innym sposobem uwzględnienia informacji o klastrze bez ryzyka posiadania czystych klastrów byłoby użycie klastrowania jako etapu generowania funkcji: dodaj wynik analizy skupień jako nowe zmienne do macierzy danych.

  • Pytasz, czy z jakiegoś powodu jest źle: jedną z pułapek jest to, że takie podejście prowadzi do modeli o wielu stopniach swobody. Musisz szczególnie uważać, aby się nie przełożyć.

  • Spójrz na drzewa oparte na modelach, np . Odpowiedź mbq tutaj. Myślę, że implementują one koncepcję bardzo zbliżoną do poszukiwanego przez ciebie. Można je również zaimplementować jako las: np. Pakiet R mobForest .


1

Obecnie mam do czynienia z podobnym problemem. Mam setki funkcji do zbudowania klasyfikatora. Po wypróbowaniu różnych modeli (np. Losowe lasy, zwiększenie gradientu itp.) Nadal mam niską precyzję / przywołanie. Staram się więc grupować, a następnie budować klasyfikatory w różnych grupach. Moje obawy dotyczą, tak jak mówi Anony-Mousse, w jaki sposób mogę uzyskać więcej informacji od klasyfikatora, jeśli wykorzystam wszystkie informacje w klastrowaniu? Oto co zrobię dalej:

  1. Użyj niektórych funkcji (mniej, zgodnie z wcześniejszą wiedzą), aby utworzyć klastrowanie.
  2. Użyj innych funkcji (więcej) do szkolenia klasyfikatorów.

Myślę, że może to również pomóc zmniejszyć złożoność, szkoda, że ​​nie pomaga.


1

Budynek k klastry i wtedy kodpowiednie modele są absolutnie wykonalne. Przypadek patologiczny odnotowany w komentarzach, w którym klastry doskonale rozdzielające zmienne wynikowe stwarzałyby trudności dla klasyfikatorów, jest problemem teoretycznym, ale moim zdaniem jest mało prawdopodobny (szczególnie w przypadku wielowymiarowym). Co więcej, jeśli możesz zbudować takie klastry, możesz po prostu użyć tych klastrów do przewidywania!

Ponadto, jeśli proces zaczyna się od N. próbki, klasyfikatory mogą tylko używać N./kpróbki. Zatem silniejszym podejściem byłoby użycie klastrów w budowaniu pojedynczego klasyfikatora, który uwzględnia heterogeniczność w klastrach przy użyciu mieszaniny regresji. W klastrowaniu opartym na modelu zakłada się, że dane są generowane z rozkładu mieszankiYjaN.(μja,σja2)) gdzie ja=1 z prawdopodobieństwem π i ja=2) z prawdopodobieństwem 1-π i μ1 μ2) i σ12)σ2)2). Regresja mieszania jest rozszerzeniem, które pozwala modelować dane jako zależne od zmiennych towarzyszących;μja jest zastąpiony przez βjaXja, gdzie βjatrzeba oszacować. Chociaż ten przykład dotyczy przypadku jednowymiarowego, przypadek Gaussa, struktura może pomieścić wiele danych (wielomianowy logit byłby odpowiedni dla zmiennych kategorialnych). Pakiet flexmix dla R zapewnia bardziej szczegółowy opis i oczywiście stosunkowo łatwy i elastyczny sposób do wdrożenia tego podejścia.

Alternatywnie, w dyskryminującym otoczeniu, można spróbować włączyć przypisania klastra (twarde lub miękkie) jako funkcję do szkolenia wybranego algorytmu klasyfikacji (np. NB, ANN, SVM, RF itp.)


0

Cóż, jeśli twoje klastry są naprawdę dobre, twoje klasyfikatory będą gównem. Ponieważ nie mają wystarczającej dywersji w swoich danych treningowych.

Powiedz, że twoje klastry są idealne, tj. Czyste. Nie możesz już nawet odpowiednio trenować klasyfikatora. Klasyfikatorzy potrzebują pozytywnych i negatywnych przykładów!

Losowy Las bardzo skutecznie robi dokładnie odwrotnie. Pobierają losową próbkę danych, trenują klasyfikator, a następnie wykorzystują wszystkie wyszkolone klasyfikatory.

To, co może zadziałać, to użycie klastrowania, a następnie wyszkolenie klasyfikatora na każdej parze klastrów, przynajmniej jeśli wystarczająco się nie zgadzają (jeśli klasa jest podzielona na dwa klastry, nadal nie można tam trenować klasyfikatora!)


Celem grupowania nie jest znajdowanie „czystych” klastrów, tj. Takich, które są świetne w rozróżnianiu mojej zmiennej docelowej. Celem grupowania jest znalezienie grup jednorodnych w „innym” obszarze. Na przykład: myślę, że odejście to klienci „tylko jakości” i klienci „optymalizujący koszty”. Nie sądzę, że powinienem założyć, że odpowiednie cechy dla klasyfikacji są takie same w obu grupach, dlatego chcę zbudować osobny model dla każdej grupy. Oczywiście nie mam wyraźnych grup „jakości” i „kosztów”, stąd pomysł grupowania w celu uzyskania takich grup w pierwszej kolejności na podstawie danych.
Ziel,

Każdy rodzaj dodatkowej nierównowagi i korelacji danych może zaszkodzić. Zobacz, klasyfikator może chcieć rozróżnić „tylko jakość” i „optymalizację kosztów”. Jeśli dostanie tylko jedną grupę, nie może skorzystać z tego rozróżnienia.
Ma ZAKOŃCZENIE - Anony-Mousse,

1
Ale tylko jeśli zastosujesz podejście dwupoziomowe, najpierw sklasyfikuj według klastrów, a następnie oceń klasyfikator klastrów. W przeciwnym razie stały klasyfikator jest bezużyteczny. Następnie kładziesz cały ciężar na grupowanie.
Ma ZAKOŃCZENIE - Anony-Mousse

1
Tak właśnie zrozumiałem OP.
cbeleites niezadowoleni z SX

1
Oczywiście możesz to zrobić, ale są szanse, że twoje klastry nie są tak dobre, i że lepiej jest ci z odpowiednim zestawem „nakładających się” klasyfikatorów. Podobnie jak RandomForests.
Ma ZAKOŃCZENIE - Anony-Mousse
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.