6 najważniejszych technik stosowanych w inżynierii elementów [uczenie maszynowe]

Opublikowany: 2021-03-12

Spis treści

Wstęp

Inżynieria funkcji jest jednym z najważniejszych aspektów każdego projektu z dziedziny nauki o danych. Inżynieria funkcji odnosi się do technik używanych do wyodrębniania i dopracowywania cech z nieprzetworzonych danych. Techniki inżynierii elementów są wykorzystywane do tworzenia odpowiednich danych wejściowych dla modelu i poprawy wydajności modelu.

Modele są szkolone i budowane w oparciu o funkcje, które uzyskujemy z surowych danych, aby zapewnić wymagane dane wyjściowe. Może się zdarzyć, że dane, które posiadamy nie są na tyle dobre, aby model się z nich czegoś nauczył. Jeśli jesteśmy w stanie wyprowadzić cechy, które znajdują rozwiązanie naszego podstawowego problemu, okaże się, że jest to dobra reprezentacja danych. Lepsza jest reprezentacja danych, lepsze dopasowanie modelu i lepsze wyniki będą przedstawiane przez model.

Przepływ pracy dowolnego projektu analizy danych jest procesem iteracyjnym, a nie procesem jednorazowym. W większości projektów analizy danych model podstawowy jest tworzony po utworzeniu i udoskonaleniu funkcji z nieprzetworzonych danych. Po uzyskaniu wyników modelu podstawowego, niektóre istniejące funkcje mogą zostać zmodyfikowane, a niektóre nowe funkcje są również uzyskiwane z danych w celu optymalizacji wyników modelu.

Inżynieria funkcji

Techniki stosowane w procesie inżynierii cech mogą dostarczać wyniki w ten sam sposób dla wszystkich algorytmów i zbiorów danych. Niektóre z typowych technik stosowanych w procesie inżynierii cech są następujące:

1. Transformacja wartości

Wartości funkcji można przekształcić w inne metryki za pomocą parametrów, takich jak funkcja logarytmiczna, funkcja pierwiastka, funkcja wykładnicza itp. Istnieją pewne ograniczenia tych funkcji i mogą nie być używane dla wszystkich typów zestawów danych. Na przykład transformacja pierwiastka lub transformacja logarytmiczna nie może być zastosowana do obiektów zawierających wartości ujemne.

Jedną z najczęściej używanych funkcji jest funkcja logarytmiczna. Funkcja logarytmiczna może pomóc w zmniejszeniu skośności danych, które mogą być przekrzywione w jednym końcu. Transformacja logarytmiczna zwykle normalizuje dane, co zmniejsza wpływ wartości odstających na wydajność modelu.

Pomaga również w zmniejszeniu wielkości wartości w funkcji. Jest to przydatne, gdy używamy niektórych algorytmów, które uznają cechy o większych wartościach za ważniejsze niż inne.

2. Imputacja danych

Imputacja danych odnosi się do uzupełniania brakujących wartości w zbiorze danych pewną wartością statystyczną. Ta technika jest ważna, ponieważ niektóre algorytmy nie działają na brakujących wartościach, co ogranicza nas do korzystania z innych algorytmów lub implikuje brakujące wartości. Preferuje się jej użycie, jeśli odsetek brakujących wartości w funkcji jest mniejszy (około 5 do 10%), w przeciwnym razie doprowadziłoby to do większego zniekształcenia w dystrybucji danych. Istnieją różne metody, aby to zrobić dla cech liczbowych i kategorycznych.

Możemy przypisać brakujące wartości w cechach liczbowych z dowolnymi wartościami w określonym zakresie lub z miarami statystycznymi, takimi jak średnia, mediana itp. Te imputacje muszą być wykonane ostrożnie, ponieważ miary statystyczne są podatne na wartości odstające, które raczej pogorszyłyby wydajność modelu . W przypadku cech kategorialnych możemy przypisać brakujące wartości z dodatkową kategorią, której brakuje w zbiorze danych lub po prostu przypisać je jako brakujące, jeśli kategoria jest nieznana.

To pierwsze wymaga dobrego wyczucia wiedzy dziedzinowej, aby móc znaleźć właściwą kategorię, podczas gdy drugie jest raczej alternatywą dla uogólniania. Możemy również użyć trybu do przypisania cech kategorycznych. Wprowadzanie danych za pomocą trybu może również prowadzić do nadreprezentacji najczęściej występującej etykiety, jeśli brakujące wartości są zbyt liczne.

Dołącz do kursów dotyczących sztucznej inteligencji online z najlepszych światowych uniwersytetów — studiów magisterskich, programów podyplomowych dla kadry kierowniczej oraz zaawansowanego programu certyfikacji w zakresie uczenia się maszynowego i sztucznej inteligencji, aby przyspieszyć swoją karierę.

3. Kodowanie kategoryczne

Jednym z wymagań wielu algorytmów jest to, aby dane wejściowe miały charakter numeryczny. Okazuje się, że jest to ograniczenie w stosowaniu cech kategorycznych w takich algorytmach. Aby przedstawić cechy kategorialne jako liczby, musimy wykonać kodowanie kategorialne. Niektóre z metod konwersji cech kategorycznych na liczby są następujące:

1. Kodowanie „one-hot”: – Kodowanie „one-hot” tworzy nową funkcję, która przyjmuje wartość (0 lub 1) dla każdej etykiety w funkcji kategorycznej. Ta nowa funkcja wskazuje, czy ta etykieta kategorii jest obecna dla każdej obserwacji. Na przykład załóżmy, że w funkcji kategorycznej znajdują się 4 etykiety, a następnie po zastosowaniu kodowania „one-hot” zostaną utworzone 4 funkcje logiczne.

Tę samą ilość informacji można również wydobyć z 3 cechami, tak jakby wszystkie cechy zawierały 0, wtedy wartością cechy kategorycznej byłaby czwarta etykieta. Zastosowanie tej metody zwiększa przestrzeń cech, jeśli w zestawie danych znajduje się wiele cech kategorycznych z dużą liczbą etykiet.

2. Kodowanie częstotliwości: – ta metoda oblicza liczbę lub procent każdej etykiety w elemencie kategorycznym i odwzorowuje ją na tej samej etykiecie. Ta metoda nie rozszerza przestrzeni funkcji zestawu danych. Jedną z wad tej metody jest to, że jeśli dwie lub więcej etykiet ma taką samą liczbę w zestawie danych, dałoby to mapie ten sam numer dla wszystkich etykiet. Doprowadziłoby to do utraty kluczowych informacji.

3. Kodowanie porządkowe: – Znana również jako kodowanie etykiet, ta metoda mapuje różne wartości cechy kategorycznej za pomocą liczby z zakresu od 0 do n-1, gdzie n to odrębna liczba etykiet w funkcji. Ta metoda nie powiększa przestrzeni funkcji zestawu danych. Tworzy jednak relację porządkową w obrębie etykiet w elemencie.

4. Postępowanie z wartościami odstającymi

Wartości odstające to punkty danych, których wartości bardzo różnią się od wartości reszty partii. Aby poradzić sobie z tymi wartościami odstającymi, musimy je najpierw wykryć. Możemy je wykryć za pomocą wizualizacji typu box-plot i scatter-plot w Pythonie lub możemy użyć rozstępu międzykwartylowego (IQR). Rozstęp międzykwartylowy to różnica między pierwszym kwartałem (25. centyl) a trzecim kwartałem (75. centyl).

Wartości, które nie mieszczą się w przedziale (Q1 – 1,5*IQR) i (Q3 + 1,5*IQR) określane są jako wartości odstające. Po wykryciu wartości odstających możemy sobie z nimi poradzić usuwając je ze zbioru danych, stosując jakieś przekształcenia, traktując je jako brakujące wartości, imputując je jakąś metodą itp.

5. Skalowanie funkcji

Skalowanie cech służy do zmiany wartości cech i wprowadzenia ich do określonego zakresu. Ważne jest, aby zastosować ten proces, jeśli używamy algorytmów, takich jak SVM, regresja liniowa, KNN itp., które są wrażliwe na wielkość wartości. Do skalowania funkcji możemy wykonać standaryzację, normalizację, skalowanie min-max. Normalizacja przeskalowuje wartości cechy z zakresu od -1 do 1. Jest to stosunek odejmowania każdej obserwacji i średniej do odejmowania wartości maksymalnej i minimalnej tej cechy. tj. [X – średnia(X)]/[max(X) – min(X)].

W skalowaniu min-maks używa minimalnej wartości cechy zamiast średniej. Ta metoda jest bardzo wrażliwa na wartości odstające, ponieważ uwzględnia tylko wartości końcowe cechy. Standaryzacja przeskalowuje wartości cechy z 0 do 1. Nie normalizuje rozkładu danych, podczas gdy poprzednia metoda to zrobi.

6. Obsługa zmiennych daty i czasu

Natykamy się na wiele zmiennych, które wskazują datę i czas w różnych formatach. Na podstawie daty możemy uzyskać więcej funkcji, takich jak miesiąc, dzień tygodnia/miesiąca, rok, weekend lub nie, różnica między datami itp. Dzięki temu możemy uzyskać bardziej wnikliwe informacje ze zbioru danych. Z funkcji czasu możemy również wyodrębnić informacje takie jak godziny, minuty, sekundy itp.

Jedną z rzeczy, których większość ludzi nie zauważa, jest to, że wszystkie zmienne daty i czasu są funkcjami cyklicznymi. Załóżmy na przykład, że musimy sprawdzić, który dzień między środą (3) a sobotą (7) jest bliższy niedzieli (jest 1). Teraz wiemy, że sobota jest bliżej, ale pod względem liczbowym będzie to środa, ponieważ odległość między 3 a 1 jest mniejsza niż 7 i 1. To samo można zastosować, gdy format czasu jest w formacie 24-godzinnym.

Aby rozwiązać ten problem, możemy wyrazić te zmienne jako reprezentację funkcji sin i cos. W przypadku funkcji „minuty” możemy zastosować funkcję sin i cos za pomocą NumPy, aby przedstawić ją w sposób cykliczny w następujący sposób:

minuta_cecha_sin = np. sin(df['minuta_cecha']*(2*π/60))

minuta_cecha_cos = np. cos(df['minuta_cecha']*(2*π/60))

(Uwaga: dzielenie przez 60, ponieważ w godzinie jest 60 minut. Jeśli chcesz to robić miesiącami, podziel to przez 12 i tak dalej)

Wykreślając te cechy na wykresie punktowym, zauważysz, że cechy te wykazują między sobą cykliczną zależność.

Przeczytaj także: Pomysły i tematy projektów uczenia maszynowego

Wniosek

W artykule skupiono się na znaczeniu inżynierii funkcji, przytaczając kilka popularnych technik stosowanych w procesie inżynierii funkcji. Zależy od algorytmu i dostępnych danych, aby zdecydować, które techniki ze wszystkich wyżej wymienionych zapewniłyby lepszy wgląd.

Ale to naprawdę trudny chwyt i nie można bezpiecznie zakładać, ponieważ zestawy danych mogą być różne, a algorytmy używane do danych również mogą się różnić. Lepszym podejściem jest podążanie za podejściem przyrostowym i śledzenie modeli, które zostały zbudowane wraz z ich wynikami, zamiast lekkomyślnego wykonywania inżynierii funkcji.

Jeśli chcesz dowiedzieć się więcej o uczeniu maszynowym, zapoznaj się z programem IIIT-B i upGrad Executive PG w zakresie uczenia maszynowego i sztucznej inteligencji , który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 450 godzin rygorystycznych szkoleń, ponad 30 studiów przypadków i zadań, IIIT Status -B Alumni, ponad 5 praktycznych praktycznych projektów zwieńczenia i pomoc w pracy z najlepszymi firmami.

Jakie są wady stosowania techniki imputacji danych opartej na medianie?

Przy stosowaniu imputacji średniej powiązania i korelacje między zmiennymi nie są zachowywane. Ale przypisanie średniej utrzymuje średnią obserwowanych danych. W rezultacie, nawet gdyby losowo brakowało wszystkich danych, średnie oszacowanie pozostanie bezstronne. Wariancja przypisanych zmiennych jest redukowana za pomocą imputacji średniej. Imputacja średnia zmniejsza błędy standardowe, co sprawia, że ​​większość testów hipotez i obliczenia przedziałów ufności są niedokładne. W ten sposób błędy typu I są popełniane nieświadomie.

Dlaczego wymagana jest ekstrakcja funkcji?

Wyodrębnianie cech służy do lokalizowania najmniejszego i najbardziej pouczającego zbioru cech (odrębnych wzorców) w celu poprawy efektywności klasyfikatora. Ekstrakcja cech pomaga w redukcji zbędnych danych w zbiorze danych, dzięki czemu nacisk kładzie się tylko na istotne informacje i cechy. Wreszcie redukcja danych ułatwia maszynie opracowanie modelu przy mniejszym nakładzie pracy, a także przyspiesza procesy uczenia się i uogólniania w procesie uczenia maszynowego. Najważniejszym zastosowaniem inżynierii cech jest klasyfikacja sygnałów biomedycznych, gdzie ekstrakcja cech jest ważnym elementem, ponieważ jeśli cechy nie zostaną wybrane starannie, może ucierpieć wydajność klasyfikacji.

Czy są jakieś wady korzystania z techniki ekstrakcji cech?

Ekstrakcja funkcji zawiera kilka nowych funkcji, których zwykli ludzie nie mogą przeczytać ani zrozumieć. Skalowalność to kolejne wyzwanie, przed którym stajemy podczas wyodrębniania funkcji. Jeśli zbiory danych są duże, niektóre techniki wyodrębniania cech nie będą mogły być wykonane. W szczególności niemożliwe byłoby wdrożenie złożonych nieliniowych metod ekstrakcji cech. Większość technik opiera się na jakiejś formie aproksymacji, aby skutecznie poradzić sobie z problemem wyboru cech, który w pewnych sytuacjach nie jest w stanie rozwiązać konkretnego problemu.