关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)
基于關聯規則的推薦有三種方法:Apriori關聯規則算法FP Tree關聯規則算法;PrefixSpan關聯規則算法;
關聯規則挖掘推薦算法:
關聯規則挖掘是一種在大規模交易中識別類似規則關系模式的通用技術,可以應用到推薦系統中。交易T是所有有效產品集合P={p 1 ,p 2 ,...,p n }的子集,表示被一起購買的產品集合,關聯規則X=>Y表示只要交易T中包含了X里面的元素,那么認為Y里面的元素也有可能被T包含。常見的規則挖掘算法是Apriori算法,關聯規則的衡量指標是:支持度(support)和可信度(confidence)。將關聯規則應用到推薦系統的主要問題就是需要將評分轉換為交易,一般情況把所有的向前(正向)的評分集合<可以是做過去均值化操作后的評分矩陣>或者用戶的購買行為可以看做一次交易。
Apriori算法概述:
Apriori算法是常用的用于挖掘出數據關聯規則的算法,它用來找出數據值中頻繁出現的數據集合,這些找出的集合有助于我們的業務決策,同時我們也可以認為這些頻繁出現的數據集合中的數據項存在一定的關聯性,簡而言之,可以認為這些數據項之間存在某種“相似性”。比如在電商的網購數據中,如果發現某一些商品經常一起被購買,那么我們可以認為這些商品之間存在某種“相似性”,從而我們可以優化網站中這些商品的排列位置、優化商品的倉庫位置或者將這些“相似”的物品推薦給正在瀏覽對應物品的客戶,從而可以達到增加經濟效益、節約成本的目的。
交易集:包含所有數據的一個數據集合,數據集合中的每條數據都是一筆交易;項:交易集中的每個商品被成為一個項;模式/項集(ItemSet):項組合被成為模式/項集;支持度(Support):一個項集在在整個交易集中出現的次數/出現的頻度,比如:Support({A,C})=2表示A和C同時出現的次數是2次;最小支持度:交易次數達到最小支持度的情況下,該項集才會被計算;頻繁項集:如果項集的支持度大于等于最小支持度,那么該項集被成為頻繁項集;置信度(Confidence):關聯規則左件和右件同時出現的頻繁程度,該值越大,表示同時出現的幾率越大;關聯規則:LHS ? RHS(confidence) -----> 如果客戶購買了左件(LHS),也可能購買右件(RHS),購買的置信度為confidence
Apriori算法原理:
Apriori算法本質的作用是找出購物數據集中的最頻繁的K項集;Apriori算法采用了迭代的方法,先搜索出候選1項集及對應的支持度,剪枝去掉低于最小支持度的1項集,得到頻繁1項集。然后對剩下的頻繁1項集進行連接,得到候選的頻繁2項集,篩選去掉低于最小支持度的候選頻繁2項集,得到頻繁2項集,以此類推,迭代下去,直到無法找到頻繁k+1項集為止,對應的頻繁k項集的集合即為算法的輸出結果。
輸入:數據集合D,支持度閾值α;輸出:最大的頻繁K項集
1. 掃描整個數據集,得到所有出現過的1項集,得到候選頻繁1項集。2. 令k = 1;3. 挖掘頻繁k項集;掃描數據計算候選頻繁k項集的支持度去除候選頻繁k項集中支持度低于閾值的數據集,得到頻繁k項集。如果得到的頻繁k項集為空,則直接返回頻繁k-1項集的集合作為算法結果,算法結束。如果得到的頻繁k項集只有一項,則直接返回頻繁k項集的集合作為算法結果,算法結束。基于頻繁k項集和頻繁1項集,連接生成候選頻繁k+1項集。4. k=k+1,轉入步驟3。
Apriori算法總結:
priori算法是一種非常經典的頻繁項集的挖掘算法,很多算法都是基于Apriori算法的一種擴展,比如:FP-Tree、GSP、CBA等等。理解掌握Apriori算法原理,對于對數據挖掘相關算法的學習具有非常好的作用。不過,現在一般很少直接使用Aprior算法來進行數據挖掘了,原因是:Apriori算法的數據挖掘效率比較低。
FP Tree算法概述:
Apriori算法作為挖掘頻繁項集的算法,需要多次掃描數據,I/O瓶頸比較高,為了解決這個問題,提出了FP-Tree算法,也稱為FP Growth算法;在FP Tree算法中,不管存在多少數據量,只需要掃描兩次數據集,因此提高了算法的運行效率。FP Tree算法改進了Apriori算法的I/O瓶頸,類似BIRCH聚類,利用樹結構來提高算法的執行效率,是一種利用空間換時間的一種算法效率提升方式。備注:FP Tree是我們在生產環境中常用的一種數據挖掘頻繁項集的算法。
FP Tree算法原理:
為了減少I/O次數,FP Tree算法引入了一些數據結構來臨時存儲數據,主要包含
三個部分:
1. 項頭表:記錄所有的1項頻繁集以及出現的次數,按照次數降序排列。2. FP Tree:將原始數據集映射到內存中的一棵FP樹。3. 節點鏈表:基于項頭表保存的在FP Tree中對應的項的存儲位置的一個鏈表。FP Tree算法可以分為一下兩個過程:1. 項頭表和FP Tree的構建2. FP Tree的挖掘
FP-Tree算法原理之項頭表構建:
掃描所有數據,得到所有一項集的支持度,然后刪除支持度低于閾值的項,得到頻繁一項集,將所有頻繁一項集按照支持度降序排列,放入項頭表中。
FP-Tree算法原理之FP Tree構建:
FP Tree樹的構建是FP-Tree算法的關鍵點,主要分為兩個過程:
1. 掃描數據,對于每條數據刪除非頻繁的1項集,并按照支持度降序排列,得到排序后的數據集。
2. 基于排序好的數據集構建FP Tree。初始狀態FP樹是空的,建立FP樹時我們一條條的讀入排序后的數據集,插入FP樹,插入時按照排序后的順序,插入FP樹中,排序靠前的節點是祖先節點,而靠后的是子孫節點。如果有共用的祖先,則對應的公用祖先節點計數加1。插入后,如果有新節點出現,則項頭表對應的節點會通過節點鏈表鏈接上新節點。直到所有的數據都插入到FP樹后,FP樹的建立完成。
FP-Tree算法原理之FP Tree挖掘:
當構建好FP樹、項頭表以及節點鏈表后,就可以開始進行頻繁項集的挖掘了。首先從項頭表的底部項依次向上挖掘,對于項頭表對應于FP樹的每一項,找出對應的條件模式基,所謂條件模式基是以我們要挖掘的節點作為葉子節點所對應的FP子樹,得到這個FP子樹,我們將子樹中每個節點的的計數設置為葉子節點的計數,并刪除計數低于支持度的節點。從這個條件模式基,我們就可以遞歸挖掘得到頻繁項集了。
尋找F節點的條件模式基;我們很容易得到F的頻繁2項集為{A:2,F:2}、{C:2,F:2}、{E:2,F:2}、{B:2,F:2}。遞歸合并二項集,得到頻繁三項集為{A:2,C:2,F:2}、{A:2,E:2,F:2},...。當然一直遞歸下去,最大的頻繁項集為頻繁5項集,為{A:2,C:2,E:2,B:2,F:2}
FP-Tree算法總結歸納:
FP-Tree算法流程主要包括一下幾步:掃描數據,得到所有的頻繁1項集的計數,然后刪除支持度低于閾值的項,將1項頻繁集放入項頭表,并按照支持度降序排列。讀取數據集中的數據,將數據中的非頻繁1項集刪除,并按照支持度排序排列后將數據插入到FP樹中,插入時按照排序后的順序插入,并計算當前節點的后序子孫節點的數目。直到所有數據均插入到FP樹后,FP樹構建完成。從項頭表的底部項依次向上找到項頭表項對應的條件模式基。從條件模式基遞歸挖掘得到項頭表項項的頻繁項集。如果不限制頻繁項集的項數,則返回上一步驟的所有的頻繁項集,否則只返回滿足項數要求的頻繁項集。
PrefixSpan算法概述:
PrefixSpan全稱Prefix-Projected Pattern Growth(即前綴投影的模式挖掘),是用于挖掘頻繁序列的數據挖掘算法,和Apriori算法以及FP Tree算法的挖掘目標稍有不同。PrefixSpan算法是生產中常用的一種頻繁序列模式挖掘算法。備注:序列中的項集是具有時間上的先后關系的。
子序列:如果某個序列A所有的項集在序列B中都可以找到,則A是B的子序列。
頻繁序列:出現頻次超過支持度的子序列就叫做頻繁序列。
前綴序列:即序列前面部分的子序列。
后綴序列:即序列中位于前綴序列之后的子序列就叫做后綴序列。
前綴投影:即投影數據庫,即序列數據庫S中所有相對于前綴的后綴序列的集合
PrefixSpan算法原理:
類似Apriori算法,先找出所有子序列中長度為1的前綴開始挖掘序列模型(并且刪除原始序列中非頻繁的長度為1的序列),搜索對應的投影數據庫得到長度為1的前綴對應的頻繁序列,然后遞歸的挖掘長度為2的前綴所對應的頻繁序列,。。。以此類推,一直遞歸到不能挖掘到更長的前綴挖掘為止。
PrefixSpan算法流程:
輸入:序列數據庫S和支持度閾值α 輸出:所有滿足支持度要求的頻繁序列集
步驟:(備注:所找到的前綴即頻繁序列)
1. 找出所有子序列中長度為1的前綴以及對應的投影數據庫;2. 對于長度為1的前綴進行計數,將支持度低于閾值α的前綴對應的項從序列數據庫;S中刪除,同時得到所有的頻繁1項序列。3. 對于每個長度為i滿足支持度的前綴進行遞歸挖掘:
a. 找出前綴對應的投影數據庫,如果投影數據庫為空,則遞歸返回;b. 統計對應投影數據庫中各項的支持度計數,如果所有項的支持度計數都低于閾值α,則遞歸返回。;c. 將滿足支持度計數的各個單項和當前的前綴進行合并,得到若干新的前綴。;d. 令i=i+1,前綴為合并單項后的各個前綴,分別遞歸執行第三步。
協同過濾各種方式總結:
廣義的協同過濾算法主要包括三種算法:基于用戶(UserCF)的協同過濾算法;基于物品(ItemCF)的協同過濾算法;基于模型(ModelCF)的協同過濾算法;
使用關聯規則的協同過濾;使用聚類算法的協同過濾;使用分類算法的協同過濾;使用回歸的協同過濾;使用矩陣分解/隱語義模型的協同過濾;使用神經網絡的協同過濾;
總結
以上是生活随笔為你收集整理的关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语语法---分词短语详解
- 下一篇: 英语语法---形容词性从句详解