Regresja liniowa przy użyciu metody gradientu opadania [wyjaśniona za pomocą przykładu kodowania]
Opublikowany: 2020-12-21Uczenie maszynowe wciąż krąży, bez względu na to, czy aspirujesz do bycia programistą, naukowcem danych czy analitykiem danych. Aby podjąć poważne wysiłki w regresji liniowej, musisz dobrze znać Pythona. Rozpoczęcie początkowej fazy może być żmudnym zadaniem, ten artykuł pomoże ci dokładniej zrozumieć regresję.
Metoda opadania gradientu jest wybierana w różnych iteracjach ze względu na techniki optymalizacji, które ma do zaoferowania. Dzięki algorytmowi możliwe jest zmniejszenie rozmiaru np. regresji logistycznej i sieci neuronowej. Zanim zaczniemy od gradientu, spójrzmy tylko na regresję liniową.
Przeczytaj: Algorytmy uczenia maszynowego dla nauki o danych
Spis treści
Co to jest regresja liniowa?
Jest to podejście liniowe stosowane do modelowania relacji między zmienną zależną a jedną lub kilkoma zmiennymi niezależnymi. Zależność liniowa między takimi zmiennymi byłaby wyrażona w formacie równania ay= mx+b.
Jest to monitorowany algorytm uczenia maszynowego, który zwiększy swoją krzywą uczenia się od danej zmiennej zależnej x i y jako drugiej odpowiedzialnej za wywołanie efektu. Ta natura pomaga przewidzieć wartości i współczynniki pewności dla x i y.
Co to jest zejście gradientowe?
Zastosowanie regresji gradientowej polega na optymalizacji algorytmu służącego do znajdowania wartości wymaganych parametrów funkcji, co pozwala bezpośrednio zminimalizować koszt funkcji.

Pozwól nam zrozumieć koncepcję ze scenariuszem, wyobraź sobie, że chcesz zejść do fortu w ciemnym otoczeniu. Podczas tego załóżmy, że jesteś całkowicie upośledzony i musisz pokonać najkrótszą i najłatwiejszą odległość, aby zejść w dół. Zejście gradientowe będzie zasobem używanym do znalezienia zoptymalizowanego sposobu dotarcia do celu. Przy podstawowym wejściu kierunkowym algorytm byłby w stanie wykreślić i zasugerować najlepszą trasę.
Gradient jest jednym z najczęściej używanych i powszechnie akceptowanych algorytmów w uczeniu maszynowym. Uważa się również, że stanowi podstawę do opanowania uczenia maszynowego na wcześniejszych etapach.
Dla lepszego przybliżenia gradientu spróbujmy zaimplementować go kodem w próbce, pracując na pythonie za pomocą NumPy.
z importu NumPy *
# y = mx + b
# m to nachylenie, b to punkt przecięcia z osią Y
def compute_error_for_line_given_points(b, m, points):
całkowity błąd = 0
dla i w zakresie(0, len(punkty)):
x = punkty[i, 0]
y = punkty[i, 1]
błąd całkowity += (y – (m * x + b)) ** 2
return totalError / float(len(points))
def step_gradient(b_current, m_current, punkty, learningRate):
b_gradient = 0
m_gradient = 0
N = float(len(punkty))
dla i w zakresie(0, len(punkty)):
x = punkty[i, 0]
y = punkty[i, 1]
b_gradient += -(2/N) * (y – ((m_bieżący * x) + b_bieżący))
m_gradient += -(2/N) * x * (y – ((m_bieżący * x) + b_bieżący))
new_b = b_current – (learningRate * b_gradient)
nowy_m = m_bieżący – (współczynnik nauki * m_gradient)
return [nowy_b, nowy_m]
def gradient_descent_runner(punkty, start_b, start_m, tempo_nauki, liczba_iteracji):
b = start_b

m = start_m
dla i w zakresie(liczba_iteracji):
b, m = step_gradient(b, m, array(points), learning_rate)
powrót [b, m]
def uruchom():
punkty = genfromtxt("data.csv", separator="",")
wskaźnik_nauczenia = 0,0001
początkowe_b = 0 # początkowe zgadywanie przecięcia y
Initial_m = 0 # początkowe zgadywanie nachylenia
liczba_iteracji = 1000
print „Rozpoczęcie zniżania gradientu w punkcie b = {0}, m = {1}, błąd = {2}”.format(initial_b, Initial_m, compute_error_for_line_given_points(initial_b, Initial_m, points))
drukuj „W biegu…”
[b, m] = gradient_descent_runner(punkty, początkowe_b, początkowe_m, szybkość_nauki, liczba_iteracji)
print „Po {0} iteracjach b = {1}, m = {2}, błąd = {3}”.format(liczba_iteracji, b, m, compute_error_for_line_given_points(b, m, points))
if __name__ == '__main__':
biegać()
Odniesienie do kodu
Jest to wizualna reprezentacja programu wyszukiwania gradientów, w której problemy są rozwiązywane w regresji liniowej poprzez wykreślenie punktów w jednej linii. Kod jest demonstracją tego, jak to działa i pomaga ustawić kilka punktów wzdłuż linii. Gradient descent próbuje znaleźć najlepsze wartości tych parametrów w odniesieniu do funkcji błędu.
Kod zawiera osobliwą funkcję o nazwie „uruchom”. Pomaga zdefiniować zestaw parametrów wykorzystywanych w algorytmie, aby utworzyć początkowy zestaw przewidywań na podstawie zachowania zmiennych i nachylenia linii. Pozostałe czynniki obejmują liczbę iteracji wymaganych do osiągnięcia spadku gradientu w formacie pokazanym poniżej:
początkowe_b = 0 # początkowe zgadywanie przecięcia y
Initial_m = 0 # początkowe zgadywanie nachylenia
liczba_iteracji = 1000
Możesz łatwo zrozumieć, że metoda Gradientu jest dość prosta i bezpośrednia. Gdy zrozumiesz jego możliwości funkcjonowania, jedyną częścią, na której musisz się skupić, jest koszt funkcji, którą chcesz zoptymalizować.

Celem jest podejmowanie ciągłych wysiłków, aby wykonać różne iteracje dla każdej z wartości zmiennych, oszacować ich koszty i stworzyć nowe zmienne, które zainicjowałyby lepszy i niższy koszt w programie.
Koniecznie przeczytaj: pytania do rozmowy kwalifikacyjnej na temat uczenia maszynowego
Wskazówki dotyczące zejścia gradientowego
1. Szybkość uczenia się
Protokół optymalizacji pomaga zredukować wartość szybkości uczenia się nawet przy mniejszych częściach dziesiętnych, spróbować przetasować różne wartości odpowiednie dla platformy, a następnie wybrać najlepszą wartość roboczą. Uczenie się może być znacznie szybsze i owocniejsze, aby tak się stało, należy ograniczyć liczbę przejść przez każdy zestaw danych. Idealna liczba to od 1 do 10.
2. Średni koszt działki
Czas trenowania dla każdej instancji zestawu danych może spowodować opóźnienie ze względu na dodatkowy czas potrzebny podczas działania algorytmu. Aby uzyskać lepsze wyniki, wybierz średnią powyżej 100 lub 1000, aby uzyskać lepsze szanse na znalezienie lepszego trendu uczenia się algorytmu.
Streszczenie
W tym artykule dowiedziałeś się o gradiencie i tworzeniu takiego algorytmu, co pomaga w precyzyjnym i bardziej efektywnym przewidywaniu za pomocą wyuczonego modelu regresji. Aby zrozumieć na znacznie bardziej wyczerpującym i głębszym poziomie rzeczywiste scenariusze przypadków, zarejestruj się w programie upGrad. Oferujemy wyselekcjonowane kursy specjalnie ustrukturyzowane dla początkujących naukowców zajmujących się danymi i kandydatów do uczenia maszynowego.