آپریوری یک الگوریتم کلاسیک برای یادگیری قوانین وابستگی است. آپریوری روی پایگاههای داده شامل تراکنشها (مثلاً مجموعه محصولات خریداری شده توسط مشتریان در یک سوپرمارکت) ساخته شدهاست. الگوریتمهای دیگری نیز در این زمینه وجود دارند که روی پایگاه دادههایی کار میکنند که یا شامل تراکنش نیستند (Winepi و Minepi) و یا دارای ثبت زمانی نیستند (DNA sequencing).
ورودی این الگوریتم مجموعهای از مجموعه آیتمها است. الگوریتم تلاش میکند تا زیرمجموعههایی از آیتمها را که حداقل بین C مجموعه آیتم مشترک است بیابد. آپریوری یک الگوریتم پایین به بالا است، آنگونه که در هر مرحله یک آیتم به زیرمجموعههای مکرر اضافه میشود (تولید کاندید). مجموعه کاندیدها روی داده مورد ارزیابی قرار میگیرند. شرط خاتمه الگوریتم، عدم وجود شیوه توسعه موفق دیگری است. ویکیپدیا
در ابتدا ، فایل کلاس را فراخوانی کنید:
include 'class.apriori.php'; $Apriori = new Apriori();
متدها: setMaxScan(int)
, setMinSup(int)
, setMinConf(int)
,
setDelimiter(string)
, getMinSup(void)
, getMinConf(void)
, getMaxScan(void)
, getDelimiter(void)
,
process(string or array)
, printFreqItemsets(void)
, getFreqItemsets(void)
, printAssociationRules(void)
,
getAssociationRules(void)
, saveFreqItemsets(string)
, saveAssociationRules(string)
شما می توانید مقادیر قابل تغییر را بصورت زیر دستکاری نمایید:
$Apriori->setMaxScan(20); //Scan 2, 3, ... $Apriori->setMinSup(2); //Minimum support 1, 2, 3, ... $Apriori->setMinConf(75); //Minimum confidence - Percent 1, 2, ..., 100 $Apriori->setDelimiter(','); //Delimiter
minSup = 2, minConf = 75(%)
# | Itemset |
---|---|
1 | A, B, C, D |
2 | A, D, C |
3 | B, C |
4 | A, E, C |
A, B, C, D A, D, C B, C A, E, C
<?php include 'class.apriori.php'; $Apriori = new Apriori(); $Apriori->setMaxScan(20); //Scan 2, 3, ... $Apriori->setMinSup(2); //Minimum support 1, 2, 3, ... $Apriori->setMinConf(75); //Minimum confidence - Percent 1, 2, ..., 100 $Apriori->setDelimiter(','); //Delimiter /* Use Array: $dataset = array(); $dataset[] = array('A', 'B', 'C', 'D'); $dataset[] = array('A', 'D', 'C'); $dataset[] = array('B', 'C'); $dataset[] = array('A', 'E', 'C'); $Apriori->process($dataset); */ $Apriori->process('dataset.txt'); //Frequent Itemsets echo '<h1>Frequent Itemsets</h1>'; $Apriori->printFreqItemsets(); echo '<h3>Frequent Itemsets Array</h3>'; print_r($Apriori->getFreqItemsets()); //Association Rules echo '<h1>Association Rules</h1>'; $Apriori->printAssociationRules(); echo '<h3>Association Rules Array</h3>'; print_r($Apriori->getAssociationRules()); //Save to file $Apriori->saveFreqItemsets('freqItemsets.txt'); $Apriori->saveAssociationRules('associationRules.txt'); ?>
Frequent Itemsets
Time: 0 second(s)
===============================================================================
{B,C} = 2
{A,C,D} = 2Frequent Itemsets Array
Array ( [0] => Array ( [sup] => 2 [0] => B [1] => C ) [1] => Array ( [sup] => 2 [0] => A [1] => C [2] => D ) )Association Rules
Time: 0 second(s)
===============================================================================
B => C = 100%
D => C = 100%
D => A = 100%
D => A,C = 100%
C => A = 75%
A => C = 100%
A,D => C = 100%
C,D => A = 100%Association Rules Array
Array ( [B] => Array ( [C] => 100 ) [D] => Array ( [C] => 100 [A] => 100 [A,C] => 100 ) [C] => Array ( [A] => 75 ) [A] => Array ( [C] => 100 ) [A,D] => Array ( [C] => 100 ) [C,D] => Array ( [A] => 100 ) )