Rozwiązywanie problemów z regresją za pomocą TensorFlow: głęboka nauka
Dowiedz się, jak zbudować i dostroić sztuczną sieć neuronową za pomocą TensorFlow
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 liniowejPodobnie 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:
- Wstępne przetwarzanie danych.
- Architektura modelu
- Szkolenie i ocena
- 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.
- 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.
- 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.
- 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.
- Wybór cech: Wybranie najważniejszych cech, które będą wykorzystywane do uczenia sieci neuronowej.
- Kodowanie danych: Konwersja zmiennych kategorialnych na zmienne numeryczne, ponieważ maszyny akceptują tylko dane liczbowe jako dane wejściowe.
- 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ą.
Kod ładuje niezbędne biblioteki, w tym pandas
, MinMaxScaler
make_column_transformer
i 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.
Na koniec transformator jest używany do przekształcania pociągu i danych testowych, a wynikowe przekształcone dane są przechowywane w x_train_transformed
i 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:
- Warstwa wejściowa: ta warstwa przyjmuje dane wejściowe, które mogą mieć postać tensora lub macierzy.
- 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.
- 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 history
zmiennej, która może być wykorzystana do oceny wydajności modelu.
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
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.