Nie potrzebujesz wiedzy na temat domeny (wiedzy o tym, co oznaczają twoje dane ), aby wykonać inżynierii funkcji (znaleźć bardziej wyraziste sposoby kadrowania danych).
Jak wyjaśnił Tu N. , można znaleźć „szybkie i brudne” kombinacje funkcji, które mogą być bardzo przydatne. Biorąc pod uwagę wynik i indywidualną cechę x , można wykonać następujące przekształcenia, x ′ ∈ { e x , log ( x ) , x 2 , x 3 , tanh ( x ) } . Szybka kontrola przydatności transformacji polega na tym, że korelacja między { y , x ′ } jest wyższa niż korelacja międzyyxx′∈{ex,log(x),x2,x3,tanh(x)}{y,x′} .{y,x}
Ostrzeżenie o korelacji: korelacja nie pokazuje wszystkiego i zależnie od używanego modelu (wysoce nieliniowego, takiego jak NN lub RF) i interakcji z innymi zmiennymi, zmiana korelacji może nic nie znaczyć.
Jeśli jednak używasz prostego modelu liniowego, takiego jak regresja logistyczna, jest to OK wskaźnik wydajności. Jednak, jak zauważył Fokhruz Zaman , najlepszym sposobem oceny takiej transformacji byłoby zbudowanie modelu z przekształconą cechą i bez niej oraz sprawdzenie, jak ewoluuje błąd sprawdzania poprawności (na twoich fałdach krzyżowej walidacji).
W ten sposób łatwo jest zauważyć transformacje jednofunkcyjne. Odnoszą się one do wielu danych, w których bardziej ekspresyjny związek między danymi wejściowymi i wyjściowymi może mieć inną skalę. Na przykład związek między dochodem a „szczęściem” wydaje się logarytmiczny, ale nigdy nie zapisuje się bezpośrednio dziennika dochodów uczestnika.
Znalezienie kombinacji funkcji jest trudniejsze. Na początek, jeśli chcesz przetestować każdy dodatek 2 funkcji i masz funkcje , masz do przetestowania kolejność transformacji D 2 . Aby znaleźć takie transformacje, możesz zastosować do problemu model nieliniowy (taki jak NN lub RF) i spróbować zobaczyć, czego się uczy. Jeśli potrafisz określić, co robi warstwa pośrednia w sieci NN, możesz wstępnie obliczyć jej wynik i dodać go jako nową funkcję. Nie będzie musiał go ponownie obliczać i prawdopodobnie spróbuje nauczyć się czegoś nowego.DD2
Może być trudno zinterpretować wewnętrzną reprezentację NN, a nawet zinterpretować znaczenie cechy w Losowym Lesie. Łatwiejszą i prawdopodobnie bardziej odpowiednią metodą do tego celu byłby Boosting z drzewami decyzyjnymi. Istnieje wiele bibliotek implementujących Boosting, a jeśli bierzesz udział w konkursie Kaggle, jak sugeruje Twój post, XGBoost wydaje się być używany przez wielu uczestników, więc możesz znaleźć pomoc / samouczki na temat tego, co opiszę.
Najpierw uruchom algorytm doładowywania, używając tylko pniaków , drzew decyzyjnych na 1 poziomie. Kikuty są bardzo słabe, ale wzmocnienie powoduje, że jest to rozsądny model. Będzie to stanowić punkt odniesienia. W zależności od używanej biblioteki powinieneś być w stanie dość łatwo wyświetlić, które są najczęściej używanymi funkcjami, i powinieneś wykreślić je względem odpowiedzi (lub zrobić histogram, jeśli odpowiedź jest kategoryczna), aby zidentyfikować jakiś wzorzec. To może dać ci intuicję, co byłoby dobrą transformacją pojedynczej funkcji.
Następnie uruchom algorytm Boosting z 2-poziomowymi drzewami decyzyjnymi. Ten model jest o wiele bardziej złożony niż poprzedni; jeśli dwie zmienne wzięte razem mają więcej mocy niż wzięte pojedynczo, model ten powinien przewyższyć poprzednią (ponownie, nie pod względem błędu szkolenia, ale błędu sprawdzania poprawności!). Na tej podstawie powinieneś być w stanie wyodrębnić, które zmienne są często używane razem, a to powinno doprowadzić cię do potencjalnych transformacji wielofunkcyjnych.
W pokrewnych materiałach polecam następujące filmy, ponieważ są one łatwe do śledzenia