Circioroaba Claudia Disertatie Final.1.0 [610036]
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
DEPARTAMENTUL DE CALCULATOARE ȘI INGINERIE
ELECTRICĂ
PROIECT DE DI SERTAȚIE
Conducă tor științific :
conf. dr. ing. Morariu Daniel
Absolvent: [anonimizat], 20 18 –
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
DEPARTAMENTUL DE CALCULATOARE ȘI INGINERIE
ELECTRICĂ
Detecția anomaliilor
Conducător științific:
Conf. dr. ing. Morariu Daniel
Absolvent: [anonimizat]
1 Introducere ………………………….. ………………………….. ………………………….. ……………….. 3
2 Partea teoretică ………………………….. ………………………….. ………………………….. ………….. 5
2.1 Outlier ………………………….. ………………………….. ………………………….. …………………… 5
2.2 Outlier Detection versus Anomaly Detection ………………………….. ……………………… 6
2.3 Clasificarea anomaliilor ………………………….. ………………………….. ……………………….. 8
2.3.1 Global Outliers (sau Point Anomaly) ………………………….. ………………………….. .. 8
2.3.2 Contextual Outliers ………………………….. ………………………….. ………………………. 9
2.3.3 Collective Outliers ………………………….. ………………………….. ………………………. 10
2.4 Probleme în detecția anomaliilor ………………………….. ………………………….. ………… 12
2.5 Metode/Tehnici pentru detectarea anomaliilor ………………………….. ………………… 15
2.5.1 Metode supervizate ………………………….. ………………………….. ……………………. 15
2.5.2 Metode nesupervizate ………………………….. ………………………….. ………………… 16
2.5.3 Metode semi -supervizate ………………………….. ………………………….. ……………. 17
2.5.4 Metode statistice, metode bazate pe proximitate și metode bazate pe
clustering …………………………………………………………………………………………………………….. .17
2.5.4.1 Metode statistice ………………………….. ………………………….. ……………………….. 18
2.5.4.2 Metode bazate pe proximitate ………………………….. ………………………….. …….. 18
2.5.4.3 Metode bazate pe clustering ………………………….. ………………………….. ……….. 18
2.6 Învățarea nesupervizată (Clusterizarea) ………………………….. ………………………….. . 19
2.7 Algoritmul Fuzzy C-Menas ………………………….. ………………………….. ………………….. 21
3 Partea practică ………………………….. ………………………….. ………………………….. …………. 25
3.1 Dezvoltare aplicație ………………………….. ………………………….. ………………………….. . 25
3.1.1 Fluxul de evenimente este prezentat în schema de mai jos ……………………… 26
3.1.2 Setul de date ………………………….. ………………………….. ………………………….. …. 27
3.1.2.1 Formatul CSV ………………………….. ………………………….. ………………………….. … 27
3.1.2.2 Benchmark -urile ………………………….. ………………………….. ………………………… 27
3.2 Metode de reprezentare a datelor ………………………….. ………………………….. ……… 32
3.2.1 Caz 1 ………………………….. ………………………….. ………………………….. …………….. 34
3.2.2 Caz 2 ………………………….. ………………………….. ………………………….. …………….. 34
3.2.3 Caz 3 ………………………….. ………………………….. ………………………….. …………….. 35
3.2.4 Caz 4 ………………………….. ………………………….. ………………………….. …………….. 35
3.2.5 Caz 5 ………………………….. ………………………….. ………………………….. …………….. 35
3.3 Implementarea Fuzzy C -Means ………………………….. ………………………….. …………… 35
3.3.1 FCM pentru 2 clustere ………………………….. ………………………….. ………………… 39
3.3.2 FCM pentru 3 clustere ………………………….. ………………………….. ………………… 40
3.3.3 FCM pentru 4 clustere ………………………….. ………………………….. ………………… 41
3.3.4 Salvarea rezultatelor ………………………….. ………………………….. …………………… 42
3.4 Evaluarea algoritmului de învățare ………………………….. ………………………….. ……… 45
3.4.1 Matricea confusion matrix ………………………….. ………………………….. …………… 45
3.4.2 Indicatorii de performan ță pentru evaluarea algoritmului Fuzzy C -Menas
49
3.5 Rezultate ………………………….. ………………………….. ………………………….. ……………… 50
3.5.1 Rezultate Acuratețe ………………………….. ………………………….. ……………………. 50
3.5.2 Rezultate Precizie ………………………….. ………………………….. ……………………….. 54
3.5.3 Rezultate Recall ………………………….. ………………………….. ………………………….. 57
3.6 Rezultate comparative între 2 clustere, 3 clustere și 4 clustere ……………………….. 61
4 Concluzii ………………………….. ………………………….. ………………………….. ………………… 65
5 Bibliografie ………………………….. ………………………….. ………………………….. …………….. 67
3
1 INTRODUCERE
În lumea de azi, folosirea calculatorului pentru înregistrarea datelor a devenit
omniprezent. O dată cu acest lucru ca ntitatea de informație existentă în format electronic este
imensă și devine tot mai dificil să regăsești informații utile.
Informațiile legate de activitatea utilizatorilor, care sunt colectate de către servere le web,
devin tot mai numeroase iar abilitatea de a monitoriza și de a proteja aceste informații devine
critică. Datorită acestui volum mare de informații, detecția automată a anumitor anomali în
acestea este foarte importantă în domenii cum ar fi network communication problems, network
intrusion detection , fraud and server monitoring. Anomaliile se referă la problema de a găsi
modele în date care nu corespund cu comportamentul așteptat iar detectarea anomaliilor are ca și
scop detecț ia acelor modele care sunt diferite de restul datelor.
Tema de disertație abordează problema detecției anomaliilor din seturi de date etichetate
folosind ideea dintr -un algoritm de clustering. În momentul în care avem de -a face cu anomali în
seturi de date și nu numai, ne propunem să identificăm cauza care a co ndus la apariția acestor
anomali și găsirea unei metode pentru a împiedica în viitor apariția din nou a acestor anomali.
O problemă critică în detecția anomaliilor o reprezintă găsirea unei măsurători
corespunzătoare pentru rezolvarea acestei probleme. Pentru a rezolva acest lucru am aplicat
algoritmului Fuzzy C -Means, acesta fiind unul dintre cei mai folosiți algoritmi în domeniul
Inteligenței Artificial e și care ne permite să obț inem o probabilitate pentru fiecare exemplu
analizat de a aparține sau nu la categoria anomaliilor . Tehnicile de clasificare au ca scop
principal extragerea unor modele de clasificare (clasificatoare) pornind de la un set de date care
ilustrează legătura dintre obiectele de clasificat și clasele corespunzătoare.
Motivația alegerii acestei teme, o reprezintă dorința de a înțelegere și prezenta, într -un
mod cât mai detaliat, o aplicație care se bazează pe algoritmi de clustering. Un alt motiv pentru
care mi -am ales această temă este și faptul că am fost fascinată de cât de larg și de cuprinzător
este domeniu algoritmilor de clustering și de faptul că acest domeniu este unul de interes major
pentru domeniile actuale de cercetare și dezvoltare.
Un al t argument a fost și acela că pentru detecția anomaliilor am ales să folosesc un
algorit m de tip fuzzy. Tehnica fuzzy a celor c medii (Fuzzy C -Means) reprezintă o tehnică de
clustering cu ajutorul căreia se specifică gradul de aparenență al unui elemet din setul de date, la
una sau mai multe clase. De asemenea, un obiectiv care mi -a stârnit c uriozitatea pentru această
4
temă, a fost acela de a identifica elementele relevante dintr -un set de date pentru a putea
predicționa corect anomaliile în funcție de context.
Un bonus adus de această aplicație este faptul că anomaliile pot fi identificate bazându -ne
pe o serie de metode preluate din analiza statistică a datelor care să modifice reprezentarea
datelor astfel încât să putem evidenția mai ușor anomaliile . Pentru a analiza metodelor propuse
am folosit seturi de date furnizate de Yahoo, acesta fiind seturi de date etichetate în format CSV.
Datele în format CSV, ca și datele în format text sunt considerate date semistructurate deoarece
conțin o structură organizatorică minimală. Astfel, am implementat algoritmul de clustering
Fuzzy C -Means având :
– date de intrare: seturi de date derivate din seturile de date furnizate de Yahoo folosind
metode preluate din analiza statistică ;
– date de ieșire: 2 Clustere, 3 Clustere sau chiar 4 Clustere .
Algoritmul a fost rulat folosind combinații între datele de int rare și datele de ieșire
specificate mai sus. Scopul acestei implement ări este de a realiza o interacțiune strânsă între
parametrii de intrare și rezultatele obținute folosing alg oritmul Fuzzy C -Meabs , și de asemenea,
de a concluziona dacă există sau nu o legatură între parametrii de intrare și rezultate.
Totodată, aplicația oferă facilitatea de a observa modul aproximativ de dispoziție a
datelor în clusteri prin intermediul graficelor prezentate în această lucrare.
Calitatea algoritmului de clustering a fost evaluată folosind metrici precum acuratețea,
precizia și recall -ul.
Aplicaț ia a fost dezvol tată î n limbajul Python, iar atât codul cât și rezultatele execuției
sunt cuprinse în fișiere de tip Jupyter Notebooks. Pen tru a simplifica managementul pachetelor
am folosit sistemul Anaconda, care a oferit un mediu cu toate libră riile și instrumentele necesare
preinstalate.
Lucrarea de disertație este structurată în două capitole. În primul capitol sunt prezentate
noțiuni te oretice despre domeniul outlier, tipuri de anomalii, probleme în detecția anomaliilor și
descrierea algoritmului de clustering Fuzzy C -Menas, prescurtat FCM . Capitolul al ll -lea conține
prezentarea aplicației, prezentarea structurii folosite în aplicație, pașii care s -au urmat la crearea
aplicației și rolul algoritmului de clustering în detecția anomaliilor din seturile de date.
Lucrarea se încheie cu un capitol de concluziile la care am ajuns pe baza rezultatelor
obținute și un capitol de bibliografie.
5
2 PARTEA TEORETICĂ
2.1 Outlier
Outlier detection este procesul de identificare a datelor , elementelor sau evenimentelor
care au comportamente diferite față de restul datelor sau prezintă trăsături /caracteristici diferite
în comparație cu alte date din acelasi set de date.
În mod obișnuit, elementele diferite sunt privite ca fiind „elemente anormale ”, pe scurt –
„anomalii ” și reprezintă de fapt un fel de problemă. Anomal iile sunt, de asemenea, numite
„outliers”, „noutăți” , zgomot, abateri sau excepții.
Tehnica Outlier detection este importantă în multe aplicații, și, de asemenea în procesul
de detectare a fraudei, în indetificarea de probleme m edicale, în siguranța publică, procesarea
imaginilor, supravegherea rețelei senzor / vi deo, detectarea intruziu nilor sau prevenirea erorilor
într-un text.
Outlier detection este, de asemenea, legat de detectarea noutăților – „novelty detection”
din seturile de date care urmărește să detecteze modele neobservate până acum în date . De
exemplu, în monitorizarea unui site web social media în care este introdus un conținut nou,
detectarea noutăților poat e identifica subiecți și tendințe noi în timp real. Pot să apară inițial
subiecte /subiecți noi. În această măsură, detectarea și depistarea noutățilo r au o anumită
asemănare în modelele și metodele de detectare. Cu toate acestea, o diferență critică între cele
două este că în detec tarea noutății, odată confirmați subiecți i noi, aceștia sunt de obicei
încorporați în modelul de comportament normal, astfe l încât instanțele urmărite să nu fie tratate
ca valori exceptie . [JiawMichJian2012] Distincția între modele noi și anomalii este aceea că
modelele noi sunt de obicei încorporate în modelul normal după ce au fost detectat e.
Noțiunea Outlier s este diferit ă de noțiunea „noisy data ” (date zgomotoase , pe scurt –
zgomot ). [JiawMichJian2012] În genera l, un „outlier" este un punct de date sau o valoare care
diferă considerabil de alte date dintr -un set de date iar zgomotul este orice semnal dorit sau
nedorit sau parte dintr -un semnal. Zgomotul crește in mod inutil spațiul de stocare /reprezentare
a datelor și poate să fie sau să nu fi e aleator. „Outlier -ul” poate fi analizat și utilizat, dar
zgomotul poate fi definit ca un fenomen în date care nu prezintă interes pentru analist, dar
acționează ca un obstacol în calea analizei datelor – din acest motiv ar trebui să fie eliminat .
6
Elimi narea zgomotului este cauzată din necesitatea de a elimina obiectele nedorite înainte de
orice analiză efectuată asupra datelor. [Hube1974] .
2.2 Outlier Detection versus Anomaly Detection
Detectarea anomaliilor se referă la problema de a găsi modele în date care nu corespund
cu comportamentul așteptat . Aceste modele diferite de restul datelor sunt adesea menționate ca
anomalii, valori excepție , excepții, aberații, particularități sau contaminanți i în diferite domenii
de aplicare. Dintre acestea, anomalii (anomal ies) și valori extreme (outlier s) sunt cei doi termeni
utilizați cel mai frecvent în contextul d etectării anomaliilor . [VaruArinVipi2009]
Outlier Detection este numit uneori și Anomaly Detection. Sunt două noțiuni care par
asemănătoare dat totuși sunt diferite.
Outlier Detection este procesul în care datele care nu se încadrează în domeniul normal
sunt căutate intenționat pentru a fi înlăturate din seturile de date deoarece pot conduce la
rezultate eronate prin păstrarea acestora în seturile de date. În învățarea supravegheată,
eliminarea datelor eronate din setul de date duce adesea la o creștere s emnificativă a preciziei .
Outlier detection își pune problema de a reduce „zgomotul” din date, adică acele informații care
pot perturba substanțial procesul de învățare și care nu ne oferă nici o informație utilă.
Anomaly Detection este procesul ce presup une căutarea și detectarea perturbațiilor din
seturi de date care au fost produse de apariția unor evenimente rare dar de care suntem interesați.
Cu alte cuvinte tehnica Anomaly Detection își propune să identifice datele anormale care, de cele
mai multe ori nu sunt vizibile cu ochiul liber sau nu sunt ușor de identificat. Anomaly detection
în propune să detecteze acele deviații față de standard ale informațiilor procesate dar care de fapt
semnifică apariția unei probleme. De exempl u detectarea automată a problemelor cardiace din
electrocardiograme. Majoritatea electrocardiogramelor sunt făcute la oameni sănătoși la care nu
sunt probleme. Deci semnalele sunt in parametrii normali. Când consultăm un om posibil bolnav
la care semnalele nu se încadrează în parametrii normali atunci trebuie decis daca este o
anomalie (omul este sănătos doar că semnalul la el arată puțin diferit ) sau că realmente omul
este bolnav.
Anomaliile reprezintă date care nu se conformează unei noțiuni bine defi nite pentru
comportamentul normal. F igura 2.1 ilustrează anomalii dintr -un set de date simplu , de tip
7
bidimensional. Datele au două regiuni normale, N1 și N2, deoarece cele mai multe date se află în
acestea două regiuni. Puncte care sunt suficient de departe de regiuni (izolate), de exemplu,
punctele o1 și o2 sunt considerate outlier , și puncte din regiunea O3, sunt considerate anomalii.
[VaruArinVipi2009]
Fig.2.1 Anomalii dintr -un set de date simplu, de tip bidimensional
Analiza anomaliilor a fost propusă de către Dorothy Denning în 1985 pentru sistemele de
detectare a intruziunilor ( Intrusion detection expert system – IDES) [Doro1985] .
SRI International a proiectat și dezvoltat un sistem expert în detectarea intruziunilo r în timp real
(IDES).
IDES este un sistem autonom care respectă comportamentul utilizatorilor pe unul sau mai
multe sisteme informatice monitorizate și semnalează evenimente suspecte. IDES monitorizează
activitățile utilizatorilor individuali, grupurile, gazdele de la distanță și sistemele întregi și
detectează încălcările de securitate suspectate, atât de către cei din interior, cât și de cei din afară,
pe măsură ce apar. IDES învață adaptabil modelele de comportament ale utilizatorilor în timp și
detecte ază comportamentul care se abate de la aceste modele [Tere1992] .
Sistemul IDES este compus din următoarele componente funcționale:
✓ Realm Interfață
✓ Detector de anomalie statistică
✓ Expert Anomaly Detector de sistem
✓ Interfața cu utilizatorul
Pentru IDES a u fost implementate două subsisteme de evenimente de detectare a
anomaliilor, una bazată pe metode statistice iar celălalt sistem bazat pe reguli.
8
Detectorul de anomalii actualizează în permanență activitățile zilnice a le subiectului
(reprezentate ca vectori de probabilitate și matrice) cu fiecare nouă înregistrare de intrare și
compară aceste valori cu profilul istoric pentru a determina abaterea de la modul normal . După
aplicarea acestor serii de teste statistice se poate obține o înregistrare ano malitică dacă un vector
de activitate observat indică un comportament neobișnuit în funcție de subiectul dat istoric.
2.3 Clasificarea anomaliilor
În general, anomaliile pot fi clasificate în trei categorii, și anume:
2.3.1 Global Outliers (sau Point Anomaly)
Într-un set de date dat, un obiect este o anomalie globală dacă se abate semnificativ față
de restul datelor din set. Anomaliile globale sunt uneori numite anomalii punctuale (point
anomalies ) și reprezintă cel mai simplu tip de anomali e (outliers ). Cele mai multe metode de
detectare a anomaliilor sunt destinate găsirii unor anomalii globale . [JiawMichJian2012]
Exemplu pentru Global Outliers : Punctele din regiunea R se abat semnificativ față de
restul setului de date (sunt foarte îndepărtate) și, prin urmare, sunt exemple de amonalii globale
(global outliers) . (vezi Fig . 2.2)
Fig. 2.2 Global Outliers
Pentru a detecta anomaliile globale, o problemă critică este găsirea unei măsurători
corespunzătoare în ceea ce privește această problemă . Sunt propuse diferite măsurători, și, pe
baza ace stora, metodele de detectare a anomaliilor sunt împărțite în diferite categorii.
Recunoașterea anomaliilor globale este importantă în multe aplicații. Spre exe mplu, la
detectarea intruziunilor în rețelele de calculatoare. Dacă comportamentul unui calculator este
foarte diferit față de modelele normale (de exemplu, un număr mare de pachete este transmis într
– un timp scurt), acest comportament poate fi considerat o anomal ie globală și computerul
corespunzător este o victimă suspect ă de hacking (Hacking -ul este o intrare neautorizată într -un
9
computer sau într -o rețea) . Un alt exemplu este în tranzacționare a – tranzacțiile care nu respectă
regulamentele sunt considerate anomalii globale și ar trebui să fie ținute pentru o analiză viitoare .
[JiawMichJian2012]
2.3.2 Contextual Outliers
Un obiect dintr -un set de date este o anomalie contextuală (contextual outlier) dacă se abate
semnificativ cu privire la un context specific al obiectului.
Spre exemplu, t emperatura de azi este de 28 de grade Celsius. Poate fi considerată această
temperatură o anomlie contextuală ? Pentru a fi o anomalie contextuală trebuie să depindă de
timp și locație! Dacă este în timp ul iernii în România , da, este o anomalie contextuală . Dacă este
o zi de vară în România , atunci este normal și nu reprezintă o anomalie. Spre deosebire de
anomalia globală , în acest caz, indiferent dacă valoarea actuală a temperaturii este sau nu o
anomal ie depinde de context – dată, timp și posibil de alți factori.
Anomaliile contextuale sunt, de asemenea, cunoscute sub numele de anomalii
condiționate, deoarece ele sunt condiționate de contextul selectat. Prin urmare, în detectarea
contextuală a anomaliilor, contextul trebuie să fie specificat în definirea problemei .
[JiawMichJian2012]
În general, în detectarea contextuală a anomaliilor, atributele obiectelor sunt împărțite în
două grupuri:
✓ Atributele contextuale : Atributele contextuale ale unui obiect definesc contextul
obiectul ui. În exemplul cu tempe ratura , atributele contextuale pot fi data și locația .
✓ Atributele comportamentale : Acestea definesc caracteristicile obiectului și sunt
folosite pentru a evalua dacă obiectul este o anomalie în contextul căruia îi
aparține. În exemplu cu temperatura , atributele co mportamentale pot fi
temperatura, umiditatea, și presiune .
Spre deosebire de anomalia globală, în detectar ea contextuală a unui outlier, un
obiect este un outlier dacă depinde nu numai de atributele comportamentale ci și de atributele
contextuale . O configurație a valorilor atributelor comport amentale poate fi considerată o
anomalie într-un anumit context (de exemplu, 28 C este un outlier pentru o iarnă din România ),
dar în alt context nu reprezintă o anomalie (de exemplu, 28 C nu este un outlier pentru o vară din
România ).
Anomaliile contextuale sunt o generalizare a anomaliilor locale (local outiliers), o
noțiune introdusă densitate, bazată pe analize externe . Un obie ct dintr -un set de date este o
anomalie local dacă densitatea sa se abate semnificativ de la aria locală în care se produce .
10
Detectarea globală a anomaliilor poate fi considerată un caz special de detectare
contextuală a anomaliilor, unde setul de atribute contextuale este gol. Cu alte cuvinte , detectarea
globală a anomaliilor folosește întregul set de date ca și context. Analiza contextuală a
anomaliilor oferă flexibilitate pentru utilizatori, prin faptul că se poate analiza valori excepție
(outliers) în diferite contexte, care pot fi utilizat în multe aplicații. [JiawMichJian2012]
Calitatea detectării unei anomalii contextuale dintr -o aplicație depinde de sensibilitatea
atributelor contextuale la care se adaugă măsurarea deviației unui obiect majoritar în spațiul
atributelor comportamentale.
Atributele contextuale ar trebui să fie determinate de experții în domeniu, carepot fi
considerate ca parte a cunoștințele de bază. În multe aplicații, obținerea informații lor suficiente
pentru a identifica atributele contextuale și colectarea datelor de o înaltă calitate a atributelor
contextuale prespune efort din partea analistului .
Pentru a creea contexte semnificative in ceea ce priveste detectarea anomaliilor
contextuale, o metodă simpla este aceea de a privi grupurile de aatribute contextuale ca si
contexte. Acest lucru s -ar putea sa nu fie suficient intru -cat multe grupuri pot contine zgomot.
Exemplu pentru Contextual Outiliers: În detectarea fraudei cu carduri le de credit, pe langă
anomaliile globale, analistul poate lua în considerare și anomalii ( valori excepție ) provenite din
diferite contexte. Spre exmplu, sunt l uați în considerare clienții care utilizează peste 90% din
limita lor de credit. Dacă un astfel de client este privit ca aparținând unui grup de clienții cu
limite de credit scăzute, atunci un astfel de comportament nu poate fi privit ca un outlier . Cu
toate acestea, comportamentul similar al clienților di ntr-un grup cu venituri mari poate fi luat în
considerare dacă balanța lor depășește destul de des limita de credit. Asemenea anomalii pot
conduce la oportunit ăți de noi afaceri – la o creștere a limitelor de credit pentru astfel de clienți
pot aduce noi venituri.
2.3.3 Collective Outliers
Un subset de obiecte al unui set de date formează o anomalie colectivă / un grup de
anomalii dacă mai multe obiectele formează un întreg ce se abate semnific ativ de la întreg setul
de date, iar obiectele individuale nu trebuie sa fie o anomalie.
Să presupunem că sunteți manager -ul unui lanț de magazine alimentare. Sunteți nevoit să
lucrați cu mii de oameni și să supraveghe ați transporturile de marfă în fiecare zi. Dacă
expedierea unei comenzi este întârziată, este posibil să nu fie o anomalie deoarece, din punct de
vedere statistic, pot să apară întârzieri din când în când. Cu toate astea, trebuie să fiți atent dacă
11
100 de comenzi sunt amânate într -o singură zi. Cele puțin 100 de ordine per total, formează o
anomalie (anomalie de grup) , cu toate că nici una dintre întârzieri le individuale nu poate să fie
considerată o anomalie .
Exemplu pentru Collective Outiliers : În Fig. 2.3, obiectele n egre asemenea unui întreg
formează o anomalie colectivă ( un outlier co llectiv ) deoarece densitatea acestor obiecte este mult
mai mare decât restul din setul de date.Cu toate acestea, fiecare obiect negru individual nu este o
anomalie ( un outlier ) raportându -ne la întregul set de date.
Fig. 2.3 Collective Outliers
Detectarea anomaliilor colective ( collective outiliers) își găsește utilitatea în multe
aplicații importante. De exemplu , o tranzacție de acțiuni între două părți este considerată
normală. Cu toate acestea, un set mare de tranzacții ale aceluiași stoc între membrii puțini într -o
perioadă scurtă de timp sunt anomaliilor colective , deoarece acestea pot fi dovezi ale manipulării
unor persoane asupra pieței .
Spre deosebire de detectarea anomaliilor globale sau contextuale, în detecția anomaliilor
colectiv e se ia în considerare nu numai comportamentul obiectelor individuale, ci și cel al
grupurilor de obiecte. Prin urmare, pentru a detecta anomaliile colective, este nevoie de
cunoștințe de bază despre relația dintre obiectele, cum ar fi distanțele sau măsurătorile de
similaritate între obiecte.
Un set de date poate conține mai multe tipuri de anomalii (outliers) . În plus, un obiect poate
să aparțin ă mai multor tipuri de anomalii . În domeniul afaceri lor, pot fi utilizate diferite anomalii
(valori excepție ) în diverse aplicații sau în scopuri diferite.
Detectarea globală a anomaliilor este cea mai simplă detectare din cele trei enumerate in
acest capitol .
Detectarea anomaliilor context uale necesită informații de fundal pentru a identifica
atribute le contextuale și contexte le.
12
Pentru d etectarea colectivă a anomaliilor sunt necesare informații de bază pentru a realiza
relația dintre obiecte care conduce la grupuri le de anomalii .
2.4 Probleme în detecția anomaliilor
La un nivel abstract, o anomalie este definită ca un model care nu are un comportamentul
normal așteptat. Deși detectarea anaomaliilor este utilă în multe aplicații , mai mulți factori fac
din această abordare aparent simplă una foarte dificilă , întru -cât se confruntă cu unele probleme,
cum ar fi :
• De cele mai multe ori, e ste foarte dificil ă, dacă nu chiar imposibilă definirea unei
regiuni normale care să cuprindă toate comportamentele normale posibile. Acest
lucru se datorează parțial faptului că este dificil s ă se enumere toate
comportamentele normale posibile dintr -un set de date . În plus, limita dintre
comportamentul normal și anormal nu este adesea precisă /clară . În schimb, poate
exista o gamă largă de zone gri. Astfel, un model ce pare a fi o anomalie care se
află aproape de limită, poate fi de fapt un model normal și invers.
• Atunci când anomaliile sunt rezultat ul acțiunilor rău-intenționate, adv ersarii
rău-intenționați se adaptează de cele mai multe ori pentru a realiza ca modele
anormale să pară normale, făcând astfel sarcina de a defini comportamentul
obișnuit mai dificil.
• Noțiunea exactă de anomalie diferă de la un domeniu de aplicabilitate la altul.
Diferite aplicațiile pot avea cerințe foarte diferite. De exemplu, în domeniul
medical o mică deviere de la normal poate fi suficientă pentru a reprezenta o
anomalie (de exemplu, fluctuațiile de temperatură la nivelul corpului uman) , în
timp ce pentru o analiză de marketing, o abatere similară a stocului domeniul de
piață (de exemplu, fluctuații le de valori asupra unui stoc de produse ) ar putea fi
considerată ca fiind normal ă (pentru domniul de marketing, o deviație
substanțială mai mare este necesară pentru a reprezenta o anomalie ) . Astfel,
aplicarea unei tehnici de identificare a anomaliilor diferă de la un domeniu la
altul și nu este deloc simplă . Deoarece detecția anomali ilor depi nde de
mediul/domeniul în care trebuie identificate abaterile de la normal,
implementarea unui sistem universal de detectare a anomaliilor este imposibil. Pe
13
de altă parte, metode individuale de detectare a anomaliilor care sunt dedicate
aplicații lor specifice fiecărui mediu trebuie dezvoltate.
• Așa cum am menționat mai devreme, anomaliile (valorile extreme) sunt diferite
de zgomot. Uneori, datele pot conține zgomot care tinde să fie identic cu
anomaliile reale și, prin urmare, de cele mai multe or i, este dificil de manipulat
zgomotul în identificarea anomaliilor (greu de deosebit și de eliminat ). Pot fi
prezente zgomote ca abateri în valorile atributelor sau chiar ca valori lipsă.
Calitate scăzută a datelor și prezența zgomotului conduc la o provo care imensă
pentru detectarea anomaliilor. Zgomotele pot altera datele, estompând diferențele
între obiectele obișnuite și cele neobișnuite. În plus, zgomotul și datele care
lipsesc pot să „ ascundă" valori negati ve – un outlier poate să apară „deghizat” ca
un punct de zgomot și o metoda de detectare a anomaliilor poate identifica în
mod eronat un punct de zgomot ca fiind o anomalie.
• În unele scenarii de aplicații pentru diferite domenii , un utilizator poate dori nu
numai să poată identifica anomaliile, ci și să înțelegă de ce obiectele care se abat
de la normal reprezintă anomalii. De exemplu, o metodă statistică poate fi
utilizată pentru a justifica gradul în care un obiect poate reprezenta o anomalie.
Cu cât probabilitatea ca acel obiect să fie o ano malie este mai mică, cu atât este
mai puțin probabil ca obiectul să nu fie o anomlie iar dacă probabilitatea este
mare, atunci există șanse mari ca obiectul să fie o anomalie.
• Disponibilitatea datelor etichetate pentru antrenare (training) cât și validarea
modelelor utilizate pentru detectare a anomalie i sunt de obicei o problemă majoră.
Raportându -ne la problemele ce pot să apară în d etectare a anomaliilor descrise mai sus , de
cele mai multe ori procesul de detectare nu este ușor. De fapt, maj oritatea tehnicilor existente
pentru detectare a anomaliilor rezolv ă o formulare specifică a problemei. Formularea este dată de
diverși factori precum natura datelor, disponibilitatea datelor etichetate, tipul anomaliilor ce
trebuie să fie detectat . Adese a, acești factori sunt stabiliți de domeniul în care anomalii le trebuie
să fie detectate. Cercetătorii au folosit noțiun i de la diverse discipline cum ar fi : statistic ă,
învățarea automată , data mining , procesare numerică a semnalelor și le-au aplicat asupra acestora
14
contexte de probleme specifice. Fig. 2.4 prezintă componentele cheie menționate mai sus
asociate cu tehnicile de detectare a anomaliilor.
Fig. 2.4 Componentele cheie asociate cu o teh nică de detectare a anomaliilor [VaruArinVipi2009] Dom enii de cercetare
– Învățare automată
– Data mining
– Statistică
– Teoria semnalelor
…………………..
.
.
Tehnica de detectare a anomaliilor
Caracter isticile problemelor
Dom enii de aplicabilitate
– Detectarea intruziunilor
– Detectarea fraudelor
– Informatică medicală
Natura datelor Etichete Tipul anomaliei Rezultatul (ieșirea)
15
2.5 Metode /Tehnici pentru detectarea anomaliilor
Atât în literatura de specialitate cât și în practică există numeroase tehnici de detectare a
anomaliilor.
Claisificarea metodelor se face în primul rând în funcție de tipul datelor de proces at
(eșantion) , dacă eșantionul de date pentru analiză furnizează și etichetele ce pot fi folosite pentr u
a construi un model de detecție a anomaliilor sau nu . În al doliea rând, împărțim metodele în
grupuri conform cu ipotezele lor : obiecte normale versus anomalii ( valori extreme ).
2.5.1 Metode supervizate
Experții domeniului examinează și etichetează un eșantion de date fundamentale/ de
bază. Detectarea anomaliilor poate fi văzută ca o problemă de clasificare . Principala sarcina este
de a învăța un clasificator să poată recunoaște anomaliile (valori excepție ). Eșantionul este
folosit pentru antrenare și testare. În unele aplicații, experții pot să eticheteze numai obiectele
obișnuite și orice alte obiecte care nu corespund modelului obișnuit sunt raportate ca anomalii
(valori excepție ). Alte metode analizează anomaliile și se ocupă de tratarea obiectelor care nu
corespund modelului normal .
Deși pot fi aplicate mai multe metode de clasificare, problemele pentru metodele
supervizate în detecția anomaliilor pot fi următoarele:
• Cele două clase (obiecte normale ver sus anomalii) sunt dezechilibrate. De obicei,
clasa anomaliilor este mult mai mică decât clasa obiectelor normale. Prin urmare,
pot fi utilizate metode de tratare pentru clasele dezechilibrate, cum ar fi
supraeșantionarea pentru a crește distribuția lor în setul de antrenament folosit la
contruirea clasificatorul. Datorită numărului mic de anomalii din date, datel e
analizate de experți ai domeniului și utilizate în antrenare nu sunt suficiente
pentru a reprezenta distribuția anomaliilor. Lipsă eșantioanelor cu anomalii poate
limita capacitatea clasificatorilor construiți. Pentru a înlătura aceste probleme,
unele metode contruiesc anomalii artificiale.
• În multe aplicații de detectare de tip outlier, identificarea cât mai multor anomalii
(valori excepție ) (recall -ul este mai important decât acuratețea) este mult mai
importantă decât etichetarea greșită a obiectelor normale ca și anomalii. Prin
urmare, atunci când se utilizează o metodă de clasificare supervizată în detecția
16
anomaliilor, trebuie interpretat ă în mod corespunzător pentru a fi luat în
considerare recall -ul.
În concluzie, metodele supervizate de detectare a anomaliilor trebuie să fie foarte bune în
ceea ce privește modul în care acestea antrenează și modul în care acestea interpretează
procentele de cl asificare datorită faptului că a nomaliile sunt rare în comparație cu celelalte
eșantioane de date.
2.5.2 Metode nesupervizate
Datorită faptului că în unele scenarii ale aplicațiilor,obiectele etichetate ca „normal” sau
„outlier ” nu sunt disponib ile. Prin urmare, în astfel de cazuri trebuie utilizată o metodă de
învățare nesupervizată . Metodele nesupvervizate de detectare a anomaliilor pornesc de la o
ipoteză implicită și anume: O biectele normale sunt oarecum „grupate” (clustered) .Cu alte
cuvinte, o detectare a anomaliilor de tipul nesupervizată se așteaptă ca obiectele
normale/obișnuite să urmeze un model mult mai frecvent decât anomaliile.
Obiectele obișnuite nu trebuie să fie într -un singur grup care are o similitudine mare , dar
ele pot fi împărțite în mai multe grupuri, unde fiecare grup are caracteristici distincte. Cu toate
acestea, se așteaptă ca un outlier să fie departe de orice grupuri de obiecte normale .
Ipoteza enunțată mai sus poate să nu fie adevărată tot timpul . Anomaliile cole ctive
partajează o similitudine mare într -o zonă mică. Metode de detectare nesuvervizata nu pot
detecta în mod eficient anomalii le colective . În unele aplicații, obiectele obișnuite sunt distribuite
și multe astfel de obiecte nu urmează un model anume. De exemplu, în detectarea intruziunilor și
în detectarea virușilor în sistemele cibernetice, activitățile normale sunt foarte diverse și multe nu
pot fi încadrate în clustere de înaltă calitate. În astfel de scenarii, metodele nesupervizate p ot
avea o rată mare de fals pozitiv – ele pot indica multe obiecte normale ca fiind anomalii
(intruziuni s au viruși în aceste aplicații) și să să nu detecteze care sunt adevăratele anomalii.
Datorită asemănării mari dintre intruziuni și viruși, identificarea anomaliilor folosind metode
supervizate poate fi mult mai eficientă.
Multe metode de clustering pot fi adaptate pentru a opera ca o metodă nesupravegheată
de detectare a anomaliilor. Principala idee constă mai întâi în identificarea grupurilor, iar apoi a
obiecte lor care nu aparțin la nici un grup, acestea fiind considerate anomalii. În utilizarea
metodelor de clustering, pot să apară două probleme :
– un obiect care nu aparține nici unui cluster po ate să fie zgomot și nu outlier;
17
– de multe ori, este costisitor să se identifice în primul rând grupurile și apoi să se găsească
anomaliile.
În general, sunt mai puține anomalii decât obiectele normale.
2.5.3 Metode semi -supervizat e
În multe aplicații, chiar dacă sunt obținute anumite exemple etichetate, este posibil ca
numărul exemplelor etichetate să fie mic. În unele cazuri, este posibil ca un set mic din obiectele
normale și/ sau din setul de anomalii să fie etichetat iar majoritatea datelor să nu fie etichetate
(nu se cunoaște nimic despre date) .
Metodele semi -supervizat e pentru detectarea anomaliilor se ocupă de tratarea
scenariilor de mai sus.
Metodele semi -supervizate pentru detectarea anomaliilor pot fi considerate metode de învățare
semisuperviza tă.
De exemplu, când unele obiecte etichetate ca fiind normale sunt disponibile, ele pot fi
folosite împreună cu obiecte neetichetate care sunt aproape, pentru a antrena un model pentu
obiectele normale.
Modelul p entru obiectele normale poate fi apoi folosit în detectarea anomaliilor –
obiectele care nu se potrivesc cu modelul pentru obiectelor normale sunt clasificate ca fiind
anomalii. Dacă sunt disponibile puține obiecte etichetate, metoda semi -supervizată pentru
detectarea anomaliilor este mai dificilă. Este foarte puțin probabil ca un număr mic de obiecte
etichetate să reprezinte toate anomaliile posibile. În concluzie este destul de greu să putem
construi un model pentru anomalii, bazându -ne doar pe câteva obiecte etichetate. Pentru a
îmbunătăți calita tea detecției de anomalii , putem utiliza modelele pentru obiectele normale
învățate cu metodele nesupervizate.
2.5.4 Metode statistice, metode bazate pe proximitate și metode bazate pe
clustering
Așa cum am discutat la inceputul capitolului 2.5 , metodele de dete ctare a anomaliilor
construiesc presupuneri despre anomalii versus despre restul datelor.
18
2.5.4.1 Metode statistice
Metodele statistice (cunoscute și ca metode bazate pe modele) fac presupuneri asupra
datelor /obiectelor normale. Aceste metode presupun că obiectele obișnuite sunt ge nerate pe baza
unei statisticii, iar datele care nu respectă modelul sunt anomalii.
Eficiența metodelor statistice depinde în mare parte de ipotezele făcute pentru modelul
statistic. Există mai multe tipuri de modele statistice. Spre exemplu, modelele statistice utilizate
în metodele statis tice pot fi parametrice sau non-parametrice.
2.5.4.2 Metode bazate pe proximitate
Metodele bazate pe proximitate presupun că un obiect este un outlier dacă obiectu l este
îndepărtat față de restul vecinilor săi iar distanța dintre obiect și restul vecinilor este una care se
abate semnificativ în comparație cu restul distanțelor dintre obiectele din același set.
În Fig. 2. 2 se observă că obiectele din spațiul R sunt cu mult îndepărtate de alte obiecte
din același set. În concluzie, pe baza metodei de proximitate putem eticheta obiectele din spațiul
R ca fiind anomalii.
Eficiența metodelor care utilizează proximitate în detectarea anomaliilor se bazeză pe
algoritmul folosit pentru stabilirea distanței dintre obiecte. În unele aplicații, astfel de măsurători
nu pot fi obținute cu ușurință. Metodele bazate pe proximitate au adesea dificultăți în detectarea
unui grup de anomalii dacă obiectele sunt apropiate unele de celelalte.
Există două tipuri majore de metode bazate pe proximitate în ceea ce privește detectare a
anomaliilor :
o bazate pe distanțe ;
o bazate pe densitate .
2.5.4.3 Metode bazate pe clustering
Metodele bazate pe clustere presupun că obiectele obișnuite /normale aparțin
spațiilor/regiunilor mari ca și suprafață și grupuri lor dense, spre deosebire de outliers care aparțin
unor clustere mici sau rare sau nu aparțin la orice clustere .
19
2.6 Învățarea nesupervizată (Clusterizarea)
Pentru î nvățarea nesupervizată (unsupervis ed learning) nu este necesară prezența setului
de antrenament cu date preclasificate anterior . Scopul învățării nesupervizate este definit de
necesitatea de analizare a datelor pentru găsirea unor structuri intrinseci. Utilizatorul explorează
datele având ca scop găsirea unor noi structuri care să -i fie totodată și folositoare.
Una din cele mai importante metode ale învățării nesupervizate este clusterizarea, unde
datele sunt organizate în grupuri similare numite clustere astfel încât instanțele unui grup sunt
similare în ceea ce privește un anumit criteriu și total diferite față de datele din celelalte grupuri.
În ceea ce privește procesul de clusterizare, acesta poate fi definit astfel :
Clusterizarea este procesul de grupare a datelor care fac parte dintr -o colecție
nestructurată în grupuri numite clustere ale căror membrii sunt similari într -un anumit fel.
Clusterele trebuie să satisfacă 2 condiții:
– fiecare cluster trebuie să conțină cel puțin un obiect
– fiecare obiect trebuie să fie i nclus într -un singur cluster
În ceea ce privește tipul de clasificare nesupervizată , pot exista probleme serioase numite
probleme de clasificare nesupervizată. Acestea propun o partiționare optimală a spațiului datelor
de intrare din punctul de vedere al u nui anumit criteriu matematic, fără a folosi informații
cunoscute anterior . Avantajul major al acestor metode este acela că ele sunt complet automate,
fără a fi necesară intervenția utilizatorului și pot fi e folosite de asemenea, pentru clasarea datelor
despre care nu se cunosc informații referitoare despre conținutul lor. Pe de altă parte, deoarece
este un proces automat, relevanța grupurilor determinate tinde să fie mai scăzută decât în cazul
clasificării supervizate, aceasta dependente de metoda folosită și de puterea de discriminare a
spațiului de caracteristici folosit. [Ione2011]
Calitatea metode lor de clustering se diferențiază prin utilizarea unor funcții obiectiv.
Calitatea clusterizării se referă în primul rând la omogenitatea în cadrul grupu rilor și
separabilitatea între grupurile rezultate în urma procesului de clusterizare.
Procesul de învățare nesupervizată este iterativ și este prezentat în Fig. 2.5 .
Similaritatea este o metrică prin care se reflectă compatibilitatea sau nivelul de
relaționare între două date, două șiruri text sau caracteristici.
20
Pentru clusterizare este necesară existența unei funcții de similitudine pentru a putea
stabili gradul de similaritate î ntre două date, sau alternativ, o funcție care să monitorizeze gradul
de disimilaritate astfel încât să putem stabili distanța dintre două date.
În ceea ce privește sectorul informatic, un număr mare de aplicații utilizează metode de
clusterizare cu scopul obținerii unor rezultate superioare.
Un volum mare de date ce trebuie procesat e este principala problemă a clusterizării
deoarece algoritmii de clusterizare sunt cu timp de răspuns mare.
Fig. 2.4 Procesul de învățare nesupervizată
Majoritatea algorit milor de clustering se clasifica in doua mari categorii: algoritmi
ierarhici si algoritmi partiționali. In cazul algoritmilor ierarhici, clusterele sunt determinate
succesiv, utilizând clusterele formate la pașii anteriori. Algoritmii partiționali determin a toate
clusterele in paralel.
Algoritmi partiționali: Algoritmul k -Means, Algoritmul k -Medoid. [Avag2012]
În ceea ce privește analiza clusterului , rețineți că nu nu este un algoritm specific, ci o
sarcina generală ce trebuie rezolvat ă. Analiza clusterului se poate realiza prin diferiți algoritmi
care diferă semnificativ. Noțiunile clasice de clustere includ grupuri cu distanțe mici între
membrii clusterului, zone dense ale spațiului de date, intervale sau distribuții statistice
particulare. Astf el, gruparea poate fi formulată ca o problemă de optimizare multi -obiectivă.
Algoritmul adecvat de grupare și setările parametrilor (inclusiv parametrii cum ar fi funcția de
distanță de utilizat, pragul de densitate sau numărul de clustere așteptate) depin d de setul
individual de date și de utilizarea prevăzută a rezultatelor. Analiza clusterului ca atare nu este o
sarcină automată, ci un proces iterativ de descoperire a cunoștințelor sau de optimizare
interactivă multi -obiectivă care implică încercarea și tot odată și eșecul. Adesea este neces ară
21
modificarea parametrilor de pre-procesare a datelor și a parametrilor de model până când
rezultatul atinge la proprietățile dorite .
Analiza clusterelor a fost creată în antropologie de către Driver și Kroeber în 1932 și
introdusă în psihologie de către Zubin în 1938 și Robert Tryon în 1939 și folosită de Catt ell la
începutul anului 1943 pentru clasificarea teoriei traitului în psihologia personalității . [ClusAnal]
Un cluster reprezintă, în esență, un set de grupări, care conțin, de regulă , toate obiectele
din setul de date. În plus, poate specifica rela ția dintre clustere, de exemplu, o ierarhie de clustere
încorporate una în cealaltă. Grupele pot fi distinse aproximativ ca fiind :
✓ Gruparea clară: fiecare obie ct aparține unui cluster sau nu
✓ Gruparea neclară ( clustering fuzzy ): fiecare obiect aparține fiecărui cluster într -un anumit
procentaj (de exemplu, o probabilitate de apartenență la cluster)
2.7 Algoritmul Fuzzy C -Menas
Termenul de fuzzy , în contextul algoritmilor de clustering , desemnează faptul că un
cluster fuzzy este o formă de grupare în care fiecare punct de date poate aparține mai multor
grupări.
Algoritmul Fuzzy C -Means (FCM) , cunoscut si ca Fuzzy ISODATA este unul dintre
cei mai utilizați alg oritmi fuzzy nesupervizați pentru clasificarea datelor și reprezintă o metodă
care arată cum sunt grupate obiectele ce alcătuiesc un spatiu multidimensional intr -un numar
specificat de clase diferite.
Tehnica fuzzy a celor c medii (Fuzzy C -means) reprezintă o tehnică de clustering cu
ajutorul căreia se specifică gradul de aparenență al unui elemet din setul de date, la una sau mai
multe clase. În cazul analizei non-fuzzy, sau hard clustering, informația este distribuită în
clustere crisp, unde fie care entitate aparține unui singur cluster.
Asocierea unui obiect cu un cluster se face în funcție de gradul de apartenență. Cu alte
cuvinte :
✓ Pentru hard clustering:
=0,1
ijudacă xiϵCj
,dacă xi∉Cj
Exemplu:
Fig.2.6 Hard clustering
22
✓ Pentru fuzzy clustering: uijϵ[0,1]
Exemplu:
Fig.2.7 Fuzzy clustering
Metoda fuzzy este folosită adesea pentru recunoașterea modelelor și se bazează pe
minimizarea funcției obiectiv prezentată mai jos :
J(U,K)=∑∑(uij )m‖xi−Kj‖2k
j=1n
i=1 (1)
unde:
•
} ,…,,{2 1 nx xx X= reprezintă o mulțime a entităților, fiecare având câte m
caracteristici;
•
} ,…,,{2 1 kK KK K= reprezintă mulțimea centroizilor, unde numărul de clusteri
este specificat prin variabila k ;
• notația ‖xi−Kj‖ reprezintă orice metrică utilizată pentru a determina distanța
dintre un element și centroidul unui cluster ;
• gradul de fuzzyficare – m, a cărei valoare este cuprinsă în intervalul 𝑚𝜖[0,∞], este
folosit pentru a controla diferențele dintre gradele de aparte nență ; reprezintă
gradul cum membrii unui cluster influen țează/ afectează rezultatul final . Nu există
nici o bază teoretică pentru a alege valoarea optimă pentru m, dar de cele mai
multe ori, în mod frecevent se alege valoarea 2 (m=2) ;
• matricea gradelor de apartenență este reprezentată prin U=(uij)n∙k unde, uij
este gradul de apartenență al elementului xi la clusterul j, care trebuie să
îndeplinească condiții de mai jos :
uijϵ[0,1],(∀)i=1,…,n,(∀)j=1,…,k (2)
23
∑uij=1,(∀)i=1,…,n (3)k
j=1
Etapele algoritmului Fuzzy C -means :
1) Se inițializează centroizii K;
2) Se calculează elementele matricei gradelor de apartenență U, care să
îndeplinească cele două condiții de mai sus, folosind următoarea formulă:
uij=1
∑ (dij
dil)c
l=12
m−1 (4)
unde, dij=‖xi−Kj‖,∀i=1,…,n,∀j=1,…,k (5)
3) Se calculează centroizii Kj după formula:
Kjl=∑ (uij)m∙n
i=1 xil
∑ (uij)m n
i=1,∀j=1,…,k,∀l=1,…,m (6)
4) Se repetă pașii 2) și 3) până când se ajunge la minimul valorii lui J.
Gruparea fuzzy are loc printr -un proces iterativ de optimizare, care are ca scop
minimizarea funcției obiectiv, prin actualizarea gradului de apartenență uij a elementului xi la
clusterul j. Procesul de grupare se oprește când este îndeplinită condiția:
max ij{|uijv+1−uijv|}<ε, 0<ε<1 (7)
unde ε este criteriul de oprire, iar v – numărul iterațiilor procesului de optimizare.
Algoritmul poate fi considerat:
AlegeCentroiziiInițiali(K,k);
Cât timp (nu s -a ajuns la valoarea minimă a funcției obiectiv J)
CalculeazăMatriceaGradelorDeApartenență;
Recalculează centroizii;
RecalculeazăFuncțiaObiectiv;
Sfârșit-cât timp
24
Schema de principu a algoritmului Fuzzy C -Means este prezent ă în Figura 2.7.
Fig. 2.7 Schema logică a algoritmului Fuzzy C -Means [Clus]
Astfel, entitățile din setul de date lor de intrare sunt atașate unui cluster prin intermediul
valorii medii corespunzătoare funcției de apartenență. Din această cauză se folosește matricea U,
ale cărei elemente sunt numere cuprinse în intervalul 0 și 1, și reprezintă gradul de apartenență
dintre o entitate și un anumit centroid. [GanMa2007]
25
3 PARTEA PRACTICĂ
3.1 Dezvoltare aplicație
Pornind de la ideea algoritmului de clustering Fuzzy C -Means, cu ajutorul căruia se
precizează gradul de aparenență al unui elemet din setul de date, la una sau mai multe clase,
aplicația determină pentru fiecare element din setul de date dacă este anomalie sau nu este
anomalie.
Aplicația a fost dezvoltată având ca și model schema unui sistem de recunoaștere a
paternurilor :
Fig. 3.1 Componentele unui sistem de recunoaștere a paternurilor [Poli2006]
26
3.1.1 Fluxul de evenimente este prezentat în schema de mai jos
Pre-procesarea datelor (Calcularea mediei, normalizarea valorilor)
Clustering
Algoritmul Fuzzy C -Means
Evaluarea algoritmului de clustering
Acuratețe
Fig. 3.2 Fluxul de evenimente
Setectarea atributelor din setul de date
Precizie Recall Set de date
27
3.1.2 Setul de date
Setul de date folosit de mine este reprezentat de baza de date „ Webscope_S5 ” care
conține fișiere de tip log alea serverului Yahoo. Întreg setul de date este disponibil la adresa
http://research.yahoo.com .
• Setul de date folosit este în format CSV.
3.1.2.1 Formatul CSV
Formatul CSV poate fi văzut ca un set de reguli cu ajutorul cărora se pot realiza formate
text care să permită structurarea datelor.
În calcul, comma -separated values, prescurtat CSV este un fișier de valori care sunt
separate prin virgulă . În fișier ele CSV informatțiile sunt stocate sub formă de numere și tex t.
Un fișier CVS prezintă următoarele caracteristici :
✓ fiecare linie a fișierului reprezintă o înregistrare de date;
✓ fiecare înregistrare este formată din unul sau mai multe câmpuri, separate
prin virgule;
✓ utilizarea virgulei ca separator de câmp este sursa numelui pentru acest
format de fișier
Formatul de fișier CSV nu este complet standardizat. Datele care se regăsesc în format
CSV sunt ușor de interpretat dar ele devin greu accesibile atunci cân d pot conține și virgule.
Formatul CSV nu gestionează astfel de câmpuri. În astfel de situații se pot folosi ghilimele
pentru a arată ca virgula este parte din informație și nu delimitator între date.
CSV este un format comun de schimb de date, care este utilizat pe scară largă în
aplicații de consum, de afaceri și științifice. Printre cele mai dese utilizări se află deplasarea
datelor tabulare între programele care funcționează nativ pe formate incompatibile.
Spre exemplu, un utilizator poate să transfere informații dintr -un program al bazei de
date care stochează date într -un format specific/propriu , într -o foaie de calcul care utilizează un
format complet diferit. Este foarte probabil ca p rogramul bazei de date, să poată exporta datele
în format CSV ; fișierul CSV exportat poate fi ulterior importat de programul de calcul tabelar.
3.1.2.2 Benchmark -urile
Baza de date folosită de mine conține 4 tipuri de fișiere CVS, care s e găsesc sub numele
de Benckmark -uri în cardul cen trelor de cercetare și dezvoltare.
28
Un bechmark reprezintă un fișier al cărui scop este acela de a măsura performanța sau
nivelul de calitate al unui anumit sistem/ rodus/component ă. Aceste fișiere pot fi folosite pentru a
face comparație între produse (spr e exemplu, cât de bun este un produs în comparație cu altu
dintr -un anumit punct de vedere). Când au loc asupra comparații asupra valorile de referință, cu
cât este mai bună valoarea rezultatelor, cu atât este mai rapid ă/satisfăcătoare componenta,
software -ul sau hardware -ul global.
Benchmarking -ul este utilizat pentru a măsura performanța folosind un indicator
specific, având ca și rezultat o metrică de performanță care este ulterior comparată cu altele.
[Fife1989] A cest proces este adesea folosit în management, în special în managementul strategic,
în care organizațiile /firmele evaluează diverse aspecte ale proceselor lor în raport cu procesele
companiilor de cele mai bune practici, de regulă în cadrul unui grup de experți , așadar în cadrul
unui grup definit în scopul comparării. Aceasta permite ca organizațiile să poată elabora planuri
de îmbunătățire sau de adaptare în ceea ce privește cele mai bune practici specifice, având ca
scop mărirea performanței. În procesul de benchmarking cu cele mai bune practici,
managementul identifică cele mai bune firme din industrie sau într -o altă industrie unde există
procese similare și compară rezultatele și procesele celor studiate cu propriile rezultate și
procese. În acest fel, ei înțeleg cât de bine au fost îndeplinite obiectivele și, mai mult, procesele
de afaceri care jusfică de ce aceste firme au succes.
Benchmarking -ul este v ăzut adesea ca un proces continuu prin care organizațiile verifică
în permanență cum pot să îmbunătățească propriile practicile.
Baza de date conține benckmark -uri care sunt de la cele mai simple la cele mai complexe :
• A1Benchmark
• A2Benchmark
• A3Benchmark
• A4Benchmark
Benchmark -urile A1Benchmark și A2Benchmark cuprinde serii de timp reale și
sintetice cu anomalii etichetate. Setul de date sintetic conține serii de timp cu sezonalitate
aleatorie, tendință și zgomot. Anomaliile din datele de sinteză sunt inserate în poziții aleatorii.
Marcajele de timp din benchmark –ul A1Benchmark sunt înlocuite cu numere întregi cu
incrementate cu valoarea 1, unde fiecare punct de date reprezintă valoarea unei ore. Anomaliile
din A1Benchmark sunt marcate de oameni și, prin urmare, pot să nu fie consecvente, în timpul
analizei comparative A1Benchmark este cel ma i bine folosit pentru măsurare.
Benchmark -urile A1Benchmark și A2Benchmark conțin serii de timp sintetice.
29
Benchmark -ul A3Benchmark conține numai outiliers values , spre deosebore de benchmark -ul
A4Benchmark care conține și anomalii, acestea fiind marcate ca puncte de schimbare. Seria
temporală sintetică include și zgomot și tendințe diferite cu trei sezonalități pre -specificate. Și
pentru aceste benchmark -uri, a nomaliile din seriile sintetice de timp sunt inserate în poziții
aleatorii.
Fiecare benchmark conține 100 de fișiere CSV.
După o analiză amănunțită a setului de date, am descis să import fișierele CSV într-un
registru de calcul folosind programul de calcul tabelar Microsoft Excel, astfel datele sunt vizibile
și interpretabile mai ușor. Deschiderea unui fișier text în Microsoft Excel nu modifică formatul
fișierului și acest lucru este vizibil în bara de titlu Excel, unde numele titlului păstrează extensia
numelui de fișier (de exemplu, .txt sau .csv).
În figurile de mai jos este prezentat formatul datelor din fiecare benchmark :
✓ Structura datelor din benchmark -ul A1Benchmark (Fig. 3.3)
Fig.3.3 Structura unui fișier din A1Benchmark
30
✓ Structura datelor din benchmark -ul A2Benchmark (Fig. 3.4)
Fig.3.4 Structura unui fișier din A2Benchmark
Datele din benchmark -ul A1Benchmark se diferențiază de cel din A2 Benchmark prin:
– valorile din coloana timestamp pentru A1 Benchmark sunt în ordine crescătoare, de la 1
la 1434, spre deosebire de valorile din A1 Benchmark care sunt încep cu o valoare
mare și nu sunt într -o ordine predefinită ;
– valorile din coloana value pentru A1Benchmark sunt numere întregi spre deosebire de
valorile din A1Benchmark care sunt numere cu virgulă .
✓ Structura datelor din benchmark -urile A3Benchmark și A4Benchmark – pentru
aceste benchmark -uri structura datelor este la fel . (Fig. 3.5 )
Fig. 3.5 Structura unui fișier din A3Benchmark
31
Atât A3 Benchmark cât și A4 Benchmark conțin un fișier CSV cu toate valorile
existene în A3 Benchmark , respectiv în A4 Benchmark . (Fig. 3.6)
Fig. 3.6 Structura fișier CVS care conține toate fișierele CSV din A4Benchmark
✓ Câmpurile existente în structurile prezentate mai sus au următoarea semnificație:
✓ Câmpul „ timestamp ” resprezintă marcajele de timp ale unui set de date. Acestea
sunt înlocuit e cu numere întregi (se porneș te de la valaorea 1 si apoi fiecare
timestamp este incrementat cu 1) , unde fiecare punct de date reprezintă valoarea
unei ore. Anomaliile dintr -un benc hmark sunt marcate de oameni și, prin urmare,
pot să nu fie sau sa nu fie consecvente .
✓ Câmpul „ value ” reprezintă valoarea seriei de timp pentru un anumit timestamp.
✓ Câmpul „ is_anomaly ” este un indicator boolean care indică dacă valoarea curentă
la o dată marcată este considerată ca fiind o anomalie sau nu. Valoarea 1 pentru
campul „is_anomaly” indică faptul că cineva a se sizat o anomalie pentru
timestam -ul respectiv iar valoarea 0 înse mnă că acț iunile unui utilizator de Yahoo
s-au desfă surat fără ca acesta s ă întâ mpine probleme.
✓ Changepoint ; dacă acest câmp are vloarea 1, acest lucru indică faptul că a avut loc
o schimbare în procesul normal al unui utilizator de Yahoo .
✓ Trend – valoarea trendului aditiv pentru această marcă de timp .
✓ Noise – valoarea zgomotului aditiv pentru această marcă de timp .
✓ Seasonality1 – valoarea monitorizată timp de 12 ore .
✓ Seasonality2 – valoarea monitorizată pe o zi (24 ore) .
✓ Seasonality3 – valoarea monitorizată pe o săptămână .
32
Pentru lucrarea mea, am folosit 10 seturi de date din benchmark -ul A1Benchmark. .
3.2 Metode de reprezentare a datelor
Așa cum spune si numele algoritmul, indicat ar să lucrăm cu valori fuzzy. Măsurile fuzzy
sunt folosite pe ntru a compara vectori ale caror componente iau valori in intervalul închis [0, 1].
Pornind de la aceasta idee, înainte de a începe implementarea algoritmului Fuzzy C –
Means, am efectuat o analiza amănunțită și câteva operații asupra datelor, având ca scop testarea
algoritmului pentru aceleași date care sunt reprezentate sub diferite forme. De asemena, prin
reprezentarea datelor de intrare sub diferite forme se poate face și o comparație asupra
rezultatelor -dacă rezultatele returnate de algoritm sunt sau nu sunt mai bune în funcție de datele
de intrare.
Prin urmare, asup ra detelor de pe coloana „ value” s -au executat urm ătoarele operații :
1. Media aritmetică pentru fiecare set de date. Med ia aritmetică, numită adeseori
„medie ” este indicatorul cel mai utilizat p entru a caracteriza tendințele centrale. Am
calculat media deoarece este un indicator care indică unde datele tind să se
aglomereze.
Am calculat media aritmetică după formula clasică :
𝑚 𝑎=1
n∑𝑎 𝑖 (8)𝑛
𝑖=1
2. Mediana . Cuvântul mediană provine din limba latină – „medius” care înseamnă
„mijloc”. Mediana este acea valoare a unei serii ordonate crescător sau descrescător
care împarte seria în două părți egale, astfel încât 50% din termenii seriei au valori
mai mici decât mediana, iar restul de 50% din termenii seriei au valori mai mari decât
mediana . Mediana, spre deosebire de media aritmetică, poate să fie utilizată pentru a
caracteriza tendința centrală pentru o ser ie de măsurate pe o scară ordinală. Mediana
se raportează doar la poziția termenilor în serie, nu și mărimea acestor valori, deci
mediana nu are influență valorilor foarte mari sau foarte mici care sunt lăsate în afara
seriei.
3. Minimul și maximul fiecărui set de date. A fost necesară calcularea acestor 2 valori
deoarece au fost folosite în procesul de normalizare a datelor.
33
4. Normalizarea datelor . Prin procesul de normalizare, datele de pe coloana „ value” au
fost transpuse în intervalul [0,1] după formula :
𝑛 𝑣=𝑣− 𝑚𝑖𝑛 𝑣 𝑖
𝑚𝑎𝑥 𝑣𝑖− 𝑚𝑖𝑛 𝑣𝑖𝑥 (𝑛max − 𝑛𝑚𝑖𝑛)+ 𝑛 𝑚𝑖𝑛 (9)
unde:
• 𝑛 𝑣 – este noua valoare
• 𝑣 – valoarea inițială
• 𝑚𝑖𝑛 𝑣 𝑖 – minimul valorilor din șir
• 𝑚𝑎𝑥 𝑣𝑖 – maximul valorilor din șir
• 𝑛max – maximul intervalului dat
• 𝑛𝑚𝑖𝑛 – minimul intervalului dat
5. Abaterea standard. Acest indicator , cunoscut și sub numele de abatere medie
pătratică, notat cu litera grecească omega – σ, indică abaterea în mărime absolută a
acelor valori înregistrate fa ță de media aritmetică. Acest indicator, împreună cu media
sunt frecevent folosiți pentru a caracteriza un set de date.
Pentru fiecare set de date s -a calculat a baterea standard ca fiind radicaul
indicatorului dispers ie:
𝜎=√𝐷 (10)
6. Quartilele – sunt valori numerice care împart setul de date î n q grupe egale. Constanta
q reprezintă ordinul quantilei. [Stat]
Quartilele sunt folosite dacă numă rul unităților statistice este destul de mare și
se consideră necesar ă construirea a patru grupe egale care să caracterizeze un un
anumit grad de omogenitate.
Există 3 quartile :
• Q 1 – este cuartila inferioară și delimitează cele mai mici 25% de valori
din setul de date.
• Q 2 – delimitează cele mai mici 50% din date și împarte setul de dat în
două părți. Ca și caracteristică, Q 2 este egală întotdeauna cu mediana;
34
• Q 3 – este cuartila superioară și delimiteaz ă cele mai mari 25% de valori
din setul de date .
Calcularea quartilelor are la bază logica metodologică care este folosită pentru
cacularea medianei, dar ține cont de locul ocupat de quarila respectivă.
7. Modulul . Pentru fiecare valoarea din coloana „value” s-a caculat modulul, după
formula:
| x |={−𝑥, 𝑥<0
𝑥, 𝑥≥0 (11)
În mulțimea numerelor realea, m odulul unui număr este cunoscut și sub denumirea de
valoarea absolută a unui număr iar dacă ne raportăm la numere complexe, modulul uni număr
reprezintă distanța dintre număr și origine.
Datele de intrare pentru a lgoritmul Fuzzy C -means sunt valorile din coloana „ value” iar
valorile de pe coloana „ is_anomaly” au fost folosite la contruirea maricei confusion matrix –
vezi capitolul 3.5 Rezultate.
Înainte de a începe implementarea și rularea algoritmului Fuzzy C -Meas, am propus 5
seturi de date de intra re care se bazează pe indicatorii statistici calculați anterior .
3.2.1 Caz 1
Pentru cazul 1, setul de date intrare este reprezentat de valorile nemodificate din cea
dea-a 2 coloană (coloana „value” ):
Input = x i , pentru i ϵ N , unde N este numărul total al datelor de pe coloana
„value” (12)
3.2.2 Caz 2
Pentru cel de -al 2-lea set de date de intrare, am ales ca utilizez ș i valoarea mediei ca
parte din datele de intrare deoarece media reprezintă acea valoare care înlocuind toți termenii
unei serii nu m odifică nivelul lor totalizator.
Setul de intrare este reprezentat de valoarea absolută (modulul) a diferenței dintre media
valorilor nemodificate din setul de date si valorile nemodificate din coloana „ value”.
Input = | media valorilor nemodificate din setul de date – x i nemodificat | (13)
35
3.2.3 Caz 3
In cel de -al treilea caz, inputul este reprezentat de valoare a absolută (modulul) a
diferenței dintre media valorilor nemodificate din setul de date ș i valorile n ormalizate din
coloana „ value”. Deoarece s -a lucrat cu valori normalizate, rezultate obținute după rularea
algoritmului sunt in intervalul închis [0,1].
Input = | media valorilor nemodificate din setul de date – x i normalizat | (14)
3.2.4 Caz 4
Pentru pentultimul caz – caz 4 , inputul este reprezentat de valoarea absolută (modulul) a
diferenței dintre media valorile normalizate ș i datele nemodificate. Și pentru acest caz, rezultate
obținute după rularea algoritmului sunt in intervalul închis [0,1].
Input = | media valorilor normalizate din setul de date – x i nemodificat | (15)
3.2.5 Caz 5
Pentru ultimul caz, inputul este construit p e baza valorilor normalizate ș i a mediei
valorilor normalizate, utilizând și în acest utlim caz modulul.
Input = | media valorilor normalizate din setul de date – x i normalizat | (16)
3.3 Implementarea Fuzzy C -Means
Pentru a d etecta anomaliile existe în cele 10 seturi de date, am implementat algoritmul
Fuzzy C -Means.
Primul pas din construirea algoritmului a fost citirea datelor din fiecare fișier CSV, pe
rând. Citirea datelor se face prin următoarea instrucțiune :
input = np.loadtxt(" csv\\real_4.csv", dtype='i', delimiter=',')
unde „ real_4.csv ” este cel de -al 4-lea set de dat e salvat în folderul cu numele „csv”.
În următorul pas, datele de pe coloana „value” sunt stocate în vectorul unidimensional x iar
datele de pe coloana „is_anomaly” sunt stocate în vectorul unidimensional y:
x = input[:,[1]]
y = input[:,2]
36
Deoarece num ărul datelor de intrare din cele 10 fișiere este variabil (numărul
înregistrărilor nu este același pentru toate fișierele), prin următoarea instrucțiune, în variabila N
este salvat numărul toatal de înregistrări dintr -un fișier CSV :
N,size = np.shape(x)
Algoritmul utilizat fiind un algoritm de clustering este nevoie să stabilim numărul de
clustere înainte să trece la rularea propriu -zisă. În variabila C se specifică câte clustere dorim să
obținem la sfârșitul rulării algoritmului ( în exemplul de mai jos, la finalul execuției algoritmului
FCM s-au obțiut 2 clustere) :
C=2
De asemnea, algoritmul lucrează cu încă 2 parametrii, a căror valoare trebuie specificată
de la început :
• gradul de fuzzyficare – reprezentat prin parametrul m, a cărei valoare este
cuprinsă în intervalul 𝑚𝜖[0,∞] indică gradul cum membrii unui cluster
influențează/ afectează rezultatul final . S-a ales:
m = 20
• numărul de iterații – reprezentat prin parametrul k. S-a ales:
k = 1000
În următoarea etapă a implemementării algoritmului, matricea gradelor de apartenență –
matricea U este inițializată cu valori random în intervalu l (C, N), unde C= numărul de clustere și
N este numărul total de valori dintr -un fișier CS V. Ambele valori au fost stabilite anterior.
După ce au fost atribuite valori parametrilor ficși din cadrul algoritmului iar matricea U a
fost inițializată cu valori random, putem să începem calcularea centrelor de greutate. Acest calcul
se va efectua , ca și număr de iterații atâtea câte au fost stabilite prin variabila k (în cazul de față,
se vor executa 1000 de interații până la stabilirea clusterelor finale ).
Centrele de greutate se calculează după formula :
𝑐𝑗=∑ (𝑢)𝑖𝑗𝑚 . 𝑥𝑖𝑁
𝑖=1
∑ 𝑢𝑖𝑗𝑚 𝑁
𝑖=1 (17)
Odată efectuat calcul pentru centrele de greutate, următoarea etapă este actualizarea
matricei gradelor de apartenență a valori x i din setul datelor de intrare pentru fiecare clustere.
Cu alte cuvinte, se actualizează matricea U după formula :
37
𝑢𝑖𝑗=1
∑‖𝑥𝑖 − 𝑐𝑗‖
‖𝑥𝑖 − 𝑐𝑗‖ .( 1) 2
𝑚−1 𝑐
𝑘=1 (18)
Actualizarea matricei U se oprește când este îndeplinită condiția:
‖𝑈(𝑘+1 )− 𝑈𝑘‖< 𝜀 , unde 𝜀 ϵ (0, 1) (19)
Dacă nu este îndeplinită condiția de mai sus, atunci se revine la calcularea centrelor de
greutate.
Algoritmul FCM are ca date de intrare cele 10 seturi de valori din bechmark -ul
A1Benchmark, și din fiecare set de date s -au obținut încă 4 seturi de date bazate pe cazuri
deteliate în capitolul 3.2 Metode de rep rezentare a datelor. În total, algoritmul FCM are 50 se
seturi de date de intrări.
Algoritmul FCM are nevoie de următoarele configurări pentru a puta fi rulat pentru cele 5
seturi de date propuse de mine:
➢ pentru Cazul 1 – întru -cât pentru acest caz setul de date de intrare este formatul
din datele originale, datele asupra căror nu se aplică niciun fel de modificare, nu
este nevoie de nicio modificare în implementarea algoritmului FCM .
➢ pentru Cazul 2 , deoarece noul input este format din modulul diferenței dintre
media valorilor nemodificate din setul de date ș i valorile nemodificate din coloana
„value” , sunt necesare următoarele acțiuni :
1. calcularea mediei pentru valorile nemodificate de pe coloana „value” se face
prin următoarea instrucțiune :
#Media valorilor originale (comentariu)
media = np.mean(x)
2. următoarea instrucțiune calculează modulul dintre media salvată în variabila
media și fiecare valoare nemodificată salvată în vectorul x = input[:,[1]]
new_input = abs(media – x)
➢ pentru Cazul 3, setul de date – noul input fiind format din modulul diferenței
dintre media valorilor nemodificate din setul de date și valorile normalizate din
coloana „ value” , sunt necesare următoarele acțiuni :
38
1. calcularea mediei pentru valorile nemodificate de pe coloana „value” se
face prin următoarea instrucțiune:
#Media valorilor originale (comentariu)
media = np.mean(x)
2. următoarea instrucțiune efectueaz ă normalizarea datelor, adică transpune
fiecare valoare x i din vectorul x = input[:,[1]] în intervalul închis [0,1] :
#Normalizarea datelor in intervalul (0,1) (comentariu)
x_normalized = (x -min(x))/(max(x) -min(x))
3. ultima instrucțiune calculează modulul dintre media salvată în variabila
media și fiecare valoare normalizată salvată în vectorul x_normalized și
salvează rezultatul în variabila new_input
new_input = abs(media – x_normalized)
Rezultate obținute după rularea algoritmului sunt in intervalul închis [0,1].
➢ pentru Cazul 4, setul de date este reprezentat de modulul diferenței dintre media
valorile normalizate și datele nemodificate. Pentru setul datelor de intrare al
penultimului caz, sunt necesare următoarele acțiuni :
1. de aceast ă dată, mai intâi trebuie normaliz ate valorile salvate anteri or în
vectorul de intrare x = input[:,[1]]
#Normalizarea datelor in intervalul (0,1) (comentariu)
x_normalized = (x -min(x))/(max(x) -min(x))
2. în al doilea pas se calculează media pentru valorile normalizate obținute la
pasul anterior
#Media valorilor normalizate (comentariu)
media_val_normalizate = np.mean(x_normalized)
3. ultima instrucțiune calculează modulul dintre media valorilor normalizate
salvată în variabila media_val_normalizate și fiecare valoare originală
(nemodificată) salvată în vectorul x = input[:,[1]] iar rezultatul este salvat
în variabila new_input
39
new_input = abs(media_val_normalizate – x)
Rezultate obținute după rularea a lgoritmului sunt in intervalul închis [0,1].
➢ pentru Cazul 5 , setul de date este construit pe baza valorilor normalizate și a
mediei valorilor normalizate, utilizând și în acest utlim caz modulul . Pentru setul
datelor de intrare al ultimului caz, sunt necesare următoarele acțiuni :
1. prima dată trebuie normalizate valorile salvate anterior în vectorul de
intrare x = input[:,[1]]
#Normalizarea datelor in intervalul (0,1) (comentariu)
x_normalized = (x -min(x))/(max(x) -min(x))
2. în al doilea pas se calculează media pentru valorile normalizate obținute la
pasul anterior
#Media valorilor normalizate (comentariu )
media_val_normalizate = np.mean(x_normalized)
3. ultima instrucțiune calculează modulul dintre media valorilor normalizate
salvată în variabila medi a_val_normalizate și fiecare valoare normalizată
salvată în vectorul x_normalized iar rezultatul este salvat în variabila
new_input
new_input = abs(media_val_normalizate – x_normalized)
După stabilirea parametrilor ficși și a acțiunilor necesare pentru cele 5 tipuri de input ,
urmează etapa de implementare a agloritmului FCM pentru cazuri particulare de clustere și
anume :
3.3.1 FCM pentru 2 clustere
Pentru ca algoritmul să aibă ca output 2 clustere, prima modificare pe care trebuie s ă o
facem este aupra parametrului fix C. Este necesar să setăm variabila fixă C din cadrul
implementării cu valaorea 2 , aceasta indicând numărul de clustere :
C = 2
Algoritmul FCM cu 2 clustere a fost rulat peste toate cele 5 tipuri de input. Nu a fost
necesară nicio modificare asupra algoritmului dacă ne raportăm la datele de intrare.
40
Pentru FCM cu 2 clustere, matricea gradelor de apartenență – U este format ă din :
– 2 coloane deoarece avem 2 clustere ;
– N număr de linii, unde N este numărul toatal de înre gistrări dintr -un fișier CSV care
variază de la un fișier CSV la altul .
Mai jos sunt prezentate valorile obținute pentru cele 2 clustere și valorile matricii U:
3.3.2 FCM pentru 3 clustere
Pentru ca în urma rulării algoritmul să obținem ca output 3 clustere, este necesar să setăm
variabila fixă C – numărul de clustere din cadrul implementării cu valaorea 3 :
C = 3
41
Algoritmul FCM cu 3 clustere a fost rulat peste toate cele 5 tipuri de input. Nu a fost
necesară nicio modificare asupra algoritmului dacă ne raportăm la datele de intrare.
Pentru FCM cu 3 clustere, matricea gradelor de apartenență – U este format ă din :
– 3 coloane deoarece avem dorim să avem la outpu 3 clustere ;
– N număr de linii, u nde N este numărul toatal de înregistrări dintr -un fișier CSV care
variază de la un fișier CSV la altul .
Mai jos sunt prezentate valorile obținute pentru cele 3 clustere și valorile matricii U:
3.3.3 FCM pentru 4 clustere
Pentru ca să obținem ca output 4 clustere în urma rulării algoritmului, parametrul fix C,
trebuie să fie inițializatat cu valaorea 4 :
C = 4
Algoritmul FCM cu 4 clustere a fost rulat peste toate cele 5 tipuri de input.
42
Pentru FCM cu 3 clustere, matricea gradelor de apartenență – U este format ă din :
– 4 coloane deoarece avem dorim să avem la outpu 4 clustere ;
– N număr de linii, unde N este numărul toatal de înregistrări dintr -un fișier CSV care
variază de la un fișier CSV la altul .
Mai jos sunt pr ezentate valorile obținute pentru cele 3 clustere și valorile matricii U:
3.3.4 Salvarea rezultatelor
Ultimul pas important din implementarea agoritmului constă în modul de organizare și
afișare al rezultatelor cu posibiliatea de salvare a rezultatelor.
Pentru a putea fi ușor de înțeles și de vizualizat rezultatele, am folosit 2 abordări :
– rezultatele sunt a fișate în consolă ;
– există posibilitatea ca rezultatele să fie salvate în format text.
43
Pentru a salva rezultate în fișier, am folosit librăria sys pusă la dispoziție de limbajul de
programare Python . Mai jos este prezentat setul de instrucțiuni prin care se face salvarea
rezultatelor in fișierul de tip text cu numele „Rezultate” :
#Salvare si afisare in fisier (comentariu)
import sys
orig_stdout = sys.s tdout
f = open('Rezultate.txt', 'w')
sys.stdout = f
Pentru început, după ce fișierul este pregătit pentru scriere pe prima linie din fișier există
un comentariu pentru a putea identifica pentru care din cele 5 tipuri de cazuri propuse de mine a
fost rulat algoritmul.
Pe următoarele linii sunt afișate datele din coloana „value” pentru care s -a identificat
anomalie, și în dreptul fiecăreii linii apare și valoarea 1 care reprezintă anomalia din fișierul
CSV. Pentru cazurile unde s -a lucrat cu valori normaliza te, și acestea au fost salvate în fișier.
Spre exemplu, pentru seturile de date – Caz 3 si Caz 5 în fișierul de ieșire sunt 3 coloane :
– prima coloana conține datele din coloana „value” pentru care s -a identificat
anomalie ;
– a doua coloană conține valorile n ormalizate pentru fiecare valoare din coloana
„value”, unde a apărut o anomalie ;
– a treia coloană conține valoarea 1, adică anomalia din fișierul CSV .
Prin instrucțiunile de mai jos are loc afișarea sub forma a 3 coloane și salvarea
informațiilor prezentate anterior :
anomaly = 1
for i in range(N):
if y[i] == anomaly:
print(x[i], end=' ')
print(x_normalized[i], end=' ')
print(y[i], end=' ')
print(' ')
Structura de date prezentată anterior reprezintă un tamplate care s -a folosit pentru fiecare
rulare a algoritmului.
Informațiile salvate în fișier care diferă de la o rulare la alta, în funcție de numărul de
clustere și de tipul setu lui de date de inrare sunt:
– valorile matricii gradul ui de apartenență – matricea U;
– valorile matricii C care arată în jurul căror valori s -au identificat clusterele .
44
Pentru salvarea și afișarea celor 2 matricii s -au utilizat instrucțiunil e:
– pentru matricea U
for i in range(N):
for j in range(C):
print(u[i][j], end=' ')
print()
– pentru matricea C
print(' ')
print ("Matricea C")
print(c)
După ce s -au scris și s -au salvat în fișier rezultatele, indiferent de limbajul de programare,
fișierul trebuie închis. În cazul curent , închiderea fișierului se face astfel :
sys.stdout = orig_stdout
f.close()
Mai jos este prezentată structura fișierului „Rezultate”. În acest exeplu, algoritmul FCM a
fost rulat având ca date de intrare valorile pentru Cazul 5 :
45
3.4 Evaluarea algoritmului de învățare
3.4.1 Matricea confusion matrix
Un alt punct esențial și im portant pentru un algoritm de învățare este metoda de verificare.
Metoda de verificare aleasă trebuie să fie potrivită pentru algoritmul în cauză astfel încât să
poată confirma dacă generalizările care au fost făcute sau reguliile/formulele deduse sunt
apropiate de soluția ideală și finală decât de starea inițială a sistemului.
În ceea ce privește procesul de învățarea automată, e xistă numeroase metode de validare a
rezultatelor , în funcție de scop, de datele de antrenament, de datele de testare și de st rategia de
învățare folosită.
46
În domeniul problemelor de clasificare, o metoda de verificare foarte bună este ceea ce în
literatura de specialitate se numește confusion matrix (matricea de confuzie, cunoscută și sub
denumirea de matricea de erori sau mat rice de contingență ). Acestă matrice permite stabilir ea
performanțelor unui algoritm deoarece majoritatea măsurilor de performanță sunt calculate din
matricea de confuzie.
Matricea de contingență e ste un tip special de tabel, cu două dimensiuni („real" și
„prezis” ), și seturi identice de "clase" în ambele dimensiuni (fiecare combinație de dimensiune și
clasă este o variabilă în tabelul de contingență ). Fiecare rând al matricei reprezintă instanțele
dintr -o clasă prezisă, în timp ce fiecare coloană reprezintă instanțele într -o clasă reală (sau
invers). Numele provine din faptul că este ușor de văzut dacă sistemul confundă două clase.
Acest lucru permite o analiză mai detaliată decât o simplă proporție de clasificări corecte
(exactitate).
Matricea de contingență arată modurile în care clasificatorul face prezicerile , dacă este
sau nu confuz în momentul predicției. În acest mod ne putem forma o perspectivă nu numai
asupra erorilor realizate de clasificator, ci mai ales asupra tipurilor de erori care s -au făcut.
Pentru calcularea i ndicatori lor de performanță pentru evaluarea sistemelor de
predictive/recunoaștere/ clasificare de paternuri se construiește matrice a de contingență
(confusion matrix) care conține informații despre clasificarea actuală și cea predicționată
realizată de un sistem de clasificare [SoviPusc2013]:
• numărul rezultatelor pozitive corecte – TP (True Positive) : num ărul de predic ții
corecte pentru o anumită dată din coloana „value ” ce este analizată la un moment dat ;
• numărul rezultatelor fals pozitive – FP (False Positive) : numărul de predicții
incorecte pentru o anumită dată din coloana „value ” ce este analizată la un moment
dat;
• numărul rezultatelor negative corecte – TN (True Negative) : numărul de predicții
corecte pentru celelalte date din coloana „value ”, în afară de valoarea curentă care se
analizează la un moment dat;
• numărul rezultatelor fals negative – FN (False Negative) : numărul de predicții
incorecte pentru apartenența la alte clustere excluzând valoarea cur entă analizată la
un moment dat.
47
Rezultate reale
Clasa pozitivă Clasa (ele)
negtivă(ele)
Rezultate
calculate Clasa
pozitivă True positiv (TP) False positiv
(FP)
Clasa(ele)
negativă(ele) False negative (FN) True negative
(TN)
Tabel 3.1 Rezultate calculate versus rezultate reale
Tabelul de mai jos prezintă structura matricii de contingență pentru algoritmul Fuzzy C –
Mrans pentru 3 Clsutere :
TP FP FN TN
Cluster 1
Cluster 2
Cluster 3
Tabel 3.2 Strcutura matricii de contingență pentru algoritmul Fuzzy C -Mrans pentru 3 Clustere
În continuare, este prezentat și explicat modul de implementare al matricii de contingeță
pentru algoritmul Fuzzy C -Means , si anume :
– în cazul prezentat, s -a construit matricea de contingență p entru 3 clustere (acest
matrice a fost folosită pentru toate cazurile specificate anterior );
– în primul pas, pentru fiecare informație din coloana value, s -a determinat valoarea
maximă pentru gradul de apartenență (valoarea din matricea U) și în funcție de
maxim se alege linia din matrice, adică se stabilește cărui cluster îi aparține valoarea
xi analizată la un moment dat; (vezi *)
Exemplu : Să presupunem că pentru o informție din coloana value, am obținut
următoarele procente pentru gradul de apartenență u[x i] ={0,66; 0,27; 0,25} . În acest
caz, maximul este 0,66 – deci, pentru valoarea x i algoritmul a stabilit că această
valoare aparține primu lui cluster
– după stabilirea clusterului, rămane să identificăm pe ce coloană din matrice trebuie
să facem incrementarea. Pentru a face această operație, verificăm dacă valoarea de
pe coloana „is_anolmaly ” corespunzătoare pentru valoarea x i este 0 sau 1, adică dacă
pentru x i s-a sesizat sau nu o anomalie. Dacă „is_anomaly ”=1, atunci facem
incrementare în prima jumătate a matricii, adică pe coloana 1 sau 2 – lucru ce va fi
48
stabilit ulterior; în caz contrar incrementarea se face în a doua jumă tate a matricii, fie
pe coloana a 3 -a sau a 4 -a; (vezi * * )
Exemplu : Să presupunem că pentru valoarea x i alea cărei procente pentru gradul
de apartenență au fost prezentate anterior, pentru „is_anomaly ” avem valoarea 0.
În acest caz, conform reguli lor stabilite anterior, mai întâi facem incrementare pentru
clusterul 1, deoarece conform procentajului în matriciea de apartenență, cea mai
mare valoare s -a obținut pentru clusterul 1. Deoarece pe coloana is_anomaly avem
valoarea 0, pentru clusterul 1, vom face incrementarea în a doua jumătate a matricii
de contingență, întru -cât pentru cazul curent se analizeză o valoare pentru care nu s -a
raportat o anomalie (este o non -anomalie). Pentru prima valoare din matricea U, se
va incrementa elementul cm [0][2] din matricea de contingență (cm este confusion
matrix) , adică se incrementează FN. Pentru cea de -a doua valoare din matricea U,
pentru clustetul 2, se va incrementa elementul cm[1][3] – crește valoarea lui TN.
Pentru ultima valoarea din matricea U, pentru care s -a înregistrat cea mai mică
valoare, pentru cel de -al 3-lea cluster, se va incrementa elementul cm [3][3] – crește
valoarea lui TN. (vezi ***)
import numpy as np
classes =2
columns =4
cm=np.zeros((2,4))
maxim=0
for i in range(N):
maxim=max(u[i][0],u[i][1],u[i][2]) (*)
if maxim == u[i][0]:
l=1
if maxim == u[i][1]:
l=2
if maxim == u[i][2]:
l=3
if y[i] == 0: (**)
c=2
if y[i] == 1:
c=0
for k in range( classes): (***)
if (k+1) == l :
cm[k][c+0] =cm[k][c+0] +1
else:
cm[k][c+1 ]=cm[k][c+1] +1
49
Afișarea matricii de contingență se face prin instrucțiunile :
print ("Confusion matrix – CM")
for i in range( classes):
for j in range( columns):
print(cm[i][j], end=' ')
print()
3.4.2 Indicatorii de performan ță pentru evaluarea algoritmului Fuzzy
C-Menas
Pe baza indicatorilor definiți mai sus, vom prezenta în continuare câteva măsuri de
evaluare externă care s -au folosit în aplicație pentru aprecierea calității predicției pentru anomalii
și non -anomalii [Stoe]:
• Acuratețea se calculează ca fi ind raportul dintre numărul anomaliilor
predicționate corect și numărul total al anomaliilor din setul de date.
• Precizia (se mai găsește și sub denumirea positive predictive value ) reprezintă
proporția de date care aparțin clusterului i predic ționate corect din toate cele
detectate de algoritm în clusterul i. Precizia ia va lori în domeniul [0,1], cu 1 cel
mai bun rezultat.
Precizia =TP
TP+FP (20)
Precizia nu reprezintă o metrică exactă pentru a stabili performanța reală a unui
clasificator, deoarece va conduce la rezultate înșelătoare dacă s etul de date este dezechilibrat.
• Reprezintă proporția anomaliilor din clusterul i predicționate corect din toate cele
din cluserel e i. Recall -ul ia va lori în domeniul [0,1], cu 1 cel mai bun rezultat. Dacă
se obținue pentru recall o valoare mare , acest luctu indică faptul căci clusterul este
predicționat corect .
Recall =TP
TP+FN (21)
50
Partea practică din aplicație este prezentată mai jos :
– S-a calculat fiecare metrică pentru fiecare cluster pentru informația din coloana value
analizată la un moment dat ;
– Pentru fiecare metrică, s -a creat un vector cu 1 singură coloana și cu un număr de
linii egal cu numărul de clustere uti lizate la un moment dat. V ectorii corespunzători
pentru fiecare metrică au 3 linii deoarece se lucrează cu 3 clusteri (vezi (*)) . Înainte
de calculare a metricilor, acești vectori su nt inițializați cu valoarea 0;
– Se parcurg toate clusterele, atâtea câte s -au stabilit la începutul rulării algoritmului și
pentru fiecare cluster se calculează metricile pe baza formulelor prezentate la
îceputul capitolului 3 .4.2 Indiacatorii de performanță pentru evaluarea algoritmului
Fuzzy C -Means și se folosec valorile din matricea de contingență prezentate în
capitolul 3.4.1 Matricea confusion matrix .
accuracy = np.zeros((3 ,1))
recall = np.zeros((3 ,1)) (*)
precision = np.zeros((3 ,1))
for i in range( classes):
accuracy[i] = (cm[i][0] + cm[i][3]) / (cm[i][0] + cm[i][1] + cm[i][2] + cm[i][3])
recall[i] = (cm[i][0]) / (cm[i][0] + cm[i][2])
precision[i] = (cm[i][0]) / (cm[i][0] + cm[i ][1])
3.5 Rezultate
În urma rulării algoritmului cu cele 10 seturi de date, pentru 2 clustere, 3 clustere și 4
clustere, am observat ca cele mai bune rezultate s -au obținut pentru Cazul 1, Cazul 2 și Cazul 5.
Pentru cazurile 3 și 4 s -au obținut valori foarte îndepărtate de voloriile raportate în
seturile de date ca și anomalii deoarece s -a lucrat atât cu datele normalizate în intervalul [0,1] cât
și cu date ne -normalizate.
3.5.1 Rezultate Acuratețe
Rezultatele obținute pentru acura tețe pentru 2 clustere, 3 clustere și 4 clustere organizate/
centralizate după cazurile relevante specificate anterior sunt prezentate mai jos :
51
Acuratețea pentru 2 Clustere
Set de date Cluster Caz 1 Caz 2 Caz 5
Set1 C1 0.5205 % 0.12647672 % 0.87352328 %
C2 0.4795 % 0.87352328 % 0.12647672 %
Set2 C1 0.000703 % 0% 1%
C2 0.999297 % 1% 0%
Set3 C1 0.663655 % 0.35024322 % 0.64975678 %
C2 0.336345 % 0.64975678 % 0.35024322 %
Set4 C1 0.474635 % 0.41556637 % 0.58443363 %
C2 0.525365 % 0.58443363 % 0.41556637 %
Set5 C1 0.185524 % 0.16092762 % 0.16092762 %
C2 0.814476 % 0.83907238 % 0.83907238 %
Set6 C1 0.004225 % 0.00070423 % 0.00070423 %
C2 0.995775 % 0.99929577 % 0.99929577 %
Set7 C1 0.145935 % 0.13759555 % 0.86240445 %
Set8 C1 0.607366 % 0.36066713 % 0.36066713 %
C2 0.392634 % 0.63933287 % 0.63933287 %
Set9 C1 0.486449 % 0.51494093 % 0.48505907 %
C2 0.513551 % 0.48505907 % 0.51494093 %
Set10 C1 0.250869 % 0.5990271 % 0.5990271 %
C2 0.749131 % 0.4009729 % 0.4009729 %
Tabel 3.5.1 Rezultatele acurateței obținute pentru 2 clustere folosind FCM
Pentru 2 clustere, acuratețea cea mai bună, cu valoarea maximă s -a obținut pentru setul
de date numărul 2, unde s -a lucrat numai cu valori normalizate – cazul 5. De asemenea, un
rezultat foarte bun, apropiat de valoarea max imă, s -a obținut pentru setul de date numărul 6,
pentru cel de -al 2-lea caz, unde s -a folosit media valorilor normalizate și valorile originale din
setul de date. (acuratețe = 0,999 %). Dacă pentru setul de date cu numărul 2, pentru cazul 5 s -a
obținut o va loare foarte bună, tot pentru setul 2, s -a obținut cea mai scăzută valoare a acurateței
pentru cazul 1 unde s -au folosit numai valori originale, deci rezultă că formatul datelor de intrar e
au impact asupra rezultatelor.(0,000703%)
52
Acuratețea pentru 3 Clustere
Set de date Cluster Caz 1 Caz 2 Caz 5
Set1 C1 0.6122307 % 0.9312022 % 0.9958304 %
C2 0.6066713 % 0.5274496 % 0.4523975 %
C3 0.7699792 % 0.5302293 % 0.5406532 %
Set2 C1 0.5713282 % 1% 1%
C2 0.4251581 % 0.4645116 % 0.4645116 %
C3 1% 0.5319747 % 0.5319747 %
Set3 C1 0.6900625 % 0.8026407 % 0.8026407 %
C2 0.5218902 % 0.5747047 % 0.5747047 %
C3 0.7866574 % 0.6212648 % 0.6212648 %
Set4 C1 0.714385 % 0.6462821 % 0.6462821 %
C2 0.666435 % 0.7560806 % 0.5920778 %
C3 0.6136206 % 0.5920778 % 0.7560806 %
Set5 C1 0.8453971 % 0.8650738 % 0.8650738 %
C2 0.8882642 % 0.9163739 % 0.9163739 %
C3 0.2234715 % 0.1756852 % 0.1756852 %
Set6 C1 0.3274648 % 0.5288732 % 0.9992958 %
C2 0.6661972 % 0.9992958 % 0.5288732 %
C3 0.9992958 % 0.4647887 % 0.4647887 %
Set7 C1 0.8637943 % 0.5281445 % 0.4676859 %
C2 0.4447533 % 0.4676859 % 0.990966 %
C3 0.6782488 % 0.990966 % 0.5281445 %
Set8 C1 0.7776234 % 0.6421126 % 0.6490619 %
C2 0.5781793 % 0.7804031 % 0.790827 %
C3 0.6421126 % 0.5753996 % 0.5580264 %
Set9 C1 0.7776234 % 0.7025712 % 0.7025712 %
C2 0.5781793 % 0.6851981 % 0.6851981 %
C3 0.6421126 % 0.6038916 % 0.6038916 %
Set10 C1 0.8234885 % 0.8679639 % 0.8693537 %
C2 0.5872133 % 0.6108409 % 0.5149409 %
C3 0.5879083 % 0.5198054 % 0.6143155 %
Tabel 3.5.2 Rezultatele acurateței obținute pentru 3 clustere folosind FCM
Pentru 3 clustere, acuratețea cea mai bună, cu valoarea maximă s -a obținut pentru setul
de date numărul 2. De această dată, pentru toate cele 3 cazuri derviate din setul de date numărul
2 s-a obținut val oarea maximă pentru acuratețe. De asemenea, un rezultat foarte bun, apropiat
de valoarea maximă, s -a obținut pentru setul de date numărul 6, pentru cazul 1 și cazul 2
(acuratețe = 0,999 %). Cel mai mic procent pentru acuratețe, s -a obținut pentru setul d e date cu
53
numărul 5, pentru cazul 5 deși acest caz este unul pentru care s -a obținut și valoarea maximă.
(0,175%)
Acuratețea pentru 4 Clustere
Set de date Cluster Caz 1 Caz 2 Caz 5
Set1 C1 0.829743 % 0.862404 % 0.863794 %
C2 0.610146 % 0.948575 % 0.948575 %
C3 0.794302 % 0.587908 % 0.603892 %
C4 0.743572 % 0.578874 % 0.561501 %
Set2 C1 1% 1% 0.632467 %
C2 0.664793 % 0.689389 % 0.61279 %
C3 0.539002 % 0.736472 % 0.748419 %
C4 0.789178 % 0.567112 % 0.999297 %
Set3 C1 0.665045 % 0.776234 % 0.649062 %
C2 0.735233 % 0.866574 % 0.900625 %
C3 0.775539 % 0.659486 % 0.697707 %
C4 0.821404 % 0.694927 % 0.749826 %
Set4 C1 0.825573 % 0.815149 % 0.845031 %
C2 0.693537 % 0.674774 % 0.755386 %
C3 0.692147 % 0.751216 % 0.796386 %
C4 0.777623 % 0.747741 % 0.592078 %
Set5 C1 0.8974 % 0.904427 % 0.591708 %
C2 0.228391 % 0.884048 % 0.884048 %
C3 0.858749 % 0.556571 % 0.904427 %
C4 0.929726 % 0.56922 % 0.534083 %
Set6 C1 0.678873 % 0.748592 % 0.976056 %
C2 0.79507 % 0.634507 % 0.478169 %
C3 0.512676 % 0.991549 % 0.994366 %
C4 0.999296 % 0.611268 % 0.537324 %
Set7 C1 0.827658 % 0.702571 % 0.726199 %
C2 0.730368 % 0.577484 % 0.939541 %
C3 0.866574 % 0.753996 % 0.704656 %
C4 0.548992 % 0.939541 % 0.603197 %
Set8 C1 0.838777 % 0.702571 % 0.649062 %
C2 0.766505 % 0.577484 % 0.721334 %
C3 0.602502 % 0.753996 % 0.847116 %
C4 0.788047 % 0.939541 % 0.778318 %
Set9 C1 0.724114 % 0.776928 % 0.740792 %
C2 0.789437 % 0.735928 % 0.76581 %
C3 0.755386 % 0.737318 % 0.733843 %
C4 0.714385 % 0.733148 % 0.742877 %
Set10 C1 0.728284 % 0.660181 % 0.887422 %
C2 0.830438 % 0.734538 % 0.726199 %
C3 0.737318 % 0.889507 % 0.647672 %
C4 0.701181 % 0.712995 % 0.735928 %
Tabel 3.5.3 Rezultatele acurateței obținute pentru 4 clustere folosind FCM
54
Pentru 4 clustere, acuratețea cea mai bună, cu valoarea maximă s -a obținut tot pentru
setul de date numărul 2 ; de data aceasta numai pentru cazul 1 și cazul 5 . Un procentaj de 0,999%
s-a obșinut pentru setul de date cu numărul 6, pentru cazul 1 deși s -au folosit numai valori asupra
cărora nu s -au aplicat pre -procesări inainte de a fi transmise la intrarea algoritmului. Cel mai mic
procent pentru acuratețe, s -a obținut pentru setul de date cu numărul 5, pentru cazul 1 (0,228 %).
3.5.2 Rezultate Precizie
Rezultatele obținute pentru precizie pentru 2 clustere, 3 clustere și 4 clustere organizate
în centralizate/ grupate după cazurile relevante specificate anterior sunt prezentate mai jos :
Precizia pentru 2 Clustere
Set de date Cluster Caz 1 Caz 2 Caz 5
Set1 C1 0% 0.0625 % 0.9375 %
C2 1% 0.9375 % 0.0625 %
Set2 C1 0% 0% 1%
C2 1% 1% 0%
Set3 C1 1% 0% 1%
C2 0% 1% 0%
Set4 C1 1% 0% 1%
C2 0% 0.013201 % 0%
Set5 C1 0.754098 % 0.786885 % 0.786885 %
C2 0.245902 % 0.213115 % 0.213115 %
Set6 C1 0% 0% 0%
C2 1% 1% 1%
Set7 C1 0% 0.052632 % 0.947368 %
C2 1% 0.947368 % 0.052632 %
Set8 C1 1% 0% 0%
C2 0% 1% 1%
Set9 C1 1% 1% 0%
C2 0% 0% 1%
Set10 C1 0% 1% 1%
C2 1% 0% 0%
Tabel 3.5.4 Rezultatele preciziei obținute pentru 2 clustere folosind FCM
Pentru 2 clustere, precizia cea mai bună, s-a obținut pentru 9 seturi de date din 10, cu
valoarea maximă. Indiferent dacă d atele au fost pre -procesate sau nu, s-a obținut valoare maximă
55
și totodată există situații în care pentru același caz, pentru un cluster s -a obținut valoarea maxi mă
și pentru celălalt s-a obținut valoare minimă.
Setul de date cu numărul 5, este setul pentru care valorile preciziei sunt foarte apropiate
pentru toate cele 3 cazuri .
Precizia pentru 3 Clustere
Set de date Cluster Caz 1 Caz 2 Caz 5
Set1 C1 0% 0.875 % 0.625 %
C2 1% 0% 0%
C3 0% 0.125 % 0.375 %
Set2 C1 0% 1% 1%
C2 0% 0% 0%
C3 1% 0% 0%
Set3 C1 0% 1% 1%
C2 0% 0% 0%
C3 1% 0% 0%
Set4 C1 0% 0% 0%
C2 1% 1% 0%
C3 0% 0% 1%
Set5 C1 0.163934 % 0.098361 % 0.098361 %
C2 0.311475 % 0.147541 % 0.147541 %
C3 0.52459 % 0.754098 % 0.754098 %
Set6 C1 0% 0% 1%
C2 0% 1% 0%
C3 1% 0% 0%
Set7 C1 1% 0% 0.684211 %
C2 0% 0.684211 % 0.315789 %
C3 0% 0.315789 % 0%
Set8 C1 1% 0% 0%
C2 0% 1% 1%
C3 0% 0% 0%
Set9 C1 1% 1% 1%
C2 0% 0% 0%
C3 0% 0% 0%
Set10 C1 1% 1% 1%
C2 0% 0% 0%
C3 0% 0% 0%
Tabel 3.5.5 Rezultatele preciziei obținute pentru 3 clustere folosind FCM
Pentru 3 clustere, precizia cea mai bună, s -a obținut de asemenea tot pentru 9 seturi de
date din 10, cu valoarea maximă. Indiferent dacă datele au fost pre -procesate sau nu, s -a obținut
valoare maximă și totodată există situații în care pentru același caz, pentru un cluster s -a obținut
valoarea maximă și p entru celelalte două s-a obținut valoare minimă. Pentru setul de date cu
56
numărul 5, valorile preciziei sunt cuprinse între valoarea minimă și valoarea maximă, dar pentru
acest set de date, valoarea de minim sau de maxim nu s -a atins niciodată.
Precizia pen tru 4 Clustere
Set de date Cluster Caz 1 Caz 2 Caz 5
Set1 C1 0% 0.0625 % 0.0625 %
C2 1% 0.875 % 0.875 %
C3 0% 0% 0.0625 %
C4 0% 0.0625 % 0%
Set2 C1 1% 1% 0%
C2 0% 0% 0%
C3 0% 0% 0%
C4 0% 0% 1%
Set3 C1 0% 0% 0%
C2 0% 0.010309 % 1%
C3 0% 0% 0%
C4 1% 0% 0%
Set4 C1 1% 1% 0%
C2 0% 0% 0%
C3 0% 0% 1%
C4 0% 0% 0%
Set5 C1 0.196721 % 0.229508 % 0.278689 %
C2 0.377049 % 0.016393 % 0.016393 %
C3 0.098361 % 0.278689 % 0.229508 %
C4 0.327869 % 0.47541 % 0.47541 %
Set6 C1 0% 0% 0%
C2 0% 0% 0%
C3 0% 1% 1%
C4 1% 0% 0%
Set7 C1 0% 0% 1%
C2 0% 0% 0%
C3 1% 0.002967 % 0.052632 %
C4 0% 0.173077 % 0%
Set8 C1 1% 0% 0%
C2 0% 0% 0%
C3 0% 0.052632 % 0.013453 %
C4 0% 0.947368 % 0%
Set9 C1 0% 1% 0%
C2 0% 0% 1%
C3 0% 0% 0%
C4 1% 0% 0%
Set10 C1 0% 0% 0.012195 %
C2 1% 0% 0%
C3 0% 1% 0%
C4 0% 0% 0%
Tabel 3.5. 6 Rezultatele preciziei obținute pentru 4 clustere folosind FCM
57
Pentru 4 clustere, pentru algoritmul FCM s -a obținut cea mai bună precizie, pentru
aproape toate seturile de date, indiferent dacă s -au utilizat valori normalizate sau valori
nemodificate, cu excepția setului de date numărul 5, unde valorile sunt cuprinse între 0,016% –
0,475%. Pentru setul de date numărul 5, procentajul pentru precizie este sub 50%.
De la un caz la altul, procentajul se schimbă deoarece modul de reprezentare al datelor
are influență asupra rezultatelor finale.
Precizia reprezintă proporția anomaliilor clasificate corect într -un cluster din toate
anomaliile clasificate în acel clsuter (proporția anomaliilor clasificate ăn acel cluster este suma
dintre True Positive și False Positive ). Valoarea preciziei pentru un anumit clsuter – să denumim
clsuerul X,se spune că o predicție pozitivă a clasificatorului respectiv va fi adev arată doar în X% .
O valoare mare a preciziei pentru un anumit clsuter sau caz se poate obține și în cazul în
care se clasifică puține anomalii în acel cluster , dar un astfel de clasificator pentru un anumit
cluster v a fi penalizat de metrica următoare, recall. Deci, faptul că din punct de vedere al
preciziei pentru cazul 5 s-au obținut rezultate așa de bune nu înseamnă neapărat că acest
clasific ator predicț ionează bine tot timpul anomaliile.
3.5.3 Rezultate Recall
Rezultatele obținute pentru acuratețe pentru 2 clustere, 3 clustere și 4 clustere organizate
în centralizate/ grupate după cazurile relevante specificate anterior sunt prezentate mai jos :
58
Recall -ul pentru 2 Clustere
Set de date Cluster Caz 1 Caz 2 Caz 5
Set1 C1 0% 0.000805 % 0.076531 %
C2 0.020915 % 0.076531 % 0.000805 %
Set2 C1 0% 0% 1%
C2 0.833333 % 1% 0%
Set3 C1 0.004115 % 0% 0.003953 %
C2 0% 0.003953 % 0%
Set4 C1 0.010471 % 0% 0.013201 %
C2 0% 1% 0%
Set5 C1 0.038655 % 0.039056 % 0.039056 %
C2 0.064378 % 0.06701 % 0.06701 %
Set6 C1 0% 0% 0%
C2 0.625 % 0.909091 % 0.909091 %
Set7 C1 0% 0.000817 % 0.083721 %
C2 0.082969 % 0.083721 % 0.000817 %
Set8 C1 0.005282 % 0% 0%
C2 0% 0.005747 % 0.005747 %
Set9 C1 0.015979 % 0.016901 % 0%
C2 0% 0% 0.016901 %
Set10 C1 0% 0.003454 % 0.003454 %
C2 0.00551 % 0% 0%
Tabel 3.5.7 Rezultatele recall -ului pentru 2 clustere folosind FCM
În ceea ce privește rezultatul pentru recall, pentru 2 clustere, recall -ul cel mai bun, s -a
obținut pentru setul de date cu numărul 2, pentru cazul 2 si cazul 5. De asemenea, valoarea cea
mai mare pentru recall s -a atins și pentru setul de date cu numărul 4 – pentru cazul 2.
Valoarea minimă, adică 0, s -a obținut pentru seturile de date, în acele cazuri unde
valoarea preciziei a fost maximă, adică 1.
59
Recall -ul pentru 2 Clustere
Set de date Cluster Caz 1 Caz 2 Caz 5
Set1 C1 0% 0.000805 % 0.076531 %
C2 0.020915 % 0.076531 % 0.000805 %
Set2 C1 0% 0% 1%
C2 0.833333 % 1% 0%
Set3 C1 0.004115 % 0% 0.003953 %
C2 0% 0.003953 % 0%
Set4 C1 0.010471 % 0% 0.013201 %
C2 0% 1% 0%
Set5 C1 0.038655 % 0.039056 % 0.039056 %
C2 0.064378 % 0.06701 % 0.06701 %
Set6 C1 0% 0% 0%
C2 0.625 % 0.909091 % 0.909091 %
Set7 C1 0% 0.000817 % 0.083721 %
C2 0.082969 % 0.083721 % 0.000817 %
Set8 C1 0.005282 % 0% 0%
C2 0% 0.005747 % 0.005747 %
Set9 C1 0.015979 % 0.016901 % 0%
C2 0% 0% 0.016901 %
Set10 C1 0% 0.003454 % 0.003454 %
C2 0.00551 % 0% 0%
Tabel 3.5.8 Rezultatele recall -ului pentru 3 clustere folosind FCM
Valoarea maximă pentru recall, pentru 3 cluatere, se obține pentru 3 seturi de date și
anume :
– Setul de date cu numărul 1 – pentu cazul 5
– Setul de date cu numărul 2 – pentu toate cele 3 cazuri
– Setul de date cu numărul 7 – pentu cazurile 2 și 5
O valoare de peste 90%, a fost atinsă pentru setul de date cu numărul 6 – pentru toate
cazurile.
În ceea ce privește valoarea minimă, și pentru cazul când s -a lucrat cu 3 clustere, s -a
obținut valoarea minimă 0.
În propor ție de 90% rezultatele recall -ului sunt cuprinse între 0% – 10%.
60
Recall -ul pentru 4 Clustere
Set de date Cluster Caz 1 Caz 2 Caz 5
Set1 C1 0% 0.005435 % 0.005495 %
C2 0.02773 % 0.162791 % 0.162791 %
C3 0% 0% 0.001799 %
C4 0% 0.001689 % 0%
Set2 C1 1% 1% 0%
C2 0% 0% 0%
C3 0% 0% 0%
C4 0% 0% 0.833333 %
Set3 C1 0% 0% 0%
C2 0% 1% 0.013793 %
C3 0% 0% 0%
C4 0.007722 % 0% 0%
Set4 C1 0.030888 % 0.029197 % 0%
C2 0% 0% 0%
C3 0% 0% 0.026578 %
C4 0% 0% 0%
Set5 C1 0.110092 % 0.135922 % 0.030686 %
C2 0.021237 % 0.009434 % 0.009434 %
C3 0.039474 % 0.028145 % 0.135922 %
C4 0.253165 % 0.047541 % 0.043939 %
Set6 C1 0% 0% 0%
C2 0% 0% 0%
C3 0% 0.454545 % 0.555556 %
C4 0.909091 % 0% 0%
Set7 C1 0% 0% 0%
C2 0% 0% 0.173077 %
C3 0.090047 % 0.052632 % 0.002451 %
C4 0% 0.947368 % 0%
Set8 C1 0.012766 % 0% 0%
C2 0% 0% 0%
C3 0% 0.002967 % 1%
C4 0% 0.173077 % 0%
Set9 C1 0% 0.036036 % 0%
C2 0% 0% 0.034384 %
C3 0% 0% 0%
C4 0.028369 % 0% 0%
Set10 C1 0% 0% 1%
C2 0.00813 % 0% 0%
C3 0% 0.012422 % 0%
C4 0% 0% 0%
Tabel 3.5.9 Rezultatele recall -ului pentru 4 clustere folosind FCM
61
Valoarea maximă pentru recall, pentru 4 cluatere, se obține pentru 3 seturi de date și
anume:
– Setul de date cu numărul 2 – pentu cazul 1 și cazul 2
– Setul de date cu numărul 3 – pentu cazul 2
– Setul de date cu numărul 8 – pentu cazul 5
O valoare de peste 90%, a fost atinsă pentru setul de date cu numărul 6 – pentru cazul 1
iar pentru cazul 2 și 5 s -a obținut o valoare în jur de 50% .
În ceea ce privește valoarea minimă, și pentru cazul când s -a lucrat cu 4 clustere, s -a
obținut valoarea minimă 0.
Procentajul de 0% pentru recall este cel care predomină în proporție de 50% pentru cazul
celor 4 clustere.
Analizând cele 3 tabele din punct de vedere al recall -ului, putem spune că cele mai bune
Recall -ul, fiind un indicator care ține cont și de numărul de predicții incorecte pentru
apartenența la alte clustere excluzând valoaarea xi analizată la un moment dat, se poate
îmbunătății valoarea acestui indicator prin creșterea numărului de rezultate p ozitive reale. Este
posibil ca prin creșterea acestui număr recall -ul să rămână neschimbat dar precizia să fluctueze .
Valorile mari pentru precizie și recall arată că un clasificator returnează rezultate precise
(de mare precizie ) , precum și returnarea u nei majorități a tuturor rezultatelor pozitive .
În concluzie, putem afirma că u n sistem care a învățat corect , este cel pentru care se
obține o precizie mare și un recall mare . Astfel putem spune din punctul acesta de vedere că
sistemul nostru a predicționat corect anomaliile pentru setul de date cu numărul 2, pentru al 2 -lea
caz dar pentru clustere diferite.
3.6 Rezultate comparative între 2 clustere, 3 clustere și 4 clustere
În ceea ce privește metodele de reprezentare a datelor, o metodă de sinteti zare a informației
foarte des folosită este reprezentare a grafică a datelor. Informațiile prezentate vizual au impact
puternic p entru simț uri și chiar pentru intelect și în general „o imagine bună est e mai utilă ca o
mie de cifre ″. [Bios]
Scopul acestui capitol este de a prezenta o comparație între toate rezultatele obținute.
În prima parte a capitolului este prezentată o analiză comparativă din punct de vedere al
acurateței . În figura de mai jos, s -a făcut o comparație pentru rezultatele obținute având ca și
62
input valorile din cazul 1, cazul 2 și cazul 5 iar ca output, au fost returnate de către algoritmul
FCM 2 Clustere, 3 Clsutere și 4 Clustere pentru rulări diferite ale algoritmului:
Fig. 3.6.1 Rezultatele acurateței pentru 2 Cluste, 3 Clsutere și 4 clustere grupate după cele 3 cazuri
În figura Fig.3.6.1 , pe axa Ox, Caz 1, Caz 2 și Caz 5 reprezintă cele 3 tipuri de date de
intrare iar pe axa Oy sunt reprezentate procentajele obținute pentru acuratețe.
Pentru a construi acest grafic, p entru fiecare caz s -a calculat media pentru indicatorul
acuratețe pentru toatele cele 10 seturi de date care au fost folsoite în aplicație.
Seminificația culorilor :
– Culoarea albastră reprezintă rezultatele obținute pentru 2 clustere
– Culoarea roșie reprezintă rezultatele obținute pentru 3 clustere
– Culoarea verde reprezintă rezultatele obținute pentru 4 clustere
Din figura de mai sus se poate observa că valorile pentru acuratețe sunt în crește.
Algoritmul are o acuratețe scăzută pentru situația când a avut ca output 2 clustere. Se observă că
00.10.20.30.40.50.60.70.8
Caz 1 Caz 2 Caz 5Acura tețea pentru 2 Clustere, 3 Clustere și 4 Clustere
63
acuratețea cea mai bună s -a obținut atunci când algoritmul a avut ca output 4 clustere, indiferent
de datele de intrare ; s-au obținut rezultate bune pentru toate cele 3 tipuri de seturi de intrare.
În continuare este prezentată o analiză comparativă din punct de vedere al preciziei . În
figura de mai jos, s -a făcut o comparație pentru rezultatele obținute având ca și input valorile din
cazul 1, cazul 2 și cazul 5 iar ca output, au fost returnate de către algoritmul FCM 2 Clustere, 3
Clsutere și 4 Clustere pentru rulări diferite ale algoritmului:
Fig. 3.6.1 Rezultatele preciziei pentru 2 Cluste, 3 Clsutere și 4 clustere grupate după cele 3 cazuri
Din figura de mai sus se poate observa că valorile pentru acuratețe sunt în scădere.
Com parând rezultatele din punct de vedere al preciziei, cu un procentaj de aproximativ 50%, în
topul rezultatelor cele mai bune se situează rezultatele unde s -au folosit doar 2 clustere, pentru
toate cele 3 cazuri. Pentru 3 Clustere, valoarea preciziei s -a menținut constantă. Se observă că
acuratețea cea mai slabă s -a obținut atunci când algoritmul a avut ca output 4 clustere, indiferent
de datele de intrare ; cel mai slab rezultat s -a obținut pentru cazul 5.
În ultima parte a acestui capitol, sunt prezentate valorile efective obținute pentru cel de -al
3-lea indicator al performanței , recall -ul:
00.050.10.150.20.250.30.350.40.450.5
Caz 1 Caz 2 Caz 5Precizia pentru 2 Clustere, 3 Clustere și 4 Clsurere
64
Fig. 3.6.1 Rezultatele recall -ului pentru 2 Cluste, 3 Clsutere și 4 clustere grupate după cele 3 cazur i
Comparând valorile obținute pentru recall, pentru cazul 1, valaoarea cea mai bună s -a
obținut pentru 3 Clsutere, urmat de situația în care s -au utilizat 2 Clustere și apoi 4 Clustere.
În comparație cu setul de date dat de cazul 1 unde s -au folosit numai valori nemodificate,
pentru cazul 2, unde media s -a calculat pe baza valorilor normalizate, valoarea maximă a recall –
ului este obținută pentru 2 Clustere ; pentru acest caz rezultatele sunt în descreștere.
Pentru ultimul caz, rezultatele pentru precizie su nt cuprinse între rezultatele ob ținute
pentru cazul 1 și rezultatele obținute pentru cazul 2 , atât pentru 2 Clsutere, cât și pentru 4
Clsutere și 5 Clsutere.
00.020.040.060.080.10.120.140.160.18
Caz 1 Caz 2 Caz 5Recall -ul pentru 2 Clustere, 3 Clustere și 4 Clustere
65
4 CONCLUZII
În urma studiului făcut am dobândit noi informații care îmi vor fi de ajutor în viitor și
care m -au ajutat în construirea aplicației cât și în elaborarea părții teoretice din lucrarea de
licență. Astfel, în urma finalizării acestei lucrări de disertație po t să afirm că mi -am îmbogățit
cunoștințele în ceea ce privește limbajul de programare Python dar în același timp mi -am lărgit și
orizontul cunoașterii în privința analizei și detecției anomaliilor din seturile de date.
După dobândirea informațiilor de ca re aveam nevoie am reușit să dezvolt aplicația după
modul la care m -am gândit de la început. Astfel, aplicația care a avut ca scop indetificarea
anomaliilor indiferent de modul de reprezentare a datelor, mai mult sau mai puțin intuitiv.
Rezultatul final a l lucrării s -a transpus într -o aplicație care îndeplinește obiectivele
formulate inițial:
– în primul rând, a avut loc o analiză a seturilor de date folosind ca și metodă de
analiză histrograma . Ca și metodă de analiză pentru analizarea seturilor de date la
prima vedere, am ales să folosesc histrograma întru -cât pe baza unei histrograme se
pot face predicții în ceea ce privește modul de evoluție pentru procesul observat ;
– utilizarea unor serii de metode preluate din analiza statistică a datelor care să
modific e reprezentarea datelor astfel încât să putem evidenția mai ușor anomaliile ->
pe baza acestor metode au derivat cele 5 tipuri de cazuri din seturile originale de date
puse la dispozi ție de către Yahoo ;
– rularea algoritmului FCM având ca date de input setur ile de date amintite mai sus iar
ca rezultate de ieșire valorile pentru 2 Clustere, 3 Clsutere și 4 Claustere ;
– evaluarea performan țelor algoritmului FCM din punct de vedere al acurateței,
preciziei și recall -ului
Pe parcursul creării și dezvoltării acestei teme am întâmpinat probleme care nu au fost
studiate în cadrul facultății și care au trebuit rezolvate prin studiu propriu. Spre exemplu,
construirea matricii de contingență (confusion matrix) a reprezentat o provocare. Mai întai am
cercetat ce presupune această matrice după care a m construi matricea astfel încât să -mi fie ușor
să interpretez datele și apoi să pot calcula în mod eficient cei 3 indicatori ai performanței.
Pe baza valorilor obținute pentru cei 3 indicatori ai performanței, am putut concluziona
că este important și totodată, căci contează formatul datelor de intrare pentru că are influență
66
asupra datelor de ieșire. O altă concluzie, este accea că și numărul de clsutere este important și
influențează rezultatele, fie ele în rezultate mai bune sau rezultate mai puțin bune.
O dezvoltare a aplicației curente este aceea de a crea o interfață interactivă cu utilizatorul
și totodată informativă a aplicației, unde să existe posibilitatea ca utilizatorul să -și definescă
valorile parametrilor pentru algoritm în mod dinamic și să știe în timp real la ce pas s -a ajuns
execuția algoritmului.
O altă dezvoltare, ar putea fii construirea graficelor pentru acuratețe, precizie, recall și nu
în ultimul rând creearea unor diagrame comparative cu ajutorul mediului de dezvoltare Python.
Mi-aș dori ca după prezentarea acestei aplicații să acord un interes mai mare în cercetarea
și analiza algoritmilor de clustering pentru cât mai multe situații reale și des întâlnite precum
detecția fraudei , identificarea problemelor medicale, siguranța publică, detecția intruziunilor,
procesarea imaginilor.
67
5 BIBLIOGRAFIE
[Anom] http://cucis.ece.northwestern.edu/projects/DMS/publications/AnomalyDetection.pdf
[Bios] http://www.umfcv.ro/files/b/i/Biostatistica%20MG%20 -%20Cursul%20IV.pdf
[Clus] http:// web.ulbsibiu.ro/catalina.neghina/Resurse/PI/pdf_PI/L11.pdf
[ClusAnal] Clustering analysis https://en.wikipedia.org/wiki/Cluster_analysis
[Codr2012] Codrean Florina, Modele de învățare nesupervizată, Lucrare de Diplomă, 2012
https://www.google.ro/search?q=Modele+de+%C3%AEnv%C4%83%C8%9Bare+
nesupervizat%C4%83&oq=Modele+de+%C3%AEnv%C4%83%C8%9Bare+nesup
ervizat%C4%83&aqs=chrome..69i57.576j0j7&sourceid=chrom e&ie=UTF -8
[Doro1985] Dorothy Denning, Peter G. Neumann, Requirements and model for IDES – A
REAL – TIME INTRUSION DETECTION EXPERT SYSTEM
[Fife1989] Fifer, R. M. (1989). Cost benchmarking functions in the value chain. Strategay &
Leadership, 17(3), 18 -19.
[GanMa2007] Gan, G., Ma, C. și Wu, J. Data Clustering: Theory, Algorithms and Applications.
Philadelphia : SIAM, 2007
[Hube1974] Huber P., Robust Statistics. Wiley, New York, 1974
[Ione2011] Analyzing Animated Movie Contents for Automatic Video Indexing . Ionescu, B., și
alții. 2011, Machine Learning Techniques for Adaptive Multimedia Retrieval:
Technologies Applications and Perspectives.
[JiawMichJian2012 ] Jiawei Han, Micheline Kamber, Jian Pei, Data mining -Concepts and
Techniques, Third Edition, United States of America, 2012
[Poli2006] Robi Polikar, Pattern recognition, Wiley Encyclopedia of BioMedical Engineering,
2006
[Stat] http://web -ng.info.uvt.ro/~balint/files/statistica.pdf
[Tere1992] Teresa F. Lunt, Ann Tamaru, Fred Gilham, R. Jagannathan, Caveh Jalali, Peter G.
Neumann, Harold S. Javitz, Alfonso Valdes, Thomas D. Garvey, A R EAL -TIME
INTRUSION -DETECTION EXPERT SYSTEM (IDES) – Final Technical Report,
February 28, 1992
[Yaho] http://www.yahoo.ro
[VaruArinVipi2009] Varun Chandola, Arinda m Banerjee, Vipin Kumar, Anomal Detection:
A Survey, 2009
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Circioroaba Claudia Disertatie Final.1.0 [610036] (ID: 610036)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
