Beregning af Centrale Minedriftsmetrikker
Stryg for at vise menuen
Support: Definition, beregning og fortolkning
Support måler, hvor ofte et bestemt element eller elementmængde forekommer i et transaktionsdatasæt.
Matematisk er support for en elementmængde andelen af transaktioner, der indeholder alle elementer i sættet. I en detailkontekst hjælper support med at forstå, hvor almindelig en kombination af produkter er blandt alle køb.
Support(itemset) = Number of transactions containing itemset / Total number of transactions
En højere supportværdi betyder, at elementmængden er mere udbredt i dine data, hvilket gør den til en kandidat for yderligere analyse eller kampagner. For eksempel, hvis "bread and butter" optræder sammen i 30 ud af 100 transaktioner, er support for {"bread", "butter"} 0,3.
Confidence: Formel, betydning og praktisk anvendelse
Konfidens vurderer sandsynligheden for, at en kunde, der køber vare A, også vil købe vare B.
Den beregnes som forholdet mellem antallet af transaktioner, der indeholder både A og B, og antallet af transaktioner, der kun indeholder A.
Confidence(A ⇒ B) = Number of transactions containing both A and B / Number of transactions containing A
I praksis angiver konfidens, hvor pålidelig reglen "hvis A, så B" er. Hvis konfidensen er høj, kan du være mere sikker på, at kunder, der køber A, også vil købe B, hvilket er nyttigt til målrettede anbefalinger eller markedsføring.
Lift: Udledning, måling og betydning
Lift vurderer, hvor meget mere sandsynligt det er, at vare B bliver købt, når vare A købes, sammenlignet med hvis køb af A og B var uafhængige hændelser.
Den beregnes ved at dividere reglens konfidens med støtten for konsekventen (B):
Lift(A ⇒ B) = Confidence(A ⇒ B) / Support(B)
En lift-værdi på 1 antyder ingen association (uafhængighed), større end 1 indikerer en positiv association, og mindre end 1 antyder en negativ association. Lift er vigtig, fordi den justerer for konsekventens popularitet og hjælper med at skelne mellem reelt meningsfulde relationer og tilfældige sammenfald.
Arbejdet eksempel: Beregning af support, konfidens og lift
Antag, at du har følgende transaktionsdata:
- Transaktion 1: Milk, Bread;
- Transaktion 2: Milk, Diaper, Beer, Bread;
- Transaktion 3: Milk, Diaper, Beer, Cola;
- Transaktion 4: Bread, Butter.
Lad os beregne målene for reglen: Milk ⇒ Bread.
-
Support(Milk, Bread): Forekommer i Transaktion 1 og 2 (2 ud af 4) ⇒ 0,5;
-
Support(Milk): Forekommer i Transaktion 1, 2 og 3 (3 ud af 4) ⇒ 0,75;
-
Support(Bread): Forekommer i Transaktion 1, 2 og 4 (3 ud af 4) ⇒ 0,75.
-
Confidence(Milk ⇒ Bread): Support(Milk, Bread) / Support(Milk) = 0,5 / 0,75 = 0,6667;
-
Lift(Milk ⇒ Bread): Confidence(Milk ⇒ Bread) / Support(Bread) = 0,6667 / 0,75 = 0,8889.
Dette betyder, at selvom "Milk" og "Bread" ofte optræder sammen, øger køb af "Milk" ikke sandsynligheden for at købe "Bread" sammenlignet med baseline.
123456789101112131415161718192021222324252627282930import pandas as pd from mlxtend.preprocessing import TransactionEncoder # Sample transaction data data = [ ['Milk', 'Bread'], ['Milk', 'Diaper', 'Beer', 'Bread'], ['Milk', 'Diaper', 'Beer', 'Cola'], ['Bread', 'Butter'] ] # Converting to DataFrame with one-hot encoding te = TransactionEncoder() te_ary = te.fit(data).transform(data) df = pd.DataFrame(te_ary, columns=te.columns_) # Calculating support support_milk = df['Milk'].mean() support_bread = df['Bread'].mean() support_milk_bread = (df['Milk'] & df['Bread']).mean() # Calculating confidence for rule: Milk => Bread confidence = support_milk_bread / support_milk # Calculating lift for rule: Milk => Bread lift = confidence / support_bread print(f"Support (Milk & Bread): {support_milk_bread:.2f}") print(f"Confidence (Milk ⇒ Bread): {confidence:.2f}") print(f"Lift (Milk ⇒ Bread): {lift:.2f}")
Denne kode demonstrerer, hvordan man beregner centrale målinger for associationsregler—support, konfidens og lift—ved hjælp af et lille transaktionsdatasæt. Sådan fungerer de enkelte dele:
-
Forbered transaktionsdata:
- Listen
dataindeholder transaktioner, hver som en liste over købte varer; - Hver underliste repræsenterer en enkelt transaktion (kurv) fra en kunde.
- Listen
-
One-hot kodning af transaktioner:
- Koden bruger
TransactionEncoderframlxtend-biblioteket til at konvertere listen af varelister til et format, der egner sig til analyse; fitidentificerer alle unikke varer, ogtransformopretter et boolesk array (True hvis varen er til stede i transaktionen, ellers False);- Dette array konverteres til en pandas DataFrame, hvor hver kolonne er en vare og hver række er en transaktion.
- Koden bruger
-
Beregn support:
support_milk = df['Milk'].mean()beregner andelen af transaktioner, der indeholder "Milk";support_bread = df['Bread'].mean()beregner andelen, der indeholder "Bread";support_milk_bread = (df['Milk'] & df['Bread']).mean()beregner andelen af transaktioner, der indeholder både "Milk" og "Bread" (snittet af de to kolonner).
-
Beregn konfidens:
confidence = support_milk_bread / support_milkberegner konfidensen for reglen "Milk ⇒ Bread";- Dette måler, hvor ofte "Bread" købes, når "Milk" købes.
-
Beregn lift:
lift = confidence / support_breadberegner lift for reglen;- Lift sammenligner den observerede konfidens med den forventede konfidens, hvis køb af "Milk" og "Bread" var uafhængige.
-
Udskriv og fortolk resultater:
- Koden udskriver support-, konfidens- og lift-værdierne for "Milk & Bread";
- En support på 0,50 betyder, at "Milk" og "Bread" købes sammen i halvdelen af transaktionerne;
- En konfidens på 0,67 betyder, at når "Milk" købes, købes "Bread" også i to tredjedele af tilfældene;
- En lift på 0,89 antyder, at køb af "Milk" faktisk gør det en smule mindre sandsynligt at købe "Bread" sammenlignet med tilfældigheder (da lift < 1).
1. Antag, at der i et datasæt med 1.000 transaktioner er 150 transaktioner, der indeholder både "apples" og "bananas". Hvad er support for itemsettet {"apples", "bananas"}?
2. Hvilken sætning adskiller bedst confidence fra lift i association rule mining?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat