Documente Academic
Documente Profesional
Documente Cultură
- o ipoteză alternativă
iar respingerea ipotezei nule se face folosind teste precum Testul t, Chi Square Test
și ANOVA.
Observaţie: Testul Chi Square este mai mult pentru variabilele categoriale, iar
testul t este mai mult pentru variabilele continue. Testul ANOVA este destinat
aplicațiilor complexe.
Analiza de regresie este utilizată pentru a identifica relațiile dintre două sau mai
multe variabile.
Regresiile pot fi
- regresii liniare
sau
- regresii neliniare.
Vizualizarea datelor este tehnica folosită pentru a comunica sau prezenta date
folosind
- grafice;
- diagrame;
- tablouri de bord.
Capitolul 1. Introducere în Analiza Datelor 11
Teoria ce Domeniul
stă la baza analizat/expertizat
Cercetarea
domeniulu statistică
i
li t Data
Science
Matematica Informatica
Machine Procesarea
Analiza de
Learning datelor
condiționalitat
e
Capitolul 1. Introducere în Analiza Datelor 12
Stabilire obiectiv/subobiective
Înțelegerea conceptului de
afacere analizată
Pregătirea datelor
- eliminarea outlieri-lor;
- completarea valorilor lipsă;
- normalizarea datelor;
- standardizarea datelor;
- centrarea datelor etc
Modelarea
Evaluarea rezultatelor
posibile
Implementarea practică
- este folosită pentru a extrage pattern-urile din date textuale (de tip text)
precum
o Twitter;
o postări pe blog;
o feedback-uri primite;
o etc.
- este cunoscută și sub denumirea de Data Mining Text.
- sarcinile de extragere a textului pot consta în
o clasificarea textului;
o gruparea (clusterizarea) textului;
o extragerea de entității;
o analitica textului (Text Analitycs) poate include
analiza sentimentelor (Sentiments Analysis)
marcare parțială a vorbirii;
recunoașterea entității de nume;
analiza legăturilor text.
Preprocesarea textului
(transformarea acestuia)
Învățare
Modelarea supervizată
propriu-zisă
(se cunosc valorile
- descoperirea modelelor;
- extragerea celordesemnificative;
variabilelor ieșire)
- organizarea cunoștințelor.
Validarea modelului
Capitolul 1. Introducere în Analiza Datelor 14
Evaluarea rezultatelor
Posibile/a performanțelor
Implementarea
practică/realizare aplicații
Capitolul 1. Introducere în Analiza Datelor 15
Unitățile de măsură
Parțialitatea informațiilor
Erorile
Capitolul 1. Introducere în Analiza Datelor 16
- reprezintă
o o succesiune de operații de prelucrare și interpretare
o operații efectuate asupra unor informații primare referitoare la
fenomene și procese din realitatea economico-socială
o bazate pe o mare varietate de metode și tehnici specifice
o în scopul
adâncirii cunoașterii comportamentului acestor
fenomene și procese
formulării unor concluzii cu privire la specificitatea
manifestării lor.
Activități:
• formularea ipotezelor cu privire la comportamentul fenomenului ce
constituie obiectul studiului;
• organizarea experimentelor necesare măsurării caracteristicilor
fenomenului studiat;
• culegerea datelor privind comportamentul fenomenului;
• analiza și interpretarea datelor disponibile;
• formularea concluziilor, efectuarea predicțiilor și luarea deciziilor.
Un ciclu de utilizare a Data mining, presupune parcurgerea a patru etape:
Capitolul 1. Introducere în Analiza Datelor 17
Data
mining
Oportunitate Decizie şi
de afaceri acţiune
Evaluare
rezultate
Capitolul 1. Introducere în Analiza Datelor 18
Tabelul 1.1.
Capitolul 1. Introducere în Analiza Datelor 19
Tabelul 1.2.
Capitol suplimentar
Introducere în mediul R
Figura 2.
2 Analiza Datelor în mediul R - teorie şi aplicaţii
4 Analiza Datelor în mediul R - teorie şi aplicaţii
Observație: Nu se tastează >. Acest indicator este folosit doar pentru a indica
unde se pot introduce comenzile.
Pentru a părăsi R, se poate utiliza comanda
> q()
și se apasă apoi Enter.
2
Similar, se poate folosi și Package ‘install.load’ https://cran.r-project.org/
web/packages/install.load/install.load.pdf
Capitol suplimentar Introducere în mediul R 5
6 Analiza Datelor în mediul R - teorie şi aplicaţii
unde file indică numele fișierului în care sunt stocate datele, iar celelalte
argumente au formele specifice menționate. Se poate observa că primul argument,
file, nu conține semnul egal. Aceasta înseamnă că trebuie specificată o valoare
pentru acest argument. Cu un semn egal, argumentul este implicit la valoarea
afișată.
Deci, pentru read.table(), header este un argument opțional, ce va fi
considerat implicit ca header = FALSE, dacă nu este specificat în mod explicit.
- folosirea fișierului de forma txt sau *.txt
După cum este deja cunoscut, Excel oferă multe opțiuni pentru salvarea
seturilor de date, una dintre acestea fiind prin nume fișier delimitat de txt sau *
.txt.
Dacă datele sunt salvate ca atare, se poate utiliza una dintre cele mai ușoare
și generale opțiuni pentru a importa fișierul în R, adică: funcția read.table(),
astfel:
data <- read.table("Book3.txt", header = TRUE)
str(data)
Exemplul 1. Se presupune un fișier numit productia.txt ce conține 10 firme
(liniile din tabel) și trei caracteristici (factori de producție – coloanele: 2-4) și
anume: munca-capital-pamant din combinația cărora se obține producție
(productie - coloana 5):
Nr firma munca capital pamant productie
(1) (2) (3) (4) (5)
1
80 20 8 400
2
100 10 12 600
3
60 30 12 300
4
20 15 9 200
5
40 18 15 460
6
110 14 12 600
7
70 24 10 500
8
90 29 20 570
9
120 19 18 800
10
40 31 14 200
Tabelul 1. Datele aplicației
8 Analiza Datelor în mediul R - teorie şi aplicaţii
[[2]]
[1] "munca" "capital" "pamant" "productie"
Comanda R:
head(productia)
returnează primele șase linii ale datelor stocate:
munca capital pamant productie
1 80 20 8 400
2 100 10 12 600
3 60 30 12 300
4 20 15 9 200
5 40 18 15 460
6 110 14 12 600
în timp ce comanda:
tail(productia)
returnează ultimele șase linii ale datelor stocate:
munca capital pamant productie
5 40 18 15 460
6 110 14 12 600
7 70 24 10 500
8 90 29 20 570
9 120 19 18 800
10 40 31 14 200
Comanda R:
str(productia)
returnează informații despre numărul de observații, numărul de variabile și listează
unele dintre valorile stocate în productia. (indică, de asemenea, modul de
stocare a datelor):
'data.frame': 10 obs. of 4 variables:
$ munca : int 80 100 60 20 40 110 70 90 120 40
$ capital : int 20 10 30 15 18 14 24 29 19 31
$ pamant : int 8 12 12 9 15 12 10 20 18 14
$ productie: int 400 600 300 200 460 600 500 570 800 200
Așa cum a fost cazul comenzii, read.table ce presupune că valorile
stocate într-un fișier de date sunt separate de unul sau mai multe spații, se poate
presupune cazul în care valorile sunt separate de un simbol, să presupunem ; . Din
nou, acest lucru poate fi tratat prin intermediul argumentului sep.
În acest caz, comanda R ar putea fi următoarea:
productia <- read.table ("productia.txt", sep = ";", header =
TRUE)
munca capital pamant productie
1 80 20 8 400
2 100 10 12 300
3 60 30 12 300
4 20 15 9 200
5 40 18 15 460
6 110 14 12 600
7 70 24 10 500
8 90 29 20 570
9 120 19 18 800
10 40 31 14 200
Acum presupunem că unele dintre valorile din fișierul productia
lipsesc și că lipsa valorilor este indicate de M și nu de NA. Argumentul
Capitol suplimentar Introducere în mediul R 9
na.strings poate fi utilizat pentru a indica faptul că valorile lipsă sunt stocate
ca M. În acest caz, datele vor fi citite folosind comanda R:
productia <- read.table("productia.txt", na.strings = "M",
header = TRUE)
munca capital pamant productie
1 80 20 8 400
2 100 10 12 600
3 60 30 12 300
…………………
9 120 19 18 800
10 40 31 14 200
3
Pentru detalii a se vedea http://www.sthda.com/english/wiki/reading-data-from-excel-
files-xls-xlsx-into-r.
10 Analiza Datelor în mediul R - teorie şi aplicaţii
Instalare
install.packages("readxl")
Încărcare
library("readxl")
Utilizarea pachetului readxl
Pachetul readxl vine cu funcția read_excel() pentru a citi fișierele
xls și xlsx.
- Citirea fișierelor xls și xlsx:
# Loading
library("readxl")
# xls files
data <- read_excel("Book1.xls")
# xlsx files
data <- read_excel("Book1.xlsx")
print(data)
# A tibble: 75 x 6
calories protein fat sodium fiber rating
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 70 4 1 130 10 68.4
2 120 3 5 15 2 34.0
3 70 4 1 260 9 59.4
4 50 4 0 140 14 93.7
5 110 2 2 180 1.5 29.5
# ... with 70 more rows
Observație: Codul R anterior, presupune că fișierele "Book1.xls" și "
Book1.xlsx" se află în directorul de lucru curent. Pentru a cunoaște directorul
de lucru curent, se tastează funcția getwd() la consola R.
De asemenea, este posibilă alegerea în mod interactiv a unui fișier,
folosind pentru aceasta funcția file.choose(), care se recomandă, pentru cei
începători în programarea R:
data <- read_excel(file.choose())
Observație: Dacă se utilizează codul R anterior în RStudio, se va cere alegerea
unui fișier.
- Specificarea sheet-ului cu un număr sau un nume
# Specify sheet by its name
data <- read_excel("Book1.xlsx", sheet = "Sheet1")
# A tibble: 75 x 6
calories protein fat sodium fiber rating
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 70 4 1 130 10 68.4
2 120 3 5 15 2 34.0
3 70 4 1 260 9 59.4
……………………………………………
9 90 3 0 210 5 53.3
10 120 1 2 220 0 18.0
# ... with 70 more rows
# Specify sheet by its index
data <- read_excel("Book1.xlsx", sheet = 1)
# A tibble: 75 x 6
calories protein fat sodium fiber rating
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 70 4 1 130 10 68.4
2 120 3 5 15 2 34.0
Capitol suplimentar Introducere în mediul R 11
3 70 4 1 260 9 59.4
……………………………………………………….
9 90 3 0 210 5 53.3
10 120 1 2 220 0 18.0
# ... with 70 more rows
12 Analiza Datelor în mediul R - teorie şi aplicaţii
4
Comenzile read.csv() și read.csv2(), se utilizează după același principiu ca și
comanda read.table
Capitol suplimentar Introducere în mediul R 13
în format .csv, trebuie ales File→Save As, ceea ce oferă opțiunea de a salva
fișierul într-o varietate de formate.
Este de reținut faptul că un fișier .csv poate reprezenta doar o singură
foaie de lucru a unei foi de calcul complexe. În cele din urmă, se impune asigurarea
că se utilizează rândul de sus al foii de lucru (rândul 1) pentru titlurile coloanelor.
În R, se poate utiliza funcția read.csv() pentru a importa date în
format csv. Această funcție are o serie de argumente, dar singurul argument
esențial este file, care specifică locația și numele fișierului.
Spre exemplu, pentru a citi un fișier numit divorce situat în C: se poate
folosi read.csv() cu file.path, astfel:
data <- read.csv(file.path("C:","divorce.csv"))
str(data)
După cum se poate vedea, acest exemplu conține 170 observații la nivel de
variabilă.
Este de reținut faptul că opțiunea implicită este de a converti șirurile de
caractere în factori. Această opțiune implicită de conversie a șirurilor în factori
atunci când se utilizează read.table() poate fi o sursă de confuzie.
De multe ori este mai bine a se importa date care conțin șiruri, în așa fel
încât șirurile să nu fie convertite, ci să rămână vectori de caractere.
Ca urmare, pentru a importa date care conțin șiruri, se recomandă a utiliza
argumentul stringsAsFactors = FALSE pentru read.csv() sau
read.table(), astfel:
data <- read.csv(file.path("C:","Book2.csv, stringsAsFactors
= FALSE"))
str(data)
Observații: 1. Dacă fișierul existent este în format Uniunea Europeană, unde
virgula este utilizată ca separator zecimal, iar punctul ca separator de câmp, atunci
se impune importarea fișierului în R, utilizând funcția read.csv2().
2. O altă problemă comună este citirea în R a datelor care sunt stocate într-
un alt pachet software, cum ar fi SPSS sau EXCEL, spre exemplu. Cea mai ușoară
modalitate de a trata acest aspect este de a stoca mai întâi datele într-un fișier .csv
(SPSS, EXCEL și alte programe software populare au o comandă pentru
îndeplinirea acestui obiectiv). Odată ce acest lucru este realizat, datele pot fi citite
în R folosind comanda read.csv, care este utilizată în același mod ca și
comanda read.table.
Totodată, R poate importa datele într-un cadru de date (dataframe), așa
cum vom putea vedea în continuare.
3. Lucrul cu dataframe în R
14 Analiza Datelor în mediul R - teorie şi aplicaţii
16 Analiza Datelor în mediul R - teorie şi aplicaţii
Eliminarea duplicatelor
Obiectul (fișierul), ca să luăm unul dintre ele, numit productia are acum
toate atributele unui dataframe. Ca urmare, el poate fi rezumat folosind
summary, astfel:
summary(productia)
munca capital pamant productie
Min. : 20.0 Min. :10.00 Min. : 8.00 Min. :200.0
1st Qu.: 45.0 1st Qu.:15.75 1st Qu.:10.50 1st Qu.:325.0
Median : 75.0 Median :19.50 Median :12.00 Median :480.0
Mean : 73.0 Mean :21.00 Mean :13.00 Mean :463.0
3rd Qu.: 97.5 3rd Qu.:27.75 3rd Qu.:14.75 3rd Qu.:592.5
Max. :120.0 Max. :31.00 Max. :20.00 Max. :800.0
Se constată astfel că, valorile variabilelor continue sunt rezumate pe șase
rubrici: una parametrică (media aritmetică) și cinci neparametrice (maxim, minim,
mediana, a 25-a percentilă sau prima cuartilă și respectiv a 75-a percentilă sau a
treia cuartilă). De menționat este și faptul că nivelurile variabilelor categoriale sunt
luate în considerare6.
6
Pentru detalii, a se vedea: Crawley, M.J., 2015, Statistics: An Introduction Using R (2nd
Edition) John Wiley & Sons, Chichester, ISBN 978-1-118-94109-6. 339 pp. USD 45.00
(P). http://www.imperial.ac.uk/bio/research/crawley/statistics/
Capitol suplimentar Introducere în mediul R 17
18 Analiza Datelor în mediul R - teorie şi aplicaţii
Astfel, se pot face mai multe clasificări folosind două sau mai multe
variabile explicative categoriale, sintaxa generică a comenzii R fiind:
aggregate(productia_1[,c(1,2,3,4)],list(Nume_Grup2 =
“denumire variabilă categorială”, Community=tip_firma),mean)
unde Nume_Grup2 = “denumire variabilă categorială” s-ar fi folosit
dacă în exemplul analizat ar fi existat cel puțin o a doua variabilă categorială, pe
lângă tip_firma.
4. Cunoașterea datelor în R
7
Wilcox, R.R., (2016), Understanding and Applying Basic Statistical Methods Using R,
Wiley, ISBN-13: 9781119061397, ISBN-10: 1119061393.
Capitol suplimentar Introducere în mediul R 19
[1] 30
capital[c(1,3,5)] - se accesează primul, al treilea și al cincelea element din
vectorul coloană capital;
[1] 20 30 18
capital[c(-1,-3,-5)] - se accesează toate elementele vectorul coloană
capital, cu excepția elementelor de pe pozițiile 1, 3 și 5;
[1] 10 15 14 24 29 19 31
Următoarele metode utilizează variabile logice care pot fi de ajutor în
manipularea datelor:
capital[capital > 20] - se accesează toate elementele din coloana capital
ce au o valoare mai mare de 20;
[1] 30 24 29 31
capital[capital >= 20] - se accesează toate elementele din coloana
capital având o valoare mai mare sau egală cu 20;
[1] 20 30 24 29 31
capital[capital >= 20 | capital < 19] - se accesează toate elementele
din coloana capital având o valoare mai mare de 20 sau mai mică decât 19;
[1] 20 10 30 15 18 14 24 29 31
capital[abs(capital)> 20 & capital <29] - se accesează toate
elementele din coloana capital care au o valoare mai mare de 20 și o valoare mai
mică de 29;
[1] 24
capital[!is.na(capital)] - se accesează toate elementele din coloana
capital care nu lipsesc;
[1] 20 10 30 15 18 14 24 29 19 31
mean(capital[!is.na (capital)]) - reprezintă o modalitate de a elimina
orice valori lipsă și de a calcula media datelor rămase;
sau o formă echivalentă:
[1] 21
mean(capital, na.rm = TRUE)
[1] 21
which(capital==min(capital)) - indică ce poziție din coloana capital
conține cea mai mică valoare.
[1] 2
20 Analiza Datelor în mediul R - teorie şi aplicaţii
median - mediana;
min - cea mai mică valoare;
max - cea mai mare valoare;
range - determină valorile minimă și maximă;
sd - abaterea standard;
sum - suma aritmetică;
var - varianța/dispersia;
cov - covarianța;
length - indică câte valori sunt stocate într-o variabilă R.
Exemplul 3. Pe baza datelor din Exemplul 2, cu forma extinsă dată de adăugarea
variabilei tip_firma și prezentate în fișierul productia_1 se vor calcula
indicatorii, pe baza funcțiilor prezentate anterior:
productia_1 <- read.table ("productia_1.txt", header = TRUE)
attach(productia_1)
abs(munca)
[1] 80 100 60 20 40 110 70 90 120 40
arâtând că valoarea absolută la nivelul variabilei munca este 120;
exp(munca)
[1] 5.540622e+34 2.688117e+43 1.142007e+26 4.851652e+08 2.353853e+17
[6] 5.920972e+47 2.515439e+30 1.220403e+39 1.304181e+52 2.353853e+17
evidențiind exponențiala fiecărei valori a variabilei munca;
sqrt(munca)
[1] 8.944272 10.000000 7.745967 4.472136 6.324555 10.488088 8.366600
[8] 9.486833 10.954451 6.324555
evidențiind rădăcina pătrată a fiecărei valori a variabilei munca;
cor(munca,capital)
[1] -0.2596955
evidențiind coeficientul de corelație dintre variabilele munca și capital;
mean(munca)
[1] 73
evidențiind media la nivelul variabilei munca;
median(munca)
[1] 75
evidențiind mediana la nivelul variabilei munca;
range(munca)
[1] 20 120
evidențiind valoarea minimă și respectiv maximă la nivelul variabilei munca;
sd(munca)
[1] 33.01515
evidențiind abaterea standard la nivelul variabilei munca;
sum(munca)
[1] 730
evidențiind suma valorilor la nivelul variabilei munca;
var(munca)
[1] 1090
evidențiind varianța/dispersia la nivelul variabilei munca;
cov(munca, capital)
[1] -62.22222
Capitol suplimentar Introducere în mediul R 21
22 Analiza Datelor în mediul R - teorie şi aplicaţii
8
A se vedea și Quan L.I., (2018), Using R for Data Analysis in Social Sciences, A Research
Project-Oriented Approach, Oxford University Press.
Capitol suplimentar Introducere în mediul R 23
productia_1$capital
capital
1 20
2 10
3 30
……………………
9 19
10 31
Reamintim că un dataframe este un cadru de date bidimensional cu un
număr dat de coloane și un număr dat de linii (fiecare coloană corespunde unei
variabile/caracteristici și conține linie corespunzătoare fiecărei observații, adică
vorbim de matricea informațională), la fel ca un set de date tipic, cu liniile care
indică observațiile și coloanele care indică variabilele.
Prin urmare, se poate gândi productia_1$munca ca un set de date
care conține o variabilă numită munca cu cele zece observații corespunzătoare.
Similar se poate face și pentru variabila capital.
De asemenea, se pot combina doi vectori, spre exemplu, cei anteriori
munca și capital într-un dataframe unic, aplicând funcția data.frame().
Combinând munca și capital, noul dataframe este format din două
variabile, munca și capita, fiecare cu câte zece observații. Codul R este
următorul:
productia_1 <- data.frame(munca, capital)
productia_1
munca capital
1 80 20
2 100 10
3 60 30
……………………………..
9 120 19
10 40 31
Observație: Reamintim că pentru a ne referi la o variabilă din dataframe-ul
productia_1, R folosește semnul $ pentru a conecta un dataframe și o
variabilă în dataframe. Prin urmare, productia_1$munca se referă la
variabila munca în productia_1, iar productia_1capital se referă la
variabila capital în producția_1.
24 Analiza Datelor în mediul R - teorie şi aplicaţii
=============================================================
Statistic N Mean St. Dev. Min Pctl(25) Median Pctl(75) Max
-------------------------------------------------------------
munca 10 73.000 33.015 20 45 75 97.5 120
capital 10 21.000 7.257 10 15.8 19.5 27.8 31
-------------------------------------------------------------
Acestea au fost doar câteva exemple, lăsând în seama cititorului noi
valențe ale funcției stargazer.
6. Operații cu matrice în R
26 Analiza Datelor în mediul R - teorie şi aplicaţii
[2,] 2 8
[3,] 3 9
Pentru a selecta elementele și valorile bazate pe mai mult și respectiv mai
puțin de o anumită valoare, la matricea matrice, se procedează astfel:
matrice[matrice>7]
[1] 8 9
9
Atenție: de fiecare dată se va face referința la matrice având forma ultimă.
28 Analiza Datelor în mediul R - teorie şi aplicaţii
- mediana/MAD;
- etc
Recentrarea datelor - realizează o transformare standard a scorului z.
Valoarea medie a variabilei este scăzută din fiecare valoare și rezultatul este apoi
împărțit la abaterea standard. Variabila rezultată va fi de medie zero și abatere
standard 1.
În continuare, vom evidenția cum după transformare, variabilele nu mai
sunt exprimate în scala lor inițială, ca spre exemplu, vârsta care nu mai afișează un
număr de ani.
set.seed(2020)
ages = sample(14:100, 30, replace=T)
incomes = sample(400:10000, 30, replace=T)
data = cbind(ages, incomes)
scaled = scale(data)
cor(data)
cor(scaled)
cov(scaled)
Observaţie: Se poate constata că întotdeauna cor(scaled)= cov(scaled).
Scalarea [0-1] - se face scăzând valoarea minimă din valoarea variabilei pentru
fiecare observație, apoi împărțind la diferența dintre valoarea maximă și cea
minimă.
În continuare, vom scala în [0-1] datele data prezentate anterior, folosind
pentru aceasta pachetul reshape, funcția rescaler:
install.packages("reshape", dependencies = TRUE)
library("reshape")
set.seed(2020)
scaled = rescaler(data, "range")
Median/MAD - este o versiune robustă a transformării standard recentrate.
Valoarea mediană este scăzută din fiecare valoare, iar rezultatul este apoi împărțită
la abaterea mediană absolută. Variabila rezultată va avea mediana zero.
În continuare, vom scala Median/MAD, pentru setul de date data
prezentate anterior, utilizând funcția rescaler din pachetul reshape:
install.packages("reshape", dependencies = TRUE)
library("reshape")
set.seed(2020)
scaled = rescaler(data, "robust")
head(scaled)
cl1<-pam(d,3,diss=TRUE)$clustering
cl2<-pam(d,4,diss=TRUE)$clustering
print(comparing.Partitions(cl1,cl2,type="crand"))
# [1] 0.2795866
- setul de date data_patternGDM1, aplicând tipul de normalizare
bazat pe coeficientul de transformare pozițional (x/median).
install.packages("clusterSim", dependencies = TRUE)
library("clusterSim")
set.seed(2020)
data(data_patternGDM1)
z<-data.Normalization(data_patternGDM1,type="n9")
d<-dist.GDM(z,method="GDM1")
cl1<-pam(d,3,diss=TRUE)$clustering
hc<-hclust(d, method="complete")
cl2<-cutree(hc,k=3)
print(comparing.Partitions(cl1,cl2,type="nowak"))
Capitolul 2
Reprezentări, descriptori şi metrici la nivelul
datelor multidimensionale
Prof. dr. Stelian STANCU
x1 x2 1 2 … j … q Total
1 k11 k12 … k1 j … k 1q k1
2 k 21 k 22 … k2 j … k 2q k 2
… … … … … … … …
i k i1 ki2 … k ij … k iq k i
… … … … … … … …
p k p1 k p2 … k pj … k pq k p
Total k 1 k 2 … k j … k q k k
Tabelul 2.1.a. Tabelul de contingenţă de dimensiune p q
2 Analiza Datelor. Teorie şi aplicaţii
unde:
q p p q
k i k ij ; k j k ij şi k k k ij .
j 1 i 1 i 1 j 1
M ( xi , wi ) / i 1, m
unde cu M s-a notat norul de puncte.
Definiţia 2.1. Se numeşte baricentrul punctelor xi , afectate de ponderile wi ,
sau centrul de greutate al norului de puncte M, care coincide de fapt cu vectorul
mediilor aritmetice ale celor n-variabile:
Capitolul 2. Reprezentări, descriptori şi metrici la nivelul datelor multidimensionale 3
t
m 1
t
xi wi
xi1 im1
2 xi2 wi
xi i 1
... ...
m m
m j ~
g xi wi xij wi xi wi X t W 1
i 1 i 1
... i 1
n 1 m ...
xi x n 1 w
xn i 1
i i
i m n
xi wi
i 1
~
xi j xij x j , cu i 1, m , j 1, n
X ~
xi j i 1,m xij x j i 1,m
~
j 1, n j 1, n
1
A se vedea şi Capitolul 4, & 2.1.2.1. Centrarea datelor primare.
4 Analiza Datelor. Teorie şi aplicaţii
unde:
2
x x j wi
m
S(x j ) i
j
i 1
1
W 1 diag j
, j 1, n este matricea diagonală a inverselor abaterilor
S S(x )
standard.
i 1
t
~ ~~ ~ ~ ~ ˆt ~ˆ
R W 1 VW 1 W 1 X t WXW 1 XW 1 W XW 1
X WX
S S S S S S
unde:
v jk
r jk , cu j , k 1, n . (forma analitică a elementelor matricei R)
S(x ) S(xk )
j
i 1
x x j wi
m
2
S(x j ) i
j
i 1
sau explicit:
Capitolul 2. Reprezentări, descriptori şi metrici la nivelul datelor multidimensionale 5
x x j xik x k wi
m
j
v jk i
r jk i 1
S(x j ) S(xk )
x x j wi x x k wi
m m
j 2 k 2
i i
i 1 i 1
x x j xik x k
m
j
v jk i
r jk i 1
S(x j ) S(xk )
x xj x xk
m m
j 2 k 2
i i
i 1 i 1
x y x
unde:
“ ” - reprezintă semnul pentru compunere
Observaţie: Avem astfel că noua variabilă este definită de forma:
x : E
cu proprietatea că:
6 Analiza Datelor. Teorie şi aplicaţii
x y x
y
E
Figura 2.1. Schema de obţinere a noii variabile
unde:
E - este înzestrată cu structura S;
E - este înzestrată cu structura S ;
- aplicaţia s : R ;
() ( , ) , rezultă că s ( , ) s ( , ) ;
s ( , ) s ( , ) s ( , ) .
- aplicaţia d S : R ;
Capitolul 2. Reprezentări, descriptori şi metrici la nivelul datelor multidimensionale 7
() ( , ) , rezultă că d S ( , ) d S ( , ) ;
- () , rezultă că d S ( , ) 0 .
t
xi1
2
xi
...
xi xi j
...
n 1
xi
xn
i
x i xi1 x i2 ... x ij ... x in 1
x in , cu i 1, m
x1j
j
x2
...
x xi j
j
...
j
xm1
xj
m
Definiţia 2.12.
1. Se spune că doi indivizi i , k au acelaşi profil dacă:
2
A se vedea şi 2.5.1. Distanţa euclidiană, & Distanţa euclidiană în spaţiul variabilelor
Capitolul 2. Reprezentări, descriptori şi metrici la nivelul datelor multidimensionale 9
xij x kj
, () j 1, n
xi x k
xij xik
, () i 1, m
xj xk
1/ p
n
d Min ( xi , x k ) xij x kj
p
j 1
unde:
t
xl1
2
xl
...
xl xlj , cu l i, k , iar i, k 1, m
...
n 1
xl
xn
l
1/ p
n
d Ceb ( xi , x k ) lim xij x kj
p
max xij x kj
p
j 1 j
x x
n n
j 2 j 2
i k
j 1 j 1
d cos ( xi , x k ) n
x j 1
i
j
x kj
- forma 1:
n xij x kj
d Cam ( xi , x k )
1
j 1 xij x kj
- forma 2:
n xij x kj
d Cam ( xi , x k )
2
j 1 xij x kj
d : G1 G2 R
d (G1 , G 2 ) min d ( i , j )
i G1
j G2
d (G1 , G 2 ) max d ( i , j )
i G1
j G2
d (G1 , G 2 ) d ( ,
i K1
i j )
j K 2
d ( , )
K j i G j
i
d (G1 , G2 ) d ( K 1 , K 2 ) d ( ,
i K1
i j )
j K 2
unde:
K j - reprezintă nucleul mulţimii de indivizi G j , cu cardK 1 cardK 2 .
3
Mulţimi G j - ce formează grupe de indivizi.
12 Analiza Datelor. Teorie şi aplicaţii
d (G1 , G 2 ) d ( g 1 , g 2 )
unde g j - reprezintă punctul ale cărui coordonate sunt mediile celor m indivizi din
grupul G j respectiv, cu j 1,2 .
w (G ) w( )
G
E E1 E 2 E3 ... E n .
mG mG mG
I ( G j ) I (G j ) d ( g (G j ), x ( )) w(G j ) (teorema lui Huygens)
j 1
j 1 j 1
unde:
G j - reprezintă părţi disjuncte ale mulţimii ;
mG - reprezintă numărul de părţi G j .
Capitolul 2_continuare_recapitulare(facultativ!)
Analiza Datelor - metode statistice de analiză
x1j
j
x2
...
x xi j
j
...
j
xm1
xj
m
cu j 1, n ;
- de frecvenţe, când fiecărei variante i se ataşează câte o frecvenţă, adică:
x1 x 2 ... xi ... x p
unde p m
n n ... n ... n
1 2 i p
- Mărimi medii
x i
x i 1
unde:
xi - reprezintă nivelurile individuale ale variabilei;
m
x i 1
i - reprezintă volumul centralizat al variabilei;
x 2
i
xP i 1
x1 x 2 x m
x
... m i 1 )
xg xg xg i 1 x g
Observaţii:
1. Dacă există cel puţin un singur termen negativ sau egal cu zero, atunci
calculul mediei geometrice nu are sens;
2. Prin logaritmarea mediei geometrice se obţine:
m
lg x i
lg x g i 1
m
Pentru acelaşi şir de valori, între mediile prezentate există următoarea
relaţie de ordine:
xh x g x x P
M e x k 1
x k x k 1
M e
2
- Indicatorii variaţiei
A a x max x min
d i xi x
pentru i 1, m .
Abaterile individuale relative ( d i % ): se calculează raportând
abaterile absolute la nivelul mediu al caracteristicii, adică:
Capitolul 2. Analiza Datelor - metode statistice de analiză 5
di x x
di % 100 i 100
x x
x i x
d i 1
(x i x)2
i 1
m
Observaţii:
1. Calculând pentru aceeaşi serie, cei doi indicatori, se verifică relaţia:
d ;
2. În literatura de specialitate se apreciază că pentru o serie de distribuţie cu
tendinţă clară de normalitate, abaterea medie liniară este egală cu 4/5 din
valoarea abaterii medii pătratice1.
Dispersia (varianţa) unei caracteristici ( 2 ) : se calculează ca
medie aritmetică simplă sau ponderată a pătratelor abaterilor termenilor
faţă de media lor. Fiind calculat pe baza pătratelor este un indicator
adimensional.
Formula de calcul este dată de:
m 2
m
(x
m
i x)2 xi2 xi
x2 i 1
i 1
sau echivalent x2 i 1
m m m
1
Această relaţie poate fi considerată ca un test de verificare a asimetriei.
6 Analiza Datelor. Teorie şi aplicaţii
x
v 100
x
Observaţii:
1. Complementar, coeficientul de variaţie se mai poate calcula şi după relaţia:
d
v 100
x
iar v v' , de aceea, cel mai frecvent se foloseşte abaterea medie pătratică şi
coeficientul de variaţie corespunzător;
2. Acest indicator se poate calcula şi înlocuind media cu mediana sau modul,
adică:
dM M dM M
v e
100; v e
100; v o
100; v o
100
Me Me Mo Mo
- Indicatori de frecvenţe
Frecvenţele relative ( ni* ): se obţin raportând frecvenţa fiecărei
p
grupe, ni , la totalul frecvenţelor, n
i 1
i , adică:
ni ni
ni* p
sau ni*(%) p
100
n
i 1
i n
i 1
i
i
Fi n j , cu i 1, p
j 1
respectiv:
Capitolul 2. Analiza Datelor - metode statistice de analiză 7
i
Fi * n *j , cu i 1, p .
j 1
- Mărimi medii
Media aritmetică
x n i i
x i 1
p
n
i 1
i
Observaţii:
1. Calculul simplificat al mediei aritmeticeeste dat de relaţia:
x i a ni
x i 1
p
a sau echivalent
n
i 1
i
p
xi a
i 1 h
ni
x p
h a
ni
i 1
unde:
a - mijlocul unui interval de obicei centrul intervalului cu frecvenţa
cea mai mare;
h - mărimea intervalului dacă seria are intervale de variaţie egale.
2. Într-o serie de intervale neegale, trebuie să se calculeze toate centrele de
interval şi să se alegă cele mai convenabile valori pentru a şi h care să
simplifice calculul mediei;
3. Dacă într-o serie se reduc proporţional toate frecvenţele, media calculată
pe baza noilor frecvenţe rămâne neschimbată, adică:
ni
c
x i
x
ni
c
Această proprietate serveşte la calculul mediei cu ajutorul frecvenţelor relative. În
acest caz c ni şi deci:
8 Analiza Datelor. Teorie şi aplicaţii
100
Media armonică
p
n i
Calculul cu frecvenţe absolute: x h i 1
p
1
x
i 1
ni
i
1 100
Calculul cu frecvenţe relative: x h sau x h .
p
1 * p
1 *
i 1 x i
ni
i 1 x i
ni (%)
xn i i
Calculul cu frecvenţe absolute: xh i 1
x
p
1
i 1 xi
xi ni
1
Calculul cu frecvenţe relative: x h p
sau
1
i 1 x i
x n
i i
*
100
xh p
1
i 1 x
xi ni*(%)
i
Media pătratică
p
x i
2
ni
Calculul cu frecvenţe absolute: x P i 1
p
n
i 1
i
p
Calculul cu frecvenţe relative: x P x
i 1
i
2
ni* sau
Capitolul 2. Analiza Datelor - metode statistice de analiză 9
x i
2
ni*(%)
xP i 1
100
Media geometrică
p
n p
xg x in
i
i
i 1
i 1
Observaţii:
1. Prin logaritmare se va obţine:
k
n i lg x i
lg x g i 1
k
n
i 1
i
xh x g x x P
1
M o x0 h
1 2
în care:
x0 - reprezintă limita inferioară a intervalului modal;
h - reprezintă mărimea intervalului modal;
1 - reprezintă diferenţa dintre frecvenţa intervalului modal şi a
celui precedent;
2 - reprezintă diferenţa dintre frecvenţa intervalului modal şi a
10 Analiza Datelor. Teorie şi aplicaţii
celui următor.
Mediana ( M e )
2
cumulată este prima mai mare decât locul medianei;
- în cazul datelor grupate pe intervale, locul medianei este egal cu
p
( ni ) 1
. Intervalul median este intervalul a cărui frecvenţă
i 1
2
cumulată este prima mai mare decât locul medianei iar valoarea
medianei se calculează după formula:
p
( ni ) 1 M e 1
i 1
2
n i
M e x0 h i 1
n Me
unde:
x0 - reprezintă limita inferioară a intervalului median;
h - reprezintă mărimea intervalului median;
M e - reprezintă indexul intervalului median;
M e 1
n
i 1
i - reprezintă suma frecvenţelor precedente intervalului median
Observaţii:
1. Mediile de poziţie (structură) sunt valorile care împart seria în părţi egale;
2. În acest sens, mediana este şi indicator al tendinţei centrale şi medie de
poziţie.
4 i 1
Q1 x0 h i 1
nQ 1
unde:
Capitolul 2. Analiza Datelor - metode statistice de analiză 11
Q2 M e
nQ3 1
3 p
[( n i ) 1] n i
4 i 1
Q3 x 0 h i 1
nQ 3
Decilele divid seria în zece părţi egale, folosind în acest scop nouă
decile:
D 1
1 p
[( ni ) 1] ni
1
10 i 1
D1 x0 h i 1
nD 1
unde:
nD - este frecvenţa absolută a intervalului care conţine D1
1
……………………………
D5 M e
……………………………
D 1
9 p
[( n i ) 1] n i
9
10 i 1
D9 x0 h i 1
nD 9
- Indicatorii variaţiei
Amplitudinea absolută ( Aa ):
Aa x L xl
unde:
xL - reprezintă limita superioară a ultimului interval
xl - reprezintă limita inferioară a primului interval
Aa
A% 100
x
12 Analiza Datelor. Teorie şi aplicaţii
x i x ni
Calculul cu frecvenţe absolute: d i 1
p
n
i 1
i
p
Calculul cu frecvenţe relative: d xi x ni* sau
i 1
x i x n * i (%)
d i 1
100
(x i x ) 2 ni
- Calculul cu frecvenţe absolute: i 1
p
n i 1
i
p
- Calculul cu frecvenţe relative: (x
i 1
i x ) 2 ni* sau
(x i x ) 2 ni (%)
- i 1
100
d
Coeficientul de variaţie (v): v 100 respectiv v 100
x x
dM M dM M
v e
100; v e
100; v o
100; v o
100 .
Me Me Mo Mo
Dispersia (varianţa) ( 2 ) :
p
(x i x ) 2 ni
- Calculul cu frecvenţe absolute: 2 i 1
p
n i 1
i
p
- Calculul cu frecvenţe relative: 2 ( xi x ) 2 n * i sau
i 1
p
(x i x ) 2 ni* (%)
2 i 1
100
2
xi a
p
i 1 h
ni
2
k
h 2 ( x a) 2
ni i 1
2
p
xi a * 2
2 ni h ( x a ) 2 sau
i 1 h
2
p
xi a *
i 1 h
ni (%)
2
h 2 ( x a) 2
100
h2
( 2 ) 2
12
Abaterea intercuatilică ( Qd ):
( M e Q1 ) (Q3 M e ) Q3 Q1
Qd
2 2
Q3 Q1
Q 2 Q Q1
Vq d 3
Me Me 2M e
Abaterea interdecilică:
( M e D1 ) ( D9 M e ) D9 D1
Dd
2 2
D9 D1
D 2 D D1
Vd d 9
Me Me 2M e e
M
p
N
Dispersia:
σ 2p p q sau σ 2p p ( 1 p)
p pq
- Asimetria
16 Analiza Datelor. Teorie şi aplicaţii
Asimetria absolută ( AS )
AS x M o
Observaţii:
1. Acest coeficient poate lua valori cuprinse între -1 şi +1; cu cât este mai mic
în valoare absolută cu atât asimetria este mai mică;
2. În cazul când se cunoaşte mediana seriei, coeficientul de asimetrie (C as )
se poate calcula utilizând relaţia:
3( x M e )
C as
ni
2
(Q3 M e ) ( M e Q1 )
C asY
(Q3 M e ) ( M e Q1 )
( D9 M e ) ( M e D1 )
C asB
( D9 M e ) ( M e D1 )
Capitolul 2. Analiza Datelor - metode statistice de analiză 17
- Indicatorii concentrării
CG g 2
i , pentru i 1, k
unde:
xi ni xi ni
gi sau g i (%) 100
p p
xi ni xi ni
i 1 i 1
1
Acest coeficient ia valori în intervalul ,1 .
m
m g i2 1
CS
m 1
x z2
1
F(x)
2
e
2
dz
xi x
în care z
x x x x
Pi F i F i 1
Pi F ( xi ) F ( xi 1 ) ( z i ) ( z i 1 )
în care:
F ( xi ) - reprezintă valoarea funcţiei de repartiţie corespunzătoare limitei superioare
a intervalului de variaţie i;
F ( xi 1 ) - reprezintă valoarea funcţiei de repartiţie corespunzătoare limitei
superioare a intervalului precedent i 1 .
Pentru intervalele extreme, probabilităţile de apariţie se calculează astfel:
P1 ( z1 ) 0,5; Pk 0,5 ( z k )
( ni mpi ) 2
(ni mpi ) ;
mpi
k
(ni mpi ) 2
2
i 1 mpi
7. Se compară calculat
2
cu valoarea tabelară tabelar
2
care depinde de nivelul de
semnificaţie ales ( ) şi de numărul gradelor de libertate [ l p ( r l ) ]
unde:
p - reprezintă numărul de grupe;
r - reprezintă numărul parametrilor care definesc distribuţia ( r 2 ).
Dacă 2 calculat 2 tabelar , atunci se acceptă ipoteza că între distribuţia
empirică şi cea teoretică există concordanţă.
q
Volumul (frecvenţa) grupei i: n
j 1
ij ni
Mărimi medii
Mediile de grupă ( y x / x yi ): i
20 Analiza Datelor. Teorie şi aplicaţii
y n
j 1
j ij
yi q
n j 1
ij
Media pe total:
q p
y j n j
j 1
yn i i
y q
sau y i 1
p
n j 1
j n
i 1
i
Indicatorii variaţiei
(y j y i ) 2 nij
i
2 i 1
q
n j 1
ij
unde:
y j - reprezintă varianta sau mijloacul intervalului j al caracteristicii dependente;
yi - reprezintă media grupei i;
nij - reprezintă frecvenţele corespunzătoare fiecărei variante (interval de valori) din
cadrul grupei.
Media dispersiilor de grupă ( 2 2 )
y/m
p
i
2
ni
2
y/m
2 i 1
p
n i 1
i
unde:
i2 - reprezintă dispersia grupei i;
ni - reprezintă volumul grupei i.
Observaţie: Dacă grupele sunt egale ca volum, media dispersiilor de grupă se
calculează ca medie simplă a dispesiilor parţiale.
(y i y ) 2 ni
y2 / x 2 i 1
p
n
i 1
i
Dispersia totală ( 2 y2 ) :
(y
j 1
j y ) 2 n j
2 y2 q
n
j 1
j
2 2 2 sau 2 y2 / x y2 / m
Coeficientul de determinaţie ( R y2 / x ) :
2 y2 / x
R 2
2 100 sau R y / x 2 100
2
y/x
Observaţie: Dacă R y / x 50% , admitem că factorul de grupare este hotărâtor
(semnificativ, determinant) pentru variaţia factorului determinat (Y).
Coeficientul de nedeterminaţie:
2 y2 / m
K y2 / x 100 sau K 2
100
2 y/x
2
i i2
2
22 Analiza Datelor. Teorie şi aplicaţii
i
vi 100
yi
unde:
i - reprezintă abaterea medie pătratică a grupei;
yi - reprezintă media grupei
v 100
y
unde:
- reprezintă abaterea medie pătratică pe total;
y - reprezintă media pe total
Total 100
Tabelul 2.3. Reprezentarea seriei de distribuţie bidimensională
cu frecvenţe relative
Mediile de grupă ( y i ):
Capitolul 2. Analiza Datelor - metode statistice de analiză 23
y n
j 1
j
ij (%)
yi
100
y n i i (%)
y i 1
100
100
i
2
ni (%)
2 i 1
100
(y i y ) 2 ni (%)
y2 / x 2 i 1
100
Dispersia totală ( 2 y2 ) :
2 y2 2 2
Capitolul 3
Metode de învăţare nesupervizată şi supervizată
(Analiza în Componente Principale-ACP)
Analiza nu nu - da
corespondenţelor
Supervizată Regresia liniară da - da -
(explicativă) simplă şi multiplă
Regresia logistică - da da -
ANOVA/ - da da -
MANOVA
Analiza - da da da
discriminării
Tehnica arborilor da da - da
de decizie
(CART)
Tehnica . da da -
CHAID
Analiza canonică da - da -
Tabelul 3.1. Clasificarea tehnicilor de analiză a datelor
ACP
oare ca obiectiv prezentarea sintetică a unui tabel de date în care
unităţile sunt descrise prin multiple variabile cantitative.
o la prima vedere, fiecare dintre variabilele măsurate ar putea
părea a fi de aceeaşi importanţă;
o reducerea numărului variabilelor iniţiale poate fi utilizată
pentru
uşurarea interpretării
poate servi ca fază intermediară de calcul prealabil în
utilizarea altor metode de analiză multidimensională.
Informaţia cu care participă un individ i în norul de puncte, poate fi
exprimată prin distanţa de la punctul ce-l reprezintă, până la centrul de greutate al
norului de puncte:
n
I i ( x ij x j ) 2 , cu i 1, m
j 1
unde:
4 Analiza Datelor. Teorie şi aplicaţii
1 m j
x j g o, j xi , cu j 1, n
m i 1
g o , j - reprezintă coordonata j a centroidului indivizilor în spaţiul variabilelor şi
este valoarea medie înregistrată de cei m indivizi pentru cea de-a j-a
variabilă;
xij - reprezintă coordonata celui de-al i-lea individ în raport cu cea de-a j-a axă a
spaţiului variabilelor, cu i 1, m , j 1, n .
Informaţia totală, I, aferentă celor m indivizi, în ipoteza că fiecare individ
are aceeaşi pondere, este suma pătratelor distanţelor, adică:
m n
I ( x ij x j ) 2
i 1 j 1
x5
x4
x3
x2
x1
x1
Figura 3.1. Reducerea dimensionalităţii de la două axe x1 şi x 2 ,
la o singură axă w
1
Se numesc şi scoruri ale componentelor principale sau scoruri principale.
Capitolul 3. Metode de învăţare nesupervizată şi supervizată(ACP) 7
2
Componentele principale preiau în totalitate variabilitatea conţinută în variabilele
originale.
3
În cazul în care numărul de componente principale este egal cu numărul variabilelor
originale, putem privi ACP ca o metodă de rotaţie, de regulă ortogonală, a axelor spaţiului
iniţial, semnificaţia fiecărei noi axe fiind măsurată prin varianţa asociată unei componente
principale.
4
Transformările care asigură maximizarea varianţelor individuale ale unor variabile sunt
acele transformări de coordonate corespunzătoare efectuării unor rotaţii ortogonale ale
axelor originale.
8 Analiza Datelor. Teorie şi aplicaţii
pe restricţia:
u12 u 22 ... u n21 u n2 1
În aceste condiţii, problema determinării componentelor vectorului u k ce
definesc combinaţia liniară reprezentând componenta principală wk , se reduce la
rezolvarea următoarei probleme de extrem cu legături:
[max]{u k Vu kt }
u k
pe restrictia :
u u t 1
k k
şi are următoarea rezolvare:
Pasul 1. Fiind o problemă clasică de extrem cu legături, se construieşte
lagrangeanul problemei: L(u k , ) u k Vu kt 1 u k u kt .
Capitolul 3. Metode de învăţare nesupervizată şi supervizată(ACP) 9
5
Sau abordarea cu matricea Hessian.
10 Analiza Datelor. Teorie şi aplicaţii
Observaţii:
1. Cea mai uzuală metodă de alegere a numărului de axe este cea a calculării
varianţei explicite adusă de fiecare axă şi determinarea celei cumulate:
1
Vexp ( w1 ) n
k 1
k
1 2
Vexp ( w1 , w2 ) n
k 1
k
....
Astfel, se poate fixa un prag minim pentru varianţa explicită cumulată,
de exemplu, să fie în jur de 80%.
În momentul în care acest prag este atins se consideră că sunt suficiente
axele reţinute.
2. Este foarte important să poată fi interpretate axele factoriale. Pentru aceasta
este necesar să se revină la variabilele iniţiale. Astfel vom determina
importanţa variabilei iniţiale în formarea factorilor, calculând coeficienţii
de corelaţie dintre variabilele iniţiale şi axele factoriale (componentele
principale):
k
rx w
j u kj
k
S 2j
Algoritmul de construire a componentelor principale este, în esenţă, următorul:
Pasul 1. Se construieşte matricea datelor iniţiale, X m n ce conţine valorile
variabilelor relativ la indivizii supuşi observării, specificate printr-o matrice cu m
linii şi n coloane:
x11 x12 ... x1j ... x1n 1 x1n
1
x2 x 22 ... x 2j ... x 2n 1 x 2n
... ... ... ... ... ... ...
1
X [ x , x , x ,..., x , x ] x i
1 2 3 n 1 n
xi 2
... x i j n 1
... x i x in
... ... ... ... ... ... ...
1 2 j n 1 n
x m 1 x m 1 ... x m 1 ... x m 1 x m 1
x1 x m2 ... x mj ... x mn 1 x mn
m
Pasul 2. Se verifică dacă datele din matricea X m n sunt omogene.
Discuţie:
o dacă DA, atunci:
Pasul 2.1. Se calculează matricea de varianţă-covarianţă, V nn ,
având ca element general v jl , covarianţa dintre variabilele j şi l, cu
j l , iar elementele de pe diagonala principală sunt varianţele v jj
ale diferitelor variabile, adică:
Capitolul 3. Metode de învăţare nesupervizată şi supervizată(ACP) 11
k 1
k
1 2
Vexp ( w1 , w2 ) n
k 1
k
....
Observaţie: Suma celor n valori proprii, reprezentând varianţele celor n
componente principale, este egală cu suma varianţelor variabilelor originale, adică:
n n
S
j 1
2
j k
k 1
6
În continuare, se prezintă cazul p n .
7
Adică U U t E p .
Capitolul 3. Metode de învăţare nesupervizată şi supervizată(ACP) 13
Capitolul 3_ACP_Aplicație
Analiza în componente principale (ACP), utilizând mediul R
3.1.1. Introducere
Simplă
(2 variabile)
Date multivariate Analiza de
(tipuri de date) Date calitative corespondență
Multiplă
(mai mult
Analiza factorială de 2
simplă variabile)
Date mixte (2 variabile)
Analiza factorială
multiplă(mai mult
de 2 variabile)
18
În continuare, în toate abordările, vom folosi acest set de date suplu, pentru a permite și
calculul de mână al pașilor de abordare, permițând astfel compararea datelor obținute cu
cele din mediul R.
Capitolul 3. Analiza în componente principale, utilizând mediul R 3
9 120 19 18 800
10 40 31 14 200
Pentru a studia variația fiecărei variabile, putem calcula:
- fie varianța/dispersia la nivelul fiecărei variabile:
# Calculul varianței la nivelul fiecărei variabile
apply(productia, 2, var)
munca capital pamant productie
1090.00000 52.66667 14.66667 36978.88889
- fie abaterea standard la nivelul fiecărei variabile:
# Calculul abaterii standard la nivelul fiecărei variabile
apply(productia, 2, sd)
munca capital pamant productie
33.015148 7.257180 3.829708 192.298957
- orice valoare lipsă din date trebuie eliminată sau estimată;
Pentru a elimina orice valoare lipsă, care ar putea fi prezentă în date,
se apelează la comanda R:
productia <- na.omit(productia)
datele trebuie a fi standardizate19(scalate) pentru a putea face
-
variabilele comparabile. Pentru standardizarea datelor se va folosi
funcția scale(). Se vor normaliza datele, utilizând metoda de
normalizare min-max.
Scriptul R pentru scalarea datelor, utilizând metoda min-max, este după
cum urmează:
max = apply(productia, 2 , max)
min = apply(productia, 2 , min)
productia_scalata=as.data.frame(scale(productia,center=min,
scale=max-min))
productia_scalata
munca capital pamant productie
1 0.6 0.4761905 0.00000000 0.3333333
2 0.8 0.0000000 0.33333333 0.6666667
3 0.4 0.9523810 0.33333333 0.1666667
4 0.0 0.2380952 0.08333333 0.0000000
5 0.2 0.3809524 0.58333333 0.4333333
6 0.9 0.1904762 0.33333333 0.6666667
7 0.5 0.6666667 0.16666667 0.5000000
8 0.7 0.9047619 1.00000000 0.6166667
9 1.0 0.4285714 0.83333333 1.0000000
10 0.2 1.0000000 0.50000000 0.0000000
Standardizarea fiecărei variabile, va rezolva această problemă.
# Crearea unui nou dataframe cu variabilele centrate
productia_centrata <- apply(productia, 2, scale)
productia_centrata
munca capital pamant productie
[1,] 0.21202389 -0.1377946 -1.3055824 -0.32761488
[2,] 0.81780642 -1.5157402 -0.2611165 0.71243236
[3,] -0.39375865 1.2401511 -0.2611165 -0.84763850
[4,] -1.60532371 -0.8267674 -1.0444659 -1.36766212
[5,] -0.99954118 -0.4133837 0.5222330 -0.01560071
[6,] 1.12069769 -0.9645619 -0.2611165 0.71243236
19
De regulă, standardizarea constă în transformarea variabilelor astfel încât acestea să aibă
media zero și abaterea standard unu(adică o distribuție normală a datelor).
4 Data Science în mediul R - teorie şi aplicaţii
6 Data Science în mediul R - teorie şi aplicaţii
20
Reprezentările grafice din acest capitol sunt obținute din prelucrări proprii ale autorului,
utilizând mediul R.
Capitolul 3. Analiza în componente principale, utilizând mediul R 7
8 Data Science în mediul R - teorie şi aplicaţii
get_pca_ind(pca_rezultate), get_pca_var(pca_rezultate):
extrage rezultatele pentru indivizi/obsrevații și respectiv pentru variabile/
caracteristici.
fviz_pca_ind(pca_rezultate), fviz_pca_var(pca_rezultate):
vizualizează rezultatele pentru indivizi și respectiv pentru variabile;
fviz_pca_biplot(pca_rezultate): realizează o reprezentare grafică a
indivizilor și respectiv a variabilelor.
În secțiunile următoare, vor fi ilustrate fiecare dintre aceste funcții.
10 Data Science în mediul R - teorie şi aplicaţii
21
Această funcție o numește matricea de rotație, deoarece atunci când înmulțim matricea X
cu pca_rezultat$rotation, se obțin coordonatele datelor din sistemul rotativ de
coordonate, iar aceste coordonate sunt de fapt scorurile componentelor principale.
Capitolul 3. Analiza în componente principale, utilizând mediul R 11
12 Data Science în mediul R - teorie şi aplicaţii
14 Data Science în mediul R - teorie şi aplicaţii
fviz_screeplot(pca_rezultate)
Analize suplimentare:
4.1. Introducere
Analiza factorială
- este unul dintre cele mai puternice, mai subtile şi mai utile instrumente
de analiză a datelor;
- scopul principal este acela al deducerii unor construcţii ipotetice, al
identificării unor factori esenţiali, prin intermediul cărora să poată fi
explicate interdependenţele existente între elementele unei mulţimi de
variabile indicator.
- spre deosebire de analiza în componente principale, care are ca scop
reexprimarea unei proporţii cât mai mari din variabilitatea spaţiului
cauzal iniţial, analiza factorială îşi propune să găsească cea mai bună
modalitate de reproducere a corelaţiilor manifestate între elementele
unei mulţimi de indicatori, cea mai bună modalitate de reexprimare a
interdependenţelor dintre variabilele indicator.
- este folosită pentru a rezolva două tipuri de probleme şi anume fie
reducerea numărului de variabile, în vederea creşterii vitezei de
procesare a datelor, fie în identificarea de şabloane ascunse în relaţiile
existente între date din matricea informaţională.
- se referă la o gamă largă de tehnici statistice folosite pentru a
reprezenta un set de variabile în concordanţă cu un număr redus de
variabile ipotetice, numite factori.
- poate fi privită ca o modalitate de a explica şi interpreta legăturile
dintre anumite variabile observabile (variabile indicator) în termeni de
mărimi care nu pot fi direct observabile (factori).
- Exemplu: rezultatele înregistrate la anumite teste de performanţă, care
au natură observabilă şi direct măsurabilă, pot fi explicate şi
interpretate în termenii unui factor abstract şi neobservabil în mod
direct, care este nivelul de inteligenţă al celor testaţi. Se pune astfel
problema măsurării indirecte, a măsurării factorilor de natură
2 Analiza Datelor. Teorie şi aplicaţii
1
Aceste entităţi sunt cunoscute în analiza factorială sub numele de factori comuni şi factori
specifici.
Capitolul 4. Analiza factorială(AF) 3
Rotația factorilor
Figura 4.2.
Figura 4.3.
Figura 4.4.
10 Analiza Datelor. Teorie şi aplicaţii
Figura 4.5.
Denumirea factorilor
unde funcţiile sunt funcţii reale de m+1 variabile, funcţii care pot fi
liniare sau nelininare în raport cu variabilele.
Cu toate că funcţiile pot fi, în principiu, liniare sau
neliniare, aproape în toate cazurile, atât în cele legate de teoria analizei factoriale,
Capitolul 4. Analiza factorială(AF) 13
+ , pentru
+ , pentru
sau matriceal:
unde:
14 Analiza Datelor. Teorie şi aplicaţii
, pentru
, pentru şi
şi matricea factor F definită mai sus, atunci matricea Z de dimensiune p×m definită
astfel:
Acest criteriu poate fi folosit atunci când analiza factorială este efectuată
pe o matrice de corelaţie, adică atunci când se presupune că variabilele originale
sunt standardizate. În conformitate cu acest criteriu, numărul de factori necesari a fi
incluşi într-un model de analiză factorială este egal cu numărul de valori proprii
mai mari sau egale cu 1.
Justificarea acestui criteriu este dată de faptul că, pentru analiză, prezintă
importanţă numai acei factori comuni a căror varianţă este cel puţin egală cu
varianţa variabilelor originale, variabile care, fiind normalizate, au varianţa unitară.
În afara faptului că un astfel de criteriu poate fi folosit numai în cazul în
care se lucrează cu variabile normalizate, dezavantajul principal al criteriului
Kaiser este dat de faptul că aplicarea lui conduce la reţinerea în model a unui
număr prea mare de factori.
.
sau
sau
, pentru
, pentru ;
, pentru ;
, pentru
Suma
pentru
Covarianța dintre o variabilă observată și un factor comun este:
unde
pentru .
Capitolul 4. Analiza factorială(AF) 27
Acești indici arată care variabile sunt mai puțin corelate cu celelalte, deci
oferă mai puțină variabilitate comună.
Coeficientul de corelație parțială dintre două variabile, , se
calculează astfel:
4.1. Introducere
În continuare, se va explora tehnica de analiză factorială, abordând:
- atât:
o axele principale, cât și
o metodele de extracție a componentelor principale;
- dar și două metode diferite de identificare a numărului corect de
factori de extras:
o scree plot-ul și
o analiza paralelă;
- precum și două metode diferite de rotaţie a factorilor, pentru a
facilita interpretarea.
4.2. Încărcarea pachetelor necesare
Pachetele ce vor fi utilizate în continuare sunt:
install.packages("psych", dependencies = TRUE)
library(psych)
install.packages("GPArotation", dependencies = TRUE)
library(GPArotation)
4.3. Datele utilizate
Setul de date folosit pentru această aplicaţie se numește data:
data <- read.table ("date_firme.txt", header = TRUE)
data
Simbol RC ROE ROA LC GIG
1 AGQR -8.0501255 -7.3862395 -5.0408985 2.516475179 31.752842
2 ACBU -31.1102183 -3.5095268 -3.0978510 1.629417638 11.730238
3 CDRM 18.0970626 4.4322803 2.3073291 0.454867597 47.942618
4 ISCO 14.1442837 10.7628179 8.1426978 2.501590945 23.642443
5 ARTD 5.9622256 3.2135438 2.6058923 2.881322269 18.909080
6 ALU 0.7863165 0.7994432 0.5243685 6.672375855 12.959853
7 APRB -57.4540875 -1.9153146 -1.4201519 0.004157567 25.852812
8 COBL 7.9021707 2.8716514 2.5166457 0.396805835 12.440893
9 CACU 6.2260705 0.3158756 0.2875096 1.108650438 3.232948
10 CONM -169.0523752 -15.0968952 -12.2541942 21.051113960 18.829707
11 GALV 49.0391044 5.9308433 5.8484571 29.352742000 1.389120
12 GRLA -5.8293224 -27.1066630 -4.4769040 1.187847429 83.484120
13 NTEX 11.3601459 1.6685384 1.6341698 1.463034203 1.985820
14 NAXY -17.0488008 -4.2788657 -3.0026705 0.212258756 31.445655
15 PRCO 71.2261423 7.7311417 2.7496818 1.002444507 64.433690
16 SEOM 2.7870814 1.3382599 1.2753953 8.627401001 3.749167
17 SEOL -37.5964025 -15.2860073 -9.1507524 0.160958488 40.274236
18 UNISEM -82.9427956 -21.2668060 -19.9241379 0.431633410 6.338618
19 UZIN 2.6346922 1.6892427 0.7225290 6.215346747 55.815354
20 BUCU 62.3510166 9.4784319 9.1944525 39.478375110 2.895977
21 COKG -1.4207203 -0.5166130 -0.4695625 0.644480330 8.554467
22 COUT -23.2254888 -13.2020779 -10.7500760 0.573471682 18.964912
23 DONO -12.3843530 -0.6114036 -0.6022784 40.277789840 1.942870
2 Analiza Datelor. Teorie şi aplicaţii
cortest.bartlett(data[2:12])
R was not square, finding R from data
$chisq
[1] 314.8428
$p.value
[1] 4.121391e-38
$df
[1] 55
Testul lui Bartlett este semnificativ statistic, sugerând că matricea de
corelație observată între itemi nu este o matrice identitate. Cu toate acestea,
acest lucru nu este un indiciu deosebit de puternic că setul de date este
factorizabil - tot ceea ce spune acest test este că cel puțin unele dintre
variabile sunt corelate între ele.
4.5.2. Testul KMO
Măsura Kaiser-Meyer-Olkin (KMO) a adecvării eșantionării este o
măsură mai bună a factoriabilității. Testul KMO verifică dacă corelațiile
parțiale din datele analizate sunt suficient de apropiate de zero, pentru a
sugera că există cel puțin un factor latent care stă la baza variabilelor
respective.
Valoarea minimă acceptabilă este 0,50, dar majoritatea specialiştilor
recomandă o valoare de minim 0,60 înainte de a efectua o analiză factorială.
Funcția KMO din pachetul "psych" produce o măsură generală a
adecvării eșantionării (MSA-Measure of Sampling Adequacy, așa cum este
etichetată în rezultat) și un MSA pentru fiecare item.
Teoretic, dacă MSA-ul general este prea scăzut, se pot examina
itemii MSA și se înlătură aceia care sunt prea mici.
Observație: Acest lucru trebuie făcut cu prudență, desigur, așa cum este
cazul oricărei metode teoretice și empirice de selectare a itemilor.
KMO(data[2:12])
Kaiser-Meyer-Olkin factor adequacy
Call: KMO(r = data[2:12])
Overall MSA = 0.55
MSA for each item =
RC ROE ROA LC GIG A1 A2 A3 SP AFT SF
0.63 0.57 0.58 0.58 0.56 0.23 0.35 0.57 0.54 0.61 0.58
KMO-ul global pentru datele analizate este de 0,55, ceea ce arată că suntem
peste valoarea minimă acceptată - acest lucru sugerează că se poate
continua, prudent, cu analiza factorială planificată.
4.6. Determinarea numărului de factori de extras
Prima decizie cu care ne vom confrunta în analiza factorială este
decizia cu privire la numărul de factori pe care va trebui să-i extragem,
pentru a realiza cea mai parsimoniosă (dar totuși interpretabilă) structură
factorială.
Există o serie de metode pe care le-am putea folosi, dar cele mai
frecvent utilizate două metode sunt:
Capitolul 4. Analiza factorială(AF)_Aplicaţie 5
Figura 1.
Tehnica scree plot implică trasarea unei linii drepte prin valorile
proprii reprezentate, începând cu cea mai mare. Ultimul punct care cade pe
această linie reprezintă ultimul factor care se extrage, în ideea că, dincolo de
acesta, cantitatea de varianță suplimentară explicată nu are sens a fi luată în
calcul.
Indiferent dacă se utilizează o componentă principală sau o extracție
a factorului axei principale, există un prim factor foarte mare în aceste date.
Dacă ar fi să trasăm linia dreaptă începând din acest punct, probabil
se va concluziona că există doar doi factori în setul de date. Dacă, totuși,
veţi începe linia în al doilea punct al scree plot-ului probabil se va
concluziona că există 3 factori în setul de date.
Această din urmă interpretare este probabil mai aproape de adevăr,
dar dacă aceasta ar fi singura dovadă adusă în considerare asupra numărului
6 Analiza Datelor. Teorie şi aplicaţii
Figura 2.
Figura 3.
Figura 4.
Figura 5.
Capitolul 4. Analiza factorială(AF)_Aplicaţie 11
Comunalitatea
Comunalitatea pentru fiecare variabilă este procentul de varianță
care poate fi explicat prin factorii reținuți/comuni.
Cel mai bine este dacă factorii reținuți/comuni explică mai mult
varianța fiecărei variabile.
pa3.out$communality
RC ROE ROA LC GIG A1 A2
0.67500400 0.74585261 0.96065601 0.30734902 0.79487486 0.34936485 0.07406626
A3 SP AFT SF
0.18445464 0.96073072 0.94738265 0.98284844
Ca punct de interes, diferența principală între modul în care se
efectuează analiza factorilor comuni și analiza componentelor principale
este că matricea de corelație pe care se bazează analiza factorială are 1 de-a
lungul diagonalei principale.
Valori proprii
Valorile proprii din analiza factorială sunt stocate în e.values.
Acestea sunt valorile proprii care au fost reprezentate grafic în scree
plot-urile analizate anterior.
pa3.out$e.values[1:3]
[1] 3.355638 2.802889 1.559348
Dacă se dorește a se vedea valorile proprii din soluția rotită, atunci
avem:
pa3.out$values[1:3]
[1] 3.191218 2.542780 1.248586
Procentul de varianță contabilizat
Se pot folosi valorile proprii, pentru a calcula procentul de varianță
contabilizat de fiecare dintre factori.
Având în vedere că suma maximă a valorilor proprii va fi
întotdeauna egală cu numărul total de variabile din analiză, se poate calcula
procentul de varianță contabilizat prin împărțirea fiecărei valori proprii la
numărul total de variabile din analiză. În exemplul analizat, acesta este 11.
100*pa3.out$e.values[1:3]/length(pa3.out$e.values)
[1] 30.50580 25.48081 14.17589
Dacă se doreşte procentul de varianță contabilizat de soluția rotită, se
pot folosi valorile proprii stocate în values, mai degrabă decât e.values:
100*pa3.out$values[1:3]/length(pa3.out$values)
[1] 29.01107 23.11618 11.35078
Soluție rotită
Au fost analizate deja elementele cu cea mai mare încărcare pentru
fiecare factor (folosind diagrama fa.diagram), dar aceasta arată doar cea
mai mare încărcare pentru fiecare item/observaţie/individ.
Cu toate acestea, fiecare element se va încărca pe fiecare dintre
factori, într-un grad mai mare sau mai mic - și în cele din urmă se va analiza
matricea completă de încărcare a factorilor.
12 Analiza Datelor. Teorie şi aplicaţii
analiza factorilor comuni. Mulți dintre pași vor fi totuşi similari, dar îi vom
parcurge și pentru analiza în componente principale.
pc2.out <- principal(data[2:12],nfactors = 2,rotate =
"oblimin")
Din nou, se poate arunca o privire rapidă asupra structurii factorilor
pentru această soluție folosind fa.diagram:
fa.diagram(pc2.out)
Figura 6.
pc3.out <- principal(data[2:12],nfactors = 3,rotate =
"oblimin")
fa.diagram(pc3.out)
14 Analiza Datelor. Teorie şi aplicaţii
Figura 7.
5.1. Introducere
Pentru a identifica locul analizei datelor într-un studiu statistic, trebuie mai
întâi prezentate cele trei faze distincte ale acesteia:
- faza metodologică - presupune stabilirea instrumentelor: unități și
nomenclatoare;
- faza tehnică - reprezintă punerea în practică a instrumentelor. Astfel se
stabilesc liste de unități selectate, se construiește chestionarul, acesta se
aplică, răspunsurile sunt verificate manual și automat obțînând în final
rezultatele brute;
- faza de publicare - cuprinde toate metodele și tehnicile de exploatare a
bazei de date. În această etapă se obțin o mulțime de tabele, grafice dintre
care se păstrează cele relevante, se interpretează, se explică , toate acestea
cu ajutorul tehnicilor de analiză datelor. Prin urmare, se constată că aceasta
ocupă un loc din ce în ce mai important în modelarea rezultatelor brute și
transformarea lor pentru a facilita înțelegerea rezultatelor studiului de către
cititorul neavizat.
Pe de altă parte, spre deosebire de dată mining, analiza datelor are un câmp
de aplicare mai îngust, având ca scop verificarea existenței unui anumit model sau
extragerea parametrilor necesari pentru adaptarea modelului teoretic la realitate și
nu descoperirea de modele ascunse, precum cealaltă tehnică menționată.
Analiza datelor, conţinând demersul descriptiv şi exploratoriu, cuprinde
două mari grupe de metode şi anume:
- metode de analiză factorială - se bazează pe nori de puncte şi presupune
identificarea axelor factoriale. Metodele analizei/explorării multidimensionale au
ca scop reducerea numarului de variabile prin construirea de caracteristici sintetice
care combina pe cele initiale. Principalele metode utilizate de aceasta sunt:
o analiza în componente principale;
o analiza corespondenţelor simple;
o analiza corespondenţelor multiple;
o analiza canonică
o analiza factorială discriminantă;
o analiza corelaţiei;
o analiza varianţei.
o analiza regresiei liniare şi neliniare.
- metode de clasificare automată.
Clasificarea automată presupune gruparea indivizilor în clase omogene in
funcţie de un anumit criteriu, iar rezultatele se prezintă de cele mai multe ori sub
2 Analiza Datelor. Teorie şi aplicaţii
unde:
; şi .
1
Pot fi inclusiv nominale.
4 Analiza Datelor. Teorie şi aplicaţii
PNL 20 3 3 5 1 32
UDMR 6 17 0 1 6 30
PRM 10 0 3 0 6 19
PUNR 4 11 1 2 3 21
PSDR 5 2 1 0 0 8
PNL-CD 14 4 2 1 2 23
Independent 4 0 0 0 0 4
Altul 16 2 4 0 1 23
TOTAL 204 59 45 21 49 378
Tabelul 5.1.b. Membrii Parlamentului României 1996-2000, după partid şi centrul
universitar unde au urmat studiile
unde:
; ; ;
modalităților celor două variabile se face în primele două axe, care grupează cea
mai mare parte a inerției. Reprezentările sunt identice celor de la analiza in
componente principale, un profil linie (altfel spus, o modalitate a primei variabile)
este un punct într-un spațiu q-dimensional, și invers, un profil coloană este un
punct în spațiul p-dimensional. Pentru reprezentare pot fi utilizate direct
componentele principale sau coordonate linie/coloană standardizate, calculate
astfel:
- coordonate linie, de forma
- coordonate coloană, de forma
unde B și D sunt matricele ortogonale furnizate de algoritmul SVD cu
componentele principale pentru profilele linie/coloană, iar C este matricea
diagonală a valorilor singulare.
Deci, analiza bivariată a corespondențelor descrie detaliat legătura dintre
variabilele și prin descompunerea inerției pe k = min(p,q) axe de inerție,
fiecare axă reprezentând un aspect al legăturii. Rolul analistului este de a interpreta
fiecare aspect al legăturii prin identificarea apropierilor dintre modalități pe fiecare
axă. Aceste apropieri sunt numite corespondențe și dau de fapt numele metodei.
Coordonatele linie și coloană vor reprezenta modalitățile în cele k
dimensiuni. Aceste corespondențe dintre modalități pot fi vizualizate grafic prin
reprezentări simultane în cele k dimensiuni.
Capitolul 5
Analiza factorială a corespondenţelor simple
în mediul R (ACS) -Aplicaţie
Încărcarea pachetelor/bibliotecilor
Datele
# head(data)
Bucuresti Cluj Iasi Timisoara Altul TOTAL
PTT-CD 36 9 9 6 10 70
PDSR 58 3 15 3 14 93
PD 31 8 7 3 6 55
PNL 20 3 3 5 1 32
UDMR 6 17 0 1 6 30
PRM 10 0 3 0 6 19
data<-data[-12,-6]
data
Bucuresti Cluj Iasi Timisoara Altul
PTT-CD 36 9 9 6 10
PDSR 58 3 15 3 14
PD 31 8 7 3 6
PNL 20 3 3 5 1
UDMR 6 17 0 1 6
PRM 10 0 3 0 6
PUNR 4 11 1 2 3
PSDR 5 2 1 0 0
PNL-CD 14 4 2 1 2
Indep 4 0 0 0 0
Altul 16 2 4 0 1
# Convertirea datelor în format tabel
dt <- as.table(as.matrix(data))
dt
Bucuresti Cluj Iasi Timisoara Altul
PTT-CD 36 9 9 6 10
PDSR 58 3 15 3 14
PD 31 8 7 3 6
PNL 20 3 3 5 1
UDMR 6 17 0 1 6
PRM 10 0 3 0 6
PUNR 4 11 1 2 3
PSDR 5 2 1 0 0
Capitolul 5. Analiza corespondenţelor simple(ACS) 3
PNL-CD 14 4 2 1 2
Indep 4 0 0 0 0
Altul 16 2 4 0 1
# Reprezentarea grafică a datelor
balloonplot(t(dt), main ="data", xlab ="", ylab="", label =
FALSE, show.margins = FALSE)
Figura 5.1.
Semnificație statistică
Eigenvalues
Dim.1 Dim.2 Dim.3 Dim.4
Variance 0.225 0.046 0.024 0.005
% of var. 74.990 15.260 7.992 1.758
Cumulative % of var. 74.990 90.250 98.242 100.000
Columns
Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
Bucuresti | 41.990 | -0.259 16.128 0.864 | -0.060 4.179 0.046 |
Cluj | 173.807 | 1.050 76.451 0.990 | -0.040 0.539 0.001 |
Iasi | 20.164 | -0.354 6.624 0.739 | 0.095 2.344 0.053 |
Timisoara | 31.265 | 0.107 0.283 0.020 | -0.551 36.898 0.540 |
Altul | 32.872 | 0.095 0.516 0.035 | 0.445 56.041 0.781 |
Dim.3 ctr cos2
Bucuresti -0.076 12.964 0.074 |
6 Analiza Datelor. Teorie şi aplicaţii
Figura 5.2.
Observaţie: Punctul în care scree plot-ul arată o îndoire (așa-numitul „cot”) poate
fi considerat ca indicând o dimensionalitate optimă.
De asemenea, este posibil să se calculeze o valoare proprie medie peste
care ar trebui păstrată axa în soluție.
Datele noastre conțin 11 linii și 5 coloane.
Dacă datele ar fi aleatorii, valoarea așteptată a valorii proprii pentru fiecare
axă ar fi 1/(nrow (data) -1) = 1/10 = 10% în termeni de linii.
În mod similar, axa medie ar trebui să reprezinte 1/(ncol(data) -1)
= 1/4 = 25% în ceea ce privește cele 5coloane.
Remarcă (M.T. Bendixen 1995): Orice axă cu o contribuție mai mare decât
maximul dintre aceste două procente ar trebui considerată ca fiind importantă și
inclusă în soluția de interpretare a datelor.
Codul R ce urmează, trasează scree plot-ul cu o linie întreruptă roșie
specificând valoarea proprie medie:
8 Analiza Datelor. Teorie şi aplicaţii
fviz_screeplot(res.ca)+geom_hline(yintercept=25.00,
linetype=2, color="red")
Figura 5.3.
Biplot-ul
Figura 5.4.
Rezultate
Codul R de mai jos afișează coordonatele fiecărui punct de linie din fiecare
dimensiune (1, 2, 3 și respectiv 4):
head(row$coord)
Dim 1 Dim 2 Dim 3 Dim 4
PTT-CD -0.04467236 -0.03381621 0.144824289 0.02037735
PDSR -0.35254405 0.12189063 -0.008209201 0.01486191
PD -0.04708009 -0.04114281 -0.035662683 0.02113982
PNL -0.16264060 -0.48744259 0.185369511 -0.05015341
UDMR 1.19219227 0.16901809 -0.071737607 -0.07029520
PRM -0.34250545 0.58019095 0.179331589 -0.07680298
Utilizînd funcția fviz_ca_row()[din pachetul factoextra] pentru a
vizualiza doar punctele de pe linii:
fviz_ca_row(res.ca, repel = TRUE)
Figura 5.5.
Figura 5.6.
Figura 5.7.
fviz_ca_row(res.ca, alpha.row="cos2")
Figura 5.8.
Figura 5.9.
Capitolul 5. Analiza corespondenţelor simple(ACS) 15
Figura 5.10.
Liniile care contribuie cel mai mult la Dim.1 și Dim.2 sunt cele mai
importante în explicarea variabilității în setul de date.
Liniile care nu contribuie prea mult la nicio dimensiune sau care contribuie
la ultimele dimensiuni sunt mai puțin importante.
Este posibil să utilizați funcția corrplot() [din pachetul corrplot]
pentru a evidenția cele mai importante puncte de linie pentru fiecare dimensiune:
library("corrplot")
corrplot(row$contrib, is.corr=FALSE)
Figura 5.11.
Figura 5.12.
Figura 5.13.
Linia punctată roșie din graficul de mai sus indică valoarea medie
așteptată, dacă contribuțiile au fost uniforme.
18 Analiza Datelor. Teorie şi aplicaţii
Figura 5.14.
Figura 5.15.
Rezultate
Figura 5.16.
Figura 5.17.
Figura 5.18.
22 Analiza Datelor. Teorie şi aplicaţii
Figura 5.19.
Biplot-ul simetric
Figura 5.20.
Biplot asimetric
P = sqrt(eigenvalue)x S
unde:
P: reprezintă coordonata principală a unei linii(sau a unei coloane) pe axă;
eigenvalue: reprezintă valoarea proprie a axei;
În funcție de situație, alte tipuri de afișare pot fi setate folosind harta
argumentelor (Nenadic & Greenacre, 2007) în funcția fviz_ca_biplot()
[din pachetul factoextra].
Figura 5.21.
Dacă unghiul dintre două săgeți este mic, atunci există o asociere puternică
între rândul și coloana corespunzătoare.
Pentru a interpreta distanța dintre o linie şi o coloană, trebuie proiectate
perpendicular punctele de linie pe săgeata coloanei.
Contribuția biplot
Figura 5.22.
Descrierea dimensiunii
$`Dim 1`$col
coord
Iasi -0.35385578
Bucuresti -0.25932735
Altul 0.09461864
Timisoara 0.10697480
Cluj 1.04988993
$`Dim 2`
$`Dim 2`$row
coord
PNL -0.48744259
Indep -0.27827754
PSDR -0.16490014
PNL-CD -0.09435739
PUNR -0.07759050
Capitolul 5. Analiza corespondenţelor simple(ACS) 27
Altul -0.04217024
PD -0.04114281
PTT-CD -0.03381621
PDSR 0.12189063
UDMR 0.16901809
PRM 0.58019095
$`Dim 2`$col
coord
Timisoara -0.55149729
Bucuresti -0.05955039
Cluj -0.03975218
Iasi 0.09495203
Altul 0.44494408
Descrierea dimensiunii 1:
Descrierea dimensiunii 2:
$ H : int 165 173 157 184 169 146 172 165 168 129 ...
$ Gen : chr "F" "F" "F" "F" ...
$ Domiciliu : chr "R" "U" "R" "R" ...
$ Studii : chr "P" "P" "S" "S" ...
$ Profesie : chr "L" "NL" "L" "L" ...
$ Religie : chr "O" "NO" "O" "O" ...
$ ApPolitica : chr "S" "D" "D" "D" ...
$ Nationalitate: chr "R" "A" "R" "R" ...
head(ACM[, 1:10], 5)
NrCrt Varsta H Gen Domiciliu Studii Profesie Religie ApPolitica
1 1 29 165 F R P L O S
2 2 38 173 F U P NL NO D
3 3 38 157 F R S L O D
4 4 45 184 F R S L O D
5 5 41 169 F U P L O D
Nationalitate
1 R
2 A
3 R
4 R
5 R
Datele conțin 75 de linii (persoane fizice) și 9 coloane (variabile). Vom
folosi doar unii dintre acești indivizi și variabile pentru a efectua analiza
corespondențelor multiple. Coordonatele celorlalți indivizi și variabile de pe harta
factorilor vor fi previzionate din rezultatele ACM anterioare.
describe(ACM)
vars n mean sd median trimmed mad min max range skew
NrCrt 1 75 38.00 21.79 38 38.00 28.17 1 75 74 0.00
Varsta 2 75 47.31 16.55 46 46.93 19.27 15 88 73 0.16
H 3 75 161.09 8.95 162 161.38 7.41 129 184 55 -0.46
Gen* 4 75 1.29 0.46 1 1.25 0.00 1 2 1 0.89
Domiciliu* 5 75 1.72 0.45 2 1.77 0.00 1 2 1 -0.96
Studii* 6 75 1.56 0.50 2 1.57 0.00 1 2 1 -0.24
Profesie* 7 75 1.51 0.50 2 1.51 0.00 1 2 1 -0.03
Religie* 8 75 1.71 0.46 2 1.75 0.00 1 2 1 -0.89
ApPolitica* 9 75 1.45 0.50 1 1.44 0.00 1 2 1 0.18
Nationalitate* 10 75 1.80 0.40 2 1.87 0.00 1 2 1 -1.47
kurtosis se
NrCrt -1.25 2.52
Varsta -0.75 1.91
H 1.51 1.03
Gen* -1.22 0.05
Domiciliu* -1.09 0.05
Studii* -1.97 0.06
Profesie* -2.03 0.06
Religie* -1.22 0.05
ApPolitica* -1.99 0.06
Nationalitate* 0.16 0.05
În terminologia ACM, datele conțin:
- indivizi activi (liniile 1:75): indivizi care sunt utilizați în analiza
corespondențelor multiple;
- variabile active (coloane 5:10): variabile care sunt utilizate în ACM;
- variabile suplimentare: nu participă la ACM. Coordonatele acestor variabile
vor fi predicţionate:
o variabile cantitative suplimentare (quanti.sup): Coloanele 2 și
3, corespunzătoare coloanelor Varsta și respectiv H(înălţimea);
Capitolul 5. Analiza corespondenţelor multiple(ACM) 3
res.mca
**Results of the Multiple Correspondence Analysis (MCA)**
The analysis was performed on 75 individuals, described by 7 variables
*The results are available in the following objects:
name description
1 "$eig" "eigenvalues"
2 "$var" "results for the variables"
3 "$var$coord" "coord. of the categories"
4 "$var$cos2" "cos2 for the categories"
5 "$var$contrib" "contributions of the categories"
6 "$var$v.test" "v-test for the categories"
7 "$ind" "results for the individuals"
8 "$ind$coord" "coord. for the individuals"
9 "$ind$cos2" "cos2 for the individuals"
10 "$ind$contrib" "contributions of the individuals"
11 "$call" "intermediate results"
12 "$call$marge.col" "weights of columns"
13 "$call$marge.li" "weights of rows"
summary(res.mca, nb.dec = 2, ncp = 2)
Call:
Capitolul 5. Analiza corespondenţelor multiple(ACM) 5
Eigenvalues
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7
Variance 0.21 0.19 0.16 0.14 0.13 0.10 0.08
% of var. 20.79 18.80 16.08 13.56 12.62 10.20 7.95
Cumulative % of var. 20.79 39.59 55.67 69.23 81.85 92.05 100.00
Figura 5.1.
Figura 5.2.
8 Analiza Datelor. Teorie şi aplicaţii
Figura 5.3.
Obiectul care este creat folosind funcția MCA() conține multe informații
găsite în multe liste și matrice diferite. Aceste valori sunt descrise în secțiunea
următoare.
Pachetul FactoMineR
Figura 5.4.
Pachetul factoextra
Figura 5.5.
Figura 5.6.
Biplot-ul
Figura 5.7.
Figura 5.8.
Graficul de mai sus ajută la identificarea variabilelor care sunt cele mai
corelate cu fiecare dimensiune. Pătratele corelațiilor dintre variabile și dimensiuni
sunt utilizate ca şi coordonate.
Se poate observa că, variabilele Religia și Profesia sunt cele mai
corelate cu dimensiunea 1. În mod similar, variabilele Studii și ApPolitica
sunt cele mai corelate cu dimensiunea 2.
Figura 5.9.
Figura 5.10.
Cele două dimensiuni 1 și 2 sunt suficiente pentru a reține 46% din inerția
totală (variația) conținută în date. Nu toate punctele sunt la fel de bine afișate în
cele două dimensiuni.
Calitatea reprezentării se numește cosinus pătrat-squared cosine (cos2) şi
măsoară gradul de asociere între variabilele categoriale și o anumită axă. cos2 din
variabilele categoriale pot fi extrase după cum urmează:
head(var$cos2, 5)
Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
F 0.4625413 5.172007e-02 0.07208591 0.04870360 0.001828472
M 0.4625413 5.172007e-02 0.07208591 0.04870360 0.001828472
Domiciliu_R 0.1725895 1.818751e-05 0.17268219 0.44106123 0.141229458
18 Analiza Datelor. Teorie şi aplicaţii
Figura 5.11.
1.0 A
Studii_P
ApPolitica_D
0.5
% )
cos2
3.5
0.4
im2(2
0.5
L
D
0.6
O
0.0
NL
NO
R
-0.5
Studii_S
ApPolitica_S
Figura 5.12.
Figura 5.13.
Figura 5.14.
Observaţíe: Variabilele categoriale R, A, Studii_S, Studii_P nu sunt foarte
bine reprezentate de primele două dimensiuni. Aceasta implică faptul că poziția
punctelor corespunzătoare pe graficul de împrăștiere ar trebui interpretată cu o
anumită prudență. Este probabil necesară o soluție cu dimensiuni superioare.
Figura 5.16.
Figura 5.17.
Linia roșie punctată din graficul de mai sus indică valoarea medie
așteptată, în ipoteza unor contribuții uniforme. Calculul valorii contribuției
preconizate, sub ipoteză nulă, a fost detaliat în capitolul legat de analiza în
componente principale.
Se poate observa că:
- categoriile ApPolitica_S, Studii_P şi ApPolitica_D sunt cele
mai importante în definirea primei dimensiuni.
- categoriile LO, L şi NL contribuie cel mai mult la dimensiunea 2
Cele mai importante variabile categoriale, prin prisma contribuţiei, pot fi
evidențiate pe graficul de dispersie (scatter plot) după cum urmează:
fviz_mca_var(res.mca, col.var = "contrib", gradient.cols =
c("#00AFBB", "#E7B800", "#FC4E07"), repel = TRUE, ggtheme =
theme_minimal())
Capitolul 5. Analiza corespondenţelor multiple(ACM) 23
Figura 5.18.
Graficul de mai sus oferă o idee despre la ce pol al dimensiunilor
contribuie variabilele categoriale.
Este evident că, categoriile NO și L au o contribuție importantă la polul
pozitiv din prima dimensiune, în timp ce categoriile NL și O au o contribuție
majoră la polul negativ din prima dimensiune etc.
Observaţie: Este posibil să controlați transparența variabilelor categoriale în
funcție de valorile contribuției acestora, utilizând opțiunea alpha.var =
"contrib". De exemplu, linia de cod R poate fi:
# Schimbați transparența prin contribuţia variabilelor
# categoriale
fviz_mca_var(res.mca, alpha.var="contrib", repel = TRUE,
ggtheme = theme_minimal())
24 Analiza Datelor. Teorie şi aplicaţii
Figura 5.19.
Graficul indivizilor
Rezultate
Figura 5.20.
Figura 5.21.
# Contribuția indivizilor la dimensiuni
Capitolul 5. Analiza corespondenţelor multiple(ACM) 27
Figura 5.22.
Figura 5.23.
Figura 5.24.
Figura 5.25.
Figura 5.26.
Figura 5.27.
Alternativ, se pot specifica indicii variabilelor categoriale:
fviz_ellipses(res.mca, 1:5, geom = "point")
Capitolul 5. Analiza corespondenţelor multiple(ACM) 33
Figura 5.28.
Descrierea dimensiunii
$category
Estimate p.value
Gen=F 0.3405687 1.937853e-11
ApPolitica=ApPolitica_D 0.3051930 6.780190e-11
Studii=Studii_P 0.1954376 1.413964e-04
Domiciliu=Domiciliu_R 0.2109500 2.102421e-04
Profesie=L 0.1855078 2.926216e-04
Profesie=NL -0.1855078 2.926216e-04
Domiciliu=Domiciliu_U -0.2109500 2.102421e-04
Studii=Studii_S -0.1954376 1.413964e-04
ApPolitica=ApPolitica_S -0.3051930 6.780190e-11
Gen=M -0.3405687 1.937853e-11
34 Analiza Datelor. Teorie şi aplicaţii
attr(,"class")
[1] "condes" "list"
$`Dim 2`
$quali
R2 p.value
Religie 0.61322113 1.032268e-16
Profesie 0.46235575 1.962789e-11
Nationalitate 0.10200268 5.222277e-03
ApPolitica 0.07655028 1.626290e-02
Gen 0.05172007 4.973529e-02
$category
Estimate p.value
Religie=NO 0.3728561 1.032268e-16
Profesie=L 0.2948339 1.962789e-11
Nationalitate=Nationalitate_R 0.1730878 5.222277e-03
ApPolitica=ApPolitica_S 0.1204825 1.626290e-02
Gen=M 0.1082835 4.973529e-02
Gen=F -0.1082835 4.973529e-02
ApPolitica=ApPolitica_D -0.1204825 1.626290e-02
Nationalitate=Nationalitate_A -0.1730878 5.222277e-03
Profesie=NL -0.2948339 1.962789e-11
Religie=O -0.3728561 1.032268e-16
attr(,"class")
[1] "condes" "list"
$call
$call$num.var
[1] 1
$call$proba
[1] 0.05
$call$weights
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[39] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
$call$X
Dim 1 Gen Domiciliu Studii Profesie
1 0.354193039 Gen=F Domiciliu=Domiciliu_R Studii=Studii_P Profesie=L
2 0.387479656 Gen=F Domiciliu=Domiciliu_U Studii=Studii_P Profesie=NL
3 0.505014358 Gen=F Domiciliu=Domiciliu_R Studii=Studii_S Profesie=L
4 0.505014358 Gen=F Domiciliu=Domiciliu_R Studii=Studii_S Profesie=L
5 0.483697878 Gen=F Domiciliu=Domiciliu_U Studii=Studii_P Profesie=L
6 -0.459165096 Gen=F Domiciliu=Domiciliu_U Studii=Studii_S Profesie=NL
7 0.594573571 Gen=F Domiciliu=Domiciliu_U Studii=Studii_P Profesie=L
8 0.099275844 Gen=F Domiciliu=Domiciliu_R Studii=Studii_P Profesie=NL
9 -0.058410692 Gen=F Domiciliu=Domiciliu_R Studii=Studii_S Profesie=NL
10 0.064314328 Gen=F Domiciliu=Domiciliu_U Studii=Studii_P Profesie=L
11 -0.561367683 Gen=M Domiciliu=Domiciliu_U Studii=Studii_S Profesie=L
12 -0.672243377 Gen=M Domiciliu=Domiciliu_U Studii=Studii_S Profesie=L
13 0.594573571 Gen=F Domiciliu=Domiciliu_U Studii=Studii_P Profesie=L
14 -0.411341817 Gen=F Domiciliu=Domiciliu_U Studii=Studii_S Profesie=NL
15 -0.191391513 Gen=M Domiciliu=Domiciliu_U Studii=Studii_P Profesie=NL
16 0.228780683 Gen=F Domiciliu=Domiciliu_U Studii=Studii_P Profesie=NL
17 0.566482672 Gen=F Domiciliu=Domiciliu_R Studii=Studii_P Profesie=NL
18 0.008041732 Gen=F Domiciliu=Domiciliu_U Studii=Studii_S Profesie=NL
19 -0.170075033 Gen=M Domiciliu=Domiciliu_R Studii=Studii_S Profesie=NL
20 0.174401375 Gen=M Domiciliu=Domiciliu_U Studii=Studii_P Profesie=L
21 0.015702402 Gen=M Domiciliu=Domiciliu_U Studii=Studii_P Profesie=L
22 0.215135647 Gen=F Domiciliu=Domiciliu_U Studii=Studii_S Profesie=L
23 0.326011341 Gen=F Domiciliu=Domiciliu_U Studii=Studii_S Profesie=L
24 0.215135647 Gen=F Domiciliu=Domiciliu_U Studii=Studii_S Profesie=L
25 0.326011341 Gen=F Domiciliu=Domiciliu_U Studii=Studii_S Profesie=L
26 -0.507777022 Gen=M Domiciliu=Domiciliu_U Studii=Studii_S Profesie=NL
27 0.215135647 Gen=F Domiciliu=Domiciliu_U Studii=Studii_S Profesie=L
28 0.050663918 Gen=M Domiciliu=Domiciliu_R Studii=Studii_P Profesie=NL
29 -0.658598341 Gen=M Domiciliu=Domiciliu_U Studii=Studii_P Profesie=NL
Capitolul 5. Analiza corespondenţelor multiple(ACM) 35
$category
Estimate p.value
Gen=F 0.3405687 1.937853e-11
ApPolitica=ApPolitica_D 0.3051930 6.780190e-11
Studii=Studii_P 0.1954376 1.413964e-04
Capitolul 5. Analiza corespondenţelor multiple(ACM) 37
attr(,"class")
[1] "condes" "list"
# Descrierea dimensiunii 2
res.desc[[2]]
$quali
R2 p.value
Religie 0.61322113 1.032268e-16
Profesie 0.46235575 1.962789e-11
Nationalitate 0.10200268 5.222277e-03
ApPolitica 0.07655028 1.626290e-02
Gen 0.05172007 4.973529e-02
$category
Estimate p.value
Religie=NO 0.3728561 1.032268e-16
Profesie=L 0.2948339 1.962789e-11
Nationalitate=Nationalitate_R 0.1730878 5.222277e-03
ApPolitica=ApPolitica_S 0.1204825 1.626290e-02
Gen=M 0.1082835 4.973529e-02
Gen=F -0.1082835 4.973529e-02
ApPolitica=ApPolitica_D -0.1204825 1.626290e-02
Nationalitate=Nationalitate_A -0.1730878 5.222277e-03
Profesie=NL -0.2948339 1.962789e-11
Religie=O -0.3728561 1.032268e-16
attr(,"class")
[1] "condes" "list"
Utilizarea funcţiei plotellipses(), din pachetul FactoMineR
Figura 5.29.
Figura 5.30.
plotellipses(res.mca, keepvar=1:4)
40 Analiza Datelor. Teorie şi aplicaţii
Figura 5.31.
plotellipses(res.mca, keepvar="Religie")
Figura 5.32.
Capitolul 5. Analiza corespondenţelor multiple(ACM) 41
plotellipses(res.mca, keepvar="Religie")
Figura 5.33.
Figura 5.34.
Capitolul 6
Învățarea automată nesupervizată, supervizată şi
semisupervizată, utilizând mediul R
Prof. dr. Stelian STANCU
6.1. Introducere
- învățarea supervizată/supravegheată;
- învățarea nesupervizată/nesupravegheată;
- învățarea prin reîntărire (consolidarea învățării).
Învățarea automată (ML) continuă să crească în importanță pentru multe
organizații din aproape toate domeniile. Ca exemple de aplicații ale învățării
automate în practică se pot da:
- determinarea probabilității ca un pacient să revină la spital în termen de o
lună de la externare;
- segmentarea clienților unui supermarket în funcție de atribute comune sau
comportamentul de cumpărare;
- predicția pentru o anumită campanie de marketing a ratei de răscumpărare
a unui cupon;
- predicția puterii de cumpărare a clienților, la nivelul unei organizații,
pentru a se permite efectuarea de intervenții preventive etc.
Cele două laturi principale care se disting sunt:
- învățarea supervizată, care construiește modele predictive și
- învățarea nesupervizată, care construiește modele descriptive.
- k-medii;
- etc.
Analiza cluster (identificarea grupurilor sau claselor) poate descoperi și
ajuta la explicarea unor pattern-uri ascunse în date și este frecvent răspunsul la
multiple probleme în multe domenii sau contexte. Găsirea clusterelor poate ajuta la
găsirea relațiilor între variabilele de studiu, dar nu și relațiile pe care le pot avea
aceste variabile în raport cu o variabilă țintă.
De obicei, aplicarea tehnicilor de clustering implică patru faze și anume:
- dezvoltarea unui set de date de lucru - presupune culegerea/observarea
datelor de lucru;
- pregătirea și standardizarea datelor;
- găsirea grupurilor (clusterelor) în date;
- interpretarea acestor clustere și găsirea concluziilor.
Atunci când datele sunt bune, construirea de modele care să răspundă
problemelor de rezolvat devine mai ușoară. Având în vedere că modelele de
clustering folosesc distanțe, acestea sunt influențate în special de datele pe care le
folosim.
Regulile de asociere (învățarea bazată pe reguli de asociere) este o
metodă de învățare automată (ML) bazată pe reguli pentru descoperirea relațiilor
importante între variabile din bazele de date mari, folosind pentru aceasta unele
măsuri de interes.
Ca urmare a celor analizate până acum, putem spune că:
- învățarea supervizată: presupune că toate datele sunt etichetate și
algoritmii învață să prezică ieșirea din datele de intrare.
- învățarea nesupervizată: presupune că toate datele nu sunt etichetate, iar
algoritmii învață să structureze similitudini din datele de intrare.
Algoritmii de învățare nesupravegheată sunt utilizați pentru pre-procesarea
datelor, în timpul analizei exploratorii sau pentru a pregăti algoritmi de învățare
supravegheată.
Alegerea de a utiliza fie un algoritm de învățare automată supravegheată, fie
nesupravegheată depinde, de obicei, de factori legați de structura și volumul
datelor deţinute și de nevoia pentru care se utilizează. În realitate, de cele mai
multe ori, oamenii de știință folosesc împreună pentru a rezolva problemele
respective, atât abordări ale învățării supravegheate, cât și ale învățării
nesupravegheate.
Pe lângă cele două forme de învățare, există și învățarea semisupervizată
care presupune că unele date sunt etichetate, dar cele mai multe dintre ele sunt
neetichetate și se poate utiliza un amestec de tehnici supravegheate și, respectiv,
nesupravegheate.
4 Analiza datelor în mediul R - teorie şi aplicaţii
Învățarea automată
(ML)
Învățarea
are un
Clustering Detectarea Clasificare Regresie feedback
anomaliilor constant
- de grupare (clustering);
- de asociere.
Clustering-ul: vorbim de o problemă de clustering atunci când se dorește
descoperirea grupărilor inerente din date, cum ar fi, spre exemplu, gruparea
clienților privind comportamentul de cumpărare etc.
Asocierea: vorbim de o problemă de învățare a regulilor de asociere atunci când se
dorește descoperirea regulilor care descriu porțiuni mari ale datelor, cum ar fi
persoanele care cumpără produsul A tind, de asemenea, să cumpere și produsul B.
Ca exemple clasice de algoritmi de învățare nesupervizată pot fi enumerați:
- algoritmul k-medii, pentru probleme de clustering;
- algoritmul a priori pentru problemele de învățare a regulilor de asociere.
Pentru a rezuma, cele două tipuri principale de învățare automată (ML)
sunt prezentate în figura următoare:
Învățarea supervizată
Învățarea nesupervizată
(se cunosc valorile
(nu se cunosc valorile
variabilelor de ieșire)
variabilelor de ieșire)
Clasificare Regresie
Clustering Asociere
În figura 6.5 sunt prezentate sintetic cele trei tipuri de învățare automată ce
au fost analizate până acum.
Setul
Eticheta viitoare Eticheta
de antrenare
Ieșirea
Setul de testare Eticheta viitoare Eticheta
(output-ul)
Figura 6.6. Pașii realizării unui clasificator, folosind învățarea automată (ML)
Sursa: Adaptare după https://www.guru99.com/machine-learning-vs-deep-learning.html
Figura 6.7. Pașii realizării unui clasificator, folosind învățarea profundă/complexă (DL)
Sursa: Adaptare după https://www.guru99.com/machine-learning-vs-deep-learning.html
cat/not cat
DL (Deep Learning)
Extragerea
Input Clasificarea Oputput
viitoare
cat/not cat
? ?
7.1.1. Introducere
22
A se vedea pentru detalii Stancu, S., Constantin, A. M. (2014), Rețele neuronale artificiale.
Teorie şi aplicaţii, Editura ASE, Bucureşti.
2 Analiza datelor în mediul R - teorie şi aplicaţii
23
În continuare, în toate abordările, vom folosi acest set de date suplu, pentru a permite și
calculul de mână al pașilor de abordare, permițând astfel compararea datelor obținute cu
cele din mediul R.
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 3
24
De regulă, standardizarea constă în transformarea variabilelor astfel încât acestea să aibă
media zero și abaterea standard unu, adică o distribuţie normală.
4 Analiza datelor în mediul R - teorie şi aplicaţii
25
În R, distanța euclidiană este folosită implicit pentru a măsura disimilaritatea între fiecare
pereche de observații.
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 5
26
A se vedea prezentarea ceva mai târziu.
27
Reprezentările grafice din acest capitol sunt obținute din prelucrări proprii ale autorului,
utilizând mediul R.
6 Analiza datelor în mediul R - teorie şi aplicaţii
unde:
‒ reprezintă un punct aparținând clusterului ;
28
În R, valoarea implicită pentru numărul maxim de iterații este 10.
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 7
29
Este un algoritm de învățare automată nesupravegheată pentru partitionarea unui set de
date dat într-un set de k grupuri (adică k clustere), unde k reprezintă numărul de grupuri
pre-specificate de analist.
8 Analiza datelor în mediul R - teorie şi aplicaţii
- clasificarea cu 3 clase:
model_3clase <- kmeans(productia_scalata, centers = 3)
print(model_3clase$cluster)
[1] 1 3 2 1 1 3 1 2 3 2
Clusterul pentru fiecare observație poate fi prezentat direct în setul de
date, sub forma unei coloane suplimentare, astfel:
productia_scalata_cluster <- data.frame(productia_scalata,
cluster = as.factor(model_3clase$cluster))
productia_scalata_cluster
munca capital pamant productie cluster
1 0.6 0.4761905 0.00000000 0.3333333 1
2 0.8 0.0000000 0.33333333 0.6666667 3
3 0.4 0.9523810 0.33333333 0.1666667 2
4 0.0 0.2380952 0.08333333 0.0000000 1
5 0.2 0.3809524 0.58333333 0.4333333 1
6 0.9 0.1904762 0.33333333 0.6666667 3
7 0.5 0.6666667 0.16666667 0.5000000 1
8 0.7 0.9047619 1.00000000 0.6166667 2
9 1.0 0.4285714 0.83333333 1.0000000 3
10 0.2 1.0000000 0.50000000 0.0000000 2
Precizare. Și în acest caz se poate face o analiză în extensie, similară celei de la
cazul cu 2 clustere.
Deoarece numărul de clustere, k, trebuie stabilit înaintea rulării
algoritmul, este avantajos să se utilizeze mai multe valori diferite pentru k și să se
examineze diferențele dintre rezultate, așa cum sunt prezentate în continuare și
cazurile pentru k=2, k=3 și k=4, pentru exemplificare:
model_2clase1<-kmeans(productia_scalata,centers=2,nstart=30)
model_3clase1<-kmeans(productia_scalata,centers=3,nstart=30)
model_4clase1<-kmeans(productia_scalata,centers=4,nstart=30)
# Reprezentarea grafică pentru comparare
plot2<-fviz_cluster(model_2clase1, geom = "point", data =
productia_scalata) + ggtitle("k = 2")
10 Analiza datelor în mediul R - teorie şi aplicaţii
12 Analiza datelor în mediul R - teorie şi aplicaţii
30
De regulă, standardizarea constă în transformarea variabilelor astfel încât acestea să aibă
media zero și abaterea standard unu, adică o distribuţie normală..
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 13
31
În R, distanța euclidiană este folosită implicit pentru a măsura disimilaritatea între fiecare
pereche de observații.
14 Analiza datelor în mediul R - teorie şi aplicaţii
- legătura medie;
- legătura de tip centroid;
- metoda Ward etc.
Generic, pașii algoritmului aglomerativ sunt următorii:
Pasul 1: Se pune fiecare punct (observație, individ) în propriul său cluster, astfel
încât fiecare cluster conține un singur individ.
Pasul 2: Se alătură două puncte care sunt cele mai apropiate unul de celălalt, din
punctul de vedere al distanței, folosind pentru aceasta matricea distanțelor.
Consecința este că există o clasă mai puțin.
Pasul 3: Se calculează centroidul clusterului nou format.
Pasul 4: Se recalculează distanța dintre clusterul nou format și fiecare dintre
clusterele vechi și se rescriu rezultatele într-o nouă matrice a distanțelor, care va fi
folosită la pasul următor.
Pasul 5: Se repeată pașii 2-4 până când toate observațiile sunt reunite
într-un singur cluster.
Există cinci metode principale pentru a măsura distanța dintre două
clustere și în consecință a clusteriza, denumite și metode de legătură, pentru care
codurile R sunt redate în continuare, și anume:
- metoda celor mai apropiaţi vecini (clustering de legătură
minimă sau unică – legătura/agregarea simplă): calculează
distanța minimă dintre clustere înainte de contopirea/alăturarea
acestora, ca fiind minimul distanței dintre oricare două obiecte/
observații/indivizi din cele două clustere, astfel:
# Se aplică metoda grupării ierarhice, cazul unei legături simple(metoda
# celor mai apropiaţi vecini)
hclust_single <- hclust(dist(productia_scalata), method =
"single")
# Se extrag înălțimile și se trasează dendrograma
round(hclust_single$height, 3)
[1] 0.215 0.313 0.319 0.480 0.591 0.628 0.654 0.701 0.706
plot(hclust_single)
sau varianta:
plot(hclust_single , cex = 0.7, hang = -1)
graficul fiind diferențiat32 în următorul sens:
Observații:
1. Această metodă are tendința de a produce clustere lungi.
2. Funcția hclust() necesită o matrice a distanțelor, motiv pentru care se
observă în interiorul ei ca fiind folosită funcția dist().
Se poate folosi și o metodă prin care să se calculează în prealabil distanța, astfel:
distanta_scalata <- dist(productia_scalata, method =
"euclidean")
hclust_single1 <- hclust(distanta_scalata, method = "single")
round(hclust_single1$height, 3)
plot(hclust_single1)
Metoda grupării ierarhice este utilizată pentru determinarea numărului
optim de clustere, dendrograma fiind astfel mijlocul specific pentru a evidenția
acest lucru. Pentru aceasta, se analizează cea mai mare diferență de înălțimi și se
numără câte linii verticale se formează. În R, se poate evidenția numărul de
clustere formate, direct în dendrogramă, cu funcția rect.hclust(), prin
următoarele linii de cod R:
plot(hclust_single)
# k este folosit pentru a defini numărul de clustere
rect.hclust(hclust_single, k = 2, border = "green")
32
În următoarele abordări nu se va mai face această nuanțare.
16 Analiza datelor în mediul R - teorie şi aplicaţii
18 Analiza datelor în mediul R - teorie şi aplicaţii
20 Analiza datelor în mediul R - teorie şi aplicaţii
Similar cu legătura simplă, dar și cea completă, cea mai mare diferență de
înălțime în dendrogramă apare înainte de combinația finală, adică înainte de
combinația grupului 1 & 3 & 4 & 5 & 7 & 10 cu grupul 2 & 6 & 8 & 9. În acest
caz, numărul optim de clustere este astfel 2. În R, se pot evidenția chiar aceste
două clustere direct în dendrograma cu funcția rect.hclust(), astfel:
plot(hclust_average)
# k este folosit pentru a defini numărul de clustere
rect.hclust(hclust_average, k = 2, border = "green")
22 Analiza datelor în mediul R - teorie şi aplicaţii
33
Înălțimea fuziunii/tăieturii la nivel de dendrogramă are același rol ca și k în k-mean
clustering.
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 23
# Metoda Ward
hc_subgrup <- hclust(dist(productia_scalata), method =
"ward.D2" )
# Tăierea arborelui în 3 clustere, spre exemplu
sub_grup <- cutree(hc_subgrup, k = 3)
# Număr de membri în fiecare cluster
table(sub_grup)
# sub_grup
# 1 2 3
# 6 2 2
Se poate folosi, totodată, ieșirea cutree pentru a adăuga o coloană
suplimentară cu clusterul de care aparține fiecare observație din datelor originare,
astfel:
productia_scalata %>% mutate(cluster = sub_grup) %>%
head
munca capital pamant productie cluster
1 0.6 0.4761905 0.00000000 0.3333333 1
2 0.8 0.0000000 0.33333333 0.6666667 2
3 0.4 0.9523810 0.33333333 0.1666667 1
4 0.0 0.2380952 0.08333333 0.0000000 1
5 0.2 0.3809524 0.58333333 0.4333333 1
6 0.9 0.1904762 0.33333333 0.6666667 2
Se poate reprezenta grafic, de asemenea și dendrograma cu un chenar în
jurul celor 3 clustere, astfel:
plot(hc_subgrup)
rect.hclust(hc_subgrup, k = 3, border = 2:5)
24 Analiza datelor în mediul R - teorie şi aplicaţii
34
Aspectele comune ale celor două metode vor fi prezentate aici, urmând ca doar
specificitățile să fie expuse la metoda de grupare ierarhică.
26 Analiza datelor în mediul R - teorie şi aplicaţii
sau
set.seed(2020)
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 27
sau
set.seed(2020)
# Calculul valorii lui wss
wss <- function(k) {
kmeans(productia_scalata, k, nstart = 30)$tot.withinss
}
# Calculul și reprezentarea lui wss pentru k = 1 până la k = 9
k.values <- 1:9
# Extragerea wss pentru clusterele de la 1 la 9
wss_values <- map_dbl(k.values, wss)
plot(k.values, wss_values,
type="b", pch = 20, frame = FALSE,
xlab="Număr de clustere k",
ylab="Valoarea lui wss")
28 Analiza datelor în mediul R - teorie şi aplicaţii
35
Trebuie să nu se piardă din vedere faptul că datele din setul de date pe care se lucrează,
au fost generate în mod arbitrar, tocmai pentru a face discuții cât mai nuanțate.
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 29
30 Analiza datelor în mediul R - teorie şi aplicaţii
fviz_nbclust(productia_scalata,kmeans,method="silhouette",k.m
ax=8)
32 Analiza datelor în mediul R - teorie şi aplicaţii
34 Analiza datelor în mediul R - teorie şi aplicaţii
36 Analiza datelor în mediul R - teorie şi aplicaţii
numărul optim de clustere. Ca urmare, cele mai populare trei metode pentru
determinarea numărului optim de clustere și aici sunt, de asemenea: metoda
cotului, metoda siluetei medii și respectiv metoda statisticii gap.
38 Analiza datelor în mediul R - teorie şi aplicaţii
Alegerea celei mai bune metode de clustering pentru seriile de date pe care
le deținem, poate reprezenta o adevprată piatră de încercare pentru analiști. Totuși,
acest aspect poate fi abordat folosind pachetul clValid, care poate fi utilizat
pentru a compara simultan mai mulți algoritmi de clustering pentru identificarea
celei mai bune abordări de clustering și a numărului optim de clustere.
Pachetul clValid compară algoritmii de clustering folosind două măsuri
de validare a clusterelor și anume:
- o măsură internă, care utilizează informații intrinseci din date,
precum conectivitatea, coeficientul de siluetă și indicele Dunn,
pentru a evalua calitatea grupării;
- o măsură de stabilitate, o variantă specială a măsurii interne, care
evaluează consistența unui rezultat de clustering, comparând-o cu
rezultatele obținute după eliminarea fiecărei coloane în parte.
Ca măsuri de stabilitate a clusterului avem:
- proporția medie de non-suprapunere (APN);
- distanța medie (AD);
- distanța medie între mijloace (ADM);
- valoarea de merit (FOM).
Observație: APN, AD și ADM se bazează pe tabelul de clasificare încrucișată a
grupării originale pentru setul complet de date, în cazul clusteringului bazat pe
eliminarea câte unei coloane.
APN măsoară proporția medie de observații care nu sunt plasate în același
cluster, prin clustering pe baza datelor complete și clustering pe baza datelor cu o
singură coloană eliminată.
AD măsoară distanța medie între observațiile plasate în același grup, în
ambele cazuri (set complet de date și respectiv set cu eliminarea unei coloane).
ADM măsoară distanța medie între centrele de clustere, pentru observațiile
plasate în același cluster în ambele cazuri.
FOM măsoară media varianței intracluster corespunzătoare coloanei
șterse, unde gruparea se bazează pe coloanele rămase.
APN, ADM și FOM iau valori ce variază de la 0 la 1, o valoare mai mică
corespunzând la rezultate de clustering mai consistente. AD ia valori între 0 și
infinit, fiind de asemenea preferate valorile cât mai mici.
Pentru a realiza scopul propus în R, se va folosi funcția clValid(), cu
formatul său specific, adică:
# Se calculează clValid, ca măsură internă
metode_clustering <- c("hierarchical","kmeans","pam")
masuri_interne <- clValid(productia_scalata, nClust = 2:8,
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 39
40 Analiza datelor în mediul R - teorie şi aplicaţii
# Măsuri de stabilitate
metode_clustering <- c("hierarchical","kmeans","pam")
masuri_stabilitate <- clValid(productia_scalata, nClust =
2:8, clMethods = metode_clustering,validation = "stability",
maxitems=500,metric="euclidean", method="average")
# Se afișează numai scorul optim
optimalScores(masuri_stabilitate)
Score Method Clusters
APN 0.00000000 hierarchical 7
AD 0.06076772 hierarchical 8
ADM 0.00000000 hierarchical 7
FOM 0.10103166 hierarchical 7
Se poate observa că gruparea ierarhică cu 7 clustere are cele mai bune
rezultate în fiecare caz (adică, pentru măsurile de conectivitate, Dunn și
Silhouette). Indiferent de algoritmul de clustering, folosind cele trei măsuri,
numărul optim de clustere pare a fi 7.
42 Analiza datelor în mediul R - teorie şi aplicaţii
text = glue(
"Artist = {Artist.Name}
Genre = {Genre}"
))
Figura 7.33.
Bad Guy cântat de Billie Eilish cu Genre electropop a fost cea mai
populară piesă redată pe spotify în 2019.
#Determinarea top 3 Genre ale melodiilor top Spotify din 2019
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 43
Figura 7.34.
44 Analiza datelor în mediul R - teorie şi aplicaţii
Pe baza afacerii mele, deselectăm mai multe variabile care probabil nu sunt
potrivite pentru această analiză, variabile care nu sunt în format numeric care nu
sunt legate de această clasificare.
spotify_ppt <- spotify %>%
select_if(is.numeric) %>%
# această variabilă nu va fi utilizată, deoarece nu este
# corelată de această clasificare
select(-Popularity)
glimpse(spotify_ppt)
Rows: 50
Columns: 9
$ Beats.Per.Minute <int> 117, 105, 190, 93, 150, 102, 180, 111, 136, 135, 1...
$ Energy <int> 55, 81, 80, 65, 65, 68, 64, 68, 62, 43, 62, 71, 41...
$ Danceability <int> 76, 79, 40, 64, 58, 80, 75, 48, 88, 70, 61, 82, 50...
$ Loudness..dB.. <int> -6, -4, -4, -8, -4, -5, -6, -5, -6, -11, -5, -4, -...
$ Liveness <int> 8, 8, 16, 8, 11, 9, 7, 8, 11, 10, 24, 15, 11, 6, 1...
$ Valence. <int> 75, 61, 70, 55, 18, 84, 23, 35, 64, 56, 24, 38, 45...
$ Length. <int> 191, 302, 186, 198, 175, 220, 131, 202, 157, 194, ...
$ Acousticness.. <int> 4, 8, 12, 12, 45, 9, 2, 15, 5, 33, 60, 28, 75, 7, ...
$ Speechiness. <int> 3, 9, 46, 19, 7, 4, 29, 9, 10, 38, 31, 7, 3, 20, 5...
# Prelucrarea datelor
# Scalarea datelor pentru a obține un PCA util
spotify_scale <- scale(spotify_ppt, center = T, scale = T)
head(spotify_scale)
Beats.Per.Minute Energy Danceability Loudness..dB.. Liveness
[1,] -0.09903428 -0.63659748 0.3872629 -0.1653336 -0.5990121
[2,] -0.48740401 1.19028271 0.6387323 0.8072170 -0.5990121
[3,] 2.26354823 1.12001809 -2.6303701 0.8072170 0.1205220
[4,] -0.87577374 0.06604875 -0.6186148 -1.1378842 -0.5990121
[5,] 0.96898247 0.06604875 -1.1215536 0.8072170 -0.3291868
[6,] -0.58449644 0.27684261 0.7225555 0.3209417 -0.5090703
Valence. Length. Acousticness.. Speechiness.
[1,] 0.91332281 -0.25444591 -0.9560132 -0.8493409
[2,] 0.28653265 2.58124648 -0.7454376 -0.3117834
[3,] 0.68946918 -0.38217980 -0.5348620 3.0031548
[4,] 0.01790829 -0.07561846 -0.5348620 0.5841459
[5,] -1.63860857 -0.66319437 1.2023867 -0.4909692
[6,] 1.31625934 0.48641066 -0.6927937 -0.7597480
Alegerea Optimum K
for (i in 2: maxK){
set.seed(101)
temp <- kmeans(data,i)$tot.withinss
withinall <- append(withinall, temp)
total_k <- append(total_k,i)
}
plot(x = total_k, y = withinall, type = "o", xlab = "Number
of Cluster", ylab = "Total Within")
}
kmeansTunning(spotify_scale, maxK = 7)
Figura 7.35.
Pe baza graficului cotului generat mai sus, numărul optim de cluster este 6.
K-means este un algoritm de grupare care grupează datele pe baza distanței.
Clusterele rezultate sunt declarate a fi optime dacă distanța dintre datele din același
cluster este mică și distanța dintre datele din diferite clustere este mare.
Construirea clusterelor
46 Analiza datelor în mediul R - teorie şi aplicaţii
Figura 7.36.
48 Analiza datelor în mediul R - teorie şi aplicaţii
Figura 7.37.
$quali
R2 p.value
cluster 0.469864 2.523101e-05
$category
Estimate p.value
cluster=cluster_3 1.764689 0.003875064
cluster=cluster_4 1.769540 0.014255483
cluster=cluster_2 -1.529642 0.001266621
attr(,"class")
[1] "condes" "list "
Energy şi Loudness sunt cele două variabile care contribuie cel maim
ult la PC 1. Este foarte logic ca 16% din totalul melodiilor Top Spotify 2019 să
aibă genul Dance Pop.
Figura 7.38.
50 Analiza datelor în mediul R - teorie şi aplicaţii
library(factoextra)
fviz_cluster(spotify_cluster,
data = spotify_ppt[,-10])+
theme_minimal()
Figura 7.39.
Din acest test putem măsura cât de bun este modelul de clustering construit
cu 3 valori:
- suma de pătrate Wihtin (withinss): distanța fiecărei observații până la
centroid pentru fiecare cluster.
- suma sumei de pătrate (totss): distanța fiecărei observații la media
eșantionului global (media datelor globale)
- suma de pătrate inter(între): distanța centroidă a fiecărui cluster până la
media eșantionului global.
spotify_cluster$withinss
[1] 19748.308 25550.545 4186.000 4674.667 1548.500 28079.176
spotify_cluster$totss
[1] 193401.6
spotify_cluster$betweenss
[1] 109614.4
spotify_cluster$betweenss/spotify_cluster$totss
[1] 0.5667708
Pe baza valorii de mai sus, putem vedea că modelul nostru este destul de
bun în gruparea melodiei de top Spotify 2019.
Capitolul 7. Analiza cluster și algoritmi de clustering, în mediul R 51
Rezumarea clusterelor
spotify_ppt %>%
group_by(cluster) %>%
summarise_all("mean")
# A tibble: 6 x 10
cluster Beats.Per.Minute Energy Danceability Loudness..dB.. Liveness Valence.
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 115. 67.8 76.9 -5.54 11.4 71.5
2 2 159. 58.1 68.5 -6.64 11.8 48.2
3 3 96.8 76 73.2 -4 26.5 81.2
4 4 124. 79.7 77.7 -3.33 7.67 65
5 5 167 61.5 72.5 -6 9.5 35.5
6 6 97.8 59.8 67.4 -5.88 18.1 39.9
# ... with 3 more variables: Length. <dbl>, Acousticness.. <dbl>,
# Speechiness. <dbl>
Din vizualizarea graficului, știm că datele au fost grupate în 6 clustere cu
caracteristicile lor distincte. Există 6 grupuri mari de cântece populare pe care
oamenii le aud prin spotify în 2019.
Se constată astfel că, clusterul 1 are ritmuri mari pe minut și dansabilitate.
Așadar, putem spune că clusterul 1 care conține cele mai mari date ale grupării
noastre, este format din melodii optimiste și dansabile cu o durată medie de muzică
de 167 secunde (sub trei minute), care are lungimea cea mai mică comparativ cu
alte clustere.
Capitolul 8
Învăţarea supervizată.
Algoritmi de clasificare a datelor, în mediul R
Prof. dr. Stelian STANCU
8.1. Introducere
Figura 8.1.
P(X) = β0 + β1X
Problema la nivelul acestei abordări este că, de fiecare dată când o linie
dreaptă se potrivește cu un răspuns binar care este codat ca 0 sau 1, în principiu,
putem prezice întotdeauna P(X) < 0 pentru unele valori ale lui X și P(X) > 1 pentru
altele. Pentru a evita această situaţie, se poate utiliza funcția logistică pentru a
modela P(X) care oferă ieșiri între 0 și 1 pentru toate valorile lui X:
Figura 8.2.
Figura 8.3.
Explorarea datelor
Pentru aceasta funcţia names() este utilă pentru a vedea ceea ce este în
cadrul de date, head() este o privire asupra primelor linii, asociată de asemenea
cu funcţia summary().
names(Smarket)
[1] "Year" "Lag1" "Lag2" "Lag3" "Lag4" "Lag5"
[7] "Volume" "Today" "Direction"
head(Smarket)
Year Lag1 Lag2 Lag3 Lag4 Lag5 Volume Today Direction
1 2001 0.381 -0.192 -2.624 -1.055 5.010 1.1913 0.959 Up
2 2001 0.959 0.381 -0.192 -2.624 -1.055 1.2965 1.032 Up
3 2001 1.032 0.959 0.381 -0.192 -2.624 1.4112 -0.623 Down
4 2001 -0.623 1.032 0.959 0.381 -0.192 1.2760 0.614 Up
5 2001 0.614 -0.623 1.032 0.959 0.381 1.2057 0.213 Up
6 2001 0.213 0.614 -0.623 1.032 0.959 1.3491 1.392 Up
summary(Smarket)
Year Lag1 Lag2 Lag3
6 Analiza datelor în mediul R - teorie şi aplicaţii
Vizualizarea datelor
Vizualizarea datelor este probabil cel mai rapid și mai util mod de a
rezuma și de a afla mai multe despre datele deţinute.
Histogramele oferă o indicație a distribuției unei variabile.
par(mfrow=c(1,8))
for(i in 1:8) {
hist(Smarket[,i], main=names(Smarket)[i])
}
Figura 8.4.
Capitolul 8. Învăţarea supervizată. Algoritmi de clasificare a datelor 7
Figura 8.5.
library(mlbench)
missmap(Smarket, col=c("blue", "green"), legend=FALSE)
Figura 8.6.
Figura 8.7.
Figura 8.8.
10 Analiza datelor în mediul R - teorie şi aplicaţii
Figura 8.9.
Rezolvarea suprasolicitării
unde,
P (A | B) - reprezintă probabilitatea condiționată a lui A, fiind dat B;
P (B | A) - reprezintă probabilitatea condițională a lui B, fiind dat A;
P (A) - reprezintă probabilitatea evenimentului A;
P (B) - reprezintă probabilitatea evenimentului B.
Pentru mai mulți predictori, putem formula probabilitatea posterioară
după cum urmează:
Kappa : 0.925
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: setosa Class: versicolor Class: virginica
Sensitivity 1.0000 0.8696 1.0000
Specificity 1.0000 1.0000 0.9302
Pos Pred Value 1.0000 1.0000 0.8500
Neg Pred Value 1.0000 0.9250 1.0000
Prevalence 0.3333 0.3833 0.2833
Detection Rate 0.3333 0.3333 0.2833
Detection Prevalence 0.3333 0.3333 0.3333
Balanced Accuracy 1.0000 0.9348 0.9651
18 Analiza datelor în mediul R - teorie şi aplicaţii
Figura 8.12.
Figura 8.13.
Figura 8.14.
Distanța dintre Maaza și ACTIV fiind cea mai mică, se poate deduce că
Maaza are aceeași natură cu ACTIV, care la rândul său aparține grupului de
băuturi (Health Drinks).
- dacă k = 1, algoritmul consideră cel mai apropiat vecin de Maaza, pe
ACTIV;
- dacă k = 3, algoritmul consideră „3” cei mai apropiați vecini de
Maaza pentru a compara distanțele (ACTIV, Vodka, Monster) -
ACTIV este cel mai apropiat de Maaza.
8.5.2. Aplicaţii
alcătuiască fiecare set (0,75 de antrenament și 0,25 în set de test, în acest caz -
veți vedea frecvent între 60 și 80% din datele folosite pentru instruire) și cum ne
dorim rezultatele (în acest exemplu, o matrice, nu o listă):
install.packages("tidyverse", dependencies = TRUE)
library(tidyverse)
install.packages("class", dependencies = TRUE)
library(class)
install.packages("naivebayes", dependencies = TRUE)
library(naivebayes)
install.packages("data.table", dependencies = TRUE)
library(data.table)
install.packages("psych", dependencies = TRUE)
library(psych)
install.packages("GPArotation", dependencies = TRUE)
library(GPArotation)
# Installing specific Packages
install.packages("e1071", dependencies = TRUE)
install.packages("caTools", dependencies = TRUE)
install.packages("class", dependencies = TRUE)
install.packages("caret", dependencies = TRUE)
install.packages("lattice", dependencies = TRUE)
install.packages("ggplot2", dependencies = TRUE)
# Loading specific package
library(e1071)
library(caTools)
library(class)
library(caret)
library(lattice)
library(ggplot2)
set.seed (2020)
Pasul 1: Se importă setul de date
# Loading data
data(iris)
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
Numărul de linii ale setului de date
nrow(iris)
[1] 150
str(iris)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
22 Analiza datelor în mediul R - teorie şi aplicaţii
28 virginica virginica
29 virginica virginica
30 virginica versicolor
31 virginica virginica
32 virginica virginica
33 virginica virginica
34 virginica virginica
35 virginica virginica
36 virginica virginica
37 virginica virginica
38 virginica virginica
Putem vedea din rezultatul clasificării că există încă unele date care nu se
potrivesc.
Pasul 6: Precizia (Accuracy)
După construirea modelului, putem verifica acuratețea previziunii
folosind matricea de confuzie.
## Se crează matricea de confuzie
table <- table(test_category,test_pred)
table
test_pred
test_category setosa versicolor virginica
setosa 15 0 0
versicolor 0 11 1
virginica 0 1 10
Rezultatele matricei de confuzie sunt date de:
# Se evaluează performanța modelului
install.packages("gmodels", dependencies = TRUE)
library(gmodels)
CrossTable(x=test_category, y=test_pred,prop.chisq = FALSE)
Cell Contents
|-------------------------|
| N |
| N / Row Total |
| N / Col Total |
| N / Table Total |
|-------------------------|
| test_pred
test_category | setosa | versicolor | virginica | Row Total |
--------------|------------|------------|------------|------------|
setosa | 15 | 0 | 0 | 15 |
| 1.000 | 0.000 | 0.000 | 0.395 |
| 1.000 | 0.000 | 0.000 | |
| 0.395 | 0.000 | 0.000 | |
--------------|------------|------------|------------|------------|
versicolor | 0 | 11 | 1 | 12 |
| 0.000 | 0.917 | 0.083 | 0.316 |
| 0.000 | 0.917 | 0.091 | |
| 0.000 | 0.289 | 0.026 | |
--------------|------------|------------|------------|------------|
virginica | 0 | 1 | 10 | 11 |
| 0.000 | 0.091 | 0.909 | 0.289 |
| 0.000 | 0.083 | 0.909 | |
| 0.000 | 0.026 | 0.263 | |
26 Analiza datelor în mediul R - teorie şi aplicaţii
--------------|------------|------------|------------|------------|
Column Total | 15 | 12 | 11 | 38 |
| 0.395 | 0.316 | 0.289 | |
--------------|------------|------------|------------|------------|
Verificarea preciziei
## această funcție împarte predicțiile corecte la numărul
## total de predicții care ne indică cât de precis este
## modelul
accuracy<- function(x){sum(diag(x)/(sum(rowSums(x)))) * 100}
accuracy(table)
[1] 94.73684
Datele testului au constat în 150 de observații, acest caz a obținut valoare
predictivă cu o precizie foarte bună.
# Se potrivește modelul KNN la setul de date de testare
split <- sample.split(iris, SplitRatio = 0.75)
train_cl <- subset(iris, split == "TRUE")
test_cl <- subset(iris, split == "FALSE")
# Scalarea caracteristicilor
train_scale <- scale(train_cl[, 1:4])
test_scale <- scale(test_cl[, 1:4])
# Se potrivește modelul KNN la setul de date de antrenare
# K = 1
classifier_knn <- knn(train = train_scale,
test = test_scale,
cl = train_cl$Species,
k = 1)
classifier_knn
[1] setosa setosa setosa setosa setosa setosa
[7] setosa setosa setosa setosa setosa setosa
[13] setosa setosa setosa setosa setosa setosa
[19] setosa setosa versicolor versicolor versicolor versicolor
[25] versicolor versicolor versicolor versicolor virginica versicolor
[31] versicolor versicolor versicolor virginica versicolor versicolor
[37] versicolor versicolor versicolor versicolor virginica virginica
[43] virginica virginica virginica virginica virginica virginica
[49] virginica virginica virginica virginica virginica versicolor
[55] virginica virginica virginica virginica virginica virginic
# Matricea de confuzie
cm <- table(test_cl$Species, classifier_knn)
cm
classifier_knn
setosa versicolor virginica
setosa 20 0 0
versicolor 0 18 2
virginica 0 1 19
# Evaluarea modelului - Alegerea lui K
# Se calculează din eșantionul de eroare
misClassError <- mean(classifier_knn != test_cl$Species)
print(paste('Accuracy =', 1-misClassError))
[1] "Accuracy = 0.95"
# K = 3
classifier_knn <- knn(train = train_scale,
Capitolul 8. Învăţarea supervizată. Algoritmi de clasificare a datelor 27
test = test_scale,
cl = train_cl$Species,
k = 3)
misClassError <- mean(classifier_knn != test_cl$Species)
print(paste('Accuracy =', 1-misClassError))
[1] "Accuracy = 0.95"
# K = 5
classifier_knn <- knn(train = train_scale,
test = test_scale,
cl = train_cl$Species,
k = 5)
misClassError <- mean(classifier_knn != test_cl$Species)
print(paste('Accuracy =', 1-misClassError))
[1] "Accuracy = 0.95"
# K = 7
classifier_knn <- knn(train = train_scale,
test = test_scale,
cl = train_cl$Species,
k = 7)
misClassError <- mean(classifier_knn != test_cl$Species)
print(paste('Accuracy =', 1-misClassError))
[1] "Accuracy = 0.966666666666667"
# K = 15
classifier_knn <- knn(train = train_scale,
test = test_scale,
cl = train_cl$Species,
k = 15)
misClassError <- mean(classifier_knn != test_cl$Species)
print(paste('Accuracy =', 1-misClassError))
[1] "Accuracy = 0.983333333333333"
# K = 19
classifier_knn <- knn(train = train_scale,
test = test_scale,
cl = train_cl$Species,
k = 19)
misClassError <- mean(classifier_knn != test_cl$Species)
print(paste('Accuracy =', 1-misClassError))
[1] "Accuracy = 0.966666666666667"
Aplicaţia 2. Folosirea algoritmului K-Near Neighbor pe setul de date spotify
care include 50 observaţii și 10 variabile sau atribute, plus o coloană cu eticheta,
Eticheta, ce conţine valorile 1-....., 2-......, 3-......., 4-...........
Primele 50 de melodii cele mai ascultate din lume după spotify. Acest set
de date conține mai multe variabile despre melodii. Această bază de date conține
50 de melodii, cu 13 variabile.
Informații despre variabile:
Track.Name: numele pistei
Artist.Name: Numele artistului
Genr: genul piesei
Beats.Per.Minute: tempo-ul melodiei.
28 Analiza datelor în mediul R - teorie şi aplicaţii
Energie: Energia unui cântec - cu cât valoarea este mai mare, cu atât este mai
energică. cântec
Danceability: Cu cât valoarea este mai mare, cu atât este mai ușor să dansezi
la acest cântec.
Loudness..dB ..: Cu cât valoarea este mai mare, cu atât cântecul este mai
puternic.
Liveness: Cu cât este mai mare valoarea, cu atât este mai probabil ca melodia
să fie o înregistrare live.
Valence .: Cu cât valoarea este mai mare, cu atât starea de spirit este mai
pozitivă pentru melodie.
Length .: Durata melodiei.
Acousticness ..: Cu cât valoarea este mai mare, cu atât este mai acustică
melodia.
Speechiness: Cu cât este mai mare valoarea, cu atât conține mai mult cuvântul
rostit.
Popularity: cu cât valoarea este mai mare, cu atât este mai populară melodia.
install.packages("tidyverse", dependencies = TRUE)
library(tidyverse)
install.packages("class", dependencies = TRUE)
library(class)
install.packages("naivebayes", dependencies = TRUE)
library(naivebayes)
install.packages("data.table", dependencies = TRUE)
library(data.table)
install.packages("psych", dependencies = TRUE)
library(psych)
install.packages("GPArotation", dependencies = TRUE)
library(GPArotation)
install.packages("pROC", dependencies = c("Depends",
"Suggests"))
library(pROC)
Pasul 1: Se importă setul de date
spotify <- read.csv("top50_final.csv")
print(spotify)
Track.Name
1 Señorita
2 China
3 boyfriend (with Social House)
4 Beautiful People (feat. Khalid)
5 Goodbyes (Feat. Young Thug)
6 I Don't Care (with Justin Bieber)
7 Ransom
8 How Do You Sleep?
9 Old Town Road - Remix
10 bad guy
11 Callaita
12 Loco Contigo (feat. J. Balvin & Tyga)
13 Someone You Loved
14 Otro Trago - Remix
15 Money In The Grave (Drake ft. Rick Ross)
Capitolul 8. Învăţarea supervizată. Algoritmi de clasificare a datelor 29
38 -5 36 91 162 13 5
39 -5 11 95 181 4 6
40 -6 6 68 199 48 7
41 -7 10 40 228 2 3
42 -6 7 73 171 1 5
43 -6 23 32 216 37 3
44 -9 6 35 198 5 13
45 -4 5 75 162 39 12
46 -2 58 44 182 7 5
47 -4 8 80 202 24 6
48 -3 17 67 214 19 5
49 -6 41 50 218 23 3
50 -6 7 61 206 21 12
Popularity
1 79
2 92
3 85
4 86
5 94
6 84
7 92
8 90
9 87
10 95
11 93
12 86
13 88
14 87
15 92
16 82
17 90
18 91
19 88
20 91
21 91
22 91
23 83
24 91
25 89
26 70
27 83
28 89
29 91
30 89
31 84
32 89
33 89
34 89
35 89
36 89
37 91
38 87
39 80
40 78
41 88
42 90
43 87
44 84
45 88
46 88
47 88
48 88
32 Analiza datelor în mediul R - teorie şi aplicaţii
49 88
50 82
Popularity
Min. :70.00
1st Qu.:86.00
Median :88.00
Mean :87.50
3rd Qu.:90.75
Max. :95.00
Pasul 2: Normalizarea datelor
Trebuie normalizat setul de date, astfel încât ieșirea să rămână imparțială.
Deoarece scala fiecărei variabile este diferită, trebuie stabilite ponderi pentru a evita
deplasarea.
Dacă datele nu sunt normalizate, aceasta va duce la un rezultat incorect.
## Se creează funcția de normalizare
normalize <-function(x) {
(x -min(x))/(max(x)-min(x))
}
## Se rulează normalizarea a 10 coloane ale setului de date,
## deoarece acestea sunt predictorii
spotify_norm <- as.data.frame(lapply(spotify[,c(4:13)],
normalize))
head(spotify_norm)
Beats.Per.Minute Energy Danceability Loudness..dB.. Liveness Valence.
1 0.30476190 0.4107143 0.7704918 0.5555556 0.05660377 0.76470588
2 0.19047619 0.8750000 0.8196721 0.7777778 0.05660377 0.60000000
3 1.00000000 0.8571429 0.1803279 0.7777778 0.20754717 0.70588235
4 0.07619048 0.5892857 0.5737705 0.3333333 0.05660377 0.52941176
5 0.61904762 0.5892857 0.4754098 0.7777778 0.11320755 0.09411765
6 0.16190476 0.6428571 0.8360656 0.6666667 0.07547170 0.87058824
Length. Acousticness.. Speechiness. Popularity
1 0.3917526 0.04054054 0.00000000 0.36
2 0.9639175 0.09459459 0.13953488 0.88
3 0.3659794 0.14864865 1.00000000 0.60
4 0.4278351 0.14864865 0.37209302 0.64
5 0.3092784 0.59459459 0.09302326 0.96
6 0.5412371 0.10810811 0.02325581 0.56
Pasul 3: Splitarea datelor
Se aplică algoritmul KNN asupra setului de date de antrenare și rezultatele
sunt verificate pe setul de date de testare. Proporţia alegerii datelor depinde de
cercetător, de data aceasta fiind folosite 25% pentru testare și 75% pentru antrenare.
## Se generează un număr aleatoriu care reprezintă 75% din
## numărul total de linii din setul de date
data_split <- sample(1:nrow(spotify_norm), 0.75 *
nrow(spotify_norm))
data_split
[1] 22 41 43 34 31 26 46 19 5 27 6 47 4 17 13 25 29 3 28 39 10 32 18 50 16
[26] 2 40 37 20 7 38 8 24 49 35 42 9
## Se extrage setul de antrenare
train <- spotify_norm[data_split,]
head(train)
Beats.Per.Minute Energy Danceability Loudness..dB.. Liveness
Valence.
22 0.6571429 0.4821429 0.6721311 0.5555556 0.13207547 0.44705882
41 0.1809524 0.6428571 0.6557377 0.4444444 0.09433962 0.35294118
43 0.1047619 0.1250000 0.4590164 0.5555556 0.33962264 0.25882353
34 Analiza datelor în mediul R - teorie şi aplicaţii
| N |
| N / Row Total |
| N / Col Total |
| N / Table Total |
|-------------------------|
Total Observations in Table: 13
| test_pred
test_category | 1 | 2 | 3 | 4 | Row Total |
--------------|-----------|-----------|-----------|-----------|-----------|
1 | 2 | 0 | 1 | 1 | 4 |
| 0.500 | 0.000 | 0.250 | 0.250 | 0.308 |
| 0.286 | 0.000 | 0.333 | 1.000 | |
| 0.154 | 0.000 | 0.077 | 0.077 | |
--------------|-----------|-----------|-----------|-----------|-----------|
2 | 1 | 1 | 0 | 0 | 2 |
| 0.500 | 0.500 | 0.000 | 0.000 | 0.154 |
| 0.143 | 0.500 | 0.000 | 0.000 | |
| 0.077 | 0.077 | 0.000 | 0.000 | |
--------------|-----------|-----------|-----------|-----------|-----------|
3 | 1 | 0 | 1 | 0 | 2 |
| 0.500 | 0.000 | 0.500 | 0.000 | 0.154 |
| 0.143 | 0.000 | 0.333 | 0.000 | |
| 0.077 | 0.000 | 0.077 | 0.000 | |
--------------|-----------|-----------|-----------|-----------|-----------|
4 | 3 | 1 | 1 | 0 | 5 |
| 0.600 | 0.200 | 0.200 | 0.000 | 0.385 |
| 0.429 | 0.500 | 0.333 | 0.000 | |
| 0.231 | 0.077 | 0.077 | 0.000 | |
--------------|-----------|-----------|-----------|-----------|-----------|
Column Total | 7 | 2 | 3 | 1 | 13 |
| 0.538 | 0.154 | 0.231 | 0.077 | |
--------------|-----------|-----------|-----------|-----------|-----------|
Verificarea preciziei
## această funcție împarte predicțiile corecte la numărul
## total de predicții care ne indică cât de precis este
## modelul
accuracy<- function(x){sum(diag(x)/(sum(rowSums(x)))) * 100}
accuracy(table)
[1] 30.76923
Datele testului au constat în 50 de observații, acest caz a obținut valoare
predictivă cu o precizie redusă.
Random forest
Capitolul 8. Învăţarea supervizată. Algoritmi de clasificare a datelor 37
Clasificarea
plot(classifier_RF)
Figura 8.15.
Figura 8.16.
unde,
P (A | B) - reprezintă probabilitatea condiționată a lui A, fiind dat B;
P (B | A) - reprezintă probabilitatea condițională a lui B, fiind dat A;
P (A) - reprezintă probabilitatea evenimentului A;
P (B) - reprezintă probabilitatea evenimentului B.
Pentru mai mulți predictori, putem formula probabilitatea posterioară după cum
urmează:
Kappa : 0.925
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: setosa Class: versicolor Class: virginica
Sensitivity 1.0000 0.8696 1.0000
Specificity 1.0000 1.0000 0.9302
Pos Pred Value 1.0000 1.0000 0.8500
Neg Pred Value 1.0000 0.9250 1.0000
Prevalence 0.3333 0.3833 0.2833
Detection Rate 0.3333 0.3333 0.2833
Detection Prevalence 0.3333 0.3333 0.3333
Balanced Accuracy 1.0000 0.9348 0.9651
Modelul a obținut o precizie de 95% cu o valoare p-value foarte mică(foarte aproape
de 0). Cu Sensitivity, Specificity şi Balanced accuracy, construirea
modelului se deduce că a fost una bună.
Capitolul 10
LDA (Linear Discriminant Analysis) și PCA (Principal
Component Analysis), rol în clasificare şi reducere a
dimensionalităţii datelor
Prof. dr. Stelian STANCU
Figura 10.1.
Ideea din spatele LDA este simplă. Matematic vorbind, trebuie să găsim un
nou spațiu al caracteristicilor, astfel încât prin proiectarea datelor să se maximizeze
separabilitatea claselor.
Ca urmare, primul pas este acela de a găsi o modalitate de a măsura
capacitatea de separare a fiecărui nou candidat în spațiul funcțional. Distanța dintre
mijloacele proiectate pentru fiecare clasă ar putea fi una dintre măsuri, însă numai
această distanță nu ar fi o valoare foarte bună, deoarece nu ține cont de răspândirea
datelor.
2 Analiza datelor în mediul R - teorie şi aplicaţii
27
Puteți verifica setul de date aici: https://archive.ics.uci.edu/ml/datasets/Statlog+(Vehicle+Silhouettes)
Capitolul 10. Linear Discriminant Analysis și Principal Component Analysis 3
library(mvtnorm)
# Matricea de covarianță pentru un eșantion gaussian
# bivariat aleatoriu
var_covar = matrix(data = c(1.5, 0.4, 0.4, 1.5), nrow = 2)
var_covar
[,1] [,2]
[1,] 1.5 0.4
[2,] 0.4 1.5
# Eșantioane gaussiene bivariate aleatorii pentru clasa X1
X1 <- rmvnorm(400, mean = c(5, 5), sigma = var_covar)
head(X1)
[,1] [,2]
[1,] 3.788421 3.323329
[2,] 5.392619 4.199976
[3,] 5.289240 4.534126
[4,] 5.618388 4.613576
[5,] 3.540396 5.072415
[6,] 6.989838 5.449686
# Eșantioane gaussiene bivariate aleatorii pentru clasa X2
X2 <- rmvnorm(600, mean = c(3, 3), sigma = var_covar)
head(X2)
[,1] [,2]
[1,] 3.009785 3.377403
[2,] 3.168620 3.383941
[3,] 3.701800 3.338689
[4,] 4.137066 4.700223
[5,] 3.048850 3.815695
[6,] 3.226221 2.207136
# Exemple pentru variabila dependentă
Y <- c(rep(1, 400), rep(-1, 600))
head(Y)
[1] 1 1 1 1 1 1
# Combinarea variabilelor independente și dependentă într-un
# cadru de date
dataset <- as.data.frame(cbind(rbind(X1, X2), Y))
head(dataset)
V1 V2 Y
1 3.788421 3.323329 1
2 5.392619 4.199976 1
3 5.289240 4.534126 1
4 5.618388 4.613576 1
5 3.540396 5.072415 1
6 6.989838 5.449686 1
colnames(dataset) <- c("X1", "X2", "Y")
dataset$Y <- as.character(dataset$Y)
head(dataset$Y)
[1] "1" "1" "1" "1" "1" "1"
# Trasarea eşantioanelor de mai sus și colorarea după
# etichetele clasei
ggplot(data = dataset) + geom_point(aes(X1, X2, color = Y))
Capitolul 10. Linear Discriminant Analysis și Principal Component Analysis 13
Figura 10.2.
Așa cum am menționat anterior, vom aplica LDA pe același set de date de
două ori, dar cu rol diferit de fiecare dată. În prima abordare, LDA va funcționa ca
și clasificator și apoi se va reduce dimensionalitatea setului de date, pentru ca în a
doua abordare, să se apeleze la o rețea neuronală care va avea rolul de clasificare,
rezultatele ambelor abordări urmând a fi comparate ulterior.
În limbajul R, LDA ca și clasificator presupune după cum urmează:
- prezentarea prin linii de cod R a modului de încărcare a setului de date
https://archive.ics.uci.edu/ml/datasets/Statlog+(Vehicle+Silhouettes) și
filtrarea doar a liniilor din clasele bus, opel și van.
library(dplyr)
data_raw = read.csv(/"../dataset vehicle.csv", stringsAsFactor =
FALSE )
#data = data_raw
data = data_raw %>% filter( class == "bus" | class == "opel" |
class == "van" )
- liniile de cod R pentru scalarea setului de date, utilizând tehnica
standard:
print( "... scaling dataset ..." )
maxs = apply( data[,1:18], 2, max )
mins = apply( data[,1:18], 2, min )
14 Analiza datelor în mediul R - teorie şi aplicaţii
O primă remarcă este aceea că ambele rezultate sunt destul de apropiate, din
punct de vedere al exactității, indicând astfel faptul că LDA funcționează foarte bine în
ambele roluri, adică atât ca o tehnică de reducere a dimensionalității, cât și ca un
clasificator liniar. Rezumând, decizia de alegere a modurilor LDA va depinde de setul
de date avut la dispoziție, astfel:
- dacă LDA poate fi separat liniar ca și clasificator este o soluție rapidă, cu
rezultate foarte bune;
- dacă caracteristica setului de date este neliniară, LDA va fi un instrument în
plus ce poate fi aplicat peste setul de date, pentru a încerca să
îmbunătățească rezultatele sau să faciliteze munca clasificatorului
posterior.
Capitolul 10. Linear Discriminant Analysis și Principal Component Analysis 17
Există și calea în care se pot combina PCA și LDA, ambele pentru reducerea
dimensionalității. În primul rând, PCA acționează reducând caracteristicile prin variația
sa, apoi LDA aplică reducerea dimensionalității liniare și, în sfârșit, este efectuat un
model de clasificare peste acest set modificat de date.
Am abordat deja aspect ale reducerii dimensionalității. Acest subiect este unul
dintre cele mai interesante, întrucât este important să găsim algoritmi capabili să reducă
numărul de caracteristici, alegându-le pe cele mai importante care să fie încă
reprezintativ pentru întregul set de date.
În continuare vom folosind o analiză în componente principale (PCA) pentru a
încerca o îmbunătățire a performanțelor de clasificare a setului de date de la nivelul unei
rețele neuronale. Înainte de a merge direct la codurile R, se impune o discuție despre
algoritmii de reducere a dimensionalității. Există doi algoritmi principali pentru
reducerea dimensionalității: analiza discriminant liniară (LDA) și respective analiza în
componente principale (PCA).
Diferența de bază între aceste două metode este că LDA folosește informațiile
la nivelul claselor, pentru a găsi noi caracteristici care să permit maximizarea
separabilitatății, în timp ce PCA folosește variația fiecărei caracteristici pentru a face
același lucru. În acest context, LDA poate fi considerat un algoritm de învățare
supravegheată, în timp ce PCA este un algoritm de învățare nesupravegheată.
Ideea din spatele PCA este pur și simplu de a găsi un set de axe de dimensiuni
reduse, care să rezume datele deținute. În limbajul R, PCA ca algoritm de clasificare
presupune după cum urmează:
- pentru început vom presupune că avem o bază de date compusă dintr-un
set de proprietăți ale unui lot de mașini. Aceste proprietăți descriu fiecare
mașină după dimensiune, culoare, circularitate, compactitate, rază, numărul
de scaune, număr de uși, dimensiunea portbagajului etc.
- se va urmări să se elimine aceste redundanțe și să descrie fiecare
autovehicul cu mai puține proprietăți. Cu toate acestea, multe dintre aceste
caracteristici vor măsura proprietățile asociate și astfel vor fi redundante.
18 Analiza datelor în mediul R - teorie şi aplicaţii
Ca urmare, pentru a reduce dimensiunea setului de date, vom alege acei vectori
proprii care au mai multă varianță și îi eliminăm pe cei cu varianța mai mică. Pe măsură
ce urmăm exemplul de mai jos, va fi din ce în ce mai clar cum funcționează PCA.
28
Setul de date este originar din depozitul de învățare automată UCI, numit setul de date
„Statlog (Silhouettes Vehicle)”.
29
Pentru mai multe detalii se poate verifica link-ul:
https://archive.ics.uci.edu/ml/datasets/Statlog+ (Vehicle+Silhouettes).
20 Analiza datelor în mediul R - teorie şi aplicaţii
- se vor scrie liniile de cod R care să aplice rețeaua neuronală pe noul set de
date (adică pe cel de testare) și să se verifice dacă se pot obține rezultate
mai bune.
Observație: Setul de date de testare va fi același utilizat în abordarea
anterioară.
nn.results = compute( nn, testset )
- se vor scrie liniile de cod R care să pună în evidență rezultatele aplicării
modelului:
Capitolul 10. Linear Discriminant Analysis și Principal Component Analysis 21