Sunteți pe pagina 1din 36

Curs 9

Regresie Lineara multiple


variabile- Multivariate
Slide-uri adaptate după Andrew Ng
Sumar

1. Regresie multivariată
2. Implementare:
• Gradient Descent
• Normal Equation
3. Overfitting, Regularizare
Regresia Liniară Univariată
Regresia Liniară Multivariată

Notații:
m - numărul de randuri (samples) de date de antrenare – training set
(x(i),y(i)) – index in setul de date de antrenare, al i-lea rand i=1,2, 3...m

n- numărul de features (variabile )


xj(i) – valoarea pentru variabila j din i-lea sample (rand)
Regresie Liniară Multivariată

Funcția ipoteza cu multiple features (variabile) :

Conventie x0(i) =1 pentru i =1,2,3….m astfel incat sa avem acelasi numar


de elemente n+1 in ambii vectori x si θ (indexarea incepe de la 0)
Regresie Liniară Multivariată

θ este vectorul parametrilor modelului continand θ0 (bias term) si


θ1 pana la θn (feature weights)

x este o instanta a vectorului variabilelor / feature vector, continand


x0 =1 (intotdeauna) si x1 pana la xn

θ · x este produsul scalaor/ dot product intre vectorii θ si x

hθ este functia ipoteza, folosind parametrii θ ai modelului


Regresie Liniară Multivariată

Avem modelul de regresie liniară, dar cum îl antrenăm?

Antrenarea unui model înseamnă stabilirea parametrilor acestuia


astfel încât modelul să se potrivească cel mai bine setul de date de
antrenament.

Stabilim o măsură a performanței - cât de bine (sau de rau) modelul se


potrivește cu datele de antrenament. - eroarea pătratică medie (MSE).

Pentru a antrena un model de regresie liniară, avem nevoie să găsim


valoarile lui θ care minimizează MSE
Gradient Descent pentru multiple variabile
Scopul e sa minimizăm Functia de Cost:

Algoritmul Gradient Descent: cât de mult se va schimba funcția de cost


dacă modificam θ j doar puțin - derivată parțială
Gradient Descent pentru o singură variabilă
Algoritmul pentru n=1 (o singura variabila/feature x1(i)):
Gradient Descent pentru multiple variabile
Algoritmul pentru n >= 1 repetam ecuatiile pentru n variabile (features):

Generalizand avem:
Implementare Gradient Descent pentru
multiple variabile – Batch GD
Care e panta (slope) pe care trebuie sa cobor ?

Generalizand pentru n variabile avem:

Avem directia gradientului, daca e in sus mergem in sens opus.


Folosim intreg setul de date sa calculam gradientul la fiecare pas
θnext step = θ - α
Stochastic Gradient Descent
Se alege aleator o instanță din setul de antrenament și la fiecare pas se
calculează gradienții bazandu-ne numai pe acea singură instanță.
Avantaj: Rapid si se poate antrena pe un set foarte mare de date.

Dezavantaj: funcția de cost în loc să scadă graduat până când ajunge la


minim, va sări în sus și în jos scăzând doar în medie. Va ajunge foarte
aproape de minim, dar tot oscileaza iar valorile finale ale parametrilor sunt
bune, dar nu optime.
Mini Batch Gradient Descent

La fiecare pas in loc sa calculam gradienții bazandu-ne pe intregul set de


antrenare (ca in Batch GD) sau bazandu-ne pe o instanța aleatoare ( ca in
Stochastic GD), Mini-batch GD calculează gradienții bazandu-se pe un set
mic random de instanțe numite mini-batches.

Avantaj: performanța crescută datorită optimizarii hardware

Mini-batch GD va ajunge puțin mai aproape de minim decât Stochastic


GD, dar poate fi mai greu să scape de minimele locale.
Feature Scaling

Verificati ca toate features/variabilele sunt de marimi similare, au


acelasi range de valori x1= size(0-2000 feet2) x2= # dormitoare(1-5)

Ajutam algoritmul să conveargă mai rapid: θ va coborî rapid pe intervale


mici și lent pe intervale mari astfel va oscila ineficient până la global
minimul atunci când variabilele sunt de marimi inegale.
Feature Scaling
Vrem ca algoritmul Gradient Descent sa gaseasca direct minimul
global nu sa oscileaze pe mai multe directii.

Scalarea variabilelor implică împărțirea valorilor de intrare la range


(adică valoarea maximă minus valoarea minimă a variabilei de intrare):
x1= size/2000 si x2 = #dormitoare/5 .

Vrem ca toate features/variabilele sa fie in acelasi interval de valori:

-1 ≤ x(i) ≤ 1 sau -3 ≤ x(i) ≤ 3

Nu asa: -100 ≤ x(2) ≤ 100 sau -0.0001 ≤ x(3) ≤ 0.0001


Mean Normalization
Normalizarea mediei - pentru o variabilă de intrare scădem valoarea
mediei si – poate sa fie range-ul sau deviatia standard

Exemplu: x1= (size-1000) / 2000 sau x2 = (#dormitoare -2) /4

Nu se aplica ptr x0 =1 -0.5 ≤ x(i) ≤ 0.5


α Rata de invatare / Learning rate
Cum alegem hiperparametrul α (marimea pasului) astfel incat sa stim ca
algoritmul Gradient Descent lucreaza corect

α =0.02 α =0.1 α =0.5


α Rata de invatare / Learning rate
Cum alegem hiperparametrul α (marimea pasului) astfel incat sa stim ca
algoritmul Gradient Descent lucreaza corect - scopul e sa minimizam J(θ)

Facem graficul lui J(θ) si numarul de iteratii pe axa x – numarul de


iteratii difera de la aplicatie la aplicatie

Test automat de convergenta: de exemplu daca intr-o iteratie J(θ)


descreste mai putin de un ε =10-3. Greu de ales ε.

α destul de mic J(θ) trebuie sa descreasca la fiecrare iteratie.


α nu trebuie sa fie prea mic ptr ca algoritmul va converge prea incet
α Rata de invatare / Learning rate
Daca α e prea mic algoritmul va converge prea incet

Daca α e prea mare J(θ) nu descreste la fiecare iteratie, algoritmul nu


va converge - algoritmul va sari peste valoarea de minim global

Trebuie incercate diverse valori ptr α :

0.001 0.003 0.01 0.03 0.1 0.3 1 ….


Features
Putem combina multiple features/variabilele si obtinem diferite functii
ipoteza

Exemplu : x1 – frontage x2- depth → x (aria)= x1* x2


Regresie Polinomială

Pentru functii mai complicate sau chiar functii neliniare

Atenție la scalarea features/variabilelor !


Regresie Polinomială

Modelul cuadratic nu se potriveste facem alta selectie a variabilelor

Există algoritmi care fac selectia automată a features/variabilelor


Normal Equation

Minimizand functia de cost J(θ) aflam valorile θ :

Gradient Descent metodă iterativă

Normal Equation metoda directă (analitică) closed-form solution

θ =(XTX)-1XTy

θ vector Rn+1

y valorile pe care le prezicem y(1)...y(m)


Exemplu implementare -Normal Equation
La setul de date adaugam o coloana extra ce corespunde lui x0 =1
Construim matricea tuturor features/variabilelor X si vectorul y

X (m, n+1) y (m,1)


Exemplu implementare -Normal Equation

Aplicam formula closed-form solution :

θ =(XTX)-1XTy

Matlab: pinv(X’*X) * X’ * y -pseudoinversa Moore-Penrose inverse

Singular Value Decomposition (SVD)Scikit Learn Linear Regression class

Python: import numpy as np


X_b = [np.ones((100, 1)), X] # adaug x0 = 1 la matricea X
np.linalg.pinv(X_b).dot(y)

Nu avem nevoie sa facem scalarea features/variabilelor


Exemplu implementare -Normal Equation

Medoda cu pinv mai eficienta decat Normal Equation mai ales X TX nu e


inversabila, pinv va fi definita mereu !

Cauze pentru care XTX nu e inversabila (singulară sau degenerată):

-caracteristici redundante, două features/variabile sunt foarte strâns legate


(adică sunt dependente liniar) x1 =feet2 si x2=m2 x1=3.822x2

- prea multe caracteristici (de exemplu, m ≤ n) – trebuie să folosiți


„regularizarea” exemplu: m=10 si n =100

Soluții:
-ștergerea unei caracteristici care este dependentă liniar de alta
-ștergerea uneia sau mai multor caracteristici atunci când există prea multe
caracteristici.
Gradient Descent -Normal Equation
n- numarul de features/variabile m – numar de instante (sample)

Gradient Descent Normal Equation

Trebuie sa alegem/setam α NU trebuie sa alegem/setam α


Necesita multe iterații NU necesita iterații
O (kn2) O(n3) ptr a calcula (X T X)-1
Rapid pentru n > 10 000 Incet pentru n > 10 000
Incet ptr m mare Rapid ptr m mare

X T X (n+1) x (n+1) dublam numarul de features crestem timpul de calcul


Predicțiile sunt facute rapid, nu există o diferență majoră după
antrenament: acești algoritmi sunt foarte asemănători: modelează și fac
predicții exact în același mod.

Algoritmul Normal Equation nu functioneaza pentru Clasificari –


Regresia Logistica va trebui sa folosim Gradient Descent
Supra-ajustarea Overfitting

Underfitting sau High bias - modelul h(θ) prea simplu, prea putini
parametrii sa capteze structura datelor

Overfitting – High variance - modelul h(θ) este prea complex în raport cu


cantitatea datelor de antrenament.

Overfitting - h(θ)se potrivește cu datele disponibile, dar nu generalizează


bine pentru a prezice date noi.
Supra-ajustarea Overfitting

Există două variante pentru a soluționa problema overfitting:

1) Reducem numarul de features/variabile:

- selectăm manual ce features să păstrăm

- folosim un algoritm de selectie automată a modelului

2) Regularizare = constrângerea modelului pentru a-l simplifica

- păstram toate features, dar reducem magnitudinea parametrilor θj


Regularizare

Hiperparametru – parametru al algoritmului de învățare (nu a modelului)


trebuie setat înainte de antrenament și rămâne constant în timpul
antrenamentului.

Hiperparametru – controlează cantitatea de regularizare care trebuie


aplicată în timpul învățării.
Cost Function - Regularizare

Sa evitam overfitting penalizăm parametrii θ3 si θ4 le dam


ponderi/weights foarte mici sa fie apoape 0
Cost Function - Regularizare
Dorim să controlăm toti parametrii modelului θn nu stim care sunt
importanti si care nu mai ales cand avem foarte multe features/variabile

Hiperparametru λ - parametrul de regularizare controleză influen ța


parametrilor asupra modelului ( suma 1..n, nu penalizam θ 0 ) - tinem
parametrii modelului la valori mici, facem modelul cat mai simplu.

Underfit - λ prea mare (penalizam toti θn ramanem doar cu θ0)


Regularizare - Regresie Liniara Gradient Descent

Nu dorim sa penalizăm θ0 îl lăsăm separat:

(1- αλ/m) < 1 la fiecare pas va descreste θj


Regularizare - Regresie Liniara Normal Equation

Formula closed-form solution : θ =(XTX)-1XTy


Adăugam termenul de regularizare : θ =(XTX +λL )-1XTy

L (n+1)x (n+1)
Concluzii Regularizare

O modalitate simplă de a regulariza un model polinomial este


reducerea numărului de grade polinomiale.

Reducem overfitting prin regularizarea modelului (îl constrângem


prin ponderi/weights): cu cât e mai simplu, are mai puține grade de
libertate, cu atât va fi mai greu să fie overfitt.

Trei moduri diferite de a implementa constrângerile ponderilor:

Ridge Regression

Lasso Regression

Elastic Net
Bibliografie

Andrew Ng- Machine learning -Coursera


https://www.coursera.org/learn/machine-
learning/lecture/Ujm7v/what-is-machine-learning

S-ar putea să vă placă și