universitatea babeŞ-bolyai cluj-napoca ...gabis/docdiplome/ann/lucrare_licenta.docx · web...

101
UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ SPECIALIZAREA INFORMATICĂ ROMÂNĂ LUCRARE DE DIPLOMǍ Sisteme predictive inteligente. Analiza seriilor de timp prin metode de învățare automată Conducător ştiinţific Prof. univ. dr. Czibula Gabriela

Upload: hoangkhanh

Post on 11-May-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCAFACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

SPECIALIZAREA INFORMATICĂ ROMÂNĂ

LUCRARE DE DIPLOMǍ

Sisteme predictive inteligente. Analiza seriilor de timp prin metode de

învățare automată

Conducător ştiinţificProf. univ. dr. Czibula Gabriela

AbsolventGrecu Mircea

2012

Page 2: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ
Page 3: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Cuprins

CUPRINS 3

INTRODUCERE 5

CAPITOLUL 1. INTELIGEN A ARTIFICIALĂ I ÎNVĂ AREA AUTOMATĂȚ Ș Ț 9

1.1. INTELIGEN AȚ ARTIFICIALĂ 9

1.1.1. CE ESTE INTELIGEN AȚ ARTIFICIALĂ? 9

1.1.2. RAMURI ALE INTELIGEN EIȚ ARTIFICIALE 10

1.2. ÎNVĂ AREAȚ AUTOMATĂ 13

1.2.1. CE ESTE ÎNVĂ AREAȚ AUTOMATĂ? 13

1.2.2. CLASE DE PROBLEME DE ÎNVĂ AREȚ AUTOMATĂ 14

1.2.3. APLICA IIȚ ALE ÎNVĂ ĂRIIȚ AUTOMATE 16

CAPITOLUL 2. ÎNVĂ ARE SUPERVIZATĂȚ 17

2.1. ASPECTE GENERALE 17

2.2. RE ELEȚ NEURONALE 18

2.3. PROGRAMARE GENETICĂ 20

2.4. MA INIȘ CU SUPORT VECTORIAL 21

CAPITOLUL 3. SISTEME PREDICTIVE INTELIGENTE 23

3.1. ANALIZA PREDICTIVĂ 23

3.2. SERII DE TIMP 24

3.3. MĂSURI DE PERFORMAN ĂȚ PENTRU MODELE PREDICTIVE DE REGRESIE 25

CAPITOLUL 4. STUDIU DE CAZ: PREVIZIUNEA VREMII FOLOSIND TEHNICI DE ÎNVĂ AREȚ AUTOMATĂ 27

4.1. ASPECTE GENERALE 27

4.2. DESCRIEREA PROBLEMEI 28

4.2.1. CONTEXT 28

4.2.2. MOTIVA IEȚ 29

4.3. ABORDĂRI INRUDITE 29

4.4. METODOLOGIE 31

4.4.1. PROIECTAREA MODELELOR 32

3

Page 4: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

4.4.2. SETUL DE DATE IȘ PREPROCESARE 33

4.4.3. ANTRENAMENT IȘ TESTARE 35

4.5. EXPERIMENTE IȘ REZULTATE 35

4.5.1. EXPERIMENTE 35

4.5.2. ANALIZĂ COMPARATIVĂ 41

4.6. DISCU IIȚ 42

4.6.1. ANALIZĂ 42

4.6.2. COMPARA IIȚ CU LUCRĂRI ANTERIOARE 43

4.7. CONCLUZII 44

CAPITOLUL 5. APLICA IE PRACTICĂ: ANALIZA SERIILOR DE TIMP PRIN TEHNICI DEȚ ÎNVĂ ARE AUTOMATĂȚ 45

5.1. ENUN ULȚ IȘ SPECIFICAREA PROBLEMEI 45

5.2. ANALIZA PROBLEMEI 46

5.3. PROIECTARE 48

5.3.1. MODELUL DE DATE 48

5.3.2. TEHNICILE DE ÎNVĂ AREȚ 52

5.4. IMPLEMENTARE 53

5.4.1. LIMBAJUL IȘ BIBLIOTECILE FOLOSITE 53

5.4.2. IMPLEMENTAREA INTERFE EIȚ CU UTILIZATORUL 53

5.4.3. SECVEN EȚ DE COD RELEVANTE 55

5.5. TESTARE 60

5.6. MANUAL DE UTILIZARE 60

5.7. EXTINDERI POSIBILE 65

CONCLUZII 67

BIBLIOGRAFIE 69

4

Page 5: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Introducere

Deciziile oamenilor sunt de multe ori dificile, din cauza incertitudinilor și a lipsei

de informații despre evenimentele din viitor. Dorința de a facilita luarea deciziilor și de a

face alegeri corecte ne motivează să căutam cât mai multe informații despre situația

studiată. Întrucât în numeroase situații informațiile care lipsesc sunt legate de evenimente

care încă nu au avut loc, se caută modalități de a prezice anumite fenomene care sunt

relevante pentru situațiile în cauză sau de a estima rezultatele unor evenimente despre care

se știe că vor avea loc.

Predicțiile s-au dovedit foarte utile în diverse domenii de activitate: industrie,

transporturi, politică, finanțe, marketing, meteorologie. Mai exact, predicțiile sunt folosite

pentru: managementul lanțului de aprovizionare, o activitate de bază în afacerile mari,

previzionarea indicatorilor meteorologici, planificarea transportului urban și aerian,

previzionarea cutremurelor și a altor calamități naturale și reducerea pagubelor acestora,

previzionarea rezultatelor la alegerile electorale, în actuariat pentru construirea unor

modele care ar estima riscurile afacerilor unei companii în viitorul apropiat, în studierea

burselor de valori pentru a prezice evoluția prețurilor acțiunilor.

Previzionarea diverselor fenomene din societate și din natură a fost una din

preocupările oamenilor încă din antichitate. Însă cele mai importante descoperiri științifice

legate de previzionare și predicții au fost făcute din anii 1960 până în prezent. Și odată cu

apariția calculatoarelor, s-a inceput studierea modelelor computerizate, care să genereze

predicții, având la bază algoritmi construiți după modele matematice sau seturi de reguli

folosite de experți.

În a doua jumătate a secolului XX a început să se dezvolte și o nouă ramură a

informaticii – inteligența artificială. Aceasta include și studiul învățării automate – o serie

de algoritmi și metode care evoluează în funcție de datele empirice primite. Problemele în

care se cer predicții s-au dovedit a fi ușor de transformat în probleme de învățare automată.

Această lucrare studiază aplicarea tehnicilor de învățare automată la problemele de

predicție.

Lucrarea cuprinde cinci capitole.

5

Page 6: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Capitolul 1 descrie pe scurt studiul inteligenței artificiale și al învățării automate.

Se face o scurtă introducere în inteligența artificială și sunt prezentatea principalele ramuri

ale aceasteia. De asemenea, se încadrează studiul învățării automate în cadrul inteligenței

artificiale și se prezintă principalele clase de probleme de învățare. Sunt descrise și câteva

situații reale în care se aplică algoritmii de învățare automată.

În Capitolul 2 este descrisă mai detaliat una din clasele de probleme de învățare

automată – învățare prin supervizare. Sunt prezentate aspecte teoretice și caracteristici

comune ale problemelor din aceasta clasă și domenii în care sunt aplicate tehnici de

învățare supervizată. În cadrul aceluiași capitol sunt descrise trei dintre cele mai cunoscute

metode folosite pentru această clasă de probleme: rețele neuronale artificiale, programarea

genetică și mașini cu suport vectorial. Aceste metode au fost alese și pentru studiul de caz,

descris în Capitolul 4. Sunt prezentate și modalitățile prin care este masurată performanța

acestor tehnici.

În continuare, Capitolul 3 include aspecte generale legate de sisteme predictive și

analiza predictivă. Se va prezenta pe scurt și tema analizei seriilor de timp – o modalitate

de a modela numeroase probleme de predicție. În acest capitol sunt menționate și cele mai

importante măsuri de evaluare a modelelor predictive, care vor fi utile în studiul de caz

prezentat în capitolul următor.

Capitolul 4 descrie un studiu de caz cu tema: Previzionarea vremii folosind metode

de învățare automată. Inițial, sunt mentionate aspecte care ne motivează să cercetăm

problema previzionării indicatorilor meteorologici folosind tehnici de învățare. Sunt

prezentate pe scurt lucrări în care a fost cercetată aceeași problemă, menționându-se

metodele și pașii folosiți pentru a studia problema, precum și rezultatele obținute. În

continuare, sunt explicate abordările folosite în această lucrare și sunt prezentate

experimentele realizate și o analiză a rezultatelor obținute în urma experimentelor

respective. Este inclusă și o analiză comparativă cu experimentele și rezultatele din

lucrările menționate care studiază aceeași problemă. Capitolul include și câteva concluzii

relevante pentru studiul de caz efectuat.

În final, Capitolul 5 descrie aplicația practică realizată pentru studierea sistemelor

predictive inteligente, care este folosită și în cadrul experimentelor descrise în studiul de

caz. Este o aplicatie de tip desktop care poate fi folosită pentru orice problemă pentru care

există un set de date compus dintr-o mulțime de exemple de date, fiecare fiind descris de

6

Page 7: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

valorile aceluiași set de variabile. Odată ce este încărcat un set de date se pot întreprinde

următoarele acțiuni: se poate studia corelația dintre variabile, se poate configura o

problemă care constă în previzionarea uneia din variabile, în funcție de valorile precedente

ale unui subset de variabile din setul de date, se poate aplica o tehnică de învățare

supervizată pentru a antrena un model pentru problema configurată, se poate testa acest

model și se pot salva rezultatele obținute. Tehnicile care pot fi folosite în program sunt:

rețele neuronale, programare genetică și mașini cu suport vectorial. Algoritmii folosiți

pentru aceste tehnici pot fi configurați din aplicație, setând parametrii corespunzîtori

fiecăruia.

În cadrul Capitolului 5 se prezintă specificarea proiectului, proiectarea aplicației, cu

diagramele corespunzătoare, detalii de implementare, prezentându-se instrumentele soft

folosite și secvențe de cod relevante pentru algoritmii utilizați, un manual de utilizare a

aplicației și extinderi posibile a acesteia pentru a include mai multe funcționalități și

posibilitatea studierii unui set mai larg de probleme de învățare supervizată.

Este de menționat faptul că studiul de caz prezentat în această lucrare a fost

subiectul unui articol prezentat la Sesiunea de Comunicări Științifice ale Studenților,

organizată de Universitatea Babeș-Bolyai și Universitatea Tehnică din Cluj-Napoca, din

iunie, 2012.

7

Page 8: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

8

Page 9: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Capitolul 1. Inteligența artificială și învățarea automată

În acest capitol se vor descrie pe scurt conceptele de inteligență artificială și

învățare automată. Se vor da definițiile noțiunilor de bază în studiul conceptelor respective

și se vor puncta principalele descoperiri în acest domeniu din ultimele decenii. De

asemenea, capitolul include și tendințe actuale în cercetările efectuate.

1.1. Inteligența artificială

1.1.1. Ce este inteligența artificială?

Termenul de inteligență artificială, sau IA, a fost pentru prima dată folosit în anul

1955 de John McCarthy. Acesta definea IA drept “știința și ingineria construirii mașinilor

inteligente.” De-a lungul timpului, oamenii de știință au dat definiții diferite noțiunii de IA.

Dar toate aceste definiții pot fi împărtițe în patru clase, în funcție de cum e înțeleasă

inteligența [1]:

i) Sisteme care gândesc la fel ca oamenii.

Ca să putem spune dacă un program gândește ca un om, trebuie să determinăm cum

gândesc oamenii și să formalizăm modul în care gândesc. Acest lucru poate fi facut prin

introspecție sau prin experimente psihologice. Dacă avem o teorie destul de precisă care să

descrie mintea omului, atunci se pot exprima formalitățile din spatele teoriei respective

într-un program.

Un criteriu posibil de a stabili dacă un sistem gândește la fel ca oamenii ar fi

următorul: Dacă datele de intrare și cele de ieșire ale programului și timpii de răspuns

coincid cu cele ale omului, aceasta poate constitui o dovadă a faptului ca o parte din

mecanismele din spatele sistemului ar putea fi găsite și în modul în care gândesc oamenii.

Această definiție pentru IA are și numele de abordarea modelării cognitive.

ii) Sisteme care se comportă la fel ca oamenii.

Această definiție este strâns legată de testul Turing, propus de renumitul Alan

Turing în 1950. Un program trece testul Turing dacă acesta primește întrebări de la o

9

Page 10: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

persoană aflată într-o altă cameră și, în urma răspunsurilor primite, persoana respectivă nu

ar putea să răspundă clar dacă interacționează cu un calculator sau cu o altă persoană.

Pentru a trece testul Turing, un calculator ar trebui să posede următoarele

capacități: procesarea limbajului natural, reprezentarea cunoștințelor, deducția automată a

răspunsurilor, învățare automată.

Din acest motiv, definiția de mai sus se numește și abordarea testului Turing.

iii) Sisteme care gândesc rațional.

Această definiție se referă la procesele de deducție și la logica formală. Astfel,

ideea constă în construirea unor programe care primesc ca date de intrare un set de

afirmații, reprezentând caracteristici ale entităților cercetate și relații dintre acestea, și care

deduc valoarea de adevăr a altor afirmații.

iv) Sisteme care se comportă rațional.

Un program este considerat că se comportă rațional dacă este capabil să perceapă,

să raţioneze şi să acţioneze în conformitate cu un anumit scop. Aceasta definiție are la bază

conceptul de agent – o entitate care percepe mediul din jurul ei și reacționează la acesta,

pentru a-și atinge obiectivul. Din această cauză, definiția este numită abordarea agentului

rațional.

1.1.2. Ramuri ale inteligenței artificiale

Scopurile de bază ale cercetării în IA sunt evidențiate de subdomeniile acesteia. În

continuare, se vor descrie cele mai importante ramuri ale IA.

Prelucrările simbolice (symbolic processing) reprezintă componenta cu preocupări

de programare a domeniului. Ea a dus la dezvoltarea unor limbaje specializate în

prelucrarea simbolurilor, cel mai cunoscut dintre ele fiind Lisp. Fără a neglija aspectele

clasice ale programării, cum ar fi utilizarea numerelor în calcule, în toate aceste limbaje se

pune un accent deosebit pe manipularea simbolurilor. Un limbaj adecvat prelucrărilor

simbolice găzduieşte cu uşurintă reprezentarea şi manipularea simbolurilor de orice natură,

nu numai numerice. Pentru că inteligența artificială se bazează în mare măsură pe

manipularea simbolurilor, Lisp este considerat limbajul de casă (sau nativ) al inteligenței

artificiale. Un tip particular de prelucrări simbolice sunt confruntările de şabloane (pattern

matching). Sabloanele sunt obiecte abstracte formate din părți definite riguros şi altele doar

10

Page 11: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

schițate. Sabloanele sunt utilizate pentru regăsirea de obiecte ce satisfac anumite

constrângeri în mulțimi de obiecte asemănătoare [2].

Procesare simbolică şi limbaje de procesare simbolică. În general se acceptă că

sistemele inteligente din natură prelucrează două tipuri de informații: de natură simbolică

sau concentrată şi de natură difuză, distribuită. Calculatoarele noastre, prin proiectare, sunt

destinate a manipula numere şi caractere, având compartimente special proiectate pentru

realizarea performantă de calcule numerice. Lucrul cu simboluri (şiruri de caractere,

imagini sau sunete) deşi realizabil pe calculatoarele clasice, necesită tehnici speciale

mulate pe natura digitală a aparatului de calcul. Maşina uzuală pe care o avem la dispoziție

nu are cablate disponibilități de a opera cu simboluri, de a realiza regăsiri simbolice pe

bază de asociații, ori de a forma alte simboluri prin compunere. Manipularea simbolurilor

necesită un aparat logic şi un suport adecvat de calcul (o maşinărie). Aparatul logic este dat

de logica simbolică care reprezintă atât un model de formalizare a cunoştintelor cât şi o

metodă de raționament. Maşinăria este asigurată de limbajele de procesare simbolică

capabile a simula un comportament adecvat prelucrărilor simbolice mulat pe natura slab

simbolică a maşinii. Dintre acestea, putem identifica: Lisp – în paradigma funcțională,

Prolog – în paradigma logică şi Clips – în paradigma bazată pe reguli [2].

Reprezentarea cunoaşterii (knowledge representation). Putem interacționa cu

mediul înconjurător pentru că, pe de o parte, datorită simțurilor, intrăm în legătură cu ea,

iar pe de altă parte o "înțelegem" aşa cum este. Ca să înțelegem realitatea avem însă nevoie

de a o "proiecta" în mintea noastră. Această proiecție este o reprezentare a realității. Fără a

avea o reprezentare asupra unei entități nu putem emite judecăți asupra ei. Reprezentarea

implică, în principiu, trei componente: o notație, o denotație şi un calcul. Notația este un

desen, sau o structură de date, care respectă anumite convenții (date de obicei de o sintaxă).

Conotația, sau semantica, este interpretarea pe care o dăm notației, din nou pe baza unui

sistem de convenții. Fără aceste reguli de interpretare notația este superfluă. În sfârşit, o

reprezentare trebuie să includă un model computațional care să facă posibilă operarea cu

obiectele şi relațiile dintre obiecte ce compun reprezentarea. Datorită modelului de calcul

entitățile modelate prind viață, putându-se studia astfel comportamentul lor în condiții ce

simulează de aproape realitatea [2].

Raționament automat şi demonstrarea teoremelor (theorem proving, problem

solving). Cea mai veche ramură a IA şi cea mai teoretică dintre ele, utilizează logica ca

sistem formal de găsire a demonstrațiilor şi de generare a inferențelor automate. Foarte 11

Page 12: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

multe probleme pot fi formalizate ca probleme de matematică sau logică, rezolvarea lor

reducându-se la o demonstrare a unei teoreme, plecând de la un sistem de axiome şi

utilizând un mecanism de deducție logică. Ca şi în alte cazuri, dificultățile rezidă în

numărul extrem de mare de posibilități ce pot apare. Pentru controlul exploziei de

posibilități în căutarea unei soluții se utilizează de multe ori soluții euristice, care deşi nu

garantează soluția optimă, pot în general duce la găsirea uneia, cel puțin [2].

Procesarea limbajului natural (natural language processing). Este de mult

acceptat că utilizarea limbajului este o caracteristică definitorie a inteligenței. Deşi nouă ne

vine atât de uşor să comunicăm prin limbaj, o încercare de explicitare a mecanismelor care

stau la baza înțelegerii textelor ori a limbajului vorbit se dovedeşte deosebit de dificilă. În

domeniul înțelegerii limbajului natural trebuie întâi stabilită o distincție între a întelege un

mesaj comunicat prin voce şi a întelege un mesaj scris. De prima chestiune se ocupă

domeniul de cercetare al interpretării vorbirii (speech processing). Problema înțelegerii

limbajului în varianta scrisă face obiectul a două tipuri de preocupări. Lingvistica

computațională pe de o parte, ca domeniu pur academic, pune în discuție modele

computaționale ale limbajului natural cu scopul de a investiga şi descoperi natura însuşi a

limbajului şi a abilităților cognitive umane. Ingineria Lingvistică, pe de altă parte, este

preocupată de a dezvolta aplicații care se bazează pe utilizarea limbajului natural, orientate

spre industrie, comerț, sfera socialului sau cea educațională [2].

Vederea artificială (computer vision). Cinci simțuri (vederea, auzul, simțul tactil,

mirosul şi gustul) ne stau la dispoziție pentru a interacționa cu mediul, pentru a lua

cunoştintă de ceea ce se află în afara corpului nostru, în imediata noastră vecinătate.

Modelarea acestor simțuri pe sisteme automate reprezintă cu certitudine, o preocupare de

mare însemnătate a domeniului IA. Dintre cele cinci, vederea ocupă un loc privilegiat.

Sistemele de vedere artificială încearcă să descifreze mecanismele vederii şi ale

interpretării imaginilor statice şi în mişcare [2].

Robotică (robotics). Sistemele inteligente vii au abilitatea de a găsi soluții de

deplasare în spațiu în vederea atingerii unor obiective sau de mutare a unor obiecte

folosind brațele. Căutarea unui drum pe un teren accidentat (lunar, de exemplu, sau pe

fundul oceanelor) sau într-un spațiu cu obstacole (cum este o cameră) nu este o problemă

simplă, nu în ultimul rând datorită numărului mare de posibilități de alegere la fiecare pas,

complexitate ce face imposibilă tentativa căutării exhaustive. Încercând a modela procesele

cognitive care se desfăşoară în sistemele vii, planificarea roboților este un câmp de 12

Page 13: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

cercetare care urmăreşte a îmbunătăți comportamentul roboților atunci când ei sunt

programați a executa diferite sarcini [2].

Învățare automată (machine learning). Un sistem înzestrat cu inteligență este

capabil să învețe pentru a-şi îmbunătăți interacțiunea cu mediul. El poate învăța fie din

greşeli, prin auto-perfecționare, fie ghidat de un profesor, fie generalizând, fie prin

analogie, sau din exemple pozitive şi negative. Domeniul învățării automate formalizează

aceste metode şi caută aplicarea lor la sistemele automate [2].

Sisteme expert (expert systems). Puterea stă în cunoaştere. Aplicarea acestui truism

în sisteme artificiale înseamnă dotarea lor cu abilitatea de a se servi de cunoaştere specifică

(cunoaştere expert). Un medic este bun în găsirea unui diagnostic pentru că are un bagaj de

cunoştințe generale dar şi specifice despre boli şi bolnavi. Parțial această cunoaştere a

deprins-o din cărți, parțial în cursul anilor de experiență clinică, prin atâtea cazuri în care s-

a implicat. Achiziționarea, formalizarea şi includerea cunoaşterii expert în sistemele

artificiale reprezintă scopul domeniului sistemelor expert [2].

1.2. Învățarea automată

1.2.1. Ce este învățarea automată?

Învăţarea automată (machine learning, ML), unul din sub-domeniile de bază ale

inteligenţei artificiale, se preocupă cu dezvoltarea de algoritmi şi metode ce permit unui

sistem informatic să înveţe date, reguli sau algoritmi. Învăţarea automată presupune în

primul rând identificarea şi implementarea unei modalităţi cât mai eficiente de a reprezenta

informaţii, în sensul facilitării căutării, reorganizării şi modificării lor. Alegerea modului

de a reprezenta aceste date ţine atât de concepţia generală asupra modului de rezolvare a

problemei, cât şi de caracteristicile datelor cu care se lucrează [2, 3].

Învăţarea nu se poate face pe baza unui set foarte mare de cunoştinţe, atât din cauza

costurilor mari presupuse de acumularea unor baze de informaţii mari cât şi din cauza

complexităţii memorării şi prelucrării unui volum mare de informaţii. În acelaşi timp însă,

învăţarea trebuie să ducă la formularea de suficiente “reguli” atât cât să permită rezolvarea

unor probleme dintr-un spaţiu mai larg decât cel pe baza căruia s-a făcut învăţarea. Adică,

învăţarea trebuie să îmbunătăţească performanţa unui sistem nu doar în rezolvarea repetată

a unui acelaşi set de probleme, ci şi în rezolvarea unor probleme noi. Acest lucru

13

Page 14: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

presupune o generalizare a unei metode de rezolvare pentru a acoperi un număr cât mai

mare de instanţe posibile, dar şi păstrarea unei specializări suficiente pentru a fi identificate

corect instanţele acceptate. Aceasta se poate face fie inductiv, generalizând o problemă

plecând de la un set de exemple, fie deductiv, plecând de la o bază de cunoştinţe suficiente

asupra universului problemei şi extrăgând date şi reguli esenţiale. Pentru a putea face acest

lucru, un algoritm de învăţare trebuie să fie capabil să selecteze acele elemente

semnificative pentru rezolvarea unei instanţe viitoare a problemei. Aceasta alegere se face

pe baza unor criterii de selecţie numite diagonale inductive.

O altă componentă esenţială a unui algoritm de învăţare este metoda de verificare, o

metodă capabilă să confirme dacă generalizările făcute sau regulile deduse se apropie mai

mult de soluţia ideală decât starea anterioară a sistemului. Studiul învăţării automate a dus

la descrierea a numeroase metode, variind după scop, date de antrenament, strategia de

învăţare şi modalitatea de reprezentare a datelor [2].

Specificarea unei metode de învăţare automată presupune definirea următoarelor

date:

- scopul metodei şi baza de cunoştinţe necesară;

- formalismul de reprezentare a datelor utilizate şi a celor învăţate;

- un set de operaţii asupra datelor disponibile şi învăţate;

- un spaţiu general al problemei în care se va specifica soluţia;

- opţional, reguli euristice pentru căutarea în spaţiul problemei.

1.2.2. Clase de probleme de învățare automată

Algoritmii din ML pot fi clasificați după tipul de feedback pe care îl primește

modelul după ce generează un rezultat. Acest criteriu determină trei clase de probleme:

învățare supervizată, învățare nesupervizată și învățare prin intarire.

Învăţarea supervizată este un tip de învăţare inductivă ce pleacă de la un set de

exemple de instanţe ale problemei şi formează o funcţie de evaluare (şablon) care să

permită clasificarea (rezolvarea) unor instanţe noi [2]. Învăţarea este supervizată în sensul

că setul de exemple este dat împreună cu clasificarea lor corectă. Aceste instanţe rezolvate

se numesc instanţe de antrenament. Formal, setul de instanţe de antrenament este o

mulţime de perechi atribut-valoare (x, f(x)), unde x este instanţa, iar f(x) - clasa căreia îi

14

Page 15: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

aparţine instanţa respectivă. Despre acest tip de probleme se va discuta pe larg în capitolul

următor.

Învăţarea nesupervizată elimină complet necesitatea unor instanţe de

antrenament, deci şi problemele legate de acestea. Scopul învăţării nesupervizate nu este

definit anterior ca un concept ţintă, algoritmul fiind lăsat singur să identifice concepte

posibile. În general, învăţarea nesupervizată presupune existenţa unor instanţe

neclasificate, un set de reguli euristice pentru crearea de noi instanţe şi evaluarea unor

concepte deduse, eventual un model general al spaţiului de cunoştinţe în care se găsesc

aceste instanţe. Un algoritm de învăţare nesupervizată construieşte concepte pentru a

clasifica instanţele, le evaluează şi le dezvoltă pe cele considerate “interesante” de regulile

euristice. În general, concepte interesante sunt considerate cele care acoperă o parte din

instanţe, dar nu pe toate. Astfel, invăţarea nesupervizată permite identificarea unor

concepte complet noi plecând de la date cunoscute [2].

Învăţarea prin întarire se face fără ca algoritmul de învăţare să compare direct

şablonul obţinut cu rezultatele corecte pentru exemplele de antrenament. În schimb, este

implementată o modalitate de a “răsplăti” sau “pedepsi” sistemul în funcţie de cât de mult

se apropie de rezultatul corect. Acest feedback este singura metodă a sistemului de învăţare

de a se regla pentru îmbunătăţirea rezultatelor sale. Acest lucru face învăţarea prin întărire

mai dificilă, căci sistemul nu mai primeşte informaţii directe despre cum şi cât să se

corecteze, ci doar ştie dacă se apropie sau se depărtează de rezultatul optim. De asemenea,

feedback-ul poate veni doar uneori, nu neapărat la fiecare schimbare în şablonul ipotetic,

deci sistemul trebuie să aibă o modalitate de a direcţiona şi impulsiona singur schimbarea

pentru îmbunătăţirea şablonului [2].

Există două tipuri de informaţie ce pot face parte din feedback-ul primit de sistem

în cazul învățării prin întărire:

- informaţie utilitară, prin care sistemul învaţă utilitatea unei anumite stări în care

se află şi care permite sistemului să caute acele stări care maximizează şansa de

a găși o soluţie optimă;

- valoarea unei acţiuni, adică sistemul află potenţialul unei acţiuni de a fi sau nu

utilă într-o anumită stare, practic potenţialul unei acţiuni de a apropia sistemul

de găsirea unei soluţii optime.

15

Page 16: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

1.2.3. Aplicații ale învățării automate

Există multe aplicații cu algoritmi de ML folosite în practică și numărul acestora

crește semnificativ în fiecare an. Este important de menționat că până în 1985 nu exista

aproape nicio aplicație comercială care să folosească ML [4]. Vom menționa câteva

domenii în care se aplică ML.

Recunoașterea vorbirii. Aproape toate aplicațiile comerciale curente pentru

recunoașterea vorbirii folosesc ML într-o formă sau alta pentru antrenarea sistemului de

recunoaștere. Motivul este simplu: acuratețea recunoașterii vorbirii este mai mare dacă

sistemul este antrenat decât dacă este programat de mână.

Vederea artificială. Multe sisteme curente, de la cele de recunoaștere de fețe la cele

care clasifică imagini microscopice de celule, sunt dezvoltate folosind ML. Una din

aplicațiile vederii artificiale folosită la scară largă este sistemul folosit de Oficiul Poștal din

SUA pentru sortarea automată a scrisorilor care conțin adrese scrise de mână. Mai mult de

85% din scrisorile scrise de mână în SUA sunt sortate automat, folosindu-se un algoritm de

analiză a scrisului de mână antrenat prin ML cu un set de date foarte mare [4].

Controlul roboților. Tehnicile de ML au fost folosite cu succes în mai multe

sisteme de roboți. De exemplu, un grup de cercetători au demonstrat folosirea ML pentru a

obține strategii de control pentru un zbor stabil al unui elicopter și pentru acrobații cu

elicopterul. De asemenea, competiția sponsorizată de DARPA pentru un robot care să

conducă autonom mai mult de 100 de mile în deșert a fost câștigată de un robot care

folosea ML pentru a-și dezvolta abilitatea de a detecta obiecte la distanță [4].

Cercetări în științe noi. Multe științe în care se lucrează cu un volum imens de date

folosesc tehnici de ML pentru a facilita descoperirile științifice. Algoritmi din ML sunt

folosiți pentru a învăța modele de descriere a genelor din celule, pentru a descoperi obiecte

astronomice neobișnuite din setul imens de date colectat de Sloan Sky Survey, pentru a

caracteriza modelele complexe de activare a părților creierului în scanerele fMRI [4].

16

Page 17: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Capitolul 2. Învățare supervizată

În acest capitol se va prezenta tematica învățării supervizate ca o clasă de probleme

de învățare automată. Se vor descrie și trei dintre cele mai cunoscute tehnici de ML folosite

pentru probleme de învățare supervizată: rețele neuronale, programare genetică și mașini

cu suport vectorial. Aceste trei tehnici au fost folosite și în studiul de caz care este

prezentat în Capitolul 4.

2.1. Aspecte generale

Învățarea supervizată este un tip de învățare automată prin care se induce o funcție

dintr-un set de date cu valori deja atribuite. Cu alte cuvinte, este formalizarea învățării din

exemple. În cadrul învățării supervizate, programul are la dispoziție două seturi de date: un

set de date de antrenament și unul de test. Ideea constă în faptul că programul să învețe

dintr-un set de exemple cu etichete cunoscute din setul de antrenament pentru a identifica

exemplele neetichetate din setul de test cu o acuratețe cât mai mare [5].

Un algoritm de învățare supervizată analizează datele de antrenament și produce o

funcție, care este numită funcție de clasificare dacă datele de ieșire sunt dintr-o mulțime

discretă sau funcție de regresie dacă datele de ieșire aparțin unei mulțimi continue. Funcția

produsă ar trebui să prezică cât mai bine valorile de ieșire pentru orice obiect de intrare

valid. Acest lucru cere de la algoritmul de învățare să generalizeze de la datele de

antrenament la orice date de intrare din mulțimea indicată în problemă [6].

Astfel, pentru a rezolva o problemă de ML, trebuie întreprinși următorii pași:

A. Precizarea tipului de exemple de antrenament.

B. Colectarea unui set de date de antrenament.

C. Determinarea unei reprezentări potrivite pentru datele de intrare a funcției

învățate.

D. Deciderea asupra structurii funcției învățate și a algoritmului de învățare

corespunzator.

E. Execuția algoritmului pe setul de date de antrenament ales.

17

Page 18: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

F. Evaluarea acurateții funcției învățate, folosind un set de date de test.

2.2. Rețele neuronale

O rețea neuronală artificială este un model matematic sau computațional, care este

inspirat din structura și aspectele funcționale ale unei rețele neuronale biologice. O rețea

neuronală constă dintr-un grup de neuroni artificiali interconectați, dispuși pe straturi. De

obicei, o legătură de la un neuron la altul are asociată o pondere [3].

În cele mai multe cazuri, o rețea neuronală artificială este un sistem adaptiv care își

schimbă structura în funcție de informația din interior sau exterior care este transmisă prin

rețea în timpul fazei de învățare.

În implementările actuale ale rețelelor neuronale, abordarea inspirată din biologie a

fost în mare parte abandonată în locul unei abordări mai practice bazată pe statistică și

procesarea semnalelor [3].

Metodele bazate pe rețele neuronale oferă o abordare robustă în aproximarea

funcțiilor reale, discrete și vectoriale. Pentru anumite tipuri de probleme, cum ar fi

învățarea interpretării datelor reale complexe obținute de la senzori, rețelele neuronale

artificiale sunt printre cele mai eficiente metode cunoscute. De exemplu, rețelele neuronale

de tip feed-forward backpropagation, despre care se vor vorbi în detaliu, s-au dovedit a fi

surprinzător de bune pentru probleme practice cum ar fi: conducerea autonomă a

automobilului, recunoașterea scrisului de mână, controlul roboților, recunoașterea fețelor

[3].

Un neuron din rețea are următoarea formă [2]:

Figura 1. Structura unui neuron

18

Page 19: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

unde x1, x2, ... , xn sunt semnalele primite de neuron, w1, w2, ... , wn sunt costurile sau

ponderile pentru fiecare semnal, , iar f(net) este o funcţie care calculează

ieşirea din neuron (funcţie de activare). Dacă f(net) este mai mare decât un prag stabilit

pentru reţea, atunci neuronul transmite semnalul mai departe.

Sunt numeroase abordări și algoritmi de antrenare a unei rețele. Printre acestea

sunt: rețele de tip feed-forward backpropagation (semnalul se propagă înainte, iar eroarea

se propagă înapoi), rețele radial-basis function, rețele recurente (graful format de neuroni

și sinapse conține și cicluri), rețele de tip counterpropagation. Printre cele mai simple și

mai utilizate rețele neuronale sunt acelea bazate pe algoritmul feed-forward with

backpropagation, sau pe scurt backpropagation. Aceste rețele au o structură clasică cu un

strat de neuroni de intrare, unul de ieșire și mai multe straturi ascunse între acestea [7].

Algoritmul backpropagation este divizat în 2 faze: prima constă în propagarea

informației utile dinspre stratul de intrare spre cel de ieșire, apoi propagarea în direcție

inversă a erorilor și a doua fază constă în actualizarea ponderilor.

În prima fază, datele de intrare se propagă înainte prin rețea pentru a se genera

valorile de ieșire, iar după aceasta se calculează eroarea și se propagă înapoi spre

straturile ascunse și spre cel de intrare pentru a genera diferențele (delta) dintre

valorile obținute și cele reale pentru fiecare neuron în parte.

În a doua fază, pentru fiecare pondere, se calculează gradientul de eroare folosind

valorile delta generate în prima fază, și se actualizează ponderea în direcția opusă

erorii scăzănd din pondere eroarea înmulțită cu o constantă subunitară, numită

coeficient de învățare.

Algoritmul pentru un singur strat ascuns arată în felul următor [8]:

Inițializează ponderile din rețea // de obicei, aleator

Execută

Pentru fiecare exemplu e din setul de antrenament

O = valoarea-de-ieșire(rețea, e) // parcurgere înainte

T = valoarea reală pentru e

Calculează eroarea (T - O) pentru neuronii de ieșire

Calculează delta_wh pentru toate ponderile de la stratul ascuns

19

Page 20: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

la cel de ieșire // parcurgere înapoi

Calculează delta_wi pentru toate ponderile de la stratul de

intrare la cel ascuns // continuarea parcurgerii înapoi

Actualizează pnderile din rețea

Până când toate exemplele au fost învățate corect sau a fost

îndeplinit un criteriu de oprire,

Întoarce rețeaua

2.3. Programare genetică

Programarea genetică este o metodă bazată pe algoritmi evolutivi, inspirată din

evoluția biologică, prin care se caută expresii sau algoritmi care ar rezolva cât mai bine o

anumită problemă. Structurile care sunt supuse adaptării și evoluției în paradigma

programării genetice sunt programe structurate ierarhic, ale căror mărime, formă și

complexitate se pot schimba de-a lungul procesului [9].

Programarea genetică este o tehnică de învățare automată folosită pentru a optimiză

o populație de programe în concordanță cu o funcție de fitness determinată de abilitatea

programului de a realiza sarcina cerută.

Programele manipulate de algoritmii de programare genetică sunt reprezentate prin

arbori de expresii. Fiecare apel de funcție este reprezentat printr-un nod intern în arbore, iar

argumentele funcției sunt date de nodurile fii ale nodului respectiv. Pentru a aplica

programarea genetică la un domeniu particular, trebuie definit un set de funcții primitive

sau operatori cu care se va lucra (de ex: sin, cos, +, -, or, and, xor), precum și un set de

noduri terminale, reprezentate prin variabile (datele de intrare în program) sau constante.

Algoritmii bazați pe programare genetică au următoarea formă [10]:

1) Creează în mod aleator o populație inițială de programe individuale alcătuite din

funcțiile disponibile și din terminale.

2) În mod iterativ execută următorii pași (o generație) asupra populației, până când

criteriul de oprire este satisfăcut:

a. Execută fiecare program din populație și calculează fitness-ul acestuia folosind

funcția de fitness definită.

b. Alege unul sau două programe din populație cu o probabilitate bazată pe fitness

20

Page 21: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

pentru a participa la operațiile genetice de la punctul c).

c. Creează un nou program pentru a fi inclus în populație aplicând următoarele

operații cu probabilitățile specificate:

i. Reproducere : Copiază programul selectat în noua populație.

ii. Crossover : Creează un nou program pentru noua populație, recombinând

bucăți aleatoare din două programe selectate.

iii. Mutație : Creează un nou program pentru noua populație, modificând o

parte aleatoare a unui program selectat.

3) După ce criteriul de oprire a fost satisfăcut, programul cu cel mai bun rezultat pentru

funcția de fitness este ales și este întors de către algoritm.

2.4. Mașini cu suport vectorial

Mașinile cu suport vectorial (Support vector machines, SVM) sunt bazate pe teoria

învățării statistice. Ideea de bază este de a mapa datele originale într-un spațiu inițial printr-

o funcție neliniară și de a construi un hiperplan optim într-un spațiu nou cu mai multe

dimensiuni [11]. Acești algoritmi pot fi utilizați atât pentru clasificare, cât și pentru

regresie. În cazul clasificării, se caută un hiperplan optim care ar separa datele în 2 clase

diferite. Iar în cazul regresiei, se contruiește un hiperplan care se află aproape de cât mai

multe puncte, fiind reprezentați sub formă de vectori, care reprezintă datele problemei. În

cazul problemelor de regresie, algoritmul este numit Support Vector Regression (SVR).

Mașinile cu suport vectorial sunt o metodă de învățare supervizată state-of-the-art.

Algoritmii SVM sunt folosiți pe larg în bioinformatică datorită acurateții înalte și a

capacității de a se descurca cu date multi-dimensionale, cum ar fi descrierea genelor, și

flexibilitatea modelării diverselor surse de date [12].

Tehnicile SVM aparțin categoriei de metode kernel. O metodă kernel este un

algoritm care depinde de date numai prin produse scalare. Când acesta e cazul, produsul

scalar poate fi înlocuit cu o funcție kernel care calculeaza produsul scalar într-un posibil

spatiu de caracteristici multi-dimensional. Acest lucru are două avantaje: în primul rând,

abilitatea de a genera limite de decizie non-liniare folosind metode pentru clasificatori

liniari. În al doilea rand, folosirea funcțiilor kernel permite utilizatorului să aplice

clasificatorul pe seturi de date care nu au o reprezentare într-un spațiu vectorial de o

21

Page 22: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

dimensiune fixată. Un exemplu de astfel de date este prezent în bioinformatică, și anume

secvențele de ADN și de proteine [12].

Sunt numeroase aplicații practice ale tehnicilor SVM. Cele mai cunoscute situații

reale în care s-a folosit SVM sunt: recunoașterea cifrelor scrise de mână, clasificarea

textului și a hiper-textului, identificarea sexului din imagini și algoritmi de ordonare a

paginilor după relevanță [13].

22

Page 23: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Capitolul 3. Sisteme predictive inteligente

Studiul care se ocupă cu sistemele predictive este analiza predictivă. În acest

capitol se va prezenta aspecte generale legate de analiza predictivă și modalități prin care

se pot aplica tehnici de învățare automată pentru a construi sisteme predictive. Analiza

predictivă poate fi folosită pentru a construi modele de clasificare și modele de regresie,

dar în această lucrare se pune accentul pe modelele de regresie. Se va discuta și despre

unul din tipurile de modele predictive, și anume cele bazate pe serii de timp. Ultimul

subcapitol va conține câteva masuri de performanță utilizate pentru modelele predictive de

regresie.

3.1. Analiza predictivă

Analiza predictivă este un domeniu al analizei statistice care se ocupă cu extragerea

informațiilor din date și folosirea acestora pentru a prezice comportamentul unor fenomene

din viitor. Cuprinde tehnici statistice din învățare automată, data mining, teoria jocurilor,

care analizează evenimente curente și din trecut pentru a face predicții despre evenimente

din viitor. Dacă modelul dorit trebuie să genereze date de ieșire care fac parte dintr-o

mulțime discretă, atunci acesta e numit model de clasificare. Daca multimea datelor de

ieșire este continuă, atunci modelul este de regresie. Domeniile de aplicare ale analizei

predictive sunt numeroase: finanțe, marketing, asigurări, transporturi, telecomunicații etc.

Din punct de vedere al afacerilor, analiza predictivă este vazută ca un set de tehnici

de business intelligence (BI) prin care se caută descoperirea unor relații și șabloane în

volume mari de date care pot fi folosite pentru a prezice comportamente și evenimente.

Spre deosebire de alte tehnici de BI, analiza predictivă este anticipativă, folosind

evenimente din trecut pentru a anticipa viitorul [14].

Analiza predictivă este considerată mai mult decât doar statistică. Regresia liniară

și logistică – tehnici clasice din statistică – încă sunt folosite pe larg în modelele predictive

de azi și aproape toți modelatorii analitici folosesc statistica descriptivă (medie, mod,

23

Page 24: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

mediana, deviația standard, histograme) pentru a înțelege natura datelor care trebuie

analizate [14].

Însă descoperirile din informatică și tehnologie au facut posibil să se folosească o

clasă mai largă de tehnici predictive, cum ar fi: arbori de decizie, rețele neuronale,

algoritmi evolutivi, mașini cu suport vectorial și alți algoritmi matematici. Aceste noi

tehnici se folosesc de puterea de lucru tot mai mare a calculatoarelor pentru a face calcule

complexe care de multe ori necesită parcurgeri multiple ale setului de date. Ele sunt

modelate, astfel încât să ruleze cu volume mari de date, cu multe variabile. De

asenemenea, sunt gândite să gestioneze zgomotul din date cu diverse anomalii care ar face

probleme modelelor tradiționale.

Indiferent de metodă, majoritatea proceselor pentru a crea modele predictive includ

următorii pași [14]:

1. Definirea proiectului: Definește obiectivul și rezultatele așteptate pentru un

anumit proiect, acestea fiind traduse în obiective și sarcini din analiza

predictivă.

2. Explorare: Analizează sursa de date și determină cel mai potrivit set de date

și cea mai bună abordare pentru a construi modelul.

3. Pregătirea datelor: Selectează, extrage și transformă datele care vor fi

folosite pentru crearea modelului.

4. Construirea modelului: Creează, testează și validează modelul. Evaluează

cât de bine acesta satisface cerințele proiectului.

5. Exploatare: Aplică rezultatele modelului în deciziile și procesele de

business care sunt studiate.

6. Gestiunea modelului: Gestionează și întreține modelele construite pentru a

îmbunătăți performanța, a promova reutilizabilitatea și a minimiza

activitățile redundante.

Unul din tipurile de modele de regresie care sunt obținute în urma analizei

predictive sunt modelele bazate pe serii de timp.

24

Page 25: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

3.2. Serii de timp

O serie de timp este o secvență de puncte de date, de obicei măsurate la intervale

egale de timp. Seriile de timp apar în mod natural în multe situații reale [15]. De exemplu:

Economie: cifrele lunare pentru somaj, numărul de internări în spitale, etc.

Finante: valorile zilnice ale cursului de schimb, valorile prețurilor acțiunilor

cotate la bursă, etc.

Mediu: cantitatea zilnică de precipitații, valorile zilnice pentru calitatea aerului

din atmosferă, etc.

Medicină: activitatea undelor cerebrale la fiecare 2-8 secunde.

Previzionarea seriilor de timp constă în folosirea unui model care prezice valori în

viitor, bazându-se pe valorile înregistrate în trecut. Aceste modele iau în considerare faptul

că evenimentele luate de-a lungul timpului sunt corelate într-un anumit fel sau au un

caracter periodic.

3.3. Măsuri de performanță pentru modele predictive de regresie

Vom menționa cele mai importante măsuri de evaluare a unui model predictiv de

regresie. Fie că avem: p – vectorul valorilor prezise, a – vectorul valorilor așteptate, n –

numărul de instanțe.

Mean Squared Error. Este o formulă foarte utilizată pentru măsurarea erorii unui

model de regresie. Are dezavantajul ca poate fi comparată doar între modele care au

eroarea masurată în aceeași unitate de masură.

Root Mean Squared Error. Este rădăcina pătrată a formulei de mai sus.

Relative Squared Error. Este o formulă care poate fi folosită pentru a compara două

modele pentru care erorile sunt măsurate în unități de măsură diferite [16].25

Page 26: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Mean Absolute Error. Valoarea formulei are aceeași unitate de masură ca și eroarea

modelului. Poate fi folosită doar pentru a compara modele care au aceeași unitate de

măsură pentru eroare [16].

Relative Absolute Error. O formulă care poate fi folosită pentru a compara modele care au

unități de măsura diferite pentru erori [16].

26

Page 27: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Capitolul 4. Studiu de caz: Previziunea vremii folosind tehnici

de învățare automată

În acest capitol vom prezenta problema previzionării temperaturii atmosferice

folosind algoritmi dezvoltați în domeniul inteligenței artificiale. Există metode tradiționale

pentru a construi modele care dau rezultate bune pentru previzionarea indicatorilor

meteorologici. Însă în acest studiu de caz ne propunem să investigăm utilitatea tehnicilor

de învățare automată pentru predicții ale vremii. Dacă presupunem că temperatura în

viitorul apropiat depinde de valorile indicatorilor atmosferici din trecutul imediat, se poate

deriva o metodă care să învețe din datele din trecut și care să construiască un model care să

dea estimări apropiate ale temperaturii în perioada imediat următoare, pentru o anumită

locație. Tehnicile de învățare automată folosite în acest studiu sunt: rețele neuronale,

programare genetică și mașini cu suport vectorial. Pentru a cerceta acest subiect, au fost

realizate trei tipuri de experimente, pentru care sunt indicate și rezultatele obținute. Se

prezintă și o scurtă analiză a rezultatelor, comparându-le cu cele obținute în studii similare.

4.1. Aspecte generale

Previziunea vremii este definită ca fiind aplicarea științei și a tehnologiei pentru

prezicerea stării atmosferei pentru o anumită locație. Oamenii au încercat să prezică

vremea informal de milenii și formal din secolul al XIX-lea [17]. Prognozele meteo sunt

făcute colectând date cantitative despre starea curentă a atmosferei și folosind descoperiri

științifice despre procesele atmosferice pentru a estima cum va evolua atmosfera.

Predicția stării vremii este un proces complex și o problemă dificilă pentru

cercetători. Aceasta necesită expertiză în diverse domenii științifice și tehnologice. Însă

prognozele meteo sunt esențiale pentru anumite activități. Acestea include: monitorizarea

climatică, detecția secetei, prezicerea situațiilor critice, planificarea în agricultură,

planificarea în producerea de energie regenerabilă, industria acvatică și multe altele.

Tradițional, estimările pentru temperatura din viitorul apropiat sunt făcute cu

ajutorul modelării numerice a observațiilor și a datelor obținute de la senzori și radare. Ca

27

Page 28: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

o alternativă, această lucrare propune o abordare diferită, bazată pe tehnici de învățare

automată.

Acest studiu de caz urmăreste să investigheze folosirea rețelelor neuronale

artificiale, a programării genetice și a mașinilor cu suport vectorial pentru a construi

modele care să prezică temperatura pentru o anumită locație și care sunt antrenate cu

exemple de date care să descrie starea vremii în trecut, pentru locația respectivă.

4.2. Descrierea problemei

În această secțiune vom prezenta problema previzionării vremii, explicând în

același timp motivația studierii acestei teme.

4.2.1. Context

Ideile fundamentale ale prognozii numerice a stării vremii și a modelării climatice

au fost dezvoltate cu un secol în urmă, cu mult înaintea apariției primului calculator

electronic. Dar erau căteva obstacole majore care trebuiau trecute pentru ca predicția

numerică să fie pusă în practică [18].

O mai bună înțelegere a dinamicii atmosferei a permis dezvoltarea unor sisteme

simplificate de ecuații; observațiile regulate ale atmosferei făcute de radiosonde și, mai

apoi, datele venite de la sateliți au oferit condițiile inițiale; mai apoi, au fost dezvoltate și

schemele stabile cu diferențe finite. Toate acestea și calculatoarele electronice puternice au

oferit o modalitate practică de a efectua calcule complexe necesare pentru a prezice

schimbările meteorologice [18].

Odată cu dezvoltarea inteligenței artificiale și a învățării automate, este natural să

cercetăm posibilitatea construirii unor programe pe calculator care nu au algoritmi

predefiniți pentru a genera predicții, ci învață din datele disponibile și își adaptează

modelul în concordanță cu noile exemple de date procesate.

Este adevărat cu specialiștii de domeniu încă nu au descoperit modalități de a face

calculatoarele să învețe la fel de bine cum o fac oamenii. Cu toate acestea, există algoritmi

inventați relativ recent care sunt eficienți pentru anumite tipuri de probleme de învățare și o

înțelegere teoretică a conceptului de învățare a inceput să se formeze. În ultimii ani, au fost

28

Page 29: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

dezvoltate numeroase programe de calculator care demonstrează tehnici eficiente de

învățare și au aparut diverse aplicații comerciale care pun în practica aceste concepte și

care au fost folosite cu succes [3].

4.2.2. Motivație

Daca ne uităm la problema previzionării vremii ca la o încercare de a identifica

relații între date și de a le folosi pentru a face predicții, atunci o putem vedea ca o problemă

de analiză a unei serii de timp, pentru că încercăm să construim un model care să prezică

valori din viitor, bazându-ne pe valorile observate anterior. Și este cunoscut faptul că

tehnicile de învățare automată sunt potrivite pentru a studia serii de timp [19].

Așadar, scopul nostru este de a implementa și a testa programe care să folosească

învățarea automată, și anume: rețele neuronale, programarea genetică și mașini cu suport

vectorial pentru a prezice vremea. Programele vor procesa un set de date cu valori din

trecut pentru indicatori meteorologici, pentru o anumită locație, cu scopul de a antrena un

model care să fie capabil să genereze estimări destul de bune pentru valorile viitoare ale

indicatorilor doriți.

Mai exact, în acest studiu de caz, ne propunem să studiem posibilitatea

previzionării temperaturii medii pentru o zi următoare, folosind ca date de intrare pentru

model valorile unor indicatori meteorologici din zilele precedente. Indicatorii care vor fi

considerați sunt: temperatura medie, temperatura maximă, temperatura minimă, punctul de

rouă, viteza vântului și cantitatea de precipitații.

4.3. Abordări inrudite

Ideea folosirii tehnicilor de învățare automată pentru a prezice vremea a fost

studiată în diverse lucrări în ultimii ani. În continuare, vom prezenta câteva din aceste

lucrări.

Y. Radhika și M. Shashi prezintă în [11] o aplicație a mașinilor cu suport vectorial

pentru a prezice temperatura maximă pentru ziua următoare, folosind ca date de intrare

temperaturile maxime zilnice pentru ultimele n zile, unde n variază între 2 și 10.

29

Page 30: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Algoritmul SVM a fost antrenat cu metoda de regresie neliniară cu suport vectorial.

Cand a fost selectată o funcție kernel pentru SVM, s-a observat [11] ca între funcțiile

polinomiale și radial basis function (RBF), funcția RBF dă rezultate mai bune pentru

același set de date și de aceea a fost aleasă pentru experimentele efectuate. În

experimentele descrise în lucrare, a mai folosită un rețea neuronală de tip multi-layer

perceptron (MLP), bazată pe algoritmul propagării înapoi, pentru a compara rezultatele cu

cele obținute de SVM.

Rezultatele obținute de tehnicile de învățare automată din fiecare experiment au

fost măsurate cu formula mean squared error (MSE).

Zile precedente 2 3 5 7 10

SVM 7.56 7.52 7.15 7.092 7.07

MLP 8.21 8.95 8.07 9.19 10.26*Valorile temperaturilor sunt în Celsius

Figura 2. Erorile obținute în [11].

După cum se poate vedea din tabelul 1, algoritmul SVM a dat rezultate puțin mai

bune decat rețeaua neuronală.

În lucrarea [20], scrisă de K. Sreelakshmi și P. Ramakanthkumar, este descris un

model bazat pe o rețea neuronală implementată cu algoritmul de propagare înapoi, care

este folosit pentru a prezice viteza vântului pe termen scurt, folosind valori ale altor

variabile meteorologice ca și date de intrare.

Variabilele folosite în experimente sunt: presiunea atmosferica, umiditatea și

cantitatea de precipitații. Experimentele au arătat ca viteze vântului previzionată de model

era diferită de valorile actuale cu o diferență maximă de 5%.

Un alt articol care studiază problema prognozării vremii folosind tehnici de

învățare automată este [21], scrisă de Aditya Polumetla. Unul din experimentele descrise în

lucrare constă în prezicerea temperaturii pentru anumite locatii, folosind diverse tehnici de

învățare, cum ar fi: regresie liniară (LR), multi-layer perceptron (MLP), rețele RBF,

LeastMedSquare (LMS), M5P și Regula conjunctivă (CR).

30

Page 31: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Rezultatele au fost măsurate cu formula mean absolute error (MAE). Erorile

obținute pentru LR, LMS, M5P și MLP au fost între 10 și 20 Fahrenheit, iar pentru RBF și

CR eroarea a fost între 100 și 120 Fahrenheit.

În lucrarea [21], în afară de studierea problemei de previziune a vremii ca o

problemă de regresie, aceasta a fost studiată și ca o problemă de clasificare. Valorile

temperaturilor au fost grupate în 9 clase, în dependență de numărul de deviații standard ale

valorii de la medie. Valorile de intrare erau temperaturile pentru ultime 3 ore, iar ieșirea

constă în clasa estimată pentru temperatura din ora următoare.

Metodele folosite pentru a crea modelele de clasificare au fost: arbori de decizie

J48 și metoda Naïve Bayes. În urma rezultatelor obținute, s-a arătat ca arborii de decizie

J48 au clasificat corect 93.6% din instanțele din setul de date, iar metoda Naïve Bayes a

avut o performanța de doar 32.33%.

Smith et al. la fel investighează în [22] folosirea rețelelor neuronale artificiale

pentru problema previzionarii vremii. Valorile folosite ca date de intrare în model

includeau cinci variabile: temperatura, umiditatea relativa, viteza vantului, radiația solară și

cantitatea de precipitații. În plus față de valorile curente ale fiecărei instanțe observate, au

fost incluse pentru antrenament și valorile indicatorilor din exemplele anterioare, la

intervale de o oră distanță.

Rețelele neuronale folosite în experimente au fost antrenate cu algoritmul de

propagare înapoi a erorii. Pentru toate modelele, rata de învățare a fost aleasă 0.1, iar

ponderile inițiale ale legăturilor dintre neuroni au fost alese între -0.1 și 0.1.

Valorile mean absolute error (MAE) pentru toate modelele folosite în experimente

au fost între 1.50C and 20C. Cea mai perfomantă rețea a fost antrenată cu peste 50 000 de

instanțe și a avut o eroare MAE de 1.510 C.

4.4. Metodologie

Această secțiune prezintă abordările folosite în acest studiu de caz pentru problema

previzionării vremii. Sunt menționate valorile alese pentru parametrii modelelor de

învățare automată folosite. De asemenea, este descris setul de date și preprocesările

efectuate asupra acestuia înaintea folosirii lui pentru antrenament. Este prezentat și modul

în care s-au facut antrenamentul și testarea modelelor.

31

Page 32: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

4.4.1. Proiectarea modelelor

4.4.1.1. Rețele neuronale

Rețelele neuronale folosite în experimentele efectuate sunt de tip feed-forward cu

propagarea înapoi (backpropagation). Acestea au fost configurate cu trei straturi. Primul

strat constă din neuronii de intrare, iar numărul acestora depinde de valorile de intrare

furnizate modelului. Al doilea strat este cel ascuns, care are de la 8 până la 20 neuroni, în

functie de experimentul efectuat. Ultimul strat este stratul de ieșire și are un singur neuron,

pentru că modelul trebuie să întoarcă doar valoarea estimată pentru temperatura medie din

ziua următoare.

Funcția de activare folosită pentru fiecare neuron din stratul ascuns este funcția

sigmoid:

4.4.1.2. Programare genetică

Fiecare algoritm de programare genetică are un set de parametri ale căror valori

trebuie precizate la început. În experimentele noastre, modelele bazate pe programare

genetică au următoarele valori pentru parametrii de bază:

Marimea populatiei: 30-100 (depinde de experiment).

Metoda de selectie pentru noi indivizi: elite.

Setul de funcții primitive folosite pentru a forma arborii de expresiii: (+, -, *, /,

sin, cos, ln, exp, sqrt).

Rata de încrucișare: 0.75.

Rata de mutație: 0.1.

Adâncimea maximă a arborelui de expresie: 10.

4.4.1.3. Mașini cu suport vectorial

În cazul experimentelor în care s-au folosit mașini cu suport vectorial, algoritmii au

avut următorii parametri:

32

Page 33: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Tipul tehnicii: ε-SVR. În cazul acestei tehnici, scopul este de a găsi o funcție

care are o deviație de cel mult ε de la valorile reale petru toate instanțele de

antrenament.

Funcția kernel: Radial basis function (RBF):

Parametrul : 1.

Parametrul ε: Între 10-5 și 10-4 (depinde de experiment).

4.4.2. Setul de date și preprocesare

Setul de date folosit în experimente constă din valorile zilnice pentru cei mai

importanți indicatori meteorologici pentru regiunea Cluj-Napoca, România, din anul 1952

până în 2011 [23]. Indicatorii folosiți sunt: temperatura medie, temperatura maximă,

temperatura minimă, punctul de rouă, viteza vântului și cantitatea de precipitații. S-a

considerat ca variabilă de intrare pentru fiecare exemplu de date și indicele zilei în an.

Valorile temperaturilor și a punctului de rouă sunt exprimate în Fahrenheit și variază în

intervalul [-30, +90]. Cantitatea de precipitații este dată în inci și variază între 0.0 și 2.0.

Viteza vântului este masurată în noduri și variază în intervalul [0.0, 20.0]. Pentru un

exemplu de date unde o valoare lipsește, se ia valoarea precedentă pentru acea variabilă.

În cazul experimentelor cu rețele neuronale și mașini cu suport vectorial, toate

valorile de intrare sunt scalate la intervalul [0, 1], în funcție de valorile minime și maxime

pe care le pot lua variabilele. Iar valorile de ieșire sunt scalate înapoi la intervalul original.

S-a studiat și corelația dintre variabile. S-a calculat coeficientul de corelație

Spearman, în loc de coeficientul Pearson, pentru ca ar putea fi relații între variabile care să

nu fie neaparat liniare. Coeficientul lui Spearman se calculează astfel:

Fie că avem variabilele X și Y cu valorile Xi și Yi. Valorile sunt ordonate

crescător și sunt convertite în rangurile xi și yi.

Se calculează coeficientul de corelație astfel:

33

Page 34: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Dacă valorile Xi și Yi sunt toate diferite și avem n valori pentru fiecare variabilă,

atunci se poate aplica formula:

S-a obținut următorul tabel cu coeficienți de corelație:

Figura 3. Tabelul cu coeficienții de corelație dintre variabile

Se observă că variabilele care sunt mai bine corelate cu temperatura medie sunt:

temperatura maximă, temperatura minimă și punctul de rouă.

4.4.3. Antrenament și testare

Inițial, setul de date este împărțit în 2 părți: setul de antrenament și setul de testare.

Setul de antrenament conține 98% din exemplele de date, iar cel de testare restul de 2% din

exemple.

În cadrul antrenamentului, evaluarea modelelor se face prin metoda k-fold cross-

validation, unde k=4. Mai exact, setul de antrenament se împarte în 4 părți. Se face

antrenamentul de 4 ori, de fiecare dată excluzându-se din exemplele de antrenament una

din cele 4 părți. După fiecare antrenament, exemplele care nu au participat la

34

Page 35: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

antrenamentul propriu-zis sunt folosite pentru a evalua modelul. Se obțin astfel 4 valori

diferite pentru eroare. Se calculează media acestor valori și deviația standard.

Eroarea modelului la fiecare validare se calculează folosind formula mean squared

error (MSE):

În formula de mai sus, E reprezintă eroarea, n – numărul de exemple de test, yi –

valoarea așteptată pentru testul i, și ypi – valoarea estimată pentru testul i.

4.5. Experimente și rezultate

Această secțiune descrie experimentele efectuate pentru a evalua metodele alese și

rezultatele obținute de modele. Se va prezenta și cum rulează modelele cele mai bune de la

fiecare tip de experiment pe date reale. Se va realiza și o analiză comparativă a rezultatelor

obținute.

4.5.1. Experimente

Majoritatea metodelor de învățare automată utilizează coeficienți și parametri care

nu au legătură cu domeniul problemei și ale căror valori nu pot fi stabilite de la bun început

într-un mod simplu. De aceea, acești parametri ar trebui să se poată seta din aplicație, astfel

încât să se poată efectua mai multe teste pentru valori diferite ale parametrilor și să se

ajungă la o configurație optimă a acestora. Pentru fiecare experiment se vor indica valorile

care au fost alese pentru parametrii respectivi.

În primul tip de experimente s-a folosit doar temperatura medie din ultimele n zile

ca date de intrare, unde n s-a luat 1, 2 și 3. Parametrii metodelor au fost alesi astfel:

Rețele neuronale:

o Numărul de neuroni pe stratul ascuns: 4.

o Rata de învățare: 0.1.

35

Page 36: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

o Numărul de epoci: 1000.

Programare genetică:

o Mărimea populației: 40.

o Numărul de generații: 40.

Mașini cu suport vectorial:

o Funcția kernel: RBF.

o Parametrul ε: 10-5.

S-au obținut rezultatele următoare, exprimate în erori de tip MSE:

n

(zile)Metoda Media Deviația standard

1 Rețele neuronale 28.05 1.91

1 Programare genetică 19.18 2.48

1 SVM 21.01 2.15

2 Rețele neuronale 31.40 2.38

2 Programare genetică 19.21 2.52

2 SVM 21.08 2.09

3 Rețele neuronale 34.62 2.46

3 Programare genetică 19.18 2.48

3 SVM 19.85 1.98

Figura 4. Tabelul cu erorile obținute în primul grup de experimente

Rezultatele obținute în urma rulării modelului bazat pe SVM, pentru primul grup de

experimente, cu n=2, pentru datele de test, sunt următoarele:

36

Page 37: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Figura 5. Rezultatele testării modelului SVM, obținut în primul grup de experimente, cu n=2

În al doilea tip de experimente s-au folosit ca date de intrare: temperatura medie,

temperatura maximă și temperatura minimă din ultimele n zile, unde n s-a luat 1 și 2.

Parametrii metodelor au fost aleși astfel:

Rețele neuronale:

o Numărul de neuroni pe stratul ascuns: 7.

o Rata de învățare: 0.1.

o Numărul de epoci: 500.

Programare genetică:

o Mărimea populației: 40.

o Numărul de generații: 60.

Mașini cu suport vectorial:

o Funcția kernel: RBF.

o Parametrul ε: 10-5.

S-au obținut rezultatele următoare, exprimate în erori de tip MSE:

37

Page 38: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

n

(zile)Metoda Media Deviația standard

1 Rețele neuronale 34.52 2.43

1 Programare genetică 19.20 2.52

1 SVM 21.25 1.77

2 Rețele neuronale 38.40 3.06

2 Programare genetică 19.21 2.50

2 SVM 20.88 1.75

Figura 6. Tabelul cu erorile obținute în al doilea grup de experimente

Rezultatele obținute în urma rulării modelului bazat pe SVM, pentru al doilea grup

de experimente, cu n=2, pentru datele de test, sunt următoarele:

Figura 7. Rezultatele testării modelului SVM obținut în al doilea grup de experimente, pentru n=2

38

Page 39: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

În al treilea tip de experimente s-au folosit ca date de intrare: temperatura medie,

temperatura maximă, temperatura minimă, punctul de rouă, viteza vântului, cantitatea de

precipitații și indicele zilei în an pentru ultimele n zile ca date de intrare, unde n s-a luat 1

și 2. Parametrii metodelor au fost aleși astfel:

Rețele neuronale:

o Numărul de neuroni pe stratul ascuns: 10.

o Rata de învățare: 0.07.

o Numărul de epoci: 400.

Programare genetică:

o Marimea populației: 50.

o Numărul de generații: 60.

Mașini cu suport vectorial:

o Funcția kernel: RBF.

o Parametrul ε: 10-5.

S-au obținut rezultatele următoare, exprimate în erori de tip MSE:

n

(zile)Metoda Media Deviația standard

1 Rețele neuronale 18.72 1.80

1 Programare genetică 19.18 2.47

1 SVM 17.91 1.69

2 Rețele neuronale 20.73 2.15

2 Programare genetică 19.20 2.52

2 SVM 18.21 2.32

Figura 8. Tabelul cu erorile obținute în al treilea grup de experimente

Rezultatele obținute în urma rulării modelului bazat pe rețele neuronale, pentru al

treilea grup de experimente, cu n=1, pentru datele de test, sunt următoarele:

39

Page 40: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Figura 9. Rezultatele testării rețelei neuronale construita la al treilea grup de experimente, pentru n=1

Intervalele de erori pentru toate experimentele sunt prezentate în Figura I.

Figura 10. Intervalele de erori pentru toate experimentele

40

Page 41: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

4.5.2. Analiză comparativă

Primul tip de experimente (Date de intrare: temperatura medie)

În primul grup de experimente, modelele bazate pe programare genetică și mașini

cu suport vectorial au obținut rezultate apropiate între ele și mai bune decât cele bazate pe

rețele neuronale. Intervalele de încredere 19.18 ± 2.48 și 21.01 ± 2.15, 19.21 ± 2.52 și

21.01 ± 2.15, respectiv 19.18 ± 2.48 și 19.85 ± 1.98 se intersectează. Deci nu se poate

spune care din cele 2 tehnici, programare genetică sau SVM, dă rezultate mai bune.

Al doilea tip de experimente (Date de intrare: temperatura medie, temperatura

minimă, temperatura maximă)

În al doilea grup de experimente, situatia e similară cu cea din primul grup.

Programarea genetică și SVM dau rezultate mai bune dect rețelele neuronale. Deși

programarea genetică ar părea să aibă o eroare puțin mai mică decât SVM, intervalele de

încredere 19.20 ± 2.52 și 21.25 ± 1.77, respectiv 19.21 ± 2.50 și 20.88 ± 1.75 se

intersectează. Deci nu se poate spune care din cele doua metode are eroarea mai mica.

Al treilea tip de experimente (Date de intrare: temperatura medie, temperatura

minimă, temperatura maximă, punctul de rouă, viteza vântului, cantiatea de

precipitații, indicele zilei în an)

În al treilea grup de experimente, modelele bazate pe rețele neuronale dau rezultate

surprinzator de bune, în comparație cu rezultatele obținute la experimentele precedente.

Media erorilor este cea mai mică în cazul experimentelor cu mașini cu suport vectorial, dar

toate intervalele de încredere: 18.72 ± 1.80, 19.18 ± 2.47, 17.91 ± 1.69, 20.73 ± 2.15, 19.20

± 2.52, 18.21 ± 2.32 se intersecteaza între ele două câte două. Astfel, în acest caz avem că

toate cele trei tehnici dau rezultate similare.

4.6. Discuții

Această secțiune are scopul de a analiza metodologia aplicată în studiul efectuat și

de a compara rezultatele obținute cu cele descrise în alte lucrări similare.

41

Page 42: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

4.6.1. Analiză

Având în vedere toate experimentele efectuate pentru acest studiu, nu putem

deduce care ar fi setul optim de parametri care ar trebui folosit ca date de intrare pentru un

model care să prezică temperatura atmosferică pentru perioada imediat următoare. Chiar

dacă s-au calculat coeficienții de corelație între variabile, s-a observat ca dacă se includ și

parametri care nu par corelați cu variabila de ieșire, rezultatele nu sunt mai rele, ci în

anumite cazuri s-au obținut rezultate mai bune. O explicatie ar fi faptul ca coeficientii de

corelatie calculați sunt de tip Spearman și doar exprimă daca există o relatie de monotonie

între variabile. În cazul nostru, ar putea exista o relatie mai complicată între doua variabile

care nu este surprinsa de coeficientul de corelatie calculat.

S-ar parea că cele mai bune rezultate sunt date de modelele bazate pe programare

genetică. Însă, problema cu programarea genetică este ca expresiile simple care au o

valoare de fitness destul de bună iau locul expresiilor mai complicate în populație. Si din

cauza aceasta e greu pentru algoritm să formeze o expresie mai complexă, în care să apară

mai multe date de intrare și care să dea rezultate mai bune decat expresiile simple.

Modelele bazate pe SVM obțin rezultate bune în toate experimentele și se

antrenează repede. Dacă sunt alese valori mai potrivite pentru parametrii algoritmului, s-ar

putea obține erori și mai mici decat cele obținute la experimentele efectuate.

În cazul rețelelor neuronale, acestea se antrenează greu și probabil din cauza

aceasta nu au ajuns la erori mici în cazul primelor două tipuri de experimente. Este

surprinzător faptul ca au dat erori mai mici în experimentele din al treilea grup. În cazul

rețelelor neuronale, alegerea valorilor potrivite pentru parametri, cum ar fi numărul de

neuroni pe stratul ascuns și rata de învățare, este foarte importantă. Si probabil pentru

primele două grupuri de experimente există un set de valori mai optim pentru parametri,

care să dea rezultate similare celor obținute în al treilea grup de experimente.

4.6.2. Comparații cu lucrări anterioare

Comparând rezultatele obținute în experimentele efectuate în acest studiu cu

rezultatele din [11], putem observa că erorile în cazul nostru sunt puțin mai mari decât

erorile descrise în lucrarea respectivă. Acest lucru poate fi explicat de faptul cî teritoriul

analizat în cazul nostru, orașul Cluj-Napoca, este mult mai mare decât teritoriul

42

Page 43: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Universității Cambridge, studiat în [11]. O altă differență importantă este că noi studiem

previziunea temperaturii medii, pe când [11] studiază previziunea temperaturii maxime

pentru următoarea zi.

În lucrarea [21], valorile MAE obținute pentru LR, LMS, M5P și MLP sunt între 10

și 20 Fahrenheit. Aceste valori sunt mai bune decat o eroare MSE între 16 și 20, obținute în

experimentele noastre. Dar diferenta este că în [21] este previzionată temperatura pentru

următoarea oră pentru teritorii mici, pe când în cazul nostru este studiată temperatura

medie pentru următoarea zi pentru un oraș întreg.

Erorile medii absolute (MAE) ale tuturor modelelor folosite în experimentele din

lucrarea [22] au fost între 1.50C and 20C. Aceste valori sunt comparabile cu o valoare MSE

de 16-20 pentru Fahrenheit, dar sunt puțin mai bune, pentru că experimentele din [22] au

fost efectuate pentru valori medii ale temperaturii la intervale de o oră.

4.7. Concluzii

În acest studiu am investigat folosirea a trei tehnici de învățare automată: rețele

neuronale artificiale, programare genetica și mașini cu suport vectorial, pentru problema

previzionarii temperaturii atmosferice. Au fos oferite evaluari experimentale, precum și o

analiza comparativă a rezultatelor.

O modalitate prin care se poate îmbunătăți studiul prezicerii temperaturii folosind

tehnici de învățare automată este să fie considerat un teritoriu mai mic, pentru ca relațiile

dintre variabile vor fi mult mai ușor de identificat pentru algoritmi.

Un alt mod de a obține rezultate mai bune este de a studia seturi de date cu instanțe

care să conțină valori pentru intervale mai mici de timp. De exemplu, se pot studia

intervale de o oră, în locul intervalelor de o zi, și se poate încerca previziunea temperaturii

pentru următoarea oră. Astfel, am putea obține o eroare mai mică.

O direcție de continuare a studiului ar fi folosirea acelorați tehnici de învățare

automată pentru prezicerea altor indicatori atmosferici, cum ar fi: viteza vântului, nivelul

de precipitații, temperatura apei și presiunea atmosferică.

43

Page 44: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

O altă direcție pentru cercetare ar fi studierea altor tehnici de învățare și aplicarea

lor pentru aceeași problemă. Alte tehnici care ar putea fi folosite sunt: locally-weighted

regression, rețele RBF s.a.

44

Page 45: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Capitolul 5. Aplicație practică: Analiza seriilor de timp prin

tehnici de învățare automată

În acest capitol, se va descrie o aplicație realizată cu scopul de a studia

aplicabilitatea tehnicilor de învățare automată în problema analizei seriilor de timp. Se vor

descrie toate etapele de realizare a aplicației, caracteristice dezvoltării oricărui proiect

software.

5.1. Enunțul și specificarea problemei

Se dorește realizarea unei aplicații care să ofere instrumentele necesare pentru a

experimenta tehnici de învățare automată asupra previzionării seriilor de timp. Aplicația

trebuie să includă următoarele funcționalități:

Încărcarea unui set de date ce reprezintă o serie de timp dintr-un fișier ales de

utilizator. Setul de date este compus dintr-o mulțime de exemple de date care conțin

valori pentru un set fixat de variabile. Setul de date și variabilele sunt descrise în

fișier. Pentru fiecare variabilă trebuie să fie indicate: numele variabilei, valoarea

minimă, valoarea maximă.

Generarea tabelului cu coeficienții de corelație Spearman între variabilele din setul

de date încărcat.

Setarea variabilelor de intrare și a variabilei de ieșire pentru modelul predcitv dorit

din mulțimea de variabile descrise în setul de date. De asemenea, trebuie permisă și

setarea numărului de instanțe precendente care vor fi folosite ca date de intrare.

Implementarea următoarelor tehnici de învățare automată pentru antrenament și

testare pe setul de date încărcat: rețele neuronale artificiale de tip feed-forward with

backpropagation, programare genetică și mașini cu suport vectorial de tip ε-SVR.

Setarea tehnicii dorite pentru model și setarea parametrilor de bază pentru

algoritmii de învățare. Mai exact:

o Rețele neuronale:

Numărul de neuroni pe stratul ascuns

45

Page 46: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Rata de învățare

Numărul de epoci pentru antrenament

o Programare genetică

Mărimea populației

Rata de încrucișare

Rata de mutație

Numărul de generații

o Mașini cu suport vectorial

Funcția kernel

Parametrul epsilon

Setarea numărului de subseturi în care se va împărți setul de date de antrenament

pentru k-fold cross-validation.

Antrenarea modelului cu tehnica selectată și întoarcerea mediei și deviației standard

pentru erorile obținute.

Testarea modelului cu datele de test și generarea unui grafic care să prezinte

valorile reale și valorile estimate de model.

Salvarea erorilor obținute la antrenament și a valorilor obținute la testare într-un

fișier ales de utilizator.

5.2. Analiza problemei

Pentru a avea o imagine mai clară asupra funcționalităților cerute în specificare

vom crea tabelul de evenimente pentru aplicație. Acesta arată în felul următor:

Subiect Verb Obiect Frecvență

Utilizator încarcă set de date o dată pe rulare

Utilizator generează tabel de corelație o dată pe rulare

Utilizator setează parametrii generali 4-10 ori pe rulare

Utilizator setează parametrii tehnicii 4-10 ori pe rulare

46

Page 47: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

alese

Utilizator antrenează modelul selectat 4-10 ori pe rulare

Utilizator testează modelul obținut 4-10 ori pe rulare

Utilizator salvează rezultatele 4-10 ori pe rulare

Figura 11. Tabelul de evenimente

Identificând evenimentele din specificarea problemei și având tabelul de

evenimente, putem vedea mai clar cazurile de utilizare care trebuie să apară în aplicație. În

continuare, vom prezenta diagrama de cazuri de utilizare dedusă din specificarea

problemei.

Figura 12. Diagrama cazurilor de utilizare

47

Page 48: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

5.3. Proiectare

În această secțiune se va descrie modul în care a fost gândită aplicația și deciziile

de proiectare luate pentru a asigura o implementare cât mai ușoară a funcționalităților din

specificație. Aplicația va fi proiectată în ideea programării orientate pe obiecte.

5.3.1. Modelul de date

Având în vedere faptul că aplicația trebuie să proceseze orice set de date care

respectă condițiile din specificație, avem nevoie de un pachet de clase care să reprezinte

concepte cât mai abstracte, astfel încât să modeleze orice set de date valid.

Avem următoarele clase:

Variable – reprezintă o variabilă din setul de date. Conține următoarele

informații: numele variabilei, id, valoarea minimă și valoarea maximă a

acesteia.

Value – reprezintă o valoare a unei variabile într-un exemplu de date.

DataSample – reprezintă un exemplu de date din cadrul unui set de date.

Conține câte o valoare pentru fiecare variabilă din set.

DataSet – reprezintă un set de date. Conține un nume, o descriere a setului

de date, o listă de obiecte de tip Variable și o listă de obiecte de tip

DataSample.

Problem – reprezintă o problemă de învățare asupra unui set de date. Are ca

atribute: setul de date, un set de variabile care vor fi date de intrare, o

variabilă care va fi dată de ieșire, numărul de exemple precedente care

trebuie luate în considerare pentru datele de intrare în model, numărul de

subseturi în care se împart datele de antrenament pentru cross-validation și

indicele subsetului care nu va participa la antrenament.

LearningModel – interfață care declară metodele pe care ar trebui să le

definească o clasă care implementeaƶă o tehnică de învățare pentru a fi

folosită în aplicatie.

AbstractLearningModel – clasă abstractă care implementează o parte din

metodele declarate de interfața LearninModel, care sunt comune pentru

toate modelele implementate în aplicație.

48

Page 49: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Diagrama claselor din model este următoarea:

Figura 13. Diagrama claselor din modelul de date

Fișierul cu setul de date trebuie să fie într-un format ușor de citit de către o

aplicație. S-a decis asupra formatului XML. Schema XSD a unui fisier XML care conține

un set de date este următoarea:

49

Page 50: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.scs.ubbcluj.ro/~gmir0757/DataSetSchema"

xmlns:tns="http://www.scs.ubbcluj.ro/~gmir0757/DataSetSchema"

elementFormDefault="qualified"> <xs:element name="dataset"> <xs:complexType> <xs:sequence> <xs:element name="name" /> <xs:element name="description" /> <xs:element name="variables"> <xs:complexType> <xs:sequence> <xs:element name="variable" minOccurs="1" maxOccurs="10"> <xs:complexType> <xs:attribute name="id" type="xs:string" /> <xs:attribute name="name" type="xs:string" /> <xs:attribute name="minValue" type="xs:double" /> <xs:attribute name="maxValue" type="xs:double" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="samples"> <xs:complexType> <xs:sequence> <xs:element name="sample" minOccurs="1" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="value" minOccurs="1" maxOccurs="10"> <xs:complexType> <xs:attribute name="varId" type="xs:string" /> <xs:attribute name="val" type="xs:double" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>

50

Page 51: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

</xs:element></xs:schema>

Un exemplu de fișier care descrie un set de date ar fi următorul:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><dataset> <name>Daily weather indicators for Cluj-Napoca.</name> <description>Daily values for the most important weather indicators for Cluj-Napoca, from 1952 to 2011.</description> <variables> <variable id="1" maxValue="366" minValue="1" name="Day index"/> <variable id="2" maxValue="90" minValue="-30" name="Mean temperature"/> <variable id="3" maxValue="90" minValue="-30" name="Minimum temperature"/> <variable id="4" maxValue="90" minValue="-30" name="Maximum temperature"/> <variable id="5" maxValue="90" minValue="-30" name="Dew point"/> <variable id="6" maxValue="20.0" minValue="0.0" name="Wind speed"/> <variable id="7" maxValue="2.0" minValue="0.0" name="Precipitation level"/> </variables>

<samples> <sample> <value val="2" varId="1"/> <value val="31.0" varId="2"/> <value val="27.0" varId="3"/> <value val="36.0" varId="4"/> <value val="30.0" varId="5"/> <value val="0.0" varId="6"/> <value val="0.0" varId="7"/> </sample> <sample> <value val="3" varId="1"/> <value val="30.5" varId="2"/> <value val="28.0" varId="3"/> <value val="34.0" varId="4"/> <value val="24.8" varId="5"/> <value val="16.2" varId="6"/> <value val="0.05" varId="7"/> </sample>

... </samples></dataset>

51

Page 52: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

5.3.2. Tehnicile de învățare

Aplicația trebuie să implementeze trei tehnici de învățare: rețele neuronale de tip

feed-forward with backpropagation, programare genetică și mașini cu suport vectorial de

tip ε-SVR. Și luând în considerare parametrii care se cer a fi configurabili din aplicație,

avem următoarea ierarhie de clase:

Figura 14. Diagrama claselor care implementează tehnicile de învățare

5.4. Implementare

În această secțiune se vor prezenta detaliile de implementare ale aplicației. Se vor

menționa limbajul de programare ales, tipul aplicației și bibliotecile folosite. Se va descrie

cum a fost implementată interfața cu utilizatorul și se vor prezenta câteva secvențe de cod

relevante din aplicație.

52

Page 53: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

5.4.1. Limbajul și bibliotecile folosite

Limbajul de programare în care a fost dezvoltată aplicatia este Java. Aplicația este

de tip desktop, cu o interfață utilizator dezvoltată cu ajutorul framework-ului Swing, din

pachetele standard Java.

Pentru implementarea metodelor de învățare automată, au fost folosite următoarele

biblioteci:

Neuroph 2.6 pentru rețele neuronale [24].

JGAP (Java Genetic Algorithms Package) 3.6.2 pentru programare genetică

[25].

LibSVM 3.11 pentru mașini cu suport vectorial [26].

Pentru generarea de grafice pentru a arăta diferența dintre valorile reale și cele

estimate în cazul testării unui model s-a folosit biblioteca JFreeChart 1.0.14 [27].

5.4.2. Implementarea interfeței cu utilizatorul

Interfața cu utilizatorul este formată din ferestre, butoane, meniuri și alte

componente standard pentru o aplicație desktop. Clasele care descriu interfața cu

utilizatorul sunt următoarele:

MainWindow – definește fereastra principală din aplicație. În cadrul acesteia

sunt definite functionalitățile de bază și componentele care apar în cadrul

ferestrei.

SettingsFrame – definește fereastra de setare a parametrilor. Aceată

fereastră este facută vizibilă atunci când utilizatorul alege să seteze

parametrii din cadrul ferestrei principale.

CorrelationFrame – definește fereastra în care este prezentat tabelul cu

coeficienții de corelație. Această fereastră este facută vizibilă atunci când

utilizatorul alege să vadă coeficienții de corelație dintre variabile din cadrul

ferestrei principale, după încărcarea setului de date.

TrainingDialog – definește dialogul care apare atunci când are loc

antrenarea unui model. Acesta prezintă progresul la care s-a ajuns în

antrenare.

53

Page 54: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

TestResultsFrame – definește fereastra care prezintă graficul cu rezultatele

obținute în urma testării. Este făcută vizibilă atunci când utilizatorul alege

să testeze modelul din fereastra principală.

Diagrama care arată relațiile dintre clasele de interfață este următoarea:

Figura 15. Diagrama claselor care implementează interfața utilizator

54

Page 55: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

5.4.3. Secvențe de cod relevante

Codul clasei TrainingTask, interioară clasei MainWindow, care definește operația

de antrenament al unui model. Pentru fiecare subset creat pentru cross-validare, se

construiește modelul și se antrenează cu datele de antrenament care nu includ

subsetul de validare. Dupa fiecare antrenare se actualizează progresul

antrenamentului și se adaugă eroarea obținută în lista de erori.

private class TrainingTask extends Thread { @Override public void run() { for (int i = 0; i < problem.getNumValidationSets(); i++) {

if (trainingCanceled) { return; }

problem.setValidationSetIndex(i);

learningModel = constructSelectedModel(); learningModel.setProblem(problem); learningModel.initModel(); learningModel.train();

final double error =learningModel.getErrorForSet(problem.getValidationSamples()); final int iter = i + 1; System.out.println("Finishing iteration " + i + ", error: " + error); errorList.add(error);

EventQueue.invokeLater(new Runnable() { @Override public void run() { trainingDialog.getPbTraining().setValue(iter * 100 /

problem.getNumValidationSets()); trainingDialog.getPbTraining().invalidate();

if (iter == problem.getNumValidationSets()) { trainingDialog.getCancelButton().setEnabled(false); trainingDialog.getFinishButton().setEnabled(true); trainingDialog.getLblProgress().setText("Training done!"); } } });

55

Page 56: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

} }}

Codul metodei test() din cadrul clasei MainWindow. Prin această metodă se

testează modelul cu datele selectate ca fiind de test și se creează un obiect

TestResultsFrame în care se generează graficul cu valorile reale și valorile estimate.

public void test() { lblStatus.setText("Testing..."); List<DataSample> testSamples = problem.getTestSamples(); testResults = learningModel.testBatch(testSamples); testRealValues = new double[testResults.length];

int past = problem.getNumPastSamples(); int N = testSamples.size();

for (int i = past; i < N; i++) { Variable outputVar = problem.getOutputVariable(); testRealValues[i - past] =

testSamples.get(i).getValueForVariable(outputVar).getValue(); }

resultsFrame = new TestResultsFrame(problem.getOutputVariable().getName(), testRealValues, testResults);

resultsFrame.setVisible(true); mntmSaveResults.setEnabled(true);}

Codul metodei computeCorrelation() din clasa CorrelationFrame. Se calculează

coeficienții de corelație între variabile, în funcție de exemplele de date din setul de

date încărcat. Se salvează coeficienții în matricea correlationValues, care apoi este

folosită pentru a completa tabelul generat.

private void computeCorrelation() { int numVars = dataSet.getVariablesList().size(); int N = dataSet.getDataSamplesList().size(); ArrayList<ArrayList<Double>> valueLists = new ArrayList<ArrayList<Double>>(); ArrayList<ArrayList<Integer>> rankLists = new ArrayList<ArrayList<Integer>>();

56

Page 57: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

// Computing ranks for all values

for (int i = 0; i < numVars; i++) { valueLists.add(new ArrayList<Double>()); rankLists.add(new ArrayList<Integer>()); }

for (DataSample sample : dataSet.getDataSamplesList()) { for (int i = 0; i < numVars; i++) { valueLists.get(i).add(sample.getValues().get(i).getValue()); } }

for (int i = 0; i < numVars; i++) { Collections.sort(valueLists.get(i)); for (int j = 0; j < N; j++) { double value = dataSet.getDataSamplesList().get(j).getValues().get(i).getValue(); int position = Collections.binarySearch(valueLists.get(i), value); rankLists.get(i).add(position); } }

// Computing correlation for all pairs

long longN = N; correlationValues = new double[numVars][numVars];

for (int i = 0; i < numVars; i++) { correlationValues[i][i] = 1; for (int j = i + 1; j < numVars; j++) { double dSum = 0; for (int k = 0; k < N; k++) { long diff = rankLists.get(i).get(k) - rankLists.get(j).get(k); dSum += diff * diff; } correlationValues[i][j] = (double) (1 - ((6 * dSum) /

(double) (longN * (longN * longN - 1)))); correlationValues[j][i] = correlationValues[i][j]; } }}

Codul metodei test() din clasa NeuralNetworkModel. Metoda respectivă este folosită

pentru a testa modelul antrenat pe un singur caz de test. Metoda returnează valoarea

57

Page 58: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

estimată de model. Se observă ca datele de intrare sunt ajustate să fie în intervalul [0,

1], prin metoda getValueBetweenZeroAndOne() din clasa Value. Această metodă se

folosește de valorile minime și maxime ale variabilei pentru a ajusta valorile la

intervalul [0, 1]. Valoarea generată de rețeaua neuronală la fel este între 0 și 1. De

aceea, înainte să fie returnată valoarea, este ajustată inapoi la intervalul specific

variabilei de ieșire. Celelalte clase care implementează tehnici de învățare au o metodă

de test asemănătoare.

@Overridepublic double test(List<DataSample> inputSamples) {

int numInputs = problem.getInputVariables().size();

// Get the inputs int past = inputSamples.size(); double[] inputs = new double[past * numInputs]; int current = 0;

for (int j = 0; j < past; j++) { for (int k = 0; k < numInputs; k++) { Variable var = problem.getInputVariables().get(k); Value value = inputSamples.get(j).getValueForVariable(var); inputs[current++] = value.getValueBetweenZeroAndOne(); } }

// Use the network neuralNetwork.setInput(inputs); neuralNetwork.calculate(); double output = neuralNetwork.getOutput()[0]; double rangeLength = problem.getOutputVariable().getUpperBound() - problem.getOutputVariable().getLowerBound(); double adjustedOutput = output * rangeLength +

problem.getOutputVariable().getLowerBound(); return adjustedOutput;}

58

Page 59: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

5.5. Testare

Aplicația a fost testată cu setul de date și problema descrisă în studiul de caz din

Capitolul 4. A fost încărcat setul de date dorit, s-au configurat parametrii de intrare și de

ieșire pentru problema studiată și s-au făcut experimente cu tehnicile implementate în

aplicație pe setul de date respectiv, cu diverse valori pentru parametrii metodelor. Valorile

parametrilor și rezultatele obținute au fost prezentate în studiul de caz.

5.6. Manual de utilizare

În această secțiune vom prezenta instrucțiunile de utilizare a aplicatiei și vom

explica modul în care aplicația trebuie utilizată pentru a obține rezultatul dorit.

Primul pas care trebuie făcut dupa ce e pornita aplicația este încărcarea setului de

date din fișier. Aceasta se face navigând spre File Load data set.

Figura 16. Încărcarea setului de date

După aceasta, utilizatorul primește informațiile despre setul de date.

59

Page 60: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Figura 17. Fereastra principală, cu informații despre setul de date

Imediat după ce a fost încărcat setul de date, utilizatorul poate seta parametrii

pentru modelul ce urmează a fi antrenat. Utilizatorul poate să aleagă: variabilele de intrare,

variabila de ieșire, numărul de exemple precedente care să fie luate în considerare pentru

datele de intrare, metoda de învățare, numărul de subseturi pentru cross-validare și

parametrii specifici fiecărei metode în parte.

Figura 18. Setări generale

60

Page 61: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Figura 19. Setări pentru rețele neuronale

Figura 20. Setări pentru programare genetică

61

Page 62: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Figura 21. Setări pentru mașini cu suport vectorial

O altă acțiune pe care o poate face utilizatorul imediat după ce au fost încărcate

datele este vizualizarea tabelului de corelație. La alegerea acestei opțiuni, apare o fereastră

care conține un tabel. Acest tabel are numărul de coloane și numarul de linii egale cu

numărul de variabile și în fiecare celulă conține câte un coeficient de corelație între două

variabile.

Figura 22. Tabelul de corelație

După ce au fost setați parametrii doriți, utilizatorul poate apăsa butonul Train din

cadrul ferestrei principale pentru a antrena modelul. În acest caz, apare un dialog care

indică progresul antrenamentului.

62

Page 63: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Figura 23. Dialogul de antrenament

La sfârșitul antrenamentului, sunt afișate erorile obținute, precum și media și

deviația standard a acestora.

Figura 24. Dialogul cu rezultatele antrenamentului

Dupa antrenament, utilizatorul poate apăsa butonul Test din cadrul ferestrei

principale. Este testat modelul cu datele selectate ca fiind de test și este afișat un grafic cu

valorile reale și valorile estimate de model pentru variabila de ieșire.

63

Page 64: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Figura 25. Graficul cu rezultatele testării

Dupa ce s-a facut și testarea, utilizatorul poate alege să salveze rezultatele obținute.

Pentru aceasta, navighează spre File Save results și alege fisierul în care vor fi salvate

rezultatele antrenamentului și ale testării.

5.7. Extinderi posibile

Aplicația discutată poate fi extinsă în mai multe moduri. În această secțiune vom

prezenta câteva idei pentru extinderea funcționalităților acesteia.

Unul din lucrurile care pot fi modificate la aplicație este oferirea posibilității setarii

mai multor parametri specifici metodelor de învățare folosite. De exemplu, pentru rețele

neuronale se poate oferi posibilitatea setarii numarului de straturi ascunse și numarul de

neuroni pe fiecare strat, a valorii pentru momentum sau a funcției de activare. Pentru

programare genetică s-ar mai putea seta din aplicație: setul de funcții pentru construirea

arborilor de expresii, adâncimea maximă a unui arbore de expresie, setul de constante care

să fie incluse în construirea arborilor de expresii. Pentru mașini cu suport vectorial, s-ar

mai putea configura ca să se poată seta din aplicație: parametrul gamma în formula pentru

64

Page 65: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

funcția RBF și alți parametri pentru alte funcții kernel, cum ar fi gradul pentru funcția

polinomială.

Aplicația mai poate fi extinsă prin implementarea altor tehnici de învățare și

punerea lor în lista metodelor din care se poate alege pentru antrenament și testare. Două

din metodele care pot fi adăugate sunt: locally-weighted regression și rețele RBF.

O altă extindere posibilă ar fi oferirea posibilității generării unor tabele cu

coeficienți de corelație între variabile calculați după alte formule. În această aplicatie este

calculat coeficientul lui Spearman, dar se poate extinde să includă și optiunea calculării

coeficientului lui Pearson sau a coeficientului lui Kendall.

Aplicația a fost gândită astfel încât să se poată studia probleme de predicții în care

seturile de date au structura unei serii de timp. Dar modelul de date folosit în aplicație

poate fi extins fără mari dificultăți să includă și alte tipuri de probleme de predicție. Se

poate modifica codul astfel încât să poată fi studiate chiar și probleme de clasificare, nu

doar regresie. Pentru acest lucru, ar trebui ca pentru fiecare variabila să se indice mulțimea

valorilor posibile și aceasta să poată fi exprimată ca o enumerare de valori sau ca un

interval.

S-ar mai putea adăuga și posibilitatea generării și altor grafice pentru analiza

antrenamentului și testării. De exemplu, s-ar putea crea un grafic care să prezinte evoluția

erorii în timpul antrenamentului. Această functionalitate nu este posibila pentru toate

metodele, pentru ca nu toate bibliotecile folosite ofera posibilitatea asocierii unei acțiuni

evenimentului de terminare a unei iterații. Dar se pot căuta alte biblioteci care să nu aibă

acest impediment. Un alt grafic relevant ar fi cu valorile obținute de mai multe modele în

urma testării lor. Astfel, s-ar putea compara mai ușor rezultatele obținute de modele

diferite.

O altă extensie utilă ar fi oferirea posibilității automatizării antrenamentului și

testării pentru o serie de configurații. De exemplu, s-ar putea configura astfel încât să se

antreneze și să se testeze mai multe rețele neuronale care să aibă parametrii indicați în

aplicație, dar rata de învățare să varieze de la 0.05 la 0.15 cu pasul 0.01. Astfel, am putea

face mai ușor experimente care să ne indice ce valori trebuie să alegem pentru un anumit

parametru.asd

65

Page 66: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Concluzii

Inteligența artificială în general și învățarea automată în special sunt domenii de

cercetare relativ noi. S-au facut multe descoperiri în ultimele decenii și s-au construit

tehnici eficiente care au fost folosite în scopuri comerciale, cum ar fi: recunoașterea

vorbirii, recunoașterea scrisului de mână, controlul roboților. Unul din scopurile acestei

lucrări a fost să prezinte tematica învățării automate și să demonstreze utilitatea acestui

domeniu în probleme reale.

Dar există și numeroase probleme în care nu s-au exploatat îndeajuns algoritmii de

învățare automată existenți. Una din aceste probleme este previziunea vremii. Deși au fost

încercări de a utiliza învățarea automată pentru predicția indicatorilor meteorologici și se

fac tot mai multe cercetări în domeniu, această problemă rămâne un subiect important de

cercetare în continuare. Studiul de caz din această lucrare a avut scopul să demonstreze că

se pot aplica tehnici de învățare automată pentru problema respectivă. Algoritmii de

învățare folosesc date din trecut ca să construiască modele matematice care să fie capabile

să facă predicții meteorologice.

Proiectând o aplicație care să permită realizarea de experimente pentru a studia

problema previzionării vremii folosind tehnici de învățare automată, s-a observat că

aplicația poate fi construită fără prea mult efort în plus, astfel încât să permită și studierea

altor probleme de predicție. În rezultat, s-a creat o aplicație care poate fi folosită pentru

orice set de date care are caracterul unei serii de timp și care permite folosirea a trei tehnici

de învățare automată: rețele neuronale, programare genetică și mașini cu suport vectorial.

Aceste tehnici se pot folosi în aplicație pentru antrenarea și testarea modelelor care să

genereze predicții pentru variabilele din setul de date încărcat. Mergând pe aceeași idee,

aplicația poate fi extinsă ca să includă și posibilitatea studierii altori probleme de învățare,

cum s-a discutat și în secțiunea Extinderi posibile, din Capitolul 5.

66

Page 67: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

Bibliografie

[1] S. J. Russel, P. Norvig, Artificial Intelligence: A Modern Approach, Prentice

Hall, New Jersey, 1995, pp. 4-8, 567-570.

[2] D. Cristea, I. Pistol, Inteligența Artificială, Facultatea de Informatica, Univ. Al.

I. Cuza, Iași, 2011, pp. 5-10, 166-170.

[3] T. Mitchell, Machine Learning, McGraw-Hill, March 1997, pp.1, 81-96, 262-

266.

[4] T. Mitchell, Discipline of Machine Learning, Universitatea Carnegie Mellon,

Pittsburgh, 2006, pp. 1-3

[5] E. G. Learned-Miller, Supervised Learning and Bayesian Classification,

University of Massachusetts, Amherst, septembrie 2011

[6] S. B. Kotsiantis, Supervised Machine Learning: A Review of Classification

Techniques, Informatica 31, Universitatea din Peloponnese, Grecia, 2007, pp.

249-251

[7] Simon Haykin, Neural Networks: A Comprehensive Foundation, Pearson

Education, McMaster University, Ontario, Canada, 1999, pp. 12-13.

[8] C. Fyfe, Artificial Neural Networks, University of Paisley, Marea Britanie, 1996

pp. 37-39

[9] J. R. Koza et al., Genetic Programming IV: Routine Human-Competitive

Machine Intelligence, 2003, pp. 1-10

[10] J.R. Koza, What is genetic programming?, 2003, http://www.genetic-programming.com/gpanimatedtutorial.html

[11] Y. Radhika, M. Shashi, Atmospheric Temperature Prediction using Support

Vector Machines, International Journal of Computer Theory and Engineering,

Vol. 1, No. 1, aprilie 2009.

[12] A. Ben-Hur, J.Weston, A User’s Guide to Support Vector Machines, Colorado

State University, Colorado, NEC Labs America, Princeton, NJ, pp. 1-3

67

Page 68: UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA ...gabis/DocDiplome/ANN/Lucrare_Licenta.docx · Web viewUNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

[13] P. Kar, Support Vector Machines and their Applications, Indian Institute of

Technology Kanpur, 2009, pp. 56-70.

[14] W. W. Eckerson, Predictive Analytics, TDWI Best Practices Report, 2007, pp.

4-10.

[15] R. Weber, Time Series, Statistical Laboratory, University of Cambridge, pp.1-2

[16] S. Sayad, Model Evaluation - Regression, University of Toronto, 2010,

http://chem-eng.utoronto.ca/~datamining/dmc/model_evaluation_r.htm

[17] L. Alter, Meteorology, The Atmosphere and the Ocean, Vol. V, Yale-New

Haven Teachers Institue, New Haven, Connecticut, SUA, 1994

[18] P. Lynch, The origins of computer weather predictions and climate modelling,

Journal of Computational Physics 227, pp. 3431–3444, 2008

[19] U. Rebbapragada, Introduction to Machine Learning Research on Time Series,

Tufts University, ianuarie 2007.

[20] K. Sreelakshmi, P. Ramakanthkumar, Neural Networks for Short Term Wind

Speed Prediction, World Academy of Science, Engineering and Technology 42,

2008.

[21] A. Polumetla, Machine Learning Methods for the Detection of RWIS Sensor

Malfunctions, University of Minnesota, iulie 2006, pp. 71-79.

[22] B. A. Smith, R. W. McClendon, G. Hoogenboom, Improving Air Temperature

Prediction with Artificial Neural Networks, University of Georgia, martie 2006

[23] National Climatic Data Center, Global Surface Summary of Day Data, http://www.ncdc.noaa.gov/

[24] Biblioteca Neuroph, http://neuroph.sourceforge.net/

[25] Biblioteca JGAP, http://jgap.sourceforge.net/

[26] Biblioteca LibSVM, http://www.csie.ntu.edu.tw/~cjlin/libsvm/

[27] Biblioteca JFreeChart, http://www.jfree.org/jfreechart/

68