Keskeisten louhintamittareiden laskeminen
Pyyhkäise näyttääksesi valikon
Support: Määritelmä, laskenta ja tulkinta
Support mittaa, kuinka usein tietty tuote tai tuotejoukko esiintyy transaktiodatasarjassa.
Matemaattisesti support tietylle tuotejoukolle on niiden transaktioiden osuus, jotka sisältävät kaikki kyseisen joukon tuotteet. Vähittäiskaupan kontekstissa support auttaa ymmärtämään, kuinka yleinen tietty tuotekombinaatio on kaikista ostotapahtumista.
Support(itemset) = Number of transactions containing itemset / Total number of transactions
Korkeampi support-arvo tarkoittaa, että tuotejoukko esiintyy useammin datassa, mikä tekee siitä mahdollisen kohteen jatkoanalyysille tai kampanjoille. Esimerkiksi, jos "bread and butter" esiintyvät yhdessä 30:ssä sadasta transaktiosta, support {"bread", "butter"} on 0.3.
Confidence: Kaava, merkitys ja käytännön sovellus
Luottamus arvioi todennäköisyyttä, että asiakas, joka ostaa tuotteen A, ostaa myös tuotteen B.
Se lasketaan jakamalla niiden tapahtumien määrä, joissa esiintyy sekä A että B, niiden tapahtumien määrällä, joissa esiintyy vain A.
Confidence(A ⇒ B) = Number of transactions containing both A and B / Number of transactions containing A
Käytännössä luottamus kertoo, kuinka luotettava sääntö "jos A, niin B" on. Jos luottamus on korkea, voidaan olla varmempi siitä, että asiakkaat, jotka ostavat A:n, ostavat myös B:n. Tämä on hyödyllistä kohdennetuissa suosituksissa tai markkinoinnissa.
Lift: Johdanto, mittaaminen ja merkitys
Nostokerroin arvioi, kuinka paljon todennäköisempää on, että tuote B ostetaan, kun tuote A on ostettu, verrattuna tilanteeseen, jossa A:n ja B:n ostot olisivat toisistaan riippumattomia.
Se lasketaan jakamalla säännön luottamus seuraajan (B) tuella:
Lift(A ⇒ B) = Confidence(A ⇒ B) / Support(B)
Lift-arvo 1 tarkoittaa, ettei assosiaatiota ole (riippumattomuus), yli 1 viittaa positiiviseen assosiaatioon ja alle 1 negatiiviseen assosiaatioon. Lift on tärkeä, koska se huomioi seuraajan suosion ja auttaa erottamaan aidosti merkitykselliset yhteydet sattumanvaraisista.
Esimerkkilaskelma: Tuennan, luottamuksen ja liftin laskeminen
Oletetaan, että käytössä on seuraava transaktiodata:
- Transaction 1: Milk, Bread;
- Transaction 2: Milk, Diaper, Beer, Bread;
- Transaction 3: Milk, Diaper, Beer, Cola;
- Transaction 4: Bread, Butter.
Lasketaan mittarit säännölle: Milk ⇒ Bread.
-
Support(Milk, Bread): Esiintyy transaktioissa 1 ja 2 (2/4) ⇒ 0,5;
-
Support(Milk): Esiintyy transaktioissa 1, 2 ja 3 (3/4) ⇒ 0,75;
-
Support(Bread): Esiintyy transaktioissa 1, 2 ja 4 (3/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.
Tämä tarkoittaa, että vaikka "Milk" ja "Bread" esiintyvät usein yhdessä, "Milk"-tuotteen ostaminen ei lisää "Bread"-tuotteen ostamisen todennäköisyyttä verrattuna lähtötasoon.
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}")
Tämä koodi havainnollistaa, kuinka lasketaan keskeiset assosiaatiosääntöjen mittarit—tuki (support), luottamus (confidence) ja lift—pienen transaktiodatan avulla. Näin kukin osa toimii:
-
Transaktiodatan valmistelu:
data-lista sisältää transaktiot, joissa jokainen on ostettujen tuotteiden lista;- Jokainen alilista edustaa yksittäistä asiakkaan ostoskoria.
-
Transaktioiden one-hot-koodaus:
- Koodissa käytetään
mlxtend-kirjastonTransactionEncoder-luokkaa, joka muuntaa listan analyysiin sopivaan muotoon; fitoppii kaikki yksilölliset tuotteet jatransformluo totuusarvomatriisin (True, jos tuote on transaktiossa, muuten False);- Matriisi muunnetaan pandas DataFrameksi, jossa sarakkeet ovat tuotteita ja rivit transaktioita.
- Koodissa käytetään
-
Tuennan laskeminen:
support_milk = df['Milk'].mean()laskee niiden transaktioiden osuuden, joissa "Milk" esiintyy;support_bread = df['Bread'].mean()laskee niiden osuuden, joissa "Bread" esiintyy;support_milk_bread = (df['Milk'] & df['Bread']).mean()laskee niiden transaktioiden osuuden, joissa sekä "Milk" että "Bread" esiintyvät (sarakkeiden leikkaus).
-
Luottamuksen laskeminen:
confidence = support_milk_bread / support_milklaskee säännön "Milk ⇒ Bread" luottamuksen;- Tämä mittaa, kuinka usein "Bread" ostetaan, kun "Milk" ostetaan.
-
Liftin laskeminen:
lift = confidence / support_breadlaskee säännön liftin;- Lift vertaa havaittua luottamusta odotettuun, jos "Milk" ja "Bread" ostettaisiin riippumattomasti.
-
Tulosten tulostus ja tulkinta:
- Koodi tulostaa "Milk & Bread" tuen, luottamuksen ja liftin arvot;
- Tuki 0,50 tarkoittaa, että "Milk" ja "Bread" ostetaan yhdessä puolessa transaktioista;
- Luottamus 0,67 tarkoittaa, että kun "Milk" ostetaan, "Bread" ostetaan myös kahdessa kolmasosassa tapauksista;
- Lift 0,89 osoittaa, että "Milk" ostaminen itse asiassa hieman vähentää "Bread" ostamisen todennäköisyyttä sattumaan verrattuna (koska lift < 1).
1. Oletetaan, että 1 000 tapahtuman aineistossa 150 tapahtumaa sisältää sekä "omenat" että "banaanit". Mikä on itemsetin {"omenat", "banaanit"} tuki?
2. Mikä väite erottaa parhaiten luottamuksen ja nosteen assosiaatiosääntöjen louhinnassa?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme