Documente Academic
Documente Profesional
Documente Cultură
2011
Proiect DATA MINING 2011
Cuprins
2
Proiect DATA MINING 2011
3
Proiect DATA MINING 2011
Capitol 1 Introducere
Se imparte baza de date in lot de antrenare si lot de test. Pentru fiecare clasa de vectori
se considera 2/3 in lotul de antrenare si 1/3 in lotul de test.
Pe setul de antrenare:
X,Y,month,day,FFMC,DMC,DC,ISI,temp,RH,wind,rain,area
4
Proiect DATA MINING 2011
7,5,mar,fri,86.2,26.2,94.3,5.1,8.2,51,6.7,0,0
7,4,oct,tue,90.6,35.4,669.1,6.7,18,33,0.9,0,0
7,4,oct,sat,90.6,43.7,686.9,6.7,14.6,33,1.3,0,0
8,6,mar,fri,91.7,33.3,77.5,9,8.3,97,4,0.2,0
8,6,mar,sun,89.3,51.3,102.2,9.6,11.4,99,1.8,0,0
8,6,aug,sun,92.3,85.3,488,14.7,22.2,29,5.4,0,0
8,6,aug,mon,92.3,88.9,495.6,8.5,24.1,27,3.1,0,0
8,6,aug,mon,91.5,145.4,608.2,10.7,8,86,2.2,0,0
8,6,sep,tue,91,129.5,692.6,7,13.1,63,5.4,0,0
7,5,sep,sat,92.5,88,698.6,7.1,22.8,40,4,0,0
7,5,sep,sat,92.5,88,698.6,7.1,17.8,51,7.2,0,0
7,5,sep,sat,92.8,73.2,713,22.6,19.3,38,4,0,0
6,5,aug,fri,63.5,70.8,665.3,0.8,17,72,6.7,0,0
6,5,sep,mon,90.9,126.5,686.5,7,21.3,42,2.2,0,0
6,5,sep,wed,92.9,133.3,699.6,9.2,26.4,21,4.5,0,0
6,5,sep,fri,93.3,141.2,713.9,13.9,22.9,44,5.4,0,0
5,5,mar,sat,91.7,35.8,80.8,7.8,15.1,27,5.4,0,0
8,5,oct,mon,84.9,32.8,664.2,3,16.7,47,4.9,0,0
6,4,mar,wed,89.2,27.9,70.8,6.3,15.9,35,4,0,0
6,4,apr,sat,86.3,27.4,97.1,5.1,9.3,44,4.5,0,0
6,4,sep,tue,91,129.5,692.6,7,18.3,40,2.7,0,0
5,4,sep,mon,91.8,78.5,724.3,9.2,19.1,38,2.7,0,0
7,4,jun,sun,94.3,96.3,200,56.1,21,44,4.5,0,0
……………………………………………..
Unde:
1. X - x-axis spatial coordinate within the Montesinho park map: 1 to 9
2. Y - y-axis spatial coordinate within the Montesinho park map: 2 to 9
3. month - month of the year: "jan" to "dec"
4. day - day of the week: "mon" to "sun"
5. FFMC - FFMC index from the FWI system: 18.7 to 96.20
6. DMC - DMC index from the FWI system: 1.1 to 291.3
7. DC - DC index from the FWI system: 7.9 to 860.6
8. ISI - ISI index from the FWI system: 0.0 to 56.10
9. temp - temperature in Celsius degrees: 2.2 to 33.30
10. RH - relative humidity in %: 15.0 to 100
11. wind - wind speed in km/h: 0.40 to 9.40
12. rain - outside rain in mm/m2 : 0.0 to 6.4
13. area - the burned area of the forest (in ha): 0.00 to 1090.84
(this output variable is very skewed towards 0.0, thus it may make
sense to model with the logarithm transform).
Initial am citit datele din baza de date, le-am pus intr-un fisier.. Am codat numele zilelor saptamanii
si numele lunilor anului in felul urmator:
Ianuarie-1
Februarie -2
......
5
Proiect DATA MINING 2011
Decembrie-12
Luni-1
Marti-2
......
Duminica-7
Etapa urmatoare am impartit vectorii in 2 clase. Cele 2 clase le-am ales in functie de componenta
numarul 13 si anume aria de padure arsa. Astfel daca aceasta componenta este 0 am considerat ca nu
avem incendiu si am pus acesti vectori intr-un nou vector in care o sa am toti vectorii care apartin
clasei 1. Toti ceilalti vectori in care aria arsa e diferita de 0 => o sa am incendiu, acesti vectori vor
constitui cea de-a doua clasa.
Dupa aceasta impartire a vectorilor in clase am reimpartit vectorii din fiecare clasa in vectori
pentru lot de antrenare -2/3 din numarul total de vectori ai clasei respective si 1/3 din numarul total in
lotul de test.
Mai jos am pus codul Matlab pe care l-am utilizat pentru a realiza ce am explicat mai sus:
v=zeros(nrlinii,1);
k=0;l=0;
for i=1:nrlinii
if V(i,13)==0
k=k+1;
B(k,:)=V(i,:);
v(i)=1;
else
l=l+1;
C(l,:)=V(i,:);
v(i)=2;
end
end
length1=165;
for i=1:length1
for j=1:nrcoloane
lot_antrenare_cls1(i,j)=B(i,j);
end
end
for i=length1+1:247
for j=1:nrcoloane
lot_test_cls1(i-165,j)=B(i,j);
end
end
length2=180;
for i=1:length2
for j=1:nrcoloane
lot_antrenare_cls2(i,j)=C(i,j);
end
end
for i=length2+1:270
for j=1:nrcoloane
lot_test_cls2(i-180,j)=C(i,j);
end
end
6
Proiect DATA MINING 2011
7
Proiect DATA MINING 2011
T T 1, i = j
Φi ⋅ Φ j = . (1.2)
0, i ≠ j
Fiecare vector X se transforma in:
Y = KX = ( y1 , y 2 ,K y n ) ,
T
(1.3)
unde y i = Φ Ti ⋅ X .
i =1
(1.4)
8
Proiect DATA MINING 2011
Se vor reŃine numai m < n componente ale lui Y , restul de n - m componente fiind înlocuite
cu constantele preselectate bi , astfel că se estimează X ca:
{
care, Ńinând cont de relaŃia (1.2), devine ε 2 (m) = E ( y i − bi )2 }. FuncŃia eroare ε 2 (m) se
minimizează alegând în mod adecvat Φ i şi bi .
9
Proiect DATA MINING 2011
(1.5)
(1.6)
Ecuatia (1.6) arata ca Φ i este un vector propriu al matricei de covariatie Σ x , iar β i este
(1.7)
Formula (1.4) se mai numeşte dezvoltarea Karhunen- Loève, iar transformarea definită
de relaŃia (1.3) se numeşte transformarea Karhunen-Loève. Problema minimizării lui ε 2 (m)
se numeşte în statistică analiză factorială (sau analiza componentelor principale).
ObservaŃii:
a)
ImportanŃa fiecărei caracteristici este determinată de valoarea proprie corespunzătoare. Dacă
o caracteristică, de exemplu y i , este eliminată, atunci eroarea pătratică medie creşte cu λi .
Aşadar caracteristicile cu cele mai mici valori proprii trebuie eliminate primele. Dacă valorile
proprii (care sunt reale şi pozitive deoarece matricea Σ x este simetrică) sunt indexate astfel:
λ1 > λ 2 > K > λ n > 0, atunci prioritatea reŃinerii caracteristicilor y i este în ordinea naturală a
indicilor;
10
Proiect DATA MINING 2011
b)
Dacă Y = K ⋅ X , atunci între matricile de covariaŃie ale lui X şi Y există relaŃia
T
ΣY = K ⋅ Σ X ⋅ K . Pentru transformarea Karhunen-Loève deducem că Y are componentele
necorelate, adică ΣY este o matrice diagonală şi anume:
c)
Vectorii proprii ai lui Σ x minimizează ε 2 (m) pentru orice alegere a unor baze ortonormate de
vectori.
11
Proiect DATA MINING 2011
Factorul de prezervare a energiei semnalului in m componente se poate bine aproxima
cu formula
(1.8)
unde λ i sunt valorile proprii ordonate descrescator, iar η este factorul de conservare a
energiei.
Complementul lui , notat cu ε = 100 − η este eroarea patratica medie de selectie (costul
reducerii dimensiunii).
Analiza Componentelor Principale (PCA) este o metodă statistică simplă pentru
reducerea dimensionalităŃii (compresie) care a devenit probabil cea mai frecvent utilizată .
Vectorii proprii ar putea fi priviŃi ca fiind un set de caracteristici generale ale variaŃiilor
vectorilor din baza de date. Odată ce datele sunt normalizate (aduse la o dimensiune
standard), ele pot fi tratate ca vectori unidimensionali de valori de pixeli.
Pentru imagini, această metodă este sensibilă la variaŃii ca scalare, iluminare, rotaŃie
sau translaŃie şi necesită o reînvăŃare completă a datelor de antrenare pentru a adăuga noi
subiecŃi în baza de date.
Schema algoritmului PCA pentru lotul de antrenare:
12
Proiect DATA MINING 2011
Unde vectorii Xi sunt vectorii din lotul de antrenare ai clasei 1 si sunt aranjati sub forma
unor vectori n-dimensionali i = 1,..,L, L = numarul de componente din fiecare vector . Pentru
determnarea mediei calculam suma tuturor vectorilor apoi impartim la numarul total de vectori
care i-am adaugat in suma mea.
13
Proiect DATA MINING 2011
In tabelul urmator am pus valorile obtinute cu implementarea mea atat pe clase cat si pe tot
lotul de antrenare
14
Proiect DATA MINING 2011
3.9678 3.9678
0.0041 0.0041
Tabel 3. Media vectorilor din setul de antrenare
Observatie: Am obtinut aceleasi valori atat cu implementarea mea cat si cu functia mean
implementata de Matlab exact cum ne asteptam.
2.2.2.Matricea de covariatie
%Matricea de covariatie
matcov=zeros(nr-1,nr-1); %Inializare matricea de covariatie cu 0
for j=1:dim
matcov=matcov +((1/dim)*(V(1:nr-1,j)-mediaV)*(V(1:nr-1,j)-mediaV)');
end
disp('Matricea de covariatie este:')
disp(matcov)
%------------------------------------------------------------------
4.66 1.62 -0.13 0.05 -0.67 -7.60 -36.27 1.01 -0.24 5.70 0.24 0.02
1.62 1.77 -0.75 -0.04 -0.85 -8.83 -88.25 0.00 -1.01 4.56 0.06 0.00
-0.13 -0.75 6.57 -0.13 4.89 73.44 648.69 3.51 6.84 -3.10 -0.54 0.00
0.05 -0.04 -0.13 4.61 -0.12 1.70 -15.52 1.63 0.57 0.62 0.14 0.01
-0.67 -0.85 4.89 -0.12 25.77 97.81 520.95 13.54 9.18 -24.75 -0.11 0.01
-7.60 -8.83 73.44 1.70 97.81 2069.05 8253.31 98.59 116.17 20.21 -1.42 0.59
-6.27 -88.25 648.69 -15.52 520.95 8253.31 68718.49 336.30 699.93 -230.5 -2.32 0.78
1.01 0.00 3.51 1.63 13.54 98.59 336.30 29.22 7.49 -7.00 1.03 0.04
-0.24 -1.01 6.84 0.57 9.18 116.17 699.93 7.49 23.29 -48.50 -1.11 0.01
5.70 4.56 -3.10 0.62 -24.75 20.21 -230.59 -7.00 -48.50 290.07 0.95 0.30
0.24 0.06 -0.54 0.14 -0.11 -1.42 -62.32 1.03 -1.11 0.95 2.83 0.03
0.02 0.00 0.00 0.01 0.01 0.59 0.78 0.04 0.01 0.30 0.03 0.01
Tabel 4. Valori matrice de covariatie a vectorilor din prima clasa
15
Proiect DATA MINING 2011
5.43 1.27 -0.79 0.42 -0.70 -18.83 -88.77 -0.07 -1.35 2.55 0.16 6.44
1.27 1.34 -0.00 0.12 -0.49 -5.57 -34.19 -0.56 -0.25 0.10 -0.12 1.41
-0.79 -0.00 4.81 -0.79 0.58 30.51 365.02 0.47 1.66 -3.64 0.10 11.26
0.42 0.12 -0.79 4.15 1.18 3.95 -33.98 1.10 1.01 3.09 -0.13 14.61
-0.70 -0.49 0.58 1.18 12.06 83.81 295.25 9.00 10.02 -7.45 -1.33 10.06
-8.83 -5.57 30.51 3.95 83.81 1743.76 6396.28 84.45 151.33 -33.73 -21.64 268.78
-88.7 -34.1 365.02 -33.9 295.25 6396.28 48521.52 253.47 659.19 -265.8 -123.6 986.00
-0.07 -0.56 0.47 1.10 9.00 84.45 253.47 15.06 9.19 -0.40 0.38 -11.11
-1.35 -0.25 1.66 1.01 10.02 151.33 659.19 9.19 32.11 -35.64 -4.00 48.62
2.55 0.10 -3.64 3.09 -7.45 -33.73 -265.89 -0.40 -35.64 192.59 -0.22 -135.36
0.16 -0.12 0.10 -0.13 -1.33 -21.64 -123.60 0.38 -4.00 -0.22 3.63 -1.67
6.44 1.41 11.26 14.61 10.06 238.78 986.00 -11.11 48.62 -135.3 -1.67 7445.06
16
Proiect DATA MINING 2011
17
Proiect DATA MINING 2011
Am calculat valorile proprii, apoi i-am ordonat descrescator. Cu ajutorul acestora am calculat vectorii
proprii corespunzatori fiecarei valori propri si i-am pus intr-o matrice.
%Calculul valorilor proprii si ordonarea descrescatoare a acestora
disp('Vectorii proprii si matricea valorilor proprii este: ')
[vectori,val_propri]=eig(matcov1) % returneaza vectorii proprii vect_proprii si
vectorul de valori proprii
%-----------------------------------------------------------------
69745.28
1070.17
297.45
30.07
13.27
7.27
4.76
4.13
2.55
0.96
0.40
0.01
Tabel 6. Valorile propri corespunzatoare vectorilor din clasa 1
- clasa 2
49422.04
7425.93
892.22
194.74
17.04
11.51
5.50
4.77
3.59
2.18
1.32
0.69
18
Proiect DATA MINING 2011
Odata aflate si ordonate decrescator am realizat cate un grafic pentru vizualizarea valorilor
propri. Deoarece valorile acestora variaza foarte mult, cea mai mare valoare proprie este 69745.28 si
cea mai mica 0.01 am calculat logaritm din aceste valori pentru a avea o reprezentare semnificativa.
19
Proiect DATA MINING 2011
20
Proiect DATA MINING 2011
-0.01 0.02 -0.39 0.10 0.49 -0.67 -0.35 -0.06 -0.06 -0.02 0.00 -0.00
0.01 0.03 0.92 0.11 0.18 -0.29 -0.16 -0.02 -0.02 -0.01 -0.00 -0.00
0.01 -1.00 0.02 -0.03 0.01 -0.02 -0.03 -0.02 -0.02 0.00 0.01 0.01
-0.00 -0.01 0.02 0.07 0.76 0.63 -0.09 -0.05 -0.05 -0.00 -0.00 -0.00
-0.00 -0.01 -0.01 -0.03 0.02 0.05 -0.25 -0.57 -0.57 0.09 -0.03 0.01
-0.00 -0.01 -0.00 0.01 0.02 -0.01 0.03 0.07 0.07 0.05 -0.99 0.12
-0.00 0.01 0.00 0.00 0.00 -0.00 0.01 -0.00 -0.00 -0.01 0.12 0.99
0.00 0.02 0.00 0.05 -0.11 -0.02 0.20 -0.81 -0.81 0.04 -0.05 0.00
-0.01 0.03 -0.00 -0.18 -0.32 0.23 -0.84 0.01 0.01 0.17 -0.03 0.01
-0.00 0.00 -0.01 -0.03 -0.07 0.06 -0.15 -0.08 -0.08 -0.98 -0.06 -0.00
-0.01 0.03 0.06 -0.97 0.19 -0.10 0.12 -0.04 -0.04 -0.00 -0.01 -0.00
1.00 0.02 -0.01 -0.01 0.00 0.00 -0.00 -0.00 -0.00 -0.00 -0.00 0.00
Tabel 7. Vectorii proprii corespunzatori valorilor proprii din prima clasa
0.06 -0.18 0.22 -0.13 -0.20 -0.92 0.01 0.10 -0.01 -0.01 -0.00 0.00
0.05 0.60 -0.74 -0.03 -0.08 -0.27 0.05 -0.00 0.00 -0.00 -0.00 0.00
0.23 0.73 0.60 0.06 0.11 -0.04 -0.14 -0.14 0.01 -0.02 -0.00 -0.01
-0.11 0.01 0.02 0.94 -0.28 -0.06 0.03 0.15 -0.02 0.01 -0.00 0.00
0.34 0.03 0.02 -0.21 -0.68 0.24 -0.34 0.45 0.03 0.05 -0.00 -0.01
-0.00 0.00 0.01 0.00 -0.00 -0.02 -0.01 -0.11 -0.01 0.99 -0.02 -0.13
-0.00 -0.01 -0.01 0.00 -0.00 -0.00 -0.00 0.00 -0.01 -0.13 0.03 -0.99
-0.36 0.06 -0.02 0.02 0.46 -0.09 -0.55 0.59 -0.00 0.06 0.00 -0.01
0.23 0.08 0.08 -0.02 0.22 0.05 0.69 0.61 0.18 0.07 -0.00 -0.01
0.06 0.02 0.02 -0.02 0.02 0.03 0.11 0.12 -0.98 0.00 0.02 0.01
0.79 -0.24 -0.18 0.23 0.38 -0.08 -0.27 -0.06 0.00 -0.01 -0.00 0.00
-0.00 -0.00 -0.00 -0.00 -0.00 -0.00 -0.00 0.00 -0.02 -0.02 -1.00 -0.02
Tabel 8. Vectorii proprii corespunzatori valorilor proprii din clasa a doua
Urmatorul pas a fost deducerea matricea transformarii KLT pentru PCA (cu ajutorul vectorilor
proprii).
21
Proiect DATA MINING 2011
-0.01 0.01 0.01 -0.00 -0.00 -0.00 0.00 0.00 -0.01 -0.00 -0.01 1.00
0.02 0.03 -1.00 -0.01 -0.01 -0.01 0.01 0.02 0.03 0.00 0.03 0.02
-0.39 0.92 0.02 0.02 -0.01 -0.00 0.00 0.00 -0.00 -0.01 0.06 -0.01
0.10 0.11 -0.03 0.07 -0.03 0.01 0.00 0.05 -0.18 -0.03 -0.97 -0.01
0.49 0.18 0.01 0.76 0.02 0.02 0.00 -0.11 -0.32 -0.07 0.19 0.00
-0.67 -0.29 -0.02 0.63 0.05 -0.01 -0.00 -0.02 0.23 0.06 -0.10 0.00
-0.35 -0.16 -0.03 -0.09 -0.25 0.03 0.01 0.20 -0.84 -0.15 0.12 -0.00
0.12 0.04 0.03 0.12 -0.78 -0.01 0.00 0.53 0.29 -0.01 0.02 0.00
-0.06 -0.02 -0.02 -0.05 -0.57 0.07 -0.00 -0.81 0.01 -0.08 -0.04 -0.00
-0.02 -0.01 0.00 -0.00 0.09 0.05 -0.01 0.04 0.17 -0.98 -0.00 -0.00
0.00 -0.00 0.01 -0.00 -0.03 -0.99 0.12 -0.05 -0.03 -0.06 -0.01 -0.00
-0.00 -0.00 0.01 -0.00 0.01 0.12 0.99 0.00 0.01 -0.00 -0.00 0.00
Tabel 9. Matricea KLT1 corespunzatoare vectorilor din prima clasa
0.06 0.05 0.23 -0.11 0.34 -0.00 -0.00 -0.36 0.23 0.06 0.79 -0.00
-0.18 0.60 0.73 0.01 0.03 0.00 -0.01 0.06 0.08 0.02 -0.24 -0.00
0.22 -0.74 0.60 0.02 0.02 0.01 -0.01 -0.02 0.08 0.02 -0.18 -0.00
-0.13 -0.03 0.06 0.94 -0.21 0.00 0.00 0.02 -0.02 -0.02 0.23 -0.00
-0.20 -0.08 0.11 -0.28 -0.68 -0.00 -0.00 0.46 0.22 0.02 0.38 0.00
-0.92 -0.27 -0.04 -0.06 0.24 -0.02 -0.00 -0.09 0.05 0.03 -0.08 0.00
0.01 0.05 -0.14 0.03 -0.34 -0.01 -0.00 -0.55 0.69 0.11 -0.27 -0.00
0.10 -0.00 -0.14 0.15 0.45 -0.11 0.00 0.59 0.61 0.12 -0.06 0.00
-0.01 0.00 0.01 -0.02 0.03 -0.01 -0.01 -0.00 0.18 -0.98 0.00 -0.02
-0.01 -0.00 -0.02 0.01 0.05 0.99 -0.13 0.06 0.07 0.00 -0.01 -0.02
-0.00 -0.00 -0.00 -0.00 -0.00 -0.02 0.03 0.00 -0.00 0.02 -0.00 -1.00
0.00 0.00 -0.01 0.00 -0.01 -0.13 -0.99 -0.01 -0.01 0.01 0.00 -0.02
Tabel 10. Matricea KLT2 corespunzatoare vectorilor din clasa a doua
La acest punct am testat ogonalitatea matricii KLT. Pentru aceasta am parcurs urmatoarele
etape:
- Am calculat produsul intre matricea KLT si transpusa acesteia, matrice pe care am notat-o cu Q;
- Am construit o noua matrice in care am retinut valorile rotungite ale matricei Q notata r;
- Am generat o matrice identitate de ordinul matricei Q notata g;
- Am verificat conditia de ortogonalitate care spune ce o matrice este ortogonala daca produsul ei
este egal cu matricea identitate.
22
Proiect DATA MINING 2011
- Daca am egalitate se afiseaza mesajul „Matricea KLT e ortogonala”, daca nu afisez „Matricea
KLT nu e ortogonala”
1.00 0 0 0 0 0 0 0 0 0 0 0
0 1.00 0 0 0 0 0 0 0 0 0 0
0 0 1.00 0 0 0 0 0 0 0 0 0
0 0 0 1.00 0 0 0 0 0 0 0 0
0 0 0 0 1.00 0 0 0 0 0 0 0
0 0 0 0 0 1.00 0 0 0 0 0 0
0 0 0 0 0 0 1.00 0 0 0 0 0
0 0 0 0 0 0 0 1.00 0 0 0 0
0 0 0 0 0 0 0 0 1.00 0 0 0
0 0 0 0 0 0 0 0 0 1.00 0 0
0 0 0 0 0 0 0 0 0 0 1.00 0
0 0 0 0 0 0 0 0 0 0 0 1.00
g =
1.00 0 0 0 0 0 0 0 0 0 0 0
0 1.00 0 0 0 0 0 0 0 0 0 0
0 0 1.00 0 0 0 0 0 0 0 0 0
0 0 0 1.00 0 0 0 0 0 0 0 0
0 0 0 0 1.00 0 0 0 0 0 0 0
0 0 0 0 0 1.00 0 0 0 0 0 0
0 0 0 0 0 0 1.00 0 0 0 0 0
0 0 0 0 0 0 0 1.00 0 0 0 0
0 0 0 0 0 0 0 0 1.00 0 0 0
0 0 0 0 0 0 0 0 0 1.00 0 0
0 0 0 0 0 0 0 0 0 0 1.00 0
0 0 0 0 0 0 0 0 0 0 0 1.00
23
Proiect DATA MINING 2011
Eroarea = 2.0583
Eroarea = 0.4844
Eroarea = 0.0899
Eroarea = 0.0538
Eroarea = 0.0357
Eroarea = 0.0223
Eroarea = 0.0138
Eroarea = 0.0073
Eroarea = 0.0031
Eroarea = 0.0013
24
Proiect DATA MINING 2011
11 componente Variatia energiei conservate eta= 100
Eroarea = 4.5e-06
Eroarea = 0
Concluzie: Cu cat numarul de componente creste creste energia iar eroarea scade ajungand la
0 cand luam in considerare toate componentele.
2.2.6.Componente retinute
a. Criteriul valorii proprii (se retin numai componentele ale caror valori proprii depasesc
1% din valoarea proprie maxima)
Punand conditia sa se retina numai componentele ale caror valori proprii depasesc 1%
din valoarea proprie maxima am obtinut urmatorul rezultat: numarul componentelor
retinute = 2 dintr-un numar total de 12.
b. Varianta (energia totala >α%). Se considera α = 50; 75; 90; 95; 99.
Numarul de componente retinute cand energia totala este mai mare de 50% este 1.
Numarul de componente retinute cand energia totala este mai mare de 75% este 1.
Numarul de componente retinute cand energia totala este mai mare de 90% este 1.
Numarul de componente retinute cand energia totala este mai mare de 95% este 1.
Numarul de componente retinute cand energia totala este mai mare de 99% este 2.
25
Proiect DATA MINING 2011
3.1 CLUSTERING
Metodele vecinului cel mai apropiat clasifica un exemplu necunoscut prin folosirea clasei
exemplului cel mai apropiat cu clasa cunoscuta din multimea de antrenare, sau folosirea mai
multor exemple din multimea de antrenare si combinarea rezultatelor prin vot.
Principiul acestei metode este clasificarea unei flori prin găsirea florii cea mai apropiata din
setul de antrenament. Metodele care se bazează pe acest principiu sunt numite metode de
”învățare bazată pe memorie”. Sunt folosite ponderile, calculându-se similaritatea dintre
28
Proiect DATA MINING 2011
exemplele de test și centroizii clusterelor. Ponderea asignată unui termen este o combinație a
ponderilor sale într-o interogare originală și documentele considerate relevante și irelevante.
In algoritmul de mai jos se folosește distanța Euclidiană pentru a determina similaritatea
dintre două documente.
Un clasificator de tip vecinul cel mai apropiat (k, l) gaseste k exemple apropiate de cel pe care
vrem sa îl clasificam, si clasifica acest exemplu cu clasa care are cel mai mare numar de
voturi, atâta timp cât aceasta clasa are mai mult de l voturi (altfel exemplul se clasifica
necunoscut).
Un clasificator (k, 0) – este de obicei cunoscut ca un clasificator k-nearest neighbor, iar un
clasificator (1, 0)- ca clasificator nearest neighbor.
Algoritm:
%input
K: number of neighbours
X: training set patterns
Y: class labels of the training set
z: new pattern
%output
l: predicted label of new pattern
for each x in X
compute Euclidean distance of z from x
d(x) = distance(z,x)
d is an array containing the distances of all x in X from z
end;
;order patterns of X in increasing order of d(x)
29
Proiect DATA MINING 2011
(sorted_d, index) = sort(X,d)
sorted_d is the list of elements of d sorted in increasing order,
and index(i) is the index in X of the i-th element of sorted_d
neighbours = index(1:k);
;index(1:k) are the first k elements of index
label_neighbours = Y(neighbours);
;Y(neighbours) are the elements of Y with index equal to neighbours;
l = majority(label_neighbours);
;majority(label_neighbours) is the class label occurring more times in the
;label_neighbours list.
Rezultatele obtinute in matlab atunci cand am clasificat datele din lotul de test raportat
la vectorii din lotul de antrenare folosind algoritmul NN sunt urmatoarele: scorul pe care l-am
obtinut in urma acestui algoritm este scor_NN= 36.04651.
30
Proiect DATA MINING 2011
iterativa a centrelor clusterelor catre centrul de greutate al clusterelor. Prin aceasta se asigura
satisfacerea conditiei de minim global pentru fiecare functie cost atasata unui cluster.
31
Proiect DATA MINING 2011
· Pasul 2: Se determina regiunea Re care are eroarea cea mai mare. Multimea punctelor de
intrare Xi care apartin regiunii Re se partitioneaza în doua submultimi care vor reprezenta
doua noi clustere, pentru care se calculeaza multimile index si punctele care reprezinta
centrele noilor clustere.
· Pasul 2.1: Calculam axa de coordonate k care are care mai mare varianta a proiectiei:
· Pasul 2.2: Separam toate punctele Xi (i apartine Ie) prin intermediul unui hiperplan
perpendicular pe a k-a axa de coordonate ce trece prin punctul Qe,în doua submultimi. Pentru
cele doua noi submultimi calculam multimile index si centrele m1 si m2 ale clusterelor astfel
formate:
32
Proiect DATA MINING 2011
· Pasul 4.1: Se deplaseaza centrul clusterului în punctul ce reprezinta media aritmetica
ponderata ale punctelor ce apartin acelei regiuni;
· Pasul 4.2: Actualizam diagrama Voronoi, multimile index si multimile de puncte ale
regiunilor modificate.
Obs 1: La Pasul 2 poate fi folosita o functie cost diferita de functia cost F. Este astfel
posibila optimizarea unei functii cost secundare, ca de exemplu cerinta ca numarul punctelor
din clustere sa fie aproximativ egala.
Obs 2: Dupa fiecare iteratie centrele clusterelor precum si triangulatia
Delauney corespunzatoare poate fi memorata pentru o utilizare ulterioara. Mai ales daca
aplicatia este în domeniul graficii, datele memorate pot fi folosite la o reprezentare triangulara
ierarhica a suprafetei reprezentate de punctele de intrare date.
In urma implementarii si aplicarii acestui algoritm la baza mea de date am obtinut
urmatorul scor: scor_Kmeans = 46.2428 si dupa cum se poate observa acest rezultat este mai bun
decat cel obtinut in cazul anterior in urma aplicarii algoritmului NN.
33
Proiect DATA MINING 2011
Cod Matlab
clc
close all
clear all
V=csvread('forest_fires.data');
[nrlinii,nrcoloane]=size(V);
v=zeros(nrlinii,1);
k=0;l=0;
for i=1:nrlinii
if V(i,13)==0
k=k+1;
B(k,:)=V(i,:);
v(i)=1;
else
l=l+1;
C(l,:)=V(i,:);
v(i)=2;
end
end
length1=165;
for i=1:length1
for j=1:nrcoloane
lot_antrenare_cls1(i,j)=B(i,j);
end
end
for i=length1+1:247
for j=1:nrcoloane-1
lot_test_cls1(i-165,j)=B(i,j);
end
end
for i=length1+1:247
for j=1:nrcoloane
lot_test_1(i-165,j)=B(i,j);
end
end
length2=180;
for i=1:length2
for j=1:nrcoloane
lot_antrenare_cls2(i,j)=C(i,j);
end
end
for i=length2+1:270
for j=1:nrcoloane-1
34
Proiect DATA MINING 2011
lot_test_cls2(i-180,j)=C(i,j);
end
end
for i=length2+1:270
for j=1:nrcoloane
lot_test_2(i-180,j)=C(i,j);
end
end
lot_antrenare_cls1=lot_antrenare_cls1';
lot_antrenare_cls2=lot_antrenare_cls2';
lot_test_cls1=lot_test_cls1';
lot_test_cls2=lot_test_cls2';
lot_test_1=lot_test_1';
lot_test_2=lot_test_2';
antrenare=[lot_antrenare_cls1 lot_antrenare_cls2];
test=[lot_test_cls1 lot_test_cls2];
test1=[lot_test_1 lot_test_2];
[nr,dim]=size(antrenare)
mediaantr=zeros(nr,1); % Initializare media vectorilor de intrare cu 0
for i=1:dim
mediaantr=mediaantr+((1/dim)*antrenare(1:nr,i));
end
disp('Media vectorilor din lotul de antrenare e:')% Se afiseaza "Media vectorilor de
intrare este:"
disp(mediaantr)% Se afiseaza media vectorilor din clasa1
media_matlab = mean(antrenare,2);%media calculata cu functia matlab
35
Proiect DATA MINING 2011
media2_matlab = mean(lot_antrenare_cls2,2);%media calculata cu functia matlab
%-------------------------------------------------------------------
%Matricea de covarianta
matcov1=zeros(nr1,nr1); %Inializare matricea de covariatie cu 0
for j=1:dim1
matcov1=matcov1 +((1/dim1)*(lot_antrenare_cls1(1:nr1,j)-
mediacls1)*(lot_antrenare_cls1(1:nr1,j)-mediacls1)');
end
disp('Matricea de covariatie a vectorilor din clasa 1 este:')
disp(matcov1);
A1=cov(lot_antrenare_cls1');%matricea de covarianta calculata cu functia matlab
%--------------------------------------------------------------------------
%Matricea de covarianta
matcov2=zeros(nr2,nr2); %Inializare matricea de covariatie cu 0
for j=1:dim2
matcov2=matcov2 +((1/dim2)*(lot_antrenare_cls2(1:nr2,j)-
mediacls2)*(lot_antrenare_cls2(1:nr2,j)-mediacls1)');
end
disp('Matricea de covariatie a vectorilor din clasa 2 este:')
disp(matcov2)
A2=cov(lot_antrenare_cls2');%matricea de covarianta calculata cu functia matlab
%--------------------------------------------------------------------------
36
Proiect DATA MINING 2011
%Calculul valorilor proprii si ordonarea descrescatoare a acestora
disp('Vectorii proprii si matricea valorilor ai vectorilor din lotul de antrenare sunt:
')
[matrice_vectori,matrice_val_propri]=eig(matcov) % returneaza vectorii proprii
vect_proprii si vectorul de valori proprii
val_propri = zeros(nr-1,1);
for i=1:(nr-1)
val_propri(i) = matrice_val_propri(i,i)
end
val_propri = sort (val_propri, 'descend'); %valorile proprii in ordine
descrescatoare
matrice_vectori = matrice_vectori(:,nr-1:-1:1); %rearanjam vectorii a.i. sa coresp
valorilor in ord descresc (inversam ordinea col)
matrice_vectori
val_propri
for i=1:nr-1
suma2=suma2+val_propri(i,1);
end
38
Proiect DATA MINING 2011
prag = val_propri(1)/100;
nr_componente = 0;
for i=1:nr-1
if (val_propri(i)>prag)
nr_componente=nr_componente+1;
end
end
%_____________________________________________________________________%
% %b) energia totala>50%
%_____________________________________________________________________%
prag_energ50 = 0.5;
suma1=0;
suma2=0;
for i=1:nr-1
suma2=suma2+val_propri(i,1);
end
prag_val50 = prag_energ50*suma2;
i=1;
while (suma1<prag_val50)
suma1 = suma1+val_propri(i,1);
if (suma1<prag_val50)
i = i+1;
end
end
suma1=0;
suma2=0;
for j=1:i
suma1=suma1+val_propri(j,1);
end
for j=1:nr-1
suma2=suma2+val_propri(j,1);
end
39
Proiect DATA MINING 2011
eta50 = (suma1/suma2)*100
%__________________________________________________________________%
% %b) energia totala>75%
%_____________________________________________________________________%
prag_energ75 = 0.75;
suma1=0;
suma2=0;
for i=1:nr-1
suma2=suma2+val_propri(i,1);
end
prag_val75 = prag_energ75*suma2;
i=1;
while (suma1<prag_val75)
suma1 = suma1+val_propri(i,1);
if (suma1<prag_val75)
i = i+1;
end
end
suma1=0;
suma2=0;
for j=1:i
suma1=suma1+val_propri(j,1);
end
for j=1:nr-1
suma2=suma2+val_propri(j,1);
end
eta75 = (suma1/suma2)*100
%_____________________________________________________________________%
% %b) energia totala>90%
%_____________________________________________________________________%
prag_energ90 = 0.90;
suma1=0;
suma2=0;
for i=1:nr-1
suma2=suma2+val_propri(i,1);
end
40
Proiect DATA MINING 2011
prag_val90 = prag_energ90*suma2;
i=1;
while (suma1<prag_val90)
suma1 = suma1+val_propri(i,1);
if (suma1<prag_val90)
i = i+1;
end
end
suma1=0;
suma2=0;
for j=1:i
suma1=suma1+val_propri(j,1);
end
for j=1:nr-1
suma2=suma2+val_propri(j,1);
end
eta90 = (suma1/suma2)*100
prag_energ95 = 0.95;
suma1=0;
suma2=0;
for i=1:nr1-1
suma2=suma2+val_propri(i,1);
end
prag_val95 = prag_energ95*suma2;
i=1;
while (suma1<prag_val95)
suma1 = suma1+val_propri(i,1);
if (suma1<prag_val95)
i = i+1;
end
end
suma1=0;
suma2=0;
for j=1:i
suma1=suma1+val_propri(j,1);
end
for j=1:nr1-1
41
Proiect DATA MINING 2011
suma2=suma2+val_propri(j,1);
end
eta95 = (suma1/suma2)*100
%_____________________________________________________________________%
% %b) energia totala>99%
%_____________________________________________________________________%
prag_energ99_1 = 0.99;
suma1=0;
suma2=0;
for i=1:nr1-1
suma2=suma2+val_propri1(i,1);
end
prag_val99_1 = prag_energ99_1*suma2;
i=1;
while (suma1<prag_val99_1)
suma1 = suma1+val_propri1(i,1);
if (suma1<prag_val99_1)
i = i+1;
end
end
suma1=0;
suma2=0;
for j=1:i
suma1=suma1+val_propri1(j,1);
end
for j=1:nr1-1
suma2=suma2+val_propri1(j,1);
end
eta99 = (suma1/suma2)*100
%_____________________________________________________________________%
% %c) energia daca se retin 2 elemente
%_____________________________________________________________________%
suma1=0;
suma2=0;
for i=1:2
42
Proiect DATA MINING 2011
suma1=suma1+val_propri1(i,1);
end
for i=1:nr1-1
suma2=suma2+val_propri1(i,1);
end
eta2 = (suma1/suma2)*100;
%_____________________________________________________________________%
%9. CLASIFICATORI
%_____________________________________________________________________%
% b. k-means supervizat
43
Proiect DATA MINING 2011
medie1=zeros(mm-1,1);
medie2=zeros(mm-1,1);
for i=1:a1
for j=1:n1
medie1(i)=medie1(i)+Y_cls1_antr(i,j);
end
for k=1:n2
medie2(i)=medie2(i)+Y_cls2_antr(i,j);
end
end
medie1=medie1/n1;
medie2=medie2/n2;
%SAU
% medie1=mean(Y_cls1_antr,2);
% medie2=mean(Y_cls2_antr,2);
P=zeros(e,1);
contor=0;
BB=[];
for i=1:e
dist1=0;
dist2=0;
for j=1:(mm-1)
dist1=dist1+(Y_test(j,i)-medie1(j,1))^2;
dist2=dist2+(Y_test(j,i)-medie2(j,1))^2;
end
dist1=sqrt(dist1);
dist2=sqrt(dist2);
if (dist1==dist2)
nr=rand(1);
if nr<0.5
clasa=0;
P(i,1)=clasa;
else
clasa=1;
P(i,1)=clasa;
end
elseif (dist1<dist2)
clasa=0;
P(i,1)=clasa;
elseif (dist2<dist1)
clasa=1;
P(i,1)=clasa;
end
end
Y_cls1_test=Y_cls1(1:mm,2*nnn_n+1:nnn);
Y_cls2_test=Y_cls2(1:mm,2*nnnn_n+1:nnnn);
Y_test=[Y_cls1_test,Y_cls2_test];
contor=1;
44
Proiect DATA MINING 2011
for i=1:e
if Y_test(mm,i)==P(i)
%&((Y_test(mm,i)~=0)&(P(i)~=0)))
contor=contor+1;
end
end
45