Tweet Share Share

Last Updated on August 17, 2020

Machine learning predictive modeling performance is only as good as your data, and your data is only as good as the way you prepare it for modeling.

Najczęstszym podejściem do przygotowania danych jest badanie zbioru danych i przegląd oczekiwań algorytmów uczenia maszynowego, a następnie staranny wybór najbardziej odpowiednich technik przygotowania danych w celu przekształcenia surowych danych, aby jak najlepiej spełnić oczekiwania algorytmu. Jest to powolne, kosztowne i wymaga ogromnej wiedzy eksperckiej.

Alternatywnym podejściem do przygotowania danych jest przeszukiwanie siatki zestawów wspólnych i powszechnie użytecznych technik przygotowania danych do surowych danych. Jest to alternatywna filozofia przygotowania danych, która traktuje transformacje danych jako kolejny hiperparametr w potoku modelowania, który ma być przeszukiwany i dostrajany.

To podejście wymaga mniejszej wiedzy niż tradycyjne ręczne podejście do przygotowania danych, chociaż jest kosztowne obliczeniowo. Korzyścią jest to, że może pomóc w odkryciu nieintuicyjnych rozwiązań przygotowania danych, które osiągają dobrą lub najlepszą wydajność dla danego problemu modelowania predykcyjnego.

W tym samouczku dowiesz się, jak korzystać z podejścia wyszukiwania siatki do przygotowania danych z danymi tabelarycznymi.

Po ukończeniu tego samouczka będziesz wiedział:

  • Wyszukiwanie siatki zapewnia alternatywne podejście do przygotowania danych dla danych tabelarycznych, gdzie transformacje są próbowane jako hiperparametry rurociągu modelowania.
  • Jak wykorzystać metodę przeszukiwania siatki do przygotowania danych w celu poprawy wydajności modelu w stosunku do linii podstawowej dla standardowego zbioru danych klasyfikacji.
  • Jak przeszukiwać siatkę sekwencji metod przygotowania danych w celu dalszej poprawy wydajności modelu.

Zacznij swój projekt dzięki mojej nowej książce Data Preparation for Machine Learning, zawierającej samouczki krok po kroku oraz pliki kodu źródłowego Pythona dla wszystkich przykładów.

Zacznijmy.

How to Grid Search Data Preparation Techniques
Zdjęcie autorstwa Wall Boat, pewne prawa zastrzeżone.

Przegląd samouczka

Ten samouczek jest podzielony na trzy części; są to:

  1. Technologia wyszukiwania siatkowego do przygotowania danych
  2. Dataset and Performance Baseline
    1. Wine Classification Dataset
    2. Baseline Model Performance
  3. Podejście do wyszukiwania siatkowego do przygotowania danych

Technologia wyszukiwania siatkowego do przygotowania danych

Przygotowanie danych może stanowić wyzwanie.

To może być skuteczne, ale jest również powolne i może wymagać głębokiej wiedzy z zakresu analizy danych i algorytmów uczenia maszynowego.

Alternatywnym podejściem jest traktowanie przygotowania zmiennych wejściowych jako hiperparametru w potoku modelowania i dostrajanie go wraz z wyborem algorytmu i konfiguracji algorytmu.

To może być transformacja danych, która „nie powinna działać” lub „nie powinna być odpowiednia dla algorytmu”, ale skutkuje dobrą lub świetną wydajnością. Alternatywnie, może to być brak transformacji danych dla zmiennej wejściowej, która jest uważana za „absolutnie wymaganą”, ale skutkuje dobrą lub świetną wydajnością.

Można to osiągnąć poprzez zaprojektowanie siatki wyszukiwania technik przygotowania danych i/lub sekwencji technik przygotowania danych w rurociągach. Może to obejmować ocenę każdej z nich na pojedynczym wybranym algorytmie uczenia maszynowego lub na zestawie algorytmów uczenia maszynowego.

Zaletą tego podejścia jest to, że zawsze skutkuje ono sugestiami dotyczącymi rurociągów modelowania, które dają dobre wyniki względne. Co najważniejsze, może ono odkryć nieoczywiste i nieintuicyjne rozwiązania dla praktyków bez potrzeby posiadania głębokiej wiedzy specjalistycznej.

Możemy zbadać to podejście do przygotowania danych za pomocą działającego przykładu.

Zanim zanurzymy się w działającym przykładzie, najpierw wybierzmy standardowy zbiór danych i opracujmy linię bazową w wydajności.

Want to Get Started With Data Preparation?

Weź teraz udział w moim darmowym 7-dniowym kursie e-mailowym (z przykładowym kodem).

Kliknij, aby się zapisać, a także otrzymać darmową wersję PDF Ebook kursu.

Download Your FREE Mini-Course

Dataset and Performance Baseline

W tej sekcji, najpierw wybierzemy standardowy zestaw danych uczenia maszynowego i ustanowimy linię bazową w wydajności na tym zestawie danych. Zapewni to kontekst do zbadania metody wyszukiwania siatkowego przygotowania danych w następnej sekcji.

Wine Classification Dataset

Użyjemy zestawu danych klasyfikacji wina.

Ten zestaw danych ma 13 zmiennych wejściowych, które opisują skład chemiczny próbek wina i wymaga, aby wino zostało sklasyfikowane jako jeden z trzech typów.

Możesz dowiedzieć się więcej o zbiorze danych tutaj:

  • Zbiór danych o winie (wine.csv)
  • Opis zbioru danych o winie (wine.names)

Nie ma potrzeby pobierania zbioru danych, ponieważ pobierzemy go automatycznie jako część naszych przykładów roboczych.

Otwórz zbiór danych i przejrzyj surowe dane. Poniżej znajduje się kilka pierwszych wierszy danych.

Widzimy, że jest to wieloklasowy problem modelowania predykcyjnego klasyfikacji z numerycznymi zmiennymi wejściowymi, z których każda ma inną wagę.

Poniższy przykład ładuje zbiór danych i dzieli go na kolumny wejściowe i wyjściowe, a następnie podsumowuje tablice danych.

Uruchamiając przykład, widzimy, że zbiór danych został załadowany poprawnie i że istnieje 179 wierszy danych z 13 zmiennymi wejściowymi i jedną zmienną docelową.

1
(178, 13) (178,)

Następnie oceńmy model na tym zbiorze danych i ustalmy bazową wydajność.

Podstawowa wydajność modelu

Możemy ustalić bazową wydajność w zadaniu klasyfikacji wina, oceniając model na surowych danych wejściowych.

W tym przypadku ocenimy model regresji logistycznej.

Po pierwsze, możemy zdefiniować funkcję do załadowania zbioru danych i wykonać pewne minimalne przygotowanie danych, aby zapewnić, że dane wejściowe są numeryczne, a cel jest zakodowany w etykiecie.

Będziemy oceniać model przy użyciu złotego standardu powtarzanej warstwowej walidacji krzyżowej k-krotnej z 10 fałdami i trzema powtórzeniami.

Możemy następnie wywołać funkcję, aby załadować zbiór danych, zdefiniować nasz model, a następnie ocenić go, zgłaszając średnią i odchylenie standardowe dokładności.

Wiążąc to razem, kompletny przykład oceny modelu regresji logistycznej na surowym zbiorze danych klasyfikacji wina jest wymieniony poniżej.

Wykonanie przykładu ocenia wydajność modelu i raportuje średnią i odchylenie standardowe dokładności klasyfikacji.

Uwaga: Twoje wyniki mogą się różnić ze względu na stochastyczny charakter algorytmu lub procedury oceny, lub różnice w precyzji numerycznej. Rozważ uruchomienie przykładu kilka razy i porównaj średni wynik.

W tym przypadku widzimy, że model regresji logistycznej dopasowany do surowych danych wejściowych osiągnął średnią dokładność klasyfikacji około 95,3 procent, zapewniając bazę w wydajności.

1
Dokładność: 0.953 (0.048)

Następnie zbadajmy, czy możemy poprawić wydajność, stosując podejście do przygotowywania danych oparte na wyszukiwaniu siatkowym.

Podejście do przygotowywania danych oparte na wyszukiwaniu siatkowym

W tej sekcji możemy zbadać, czy możemy poprawić wydajność, stosując podejście do przygotowywania danych oparte na wyszukiwaniu siatkowym.

Pierwszym krokiem jest zdefiniowanie serii rurociągów modelowania do oceny, gdzie każdy rurociąg definiuje jedną (lub więcej) technik przygotowania danych i kończy się modelem, który przyjmuje przekształcone dane jako dane wejściowe.

Zdefiniujemy funkcję do tworzenia tych rurociągów jako listy krotek, gdzie każda krotka definiuje krótką nazwę rurociągu i sam rurociąg. Ocenimy szereg różnych metod skalowania danych (np. MinMaxScaler i StandardScaler), transformacje dystrybucji (QuantileTransformer i KBinsDiscretizer), jak również transformacje redukcji wymiarowości (PCA i SVD).

Możemy następnie wywołać tę funkcję, aby uzyskać listę transformacji, a następnie wyliczyć każdą z nich, oceniając ją i raportując wydajność po drodze.

Pod koniec działania możemy utworzyć wykres pudełkowy i wąsowy dla każdego zestawu wyników i porównać rozkłady wyników wizualnie.

1
2
3
4

# plot the result
pyplot.boxplot(results, labels=names, showmeans=True)
pyplot.show()

Wiążąc to razem, poniżej znajduje się kompletny przykład technik przygotowania danych do przeszukiwania siatki na zbiorze danych klasyfikacji wina.

Przebieg przykładu ocenia wydajność każdego potoku i raportuje średnią i odchylenie standardowe dokładności klasyfikacji.

Uwaga: Twoje wyniki mogą się różnić, biorąc pod uwagę stochastyczny charakter algorytmu lub procedury oceny, lub różnice w precyzji numerycznej. Rozważ uruchomienie przykładu kilka razy i porównaj średni wynik.

W tym przypadku widzimy, że standaryzacja zmiennych wejściowych i zastosowanie transformaty kwantylowej pozwala uzyskać najlepszy wynik z dokładnością klasyfikacji około 98.7 procent, co stanowi poprawę w stosunku do linii bazowej bez przygotowania danych, która osiągnęła dokładność klasyfikacji 95,3 procent.

Możesz dodać własne potoki modelowania do funkcji get_pipelines() i porównać ich wynik.

Czy możesz uzyskać lepsze wyniki?
Daj mi znać w komentarzach poniżej.

1
2
3
4
5
6

>norm: 0.976 (0.031)
>std: 0.987 (0.023)
>quan: 0.987 (0.023)
>kbins: 0.968 (0.045)
>pca: 0.963 (0.039)
>svd: 0.953 (0.048)

Tworzony jest rysunek przedstawiający wykresy pudełkowe i wiskerowe, które podsumowują rozkład wyników dokładności klasyfikacji dla każdej techniki przygotowania danych. Widzimy, że rozkład wyników dla standaryzacji i transformacji kwantylowej jest zwarty i bardzo podobny oraz posiada wartość odstającą. Widzimy, że rozkład wyników dla innych transformat jest większy i skośny w dół.

Wyniki mogą sugerować, że standaryzacja zbioru danych jest prawdopodobnie ważnym krokiem w przygotowaniu danych i powiązanych transformat, takich jak transformata kwantylowa, a być może nawet transformata potęgowa może oferować korzyści, jeśli jest połączona ze standaryzacją poprzez uczynienie jednej lub więcej zmiennych wejściowych bardziej gaussowskimi.

Box and Whisker Plot of Classification Accuracy for Different Data Transforms on the Wine Classification Dataset

Możemy również zbadać sekwencje transformacji, aby sprawdzić, czy mogą one zaoferować podniesienie wydajności.

Na przykład, możemy chcieć zastosować selekcję cech RFE po transformacji normalizacyjnej, aby sprawdzić, czy te same lub lepsze wyniki mogą być użyte przy mniejszej liczbie zmiennych wejściowych (e.

Możemy również chcieć sprawdzić, czy transformata potęgowa poprzedzona transformatą skalowania danych może osiągnąć dobrą wydajność na zbiorze danych, ponieważ uważamy, że może, biorąc pod uwagę sukces transformaty kwantylowej.

Zaktualizowana funkcja get_pipelines() z sekwencjami transformat jest podana poniżej.

Wiążąc to razem, kompletny przykład znajduje się poniżej.

Uruchomienie przykładu ocenia wydajność każdego potoku i raportuje średnią i standardowe odchylenie dokładności klasyfikacji.

Uwaga: Twoje wyniki mogą się różnić biorąc pod uwagę stochastyczną naturę algorytmu lub procedury oceny, lub różnice w precyzji numerycznej. Rozważ uruchomienie przykładu kilka razy i porównaj średni wynik.

W tym przypadku widzimy, że standaryzacja z selekcją cech oferuje dodatkowe podniesienie dokładności z 98,7 procent do 98,9 procent, chociaż skalowanie danych i transformata potęgowa nie oferują żadnych dodatkowych korzyści w stosunku do transformaty kwantylowej.

1
2

>std: 0.989 (0.022)
>moc: 0.987 (0.023)

Tworzony jest rysunek przedstawiający wykresy pudełka i węża, które podsumowują rozkład wyników dokładności klasyfikacji dla każdej techniki przygotowania danych.

Widzimy, że rozkład wyników dla obu potoków przekształceń jest zwarty z bardzo małym rozrzutem poza wartościami odstającymi.

Box and Whisker Plot of Classification Accuracy for Different Sequences of Data Transforms on the Wine Classification Dataset

Further Reading

Ta sekcja zawiera więcej zasobów na ten temat, jeśli chcesz się zagłębić.

Książki

  • Feature Engineering and Selection, 2019.
  • Feature Engineering for Machine Learning, 2018.

APIs

  • sklearn.pipeline.Pipeline API.

Podsumowanie

W tym samouczku dowiedziałeś się, jak używać metody przeszukiwania siatki do przygotowania danych z danymi tabelarycznymi.

W szczególności dowiedziałeś się:

  • Przeszukiwanie siatki zapewnia alternatywne podejście do przygotowania danych dla danych tabelarycznych, gdzie transformacje są próbowane jako hiperparametry potoku modelowania.
  • Jak wykorzystać metodę przeszukiwania siatki do przygotowania danych w celu poprawy wydajności modelu w stosunku do linii podstawowej dla standardowego zbioru danych klasyfikacji.
  • Jak przeszukiwać sekwencje metod przygotowania danych w celu dalszej poprawy wydajności modelu.

Czy masz jakieś pytania?
Pytania zadawaj w komentarzach poniżej, a ja dołożę wszelkich starań, aby na nie odpowiedzieć.

Get a Handle on Modern Data Preparation!

Prepare Your Machine Learning Data in Minutes

….z zaledwie kilkoma liniami kodu Pythona

Odkryj jak w moim nowym Ebooku:
Przygotowanie danych do uczenia maszynowego

Zawiera on samouczki z pełnym kodem roboczym na temat:
Wyboru cech, RFE, Czyszczenia danych, Transformacji danych, Skalowania, Redukcji wymiarowości i wiele więcej…

Bring Modern Data Preparation Techniques to
Your Machine Learning Projects

See What’s Inside

Tweet Share Share Share

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.