Jak wykonać inżynierię funkcji na nieznanych funkcjach?

19

Biorę udział w konkursie kaggle. Zestaw danych ma około 100 funkcji i wszystkie są nieznane (pod względem tego, co faktycznie reprezentują). Zasadniczo są to tylko liczby.

Ludzie wykonują wiele inżynierii funkcji na tych funkcjach. Zastanawiam się, jak dokładnie można wykonać inżynierię funkcji na nieznanych funkcjach? Czy ktoś może mi pomóc to zrozumieć i kilka wskazówek, w jaki sposób mogę wykonać inżynierię funkcji dla nieznanych funkcji?

użytkownik2409011
źródło

Odpowiedzi:

19

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

Mruga
źródło
4

Możesz wziąć różne kombinacje funkcji, takie jak suma funkcji: feat_1 + feat_2 + feat_3... lub ich iloczyn. Lub możesz przekształcić funkcje za pomocą dziennika lub wykładniczo, sigmoid ... lub nawet dyskretyzować funkcję numeryczną do jakościowej. To nieskończona przestrzeń do eksploracji.

Jakakolwiek kombinacja lub transformacja, która zwiększa wydajność weryfikacji krzyżowej lub zestawu testowego, powinieneś jej użyć.

Tu N.
źródło
2
Przydałby mi się problem z „Niezależnie od tego, jaką kombinację lub transformację zwiększy wydajność weryfikacji krzyżowej lub zestawu testów, powinieneś jej użyć”. Ślepe wypróbowywanie rzeczy, dopóki coś nie poprawi metryki wydajności, może spowodować odkrycie relacji, która nie ma sensu i powoduje nadmierne dopasowanie. To może naprawdę zaszkodzić wydajności podczas nowych obserwacji na drodze.
Hersheezy
1

Czy możesz wyjaśnić więcej konkretnymi przykładami na temat poniższego stwierdzenia?

The dataset has around 100 features and all are unknown (in terms of what actually they represent). Basically they are just numbers.

Nie jestem pewien, w jaki sposób można wykonać inżynierię funkcji bez dobrego zrozumienia zbioru danych i podanych atrybutów !!

Dane tabelaryczne są opisane w kategoriach obserwacji lub instancji (wierszy), które składają się ze zmiennych lub atrybutów (kolumn). Atrybut może być cechą.

„Pomysł funkcji oddzielnej od atrybutu ma większy sens w kontekście problemu. Cecha jest atrybutem przydatnym lub znaczącym dla twojego problemu. Jest to ważna część obserwacji dla poznania struktury problem, który jest modelowany. ... ... ...

W wizji komputerowej obraz jest obserwacją, ale cechą może być linia na obrazie.

W przetwarzaniu języka naturalnego dokument lub tweet może być obserwacją, a liczba fraz lub słów może być cechą.

W rozpoznawaniu mowy wypowiedź może być obserwacją, ale cechą może być pojedyncze słowo lub fonem. „

Aby uzyskać więcej informacji, odwiedź następujący adres URL:

Poznaj inżynierię funkcji, jak zaprojektować funkcje i jak się na tym poradzić

Fokhruz Zaman
źródło
Atrybuty w przypadku PO zostały zanonimizowane do tego stopnia, że ​​nie można wykorzystać wiedzy w dziedzinie. Jest to dość powszechne w konkursach Kaggle, ale wciąż możliwe są ograniczone formy inżynierii obiektów. Zazwyczaj nowe funkcje są tworzone zbiorczo, a następnie testowane, w przeciwieństwie do wykorzystywania wiedzy przedmiotowej do kierowania ich generowaniem. Przykład: kaggle.com/c/bnp-paribas-cardif-claims-management/data
Neil Slater
jak powiedział Neil, funkcje są anonimowe, to jest to, co mam na myśli z tego stwierdzenia.
user2409011,