Algoritmisen Suorituskyvyn Vertailu
Pyyhkäise näyttääksesi valikon
Apriori- ja FP-Growth-algoritmien laskennallisten erojen ymmärtäminen on olennaista assosiaatiosääntöjen louhinnassa suuressa mittakaavassa. Alla on jäsennelty vertailu, joka auttaa arvioimaan näitä kahta algoritmia tehokkaasti:
Muistin käyttö
Luo kaikki mahdolliset itemsetit ja tallentaa ne muistiin, mikä voi johtaa eksponentiaaliseen muistin käytön kasvuun uniikkien tuotteiden määrän kasvaessa;
Rakentaa tiiviin FP-puun, joka tallentaa transaktiot tehokkaammin yhdistämällä yhteiset etuliitteet, mikä pienentää merkittävästi muistin tarvetta tiheissä aineistoissa.
Nopeus
Toistaa tietoaineiston läpikäynnin laskeakseen itemsettien esiintymistiheydet, mikä johtaa pitkään suoritusaikaan erityisesti itemsettien koon kasvaessa;
Vaatii vain kaksi täyttä läpikäyntiä datasta—ensimmäinen yleisten tuotteiden tunnistamiseen ja toinen FP-puun rakentamiseen—tehden siitä huomattavasti nopeamman suurille tietoaineistoille.
Skaalautuvuus
Skaalautuvuus on heikko, koska ehdokasitemsettien määrän yhdistelmällinen kasvu tekee siitä epäkäytännöllisen erittäin suurille tai tiheille tietoaineistoille;
Skaalautuu paremmin välttämällä ehdokasitemsettien muodostamisen ja hyödyntämällä puun pakkausta, mahdollistaen tehokkaan louhinnan myös datan ja itemsettien monimutkaisuuden kasvaessa.
Käytännön skenaariot
Kun tietoaineistot ovat pieniä tai harvoja, tulkittavuus ja yksinkertaisuus ovat tärkeitä tai kun halutaan helposti säätää minimituen kynnysarvoja;
Kun tietoaineistot ovat suuria, tiheitä tai muistin tehokkuus ja nopeus ovat ensisijaisia.
Seuraava koodiesimerkki havainnollistaa, kuinka luodaan synteettinen aineisto market basket -transaktioista ja verrataan Apriori- ja FP-Growth-algoritmien suoritusaikaa Pythonin mlxtend-kirjastolla. Näet, miten kumpikin algoritmi käsittelee samaa dataa ja kuinka niiden suoritusaika eroaa, mikä korostaa niiden tehokkuutta käytännön tilanteissa.
123456789101112131415161718192021222324252627import pandas as pd from mlxtend.frequent_patterns import apriori, fpgrowth import numpy as np import time # Create a medium-sized synthetic dataset np.random.seed(42) items = ['apple', 'banana', 'milk', 'bread', 'butter', 'cheese', 'eggs', 'juice'] n_transactions = 3000 data = [] for _ in range(n_transactions): basket = np.random.choice(items, size=np.random.randint(2, 6), replace=False) data.append({item: (item in basket) for item in items}) df = pd.DataFrame(data) # Timing Apriori start_apriori = time.time() apriori(df, min_support=0.05, use_colnames=True) end_apriori = time.time() # Timing FP-Growth start_fpgrowth = time.time() fpgrowth(df, min_support=0.05, use_colnames=True) end_fpgrowth = time.time() print(f"Apriori runtime: {end_apriori - start_apriori:.3f} seconds") print(f"FP-Growth runtime: {end_fpgrowth - start_fpgrowth:.3f} seconds")
1. Milloin FP-Growth kannattaa valita Apriorin sijaan assosiaatiosääntöjen louhinnassa?
2. Mikä väittämä kuvaa parhaiten Apriori- ja FP-Growth-algoritmien laskennallisen monimutkaisuuden eroa?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme