Documente Academic
Documente Profesional
Documente Cultură
Noțiuni de Statistică
Statistica
Studiul fenomenelor si parametrilor variabili
Ex.: din testarea unui vaccin pe un lot de voluntari se trag concluzii care
trebuie sa fie valabile pentru intreaga populatie.
Eșantionarea / Sampling
caracter aleator:
indivizii din eşantion sunt selectaţi aleator;
fiecare membru al populaţiei are o şansă cunoscută, dar posibil ne-
egală de a fi inclus în eşantion.
caracter independent:
un eşantion nu trebuie să afecteze sau să fie afectat de alte eşantioane
selectate din cadrul populaţiei ţintă, sau a altor populaţii.
Eșantionarea / Sampling
Metode de obtinere a esantioanelor:
Proprietăți:
Media aritmetica este influentata de valorile extreme
Exemplu: (0+1+1+2+9)/5 Atenție la outliers!
Suma diferentelor dintre valorile individuale ale esantionului si medie
este totdeauna zero!
Tendinte Centrale - Measures of center
Median –se calculează luând valoarea din mijloc dintr-un set de date
ordonat.
Proprietati:
medianul nu este afectat de valorile extreme
medianul poate fi nereprezentativ pentru distributie daca valorile
individuale nu se grupeaza in jurul valorii centrale!
Medianul este:
- termenul al (n+1)/2-lea → daca n este impar
- media dintre termenii n/2 si n/2+1 → daca n este par
Median - a 50% valoare a datelor - 50% dintre valori sunt mai mari decât
medianul și 50% sunt mai mici decât medianul - 2nd cuartile (Q2)
Measures of center
O folosim pentru a descrie date categorice sau pentru forma distribu ției
pentru date continue.
IQR = (Q3-Q1)/2
Mod de calcul:
- se ordonează datele
- se calculează:
valoarea mediana a jumătăţii superioare (Q3=UQ: upper cuartile)
valoarea mediana a jumătăţii inferioare (Q1=LQ: lower cuartile)
Tendinte Centrale - Measures of center
Tendinte Centrale - Measures of center
Coeficientul de dispersie cuartil (CDC)/ quartile coefficient of
dispersion(QCD)- măsură a centrului median
Proprietăți:
QCD este independent de unitatile de masura
QCD se foloseste pentru compararea variabilitatii relative a două seturi
de date
Tendinte Centrale - Measures of center
Coeficientul de dispersie cuartil (CDC)/ quartile coefficient of
dispersion(QCD)- măsură a centrului median
Proprietăți:
QCD este independent de unitatile de masura
QCD se foloseste pentru compararea variabilitatii relative a două seturi
de date
Tendinte Centrale - Measures of center
Am văzut multe exemple de statistici descriptive pe care le putem folosi
pentru a rezuma datele prin centru
Tukey plot - Measures of center
Liniile orizontale se extind spre minim si maxim.
Tot ceea ce e in afara acestor limite sunt outliers.
Histograma - date discrete si continue
Cum se calculează:
trebuie definit setul de categorii ("bins") in care sa fie grupate valorile
se adaugă bare cu înălțimi diferite reprezentand numărul de valori pe care
le avem în fiecare bin
Tendinte de variabilitate - Measures of spread
Cum este distribuția noastră, cât de subțire (dispersie îngustă) sau largă
(foarte răspândită)
Distanța dintre cea mai mare valoare (maximă) și cea mai mică valoare
(minimă).
range=max(X) – min(X)
Dezavantaje:
Proprietăți:
CV este independent de unitatile de masura
CV se foloseste pentru compararea variabilitatii relative a două seturi de
date
CV intervine în studiul omogenității unor populații:
= 0 distributie simetrica
> 0 distributie cu coada spre dreapta
< 0 distributie cu coada spre stanga
Boltirea – Kurtosis - date continue
= 0 distributie normala
> 0 distributie mai inalta decat cea normala
< 0 distributie mai joasa
Statistica inferentiala
https://seaborn.pydata.org/
Seaborn
Seaborn
In[]: %pylab
In[]: import seaborn as sns
In[]: import pandas as pd
In[]:fb=pd.read_csv( 'fb_stock2018.csv',
index_col='date',
parse_dates=True)
In[]: qu = pd.read_csv('cutremur.csv')
Fișier de date
Conținutul fișierului fb_stock2018.csv :
Fișier de date
Conținutul fișierului cutremur.csv :
In[]: qu.columns
Index(['mag', 'magType', 'time', 'place', 'tsunami', 'parsed_place'],
dtype='object')
Analizăm datele:
In[]: c=qu.assign(time=lambda x: pd.to_datetime(x.time,
unit='ms')) .set_index('time').loc['2018-09-28'].query('parsed_place ==
"Indonesia" ')
Seaborn - stripplot()
In[]:sns.heatmap(fb.sort_index().assign( log_volume=np.log(fb.volume),
max_abs_change=fb.high – fb.low).corr(), annot=True, center=0,
vmin=-1, vmax=1 )
In[]: sns.pairplot(fb.assign(quarter=lambda x:
x.index.quarter),diag_kind='kde', hue='quarter')
https://seaborn.pydata.org/
Anii 2000
Maşini cu suport vectorial (SVM)
Metode kernel
Modele grafice
Învăţare statistică relaţională
Învăţare prin transfer
Clasificare colectivă şi ieşiri structurate
Aplicaţii pentru sisteme de calcul
▪ Compilatoare
▪ Depanare
▪ Grafică
▪ Securitate (detecţia intruziunilor, viruşilor/viermilor)
Managementul email-ului
Asistenţi personalizaţi care învaţă
Învăţare în robotică şi vedere artificială
Istoric ML în domeniu Medical
Anii 1970 (Stanford): MYCIN sistem expert - identificarea bacteriilor ce
produc infecții severe. A propus o terapie mai buna in 69% din cazuri
Istoric ML în domeniu Medical
Anii 1980(Univ of Pittsburgh):INTERNIST-1/Quick Medical Reference
model probabilistic - diagnostic pentru medicina internă
570
variabile binare ptr boli
4,075
variabile binare ptr simptome
45,470
muchii directe
Model : liniar
Parametrii modelului:valori numerice ce descriu locația si orientarea liniei
Training the model: aflarea valorilor optime ale parametrilor modelului
din date= (“learning” din machine learning)
Predicție: generalizare - date noi, avem modelul si stabilim clase(etichete)
Algoritmi de Clasificare
Decision Trees
Random Forests
Exemple ML - Regresie
Regresie liniară
Regresie logistică
Exercițiu
k-Means Clustering
Spectral Clustering
Algoritmi Reducerea Dimensionalitații
1. Reprezentarea modelului
2. Functia de cost (Cost Function)
3. Gradient Descent
Regresie Liniară
Regresia liniară - pe baza unei valori de intrare prezicem o valoare reală
ca valoare de ieșire (output).
Notații:
x - input -variabile de intrare / features
y – output -variabila de iesire / target
X - spatiul variabilelor de intrare
Y – spatiul varialilelor de iesire X=Y=R(numere reale)
m - numărul de randuri (samples) de date de antrenare – training set
(x, y) – un singur rand
(x(i),y(i)) – index in setul de date de antrenare, al i-lea rand i=1,2, 3...m
Regresia – curve fitting
Regresia este o parte centrală a învățării automate (machine learning).
Maximum Error – l∞
min ( h Θ(x) – y ) 2
Θ 0 , Θ1
Cost Function
Trebuie sa rezolvam problema de minimizare ptr toate valorile (x (i),y(i))
din setul de date de intrare de dimensiune m:
Hypothesis Function:
Parametrii:
Functia de Cost :
Scop:
Ipoteza simplificată doar Θ1
Contur plots:
Functia de cost J(Θ0,Θ1) are aceeasi valoare pe aceste elipse
Valoarea minima a lui J(Θ0,Θ1) este elipsa centrala, cea mai mica
Contur plots:
Consideram un punct pe a 3a elipsa- pct rosu: Θ0=350 si Θ1=0 – e un pct de
pe h(x) – nu e o predictie buna ptr setul de date
Valoarea functiei de cost J(Θ0,Θ1) e mai aproape de centru – se reduce
eroarea functiei de cost.
Ipoteza completă – Θ0 si Θ1
Contur plots:
Consideram un punct pe a 3a elipsa- pct rosu: Θ0=240 si Θ1=0.13 – e un
pct de pe h(x) – e o predictie buna
Gradient Descent
( minimizează alte functii, nu doar modelul regresiei liniare )
Algoritm general.
Algoritm:
Θ0 si Θ1 se modifica simultan
Regresie neliniara-Gradient Descent doar cu Θ1
Facem pasi in directia care se coboara cel mai rapid – minimizam functia
Alfa prea mic – facem pasi prea mici, algoritmul prea lent
Alfa prea mare – facem pasi prea mari, algoritmul nu mai poate gasi
minimul – nu mai converge
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
Generalizand avem:
Implementare Gradient Descent pentru
multiple variabile – Batch GD
Care e panta (slope) pe care trebuie sa cobor ?
θ =(XTX)-1XTy
θ vector Rn+1
θ =(XTX)-1XTy
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)
Underfitting sau High bias - modelul h(θ) prea simplu, prea putini
parametrii sa capteze structura datelor
L (n+1)x (n+1)
Concluzii Regularizare
Ridge Regression
Lasso Regression
Elastic Net
Bibliografie
Scikit Learn
Scikit Learn
Scikit-Learn una din multele biblioteci Python care oferă implementări ale
unei game largi de algoritmi de învățare automată.
In[]:rng= np.random.RandomState(42)
In[]:x = 10 * rng.rand(50)
In[]:y = 2 * x - 1 + rng.randn(50)
In[]:plt.scatter(x, y);
Exemplu Regresie Liniară
1. Alegem o clasă de model importând clasa de estimator adecvată din
Scikit-Learn.
https://scikit-learn.org/stable/modules/linear_model.html
In[]: model.fit(X, y)
In[]: plt.scatter(x, y)
In[]: plt.plot(xfit, yfit)
Exemplu Regresie Polinomială
Eroarea de generalizare:
este mică - modelul face puține greșeli la setul datelor de antrenare.
este mare - modelul face overfitt pe setul datelor de antrenare.
Testarea și Validarea Modelului
Ezităm între două tipuri de modele ( un model liniar și unul polinomial):
cum putem decide ? Le antrenăm pe ambele și compară cât de bine se
generalizează folosind setul de testare.
accuracy_score(y2, y2_model)
Out[]: 0.90666666666666662
Testarea și Validarea Modelului
Folosim cross-validation multe seturi de validare mai mici
Se face o succesiune de fit() unde fiecare subset de date este folosit atât ca
set de antrenare cât și ca set de validare. Exemplu :two-fold cross-
validation
https://scikit-learn.org/stable/modules/cross_validation.html
Vrem sa aflam care e gradul polinomului care va aproxima cel mai bine
un anumit set de date.
Curba de Validare – Model Polinomial
Polinomul de grad 3 va modela cel mai bine acest set de date X, y:
In[]: scatter(X.ravel(), y)
In[]: X_test = np.linspace(-0.1, 1.1, 500)[:, None]
In[]: y_test=PolynomialRegression(3).fit(X,y).predict(X_test)
In[]: plot(X_test.ravel(), y_test)
https://scikit-learn.org/stable/
https://www.statsmodels.org/stable/index.html
https://scikit-learn.org/stable/modules/cross_validation.html
https://scikit-learn.org/stable/modules/learning_curve.html#validation-c
urve
Curs 11
Exemple:
tumori: maligne/benigne
email: spam Da/Nu ?
tranzactii: frauda Da/Nu?
Limita de decizie e linia care separă aria cand y=1 si cand y=0. E creată
de functia ipoteza hθ(x).
θTx ≥ 0 y→ 1
θTx < 0 y→ 0
Limita de decizie – cum aleg θ?
Generalizand avem:
Gradient Descent pentru Regresie Logistică
Este unul dintre cele mai populare modele din Machine Learning.
daca y=1 vrem ca z= θTx >>0 daca y=0 vrem ca z= θTx << 0
Cost1(z) Cost0(z)
Regresie Logistică vs SVM
Regularizare Regresie Logistica - Functia de cost:
A B
Obiectivul: găsirea unui echilibru bun între menținerea străzii cât mai lată
posibil și limitarea încălcării marginilor (cazuri care ajung în mijlocul
străzii sau chiar pe partea greșită) - Soft margin classifier
1. Aleg hiperparametrul C
2. Hotarasc daca aplic kernel sau nu:
- Scalarea features
- Daca da, incerc kernelul Gausssian setez parametrii acestui kernel
- Scriu functia de similaritate care imi va genera automat toate features
1.
Va alegeți un set de date real și antrenați un LinearSVC.
Apoi antrenați un SVC și un SGDClassifier pe același set de date.
Verificați/setați să le faceți să producă aproximativ acelasi model.
2.
Antrenați un clasificator SVM pe setul de date MNIST (dacă folosiți
LinearSVC by default se foloseste algoritmul one-vs-all pentru a
clasifica toate cele 10 cifre). Ce scor de acuratete obtineti?
https://scikit-
learn.org/stable/auto_examples/classification/plot_classifier_compari
son.html#sphx-glr-auto-examples-classification-plot-classifier-
comparison-py
Invățarea nesupervizată
Clustering
Slide-uri adaptate după Andrew Ng
Sumar
Daca avem un centroid cu nici un pct asignat atunci eliminam acest cluster
sau putem reinitializa random acel centroid al clusterului
K – means ptr clustere neseparabile
good_init = np.array([[-3, 3], [-3, 2], [-3, 1], [-1, 2], [0, 2]])
kmeans = KMeans(n_clusters=5, init=good_init, n_init=1)
Cea mai buna solutie, cea mai mica valoare a Functiei de Cost care in
Scikit este parametrul inertia
In[]: kmeans.inertia_
Out[]: 211.59853725816856
Cum alegem numarul de clustere, K ?
k=3 si k=6 “bad ”(coeficient < scorul) instante prea apropiate de alte
clustere
K=4 si k=5 “good” (instantele trec de linia verticala→1) il aleg pe k=5
clusterele au aceeasi dimensiune
Reducerea dimensionalității
Compresia datelor
- reducem reduntanta caracteristicilor
- crestem viteza de calcul al algoritmilor de invatare
Vizualizarea datelor
Reducerea dimensionalității
Date 2D → 1D reducem reduntanta caracteristicilor
Singapore
USA
Eroare de proiectie
In[]: pca.explained_variance_ratio_
Out[]:array([0.84248607, 0.14631839])
X approx = Ureducez
dimensiune Xn = Un x k z k x 1
Cum aleg k - numarul Componentelor Principale
media patratica a erorilor de proiectie / variatia toala a datelor
aleg cel mai mic k care respecta relatia :
https://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_si
lhouette_analysis.html