posts - 30,  comments - 3,  trackbacks - 0
          Apriori算法乃是關聯規則挖掘的經典算法,盡管是94年提出的算法,然而至今也有著旺盛的生命力。在互聯網科學領域,也有著廣泛的應用,因此還是值得大家都對此學習一下。

          一、術語
          1.支持度:support,所有實例中覆蓋某一項集的實例數。
          2.置信度:confidence。對于X→Y這個規則,如果數據庫的包含X的實例數的c%也包含Y,則X→Y的置信度為c%。
          3.頻繁項集:也稱large itemsets,指支持度大于minsup(最小支持度)的項集

          二、思想
          1.Apriori算法思想與其它關聯規則挖掘算法在某些方面是相同的。即首先找出所有的頻繁項集,然后從頻繁項集中抽取出規則,再從規則中將置信度小于最小置信度的規則剃除掉。

          2.若項集i為頻繁項集,則其所有子集必為頻繁項集。因此,Apriori算法思想在于從頻繁的k-1項集中合并出k項集,然后剃除掉子集有不是頻繁項集的k項集。

          3.先從數據庫中讀出每條實例,對于設定閾值,選出頻繁1項集,然后從頻繁1項集中合并,并剃除掉包含非頻繁1項集子集的2項集……

          4.符號說明:
          Lk:Set of large(frequent) k-itemsets
          Ck:Set of candidate k-itemsets
          apriori-gen()函數通過合并k-1的頻繁項集,生成Ck

          三、算法描述
          1) Apriori基本算法
           1L1={large 1-itemsets};
           2for(k=2;Lk-1!=Φ;k++)
           3{
           4  Ck=apriori-gen(Lk-1);
           5  for(all transaction t∈D)
           6  {
           7     Ct=subset(Ck,t);
           8     for(all candidates c∈Ct)
           9        c.count++;
          10  }

          11  Lk={c∈Ck|c.count>=minsup}
          12}

          13Answer=∪k Lk;

          2)apriori-gen()函數
              這個函數將Lk-1(即所有k-1頻繁項集的集合)作為參數,返回一個Lk的超集(即Ck
              算法如下:
          1insert into Ck
          2select p.item1, p.item2 ,p.itemk-1,q.itemk-1
          3from Lk-1 p, Lk-1 q
          4where p.item1=q.item1, p.item2=q.item2 , p.itemk-1<q.itemk-1
             
              然后通過剪枝,剃除掉Ck中某些子集不為頻繁k-1項集的項集,算法如下:
          1for(all items c∈Ck)
          2{
          3     for(all k-1 itemsets s of c)
          4     {
          5        if(s
          ∉Lk-1)
          6           delete c from Ck;
          7     }

          8}
             
          3)從頻繁項集中生成規則
          1for(all l∈Answer)
          2{
          3  A=set of nonempty-subset(l);
          4  for(all aA)
          5  {
          6    output a→(l-a);
          7  }

          8}
            

          四、舉例(這里將minsup=1,mincof=0.5)
          L3={{1 2 3}{1 2 4}{1 3 4}{1 3 5}{2 3 4}}
          在合并步驟時,選取L3中,前兩個項都相同,第三個項不同的項集合并,如{1 2 3}與{1 2 4}合并、{1 3 4}與{1 3 5}合并成{1 2 3 4}和{1 3 4 5}。因此,C4={{1 2 3 4}{1 3 4 5}},但是由于{1 3 4 5}中某子集{3 4 5}并未在L3中出現,因此,將{1 3 4 5}剃除掉,所以L4={{1 2 3 4}}。
          然后以L4為例,選取出關聯的規則:
          L4中{1 2 3 4}項集中抽取出(這里只列出左邊為3項的情況):
          {1 2 3}→4
          {1 2 4}→3
          {1 3 4}→2
          {2 3 4}→1
          顯然,因為只有一個4項集,因此,這四條規則的置信度都為100%。因此,全數為關聯規則。

          五、Apriori變體
              有些Apriori變體為追求時間效率,不是從L1→C2→L2→C3→....的步驟產生,而是從L1→C2→C3'..產生。

          參考文獻:
          Agrawal, Rakesh, Srikant, Ramakrishnan. Fast algorithms for mining association rules in large databases. Very Large Data Bases, International Conference Proceedings, p 487, 1994   
          posted on 2012-02-27 13:08 Seraphi 閱讀(782) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 清新县| 三都| 喜德县| 灵石县| 宜君县| 三门县| 华阴市| 镇坪县| 克什克腾旗| 永仁县| 井研县| 衡南县| 吉安市| 常熟市| 苏尼特右旗| 田林县| 长岭县| 河津市| 册亨县| 和田县| 沙洋县| 兴安盟| 马关县| 姜堰市| 德钦县| 兴城市| 神木县| 新巴尔虎右旗| 无极县| 清丰县| 伊宁市| 南丰县| 津市市| 江孜县| 刚察县| 额尔古纳市| 安仁县| 荔浦县| 烟台市| 石首市| 遂川县|