Sunteți pe pagina 1din 9

Procesul de extragere de cunostinte din baze de date

Obiective
- Probleme tipice pentru extragerea cunostintelor din baze de date
- Metode de extragere de cunostinte
- Etapele procesului de extragere de cunostinte din baze de date
- Pre-procesarea datelor

1. Introducere.

Sistemele informatice din zilele noastre achizitioneaza date cu o frecventa inimaginabila


dintr-o mare varietate de surse: de la automate de vanzare pana la tranzactii bancare, cu carti de
credit sau la observatiile satelitilor din spatiu. Iata cateva exemple care indica volumele de date
acumulate:
- punctele de observatie NASA ale satelitilor genereaza 1 Tbyte (10 la 9 bytes) de
informatii in fiecare zi;
- proiectul Human Genome stocheaza Tbytes de date pentru diverse baze genetice;
- din 1990 pana acum, biroul SUA de statistica (US Census) a colectat Tbytes de
informatii;
- numeroase companii au depozite de date mari cu miliarde de tranzactii;
- se colecteaza volume imense de date din inregistrarile dispozitivelor automate, cum ar fi
log-urile tranzactiilor cu cardul de credit sau log-urile web.
In concordanta cu aceasta tendinta s-au dezvoltat si dispozitivele hardware de stocare, astfel
incat orice institutie, de la firme mici pana la laboratoare stiintifice, poate sa stocheze volume
insemnate de date la costuri relativ scazute. Desi sunt achizitionate volume imense de date,
operatia cea mai importanta este extragerea cunostintelor si a informatiilor cu adevarat
valoroase care pot sa faca diferenta intr-un anumit domeniu de activitate, cum ar fi: descoperiri
stiintifice, prezicerea unor fenomene meteorologice sau naturale, cauze si tratamente pentru
diverse maladii, predictii pentru dezvoltarea unei afaceri.
De-a lungul timpului s-au dezvoltat metode de tip „machine learning” prin care se pot
extrage astfel de cunostinte din volume mari de date.
Descoperirea de cunostinte („Data mining”, „Knowledge discovery in databases”)
reprezinta procesul de extragerea informatiilor folositoare, ne-triviale, necunoscute anterior din
volume mari de date, prin metode automate sau semi-automate.
Descoperirea de cunostinte in baze de date are aplicatii in diverse domenii de activitate:
- predictia financiara;
- analiza compusilor organici;
- detectia fraudelor;
- predictia consumului de electricitate;
- diagnoza medicala;
- marketing;
- predictia vremii.
Exemple de aplicatii de extragere de cunostinte din baze de date:
1
- un lant de supermarketuri analizeaza tranzactiile clientilor pentru a optimiza incasarile
de la clientii „valorosi”;
- o banca foloseste depozitul propriu de date pentru a identifica posibilele fraude din
cadrul tranzactiilor;
- o companie financiara analizeaza cererile de imprumut si vrea sa imbunatateasca
posibilitatea de a prezice imprumuturile nereusite;
- intr-o fabrica se analizeaza volumul mare de date colectat in cadrul proceselor de
fabricatie pentru a identifica conditiile care duc la probleme in procesul tehnologic;
- predictia audientei pentru anumite emisiuni de televiziune;
- predictia ca un pacient sa raspunda pozitiv la un tratament pentru a optimiza costurile
pastrand aceeasi calitate a serviciilor medicale.

In general, aplicatiile se pot imparti in 4 tipuri generale: clasificare, predictie numerica,


asociere si clusterizare.
Exemple de probleme si solutii de extragere de cunostinte din baze de date:

Problema: Un magazin vrea sa-si mareasca incasarile prin identificarea potentialilor clienti
valorosi pentru a le furniza oferte personalizate. De asemenea se doreste pozitionarea
produselor pe rafturi in functie de posibilitatea ca mai multe produse sa fie cumparate
impreuna.
Solutia: Se construieste un model de clasificare pentru a gasi clientii care cu o probabilitate
de 75% pot cheltui mai mult de 1000$ in anul urmator. Apoi se construieste un model de
asociere pe baza cosurilor de cumparaturi pentru a determina ce produse se achizitioneaza
impreuna.

Problema: O agentie guvernamentala doreste metode mai precise prin care sa se evidentieze
posibile activitati frauduloase pentru investigatii ulterioare.
Solutia: Se construiesc modele de clasificare, clusterizare si detectia anomaliilor pentru a
evidentia cazurile suspicioase.

Problema: Un laborator biochimic trebuie sa gestioneze mii de atribute pentru a cerceta


eficienta unui medicament.
Solutia: Se foloseste modelul de importanta a atributelor pentru a reduce numarul
atributelor la un numar gestionabil, fara a influenta rezultatul metodelor aplicate.

Modelele de extragere de cunostinte din baze de date au la baza una din cele doua metode
de invatare: supervizata si nesupervizata. Invatarea supervizata este folosita pentru a prezice o
valoare. Invatarea nesupervizata este folosita pentru a gasi structuri si relatii in cadrul datelor,
fara a stabili dinainte ipoteze de lucru. Modelele de clasificare si de importanta atributelor
apartin invatarii supervizate, iar cele de segmentare si asociere invatarii nesupervizate.

2
2. Etapele procesului de extragere de cunostinte din baze de date.

Procesul de extragere de cunostinte din baze de date este unul iterativ si interactiv compus
din mai multe etape.

Fig.1. Etapele procesului de extragere de cunostinte din baze de date.

Dupa cum se observa in figura, etapele intr-un astfel de proces sunt:


- integrarea datelor din diferite surse intr-un depozit central;
- selectia si pre-procesarea datelor astfel incat algoritmul de analiza sa aibe la intrare
datele in formatul dorit;
- aplicarea algoritmului de analiza;
- interpretarea, validarea si asimilarea rezultatelor.

Din punct de vedere practic etapele unui astfel de proces se pot detalia astfel:
- definirea problemei in termeni specifici domeniului de implementat („business”), dar si
in termeni „data mining”;
- achizitionarea si pregatirea datelor de intrare;
- construirea modelului si aplicarea lui;
- evaluarea rezultatelor si folosirea celor semnificative.

2.1 Definirea problemei de analizat.

Problema de rezolvat trebuie definita in mod clar si cu destule detalii, atat din punct de
vedere al domeniului ales, dar si din punct de vedere al elementelor necesare aplicarii unei
metode de extragere de cunostinte.
De exemplu, in cadrul unei companii, se vrea identificarea clientilor „valorosi”, care au o
mare probabilitate sa renunte la serviciile companiei („churn customers”). Se stie ca pentru o
companie este mult mai dificil si costisitor de a recastiga un client pierdut decat sa mentina
unul existent. De asemeni, nu trebuie fidelizati toti clientii, doar cei „valorosi” (cheltuie o suma
substantiala pe serviciile firmei). Astfel, trebuie definite criteriile dupa care un client este
valoros sau nu pentru companie.

3
Dupa ce sunt definite toate conditiile domeniului, trebuie definita problema in totalitate:
„Trebuie construita o lista cu clientii care au probabilitate mare sa renunte la serviciile
companiei, dar care se prezice a fi clienti valorosi. Gasirea unor oferte pentru acesti clienti
astfel incat sa ramana fideli companiei.”

2.2 Achizitia datelor de intrare si pre-procesarea lor.

O regula generala ar fi colectarea unui volum cat mai cuprinzator de date, apoi in functie de
metoda si algoritmul de analiza ales, se filtreaza si se transforma aceste date intr-un format
dorit. Trebuie eliminate informatiile care dezvaluie identitatea anumitor entitati (denumiri de
persoane sau firme, numere de telefon, email sau adrese). Aceasta eliminare se face din doua
considerente: una de confidentialitate (legala si morala) si una de generalitate (metodele nu se
aplica unor date specifice).
Continuand exemplul de mai sus, privind fidelizarea clientilor unei companii (de ex banci),
se presupune ca datele provin din 3 surse:
- date demografice statistice intr-o locatie (varste, venituri, regiuni);
- date demografice specifice in alta locatie (lista clientilor bancii cu produsele si serviciile
furnizate);
- tranzactiile in alta locatie.
In aceasta etapa se colecteaza si se integreaza datele din cele trei locatii intr-un depozit
central. Se pot recodifica o parte din date (de ex formatul datelor calendaristice), transforma o
alta parte (daca am data nasterii sa deduc varsta), curata (eliminarea inregistrarilor cu valori
null pentru anumite coloane) etc.
In general, colectarea si prepararea datelor consuma peste 50% din timpul si efortul in
cadrul unui proiect „data mining”.

2.3 Construirea modelelor si aplicarea lor.

Pentru orice problema trebuie aleasa o metoda sau mai multe, un algoritm sau mai multi,
care sa se aplice datelor pre-procesate pentru obtinerea rezultatelor dorite. Este dificil de stiut in
avans care metoda sau algoritm este optim pentru o anumita problema, astfel incat se
construiesc si se testeaza mai multe metode / algoritmi.
Nici un model nu este perfect, deci nu se cauta neaparat modelul cu cele mai exacte
rezultate, ci modelul a caror tipuri de eroare sunt acceptabile pentru obiectivele problemei de
rezolvat.
De exemplu, daca se considera problema creditarii clientilor unei banci, un model predictiv
trebuie sa minimizeze erorile de tipul „no risk”, deoarece daca erorile de acest tip sunt foarte
costisitoare pentru banca (bani incredintati cu sanse mici de recuperare). Un acelasi model
predictiv poate sa accepte un oarecare numar de erori de tipul „high risk”. Adica, un potential
client sa fie etichetat ca fiind „riscant”, in realitate el fiind un client sigur. Si acest tip de eroare
produce oarecare cost (client nemultumit de refuzul bancii), dar acest cost este unul gestionabil.

4
2.4 Evaluarea rezultatelor si folosirea celor semnificative.

Dupa aplicarea unui metode si construirea modelului, datele obtinute sunt inregistrate in
formate specifice algoritmului de analiza utilizat. Aceste rezultate trebuie validate si evaluate.
Acest lucru se face in prima faza prin algoritmi de evaluare specifici fiecarui model aplicat, iar
apoi trebuie prezentati operatorului uman (analistul).
Daca se considera exemplul de mai sus, in urma aplicarii modelului rezulta un table cu id-
urile clientilor de tip „churn”, precum si detaliile cu probabilitatile de a renunta la serviciile
companiei.
Aceste date trebuie corelate cu restul informatiilor (de ex din tabelul de clienti) si trebuie
prezentate analistului pentru a se lua masuri concrete care sa impiedice actiunea prevazuta (de
ex oferte semnificative pentru produsele/serviciile dorite de clientii respectivi).

3. Pre-procesarea datelor.

Pre-procesarea datelor este o etapa importanta in cadrul intregului proces de extragere de


cunostinte din baze de date, atat din punct de vedere al timpului si efortului consumat, dar si cu
implicatii majore asupra rezultatelor modelului aplicat (in cazul in care calitatea datelor de
intrare nu este la nivelul asteptat de model).
Atributele unui set de date de intrare sunt de doua tipuri: numerice si de tip categorice
(„categorical”). Pentru valorile unui atribut de tip categoric ordinea nu are vreun sens, pe cand
la cele numerice ordinea are un sens bine stabilit. De exemplu, codurile postale pot fi ordonate,
dar acest lucru nu are vreun sens in contextul construirii unui model „data mining”, deci pot fi
considerate de tip categoric.
In aceasta etapa, in functie de modelul ales, se aplica urmatoarele operatii pe date:
- curatarea datelor: recodificari (formate de date, siruri de caractere, abrevieri),
normalizari (denumiri, adrese, eliminarea duplicatelor etc), join-uri „fuzzy” pentru date
din surse diferite (clienti, localitati, produse dupa diverse criterii), reguli specifice
domeniului;
- tratarea unitara a valorilor null (de obicei prin inlocuirea cu o valoare „surogat”: ? sau
valoare de identificator, de ex -1);
- filtrarea datelor: extragerea inregistrarilor necesare pentru un anumit model, dar si
selectia anumitor atribute semnificative;
- calcularea unor atribute derivate: calcularea varstei cand exista data nasterii, diverse
agregari etc;

De obicei, algoritmii „data mining” lucreaza cu valori discrete („binned”) ale atributelor.
Discretizarea reprezinta procesul prin care se grupeaza valori asemanatoare impreuna pentru a
reduce numarul de valori distincte pentru un anumit atribut.
Deciziile pentru numarul de valori discrete pentru un anumit atribut, valorile asignate pentru
fiecare interval, sunt luate fie automat de aplicatie fie sunt specificate de utilizator. Acest proces
trebuie executat de un expert care sa inteleaga semnificatia datelor de discretizat, dar si a
problemei de rezolvat.

5
Exista mai multe modalitati de discretizare care pot fi aplicate in functie de modelul aplicat:
- specificarea explicita: se specifica limitele intervalelor de discretizare pentru fiecare
atribut; astfel pentru date numerice se specifica limitele inferioare si superioare pentru
fiecare interval; pentru atributele de tip categoric se specifica pentru fiecare interval ce
valori sa contina;
- pentru atributele de tip categorie se poate utiliza metoda celor mai frecvente N elemente
(„top N”); astfel pentru un N dat, se determina cele mai frecvente N elemente, iar restul
se clasifica in „cealalta” categoric;
- pentru atributele numerice se poate folosi metoda discretizarii echidistante; se sorteaza
valorile numerice, iar apoi acestea se impart in numarul specificat de intervale.

Se considera tabelul de clienti si urmatoarele atribute ale caror valori trebuie discretizate:

Fig.2. Valorile atributelor pentru discretizat.

In urma procesului de discretizare pentru atributele numerice AGE si WEIGHT, valorile


arata astfel:

Fig.3. Valorile discretizate ale atributelor numerice.

6
In urma procesului de discretizare pentru atributele de tip categorie WORKCLASS si
EDUCATION, MARITAL_STATUS, OCCUPATION valorile arata astfel:

Fig.4. Valorile discretizate ale atributelor de tip categorie.

Astfel, tabelul initial devine astfel:

Fig.5. Valorile discretizate ale atributelor de tip categorie si numeric.

7
Tot in aceasta etapa de pre-procesare, datele de intrare sunt stocate fizic intr-un anumit
format, pentru a fi recunoscut de algoritmul de analiza. In general exista doua formate:
- tranzactional sau cazul multi-inregistrare („multi-record case”);
- netranzactional sau cazul mono-inregistrare („single-record case”);
Datele tranzactionale (multi-inregistrare) sunt stocate intr-o tabela cu urmatoarea structura:
- SequenceId – valoare intreaga pentru a asocia valorile intr-o tabela tranzactionala
- Attribute_Name – numele atributului specificat prin sir de caractere
- Value – valoare intreaga pentru atribut (se aplica in prealabil procesul de discretizare
daca e nevoie);
Datele mono-inregistrare stocheaza fiecare caz sub forma unei inregistrari. Aceasta nu
necesita o cheie unica de identificare, dar aceasta se recomanda pentru relationarea cu datele de
iesire.

4. Exercitii.
Puteti folosi SQL si PL/SQL.
1) Conectati-va la schema DMxx. Extrageti clientii din CUSTOMERS intr-un tabel
CUST_EXT dupa urmatoarele criterii:
- clientii din US;
- se vor extrage urmatoarele coloane:
CUST_ID
CUST_GENDER
CUST_YEAR_OF_BIRTH
CUST_MARITAL_STATUS
CUST_CITY
CUST_STATE_PROVINCE
COUNTRY_ID
CUST_INCOME_LEVEL
CUST_CREDIT_LIMIT

2) Creati tabelul CUST_DM cu urmatoarea structura:


CUST_ID
GENDER
AGE
MARITAL_STATUS
CITY
STATE_PROVINCE
COUNTRY_ID
INCOME_ID
CREDIT_LIMIT
Se populeaza cu datele din CUST_EXT si se respecta urmatoarele reguli:
- toate valorile null se inlocuiesc cu ‘?’ sau cu -1;
- valorile pentru AGE se calculeaza;
 INCOME_ID este un ID cu valori intre A si L care refera spre tabelul nou creat
INCOME_LEVEL cu structura: INCOME_ID, LIM_INF,LIM_SUP.

8
3) Creati si populati tabelul CUST_DM_BIN cu valorile discretizate pentru urmatoarele
atribute:
GENDER, INCOME_ID, MARITAL_STATUS - dupa valorile existente
AGE – dupa intervalele 0-24, 25-39, 40-59, 60-70, peste 80
STATE_PROVINCE – dupa grupuri de cate 5 provincii, ordonate alfabetic
CREDIT_LIMIT – stabiliti 10 limite astfel incat valorile sa fie distribuite
echidistant

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