Sunteți pe pagina 1din 72

CUPRINS

INTRODUCERE.............................................................................................................................. 2
CAPITOLUL 1. CONCEPTE ŞI SOLUłII DE BUSINESS INTELLIGENCE ....................... 3
1.1 CONCEPTUL DE BUSINESS INTELLIGENCE ......................................................................3
1.2 EVOLUłIA ŞI DIRECłIILE VIITOARE DE DEZVOLTARE ....................................................4
1.3 NECESITATEA SOLUłIILOR DE TIP BUSINESS INTELLIGENCE ........................................7
1.4 OBIECTIVELE UNUI SISTEM DE BUSINESS INTELLIGENCE ..............................................8
1.5 DILEMA DATELOR ............................................................................................................9
1.6 CERINłELE BAZELOR DE DATE .....................................................................................10
1.7 ARHITECTURA UNUI SISTEM INFORMATIC PENTRU INTELIGENłA AFACERII ..............11
CAPITOLUL 2. TEHNOLOGII UTILIZATE LA REALIZAREA UNEI SOLUłII DE
BUSINESS INTELLIGENCE ...................................................................................................... 13
2.1. TEHNOLOGII SPECIFICE DOMENIULUI BUSINESS INTELLIGENCE ...............................13
2.1.1. DEPOZITE DE DATE....................................................................................................................13
2.1.2 TEHNOLOGIA ETI (Extragere, Transformare, Încărcare) .............................................................14
2.1.3 OLAP (Online Analytical Processing) ............................................................................................14
2.1.4 EXTRAGEREA DE DATE (Data Mining) .....................................................................................15
2.1.4.1 Procesul de extragere a cunoştinŃelor din baze de date ........................................................15
2.1.4.2 FuncŃii de extragere a cunoştinŃelor din baze de date...........................................................19
2.1.4.3 Tehnici de extragere a cunoştinŃelor din baze de date..........................................................23
2.2 TEHNOLOGII DE PROGRAMARE A ALGORITMILOR DE BUSINESS INTELLIGENCE .......28
2.2.1. MICROSOFT VISUAL STUDIO...................................................................................................28
2.2.2. DEVEXPRESS ...............................................................................................................................31
2.2.3 APLICAłII OPEN SOURCE ..........................................................................................................32
CAPITOLUL 3. PROPUNEREA ŞI REALIZAREA UNEI SOLUłII INFORMATICE DE
BUSINESS INTELLIGENCE ...................................................................................................... 33
3.1 DESCRIEREA CERINłELOR FUNCłIONALE ....................................................................33
3.2 ANALIZA SISTEMULUI INFORMATIC PROPUS ................................................................34
3.2.1 Nivelul cazurilor de utilizare............................................................................................................34
3.2.1.1 Identificarea actorilor ...........................................................................................................34
3.2.1.2 Identificarea şi prezentarea cazurilor de utilizare.................................................................35
3.2.2 Nivelul logic.....................................................................................................................................38
3.2.2.1 Diagramele de secvenŃă........................................................................................................38
3.2.2.2 Diagrama de colaborare .......................................................................................................40
3.2.3 Nivelul static ....................................................................................................................................40
3.2.3.1 Diagrama de clase ...............................................................................................................41
3.3 PROIECTAREA ŞI IMPLEMENTAREA SOLUłIEI DE BUSINESS INTELLIGENCE ............42
3.3.1 Proiectarea sistemului cu ajutorul diagramei de componente ..........................................................42
3.3.2 Modelarea distribuirii şi implementării............................................................................................43
3.4 REALIZAREA INTERFEłELOR, RAPOARTELOR ŞI PREZENTĂRILOR .............................44
CONCLUZII .................................................................................................................................. 52
BIBLIOGRAFIE............................................................................................................................ 53
ANEXE............................................................................................................................................ 54
INTRODUCERE
Cele mai noi tendinŃe în domeniul sistemelor informatice se concentrează în jurul
conceptului de Business Intelligence - sisteme informatice care prelucrează date din diverse surse,
oferind informaŃii factorilor de decizie din firma. Principalul rol al sistemelor informatice de acest
tip este să prezinte datele direct, rapid, sintetic, relevant, cu posibilităŃi de previziune şi analiză
avansată. Un astfel de sistem informatic trebuie să-i permită managerului executiv să poată vedea
şi analiza oricând situaŃia organizaŃiei sale astfel încât deciziile adoptate să fie fundamentate.
Caracterul din ce în ce mai complex al fenomenelor economico-sociale din ultimele decenii
precum şi multitudinea formelor lor de manifestare face imposibilă luarea unor decizii corecte
bazate doar pe experienŃa managerială, oricât de vastă ar fi aceasta. IntuiŃia, experienŃa, spiritul
antreprenorial – toate acestea vor continua să fie o bază importantă în luarea deciziilor, dar ele vor
deveni din ce în ce mai mult sprijinite de o fundaŃie de informaŃii pe care Business Intelligence o
oferă.
Unele dintre cauzele ce au determinat apariŃia sistemelor de Business Intelligence sunt
creşterea exponenŃială a volumului de date, informaŃii, cunoştinŃe care intră şi circulă în sistemul
informaŃional al firmei, concomitent cu diversificarea surselor de informaŃii.
În prezent suntem expuşi la un volum imens de date. Problema nu mai este de a obŃine
informaŃii, ci de a obŃine informaŃiile relevante. Marile companii din domeniul IT îşi propun ca
obiective să organizeze datele la nivel mondial şi să le facă accesibile utilizatorilor. Observăm că
se pune din ce în ce mai mai mult accent pe calitatea informaŃiilor şi nu pe cantitatea acestora.
Aceste necesitatăŃi au impulsionat apariŃia şi dezvoltarea sistemelor inteligente care extrag
cunoştinŃe din date şi oferă suport pentru decizii.
Lucrarea abordează problematica sistemelor informatice de Business Intelligence ca soluŃii
destinate suportului decizional atât pentru managerii din cadrul unor firme, cât şi pentru alŃi
decidenŃi din cadrul unei organizaŃii cu scopul de a sistematiza, analiza, întelege şi ameliora
procesele implicate în activitatea socio-economică.
Lucrarea se structurează în trei secŃiuni.
În capitolul 1 sunt prezentate concepte fundamentale privind sistemele informatice de
Business Intelligence, evoluŃia, necesitatea, obiectivele şi arhitectura acestora.
În capitolul 2 sunt abordate tehnologiile implicate în realizarea unei soluŃii de Business
Intelligence. În prima parte sunt clasificate şi prezentate tehnologiile specifice ariei inteligenŃei
afacerii precum: depozite de date (data warehouse), OLAP (Online Analytical Processing),
tehnologia ETI (Extragere, Transformare, Încarcare) şi tehnologia Data Mining de extragere a
cunoştinŃelor din date. În partea a doua am continuat prezentarea cu câteva dintre tehnologiile de
programarea implicate în procesul de elaborarea a unei soluŃii de Business Intelligence.
Capitolul 3 este orientat spre propunerea şi dezvoltarea unei soluŃii practice de
implementare a unui sistem de Business Intelligence, precum şi componentele, arhitectura, modul
de implementare şi funcŃionare a acestui sistem.

2
CAPITOLUL 1. CONCEPTE ŞI SOLUłII DE BUSINESS
INTELLIGENCE
1.1 Conceptul de Business Intelligence

Domeniul Business Intelligence este o tehnologie de ultimă oră care priveşte organizarea şi
funcŃionarea întreprinderii şi a conducerii acesteia.
Cercetările în domeniul de interes se încadrează în tendinŃa actuală de trecere de la
societatea industrială la cea informaŃională şi a cunoaşterii. Obiectivul propus poate fi atins prin
decizii fundamentate ştiinŃific cu un suport informaŃional pe masură. Se poate spune că în
momentul de faŃă reuşita afacerilor depinde într-o măsura foarte mare de calitatea şi cantitatea de
informaŃie pe care se bazează .
Există mai multe puncte de vedere în ceea ce priveşte definirea acestui concept.
Business Intelligence (BI) este un concept generic care grupeaza sub aceeaşi umbrelă
instrumente din domeniul afacerii şi al informaticii, utilizate în vederea transformării datelor
în informaŃii, a informaŃiilor în decizii şi a deciziilor în actiuni1. Presupune utilizarea tuturor
datelor de care dispune o firmă pentru a îmbunătăŃi procesul decizional. Acest lucru presupune
accesul la date, analiza şi descoperirea unor noi posibilităŃi de utilizare a lor.
În Romania, termenul de Business Intelligence este din ce în ce mai des folosit. Traducerea
lui prin inteligenŃa afacerilor sau afaceri inteligente nu reflectă întru totul semnificaŃia dată de
utilizarea actuală a acestui termen. Şi în mediul de afaceri românesc au început să apară abordări
de tip BI de succes. Chiar dacă în presa de specialitate s-a scris şi se scrie mult despre acest
concept subiectul va ramâne unul de actualitate. Domeniul este foarte dinamic şi, deci, raspunsurile
trebuie reactualizate cu o frecvenŃă mare.
BI se referă la capacitatea de a tranforma date existente în informaŃie utilă care să furnizeze
perspective bogate şi mai ales noi asupra lumii afacerilor din prezent şi să ofere o idee spre ce se
îndreaptă aceasta în viitor.
AplicaŃiile informatice utilizate sunt diverse şi se referă la sisteme suport pentru luarea
deciziei, raportări şi interogări, procesare analitică online a datelor (OLAP – Online Analitical
Processing), analize statistice, previzionări, sortarea datelor în vederea identificării de şabloane şi
relatii (data mining) etc. Sunt sisteme informatice inteligente.
SoluŃiile actuale de tip Business Intelligence pot fi considerate ca o etapă importantă de
integrare a domeniului afacerii cu cel al informaticii. Utilizarea tehnologiilor înalte din tehnologia
informaŃiei (de exemplu, inteligenŃa artificială, sisteme expert etc.) şi din management (Business
Process Reengineering,Business Process Management, Business Performance Management etc.)
va face posibilă o simbioză între cele două domenii. Cert este că implementarea unei soluŃii de tip
Business Intelligence este o mare provocare atât pentru specialiştii din domeniul managementului,
cât şi pentru cei din domeniul informatic.

SoluŃiile de BI dau posibilitatea:

- de a înŃelege comportamentul consumatorului;


- de a analiza vânzările;
- de a identifica oportunităŃile de câştig şi de economisire a costurilor;
- de a îmbunătăŃi procesul decizional;

1
www.aries.ro – AsociaŃia Română pentru Industria Electronică şi Software
3
- de a analiza cantităŃi mari de date istorice pentru a identifica şabloanele şi a înŃelege tendinŃele
ce pot influenŃa afacerile.
Un sistem informatic de Business Intelligence oferă o tehnologie, inclusiv produse
software, care livrează utilizatorilor informaŃiile necesare pentru a răspunde la întrebările ce apar în
rezolvarea problemelor de afaceri.

1.2 EvoluŃia şi direcŃiile viitoare de dezvoltare

A. EvoluŃia

Conceptul de Business Intelligence, dezvoltat la începutul anilor ’90, reprezintă una dintre
cele mai noi şi populare noŃiuni în teoria şi practica sistemelor informatice de asistare a deciziei.
Necesitatea şi ideea apariŃiei unor astfel de soluŃii a aparut însa mult mai demult.
Înainte de de începerea erei informaŃionale, la sfarşitul secolului 20, companiile colectau
datele din surse non-automatizate sau parŃial automatizate. ActivităŃilor economice le lipseau
resursele de calcul necesare pentru o analiză corespunzătoare a datelor. În consecinŃă, managerii
de cele mai multe ori îşi bazau deciziile în cea mai mare parte pe intuiŃie.
Cum procesul de informatizare a devenit tot mai uzual în sectorul economic, tot mai multe
date au devenit disponibile.
Termenul de Business Intelligence a fost definit pentru prima dată în octombrie 1958, intr-
un articol semnat de Hans Peter Luhn, publicat în IBM Journal:

„În acest articol, afacerea reprezintă o colecŃie de activităŃi desfăşurate cu un anume scop
cum ar fi: cercetare, tehnologie, comerŃ, industrie, etc. FacilităŃile de comunicare care servesc
conducerii (în sens general) pot fi referite ca inteligenŃa sistemului. Notiunea de inteligenŃă este de
asemenea definită aici într-un sens mai general, ca fiind abilitatea de inŃelegere a relatiilor dintre
faptele prezentate de aşa manieră încât să poată ghida acŃiunile pentru obŃinerea unui obiectiv
stabilit.”2

Cu toate acestea, colectarea a ramas o provocare din cauza lipsei unei infrastructuri
corespunzatoare pentru schimbul de date sau incompatibilităŃilor dintre sisteme. Pentru generarea
analizei şi a rapoartelor pentru anumite date, erau necesare uneori luni intregi de procesare.
Asemenea rapoarte erau utilizate pentru stabilirea unor decizii strategice pe termen lung, în timp ce
deciziile tactice pe termen scurt continuau să se bazeze pe intuiŃie sau experienŃă.
În 1989 Howard Dresner, un analist de la Gartner Group, a popularizat Business
Intelligence ca un termen umbrelă pentru a descrie un set de concepte şi metode pentru optimizarea
procesului de luare a deciziilor în afaceri prin utilizarea sistemelor suport de decizie bazate pe
fapte3.

2
H.P.Luhn – „A Business Intelligence System”
3
D. J. Power – „A Brief History of Decision Support Systems”
4
Fig. 1 - Evolutia sistemelor de Business Intelligence

Prima generaŃie4 de sisteme informatice pentru management se baza pe interogări şi


rapoarte ad-hoc pentru a genera informaŃii către beneficiari. Interogările şi rapoartele erau
construite pe baza datelor din sistemele informatice operaŃionale ale firmelor. Pe lânga faptul că se
constituia o sarcină în plus asupra SGBD care menŃinea sistemele raŃionale, aplicaŃiile BI din
prima generaŃie puteau fi folosite de specialişti în informatică (analişti), familiarizati cu sistemele
operaŃionale şi cu mecanismele de interogare şi generare de rapoarte. Cel mai adesea, consumatorii
de informaŃii (factori de decizie de pe diferite nivele ale ierarhiei firmei) primeau informaŃiile de
care aveau nevoie de la analişti, fără a putea accesa direct instrumentele prin care se genera
informaŃia.
A doua generaŃie de sisteme informatice o reprezintă depozitele de date, care oferă multiple
avantaje utilizatorilor faŃă de sistemele din prima generaŃie. O prezentare a depozitelor de date se
regăseşte în capitolul al doile al lucrării.
Cea de-a treia generaŃie, aflata în prezent în plina expansiune, se bazează pe exploatarea
exhaustiva a datelor din depozitele de date (Business Intelligence propriu-zis). Aceste sisteme se
concentrează pe ideea de a oferi beneficiarilor informaŃiile de care au nevoie, într-o maniera cât
mai inteligibila şi mai accesibila (folosindu-se în acest sens rapoarte şi grafice). Dezvoltarea şi
implementarea unei aplicaŃii pornind de la nevoile functionale ale sistemului decizional al firmei,
precum şi suportul tehnic corespunzător acordat utilizatorilor (instruire, documentatie) reprezintă
elemente cheie în succesul oricarei aplicatii BI. Sistemele informatice din cea de-a treia generaŃie
utilizează şi alte surse de date pentru a genera informaŃii: documente, internet, intranet-ul firmei.
AplicaŃiile de tip Business Intelligence sunt construite ca parte a unor sisteme informatice
de asistare a deciziei orientate pe date, altfel spus, sunt componente specifice acestei categorii de
SIAD. Majoritatea specialiştilor consideră ca potenŃialul maxim al acestor aplicaŃii este disponibil
beneficiarilor numai în condiŃiile existentei unui volum mare de date pe care aplicaŃiile BI să le

4
D. J. Power – „A Brief History of Decision Support Systems”

5
prelucreze. Astăzi este un standard obişnuit simbioza dintre aplicaŃiile BI şi aplicatiile/mediile de
dezvoltare pentru depozite de date.
Multumită tehnologiilor actuale, afacerile moderne utilizează pe larg standarde,
automatizarea şi softurile specializate pentru stocarea şi analiza unor cantităŃi enorme de date.
Aceste tehnologii pot ajuta companiile să-şi crească veniturile sau să-şi diminueze costurile prin
furnizarea de informaŃii pertinente către managementul executiv, informaŃii pe baza cărora aceştia
să reacŃioneze rapid, adoptând decizii eficiente.

B. DirecŃii de dezvoltare

Într–un mediu care evoluează foarte rapid, consumatorii solicită acum servicii mai
rapide şi mai eficiente. Pentru a ramâne competitive, companiile trebuie să îndeplineasca
aşteptările consumatorilor. Prin urmare, acestea trebuie să se bazeze din ce în ce mai mult pe
sistemele de Business Intelligence pentru a Ńine pasul cu tendinŃele şi evenimentele actuale.
TendinŃele actuale din domeniu se îndreaptă către Real Time Business Intelligence – Business
Intelligence în timp real, solicitând date cât mai recente şi analize furnizate în timp real, similar cu
modelul de tranzacŃionare la Bursă.

„ Analiza lunară şi chiar cea saptamanala nu vor fi suficiente. Utilizatorii nu


trebuie să aştepte inforamtia. Informatia trebuie să fie intotdeauna la îndemană şi niciodată
învechită. Acesta este modul în care traim noi astazi. De ce ar fi Business Intelligence diferit? ” -
Charles Nicholls, CEO al SeeWhy, Windsor UK

„Într-un timp nu foarte indepartat, companiile vor deveni depedente de informatiile


oferite de Business Intelligence în timp real în acelaşi mod precum oamenii se aşteaptă să obŃină
informaŃia de pe internet dintr-un singur click. Această experienŃă „instantanee” va creea un nou
framework pentru Business Intelligence. Iar procesele economice vor trebui să se schimbe, să se
acomodeze cu exploatarea eficientă a datelor furnizate în timp real” - Nigel Stokes, CEO al
DataMirror Corp., Toronto

Aşa numitele produse de BI 1.0 nu erau capabile să ofere asemenea facilităŃi din cauza
dispersării datelor pe diverse sisteme tranzactionale, pe de o parte, şi existenŃei unor structuri de
data warehouse (depozite de date) la care trebuiesc convertite datele înainte de încărcare, pe de alta
parte.
BI 2.0 este termenul5 atribuit recent ca find urmatorul pas pentru industria în
continuă dezvoltare a Business Intelligence. BI 2.0 este utilizat pentru a descrie achiziŃionarea,
analiza şi previzionarea datelor în timp real.
În viitorul apropiat, informaŃia va deveni mai democratizată, iar utilizatorul final din
orice departament al organizaŃiei va putea să vizualizeze date referitoare la segmentul său de
activitate. CapacităŃile şi cerinŃele pentru Business Intelligence vor creşte în viitor în acelaşi mod
precum cresc şi aşteptările consumatorilor, utilizarea lor fiind necesara pentru a ramâne
competitivi pe piaŃă.

5
http://en.wikipedia.org/wiki/Business_Intelligence_2.0
6
1.3 Necesitatea soluŃiilor de tip Business Intelligence

Toate companiile au nevoie de informaŃii pentru a lua decizii. Există de obicei foarte multe
date răspândite în sistemele IT ale companiei, dar transformarea acestor date în informaŃii ce pot fi
analizate pentru a lua decizii este un proces greoi. Necesitatea unui sistem informatic de Business
Intelligence este dată de aspectele prezentate în continuare:
 Reducerea timpului de obŃinere al răspunsului
AplicaŃiile de BI pun accentul pe accesul şi livrarea rapidă a informaŃiilor la utilizatori.
 Gestionarea şi modelarea mediului de afaceri curent
Sistemele informatice de tip BI oferă mai mult decât mecanisme de interogare şi raportare,
ele oferă instrumente de analiză a informaŃiilor complexe, de stocare a volumelor uriaşe de date, de
data mining.
 Reducerea costurilor informatice
InvestiŃia în sistemele informatice reprezintă un procent semnificativ din cheltuielile
firmelor. De aceea, este necesar nu numai să se reducă aceste cheltuieli dar şi să se obŃină beneficii
maxime din informaŃiile stocate şi prelucrate de sistemele informatice, care folosesc , în acest sens,
noi tehnologii.

O soluŃie de Business Intelligence aduce informaŃiile la îndemâna utilizatorilor care au


nevoie de ele:
Analisti şi experti – analize multidimensionale, statistici
Consumatori de informaŃie – interogări dinamice, analize simple
Utilizatori de informaŃie – rapoarte

Fig. 2 – Tipuri de utilizatori ai unei solutii BI

SoluŃia de Business Intelligence se integrează uşor cu sistemele operaŃionale existente,


preluarea datelor pentru analiză fiind facilă. SoluŃia permite raportare şi analiză de date de tip
OLAP (Online Analytical Processing). Datele pot fi analizate folosind mai multe tipuri de clienŃi,
pornind de la analiza cu Pivot Table, reprezentare grafică, până la analiza de tip data mining şi
previziune.
Utilizarea unei solutii de Business Intelligence nu trebuie să fie limitată la un singur
departament sau grup al companiei. Fiecare departament poate utiliza capabilităti specifice ale unei
astfel de soluŃii.
- Departamentul IT este cel care pune la dispoziŃia celorlalte departamente sistemele
operaŃionale de care acestea au nevoie în desfăşurarea activităŃii. Generarea rapoartelor a
7
fost în mod tradiŃional o ocupaŃie a departamentelor de IT, dar acestea trebuie eliberate de
această corvoadă, oferind în schimb –cu minimum de timp, resurse sau necesar de
programare – o soluŃie de analiză şi raportare pentru toate celelalte departamente, astfel
încât acestea să poată obtine rapid informatiile de care au nevoie.
- Departamentul financiar – foloseşte capabilităŃile de Business Intelligence pentru a analiza
datele şi a genera rapoarte, statistici financiare şi pentru a lua decizii financiare pe baza
acestor informaŃii.
- Departamentul operaŃional – poate anticipa cerinŃele, estima stocurile şi poate eficientiza
procesul de producŃie.
- Departamentele de marketing şi vânzări – pot analiza răspunsul la promoŃii şi campaniile de
marketing, pot estima vânzările şi analiza comportamentul pieŃii.

Beneficii

Implementarea unei astfel de soluŃii are următoarele avantaje:


• Pune la dispoziŃia utilizatorilor informaŃiile relevante despre afacere de care aceştia
au nevoie pentru a lua decizii, în timp util.
• Simplifică explorarea datelor complexe şi automatizează procesele economico-
financiare ale companiei.
• SoluŃia este adaptată cerinŃelor specifice ale organizatiei, spre deosebire de o soluŃie
prefabricată, greu de adaptat.
• Reduce timpul necesar pentru luarea deciziilor, permiŃând reacŃia rapidă la
schimbări şi generând avantaj competiŃional.

1.4 Obiectivele unui sistem de Business Intelligence

Obiectivele unui sistem de Business Intelligence sunt:


 Să permită accesul rapid şi uşor la informaŃiile firmei pentru un număr mare de utilizatori
(autorizaŃi) de toate categoriile;
 Să permită soluŃii eficiente având costuri scăzute pentru firmă;
 Să ofere suport pentru noi tehnologii (sisteme OLAP, depozite de date etc.);
 Să ofere un mediu de lucru scalabil şi deschis.
 Să realizeze o nouă abordare a infrastructurii informaŃionale şi funcŃionale (o structură
virtuală) a unei companii – pornind de la abordarea ei ca o afacere. Se începe cu definirea
datelor primare şi se pune accent pe obŃinerea rapoartelor de ieşire în funcŃie de cerinŃe.
 Să realizeze trecerea de la o gândire orientată pe activităŃi la una orientată pe procese (o
grupare de resurse şi activitaŃi facută cu scopul de a realiza valoare pentru client).
Managementul proceselor poate fi, în acest caz, o componentă importantă a soluŃiei de tip BI.
 Să asigure o abordare completa (end-to-end) a proceselor unei afaceri, ceea ce faciliteaza o
puternica integrare pe orizontala a proceselor şi influenŃează decisiv rezultatele aplicării ei.
 Să asigure suportul informatic necesar pentru luarea deciziei la nivelul managementului
operational, prin faptul ca se realizeaza o gestiune optima a resurselor (financiare, materiale,
umane etc.) la nivel de proiect, cerere/comanda client, unitate organizatorica (cu statut juridic
sau fara) sau la nivel de individ. Se faciliteaza realizarea unei restructurari de fond a afacerii
(de tip business process reengineering).

8
 Să asigure suportul informatic necesar pentru luarea deciziei la nivelul managementului
strategic. Se pun la dispoziŃie procese pentru: masurare şi monitorizare a performantelor în
timp real şi on line, realizarea de scenarii necesare pentru previzionare şi perfectionare.
 Să realizeze trecerea de la masurarea clasică a performanŃelor bazată pe evaluarea activelor
tangibile la cele intangibile. Aceasta trecere este necesara, în primul rând, deoarece masurarea
numai pe criterii financiare este una nebalansată şi, uneori, tardivă. În al doilea rand, trebuie
Ńinut cont de faptul că în prezent valoarea de piaŃă a unei companii este dată în proporŃie de
peste 70% de activele intangibile. Această trecere se bazează, în principiu, pe combinarea de
metodologii din business, statistică şi inginerie pentru a îmbunătăŃi performanŃa proceselor,
scăderea variaŃiilor şi menŃinerea unei calităŃi consistente pentru ieşirile proceselor. Aceasta
conduce la reducerea defectelor şi la imbunătăŃirea profitului, calităŃii produselor şi a
satisfacŃiei clientilor.

1.5 Dilema datelor

Dilema datelor este o problemă pe care o au organizaŃiile şi care ajută la înŃelegerea


tehnologiei BI. Aceasta constă în aspectele prezentate în continuare.

• Date diferite şi incompatibile


Datele referitoare la afaceri sunt stocate în depozite separate şi incompatibile. Sistemele de
BI centralizează date din surse multiple precum sisteme POS (Point Of Sale), sisteme financiare,
CRM (Customer Relationship Management), sisteme call center, data warehouse (depozite de
date) şi web. Instrumentele software sunt utilizate pentru a analiza aceste date, pentru a înŃelege
astfel mai bine operaŃiunile aferente mediului de afaceri.
Lipsa de integrare a datelor poate pune piedici serioase în înŃelegerea întregii activităŃii a
companiei. Când aceste date separate vor fi integrate va rezulta o imagine mult mai completă a
activităŃii. Problemele care apar includ:
- informatiile necesare apar într-un format necorespunzator;
- informatiile sunt rareori consistente şi supuse unor modificari constante;

• Proiectarea conflictuală
Sistemele informatice tradiŃionale au fost proiectate în scopul de a procesa tranzacŃii
discrete, pentru a automatiza sarcini precum introducerea de comenzi sau facturi contabile. Bazele
de date relaŃionale s-au dovedit o soluŃie eficientă pentru acest tip de sisteme de procesare a
tranzacŃiilor

9
1.6 CerinŃele bazelor de date

MulŃumită tehnologiei, companiile acumulează în prezent cantităŃi enorme de date.


Acumularea de date poate fi o idee bună într-o economie unde companiile au succes sau eşuează în
funcŃie de abilitatea lor de a utiliza informaŃia pentru a anticipa schimbările din piaŃă şi a adopta
rapid decizii.
BI necesită capacitatea de a procesa un număr mai mare de înregistrări, de a executa calcule
complexe şi de a agrega datele în rezumate semnificative. Bazele de date proiectate pentru BI
trebuie să fie optimizate pentru rapoarte. Această bază de date va stoca deseori cantităŃi foarte mari
de date istorice şi poate fi cu mult mai mare decât un sistem tranzacŃional. Acest sistem s-ar putea
să nu stocheze fiecare tranzacŃie discretă, ci mai degrabă doar date la nivel de rezumat care sunt
folosite pentru raportări.

Procesare de tranzacŃii BI
1. Scopul Automatizarea unui Raportare, analiză de date şi
proces repetitiv descoperire
2. Proiectarea RedundanŃă minimă şi RedundanŃă introdusă,
controlată, calcule dinamice structura de date aplatizată,
calcule complexe
3. Stocatea datelor TranzacŃii discrete, date TrazacŃii la nivel de rezumat,
curente, o aplicaŃie date istorice, aplicaŃii multiple şi
integrate
4. Accesul la date Actualizări, regăsiri Doar regăsiri şi timpi de
rapide răspuns moderaŃi
Tabel 1 – Cerintele bazelor de date

Interogare flexibilă
Spre deosebire de sistemele tranzacŃionale în care interogările sunt cunoscute dinainte şi
proiectanŃii pot optimiza timpii de răspuns, în sistemele de BI nu se pot preprograma interogările în
serii de rapoarte predefinite.
Sistemele de BI necesită explorări de date active şi uneori pasive şi nu se cunosc de la
început întrebările la care sistemul trebuie să răspundă. SoluŃiile de BI implică o abordare în
proiectare care duce la o flexibilitate a interogărilor fără a limita numărul de utilizatori.

10
1.7 Arhitectura unui sistem informatic pentru inteligenŃa afacerii

Arhitectura unui sistem informatic pentru inteligenŃa afacerii prezintă grafic un ansamblu
de elemente intercorelate care contribuie la atingerea obiectivelor prezentate anterior6.
Analizând arhitectura de mai jos, observăm că pornim de la o sursă de date (externe şi
operaŃionale) din care cu ajutorul unor instrumente şi interfeŃe se construiesc depozite de date.
Depozitele de date sunt gestionate împreună cu alte stocuri de date. Pentru accesul la date se
utilizează interfeŃele aplicaŃiilor şi serverele de aplicaŃii. Rezultatele accesului la date se utilizează
în aplicaŃii de Business Intelligence (instrumente SSD – Sisteme Suport de Decizie, sisteme OLAP
– Online Analitycal Processing, Data Mining etc). La nivelul întregului sistem informatic de BI se
realizează gestiunea metadatelor şi administrarea sistemului.
O soluŃie de BI necesită acces la toate tipurile de date referitoare la organizaŃie şi clienŃii
săi. Aceasta poate include date din sistemele tranzactionale (OLTP - Online Transaction
Processing), date din aplicaŃiile companiei (de exemplu aplicaŃii financiare, resurse umane,
productie), date istorice (de obicei o sursă valoroasă de informaŃii istorice), precum şi diverse alte
surse. Anumite sarcini analitice, de exemplu rularea rapoartelor zilnice privind vânzarile sau
extragerea informaŃiilor ad-hoc, necesită acces direct la sursele de date. Alte tipuri de sarcini (de
exemplu examinarea tendinŃei vânzarilor regionale de-a lungul ultimelor luni) necesită lucru
fragmentat folosind tipul de lucru asupra depozitelor de date.

Fig. 3 – Arhitectura unui sistem de Business Intelligence

Un depozit de date organizează informaŃiile într-un mod util, consistent şi inteligibil,


facilitând analizele standard, ad-hoc şi avansate. O soluŃie de BI completa permite utilizatorilor să
interogheze datele la sursă, dar oferă şi instrumente puternice pentru proiectarea, generarea şi
utilizarea depozitelor de date (data warehouse) şi concentrăilor de date (data marts). Fiind o
componenta a soluŃiei BI, platforma depozit de date trebuie să poata să manipuleze o mare
diversitate de informaŃii şi să ofere facilităŃi pentru analize sofisticate, inclusiv reprezentarea
datelor multidimensional şi ierarhic.
6
Prof.dr. Manole VELICANU, prof.dr. Ion LUNGU, lect. Mihaela MUNTEAN,
prep. Simona IONESCU – „Spre noua economie digitala prin inteligenta afacerii”
11
Fig. 4 – Infrastructura platformei de Business Intelligence

Componentele care rezultă din arhitectura unui sistem de Business Intelligence:


• depozitele de date;
• concentrările de date;
• cererile de regasire dintre cele mai diverse şi uşor de format;
• instrumentele de analiză multidimensională a datelor;
• aplicaŃiile analitice;
• pachetele de aplicaŃii pentru monitorizarea performanŃelor afacerii;
• aplicaŃiile pentru analize strategice.

12
CAPITOLUL 2. TEHNOLOGII UTILIZATE LA
REALIZAREA UNEI SOLUłII DE BUSINESS INTELLIGENCE

2.1. Tehnologii specifice domeniului Business Intelligence

2.1.1. DEPOZITE DE DATE

Concentrările de date (data marts) şi depozitele de date (data warehouse) rezolvă


problemele legate de sursele de date disparate şi de scopurile incompatibile dintre procesarea
tranzacŃiilor şi aplicaŃiile de BI.
Scopul unui depozit de date este de a furniza un stoc central unde datele din unul sau mai
multe sisteme trazacŃionale pot fi consolidate într-o singură, integrată şi consistentă sursă de date.
Depozitul de date este proiectat pentru a optimiza generarea de rapoarte pe număr mare de
înregistrări ale bazei de date. El presupune multe regăsiri şi foarte puŃine actualizări (sau deloc).
Deoarece procesul dezvoltării unui depozit de date la nivel de întreprindere a fost lung şi
complex şi de multe ori nu s-a încheiat cu succes, practicienii acestuia au adoptat o abordate
alternativă : dezvoltarea unor depozite mai mici şi cosolidate, cunoscute sub numele de concentrări
de date. Astfel, prin date stocate în volume mai mici, nevoia de o raportare mai exactă şi imediată
poate fi suplinită într-un ciclu de dezvoltare mai scurt.
Aceste facilităŃi, dacă sunt integrate în instrumente care aparŃin unui SGBD, răspund optim
tuturor cerinŃelor unei afaceri, deoarece se bazează pe un ansamblu mare şi variat de date, cu
facilităŃi de regăsire deosebite.

Fig. 5 – Depozite şi concentrări de date

13
2.1.2 TEHNOLOGIA ETI (Extragere, Transformare, Încărcare)

Tehnologia Extragere, Transformare, Încărcare (ETL – Extract Transform Load) se referă


la crearea unui depozit de date din mai multe surse. Dezvoltarea unei viziuni singulare şi
consistente a datelor ce există în mai multe sisteme necesită curăŃarea datelor. De asemenea,
datele de la sursă s-ar putea să necesite trasformarea spre un format comun în depozit de date.
Un instrument de ETI permite definirea de reguli de afaceri utilizând: o interfaŃă grafică,
interfeŃe standard de comunicaŃie.
Datele sunt extrase din surse, cum ar fi sistemele de tranzactionale de baza de date (OLTP)
sau alte sisteme informationale (de exemplu sisteme ERP sau CRM). Intervine apoi un proces de
transformare care constă în:

 Selectarea acelor date care sunt de interes pentru sistem


 Normalizarea datelor (de exemplu prin eliminarea duplicatelor)
 Traducerea datelor codificate
 Derivarea a noi date calculate
 Executare de join-uri dintre datele din diferite tabele
 Consolidarea datelor

Această transformare este proiectată pentru consolidarea datelor (adică uniformizarea


datelor din diferite surse) şi asigurarea că acestea sunt mai adaptate la logica de afacere a
sistemului de analiză pentru care sunt dezvoltate.
O atenŃie specială ar trebui să fie atrasa granularităŃii informaŃiilor care urmeaza să fie
stocate. Acestea trebuie să fi agregate astfel încât să nu aibă o detaliere excesiva (care ar putea
duce la o degradare a performanŃei interogărilor puse de pe sistem), dar ele totodată trebuie să
menŃină o granularitate care este necesara pentru a efectua o analiză a datelor.

2.1.3 OLAP (Online Analytical Processing)

Pentru a atinge flexibilitatea şi în acelaşi timp să menŃină performanŃa, OLAP utilizează


analiza multidimensională. În această abordare datele sunt văzute la nivel de concept ca un cub.
Acest cub constă din valori cantitative (cunoscute sub numele de măsuri) şi categorii descriptive
(cunoscute sub numele de dimensiuni).
Utilitatea pentru organizaŃii este abilitatea de a-şi analiza superior datele în scopul de a
furniza viziunea necesară luării deciziilor.
OLAP (Online Analytical Processing - Prelucrare Analitica OnLine) este prelucrarea pe
calculator care permite unui utilizator să extraga şi vizualizeze uşor şi selectiv informaŃii din
diferite perspective. De exemplu, un utilizator poate solicita ca datele să fie analizate şi comparate
intre diferite produse, regiuni şi perioade. Pentru a facilita acest tip de analiză, datele OLAP sunt
stocate într-o bază de date multidimensională. O bază de date multidimensionala consideră fiecare
atribut de date (cum ar fi produs, regiune geografică a vânzărilor sau perioada de timp) ca
"dimensiune" separată. Produsele OLAP oferă posibilitatea de a localiza intersecŃia dimensiunilor
(toate produsele vândute într-o regiune, la un anumit preŃ, pe parcursul unei anumite perioade de
timp) şi a le afişa. Atributele, cum ar fi perioadele de timp pot fi defalcate în sub-atribute.

14
Fig. 6 – Analiza multidimensională cu ajutorul conceptului de cub

OLAP poate fi de asemenea folosit pentru identificarea unor relaŃii ce nu sunt evidente
dintre elementele de date. O bază de date OLAP nu trebuie să fie neaparat un depozit de date (un
repozitoriu central unde se colectează toate sau părŃi semnificative ale datelor unei întreprinderi),
deoarece nu toate tranzacŃiile sunt necesare pentru analiza tendinŃelor. Prin utilizarea ODBC (Open
Database Connectivity - un standard deschis de interfaŃă de programare a aplicaŃiilor (API) pentru
accesul la o baza de date), datele pot fi importate din baze de date relationale existente pentru a
crea o bază de date multidimensionala pentru OLAP.

2.1.4 EXTRAGEREA DE DATE (Data Mining)

2.1.4.1 Procesul de extragere a cunoştinŃelor din baze de date

Extragerea de date duce BI cu un pas mai departe decât OLAP. În OLAP utilizatorul este
angajat în mod activ în explorarea datelor, pe când în data mining, informaŃia spune ceva despre ea
fără să fie adresată vreo întrebare.
Tehnologia de data mining utilizează metode de căutare complexe spre a identifica modele
şi grupări ale datelor. Data mining poate identifica tendinŃe nesuspectate în comportamentul
consumatorului, care poteŃial pot fi utilizate să prevadă comportamentul viitor.
Extragerea de date se îmbunătăŃeşte cu cât creşte cantitatea de date şi necesită depozite de
date de înaltă calitate pentru a putea da rezultate utile.
Pentru a înŃelege mai bine procesul de extragere a cunoştinŃelor din baze de date, literatura
de specialitate recomandă o procedură sistematică şi metodică. Procesele vor fi divizate în câteva
faze ce poartă denumirea de procese parŃiale.

15
În figura de mai jos este prezentat un proces generic de data mining. Schema este o analiză
a conceptelor şi a cercetărilor actuale7 validate în studii de caz.
Acest model este unul generic, în practică el putând suferi unele modificări, în funcŃie de
specificul fiecărei companii sau ale anumitor situaŃii.

Defini-
Sele- Transfor- Explora- Genera- Interpre- F urniza-
rea Explora- Mo ni-
ctarea marea rea
rea rea tarea rea
ob iectivelo datelor datelor torizare
rafaceri d atelo r datelo r m odelelor rezultat elo r rezultatelo

Fig. 7 - Procesul data mining

a) CurăŃarea datelor

O primă etapă în procesul de data mining este cea de curăŃare a datelor. Deseori, bazele
de date sunt combinate manual pentru a pregăti setul de date supus analizei. Prin urmare, ele pot să
conŃină date false sau greşite. Această problemă este cu atât mai gravă cu cât ea conduce la nişte
modele remarcabile (Brachman, Anand, p. 49 ff.; Bissantz u.a (1993), p. 343). Drept urmare, data
mining nu poate avea succes fără un efort serios de curăŃare a datelor. Acest proces se poate face în
două moduri: manual (lucru costisitor şi care ia mult timp şi necesită cunoştinŃe deosebite) sau
asistat de instrumente software.
CurăŃarea manuală a datelor este realizată de multe ori prin extragerea aceloraşi elemente
din multiple surse de date şi compararea rezultatelor (Brachman, Anand (1996), p. 50). Câteodată,
anomaliile datelor sunt importante pentru anumte scenarii (fapte sau trenduri interesante), dar cu
toate acestea este apropae totdeauna necesară parcurgerea acestei etape în procesul de data mining.

b) Integrarea datelor

Explorarea datelor trebuie să fie văzută în strânsă legătură cu transformarea datelor.


Această etapă este indispensabilă înaintea procesului de generare a modelelor. Este o etapă care ar
trebui să furnizeze un înŃeles al datelor pentru utilizator, înainte de a genera modele. Utilizatorul,
care deŃine rolul principal, trebuie să se uite asupra diferitelor variabile, asupra excepŃiilor,
corelaŃiilor între date. Scopul este de a înŃelege datele ce urmează a fi analizate în etapele
ulterioare. Explorarea datelor este un proces orientat către om şi nu către maşină, este singurul mod
prin care experŃii IT şi utilizatorii pot interacŃiona.

c) SelecŃia datelor

În aceasta etapă se va identifica sursa de date din care se vor selecta datele necesare
rezolvării problemei. După ce se va identifica sursa de date, trebuie luată o decizie cu privire la

7
Bissantz, Küppers (1996 a), p. 36; Brethenoux (1997), p. 6; Fayyad et al. (1996), p. 9 f.; Mannila (1997)
16
intervalul de timp din care se vor alege datele. De asemenea, alte aspecte importante ale acestei
faze includ estimări ale datelor în termeni de volum şi calitate.
Luând în considerare aceste patru aspecte (valabilitatea datelor, volumul lor, intervalul
de timp şi calitatea datelor), selecŃia datelor va putea fi realizată şi va reprezenta un punct de
cotitură în procesul de data mining.
aspectul valabilităŃii datelor se referă la problema dacă datele sunt accesibile pentru toŃi şi
sunt valabile. Cu toate că există un volum mare de date, de tot felul, lipsesc piese importante de
informaŃii. Prin urmare, este necesară o cercetare mai în amănunt şi sistematică în vederea obŃinerii
datelor necesare, ideale în găsirea unei soluŃii rezonabile a problemei.
volumul de date este în strânsă legătură cu valabilitatea datelor. În funcŃie de volumul de
date ce va fi explorat, se pot ditinge trei modele: sisteme data mining de sine stătătoare (pretabile
pentru seturi mici de date); sisteme data mining bazate pe client (pentru probleme mici sau medii)
– datele care vor fi explorate sunt stocate într-o bancă de date pe server, putând fi accesate prin
intermediul unei infrastructuri client/sever; sisteme data mining bazate pe server (pentru cantităŃi
mari de date – data warehouse).
intervalul de timp al datelor care vor fi utilizate. Intotdeauna există o întârziere între cauză
şi efect în procesul de identificare a modelelor. Prin urmare, în etapa de selecŃie a datelor, trebuie
luată în considerare un interval de timp specific problemei de rezolvat. Acest interval trebuie
divizat în două perioade: observarea (cauza) şi prelucrarea datelor (efectul).
calitatea datelor utilizate este influenŃată în principal de cantitatea de date care lipseşte.
Un pas important al etapei de selecŃie a datelor este documentarea corectă a tuturor
acŃiunilor desfăşurate.

d) Transformarea datelor

Odată realizată selecŃia datelor, o etapă necesar a fi urmată este cea de transformare a
datelor. Motivul parcurgerii acestei etape constă în faptul că majoritatea aplicaŃiilor data mining
pot procesa doar tabele (flat tabels), în timp ce aproape toate datele sunt structurate în tabele
relaŃionale. În mod normal, această fază este una foarte costisitoare, ocupând aproximativ 80% din
procesul de data mining, depinzând în foarte mare măsură de volumul de date şi calitatea datelor
analizate. Această fază este mult mai tehnică decât celelalte, fiind un apanaj al experŃilor IT. Cu
toate acestea, colaborarea cu utilizatorii este imperios necesară. Printre acŃiunile ce urmează a fi
întreprinse, se numără:
generarea tabelelor. Actiunea urmăreşte scopul integrării datelor stocate în diferite baze
de date sau care există deja într-un depozit de date. Sunt identificate trei transformări de bază a
datelor: join-ul tabelelor, agregarea înregistrărilor, derivarea atributelor (deriving attributes)
procesarea datelor. Pe lângă generarea tabelelor, tot mai există anumite lipsuri în datele
reale, astfel că ele trebuiesc procesate. Printre procedurile utilizate sunt: procesarea valorilor care
lipsesc, curăŃarea datelor “murdare”, alinierea datelor, transformarea valorilor în logaritmi,
exemplificarea (sampling).
producerea de exemple aleatoare, care vor fi utilizate în etapele următoare, constituind
baza generării de modele.
Este foarte important ca tehnicile prezentate anterior să fie folosite în mod “inteligent”,
pentru a reduce costurile etapei de transformare a datelor.

17
e) Extragerea cunoştinŃelor

Extragerea cunoştinŃelor sau generarea de modele reprezintă scopul întregului proces de


data mining. Cu toate că această etapă reprezintă esenŃa procesului de descoperire a cunoaşterii, ea
ocupă puŃin timp în comparare cu alte etape cu ar fi selecŃia şi transformarea datelor, şi nu este
deosebit de spectaculară. Procesul de generare a modelelor poate fi realizat automat sau în
interacŃiune cu utilizatorul, prin intermediul unor tehnici, instrumente şi/sau sisteme diverse.
Generarea automată a modelelor înseamnă că programul caută modelele în setul de date supus
analizei, fără a lăsa posibilitatea de interacŃiune a utilizatorului. Unele aplicaŃii oferă această
posibilitate, permiŃând utilizatorului să adapteze aplicaŃia la nevoile sale specifice. Acest lucru se
realizează prin intermediul drepturilor oferite utilizatorului de a modifica opŃiunile implicite ale
sistemului. De exemplu, atunci când se folosesc arborii decizionali drept tehnici de minerit în baza
de date, are sens ca utilizatorul să modifice criteriile de divizare sau de finalizare. În acest sens, un
rol important îl joacă gruparea. În anumite cazuri, în procesul de căutare a modelelor se divizează
prea mult, astfel că e mult mai eficient să grupezi anumite date pentru a genera un model. Este
recomandată şi în această etapă o corectă documentare a acŃiunilor întreprinse.

f) Evaluarea rezultatelor

Inainte ca modelele descoperite să fie utilizate în soluŃionarea problemei iniŃiale, trebuie


parcursă şi etapa de evaluare a rezultatelor. Modelele identificate şi generate de sistem trebuiesc
interpretate. Şi de această dată, importă tehnicile de data mining utilizate, un rol important
revenindu-i utilizatorului, cel care va da verdictul dacă modelele au un înŃeles pentru el. Procesul
de evaluare a rezultatelor constă în două faze:
validarea modelelor găsite în etapa anterioară. De asemenea, procesul de validare se
desfăşoară în două etape: testarea modelelor cu setul de date de test şi confruntarea modelelor cu
mai mulŃi utilizatori care să-şi prezinte opinia cu privire la validitatea acestora; interpretarea
modelelor valide. Constă în două tipuri de acŃiuni: interpretarea însăşi (procesul de explicare a
modelelor) şi estimarea rezultatelor.Colaborarea dintre experŃii IT şi utilizatori este esenŃială în
succesul acestei etape.

g) Vizualizarea – reprezentarea cunoştinŃelor

În această etapă, rezultatele, respectiv modelele descoperite trebuiesc documentate,


organizate şi reprezentate. Orice proces de data mining sfârşeşte printr-un raport. Există diferite
tipuri de rapoarte: descrieri textuale ale trendurilor identificate, grafuri elaborate ce descriu relaŃii,
descrierea acŃiunilor pe care trebuie să le întreprindă utilizatorul, aplicaŃii software ce
interacŃionează cu utilizatorul. Mai mult decât reprezentarea cunoştinŃelor, este esenŃială explicarea
acestora. Acest lucru este valabil mai ales pentru managementul superior al unei companii etc.
Strategia de organizare şi reprezentare a rezultatelor depinde foarte mult de natura problemei de
rezolvat.

18
2.1.4.2 FuncŃii de extragere a cunoştinŃelor din baze de date

FuncŃiile sistemului data mining sunt utilizate pentru a specifica tipurile de modele ce
trebuiesc descoperite în operaŃiunile sistemului.

Modele descriptive şi predictive

În general, sarcinile data mining se împart în două categorii: descriptive şi predictive. Cele
descriptive caracterizează proprietăŃile generale ale datelor din bazele de date. Sarcinile predictive
execută inferenŃe asupra datelor curente pentru a face previziuni.
DistincŃia între descriere şi predicŃie nu este foarte strictă. Modelele predictive pot fi şi
descriptive, iar acestea din urmă pot fi folosite pentru predicŃii, atât timp cât ele sunt
comprehensibile. Atât predicŃia cât şi descrierea sunt asociate cu patru operaŃii de bază 8:
• segmentarea. Un scop al segmentării este identificarea unui set finit de segmente pentru a
descrie datele. În acest sens, obiectele cu aceleaşi caracteristici sunt combinate în aşa
numitele segmente. Este foarte important ca în cadrul segmentelor să existe un foarte înalt
grad de corespondenŃă, iar segmentele între ele să fie cât mai diferite. Cu ajutorul
segmentării este posibilă recunoaşterea unor şabloane în comportamentul clienŃilor, de
exemplu.
• clasificarea. Scopul principal al acestei operaŃiuni constă în folosirea conŃinutului unei
baze de date, care reflectă date istorice, pentru a genera automat un model care să ajute la
înŃelegerea datelor existente şi să prezică comportamentul viitor. Exemple ale acestei
metode se referă la clasificarea grupurilor de clienŃi şi caracterizarea lor. Principala
deosebire dintre segmentare şi clasificare este aceea că operaŃia de clasificare foloseşte
clase predefinite, cărora le sunt ataşate date.
• analiza dependenŃelor dintre legături descrie dependenŃele, legăturile sau secvenŃele
semnificative dintre variabile. Este o funcŃie foarte importantă, deoarece ajută la
descoperirea unor reguli care caracterizează aceste legături. Modelele de dependenŃă există
pe două nivele: nivelul structural care specifică ce variabile sunt dependente unele de altele
şi nivelul cantitativ care specifică intensitatea acestor dependenŃe (folosind probabilităŃile).
Un exemplu de aplicare al acestei metode este următorul: la nivel structural, un sistem data
mining poate descoperi faptul că acei clienŃi care au un împrumut de la bancă şi cei care au
un cont deschis în bancă sunt dependenŃi unii de ceilalŃi; la nivel cantitativ, sistemul poate
spune că în 60% din cazuri clienŃii care au făcut un împrumut au şi un cont deschis în
bancă.
• identificarea modificărilor şi deviaŃiilor este opusul clusterizării. Sistemele data mining
caută acele obiecte care prezintă caracteristici diferite în raport cu modelele normale. De
asemenea, se concentrează asupra descoperirii celor mai importante modificări ale datelor,
în raport cu masurătorile anterioare sau cu valorile normale. Această funcŃie este deseori
folosită în activitatea de conmtrol a unei companii.
Din alt punct de vedere, funcŃiile unui sistem data mining constau în: clasificare, asociere,
descoperirea şabloanelor secvenŃiale şi segmentarea/clusterizarea.

8
Boehrer (1997), p. 22; Bissantz, Küppers (1996 a), p. 36.; Edelstein (1996), p. 2; Fayyad et al. (1996 b), p.
31 f. Glimozzi (1996), S. 169 f.; Moxon (1996), p. 1
19
a) Clasificarea

Clasificarea este procesul de găsire a modelelor care descriu şi disting clasele de date sau
concepte în scopul utilizării modelului pentru prezicerea clasei de obiecte a cărei caracteristică nu
se cunoaşte. Presupunem că şeful departamentului de vânzări al unei companii doreşte o clasificare
a unui set mare de articole vândute, pe baza a trei tipuri (clase) de rezultate la o campanie de
vânzări: rezultate bune, rezultate medii şi nici un rezultat. De asemenea, el doreşte să obŃină un
model pentru fiecare clasă bazat pe caracteristicile articolului (preŃ, calitate, locul de provenienŃă,
tip, categorie). Clasificarea rezultată îmbracă forma unui arbore de decizie care ar putea avea
preŃul ca factor principal de distincŃie între clase. Analiza poate merge în profunzime în funcŃie şi
de alŃi factori de caracterizare, cum ar fi calitatea sau locul de provenienŃă a articolului. Un astfel
de arbore de decizie poate ajuta la elaborarea unei campanii viitoare de vânzări mult mai eficiente.
Instrumentele specifice sistemului data mining trebuie să infereze un model din baza de
date, ceea ce determină utilizatorul să definească una sau mai multe clase. Apoi, el trebuie să
definească condiŃiile pentru fiecare clasă. Odată stabilite clasele, sistemul va trebui să infereze
regulile care guvernează clasificarea, prin urmare sistemul va trebui să fie capabil să găsească
descrierea fiecărei clase. Descrierea va trebui să se refere la atributele predictive ale setului de
învăŃare, astfel încât să fie îndeplinite numai exemplele pozitive şi nici unul din cele negative. O
regulă este corectă dacă descrierea ei acoperă toate exemplele pozitive şi pe nici unul din cele
negative. Categoriile de reguli sunt: ragulile exacte, regulile puternice şi cele probabilistice.

b) Asocierea

Analiza asociaŃiilor constă în descoperirea regulilor de asociere care arată condiŃiile


atribut-valoare ce apar frecvent împreună într-un set de date. De exemplu, 2% (suportul) dintre
clienŃii cu vârstă între 20-29 ani şi cu un venit cuprins între 20000-30000 $/an cumpără un CD
player, cu un factor de certitudine de 60%. O astfel de regulă are următoarea sintaxă:
vârstă(X,”20-29”) ∧ venit(X,”20000-30000”) ⇒ cumpără(X,”Cdplayer”)
[suport=2%, certitudine=60%]
Un alt exemplu al utilizării asocierii este analiza formularelor trimise de către pacienŃi unei
firme de asigurări medicale. Fiecare formular conŃine un set de proceduri medicale care au fost
aplicate asupra unui pacient pe parcursul unei vizite medicale. Prin definirea pe de o parte a unui
set de date corespunzător colecŃiei tuturor procedurilor medicale care pot fi aplicate unui pacient şi
pe de altă parte, a unor înregistrări corespunzătoare fiecărui formular, aplicaŃia poate identifica,
utilizând asocierea, relaŃia dintre procedurile medicale care sunt practicate adesea împreună.
InducŃia de reguli de asociere este o metodă puternică care are scopul de a găsi regularităŃi
în tendinŃele din date. Prin inducŃia de reguli de asociere se încearcă găsirea mulŃimilor de
instanŃe de date care apar frecvent împreună. Aceste informaŃii sunt de obicei exprimate sub
formă de reguli. O regulă de asociere exprimă o asociere între (mulŃimi de) entităŃi. Totuşi, nu
orice regulă de asociere este utilă, ci doar acelea expresive şi de încredere. De aceea, modalităŃile
standard de măsură pentru a aprecia calitatea regulilor de asociere sunt suportul şi încrederea unei
reguli, ambele calculate din suportul unor mulŃimi de entităŃi.
Pentru a extrage regulile de asociere, un algoritm care dă rezultate foarte bune este
Apriori. Algoritmul se bazează pe observaŃia că dacă orice mulŃime dată de atribute S nu are un
suport corespunzător, nici vreun superset al lui S nu va avea un suport adecvat şi deci orice efort de
a calcula suportul pentru astfel de superseturi este inutil. De exemplu, dacă ştim că {A, B} nu are
suport adecvat, rezultă că nici {A, B, C}, {A, B, D}, etc. nu vor avea suport adecvat.

20
Algoritmul determină mai întâi suportul tuturor atributelor singulare (mulŃimile de
cardinalitate 1) din setul de date şi şterge toate atributele singulare fără suport adecvat. Apoi,
pentru toate atributele singulare cu suport adecvat, construieşte perechi de atribute (mulŃimi de
cardinalitate 2). Dacă nu există nici o pereche, se opreşte, altfel determină suportul pentru
perechile construite.
Pentru toate perechile „candidate” de atribute cu suport potrivit se construiesc mulŃimi de
cardinalitate 3 (triplete). Din nou, dacă nu există triplete, algoritmul se opreşte, altfel se determină
suportul pentru tripletele construite. Procesul continuă în mod asemănător până când nu se mai pot
produce mulŃimi candidate.
De multe ori, în bazele de date reale unele atribute (câmpuri) sunt simbolice iar altele sunt
numerice. Aplicarea algoritmului Apriori necesită discretizarea atributelor numerice ca o fază de
preprocesare a datelor.
Discretizarea transformă valorile atributelor continue într-un număr finit de intervale şi
asociază fiecărui interval o valoare discretă. Procesul are de regulă două etape. Mai întâi se
determină numărul de intervale discrete (de cele mai multe ori utilizatorul specificând acest număr
direct sau o regulă euristică pentru obŃinerea sa). Apoi trebuie determinată lăŃimea sau graniŃele
fiecărui interval, dată fiind gama de valori ale atributului continuu prelucrat.
În literatura de specialitate, există mai multe abordări cu privire la modalitatea de
discretizare. Discretizarea de egală lăŃime divide gama de valori în k intervale de lăŃime egală.
Discretizarea de egală frecvenŃă divide valorile sortate ale atributului considerat în k intervale
astfel încât fiecare interval să conŃină n / k valori adiacente (posibil duplicate). Ambele metode,
deşi simple, pot determina pierderi serioase de informaŃii.
În prezenta abordare s-a utilizat o metodă de discretizare mai eficientă, bazată pe tehnici de
clusterizare nesupervizată. Gruparea obiectelor în clase este o capacitate naturală şi deosebit de
utilă. Există numeroase reguli aplicabile pentru atribuirea de grupuri pentru diversele obiecte, adică
pentru categorizarea lor. Analiza clusterizării este o colecŃie de metode statistice pentru gruparea
obiectelor în clase (sau clustere). Membrii unei clase vor avea unele proprietăŃi comune, astfel
încât să se maximizeze similaritatea intracategorială şi să se minimizeze similaritatea
intercategorială. Clasificarea mai are şi efectul de a reduce dimensionalitatea datelor prin reducerea
numărului de instanŃe care sunt prelucrate. Problema descoperirii de subclase într-o mulŃime de
exemple dintr-o clasă dată se numeşte învăŃare nesupervizată.
Algoritmul k-means este un instrument bine cunoscut de clusterizare. Presupunând n
vectori de trăsături x1, x2, ..., xn şi k clustere, k < n, fie mi valoarea medie a vectorilor din clusterul i.
Pentru separarea clusterelor, se poate utiliza un clasificator bazat pe distanŃa minimă. Se poate
spune că un item x aparŃine clusterului i dacă || x – mi || este minimă pentru toate cele k distanŃe
posibile. Folosirea distanŃei euclidiene s-a dovedit a da rezultate bune în practică.
S-a constatat că rezultatele obŃinute prin k-means depind de alegerea valorilor medii iniŃiale
ale clusterelor. De aceea, o variantă pentru îmbunătăŃirea performanŃelor algoritmului este rularea
sa multiplă şi alegerea partiŃionării celei mai bune. O măsură a calităŃii clusterizării este dată de
calcularea entropiei claselor rezultate. Din mai multe variante de clusterizare, varianta optimă are
cea mai mare sumă a entropiilor, ceea ce atestă faptul că datele din clustere sunt cât mai omogene:
k
H c = −∑ pi log pi ,
i =1

K * = arg max H c ,
c

21
unde Hc este entropia unei clusterizări, pi sunt probabilităŃile de apartenenŃă ale valorilor la
un anumit cluster (c), iar K* este strategia optimă de clusterizare.

c) Descoperirea şabloanelor secventiale

Cunoscută şi sub denumirea de analiză a evoluŃiilor şi deviaŃiilor, această funcŃie descrie


şi modelează regularităŃi sau trenduri pentru obiecte al căror comportament se modifică în timp. Să
presupunem că sunteŃi acŃionarul majoritar al unui holding şi doriŃi să investiŃi într-o companie
producătoare de High-tech. Un studiu cu ajutorul unui sistem data mining asupra tranzacŃiilor de
acŃiuni poate identifica regularităŃile în evoluŃia tranzacŃiilor cu acŃiuni în general şi pentru anumite
companii. Aceste regularităŃi pot ajuta la prevederea trendurilor preŃurilor pieŃei de acŃiuni,
ajutându-vă astfel la luarea deciziei cu privire la investiŃie. DeviaŃiile sunt diferenŃe între valorile
măsurate şi valorile de referinŃă (cele anterioare sau cele normative). De exemplu, o scădere a
vânzărilor totale ale companiei în ultima lună faŃă de aceeaşi perioadă de timp a anului anterior
reprezintă o astfel de deviaŃie. Detectând o asemenea deviaŃie, sistemul data mining poate merge
mai departe în încercarea explicării acesteia. Ex: a avut compania mai mult personal la vânzări
anul trecut dacât anul în calcul?

d) Segmentarea / clusterizarea

Un cluster este un set de obiecte grupate împreună din cauza similitudinii lor. Segmentarea
şi clusterizarea sunt procese prin care se creează o partiŃie, astfel încât toŃi membrii unui set de
partiŃii să fie similari prin raportarea la o unitate de măsură. Analiza clusterelor se referă la clase de
obiecte fără consultarea unei caracteristici cunoscute a clasei. În cazul unei companii, acest proces
poate identifica subpopulaŃii omogene de clienŃi. Aceste grupuri (clustere) pot fi reprezentate de
grupurile Ńintă pentru marketing.
Clusterizarea este o tehnică foarte puternică, prin care se transformă câteva masurători
similare intuitive în masurători cantitative. Când învăŃarea nu este supervizată, sistemul trebuie să
descopere clusterele din baza de date. Prin urmare, el trebuie să descopere subseturi de obiecte
asociate din setul de învăŃare şi apoi trebuie să găsească descrieri ale fiecărui subset.

e) Categorizarea

Categorizarea (sau clasificarea) este procesul de atribuire a instanŃelor unor clase pe baza
caracteristicilor acestora, fiind una din cele mai studiate activităŃi legate de raŃionament, deoarece
se dovedeşte utilă în aproape orice domeniu al cunoaşterii umane. Tehnicile de clasificare
automată dezvoltate în cadrul cercetărilor de învăŃare automată şi statistică prezintă performanŃe
foarte bune, în condiŃiile în care se furnizează suficiente date care să pună în evidenŃă relaŃiile
dintre categorii şi caracteristicile lor.
Clasificările precise necesită cunoştinŃe despre relaŃiile dintre categoriile posibile şi
modelele valorilor atributelor întâlnite în date. Faza de învăŃare a clasificării se ocupă de
asamblarea acestor cunoştinŃe. ÎnvăŃarea este mai dificilă atunci când datele primite de la un stimul
sunt insuficiente pentru explicarea categorizării. Unele valori pot lipsi sau pot fi afectate de
zgomot, categorizarea poate depinde de atribute inexistente în setul de date sau pot exista
interacŃiuni între atributele luate în considerare şi cele omise. De asemenea, relaŃiile înseşi se pot
modifica în timp.

22
PredicŃia este simplă odată ce au fost determinate regulile de categorizare. Dacă arborele
este complet, orice nouă instanŃă poate fi plasată într-o categorie unic precizată. Un alt tip de
predicŃie este detectarea tendinŃelor spaŃiale. O tendinŃă spaŃială se defineşte ca o schimbare
regulată a unuia sau mai multor atribute nespaŃiale în momentul distanŃării de un obiect de start dat
o. În acest caz, căile de vecinătate care încep în o sunt utilizate pentru modelarea mişcării. De
asemenea, se poate efectua o analiză de regresie pe valorile atributelor obiectelor din calea de
vecinătate pentru a descrie regularităŃile schimbărilor; astfel, distanŃa faŃă de o este variabila
independentă iar diferenŃele valorilor atributelor sunt variabilele dependente ale regresiei.
Corelarea valorilor atributelor observate cu valorile prezise de funcŃia de regresie oferă o măsură a
încrederii tendinŃelor descoperite.

2.1.4.3 Tehnici de extragere a cunoştinŃelor din baze de date

Pentru ca procesul de extragere a cunoştinŃelor din baze de date să aibă succes şi finalitate,
astfel ca un sistem data mining să ofere soluŃiile problemei de rezolvat, trebuie efectuate o serie de
tehnici de extragere a cunoştinŃelor din baze de date. În continuare vor fi prezentate cele mai
uzuale tehnici de extragere a cunoştinŃelor din baze de date.
De obicei, sistemele data mining nu furnizează nici o tehnică de extragere a cunoştinŃelor
din baze de date, mai mult, ele folosesc una sau mai multe tehnici, dintre care utilizatorul trebuie să
aleagă. De obicei, criteriul principal în decizia de selecŃie a unei tehnici îl reprezintâ specificul
problemei de rezolvat. În timp ce există doar patru operaŃii principale de extragere a cunoştinŃelor,
există o varietate de tehnici care fac posibile aceste operaŃii9.

a) ReŃele neuronale

Una din tehnicile utilizate de data mining este cea a reŃelelor neuronale. Dezvoltarea acestei
tehnici a avut loc în ultimul deceniu, în comunitatea “inteligenŃei artificiale”. Tehnica este inspirată
din modelul biologic de organizare a creierului uman şi a sistemului nervos uman.
ReŃelele neuronale sunt modele de date care simulează structura creierului uman. Ele
combină aritmetic valorile variabilelor unei înregistrări cu scopul de a face deducŃii din acea
înregistrare. ReŃelele neuronale au un avantaj particular, deoarece ele oferă mijloace eficiente de
modelare a problemelor mari şi complexe în care există sute de variabile independente şi care
interacŃionează între ele.
Ca şi creierul, reŃelele neuronale învaŃă dintr-un set de intrări (input-uri) şi modifică
parametrii modelului în concordanŃă cu acestei noi cunoştinŃe pentru a găsi şabloane în setul de
date. Procesul construirii modelului se dezvoltă prin descoperirea de legături între variabilele de
intrare care produc cele mai corecte rezultate. Acest lucru se realizează prin “învăŃarea “ reŃelei
neuronale cu date.
O reŃea neuronală (fig. 8) începe cu un nivel al intrărilor, unde fiecare nod corespunde unei
variabile independente. Aceste noduri sunt conectate cu alte noduri din nivelul ascuns. Nodurile
din acest nivel pot fi conectate cu alte noduri din alt nivel ascuns sau cu nivelul de ieşiri (output-
uri). Acest nivel constă din una sau mai multe variabile dependente.

9
Mihai Horia Zaharia, Aflori Cristian, Şova Ioan, Amarandei Cristian, Florin Leon - Raport de cercetare
„Prototipul unui sistem GIS Web inteligent pentru extragerea cunoştinŃelor din baze de date folosind agenŃi inteligenŃi”

23
Ieş
iri
Int
rari Niv
el ascuns
Fig. 8 - ReŃea neuronală cu un singur nivel ascuns

Topologia unei reŃele neuronale constă în alegerea variabilelor de intrare şi ieşire, a


numărului de noduri, a nivelelor ascunse şi a conectivitătii dintre ele. În proiectarea unei reŃele
neuronale, atât utilizatorul căt şi software-ul trebuie să aleagă numărul nodurilor şi nivelelor
ascunse, funcŃiile de activare şi limitele cantităŃilor (weights).
Unul din avantajele acestei tehnici constă în faptul că ea poate fi uşor implementată în
programarea paralelă (parallel computers), fiecare nod făcându-şi simultan operaŃiile.
Utilizatorii trebuie să fie conştienŃi însă şi de următoarele probleme:
- reŃelele neuronale sunt ca o cutie neagră, nefiind furnizate nici o explicare a
rezultatelor;
- în general, reŃelele neuronale necesită un timp îndelungat de învăŃare; totuşi, odată
învăŃate, ele pot prezice destul de repede rezultatele;
- reŃelele neuronale necesită o pregătire minuŃioasă a datelor;
- reŃelele neuronale se pretează foarte bine problemelor mari sau complexe.

b) Arbori de decizie

Această tehnică este folosită de multe sisteme data mining şi constă într-un mod de
reprezentare al unei serii de reguli care conduce la o valoare sau la o clasă de valori. Aşa cum
reiese şi din denumire, se construieşte o structură de tip arborescent care reprezintă un set de
decizii utilizate pentru a prezice care înregistrări dintr-un set de date nou şi neclasificat vor avea
anumite valori clasificate.
De exemplu, o bancă doreşte să clasifice doritorii de credite în riscuri mici sau mari. În fig.
nr.3 este reprezentat un arbore decizional simplu, cu toate componentele sale de bază (nodul
decizional, ramurile şi frunzele), care rezolvă această cerinŃă.
Prima componentă din structură (venitul > 40000$) este un nod decizional, care indică un
test ce trebuie efectuat. Rezultatul acestui test detrmină structura să se împartă în două branşe
(ramuri), fiecare reprezentând un posibil răspuns (Da sau Nu). În funcŃie de algoritm, fiecare
ramură poate conŃine două sau mai multe ramuri. Fiecare ramură va conduce fie către un nod
decizional (Loc de muncă > 5ani) sau către rădăcina arborelui (frunză sau clasă de ieşiri – Risc mic
sau Risc mare).
Parcurgând un arbore decizional, poŃi clasifica un caz, decizând ce ramură să parcurgi,
pornind de la nodul decizional cel mai de sus şi trecând prin fiecare nod al arborelui, până când
ajungi la o clasă de ieşiri (frunză).

24
Venit > 40000

u a
Loc de muncă Credit mare
> 5 ani

a u a u
R Risc mare Risc mare Risc mic
isc mic Fig. 9 - Arbore decizional simplu

Extragerea de cunoştinŃe din baza de date este folosită pentru a construi arbori decizionali,
prin examinarea datelor şi inducerea de reguli care formează arborele. Pentru a construi op astfel
de structură se utilizează o serie de algoritmi, printre care: CHAID (Chi-squared Automatic
Interaction Detection), CART (Classification and Regression Trees), Cautarea (Quest) şi C5.0.
Multe proceduri ale unui arbore de decizie se bazează pe algoritmul ID3 al lui Quinlan. Principiul
utilizat este divizarea recursivă. Se porneşte de la un grup mare de date, apoi se inserează câte o
ramură care va împărŃi datele în două sau mai multe subgrupuri de date.
Arborii decizionali utilizaŃi pentru a prezice variabilele categorice poartă denumirea de
arbori de clasificare, pentru că ei introduc instanŃe în categorii sau clase. Arborii decizionali
utilizaŃi pentru a prezice variabile continue poartă denumirea de arbori de regresie.
Arborii decizionali pot fi foarte mari şi pot deveni complecşi, în funcŃie de volumul de date
supus analizei. De asemenea, ei pot lucra foarte bine cu date non-numerice.
C4.5 este un algoritm de inducŃie a arborilor de decizie, fiind o extensie a algoritmului ID3
care spre deosebire de acesta rezolvă unele probleme precum supra-potrivirea datelor, tratarea
atributelor continue şi a atributelor cu valori lipsă, mărirea eficienŃei computaŃionale. Algoritmul
C4.5 generează un arbore de decizie prin partiŃionarea recursivă a mulŃimii de date, printr-o
strategie de parcurgere în adâncime (engl. “depth-first”). Algoritmul ia în considerare toate testele
posibile pentru partiŃionarea mulŃimii de date şi selectează testul care aduce cel mai mare câştig
informaŃional. Dacă prin entropie înŃelegem „impuritatea” unei mulŃimi de exemple de antrenare S,
putem estima eficienŃa unui atribut pentru clasificarea acestor exemple. Câştigul informaŃional
(engl. “information gain”) măsoară reducerea aşteptată a entropiei cauzată de partiŃionarea
mulŃimii după valorile unui atribut A.
card ( S v )
IG ( S , A) = H ( S ) − ∑ H (Sv ) ,
v∈Val ( A ) card ( S )

unde Val(A) este mulŃimea valorilor atributului A, Sv este submulŃimea lui S pentru care
atributul A are valoare v, iar H(S) este entropia mulŃimii S cu n clase, fiecare cu probabilităŃile de
apariŃie pi:
n
H ( S ) = ∑ − pi log 2 pi .
i =1

Pentru fiecare atribut discret se propune un test cu un număr de rezultate egal cu numărul
de valori distincte ale atributului respectiv. Pentru fiecare atribut continuu se aleg teste binare care
implică toată gama de valori ale atributului. După găsirea partiŃiilor de date, procesul se reia în
mod recursiv asupra acestora. O altă caracteristică importantă a algoritmului este simplificarea
25
(engl. “pruning”) arborelui după terminarea învăŃării, adică eliminarea testelor care nu îşi aduc un
aport semnificativ la problema de decizie globală. O variantă ulterioară a algoritmului este C5,
utilizat în sisteme comerciale.

b) Algoritmi pentru extragerea regulilor asociative

Se da o baza de date cu tranzacŃii de vinzari şi se doreste să se descopere asociatii


interesante intre elementele de intrare, astfel incit prezenta unor elemente intr-o tranzactie să
implice prezenta altor elemente în aceeasi tranzactie.
S-a propus un model matematic. Fie I = { i1, i2,.., im } o serie de elemente şi D o serie de
tranzacŃii, unde fiecare tranzactie T fiind inclusa în I. Nu este importantă cantitatea cumparata
pentru fiecare element, ci doar daca elementul respectiv a fost cumparat sau nu. Fiecare tranzactie
este identificata în mod unic prin TID.

Baza de date D
TID Items
100 ACD
200 B CE
300 ABCE
400 BE
Fig.10 - Baza de date pentru reguli asociative.

Fie X un set de elemente. Presupunem ca tranzactia T contine X. O regula de asociere este


: X =>Y, unde X în I, Y în I, X/\Y=0. Gradul de incredere a regulii X =>Y este c, unde c% din
tranzacŃiile din D care contin X de asemenea contin Y. Gradul de suport al regulii X =>Y este s,
unde s% din tranzacŃii din D contin X\/Y. Fiind date un set de tranzacŃii D, să se genereze toate
regulile de asociere (sau un numar specificat) care au gradele de suport şi incredere mai mare decit
cele specificate de utilizator. Se selecteaza acele reguli care au gradele de incredere şi suport mari,
reguli puternice. Problema gasirii regulilor de asociere se poate descompune în 2 etape:
- Descoperirea seturilor de elemente largi, care au gradul de suport mai mare decat un
minim specificat s.
- Utilizarea acestor multimi de elemente pentru a genera regulile de asociere.
Cei mai populari algoritmi de asociere sunt Apriori, Hybrid, DHP, Partition precum şi
extensii ale acestora. Cel mai popular algoritm de extragere a regulilor asociative este algoritmul
Apriori. Schema acestui algoritm este prezentata în continuare:
Conditii initiale:

Lk = un set of elemente de cardinalitate k su care au un suport minim; Ck= un set de


candidati (k –itemsets); D = un set de tranzacŃii, t  D.

Algoritmul:
L1 = {frequent 1-itemsets};
for(k=2;Lk-1<>0;k++) {
Ck = multimea noilor candidati;
for all transactions t  D
for all k-subsets s of t
if (s  Ck) s.count++;
Lk = {c  Ck | c.count>= minsupp} }
Multimea elementelor care apar frecvent =  k Lk;
26
Pentru o problemă generală de extragere de reguli asociative, fiind date m elemente, sunt
potential 2m multimi de elemente frecvente. Descoperirea acestor multimi cere o putere de calcul
mare, memorie şi tehnici de I/O. Pentru fiecare iteratie a algoritmului baza de date este scanata
pentru generarea noilor candidati.

c) InducŃia regulilor

Această tehnică este similară cu arborii de decizie. Ea permite clasificarea datelor folosind
caracteristici de distincŃie. Rezultatul este dat de setul de reguli de tip if..then extrase din baza de
date. Procesul este unul de invatare supervizata, dintr-o mulŃime de exemple. Prin analizarea
acestor exemple se pot induce concepte generale care vor fi folosite pentru clasificarea datelor
viitoare. Clasificarea unor date de intrare ia sfirsit atunci când este îndeplinită o condiŃie de oprire.
Rezultatele date de un arbore de decizie pot fi transformate într-un set de reguli şi invers.
DiferenŃa dintre tehnicile bazate pe inducŃia regulilor şi cele bazate pe reŃelele neuronale
este că rezultatele primelor pot fi înŃelese de oameni. Tehnica poate fi aplicată pe o scală largă de
exemple, premiza importantă fiind existenŃa unor seturi istorice de date pentru învăŃare.

27
2.2 Tehnologii de programare a algoritmilor de Business Intelligence
2.2.1. MICROSOFT VISUAL STUDIO

Microsoft Visual Studio este principalul mediu de dezvoltare integrat (IDE) de la


Microsoft. El poate fi utilizat pentru a dezvolta aplicaŃii consolă, dar şi aplicaŃii cu interfaŃă grafică
precum Windows Forms, site-uri web, aplicatii web, servicii web atat în cod nativ, cat şi în cod
gestionat pentru toate platformele suportate de Microsoft: Windows Mobile,. NET Framework ,.
NET Compact Framework şi Microsoft Silverlight10.

Fig. 11 – Mediul de dezvoltare Visual Studio

Visual Studio include un editor de cod ce suportă IntelliSense şi refactoring. Alte unelte
cuprinse includ: un designer de formulare pentru construirea de aplicaŃii cu interfeŃe grafice, web
designer, designer de clase şi designer pentru proiectarea schemei bazei de date. Acesta permite
adaugarea de plug-în-uri pentru a îmbunătăŃi funcŃionalitatea la aproape orice nivel – de la
adăugarea de suport pentru sistemele de control sursă (cum ar fi Subversion şi Visual SourceSafe)
pana la adăugarea de noi toolset-uri precum editori şi designer vizual pentru limbaje specifice unui
domeniu sau toolset-uri pentru alte aspecte ale ciclului de viaŃă a software-ului de dezvoltare (cum
ar fi clientul de Team Foundation Server : Team Explorer).
Visual Studio suporta diverse limbaje de programare (într-o masură variabilă) de către
editorul de cod şi depanator, cu condiŃia ca un serviciu specific limbajului să fie autorizat.
Limbajele built-în includ: C / C + + (prin Visual C + +), VB.NET (prin Visual Basic. NET), C #
(prin Visual C #). Suport pentru alte limbaje, cum ar fi F#, Python, şi Ruby, printre altele, au fost
puse la dispoziŃie prin intermediul serviciilor de limbaje care trebuie să fie instalate separat. Se
10
http://en.wikipedia.org/wiki/Visual_studio
28
acceptă, de asemenea, XML / XSLT, HTML / XHTML, CSS şi JavaScript. Limbajele specifice
versiunilor de Visual Studio sunt însa într-un număr mai limitat şi sunt oferite în pachete denumite
Microsoft Visual Basic, Visual J #, Visual C #, Visual C + +.
Pană la apariŃia lui Visual Studio 2008, Micosoft a dezvoltat, treptat, începand cu anul 1998
urmatoarele versiuni de Visual Studio: Visual Studio 6, Visual Studio 2002, Visual Studio 2003,
Visual Studio 2005. Acestea au cunoscut un succes rasunator în toata lumea, fiind instrumentele
de capatai ale oricarui programator.
Visual Studio .NET Professional permite construirea rapidă a noilor generaŃii de servicii şi
aplicaŃii desktop şi web care se adresează oricărui echipament şi se integrează cu limbajele de
programare şi sistemele de operare existente.

Framework-ul .NET

Fig. 12 – Framework .NET

.NET Framework este modelul de programare al mediului .NET pentru dezvoltarea,


depanarea, şi rularea aplicatiilor Web, Desktop, Smart client, XML Web services. .NET
Framework include CLR (Common Language Runtime) şi librarii de clase.
Common Language Runtime (CLR) este responsabil pentru rularea serviciilor legate de
integrarea limbajului, securitatea executiei, memorie, procese, şi managementul firelor de executie.
În plus, mai include o multime de facilităŃi care duc la scaderea semnificativa a liniilor de cod
scrise de programator pentru realizarea uni program. Arhitectura .NET se prezintă astfel:

29
Fig. 13 – Evolutia framework-ului .NET

.NET Framework 3.5 vine cu multe modificari fata de versiunea lansata anterior 2.011:
a. modulul “3.0″ : WPF (Windows Presentation Foundation), WCF (Windows
Communication Foundation), WF (Workflow Foundation)şi CardSpace - seturi bogate de clase
pentru prezentare / UI, comunicatie intre aplicatii unitarizata, management de fluxuri şi
administrare a identitatii.
b. LINQ - un metalimbaj de interogare gen SQL direct din codul .NET. „LINQ to
SQL” formează pratic un ORM autentic. ORM (Object Role Modeling) reprezintă o descriere
generală a bazei de date, utilizând simboluri intuitive (pentru obiecte şi atribute) şi un limbaj
natural pe care atât utilizatorii cât şi proiectanŃii bazei de date le pot întelege şi care verbalizează
(exprimă) relaŃiile dintre acestea, utilizând o gama larga de constrângeri care surprind şi forŃeaza
regulile de business. Exista şi LINQ to XML, LINQ to Entities şamd.
c. ASP.NET AJAX (anterior denumit “Atlas”) este integrat alaturi de noile funcŃionalităŃi
ASP.NET
d. C# 3.0 cu proprietăŃi automate, iniŃializatoare automate de obiecte şi de colecŃii; metode
extensie pentru clase existente; expresii lambda (expresii ce au ca rezultat o functie); clase
anonime şi asa mai departe
e. Optimizari ale Garbage Collector-ului

Visual Studio 2008 pe de altă parte vine şi el cu multe lucruri noi :

a. PerformanŃă mărită
b. JavaScript intellisense şi debugging
c. CSS intellisense
d. Split-view la pagini ASP.NET .markup / WYSIWYG (este un acronim pentru „what you
see is what you get”, expresie engleză ce se traduce aproximativ cu: "ceea ce se obŃine este chiar
ceea ce se vede)
e. Multi-targetting support ( poŃi scrie un proiect/soluŃie pentru .NET 3.0, 2.0 sau 3.5)
f. Syndication Framework
g. Unelte Silverlight

11
http://ro.wordpress.com/tag/visual-studio/
30
2.2.2. DEVEXPRESS

Implementarea unei soluŃii de tip BI este o mare provocare atât pentru specialiştii din
domeniul managementului, cât şi pentru cei din domeniul informatic. Pentru a reuşi o finalizare cu
succes a unui astfel de sistem s-a recurs la utilizarea unor componente „third-party”: componente
dezvoltate de alte companii care ofera un API (Application Programming Interface) ce permite
integrarea acestor librarii cu sistemul de BI dezvoltat.
Developer Express este o companie producătoare de software cu sediul în Statele Unite.
Aceasta creează componente şi unelte de asistare pentru dezvoltatori în diverse limbaje de
porgramare precum: Borland Delphi, C++ Builder şi Microsoft Visual Studio. Cea mai mare parte
a liniei de produse sunt componente de VCL, .NET Windows Forms şi ASP.NET care creeaza
elemente de UI specifice pentru Microsoft Winodows şi pentru aplicatiile Microsoft
Office.
Comunitatea Devexpress cuprinde peste 17.000 de utilizatori la ora actuala şi
este în continuă creştere. Produsele lor oferă rapiditate şi uşurinŃă în dezvoltare şi o
interfaŃă grafică atractivă.
Developer Express a câştigat numeroase premii din industrie pentru produsele
sale. Pe data de 6 iunie 2008, DevExpress a anunŃat că Dxperience a fost numit
castigator al “Best of Tech-Ed 2008 Developer Attendee's Pick Award” de către Penton
Media's Windows IT Pro® and SQL Server Magazine®.

Fig. 14 - DevExpress Demo Center

Componentele DevExpress utilizate în dezvoltarea aplicaŃiei sunt:


 XtraChart Suite - librarie de generare de grafice
 XtraPivotGrid Suite – oferă implementarea tabelelor pivot cu posibilitatea grupărilor
dupa diverse criterii, interschimbarea dimensiunilor şi atributelor prin operaŃii de drag
and drop, precum şi numeroase alte facilităŃi. Este utilizat pentru a construi rapoarte
succinte, astfel incât utilizatorii finali să poata analiza facil şi rapid cantităŃi mari de date
 XtraReports Suite – utilizat pentru a creea rapoarte dinamice cu posibilităŃi de exportare
in format HTML, PDF, CSV, Imagini, fişiere Excel, etc.
 XtraGrid Suite – componentă similară cu DataGrid-ul din framework-ul de .NET cu
capacităŃi extinse de grupare autoamată prin drag and drop, crearea de totaluri şi
subtotaluri şi oferind în acelaşi timp o interfaŃă grafică plăcută.
31
2.2.3 APLICAłII OPEN SOURCE

Open source descrie practica de a dezvolta anumite produse finite, permiŃând accesul
utlizatorilor să acŃioneze liber asupra procesului de producŃie sau dezvoltare. Unii specialişti
definesc "open source" ca un concept filozofic iar alŃii consideră că este o metodologie pragmatică.
Fiind foarte frecvent utilizat în dezvoltarea de programe software, mulŃi specialişti în
elaborarea de programe au impresia că "open source" este o noŃiune specifică acestei activităŃi. În
realitate, "open source" se poate aplica în orice domeniu în care se produce sau dezvoltă un produs.
Există exemple de asemenea aplicaŃii şi în tehnologie, medicină, învăŃământ, cultură şi altele.
Open-source reprezintă dezvoltarea de programe software de către o comunitate, de către o
companie sau de către o persoană şi oferirea lor spre folosire sau îmbunătăŃire sub licenŃă GPL.
Software-ul liber e caracterizat de libertatea acordată utilizatorilor săi de a-l utiliza, copia,
distribui, studia, modifica şi îmbunătăŃi. Mai exact, e vorba de patru forme de libertate a
utilizatorilor săi12:

o Libertatea de a utiliza programul, în orice scop (libertatea 0).


o Libertatea de a studia modul de funcŃionare a programului, şi de a-l adapta nevoilor
proprii (libertatea 1). Accesul la codul-sursă este o precondiŃie pentru aceasta.
o Libertatea de a redistribui copii, în scopul ajutorării aproapelui tău (libertatea 2).
o Libertatea de a îmbunătăŃi programul, şi de a pune îmbunătăŃirile la dispoziŃia
publicului, în
folosul întregii societăŃi (libertatea 3). Accesul la codul-sursă este o precondiŃie pentru
aceasta.

Iată o serie de motive pentru care software-ul poate fi dezvoltat (mai bine) în stil ``liber''
decît ca secret comercial.
Depanarea se poate face în paralel. Cu cît mai mulŃi inşi utilizează un program cu atît e mai
simplu de depistat ce nu merge bine.
Fiabilitatea programelor free este mult mai bună decît a celor comerciale, datorită faptului
că practic oricine poate căuta şi depana bug-uri.
Rata de inovare este mult sporită de prezenŃa software-ului free; o soluŃie odată descoperită
este disponibilă tuturor, şi pe baza ei se poate construi o alta şi mai eficace.
ComunităŃi şi aplicatii open source implicate în dezvoltarea aplicaŃiei:
Open Forecast – librarie de functii de prognoza ce implementeaza diverşi algoritmi de
analiză a seriilor de date.
The Code Project – o comunitate web de dezvoltatori ce cuprinde peste 4.1 milioane
utilizatori şi oferă articole şi aplicatii din diverse domenii.
KdKeys.net - comunitate de data mining. Cuprinde în jur de 42,973 utilizatori.
Sourceforge - este cea mai mare sursă de dezvoltare de software open source.
SourceForge.net oferă găzduire gratuită a software-ului Open Source, proiecte de dezvoltare cu
resurse centralizate pentru gestionarea proiectelor, problemelor, comunicaŃiei şi codulului. Proiecte
intregistrate: 179,981, utilizatori: 1,873,929.
Codeplex.com – wesite pentru gazduirea proiectelor open source oferit de Microsoft

12
http://ro.wikipedia.org/wiki/Open-source
32
CAPITOLUL 3. PROPUNEREA ŞI REALIZAREA UNEI SOLUłII
INFORMATICE DE BUSINESS INTELLIGENCE

3.1 Descrierea cerinŃelor funcŃionale

InformaŃia reprezintă sângele organizaŃiei. Astăzi multe organizaŃii se luptă să ofere


informaŃia potrivită, persoanelor potrivite la timpul potrivit, pentru a-i ajuta să ia cele mai bune
decizii. Când este corect canalizată, informaŃia nu numai că îmbunătăŃeşte deciziile luate, dar
devine un mijloc de comunicare şi de aliniere la strategia organizaŃiei.
Noua aplicaŃie îşi propune să:
 extragă date din toate aplicaŃiile operaŃionale şi să le furnizeze în diferite moduri
(rapoarte, dashboard-uri, documente etc.).
 ofere suport pentru înŃelegerea informaŃiilor organizaŃionale cu ajutorul soluŃiilor
complete de raportare, interogare şi analiză
 ofere instrumente care să sprijine conducerea afacerisi într-un mod cât mai eficient.
Din punct de vedere funcŃional, aplicaŃia oferă un set de operaŃii pentru extragerea,
transformarea şi prezentarea informaŃiilor din bazele de date operaŃionale, precum şi din alte surse
de date.
Prima etapă este cea de definire de date. Datele pot fi colectate din mai multe surse
simultan, creând depozite de date sau concentrari de date (data marts) . Sursele ar putea include:
baze de date SQL Server, Access, documente Excel, fisiere text, HTML, XML, CSV, etc. Datele
pot fi gestionate atât local, cât şi la distanŃă prin specificarea conexiunii la serverul de date. Pentru
o flexibilitate maximă, s-a folosit componenta MSDASC (Microsoft Data Access Services
Component), care permite definirea diverselor tipuri de conexiuni prin specificarea provider-ului
de baze de date corespunzator.
Dupa colectarea datelor, acestea sunt prelucrate prin aplicarea de: filtrări, selecŃii, proiecŃii,
etc. pentru a obtine acele seturi de date care sunt importante în analiza ulterioară a domeniului
aplicaŃiei modelate. Selectarea, transformarea şi curăŃarea datelor este o etapă extrem de
importantă, pentru că aceasta reprezintă etapa de temelie în proiectarea modelului logic al afacerii.
Odată definite seturile de date, se trece la etapa de modelare. În această etapă se specifică
modurile de vizualizare ce includ: tabele, cuburi, grafice, rapoarte. Fiecare dintre acestea poate
furniza o nouă perspectivă asupra datelor, utilizarea lor depinzând de obiectivele care se urmaresc
la elaborarea modelului.
A treia etapa este cea de prezentare. În această etapă se pot include în cadrul unor aplicaŃii
unul dintre modelele de vizualizare prezentate anterior sau o combinaŃie a acestora conŃinute într-
un dashboard compozit. Această abordare prezintă avantajul unei securităŃi sporite, prin furnizarea
utilizatorului final accesul doar la acele date care cuprind aria să de interes. Un alt avantaj este
posibilitatea de salvare a modelului. Odata creat modelul (aplicaŃia) acesta nu mai necesită niciun
alt efort din partea utilizatorului.
Ultima etapă este cea de analiză. Este etapa în care se aplică algoritmi de data mining,
previziune, inteligenŃă artificială, statistică pentru extragerea informaŃiilor din date. Astfel aplicaŃia
devenind un instrument extrem de uşor şi util de monitorizare şi analiză pe baza căreia managerul
îşi va construi suportul pentru decizii.

33
3.2 Analiza sistemului informatic propus

Analiza unui sistem informatic este văzută ca un proces de specificare a structurii şi a


funcŃiilor sistemului independent de mijloacele de implementare sau de descompunerea fizică pe
componente.

3.2.1 Nivelul cazurilor de utilizare

Un caz de utilizare este o mulŃime de scenarii referitoare la utilizarea unui sistem. O


definiŃie mai aprofundată a cazurilor de utilizare ar fi descrierea acestora drept interacŃiunea dintre
un utilizator şi un sistem informatic. Fiecare scenariu descrie o secvenŃă de evenimente care poate
fi iniŃiată de o persoană, de un alt sistem, de un alt dispozitiv sau chiar de trecerea timpului.
EntităŃile care iniŃiază o secvenŃă de evenimente sunt denumite actori.
Actorii specifică ceva ce există în afara sistemului şi interacŃionează cu acesta. Acelaşi
utilizator poate juca rolul mai multor actori, aşa cum mai mulŃi utilizatori pot juca acelaşi rol, şi
astfel interacŃioneaza ca acelaşi actor.
OperaŃia de identificare a actorilor revine la a stabili următoarele aspecte:
o cine foloseşte în mod direct sistemul / cine interacŃionează în mod direct cu sistemul;
o cine este responsabil de administrarea sistemului;
o cine doreste sau este interesat de informaŃiile aflate în sistem;
o alte sisteme cu care acesta interacŃionează.

3.2.1.1 Identificarea actorilor

OperaŃia de identificare a actorilor stabileşte care sunt entităŃile interesate de utilizarea


sistemului sau de interacŃiunea cu acesta.
AplicaŃia de Business
Intelligence este în general destinată
celor care iau deciziile în cadrul unei
organizatii şi care vor să-şi
fundamenteze deciziile pe baza unui
suport teoretic solid şi bine documentat.
Prin urmare utilizatorii finali sunt în
general managerii de la diverse nivele:
operational, tactic, strategic. Deoarece
este extrem de importantă consultanŃa în
crearea unui model organizational, de
cele mai multe ori managerii apelează la
analişti care să le ofere consultanŃă în
proiectare.
Fig. 15 – Utilizatorii soluŃiei de BI
Prin urmare, actorii sistemului sunt:

Analiştii – cei care ajută la construirea şi definirea modelului afacerii.


Managerii – consumatori finali ai aplicatiei.
34
3.2.1.2 Identificarea şi prezentarea cazurilor de utilizare

Cazurile de utilizare specifică ce trebuie să facă sistemul ca răspuns către actori. RelaŃia
dintre un actor şi un caz de utilizare este reprezentată numai când actorul participă la execuŃia
cazului de utilizare, nu şi când actorul este beneficiarul cazului de utilizare fără a participa la
efectuarea acestuia. Deci, un caz de utilizare este o mulŃime de scenarii referitoare la utilizarea
unui sistem.

A. Diagrama generală a cazurilor de utilizare

Date

Manager nivel
Creare model operational
<<realize>>
<<include>>

Salvare model Manager Manager


Analist BI
nivel tactic
<<include>>

Analiza Manager nivel


strategic

Cunostinte Decizii

Fig.16 – Diagrama generală a cazurilor de utilizare

35
B. Prezentarea detaliată a cazurilor de utilizare

B.1 Cazul de utilizare „Creare Model”

Date

<<include>> Specificare conexiuni

<<include>>

Definirea datelor Selectia datelor


<<include>>

<<include>>
Crearea surselor
Analist BI
(f rom BIS - Modelul UI <<realize>>
(contine clasele de interf ata))

Manager
Definirea vizualizarilor Selectare sursa
(f rom BIS - Modelul UI
(contine clasele de interf ata)) <<realize>> Raport
<<include>>

Tabel
Selectare model

Crearea aplicatiilor
Grafic

model Cub

Fig.17 - Detalierea cazului de utilizare Creare Model

Actorul este Analistul, sau Managerul care poate fi prin extensie considerat un analist dacă
este cel care se ocupă de proiectarea modelului afacerii. Crearea porneşte de la date şi se
finalizează printr-un model. Această evoluŃie se poate urmări în cadrul diagramei pe verticală.
Prima etapa este cea de definirea a datelor, care cuprinde la randul sau:
 specificarea conexiunilor,
 procesele ETI (Extragere, Transformare, Incarcare) specifice şi
 definirea seturilor de date (colecŃii de date sub formă de tabele sau dataset-uri).
Următorul caz de utilizare se referă la definirea vizualizărilor. Acesta include două
subcazuri de utilizare :
1. Selectarea sursei - este necesară deoarece vizualizarea se creează pe baza unor
informaŃii concrete
2. Selectarea modului de vizualizare - adică una dintre cele 4 reprezentari: tabel, raport,
grafic, cub.
Ultimul caz de utilizare în definirea modelului este crearea aplicaŃiilor (modele compozite)
care includ definirea anterioară şi selectarea perspectivelor asupra datelor grupate dupa domenii şi
utilizări concrete.

36
B.2 Cazul de utilizare „Analiză Date”

Segmentarea/Clusterizar
ea

Modele descriptive Identificarea modificarilor


si deviatiilor

Clasificarea

Analiza dependentelor
Manager intre legaturi
(f rom BIS - Modelul UI
(contine clasele de interf ata))

Model de regresie
polinomiala

Model de predicitie Naive


Modele predictive
Modelul mediei glisante

Model exponential

Fig.18 - Detalierea cazului de utilizare „Analiză Date”

Cazul de utilizare „Analiză date” se referă la utilizarea tehnologiilor de Data Mining pentru
extragerea cunoştinŃelor din date. Acest lucru se realizează prin utilizarea diverşilor algoritmi de
inteligenŃă artificială, data mining, statistică, etc. prezentate detaliat în capitolul 2 al acestei lucrări.
Modelele de analiză se axează în principal pe 2 directii:
o Modele descriptive
o Modele predictive
Modelele descriptive încearcă să clasifice, sorteze, organizeze datele pentru a identifica
regularităŃi, dependenŃe, grupări diverse, etc.; pe cand modelele predictive încearcă să estimeze o
evoluŃie posibilă a datelor pe baza informaŃiilor istorice furnizate. Acest modul al aplicaŃiei
încearcă să implementeze cat mai multe dintre cunoştinŃele din domeniile prezentate. Optimizarea
şi utilizarea mai pe larg a acestor algoritmi rămâne a fi însă una dintre direcŃiile de dezvoltare
propuse pentru acest sistem informatic.
37
3.2.2 Nivelul logic

Pentru modelarea dinamicii sistemului, UML furnizează două tipuri de diagrame:


diagramele de interacŃiune (diagrama de secvenŃă şi diagrama de colaborare) şi diagramele de
comportament (diagrama de stare pentru clasele cu comportament dinamic). Acestea oferă o
perspectivă din interior a sitemului permiŃând astfel o îmbunătăŃire permanentă.
Diagramele de interacŃiune permit specificarea în detaliu a modului în care obiectele
interacŃionează pentru a executa o anumită sarcină. Principala utilizare a acestor diagrame este de a
ilustra modul în care sistemul realizează un caz de utilizare sau un anumit scenariu dintr-un caz de
utilizare. Ele reprezintă o interacŃiune care cuprinde o mulŃime de obiecte şi relaŃiile dintre ele,
inclusiv mesajele care circulă între acestea. Diagramele de interacŃiune reflectă vederea dinamică
de design şi de proces asupra sistemului.

3.2.2.1 Diagramele de secvenŃă

Diagrama de secvenŃă este una dintre cele mai potrivite pentru a modela interacŃiunile între
obiectele sistemului. O diagramă de secvenŃă pune în evidenŃă transmiterea mesajelor de-a lungul
timpului. Obiectele şi actorii sunt reprezentaŃi la capătul de sus al unor linii punctate. Aceste linii
reprezintă linia de viaŃă a obiectelor, adică timpul cum este el perceput de către obiecte. Scurgerea
timpului este reprezentată în cadrul diagramei de sus în jos. Un mesaj se reprezintă printr-o săgeată
de la linia de viaŃă a obiectului care trimite mesajul la linia de viaŃă a celui care-l primeşte. Ordinea
în care sunt reprezentate obiectele (de la stânga la dreapta) nu contează, dar pentru claritate este
mai bine ca obiectele să fie aşezate în ordinea în care iau parte la interacŃiune. Timpul cât un obiect
este activat este reprezentat ca un dreptunghi subŃire care acoperă bine linia de viaŃă.

38
Utilizator Business UI Model Date Data Access Modul analiza

Definire conexiune Creare obiect conexiune Testare conexiune

Returnare obiect

Definitie conexiune

Conexiune

Definire sursa Creare dataset Get Data

Returnare obiect Incarcare date


Vizualizare date

Definire Vizualizare Creare model

Return model
Afisare

creare aplicatie Definire obiect

Return aplicatie

Aplicatie noua

Analiza date Solicitare prelucrare


Procesare

Return rezultat

Afisare

Fig.19 - Diagrama de secvenŃă

39
3.2.2.2 Diagrama de colaborare

Diagrama de colaborare reprezintă o alternativă la diagrama de secvenŃă pentru modelarea


interacŃiunilor între obiectele sistemului. În timp ce în diagrama de secvenŃă accentul cade pe
succesiunea cronologică a mesajelor, în diagrama de colaborare accentul se pune pe identificarea şi
înŃelegerea tuturor efectelor pe care scenariul le are asupra unui obiect.
Obiectele care interacŃionează pentru a executa o sarcină împreună cu legăturile dintre ele
formează o colaborare. Într-o diagramă de colaborare, interacŃiunea este repezentată de secvenŃa de
mesaje care sunt transmise între obiecte.
Obiectul este reprezentat printr-un dreptunghi în care sunt scrise fie numele obiectului şi
numele clasei, iar legăturile dintre obiecte sunt reprezentate printr-o linie care uneşte două obiecte
şi arată că un eveniment se propagă de la un obiect la altul. Se poate crea o legatură între obiecte
numai dacă există o asociere între clasele corespunzătoare.
Diagrama de colaborare pune accentul pe organizarea structurală a obiectelor care trimit
şi primesc mesaje.

3: Testare conexiune
9: Get Data

2: Creare obi ect conexi une Model Data


8: Creare dataset Date Access
14: Creare model
4: Returnare obiect
1: Definire conexiune 18: Defini re obiect
10: Incarcare date
7: Definire sursa
13: Defi ni re Vi zualizare
17: creare apli cati e
5: Definiti e conexi une
21: Analiza date
11: Returnare obiect
Utilizator Busines 15: Return model
s UI 19: Return aplicatie

6: Conexiune
12: Vizualizare date
16: Afisare
20: Aplicati e noua 22: Soli citare prelucrare
25: Afisare
23: Procesare

24: Return rezultat

Modul
analiza

Fig.20 - Diagrama de colaborare

3.2.3 Nivelul static


Diagramele de clase sunt făcute pentru a specifica structura statică a sistemului, adică ce
clase există în sistem şi care sunt legăturile dintre ele. Cazurile de utilizare, precum şi scenariile
rafinate textual formează baza creării diagramei iniŃiale a claselor.
Diagrama claselor este cea mai importantă diagramă în cadrul analizei şi proiectării
orientate obiect. Scopul diagramei claselor este de structură natura statică a obiectelor în termeni
de atribute, operaŃii şi asocieri. O diagramă a claselor descrie modul în care sistemul este organizat,
spre deosebire de diagrama cazurilor de utilizare, care prezintă comportamentul sistemului13.

13
C. Bodea – „Sisteme informatice economice. Analiza si proiectarea orientate obiect utilizand UML”
40
3.3 Etapa de proiectare
3.2.3.1 Diagrama de clase

41
Fig.21 Analiza nivelului static cu ajutorul diagramei claselor (pentru nivelul
application layer)
3.3 Proiectarea şi implementarea soluŃiei de Business Intelligence

Există două obiective principale pe care le urmărim în proiectarea unui sistem informatic:
obŃinerea cât mai rapidă a sistemului care să respecte toate cerinŃele actuale la un preŃ cât
mai scăzut;
construirea unui sistem uşor de întreŃinut şi adaptat pentru a răspunde unor viitoare cerinŃe.
Accentul cade de această dată pe detaliile concrete ale implementării sistemului. Fiecare
dintre modelele abordate vin să completeze diagrama claselor / obiectelor.

3.3.1 Proiectarea sistemului cu ajutorul diagramei de componente

O componentă este un grup de obiecte sau componente care interacŃionează cu scopul de a


furniza un serviciu. O componentă este similară unei cutii negre pentru care serviciile sunt
specificate prin interfaŃa sau interfeŃele sale, fără a se preciza nimic despre componenŃa sau
implementarea internă a componentei.
O preocupare esenŃială pe parcursul proiectării este stabilirea arhitecturii sistemului. S-a
optat pentru un sistem multi-tier cu obiecte specializate pentru interfaŃa cu utilizatorul şi logica
aplicaŃiei, fiecare putând potenŃial să ruleze pe o altă platformă.
O posibilitate de a gestiona o astfel de arhitectură complexă este împărŃirea diagramei
claselor în trei secŃiuni diferite care să evidenŃieze clasele ce descriu interfaŃa cu utilizatorul
(business layer), clasele responsabile de logica aplicaŃiei (application layer) şi clasele pentru
stocarea datelor (data layer).

DevExpress AGauage
(framework ce continte controale pentru interfata)

BIS - Modelul UI
(contine clasele de interfata) SharpZLib
(crearea arhive zip)

Model date Open Forecast


(Contine definirea structurilor si claselor modelului de date) (algoritmi previziune)

Data Mining
MSDASC (algoritmi analiza date)
(Microsoft Data Access Components)

.NET
Framework

Fig.21 - Diagrama de componente

42
3.3.2 Modelarea distribuirii şi implementării

Diagrama de desfăşurare este utilizată pentru a modela configuraŃia elementelor de


procesare la momentul execuŃiei şi distribuŃia componentelor software, proceselor şi obiectelor pe
aceste elemente de procesare.
O diagramă de desfăşurare descrie structura sistemului în momentul execuŃiei.Ea arată:

 legăturile fizice dintre elementele hardware ( calculatoare şi alte resurse precum


imprimante);
 legăturile dintre elementele hardware şi procese (ce process rulează pe ce calculator.

În practică în diagramele de desfăşurare se folosesc în general pentru a reprezenta sisteme


distribuite complexe, pentru a pune în evidenŃă legăturile dintre noduri şi dependenŃele dintre
componente la momentul rulării.

CRM
SURSA
DATE

EXTRAGERE TRANSFORMARE INCARCARE


ERP Server aplicatie
SURSA
DATE

DATE SURSA
BAZE DATE DATE
(CONCENTRARI

Fig. 23 – Diagrama de procese şi componente

Procesele sunt distribuite geografic pe diverse servere de procesare. Datele provin din surse
externe (aplicatii CRM, ERP, sisteme tranzacŃionale sau alte surse diverse de date). Primul proces
urmărit este cel de extragere a datelor. InformaŃiile rezultate sunt stocate în baze de date (sau
concentrari de date). Prin procesele succesive de transformare, rezultă surse de date mai mici şi
mai usor de modelat care cuprind un segment specific de analiză (de exemplu o analiză a unui
departament din cadrul unei organizaŃii). Prin încarcarea acestor informatii pe serverul de aplicaŃii,
se obtine o imagine grafică şi numerică detaliată a proceselor de afaceri.

43
3.4 Realizarea interfeŃelor, rapoartelor şi prezentărilor

AplicaŃia este intuitivă şi usor de utilizat. Urmăreşte etapele esenŃiale în definirea


modelului de afacere şi ghideaza utilizatorul în realizarea acestor paşi.
În stanga urmărim elementele componente ale proiectului, care sunt grupate în 3 categorii:
 surse
 vizualizari
 aplicatii
Sursele sunt definite prin raportare la o conexiune la o bază de date locala sau la distanŃă.
Utilizatorul poate defini un număr nelimitat de conexiuni la diverse baze de date pe care le poate
gestiona simultan, astfel rezolvând problema dilemei datelor.
De menŃionat este faptul că prin utilizarea componentei MSDASC (Microsoft Data Access
Services Component) se poate obŃine conexiunea la orice tip de SGBD sau fişier de baze de date:
SQL Server, Oracle, Fox Pro, MS Access şi chiar şi fişiere Excel. AplicaŃia devine astfel total
independentă de platforma pe care au fost dezvoltate şi colectate datele din interiorul organizaŃiei.

Fig 24 – Componenta MSDASC ce permite crearea unei conexiuni la orice tip de SGBD

Odată definită o conexiune, aceasta este memorată pentru un acces mai rapid la date.
O sursa reprezintă o colectie limitata de date din cadrul unei baze de date. Poate fi un tabel,
o viziune sau o selecŃie mai restransă sau mai extinsă de date.Utilizatorul poate defini oricâte surse,
cuprinzând astfel toate elementele importante în analiza ulterioară. În această etapă se realizează de
asemenea selecŃia şi filtrarea datelor, pentru a elimina acele informaŃii care nu sunt utile analizei.
Cea de a doua grupare, „Vizualizari” cuprinde cele patru tipuri de reprezentare a datelor:
Tabel, Raport, Cub, Grafic.

44
A. Componenta de vizualizare „Tabel”

Un tabel din cadrul sectiunii de vizualizări oferă o modalitate sintetică şi sugestivă de


afişare a datelor. Această modalitate de reprezentare este utilizată de foarte multe ori atunci când se
doreşte observarea elementelor concrete conŃinute în sursele de date. FuncŃionalităŃile oferite de
această componentă permit afişarea, sortarea, gruparea, filtrarea, manipularea, sintetizarea şi
imprimarea datelor.
Elementele se pot grupa dupa diverse criterii, se pot realiza totalizari (sume, medii,
deviaŃii, etc) atât pentru toate elementele, cat şi pentru fiecare dintre subgrupurile obŃinute.
Această componentă permite accesul rapid şi uşor la informaŃiile firmei şi simplifică
explorarea datelor complexe.

Fig 25 – Exemplu de reprezentare a datelor utilizând componenta de vizualizare „Tabel”

B. Componenta de vizualizare „Raport”

Un raport este o colecŃie de date informatice structurate pentru a oferi o anume informaŃie.
De cele mai multe ori raportul se prezintă sub o forma de listă sau tabele: lista clienŃilor dintr-un
judeŃ sau tabel cu cantităŃile de materie primă necesare pentru producŃia unui reper.
Fie că vorbim de statul de salarii individual, cunoscut sub numele de fluturaş, fie de o
situaŃie a facturilor, chiar si de o factura în sine, toate aceste documente sunt rapoarte.
Raportul este elementul care intervine cel mai frecvent între utilizator şi sistemele
informatice, atunci când vorbim de extragere de date. O particularitate interesantă este că nu e
nevoie neaparat de acces la calculator: raportul se poate primi şi pe o bucată de hârtie.
Avantajele utilizării componentei de raportare:
 Reprezintă cel mai important mecanism de regăsire a datelor din sistemele
informatice.
 Majoritatea covârşitoare a documentelor tipărite sunt rapoarte.
 Necesită foarte putine resurse pentru administrare.
45
 Rapoartele sunt flexibile, pot fi adaptate la orice sistem informatic existent şi pot fi
configurate conform cerinŃelor beneficiarilor.
 Facilitarea accesului la informaŃie. Rapoartele se pot obtine prin mail, prin internet,
acasa sau direct la şedinŃa cu clientul.
 Informarea de îndată ce datele sunt disponibile: reducerea timpilor morŃi.
 Adaptarea rapoartelor la stilul de lucru al unei persoane asigură o excelentă
productivitate.
 Delegarea execuŃiei rapoartelor se masoara în economia de timp care poate fi folosit
în alte scopuri.
 Rapoartele pot fi arhivate cu foarte mare uşurinŃă, în diverse formate accesibile
utilizatorului (PDF, HTML, CSV, RTF, XLS, BMP), şi pot fi regasite în caz de
nevoie cu aceeaşi uşurinŃă.
 Accesul la informaŃie este restricŃionat pentru persoanele neautorizate .
 Rapoartele nu necesită o infrastructură hardware complexă sau costisitoare.
FuncŃionând în majoritatea cazurilor pe staŃiile de lucru ale utilizatorilor,
scalabilitatea este excelentă.

Fig. 26 -27 Exemple de situaŃii de ieşire obŃinute de sistemul de BI

46
C. Componenta de vizualizare „Cub”

Componentă caracteristică a analizelor multidimensionale, cubul oferă posibilitatea


evaluării şi inŃelegerii datelor în contextul lucrului cu mai multe atribute ale setului de date.
Aceasta se realizează prin tratarea fiecarui atribut al tabelei ca o dimensiune separata (durată, cost,
distanŃă, etc). Acest cub constă din valori cantitative (cunoscute sub numele de măsuri) şi categorii
descriptive (cunoscute sub numele de dimensiuni).
Cubul permite unui utilizator să extraga şi vizualizeze uşor şi selectiv informaŃii din diferite
perspective. De exemplu, un utilizator poate solicita ca datele să fie analizate şi comparate între
diferite produse, regiuni şi perioade. Utilitatea pentru organizaŃii este abilitatea de a-şi analiza
superior datele în scopul de a furniza viziunea necesară luării deciziilor.
Implementarea este un element de tip Pivot Grid ce permite interschimbarea
dimensiunilor, analize statistice primare a seriilor de date şi vizualizare grafică a datelor
reprezentate. Asupra datelor se pot aplica: grupări, sortări, filtre, reprezentări grafice, export către
diverse tipuri de formate, etc. Cubul oferă posibilitatea de a localiza intersecŃia dimensiunilor
(toate produsele vândute într-o regiune, la un anumit preŃ, pe parcursul unei anumite perioade de
timp) şi a le afişa. Atributele, cum ar fi perioadele de timp pot fi defalcate în sub-atribute.

Fig 28 – Reprezentarea cubului utilizând Pivot Grid

47
D. Componenta de vizualizare „Grafic”

Graficele au fost create utilizând setul de componente XtraChart a librăriei DevExpress


care oferă o gamă largă de opŃiuni de vizualizare: grafice bi şi tridimensionale, bare, arii, diagrame
circulare şi radiale, reprezentări discrete, etc. Graficele surpind evoluŃia datelor într-o manieră mai
concinsă şi mai uşor de înŃeles, de aceea sunt un element indispensabil în analiză.
În bara de meniu a modului de grafice, regăsim diverse opŃiuni de vizualizare:
- alegerea tipului de grafic (bare, linii, grafice circulare, radiale, etc)
- nuanŃa seriilor de date
- titlul graficului şi semnificaŃia seriilor de date reprezentate pe axele X şi Y.
- Pentru graficele circulare se poate opta pentru reprezentarea datelor în formă
procentuală sau valorică
- opŃiuni de export.
Pentru a putea creea un grafic, primul pas este selectarea unei surse dintre cele definite
anterior. Utilizatorului îi va fi oferită o listă cu toate câmpurile numerice conŃinute în setul de date
respectiv. Câmpul ales reprezintă atributul obiectiv reprezentat pe axa Y.
Pentru prima dată când este încărcat, graficul este format dintr-un singur grup, iar valoarea
reprezentată este totalul general al atributului obiectiv.
Pentru a facilita analiza datelor, informaŃiile se pot scinda în serii şi/sau grupuri.
Un tip de grafic mai special este indicatorul. Această reprezentare este foarte utilă în
analiza indicatorilor de performanŃă ai organizaŃiei şi prezintă măsura în care un anume obiectiv
propus a fost atins.
Graficele sunt cea mai intuitivă şi uşor de înŃeles modalitate de reprezentare a datelor şi
este de cele mai multe ori preferată în analiza seriilor de date.

Fig 29 - 30 – Exemple de grafice realizate de sistemul informatic de BI

48
E. Modulul de analiză şi extragere a cunoştinŃelor din date

Implementarea arborilor de decizie cu ajutorul algoritmului ID3

Arborii de decizie sunt arbori de predicate "crescuŃi" pe baza unor date de intrare şi permit
invăŃarea de reguli (conjuncŃii de predicate) ce conduc la câteva concluzii reciproc exclusive.
Iata problema si cum a fost construit acest arbore: în urma analizei unor dosare de creditare,
au rezultat un set de date ce conŃin: vârsta solicitantului, durata de angajare, valoarea creditului,
venitul familiei şi decizia luată pentru cazul respectiv. Pe baza acestor date, arborele de mai jos a
fost construit cu scopul de a detecta reguli care determină decizia de creditare.
In timpul antrenarii (construirii) arborelui, pe baza unor calcule, se determina ca cea mai
buna separare intre diversele atribute şi se face o separare în funcŃie de venitul solicitantului. Cu
asta am obtinut primul nivel ar arborelui (prima partitionare sau primul split). Procesul continua la
fiecare nod de pe acest nivel, pentru persoanele din setul initial care satifac conditia acelui nod.
Procesul se incheiem in general, fie atunci cand un nod din arbore are prea putine persoane
sau nu exista un criteriu care sa separe intre pentru acel nod.
In final, fiecare nod este un predicat si reprezinta (impreuna cu toată calea de la parinte
pana la el) un predicat compus, o regula ce conduce la o anume distributie a chiriasilor si
proprietarilor.
O "frunza" in acest arbore va fi descrisa, deci, de o regula (obtinuta prin citirea arborelui de
la radacina pana la frunza) .

Fig 31 – Implementarea algoritmului ID3 pentru arbori de decizie

49
Previzionare utilizand regresia liniara

Modulul de previzionare incearca determinarea uneri regularitati in setul de date analizat si


obtinerea unei functii care sa aproximeze cat mai bine datele discrete reprezentate. Algoritmul
utilizat este modelul de regresie polinomiala. Acest model polinomial incearca sa determine
coeficientii ecuatiei de grad n care genereaza un termen eroare minim
Utilizatorul are posibilitatea alegerii gradului functiei polinomiale utilizate. Functiile de
calcul efectiv sunt cotinute in libraria Openforecast, o librarie open source gazduita de
sourceforge.net
Utilizarea acestui modul este foarte simplă. Odată generat graficul, se alege gradul funcŃiei
polinomiale pentru prezicere. Imaginea este completată cu elementele rezultate din algoritmul de
previziune.

Fig 32 – Exemple de previzionare utilizand regresia polinomiala

Analiza datelor utilizând reguli de asociere

Analiza asociaŃiilor constă în descoperirea regulilor de asociere care arată condiŃiile atribut-
valoare ce apar frecvent împreună într-un set de date. Aceste informaŃii sunt de obicei exprimate
sub formă de reguli. O regulă de asociere exprimă o asociere între mulŃimi de entităŃi.
Un exemplu de utilizare a regulilor de asociere este pentru analiza obiectelor ce se cumpără
împreună. Utilizând acest algoritm, putem determina spre exemplu că oamenii care cumpără CD
playere, vor cumpăra într-o proporŃie semnificativă şi CD-uri.
Un alt exemplu al utilizării asocierii este analiza formularelor trimise de către pacienŃi unei
firme de asigurări medicale. Fiecare formular conŃine un set de proceduri medicale care au fost
aplicate asupra unui pacient pe parcursul unei vizite medicale. Prin definirea pe de o parte a unui
set de date corespunzător colecŃiei tuturor procedurilor medicale care pot fi aplicate unui pacient şi

50
pe de altă parte, a unor înregistrări corespunzătoare fiecărui formular, aplicaŃia poate identifica,
utilizând asocierea, relaŃia dintre procedurile medicale care sunt practicate adesea împreună.
Algoritmul utilizat pentru descoperirea seturilor de reguli se numeste Apriori şi este
prezentat mai pe larg în capitolul 2 al acestei lucrări.
Totuşi, nu orice regulă de asociere este utilă, ci doar cele expresive şi de încredere. De
aceea, modalităŃile standard de măsură pentru a aprecia calitatea regulilor de asociere sunt suportul
şi încrederea unei reguli, ambele calculate din suportul unor mulŃimi de entităŃi.
În formularul de analiză, utilizatorul precizează gradul de suport şi gradul de certitudine
urmărit. Gradul de suport reprezintă procentul de tranzacŃii din numărul total care conŃin
elementele subsetului analizat. De exemplu, dacă urmărim relaŃia de interdependenŃă dintre două
produse A şi B, vom împărŃi numarul total de tranzacŃii la numarul acelora care conŃin produsele A
sau B. Acest indicator este important pentru a elimina timpul alocat procesării pentru subseturi de
date care nu sunt relevante.
Gradul de încredere este o măsură care determină probabilitatea cu care cumpărarea
produsului A implică achiziŃionarea produsului B şi se determină ca raport între numărul de
tranzacŃii ce conŃine amândouă produsele A şi B şi numărul de tranzacŃii ce conŃine măcar unul
dintre elementele A sau B
InducŃia de reguli de asociere este o metodă puternică care are scopul de a găsi regularităŃi
în tendinŃele din date. Prin inducŃia de reguli de asociere se încearcă găsirea mulŃimilor de
instanŃe de date care apar frecvent împreună.

Fig 33 – Implementarea
algoritmului Apriori

51
CONCLUZII
Analizând caracterul din ce în ce mai complex al fenomenelor economico-sociale precum şi
evoluŃia tehnicii de calcul, s-a conturat justificat necesitatea elaborării unor soluŃii informatice de
ultimă generaŃie care să corespundă cu aşteptările şi nevoile tot mai crescute ale decidenŃilor din
mediul economic actual. Utilizarea tehnologiilor de ultimă oră este unul din criteriile decisive
pentru caracterul competitiv al unei companii.
SoluŃiile de Business Intelligence oferă o tehnologie, inclusiv produse software, care
livrează utilizatorilor informaŃiile necesare pentru a răspunde la întrebările ce apar în rezolvarea
problemelor de afaceri.
În continuare lucrarea s-a axat pe prezentarea tehnologilor specifice domeniului BI: soluŃii
de organizare şi prelucrare a datelor, tehnici de extragere a cunoştinŃelor, precum şi tehnologii de
programare necesare dezvoltării unui astfel de sistem.
În partea a treia, s-a urmărit realizarea unui sistem informatic de Business Intelligence cu o
structură flexibilă, adaptabilă unui cadru foarte larg de domenii şi afaceri. Unul dintre obiectivele
aplicaŃiei este să ofere un suport pentru procesul decizional unei categorii largi de utilizatori
oferind un sistem portabil şi independent de un anume sistem de gestiune a bazelor de date, sistem
de operare sau alte aplicaŃii.
Utilizatorii colectează în decursul timpului numeroase informaŃii care deseori sunt
eterogene, incompatibile şi provin din surse diferite. Posibilitatea de a colecta toate aceste
informaŃii într-un cadru unic, care să ofere suport pentru transformarea, curăŃarea, selectarea
informaŃiilor utile şi analiza datelor reprezintă o realizare importantă a acestui sistem software,
gasindu-şi o utilitate şi aplicabilitate pentru o cotă mare a pieŃei sistemelor informatice actuale.

52
BIBLIOGRAFIE
1) Prof.dr. Manole VELICANU, prof.dr. Ion LUNGU, lect. Mihaela MUNTEAN, prep.
Simona IONESCU – „Spre noua economie digitala prin inteligenŃa afacerii”
2) H.P.Luhn – „A Business Intelligence System”
3) D. J. Power – „A Brief History of Decision Support Systems”
4) Berthold M., Hand J.D., Intelligent Data Analysis – An introduction, Springer, 1999
5) Edelstein, H. (1996), Data Mining: Exploiting the Hidden Trends în Your Data, în:
DB2online magazine, Spring 1996,
6) Fayyad, U.; Piatetsky-Saphiro, G.; Smyth, P. (1996 a), From Data Mining to
Knowledge
7) Mannila, H. (1997), Methods and problems în data mining, Working Paper,
University of Helsinki, Helsinki 1997.
8) Mihai Horia Zaharia, Aflori Cristian, Sova Ioan, amarandei Cristian, Florin Leon -
Raport de cercetare grant: „Prototipul unui sistem gis web inteligent pentru extragerea
cunoştinŃelor din baze de date folosind agenŃi inteligenŃi”
9) Smeureanu Ion, Dardala, Marian - Visual C#.Net, Cison, 2004
10) Business Intelligence Architecture and Design Guide – Microsoft Corporation,
Microsoft Press 2006
11) Byron Marshall, Daniel McDonald, Hsinchun Chen and Wingyan Chung - Collecting
and Analyzing Business Intelligence Information
12) Capurro, R.: What is Information ? Handbook of modern databases, Vol. 24 (1987),
No. 133
13) Almeida, M. şi colectiv (1999) – „Getting Started with Data Warehouse and Business
Intelligence”, IBM International Technical Support Organization
14) www.eblocks.com ---- What is Business Intelligence
15) Herbert, A.S. (2004) – „Comportamentul administrativ. Studiu asupra proceselor de
luare a deciziilor în structurile administrative”, Editura Stiinta, Chisinau, Republica
Moldova
16) Mundy, J., Kimball, R., Thornthwaite, M. (2006) – “The Microsoft Data Warehouse
Toolkit With SQL Server 2005 and the Microsoft Business Intelligence Toolset”, Wiley
Publishing Inc. Indianapolis
17) Nepomnjashiy, A. – “OLAP and Data Warehousing”, http://www.databasejournal.com
18) http://msdn.microsoft.com - Microsoft .NET Framework Developer's Guide.
19) http://www.microsoft.com - Microsoft Corporation Website
20) http://www.prosci.com - „Business process reengineering”
21) http://www.business-intelligence.ro/
22) www.aries.ro – AsociaŃia Română pentru Industria Electronică şi Software
23) http://www.rational.com
24) www.olapcouncil.org
25) http://en.wikipedia.org/wiki/
26) http://www.business-intelligence.ro/
27) www.devexpress.com
28) http://www.developer.com
29) www.sourceforge.net
30) www.codeplex.com
31) www.codeproject.com
32) http://www.gartner.com/it/page.jsp?id=563507&tab=overview

53
ANEXE
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using Zip = ICSharpCode.SharpZipLib.Zip;
using System.Data;

namespace BIS
{
public class Proiect
{
#region Atribute

String numeProiect;
String appPublicata;
private DateTime timpCreare;
List<ElementProiect> elemente = new List<ElementProiect>();
static XmlSerializer myXmlSerializer = new XmlSerializer(typeof(Proiect));
Zip.ZipFile zipFile = null;

#endregion

// Constructor
static Proiect()
{
myXmlSerializer.UnknownElement += new
XmlElementEventHandler(myXmlSerializer_ElementNecunoscut);
}

#region Proprietati publice


[XmlIgnore]
public String NumeProiect
{
get { return numeProiect; }
set { numeProiect = value; }
}

public String AppPublicata


{
get { return appPublicata; }
set { appPublicata = value; }
}

public DateTime TimpCreare


{
get { return timpCreare; }
set { timpCreare = value; }
}

[XmlArray("Elemente")]
public List<ElementProiect> Elemente
{
get { return elemente; }
}

[XmlIgnore]
public Zip.ZipFile ZipFile
{
get { return zipFile; }
set { zipFile = value; }
}
#endregion

public ElementProiect AdaugaElement(ElementProiect e)


{
e.NumeProiect = this;
elemente.Add(e);
54
return e;
}

public static Proiect Incarca(Stream s, Zip.ZipFile appZipFile)


{
Proiect p = (Proiect)myXmlSerializer.Deserialize(s);
s.Close();
p.ZipFile = appZipFile;
p.PostDeserializare();
return p;
}

public void Salveaza(String numefisier)


{
foreach (ElementProiect elem in elemente)
{
elem.PreSerealizare();
}

String tempfile = Path.GetTempFileName();


FileStream s = File.OpenWrite(tempfile);

myXmlSerializer.Serialize(s, this);
s.Close();
if (File.Exists(numefisier))
{
File.Replace(tempfile, numefisier, numefisier + ".bak");
}
else
{
File.Move(tempfile, numefisier);
}

NumeProiect = numefisier;
}

public ElementProiect GetElement(String nume, CategorieElement categorie)


{
return elemente.Find(
delegate(ElementProiect d)
{
if (d is ElementProiect)
{
return d.TipElement() == categorie && d.Nume == nume;
}
else
{
return false;
}
});
}

public void ReplaceDatabaseConnection(Conexiune dbconn1, Conexiune dbconn2)


{
AdaugaElement(dbconn2);
dbconn2.Nume = dbconn1.Nume;

foreach (ElementProiect elem in elemente)


{
if (elem is DataSetDef)
{
DataSetDef def = elem as DataSetDef;
if ((def.DataSource as SQLDataSource).ConexiuneBD == dbconn1)
{
(def.DataSource as SQLDataSource).ConexiuneBD = dbconn2;
def.RefreshData();
}
}
}
if (elemente.Contains(dbconn1))
{
elemente.Remove(dbconn1);
}
55
}

public void PostDeserializare()


{
for (int n = 0; n < elemente.Count; n++)
{
ElementProiect elem = elemente[n];
if (elem is ConexiuneODBC ||
elem is ConexiuneAccess)
{
Conexiune Conn = Conexiune.Upgrade(elem as Conexiune);
Conn.Nume = elem.Nume;
elemente.Remove(elem);
elemente.Add(Conn);
n--;
}
}

foreach (ElementProiect elem in elemente)


{
elem.PostDeserializare(this);
}
}

static void myXmlSerializer_ElementNecunoscut(object sender, XmlElementEventArgs e)


{
RaportareErori.RaportEroare(String.Format(Strings.UnknownElement,
e.Element.LocalName));
}
}

class ZipDataSource : Zip.IStaticDataSource


{
Stream myStream;

public ZipDataSource(Stream s)
{
myStream = s;
}

public Stream GetSource() { return myStream; }


}

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;

namespace BIS
{
public enum CategorieElement
{
DataSet,
ConexiuneBD,
DataView,
Applicatie
}

public abstract class ElementProiect : IDisposable


{
#region Atribute

private Proiect numeProiect;


private String numeElement;
public event EventHandler SchimbareNume;
private String numeIntern;

#endregion

#region proprietati publice

56
[XmlIgnore]
public Proiect NumeProiect
{
get { return numeProiect; }
set { numeProiect = value; }
}

public String Nume


{
get { return numeElement; }
set
{
numeElement = value;
if (SchimbareNume != null)
{
SchimbareNume(this, null);
}
if (numeIntern == null && numeProiect != null)
{
numeIntern = numeElement;
int n = 1;
while (numeProiect.Elemente.Exists(
delegate(ElementProiect elem)
{
return elem != this && elem.NumeIntern == numeIntern;
}))
{
n++;
numeIntern = numeElement + n.ToString();
}
}
}
}

public String NumeIntern


{
get { return numeIntern == null ? numeElement : numeIntern; }
set { numeIntern = value; }
}
#endregion

public void Dispose()


{
numeProiect.Elemente.Remove(this);
}

public abstract CategorieElement TipElement();

public virtual void PostDeserializare(Proiect p)


{
numeProiect = p;
}
}
}

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;

namespace BIS
{
public abstract class SubElement
{
#region Atribute

private Proiect proiect;


private String numeSubelement;

#endregion

#region Proprietati publice

57
[XmlIgnore]
public Proiect Proiect
{
get { return proiect; }
set { this.proiect = value; }
}

public String NumeSubelement


{
get { return this.numeSubelement; }
set { this.numeSubelement = value; }
}
#endregion

public virtual void PostDeserializare(Proiect p)


{
proiect = p;
}

}
}

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Xml.Serialization;
using System.IO;
using System.Windows.Forms;

namespace BIS
{
//
// Definirea unui data set
//
public class DataSetDef : ElementProiect
{
#region Atribute

private SQLDataSource dataSource = new SQLDataSource();


DataAdapter dataAdapter;
DataTable dataTable;
bool ContinutModificat = false;
List<CampDataSet> campuri = new List<CampDataSet>();

#endregion

public List<CampDataSet> Campuri


{
get
{
if (ContinutModificat)
{
try
{
RefreshContinut();
}
catch (Exception e)
{
RaportareErori.RaportEroare("Eroare actualizare camp " + Nume +
e.Message);
}
ContinutModificat = false;
}
return campuri;
}
}
public SQLDataSource DataSource
{
get { return dataSource; }
set { dataSource = value; }
}
58
public DataTable CreeazaDataSource()
{
if (dataTable != null)
{
return dataTable;
}
if (this.NumeProiect.ZipFile != null)
Stream xmlstream = this.NumeProiect.ZipFile.GetInputStream
(this.NumeProiect.ZipFile.GetEntry ("DATA " + this.NumeIntern + ".xml"));
XmlSerializer s = new XmlSerializer(typeof(DataTable));
dataTable = (DataTable)s.Deserialize(xmlstream);
xmlstream.Close();

RefreshContinutDinTabel(dataTable);
}
else
{
if (dataAdapter == null)
{
RefreshContinut();
}
if (dataAdapter != null)
{
DataSet sourceDataSet = new DataSet();
sourceDataSet.DataSetName = this.Nume;
dataAdapter.Fill(sourceDataSet);
dataTable = sourceDataSet.Tables[0];
dataTable.TableName = this.Nume;
dataTable.CaseSensitive = false;
}
}
return dataTable;
}
public void RefreshContinut()
{
if (this.NumeProiect.ZipFile != null)
{
CreeazaDataSource();
return;
}
if (dataSource == null)
{
return;
}
dataAdapter = dataSource.CreeazaDataAdapter();
if (dataAdapter == null)
{
return;
}
DataSet s = new DataSet();
try
{
dataAdapter.FillSchema(s,SchemaType.Source);
}
catch (Exception e)
{
RaportareErori.RaportEroare(Strings.DataSetCouldNotBeOpened);
return;
}
if (s.Tables.Count == 0)
{
RaportareErori.RaportEroare(Strings.DataSetDidNotReturnAnyValidTables);
return;
}
DataTable t = s.Tables[0];

RefreshContinutDinTabel(t);

dataTable = null;
}
void RefreshContinutDinTabel(DataTable t)
{
foreach (DataColumn col in t.Columns)
59
{
bool found = false;
foreach (CampDataSet fld in campuri)
{
if (fld.NumeCamp == col.ColumnName)
{
found = true;
fld.Tip = col.DataType;
break;
}
}
if (!found)
{
CampDataSet fld = new CampDataSet();
fld.NumeCamp = col.ColumnName;
fld.TextCamp = col.Caption;
fld.Tip = col.DataType;
campuri.Add(fld);
}
}

List<CampDataSet> campuriEliminate = new List<CampDataSet>();


foreach (CampDataSet fld in campuri)
{
if (!t.Columns.Contains(fld.NumeCamp))
{
campuriEliminate.Add(fld);
}
}
foreach (CampDataSet dsf in campuriEliminate)
{
campuri.Remove(dsf);
}
}
public void RefreshData()
{
dataTable = null;
}
public CampDataSet GetCampDupaNume(String numeCamp)
{
if (String.IsNullOrEmpty(numeCamp))
{
return null;
}
return Campuri.Find(
delegate(CampDataSet f)
{
return f.NumeCamp == numeCamp;
});
}
public override CategorieElement TipElement()
{
return CategorieElement.DataSet;
}
public override void PostDeserializare(Proiect p)
{
base.PostDeserializare(p);
if (dataSource != null)
{
dataSource.PostDeserializare(p);
}
ContinutModificat = true;

foreach (CampDataSet c in campuri)


{
c.PostDeserializare(campuri);
}
}
}
}

60
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;

namespace BIS
{
public class CampDataSet : IComparable
{
private String numeCamp;
private String textCamp = String.Empty;
private String formula;
private Type tip;
private Filtru.Filtre tipFiltru = Filtru.Filtre.Nul;
static CampDataSet campNul = new CampDataSet();

public String NumeCamp


{
get { return numeCamp; }
set { numeCamp = value; }
}

public String TextCamp


{
get { return textCamp; }
set { textCamp = value; }
}

public String Formula


{
get { return formula; }
set { formula = value; }
}

public Filtru.Filtre TipFiltru


{
get { return tipFiltru; }
set { tipFiltru = value; }
}

public static CampDataSet CampNul


{
get { return campNul; }
}

[XmlIgnore]
public Type Tip
{
get { return tip; }
set { tip = value; }
}

public void PostDeserializare(List<CampDataSet> alteCampuri)


{
//post deserializare
}

[XmlIgnore]
public DescriptorFiltru DescriereFiltru
{
get
{
foreach (DescriptorFiltru d in BIS.DescriptorFiltru.TipuriFiltre)
{
if (d.TipFiltru == tipFiltru)
{
return d;
}
}
return null;
}
set
{
tipFiltru = value.TipFiltru;
61
}
}

public Filtru CreeazaFiltru()


{
switch (tipFiltru)
{
case Filtru.Filtre.ValoriDiscrete: return new FiltruValoriDiscrete(this);
case Filtru.Filtre.Interval: return new FiltruInterval(this);
case Filtru.Filtre.Text: return new FiltruText(this);
default: return null;
}
}

public override string ToString()


{
return textCamp;
}

public int CompareTo(Object o)


{
if (o is CampDataSet)
{
return textCamp.CompareTo((o as CampDataSet).textCamp);
}
throw new Exception(String.Format(Strings.CampuriIncomparabile, o.GetType().ToString()));
}
}
}

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;

namespace BIS
{
// descrie un set de campuri disponibile
public class ListaCampuri
{
private List<CampDataSet> lista = new List<CampDataSet>();
[XmlIgnore]
public List<CampDataSet> Lista
{
get { return lista; }
set
{
lista = value;
numeCampuri.Clear();
foreach (CampDataSet c in lista)
{
numeCampuri.Add(c.NumeCamp);
}
if (CampModificat != null)
{
CampModificat(this, null);
}
}
}

public event EventHandler CampModificat;

private List<String> numeCampuri = new List<String>();


public List<String> NumeCampuri
{
get { return numeCampuri; }
}

public void PostDeserializare(DataSetDef dataset)


{
foreach (String s in numeCampuri)
{
lista.Add(dataset.GetCampDupaNume(s));
} } } }
62
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Common;

namespace BIS
{
public class SQLDataSource
{
String query;
String numeTabel;
Conexiune conexiuneBD;
String numeConexiuneBD;

public String Query


{
get { return query; }
set { query = value; }
}

public String Tabel


{
get { return numeTabel; }
set { numeTabel = value; }
}

public Conexiune ConexiuneBD


{
get { return conexiuneBD; }
set { conexiuneBD = value; }
}

public String NumeConexiuneBD


{
get { return numeConexiuneBD == null ? null : conexiuneBD.Nume; }
set { numeConexiuneBD = value; }
}

public String GetQuery()


{
if (string.IsNullOrEmpty(query))
{
if (String.IsNullOrEmpty(numeTabel))
{
return String.Empty;
}
String t = conexiuneBD.DelimitatorInceput +
numeTabel +
conexiuneBD.DelimitatorSfarsit;

return "SELECT * FROM " + t;


}
else
{
return query;
}
}

public DataAdapter CreeazaDataAdapter()


{
if (conexiuneBD == null || String.IsNullOrEmpty(GetQuery()))
{
return null;
}
return conexiuneBD.CreeazaDataAdapter(GetQuery());
}

//
// XML serializare
//

public void PostDeserializare(Proiect p)


{

63
if (!String.IsNullOrEmpty(numeConexiuneBD))
{
conexiuneBD = p.GetElement(numeConexiuneBD,CategorieElement.ConexiuneBD) as
Conexiune;
}
}
}
}

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.Xml;
using System.Drawing;

namespace BIS
{
public class Cub: DefDataView, IAdmiteSelectieCampuri
{
private XmlDocument layoutXml;
public XmlDocument LayoutXml
{
get { return layoutXml; }
set { layoutXml = value; }
}

// tipul de grafic care va fi generat default


private String graficStandard;
public String GraficStandard
{
get { return graficStandard; }
set { graficStandard = value; }
}

private bool orientareSwapChart;


public bool OrientareSwapChart
{
get { return orientareSwapChart; }
set { orientareSwapChart = value; }
}

// UI
public override Image GetImagine()
{
return Imagini.Cube;
}

ListaCampuri campuriDisponibile = new ListaCampuri();


public ListaCampuri CampuriDisponibile
{
get { return campuriDisponibile; }
set { campuriDisponibile = value; }
}

public override void PostDeserializare(Proiect p)


{
base.PostDeserializare(p);
}
}
}

64
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.Drawing;

namespace BIS
{
public abstract class DefDataView : ElementProiect
{
private DataSetDef defDataSet;

[XmlIgnore]
public DataSetDef DataSet
{
get { return defDataSet; }
set
{
defDataSet = value;
if (SchimbareDataSet != null)
{
SchimbareDataSet (this, null);
}
}
}

public event EventHandler SchimbareDataSet;

public abstract Image GetImagine ();

public override CategorieElement TipElement ()


{
return CategorieElement.DataView;
}

private String numeDataSetDeserializat;

[XmlAttribute ("NumeDataSet")]
public String NumeDataSetPtXML
{
get { return defDataSet == null ? null : defDataSet.Nume; }
set { numeDataSetDeserializat = value; }
}

public override void PostDeserializare (Proiect p)


{
base.PostDeserializare (p);
defDataSet = (DataSetDef)p.GetElement (numeDataSetDeserializat,
CategorieElement.DataSet);
}
}

public interface IAdmiteSelectieCampuri


{
ListaCampuri CampuriDisponibile
{
get;
set;
}

event EventHandler SchimbareDataSet;

DataSetDef DataSet
{
get;
}
}
}

65
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.Xml;
using DevExpress.Data.PivotGrid;
using System.Drawing;

namespace BIS
{
public class Grafic : DefDataView, IAdmiteSelectieCampuri
{
// tipul de grafic care va fi generat default
private String graficStandard;
public String GraficStandard
{
get { return graficStandard; }
set { graficStandard = value; }
}

//
// Campul de date afisat in grafic
//
CampDataSet campDataSet;
[XmlIgnore]
public CampDataSet Camp
{
get { return campDataSet; }
set { campDataSet = value; }
}

PivotSummaryType tipTotal = PivotSummaryType.Sum;


public PivotSummaryType TipTotalizare
{
get { return tipTotal; }
set { tipTotal = value; }
}

ListaCampuri campuriDisponibile = new ListaCampuri();


public ListaCampuri CampuriDisponibile
{
get { return campuriDisponibile; }
set { campuriDisponibile = value; }
}

//
// Campuri afisate in legenda ca serii de date
//
ListaCampuri campuriLegenda = new ListaCampuri();
public ListaCampuri CampuriLegenda
{
get { return campuriLegenda; }
set { campuriLegenda = value; }
}

//Atribute dupa care se grupeaza seriile de date


//
ListaCampuri campuriGrupare = new ListaCampuri();
public ListaCampuri CampuriGrupare
{
get { return campuriGrupare; }
set { campuriGrupare = value; }
}

int unghiTextAxaX = 20;


public int UnghiTextAxaX
{
get { return unghiTextAxaX; }
set { unghiTextAxaX = value; }
}

String titluAxaX;
public String TitluAxaX
{
66
get { return titluAxaX; }
set { titluAxaX = value; }
}

int unghiTextAxaY = 0;
public int UnghiTextAxaY
{
get { return unghiTextAxaY; }
set { unghiTextAxaY = value; }
}

String titluAxaY;
public String TitluAxaY
{
get { return titluAxaY; }
set { titluAxaY = value; }
}

String titlu;
public String Titlu
{
get { return titlu; }
set { titlu = value; }
}

bool afiseazaProcente;
public bool AfiseazaProcente
{
get { return afiseazaProcente; }
set { afiseazaProcente = value; }
}

String paletaCulori = "Nature Colors";


public String PaletaCulori
{
get { return paletaCulori; }
set { paletaCulori = value; }
}

public override Image GetImagine()


{
return BIS.Imagini.Collapse_Chart_Group;
}

String numeCampDeserializat;
public String NumeCamp
{
get { return campDataSet != null ? campDataSet.NumeCamp : null; }
set { numeCampDeserializat = value; }
}

public override void PostDeserializare(Proiect p)


{
base.PostDeserializare(p);
campuriDisponibile.PostDeserializare(this.DataSet);
campDataSet = this.DataSet.GetCampDupaNume(numeCampDeserializat);
campuriLegenda.PostDeserializare(this.DataSet);
campuriGrupare.PostDeserializare(this.DataSet);
}
}
}

using System;
using System.Collections.Generic;
using System.Text;
using DevExpress.XtraReports.UI;
using System.Xml;
using System.IO;
using System.Drawing;

namespace BIS
{
public class Raport : DefDataView
{
67
private byte[] raportXML;
public byte[] RaportXml
{
get { return raportXML; }
set { raportXML = value; }
}

public XtraReport LoadRaport()


{
XtraReport raport;
if (raportXML != null)
{
MemoryStream s = new MemoryStream(raportXML, false);
raport = new XtraReport();
raport.LoadLayout(s);
s.Close();
}
else
{
raport = new XtraReport();
}
raport.Name = this.Nume;
if (this.DataSet != null)
{
raport.DataSource = this.DataSet.CreeazaDataSource();
}
return raport;
}

public void SalveazaRaport(XtraReport raport)


{
MemoryStream s = new MemoryStream();
raport.SaveLayout(s);
raportXML = s.ToArray();
s.Close();
}

public override Image GetImagine()


{
return BIS.Imagini.Report;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.Xml;
using System.Drawing;

namespace BIS
{
public class TabelGrid: DefDataView, IAdmiteSelectieCampuri
{
private XmlDocument layoutXml;
public XmlDocument LayoutXml
{
get { return layoutXml; }
set { layoutXml = value; }
}

private bool orientareSwapChart;


public bool OrientareSwapChart
{
get { return orientareSwapChart; }
set { orientareSwapChart = value; }
}

private bool sumePartiale = false;


public bool SumePartiale
{
get { return sumePartiale; }
set { sumePartiale = value; }
}
68
// UI
public override Image GetImagine()
{
return Imagini.GenericGrid;
}

ListaCampuri campuriDisponibile = new ListaCampuri();


public ListaCampuri CampuriDisponibile
{
get { return campuriDisponibile; }
set { campuriDisponibile = value; }
}

public override void PostDeserializare(Proiect p)


{
base.PostDeserializare(p);
campuriDisponibile.PostDeserializare(this.DataSet);
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using VISUAL_BASIC_DATA_MINING_NET;
using System.Threading;

namespace BIS
{
public partial class Apriori : XtraForm
{
DataSetDef date;
DataTable tabel;
Thread t;

List<CampDataSet> TranzactiiID = new List<CampDataSet>();


List<CampDataSet> Tranzactii = new List<CampDataSet>();

public Apriori(DataSetDef SetAnaliza, DataTable datele)


{
InitializeComponent();
this.date = SetAnaliza;
this.tabel = datele;
foreach (CampDataSet f in date.Campuri)
{
if (f.Tip == typeof (int))
{
TranzactiiID.Add (f);
}
//if (f.Tip == typeof(string))
//{
Tranzactii.Add(f);
//}
}
}

private void Apriori_Load(object sender, EventArgs e)


{
foreach (CampDataSet d in TranzactiiID)
{
cmbTranzID.Properties.Items.Add(d);
}
cmbTranzID.SelectedIndex = 0;
foreach (CampDataSet d in Tranzactii)
{
cmbTranz.Properties.Items.Add(d);
}
cmbTranz.SelectedIndex = 0;
69
}

private void simpleButton1_Click(object sender, EventArgs e)


{
if (simpleButton1.Text == "Analiza")
{
t = new Thread(new ThreadStart(RuleazaAnaliza));
t.Start();
simpleButton1.Text = "Stop";
}
else
{
t.Abort();
simpleButton1.Text = "Analiza";
}
}

private void RuleazaAnaliza()


{
UtilizareAlgoritm ua = new UtilizareAlgoritm(this.progressBarControl1,
this.lblProgres);
DataTable dt = new DataTable();
dt.Columns.Add("TranzactiiId");
dt.Columns.Add("Tranzactii");
foreach (DataRow dr in tabel.Rows)
{
object[] elemente = new object[2];
elemente[0] = dr[cmbTranzID.SelectedItem.ToString()];
elemente[1] = dr[cmbTranz.SelectedItem.ToString()];
dt.LoadDataRow(elemente, true);
}
this.gridControl1.DataSource = ua.Analiza(dt, int.Parse(this.txtSuport.Text),
int.Parse(this.txtIncredere.Text));
this.simpleButton1.Text = "Analiza";
}
}
}
using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using id3;
using System.Globalization;

namespace BIS
{
public partial class ID3 : XtraForm
{
DataSetDef date;
DataTable tabel;

List<CampDataSet> Rezultat = new List<CampDataSet>();

public ID3(DataSetDef SetAnaliza, DataTable datele)


{
InitializeComponent();
this.date = SetAnaliza;
this.tabel = datele;
foreach (CampDataSet f in date.Campuri)
{
ArrayList l = new ArrayList();
foreach (DataRow dr in tabel.Rows)
{
if (dr[f.NumeCamp].ToString() != string.Empty &&
!l.Contains(dr[f.NumeCamp]))
{
l.Add(dr[f.NumeCamp]);
}
}
70
if (l.Count == 2)
{
Rezultat.Add(f);
}
}
}

private void ID3_Load(object sender, EventArgs e)


{
foreach (CampDataSet d in Rezultat)
{
cmbRez.Properties.Items.Add(d);
}
if (Rezultat.Count < 1)
{
MessageBox.Show("Nu a fost gasit nici un camp de tip boolean pentru
atributul rezultat");
this.Close();
}
}

public void printNode(id3.TreeNode root, System.Windows.Forms.TreeNode treelist)


{
System.Windows.Forms.TreeNode n =
treelist.Nodes.Add(root.attribute.ToString());

if (root.attribute.values != null)
{
for (int i = 0; i < root.attribute.values.Length; i++)
{
n.Nodes.Add("<" + root.attribute.values[i].ToString() + ">");
id3.TreeNode childNode =
root.getChildByBranchName(root.attribute.values[i]);
printNode(childNode, n);
}
}
}

private void simpleButton1_Click(object sender, EventArgs e)


{
if (cmbRez.SelectedItem == null)
MessageBox.Show("Selectati campul ce reprezinta outputul dorit");
else
{
treeView1.Nodes.Clear();
string camprezultat = cmbRez.SelectedItem.ToString();
string valAdevar = tabel.Rows[0][camprezultat].ToString();
int j = 1;
string valFals = tabel.Rows[j][camprezultat].ToString();
while (valFals == valAdevar && j < tabel.Rows.Count)
{
j++;
valFals = tabel.Rows[j][camprezultat].ToString();
}

for (int i = 0; i < tabel.Rows.Count; i++)


{
tabel.Rows[i][camprezultat] = tabel.Rows[i][camprezultat].ToString() ==
valAdevar ? "true" : "false";
}

DataTable samples = tabel;

id3.Attribute[] attributes = new id3.Attribute[samples.Columns.Count - 1];


int attnr = 0;

// coloana rezultat nu e neaparat ultima!!!!


for (int i = 0; i < samples.Columns.Count; i++)
{
if (samples.Columns[i].ColumnName != camprezultat)
{
string[] valori = GetDistinctValues(samples,
samples.Columns[i].ColumnName);

71
attributes[attnr] = new
id3.Attribute(samples.Columns[i].ColumnName, valori);
attnr++;
}
}

DecisionTreeID3 id3 = new DecisionTreeID3();


id3.valAdevar = valAdevar;
id3.valFals = valFals;
samples.Locale = CultureInfo.CurrentCulture;
id3.TreeNode root = id3.mountTree(samples, camprezultat, attributes);

printNode(root, treeView1.Nodes.Add("Arbore de decizie"));


}
}

public string[] GetDistinctValues(DataTable t, string columnName)


{
ArrayList al = new ArrayList();
foreach (DataRow dr in t.Rows)
{
string val = dr[columnName].ToString();
if (!al.Contains(val))
al.Add(val);
}
return (string[])al.ToArray(typeof(string));
}
}
}

72

S-ar putea să vă placă și