Sunteți pe pagina 1din 4

Reguli de asociere

Modele de asociere au apărut ca modele de analiză a comportamentului consumatorilor, în


analiza datelor de marketing. O regulă de asociere tipică de acest gen identifică relaţii de
tipul:
x% din persoanele care cumpara produsele A, B şi C, cumpără şi produsul D.
De fapt modelul furnizează ca rezultat grupuri de evenimente între care au fost identificate
asocieri si evaluări ale asocierilor (reguli).
Ulterior, modelele de asociere au început să fie utilizate și în alte domenii, precum:
 Marketing - stabilirea politicilor de discounting, amplasarea locurilor de desfacere etc.
 Financiar - analiza datelor tranzacţionate
 Medicină - diagnosticare
 Detectia fraudelor

Definirea modelului
Setul de date supus analizei este caracterizat de:
m - numărul de atribute. Un atribut este considerat în studiul asocierilor un eveniment care
se manifestă sau nu la un anumit individ.
n - numărul de indivizi supuşi studiului (instanţe, înregistrări). La o instanță se pot regăsii
unul sau mai multe evenimente .
Pentru două evenimente oarecare, Ei şi Ej, cu i=1,m, j=1,m, i≠j, avem definite:
fi - frecvența de apariție a evenimentului Ei în setul de date;
𝑓𝑖
si - proporția în care apare evenimentul Ei în setul de date, si = ∙ 100;
𝑛
fj - frecvenţa de apariţie a evenimentului Ej în setul de date;
𝑓
sj - proporția în care apare evenimentul Ej în setul de date, sj = 𝑛𝑗 ∙ 100
fij - frecvența de apariţie simultană a evenimentelor Ei şi Ej în setul de date.
Un eveniment poate fi antecesor sau succesor după cum este interpretată probabilitatea sa
de apariţie în raport cu celălalt eveniment.
O regulă poate fi formalizată astfel:
if antecesor
then succesor
endif

Putem defini următorii parametrii statistici care leagă cele două evenimente:
Nivelul de suport (support) arată în ce proporție apare cuplul de evenimente la nivelul
setului de date:
f ij
sij   100 .
n
Nivelul de încredere (confidence) arată în ce măsură un eveniment Ej este dependent de un
eveniment (sau grup de evenimente) Ei:
f ij
cij   100
fi
Exprimarea în limbaj natural a nivelului de încredere ar putea fi:
Dacă are loc evenimentul (sau grupul de evenimente) Ei, atunci există cij șanse ca și
evenimentul Ej să aibă loc.
Gradul de îmbunătăţire (lift) arată în ce măsură o regulă este utilă. Atât suportul, cât și
încrederea trebuie folosite pentru a determina dacă o regulă este semnificativă. Cu toate
acestea, există situații în care ambii indicatori pot avea valori mari dar totuși regula nu este
utilă.
Exemplu.
Presupunem că clienții dintr-un supermarket care cumpără suc de portocale cumpără și
lapte în proporție de 75%. Asocierea dintre lapte și suc de portocale are un suport de 30%.
Această regulă are un grad de încredere și un grad de suport ridicate. Ce se întâmplă dacă
90% din clienții supermarketului cumpără lapte? În acest caz, probabilitatea ca un
cumpărător de suc să fie și unul de lapte este mai mică decât probabilitatea ca un
cumpărător oarecare să fie un cumpărător de lapte. Deci de fapt regula este slabă.
Acest aspect este scos în evidență de gradul de îmbunătățire, care se calculează astfel:
fij
lij  n
fi  f j
Exprimarea în limbaj natural a nivelului de îmbunătățire ar putea fi:
Probabilitatea ca evenimentul Ej să aibă loc este de lij ori mai mare dacă şi evenimentul Ei
a avut loc. Cu alte cuvinte prezența evenimentului Ei ca eveniment predecesor al
evenimentului Ej crește probabilitatea ca evenimentul Ej să aibă loc.
Regulile utile sunt reguli care au gradul de îmbunătățire mai mare decât 1. Acest lucru se
deduce ușor din formulă:
fij
fij f Pi / j
lij  n  i  ,
fi  f j fj Pj
n
unde Pi/j este probabilitatea ca evenimentul Ej să aibă loc dacă a avut loc și evenimentul Ei
(probabilitate condiționată) iar Pj este probabilitatea ca evenimentul Ej să aibă loc
indiferent de prezența evenimentului Ei.

Algoritmul Apriori de identificare a asocierilor

Oracle Data Miner utilizează algoritmul Apriori pentru identificarea asocierilor.


Algoritmul pornește de la tabela tranzacțiilor, T, în care o linie reprezintă o tranzacție.
Fiecare linie este constituită dintr-o pereche (instanță, tranzacție) unde tranzacția
reprezintă un set de itemi (evenimente, opțiuni) înregistrați la o instanță (de exemplu o listă
de cumpărături făcută de un client al unui supermarket, sau o listă de operațiuni bancare
făcute de un client al unei bănci). Algoritmul are o fază de preprocesare în care se
construiește un tabel disjunctiv complet pornind de la tabelul de tranzacții. Tabelul
disjunctiv complet are un număr de linii egal cu numărul de instanțe şi un număr de coloane
egal cu numărul de itemi posibili. O valoare din tabel poate fi 1 sau 0 după cum itemul se
regăsește sau nu în tranzacția respectivă.
Un itemset este o grupare de itemi care se găsesc împreună într-o tranzacție. Aceste grupări
stau la baza formării regulilor.
Algoritmul Apriori are două etape:
1. Se determină lista de itemseturi care au un suport mai mare decât o valoare specificată
2. Se construiește lista de reguli analizând toate subseturile itemseturilor frecvente conform
primei etape, pornind de la principiul că suportul unui subset este mai mic sau egal decât
suportul setului părinte.
Pentru orice subset B al setului A: sB ≤ sA
Exemplu. Construirea progresivă a tuturor seturilor de 5 itemi {A,B,C,D,E} generează un
graf de forma:

Numărul de seturi care ar trebui analizate pentru m itemi este:


k  Cm2  Cm3  ...  Cmm1 .
Dacă în graful seturilor există seturi care nu îndeplinesc condiția legată de minimul suport,
atunci spațiul de căutare este diminuat prin eliminarea subgrafurilor format din subseturile
seturilor respective.
Exemplu. Dacă itemul A nu îndeplinește condiția de suport, graful devine:

Partea marcată cu roșu este eliminată din spațiul de căutare a regulilor. Operațiunea este
numită operațiune de curățare (prunning).
Algoritmul apriori poate fi sintetizat astfel:

Procedure Apriori(T, minS; L)


array T[n,m]
List R
L1 = {itemi cu suport mai mare ca minS}
k=2
while Lk -1 != Ø
Ck = {subseturi candidat din Lk -1}
for i = 1,n
if Ck  t[i] && suport(Ck) ≥ minS then
call add(Lk, Ck)
endif
endfor
call add(R, Lk)
k=k+1
endwhile

unde:
T - matricea tranzacțiilor
R - lista de reguli
minS - limita minimă stabilită pentru suportul regulilor

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