Regresia liniară folosind metoda de coborâre a gradientului [explicată cu un exemplu de codificare]

Publicat: 2020-12-21

Învățarea automată este încă în plină desfășurare, indiferent dacă aspirați să fiți dezvoltator de software, cercetător de date sau analist de date. Pentru a depune eforturi serioase în regresia liniară, trebuie să cunoașteți bine Python. A începe o fază inițială ar putea fi o sarcină obositoare, acest articol vă va ajuta să înțelegeți mai bine regresia.

Metoda de coborâre a gradientului este optată în diverse iterații datorită tehnicilor de optimizare pe care le are de oferit. Cu algoritmul, este posibil să se reducă dimensiunea, de exemplu, regresia logistică și rețeaua neuronală. Înainte de a începe cu gradient, să aruncăm o privire asupra regresiei liniare.

Citiți: Algoritmi de învățare automată pentru știința datelor

Cuprins

Ce este regresia liniară?

Este abordarea liniară care se adoptă către modelarea relației dintre o variabilă dependentă și una sau mai multe variabile independente. Relația liniară dintre astfel de variabile ar fi exprimată în formatul ecuației ay= mx+b.

Este un algoritm de învățare automată monitorizat care își va îmbunătăți curba de învățare de la o anumită variabilă dependentă de x și y ca celălalt responsabil pentru producerea unui efect. Această natură ajută la prezicerea valorilor și a factorilor de certitudine pentru x și y.

Ce este Gradient Descent?

Utilizarea regresiei gradient implică optimizarea algoritmului utilizat pentru a găsi valorile parametrilor necesari unei funcții, ceea ce permite minimizarea directă a costului unei funcții.

Să înțelegem conceptul cu un scenariu, imaginați-vă că doriți să coborâți într-un fort într-o zonă întunecată. În acest timp, să presupunem că sunteți complet handicapat și trebuie să veniți cu cea mai scurtă și mai ușoară distanță pentru a reveni. Coborârea în gradient va fi resursa folosită pentru a afla modalitatea optimizată de a ajunge la destinație. Cu o intrare direcțională de bază, algoritmul ar fi posibil să creeze diagrame și să sugereze cea mai bună rută.

Gradientul este unul dintre algoritmii cei mai folosiți și acceptați pe scară largă în învățarea automată; se consideră, de asemenea, că pune bazele stăpânirii învățării automate în etapele anterioare.

Pentru o mai bună aproximare a gradientului să încercăm să-l implementăm cu un cod într-un eșantion, lucrând pe python cu ajutorul lui NumPy.

din importul NumPy *

# y = mx + b

# m este panta, b este intersecția cu y

def compute_error_for_line_given_points(b, m, points):

totalError = 0

pentru i în interval (0, len(puncte)):

x = puncte[i, 0]

y = puncte[i, 1]

totalError += (y – (m * x + b)) ** 2

return totalError / float(len(puncte))

def step_gradient(b_current, m_current, points, learningRate):

b_gradient = 0

m_gradient = 0

N = float(len(puncte))

pentru i în interval (0, len(puncte)):

x = puncte[i, 0]

y = puncte[i, 1]

b_gradient += -(2/N) * (y – ((m_curent * x) + b_curent))

m_gradient += -(2/N) * x * (y – ((m_curent * x) + b_curent))

new_b = b_current – ​​(learningRate * b_gradient)

new_m = m_current – ​​(learningRate * m_gradient)

return [new_b, new_m]

def gradient_descent_runner(puncte, starting_b, starting_m, learning_rate, num_iterations):

b = start_b

m = starting_m

pentru i în interval (număr_iterații):

b, m = step_gradient(b, m, array(puncte), learning_rate)

întoarcere [b, m]

def run():

puncte = genfromtxt(“data.csv”, delimiter =”,”)

rata_învățare = 0,0001

initial_b = 0 # estimarea inițială a intersecției cu y

initial_m = 0 # estimarea pantei initiale

num_iterations = 1000

printează „Începe coborârea gradientului la b = {0}, m = {1}, eroare = {2}”.format(initial_b, initial_m, compute_error_for_line_given_points(initial_b, initial_m, points))

tipăriți „Alerg...”

[b, m] = gradient_descent_runner(puncte, initial_b, initial_m, learning_rate, num_iterations)

tipăriți „După {0} iterații b = {1}, m = {2}, eroare = {3}”.format(num_iterations, b, m, compute_error_for_line_given_points(b, m, points))

if __name__ == '__main__':

alerga()

Cod de referință

Aceasta este o reprezentare vizuală a programului de căutare gradient în care problemele sunt rezolvate în regresia liniară prin trasarea punctelor pe o singură linie. Codul este o demonstrație a modului în care funcționează și ajută la setarea mai multor puncte de-a lungul unei linii. Coborârea în gradient încearcă să găsească cele mai bune valori pentru acești parametri referitor la o funcție de eroare.

Codul conține o funcție particulară etichetată „run”. Ajută la definirea unui set de parametri utilizați în algoritm pentru a face un set inițial de predicții bazate pe comportamentul variabilelor și panta liniei. Ceilalți factori implică numărul de iterații necesare pentru a realiza coborârea gradientului în formatul prezentat mai jos:

initial_b = 0 # estimarea inițială a intersecției cu y

initial_m = 0 # estimarea pantei initiale

num_iterations = 1000

Puteți ajunge cu ușurință la înțelegerea faptului că metoda Gradient este destul de simplă și directă. Odată ce înțelegeți abilitățile sale de funcționare, atunci singura parte pe care trebuie să vă concentrați este costul funcției pe care sunteți interesat să o optimizați.

Scopul este de a depune eforturi continue pentru a face iterații diferite pentru fiecare dintre valorile variabilelor, pentru a evalua costurile acestora și pentru a crea noi variabile care să inițieze un cost mai bun și scăzut în program.

Trebuie citit: Întrebări de interviu pentru învățare automată

Sfaturi pentru coborârea în gradient

1. Rata de învățare

Protocolul de optimizare ajută la reducerea valorii ratei de învățare chiar și la zecimale mai mici, încercați să amestecați diferite valori potrivite pentru platformă și apoi să optați pentru cea mai bună valoare de lucru. Învățarea poate fi mult mai rapidă și fructuoasă, pentru a face acest lucru, asigurați-vă că limitați numărul de treceri prin fiecare set de date. Numărul ideal ar fi între 1 și 10.

2. Graficul costului mediu

Timpul de antrenament pentru fiecare instanță de set de date poate provoca o întârziere din cauza timpului suplimentar luat în timpul rulării algoritmului. Pentru rezultate mai bune, alegeți media peste 100 sau 1000 pentru șanse mai bune de a găsi o tendință de învățare mai bună pentru algoritm.

rezumat

În acest articol ați învățat despre gradient și cum să creați un astfel de algoritm, acest lucru vă ajută să faceți predicții precise și mai eficiente cu un model de regresie învățat. Pentru a înțelege la un nivel mult mai cuprinzător și mai profund cu scenarii de caz reale, înscrieți-vă la upGrad. Oferim cursuri organizate special structurate pentru aspiranții cercetători ai datelor și aplicanților de învățare automată.

Conduceți revoluția tehnologică condusă de inteligența artificială

PG DIPLOMĂ ÎN ÎNVĂŢAREA MACHINĂ ŞI INTELIGENTĂ ARTIFICIALĂ
Aflați mai multe