Dlaczego działa inżynieria funkcji?

20

Ostatnio dowiedziałem się, że jednym ze sposobów znajdowania lepszych rozwiązań problemów ML jest tworzenie funkcji. Można to zrobić, na przykład sumując dwie funkcje.

Na przykład, mamy dwie cechy: „atak” i „obrona” jakiegoś bohatera. Następnie tworzymy dodatkową funkcję o nazwie „total”, która jest sumą „ataku” i „obrony”. Teraz wydaje mi się dziwne, że nawet trudny „atak” i „obrona” są prawie idealnie skorelowane z „całkowitą”, wciąż zdobywamy przydatne informacje.

Jaka jest matematyka? Czy może moje rozumowanie jest błędne?

Ponadto, czy nie jest to problemem dla klasyfikatorów takich jak kNN, że „suma” będzie zawsze większa niż „atak” lub „obrona”? Zatem nawet po standaryzacji będziemy mieć funkcje zawierające wartości z różnych zakresów?

MrKadek750
źródło
Praktyka sumowania dwóch cech z pewnością nie reprezentuje „inżynierii cech” w ogóle.
Xji

Odpowiedzi:

21

Pytasz o tytuł, a treść wydaje mi się niezgodna. Jeśli używasz modelu liniowego, dodaj do ataku dodatkową cechę, a obrona pogorszy sytuację.

Najpierw chciałbym odpowiedzieć na pytanie, dlaczego ogólnie rzecz biorąc działa funkcja.

Obraz jest wart tysiąca słów. Ta liczba może dać ci pewne spostrzeżenia na temat inżynierii funkcji i dlaczego ona działa ( źródło obrazu ):

wprowadź opis zdjęcia tutaj

  • Dane we współrzędnych kartezjańskich są bardziej skomplikowane i stosunkowo trudno jest napisać regułę / zbudować model klasyfikujący dwa typy.

  • Dane we współrzędnych biegunowych są bardzo łatwe: możemy napisać prostą regułę na aby sklasyfikować dwa typy.r

To mówi nam, że reprezentacja danych ma duże znaczenie. W niektórych miejscach wykonywanie zadań jest znacznie łatwiejsze niż w innych miejscach.

Tutaj odpowiadam na pytanie wymienione w twoim przykładzie (łącznie na atak i obronę)

W rzeczywistości inżynieria cech wymieniona w tym przykładzie ataku i obrony nie będzie działać dobrze w przypadku wielu modeli, takich jak model liniowy i spowoduje pewne problemy. Zobacz wielokoliniowość . Z drugiej strony taka inżynieria funkcji może działać na innych modelach, takich jak drzewo decyzyjne / losowy las. Szczegóły znajdują się w odpowiedzi @ Imran.

Tak więc odpowiedź jest taka, że ​​w zależności od używanego modelu, niektóre funkcje inżynierii pomogą w niektórych modelach, ale nie w przypadku innych modeli.

Haitao Du
źródło
Suma nie musi być współliniowa z dodatkami. Zobacz na przykład moją odpowiedź.
Kodiolog
15

Rodzaj używanego przez nas modelu może nie być bardzo wydajny w uczeniu się pewnych kombinacji istniejących funkcji.

Rozważmy na przykład twój przykład, gdzie są funkcje ai d, a my używamy drzewa decyzyjnego, aby przewidzieć wynik binarny, który będzie jeśli i jeśli .0za+re<01za+re0

Ponieważ drzewa decyzyjne można podzielić tylko wzdłuż poszczególnych osi elementów, nasz model będzie próbował zbudować schody pasujące do linii, która będzie wyglądać mniej więcej tak:

wprowadź opis zdjęcia tutaj

Jak widać, nie uogólni to idealnie do nowych danych. Możemy mieć kręgi nad prawdziwą linią decyzyjną, które znajdują się poniżej naszej granicy decyzji i odwrotnie w przypadku krzyży.

Jeśli jednak dodamy a+djako funkcję, problem staje się banalny dla drzewa decyzyjnego. Może zignorować osobę ai dfunkcje i rozwiązać problem za pomocą jednego a+d<0pnia decyzji.

wprowadź opis zdjęcia tutaj

Jeśli jednak użyjesz regresji liniowej, wówczas Twój model będzie w pełni zdolny do uczenia bez dodawania dodatkowej funkcji.za+re

Podsumowując, niektóre dodatkowe funkcje mogą być pomocne w zależności od typu używanego modelu, dlatego należy zachować ostrożność, biorąc pod uwagę zarówno dane, jak i model podczas projektowania funkcji.

Imran
źródło
1
Właśnie o to chodzi. Wybór funkcji i wybór modelu należy rozpatrywać łącznie. Powszechną pułapką jest próba uzasadnienia wyboru funkcji bez uwzględnienia rodzaju używanego modelu.
Imran
1
Na przykład, jeśli próbowała to samo z regresji liniowej wtedy ai dwystarczyłby i dodając a+djako cecha nie zrobi różnicy.
Imran
Zaktualizowałem swoją odpowiedź, aby była bardziej wyraźna.
Imran
1
Ponadto podział na linię przekątną wymaga jednego podziału. Narysowane schody „zużywają” siedem podziałów.
Kumulacja
3

totaltotalattackdefenseattackdefensetotalattacktotaldefense17

Ponadto, czy nie jest to problemem dla klasyfikatorów takich jak kNN, że „suma” będzie zawsze większa niż „atak” lub „obrona”? Zatem nawet po standaryzacji będziemy mieć funkcje zawierające wartości z różnych zakresów?

Jeśli chcesz ujednolicić swoje predyktory, powinieneś to zrobić po ich zbudowaniu.

Kodiolog
źródło
1
czy to naprawdę prawda? Z pewnością w prostym modelu liniowym tak nie jest: matryca [attack, defense, total]ma oczywiście rangę 2. Mógłbym sobie wyobrazić, że w czymś w rodzaju penalizowanego modelu liniowego mógłby to zmienić, ale jest on oparty na intuicji, a nie w pełni przez nią przepracowany. Można wyjaśnić, dlaczego, jeśli attacki defensenie są silnie skorelowane z total(co się dzieje, kiedy attacki defensesą silnie ujemnie skorelowany), dlatego totalmogą być pomocne?
Cliff AB,
1
@CliffAB Z perspektywy czasu byłem trochę glib tutaj. Miałem rację mówiąc, że skonstruowana funkcja może być użyteczna, gdy nie jest silnie skorelowana z innymi predyktorami, i że totalnie musi być silnie skorelowana z attacklub defense, ale nigdy nie użyłbyś dwóch predyktorów i ich sumy w tym samym modelu, ze względu na liniowy zależność, z implikuje silną korelację między niektórymi z trzech.
Kodiolog
1

Aby dać ogólną odpowiedź, inżynieria funkcji w większości przypadków polega na wyodrębnieniu istotnych danych z danych, więc jeśli podasz więcej informacji swojemu modelowi, to oczywiście powinno działać lepiej. Powiedz, że twoje dane składają się z adresów e-mail w postaci „imię[email protected] kraju”. Jeśli użyjesz ich takimi, jakie są w swoim modelu, każda osoba będzie charakteryzować się unikalnym adresem e-mail, więc nie powie nam to wiele. Powiedziałby nam tylko, że jeden e-mail może należeć do innej osoby niż inny. Dzięki inżynierii funkcji z takich adresów można uzyskać informacje o możliwej płci (imię i nazwisko), pochodzeniu rodzinnym i pochodzeniu etnicznym (nazwisko), narodowości (domenie) i wielu innych - daje to całkiem sporo informacji, prawda?

Tim
źródło
1

Co próbujesz osiągnąć za pomocą swojej „funkcji” ogółem ? Jeśli tylko porównujesz bohaterów, atak i obrona mogą być bardziej przydatne. Jeśli uznasz, że typ kompilacji (jak zorientowany ofensywnie w porównaniu z defensywnym) jest przydatny, być może bardziej przydatny byłby atak / obrona . A może MyAttack - YourDefense jest bardziej przydatny.

To naprawdę zależy od twojego celu i sprowadza się do tego, że wstrzykujesz dodatkową wiedzę do problemu, abyś mógł uzyskać lepsze odpowiedzi. Być może słyszeliście ludzie rzucając wokół zalogować i kwadratu i stosunek i wszelkiego rodzaju sposoby można zrobić funkcje, ale w dolnej linii jest to, że „użyteczne” polega na zadaniu pod ręką i polega na przekształcaniu danych masz w domenie, w której decyzje są prostsze.

Wayne
źródło