Rozwiązywanie problemów z regresją za pomocą TensorFlow: głęboka nauka

May 08 2023
Dowiedz się, jak zbudować i dostroić sztuczną sieć neuronową za pomocą TensorFlow Wprowadzenie Analiza regresji w uczeniu maszynowym to technika używana do przewidywania wartości zmiennej zależnej na podstawie jednej lub kilku zmiennych niezależnych. Jest to nadzorowana technika uczenia się, która wchodzi w zakres modelowania predykcyjnego.

Dowiedz się, jak zbudować i dostroić sztuczną sieć neuronową za pomocą TensorFlow

Autor obrazu: Dall E

Wstęp

Analiza regresji w uczeniu maszynowym to technika używana do przewidywania wartości zmiennej zależnej na podstawie jednej lub więcej zmiennych niezależnych. Jest to nadzorowana technika uczenia się, która wchodzi w zakres modelowania predykcyjnego.

Czy szukasz przewodnika dla początkujących, aby poznać tajniki analizy regresji i masz ochotę ogarnąć te złożone pojęcia matematyczne? Nie bój się, przyjacielu! Napisałem post na blogu, który rozkłada koncepcje w prosty, łatwy do zrozumienia sposób. Więc odłóż filiżankę kawy, chwyć za kalkulator i przygotuj się na nurkowanie w zwariowanym świecie analizy regresji! Nie mogę się doczekać, żeby Cię tam zobaczyć

Podstawy prostej regresji liniowej

Podobnie w uczeniu głębokim modele regresji można budować przy użyciu sieci neuronowych, które są modelami obliczeniowymi naśladującymi sposób działania ludzkiego mózgu. Modele te składają się z wielu warstw połączonych ze sobą neuronów, zwanych perceptronami i razem znanych jako MLP (Multi-Layer Perceptron), które mogą nauczyć się wyodrębniać przydatne funkcje z danych wejściowych i dokonywać dokładnych prognoz.

Podzielę ten krótki wpis na blogu na następujące sekcje:

  1. Wstępne przetwarzanie danych.
  2. Architektura modelu
  3. Szkolenie i ocena
  4. Wniosek.

W dziedzinie uczenia maszynowego etap wstępnego przetwarzania danych odgrywa kluczową rolę w sukcesie modelu. Ten etap obejmuje przygotowanie danych wejściowych do uczenia i testowania modelu. Ten etap obejmuje kilka kroków, takich jak czyszczenie, eksploracja, normalizacja, wybór funkcji, kodowanie, rozszerzanie itp.

  1. Czyszczenie danych: usuwanie wszelkich niekompletnych, nieistotnych lub niedokładnych danych ze zbioru danych. Ma to na celu zapewnienie, że dane wejściowe są wysokiej jakości i nie zawierają żadnych wartości odstających ani błędów, które mogłyby wpłynąć na wydajność sieci neuronowej.
  2. Eksploracja danych: analiza zestawu danych w celu uzyskania wglądu w jego rozmieszczenie i relacje między funkcjami. Ten krok pomaga zidentyfikować wszelkie wzorce lub trendy w danych, które można wykorzystać do poprawy wydajności sieci neuronowej.
  3. Normalizacja danych: skalowanie danych w taki sposób, aby wszystkie cechy miały podobne skale. Jest to ważny krok, ponieważ zapewnia, że ​​sieć neuronowa nie przypisuje nadmiernej wagi cechom, które mają większe wartości.
  4. Wybór cech: Wybranie najważniejszych cech, które będą wykorzystywane do uczenia sieci neuronowej.
  5. Kodowanie danych: Konwersja zmiennych kategorialnych na zmienne numeryczne, ponieważ maszyny akceptują tylko dane liczbowe jako dane wejściowe.
  6. Rozszerzanie danych: Generowanie dodatkowych danych szkoleniowych w celu zwiększenia różnorodności zbioru danych.

Tutaj pominiemy proces eksploracji i czyszczenia danych, aby skupić się na naszym głównym celu. Zamiast tego szybko załadujemy zestaw danych i przygotujemy go do modelu w kilku prostych krokach. Eksploracja i czyszczenie danych to ważne tematy, ale zagłębienie się w nie w tym miejscu zboczyłoby nas z głównego celu. Skoncentrujmy się więc i zaczynajmy ⚡⚡

Do generowania naszego modelu regresji wykorzystamy amerykański zbiór danych dotyczących ubezpieczenia zdrowotnego , który jest często używany do przewidywania kosztów leczenia w oparciu o cechy danej osoby i polisę ubezpieczeniową.

Obraz autorstwa autora: Wstępne przetwarzanie danych

Kod ładuje niezbędne biblioteki, w tym pandas, MinMaxScaler make_column_transformeri OneHotEncoder. Następnie identyfikuje kolumny liczbowe i kategoryczne w zbiorze danych i tworzy transformator kolumnowy ( ct), aby zastosować MinMaxScaler do cech numerycznych i OneHotEncoder do cech kategorycznych.

Obraz autorstwa autora: Transformator kolumnowy

Na koniec transformator jest używany do przekształcania pociągu i danych testowych, a wynikowe przekształcone dane są przechowywane w x_train_transformedi x_test_transformed. Te przekształcone zestawy danych są teraz gotowe do użycia jako dane wejściowe dla sieci neuronowej, która jest kolejnym krokiem w procesie.

Wzorcowa architektura

Architektura modelu odnosi się do struktury sieci neuronowej, która odwzorowuje cechy wejściowe na cechy wyjściowe lub zmienne docelowe. Składa się z wielu warstw neuronów, które wykonują operacje matematyczne na danych wejściowych.

Typowy model architektury regresji będzie miał następujące parametry:

Zdjęcie autora: Typowa architektura regresji MLP
Zdjęcie autora: Warstwy w sieci neuronowej
  1. Warstwa wejściowa: ta warstwa przyjmuje dane wejściowe, które mogą mieć postać tensora lub macierzy.
  2. Warstwy ukryte: Są to warstwy, które wykonują nieliniową transformację danych wejściowych. Liczba warstw ukrytych i liczba neuronów w każdej warstwie będzie zależała od złożoności problemu i ilości dostępnych danych.
  3. Warstwa wyjściowa: Ta warstwa tworzy ostateczną prognozę modelu. W modelu regresji warstwa wyjściowa będzie zazwyczaj miała pojedynczy neuron, który generuje ciągłą wartość.

Tutaj stworzymy prostą sieć neuronową opartą na naszym problemie. Poniższy kod ustawia losowe ziarno, definiuje architekturę modelu z trzema warstwami, kompiluje model z funkcją średniej bezwzględnej utraty błędów i optymalizatorem Adama oraz trenuje model na danych treningowych dla 100 epok. Historia procesu uczenia jest przechowywana w historyzmiennej, która może być wykorzystana do oceny wydajności modelu.

Obraz autorstwa autora: Prosta sieć neuronowa

Używanie model.summary() podsumowuje architekturę modelu w ten sposób

Kształty wejściowe i wyjściowe są krytyczne w architekturze modelu sieci neuronowej, ponieważ określają kształt macierzy wag i odchyleń, których sieć będzie się uczyć podczas uczenia.

Nieprawidłowo ustawione kształty mogą powodować błędy podczas uczenia i przewidywania, a błędy kształtu są najczęstszym rodzajem napotykanych błędów.

Chcesz wzmocnić swoje podstawowe umiejętności? To może być warte przeczytania

Podstawy głębokiego uczenia się

Szkolenie i ocena

Teraz, gdy mamy już skonfigurowaną architekturę modelu, nadszedł czas na wytrenowanie modelu i dokonanie prognoz w celu uzyskania wglądu. Trenujemy

Obraz autorstwa autora: Dopasowanie modelu i Wizualizacja modelu
Obraz autorstwa autora: Dzienniki strat i błędów

Podczas tworzenia modelu ustawiliśmy metryki i można je obliczyć za pomocą wbudowanych funkcji TensorFlow. Zapewnienie prawidłowego kształtu tensorów jest kluczowe, zwłaszcza przy ich porównywaniu.

Niedopasowane tensory, zwłaszcza kształty wejściowe i wyjściowe, mogą prowadzić do wielu błędów. Chociaż nie zawsze jest to konieczne, ważne jest, aby zachować czujność i sprawdzać niedopasowania kształtów.

# Check the tensor shapes
y_test.shape, y_predicted.shape

>>> ((335,), (335, 1))

# Shape after squeeze()
y_predicted.squeeze().shape

>>> (335,)

# Calcuate the MAE
mae = tf.metrics.mean_absolute_error(y_true=y_test, 
                                     y_pred=y_predicted.squeeze())

# Calculate the MSE
mse = tf.metrics.mean_squared_error(y_true=y_test,
                                    y_pred=y_predicted.squeeze())

mae, mse

>>> (<tf.Tensor: shape=(), dtype=float32, numpy=3687.7112>,
     <tf.Tensor: shape=(), dtype=float32, numpy=50863628.0>)

Oto pełny kod do tego

Oprócz tego istnieje kilka metod ulepszania sieci neuronowej, takich jak zwiększanie liczby warstw w celu jej pogłębienia, zwiększenie liczby ukrytych jednostek w celu jej poszerzenia oraz dostosowanie szybkości uczenia się. Te parametry, które mogą być dostosowywane przez ludzi, są znane jako hiperparametry, a proces znajdowania najbardziej odpowiednich hiperparametrów jest znany jako dostrajanie hiperparametrów. Ta praktyka jest szeroko stosowana w głębokim uczeniu się w celu optymalizacji wydajności sieci neuronowych.
Pozostawiam to tobie do eksperymentowania z różnymi podejściami i rozwijania własnego zrozumienia.

Dokąd się stąd udać?

Aby uzyskać pełniejsze zrozumienie, polecam utworzenie niestandardowego zestawu danych i eksperymentowanie z hiperparametrami. Jednym ze sposobów jest utworzenie listy liczb i zastosowanie do niej niestandardowej funkcji generującej, wprowadzenie odchyleń i wykorzystanie wynikowych wartości jako zmiennej docelowej. Następnie wprowadź ten zestaw danych do sieci neuronowej i dostosuj go, aby poprawić dokładność.

Stworzyłem obszerne repozytorium dla TensorFlow, które regularnie aktualizuję o eksperymenty i przykłady. Zapraszam do współpracy w tej przestrzeni

Wniosek

Budowa wydajnego modelu regresji przy użyciu TensorFlow nie jest łatwym zadaniem, ale przy użyciu odpowiednich narzędzi i technik jest to możliwe. W tym blogu zbadaliśmy, jak wstępnie przetwarzać dane, definiować architekturę głębokiej sieci neuronowej, trenować model i oceniać jego wydajność. Dzięki tym umiejętnościom będziesz w stanie budować modele regresji dla szerokiego zakresu problemów i zestawów danych. Pamiętaj, że praktyka czyni mistrza, więc eksperymentuj i udoskonalaj swoje modele, aż osiągniesz pożądany poziom dokładności i wydajności.

I na tym kończymy ten wpis na blogu . Gratulacje

Mam nadzieję, że udało mi się rozwikłać kilka modnych haseł dotyczących architektury modelu regresji przy użyciu MLP (Multi-Layer Perceptron). Jeśli masz jakieś pytania lub coś mi tu umknęło pisz śmiało w sekcji komentarzy.

Spróbuję przedstawić więcej koncepcji uczenia maszynowego/nauki o danych i spróbuję rozbić fantazyjnie brzmiące terminy i koncepcje na prostsze.

Mam nadzieję, że podobał Ci się ten artykuł! Możesz śledzić mnie Afaque Umer, aby uzyskać więcej takich artykułów.

Dziękujemy za przeczytanie Ucz się dalej Udostępniaj dalej Bądź niesamowity