Wybór funkcji za pomocą Losowych lasów


17

Mam zestaw danych zawierający głównie zmienne finansowe (120 funkcji, 4k przykładów), które są w większości wysoce skorelowane i bardzo głośne (na przykład wskaźniki techniczne), dlatego chciałbym wybrać około 20-30 do późniejszego użycia ze szkoleniem modelu (klasyfikacja binarna) - zwiększyć zmniejszyć).

Myślałem o użyciu losowych lasów do rankingu funkcji. Czy warto używać ich rekurencyjnie? Na przykład, powiedzmy w pierwszej rundzie, że upuszczam najgorsze 20%, także drugą itd., Dopóki nie otrzymam pożądanej liczby funkcji. Czy powinienem stosować walidację krzyżową z RF? (Intuicyjne jest dla mnie to, że nie używam CV, ponieważ tak już robi RF.)

Również jeśli korzystam z losowych lasów, czy powinienem ich używać jako klasyfikatorów dla pliku binarnego lub regresora dla rzeczywistego wzrostu / spadku, aby uzyskać ważność funkcji?

Nawiasem mówiąc, modelami, które chciałbym wypróbować po wybraniu funkcji, są: SVM, sieci neuronowe, lokalnie ważone regresje i losowy las. Pracuję głównie w Pythonie.


2
chciałby się połączyć, aby wymienić się spostrzeżeniami. Pracuję nad czymś podobnym
user670186

czy jest jakiś powód, dla którego nikt nie sugerował, aby po prostu użyć built-inatrybutu RandomForestClassifier w sklearnnazwie feature_importances_....? Zobaczysz to w linku.
Candic3

Uwaga, ponieważ multicollinearitymoże zniekształcać import funkcji i wybór funkcji. sprawdź to tutaj
Candic3

Uwaga na domyślne algorytmy: parrt.cs.usfca.edu/doc/rf-importance/index.html
Tim

Odpowiedzi:


13

Do wyboru funkcji potrzebujemy funkcji oceniania, a także metody wyszukiwania w celu optymalizacji funkcji oceniania.

Możesz użyć RF jako metody rankingu cech, jeśli zdefiniujesz odpowiedni wynik ważności. RF wybierze funkcje oparte na losowej metodzie zastępowania i zgrupuje każdy podzbiór w osobnej podprzestrzeni (zwanej podprzestrzenią losową). Jedna ważna funkcja oceniania może opierać się na przypisywaniu dokładności każdego drzewa dla każdej cechy w tej losowej podprzestrzeni. Następnie robisz to dla każdego osobnego drzewa. Ponieważ źródło generowania podprzestrzeni jest losowe, możesz wyznaczyć próg obliczania wyniku ważności.

Streszczenie:

Krok 1 : Jeśli funkcja X2 pojawi się w 25% drzew, zdobądź ją. W przeciwnym razie nie rozważaj uszeregowania funkcji, ponieważ nie mamy wystarczających informacji o jej wydajności

Krok 2 : Teraz przypisz wynik każdemu drzewu, w którym X2 pojawia się X2, i uśrednij wynik. Na przykład: perf (Tree1) = 0,85 perf (Tree2) = 0,70 perf (Tree3) = 0,30

Następnie znaczenie cechy X2 = (0,85 + 0,70 + 0,30) / 3 = 0,6167

Możesz rozważyć bardziej zaawansowane ustawienie, włączając głębokość podziału obiektu lub wartość przyrostu informacji w drzewie decyzyjnym. Istnieje wiele sposobów zaprojektowania funkcji oceniania w oparciu o drzewa decyzyjne i RF.

Jeśli chodzi o metodę wyszukiwania, metoda rekurencyjna wydaje się rozsądna jako sposób na wybranie najwyżej ocenianych.

Na koniec możesz użyć RF jako klasyfikatora lub modelu regresji przy wyborze swoich funkcji, ponieważ obie z nich zapewniłyby ci wynik wydajności. Wynik jest orientacyjny, ponieważ opiera się na próbkach OOB wypakowanych z torby i nie można rozważyć weryfikacji krzyżowej w prostszym ustawieniu.


Dzięki za wkład. Chciałem to zaznaczyć (0.85+0.70+0.30)/3 = 0.6167.
Hendy,

5
Jeśli pracujesz z pythonem, możesz bezpośrednio użyć zmiennej ważności obliczonej w sklearn podczas wywoływania losowego lasu.
Scratch,

5

Mam zestaw danych zawierający głównie zmienne finansowe (120 funkcji, 4k przykładów), które są w większości wysoce skorelowane i bardzo głośne (na przykład wskaźniki techniczne), dlatego chciałbym wybrać około 20-30 do późniejszego użycia ze szkoleniem modelu (klasyfikacja binarna) - zwiększyć zmniejszyć).

Przykłady 4k to naprawdę za mało, aby oszacować coś bardzo zaawansowanego - musisz użyć najprostszych możliwych modeli (regresja liniowa / logistyczna, liniowy svm) i małej liczby zmiennych

Biorąc pod uwagę, że dane są zaszumione i skorelowane, PCA jest prawdopodobnie najlepszym rozwiązaniem [skutecznie identyfikuje wspólne sygnały uśredniane dla poszczególnych wskaźników]

Regularyzacja L2 (dla modelu liniowego) pomoże również uśrednić szum [np. Jeśli masz n głośnych kopii tego samego sygnału, regularyzacja L2 zachęci do zachowania takich samych wag - uśrednienie tych n zmiennych]

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.