Do zadania modelowania rezygnacji rozważałem:
- Oblicz k klastrów dla danych
- 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).
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:
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 .
źródło
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:
Myślę, że może to również pomóc zmniejszyć złożoność, szkoda, że nie pomaga.
źródło
Budynekk klastry i wtedy k odpowiednie 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ę odN. próbki, klasyfikatory mogą tylko używać N./ k pró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 mieszankiYja∼ N.(μja,σ2)ja) gdzie i = 1 z prawdopodobieństwem π i i = 2 z prawdopodobieństwem 1 - π i μ1≠ μ2) i σ2)1≠σ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 βja trzeba 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.)
źródło
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!)
źródło