日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)

發(fā)布時間:2025/3/12 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基于關(guān)聯(lián)規(guī)則的推薦有三種方法:Apriori關(guān)聯(lián)規(guī)則算法FP Tree關(guān)聯(lián)規(guī)則算法;PrefixSpan關(guān)聯(lián)規(guī)則算法;

關(guān)聯(lián)規(guī)則挖掘推薦算法:

關(guān)聯(lián)規(guī)則挖掘是一種在大規(guī)模交易中識別類似規(guī)則關(guān)系模式的通用技術(shù),可以應(yīng)用到推薦系統(tǒng)中。交易T是所有有效產(chǎn)品集合P={p 1 ,p 2 ,...,p n }的子集,表示被一起購買的產(chǎn)品集合,關(guān)聯(lián)規(guī)則X=>Y表示只要交易T中包含了X里面的元素,那么認(rèn)為Y里面的元素也有可能被T包含。常見的規(guī)則挖掘算法是Apriori算法,關(guān)聯(lián)規(guī)則的衡量指標(biāo)是:支持度(support)和可信度(confidence)。將關(guān)聯(lián)規(guī)則應(yīng)用到推薦系統(tǒng)的主要問題就是需要將評分轉(zhuǎn)換為交易,一般情況把所有的向前(正向)的評分集合<可以是做過去均值化操作后的評分矩陣>或者用戶的購買行為可以看做一次交易。

Apriori算法概述:

Apriori算法是常用的用于挖掘出數(shù)據(jù)關(guān)聯(lián)規(guī)則的算法,它用來找出數(shù)據(jù)值中頻繁出現(xiàn)的數(shù)據(jù)集合,這些找出的集合有助于我們的業(yè)務(wù)決策,同時我們也可以認(rèn)為這些頻繁出現(xiàn)的數(shù)據(jù)集合中的數(shù)據(jù)項(xiàng)存在一定的關(guān)聯(lián)性,簡而言之,可以認(rèn)為這些數(shù)據(jù)項(xiàng)之間存在某種“相似性”。比如在電商的網(wǎng)購數(shù)據(jù)中,如果發(fā)現(xiàn)某一些商品經(jīng)常一起被購買,那么我們可以認(rèn)為這些商品之間存在某種“相似性”,從而我們可以優(yōu)化網(wǎng)站中這些商品的排列位置、優(yōu)化商品的倉庫位置或者將這些“相似”的物品推薦給正在瀏覽對應(yīng)物品的客戶,從而可以達(dá)到增加經(jīng)濟(jì)效益、節(jié)約成本的目的。

交易集:包含所有數(shù)據(jù)的一個數(shù)據(jù)集合,數(shù)據(jù)集合中的每條數(shù)據(jù)都是一筆交易;項(xiàng):交易集中的每個商品被成為一個項(xiàng);模式/項(xiàng)集(ItemSet):項(xiàng)組合被成為模式/項(xiàng)集;支持度(Support):一個項(xiàng)集在在整個交易集中出現(xiàn)的次數(shù)/出現(xiàn)的頻度,比如:Support({A,C})=2表示A和C同時出現(xiàn)的次數(shù)是2次;最小支持度:交易次數(shù)達(dá)到最小支持度的情況下,該項(xiàng)集才會被計(jì)算;頻繁項(xiàng)集:如果項(xiàng)集的支持度大于等于最小支持度,那么該項(xiàng)集被成為頻繁項(xiàng)集;置信度(Confidence):關(guān)聯(lián)規(guī)則左件和右件同時出現(xiàn)的頻繁程度,該值越大,表示同時出現(xiàn)的幾率越大;關(guān)聯(lián)規(guī)則:LHS ? RHS(confidence) -----> 如果客戶購買了左件(LHS),也可能購買右件(RHS),購買的置信度為confidence

Apriori算法原理:

Apriori算法本質(zhì)的作用是找出購物數(shù)據(jù)集中的最頻繁的K項(xiàng)集;Apriori算法采用了迭代的方法,先搜索出候選1項(xiàng)集及對應(yīng)的支持度,剪枝去掉低于最小支持度的1項(xiàng)集,得到頻繁1項(xiàng)集。然后對剩下的頻繁1項(xiàng)集進(jìn)行連接,得到候選的頻繁2項(xiàng)集,篩選去掉低于最小支持度的候選頻繁2項(xiàng)集,得到頻繁2項(xiàng)集,以此類推,迭代下去,直到無法找到頻繁k+1項(xiàng)集為止,對應(yīng)的頻繁k項(xiàng)集的集合即為算法的輸出結(jié)果。

輸入:數(shù)據(jù)集合D,支持度閾值α;輸出:最大的頻繁K項(xiàng)集

1. 掃描整個數(shù)據(jù)集,得到所有出現(xiàn)過的1項(xiàng)集,得到候選頻繁1項(xiàng)集。2. 令k = 1;3. 挖掘頻繁k項(xiàng)集;掃描數(shù)據(jù)計(jì)算候選頻繁k項(xiàng)集的支持度去除候選頻繁k項(xiàng)集中支持度低于閾值的數(shù)據(jù)集,得到頻繁k項(xiàng)集。如果得到的頻繁k項(xiàng)集為空,則直接返回頻繁k-1項(xiàng)集的集合作為算法結(jié)果,算法結(jié)束。如果得到的頻繁k項(xiàng)集只有一項(xiàng),則直接返回頻繁k項(xiàng)集的集合作為算法結(jié)果,算法結(jié)束。基于頻繁k項(xiàng)集和頻繁1項(xiàng)集,連接生成候選頻繁k+1項(xiàng)集。4. k=k+1,轉(zhuǎn)入步驟3。

Apriori算法總結(jié):

priori算法是一種非常經(jīng)典的頻繁項(xiàng)集的挖掘算法,很多算法都是基于Apriori算法的一種擴(kuò)展,比如:FP-Tree、GSP、CBA等等。理解掌握Apriori算法原理,對于對數(shù)據(jù)挖掘相關(guān)算法的學(xué)習(xí)具有非常好的作用。不過,現(xiàn)在一般很少直接使用Aprior算法來進(jìn)行數(shù)據(jù)挖掘了,原因是:Apriori算法的數(shù)據(jù)挖掘效率比較低。

FP Tree算法概述:

Apriori算法作為挖掘頻繁項(xiàng)集的算法,需要多次掃描數(shù)據(jù),I/O瓶頸比較高,為了解決這個問題,提出了FP-Tree算法,也稱為FP Growth算法;在FP Tree算法中,不管存在多少數(shù)據(jù)量,只需要掃描兩次數(shù)據(jù)集,因此提高了算法的運(yùn)行效率。FP Tree算法改進(jìn)了Apriori算法的I/O瓶頸,類似BIRCH聚類,利用樹結(jié)構(gòu)來提高算法的執(zhí)行效率,是一種利用空間換時間的一種算法效率提升方式。備注:FP Tree是我們在生產(chǎn)環(huán)境中常用的一種數(shù)據(jù)挖掘頻繁項(xiàng)集的算法。

FP Tree算法原理:

為了減少I/O次數(shù),FP Tree算法引入了一些數(shù)據(jù)結(jié)構(gòu)來臨時存儲數(shù)據(jù),主要包含

三個部分:

1. 項(xiàng)頭表:記錄所有的1項(xiàng)頻繁集以及出現(xiàn)的次數(shù),按照次數(shù)降序排列。2. FP Tree:將原始數(shù)據(jù)集映射到內(nèi)存中的一棵FP樹。3. 節(jié)點(diǎn)鏈表:基于項(xiàng)頭表保存的在FP Tree中對應(yīng)的項(xiàng)的存儲位置的一個鏈表。FP Tree算法可以分為一下兩個過程:1. 項(xiàng)頭表和FP Tree的構(gòu)建2. FP Tree的挖掘

FP-Tree算法原理之項(xiàng)頭表構(gòu)建:

掃描所有數(shù)據(jù),得到所有一項(xiàng)集的支持度,然后刪除支持度低于閾值的項(xiàng),得到頻繁一項(xiàng)集,將所有頻繁一項(xiàng)集按照支持度降序排列,放入項(xiàng)頭表中。

FP-Tree算法原理之FP Tree構(gòu)建:

FP Tree樹的構(gòu)建是FP-Tree算法的關(guān)鍵點(diǎn),主要分為兩個過程:

1. 掃描數(shù)據(jù),對于每條數(shù)據(jù)刪除非頻繁的1項(xiàng)集,并按照支持度降序排列,得到排序后的數(shù)據(jù)集。

2. 基于排序好的數(shù)據(jù)集構(gòu)建FP Tree。初始狀態(tài)FP樹是空的,建立FP樹時我們一條條的讀入排序后的數(shù)據(jù)集,插入FP樹,插入時按照排序后的順序,插入FP樹中,排序靠前的節(jié)點(diǎn)是祖先節(jié)點(diǎn),而靠后的是子孫節(jié)點(diǎn)。如果有共用的祖先,則對應(yīng)的公用祖先節(jié)點(diǎn)計(jì)數(shù)加1。插入后,如果有新節(jié)點(diǎn)出現(xiàn),則項(xiàng)頭表對應(yīng)的節(jié)點(diǎn)會通過節(jié)點(diǎn)鏈表鏈接上新節(jié)點(diǎn)。直到所有的數(shù)據(jù)都插入到FP樹后,FP樹的建立完成。

FP-Tree算法原理之FP Tree挖掘:

當(dāng)構(gòu)建好FP樹、項(xiàng)頭表以及節(jié)點(diǎn)鏈表后,就可以開始進(jìn)行頻繁項(xiàng)集的挖掘了。首先從項(xiàng)頭表的底部項(xiàng)依次向上挖掘,對于項(xiàng)頭表對應(yīng)于FP樹的每一項(xiàng),找出對應(yīng)的條件模式基,所謂條件模式基是以我們要挖掘的節(jié)點(diǎn)作為葉子節(jié)點(diǎn)所對應(yīng)的FP子樹,得到這個FP子樹,我們將子樹中每個節(jié)點(diǎn)的的計(jì)數(shù)設(shè)置為葉子節(jié)點(diǎn)的計(jì)數(shù),并刪除計(jì)數(shù)低于支持度的節(jié)點(diǎn)。從這個條件模式基,我們就可以遞歸挖掘得到頻繁項(xiàng)集了。

尋找F節(jié)點(diǎn)的條件模式基;我們很容易得到F的頻繁2項(xiàng)集為{A:2,F:2}、{C:2,F:2}、{E:2,F:2}、{B:2,F:2}。遞歸合并二項(xiàng)集,得到頻繁三項(xiàng)集為{A:2,C:2,F:2}、{A:2,E:2,F:2},...。當(dāng)然一直遞歸下去,最大的頻繁項(xiàng)集為頻繁5項(xiàng)集,為{A:2,C:2,E:2,B:2,F:2}

FP-Tree算法總結(jié)歸納:

FP-Tree算法流程主要包括一下幾步:掃描數(shù)據(jù),得到所有的頻繁1項(xiàng)集的計(jì)數(shù),然后刪除支持度低于閾值的項(xiàng),將1項(xiàng)頻繁集放入項(xiàng)頭表,并按照支持度降序排列。讀取數(shù)據(jù)集中的數(shù)據(jù),將數(shù)據(jù)中的非頻繁1項(xiàng)集刪除,并按照支持度排序排列后將數(shù)據(jù)插入到FP樹中,插入時按照排序后的順序插入,并計(jì)算當(dāng)前節(jié)點(diǎn)的后序子孫節(jié)點(diǎn)的數(shù)目。直到所有數(shù)據(jù)均插入到FP樹后,FP樹構(gòu)建完成。從項(xiàng)頭表的底部項(xiàng)依次向上找到項(xiàng)頭表項(xiàng)對應(yīng)的條件模式基。從條件模式基遞歸挖掘得到項(xiàng)頭表項(xiàng)項(xiàng)的頻繁項(xiàng)集。如果不限制頻繁項(xiàng)集的項(xiàng)數(shù),則返回上一步驟的所有的頻繁項(xiàng)集,否則只返回滿足項(xiàng)數(shù)要求的頻繁項(xiàng)集。

PrefixSpan算法概述:
PrefixSpan全稱Prefix-Projected Pattern Growth(即前綴投影的模式挖掘),是用于挖掘頻繁序列的數(shù)據(jù)挖掘算法,和Apriori算法以及FP Tree算法的挖掘目標(biāo)稍有不同。PrefixSpan算法是生產(chǎn)中常用的一種頻繁序列模式挖掘算法。備注:序列中的項(xiàng)集是具有時間上的先后關(guān)系的。

子序列:如果某個序列A所有的項(xiàng)集在序列B中都可以找到,則A是B的子序列。

頻繁序列:出現(xiàn)頻次超過支持度的子序列就叫做頻繁序列。

前綴序列:即序列前面部分的子序列。

后綴序列:即序列中位于前綴序列之后的子序列就叫做后綴序列。

前綴投影:即投影數(shù)據(jù)庫,即序列數(shù)據(jù)庫S中所有相對于前綴的后綴序列的集合

PrefixSpan算法原理:

類似Apriori算法,先找出所有子序列中長度為1的前綴開始挖掘序列模型(并且刪除原始序列中非頻繁的長度為1的序列),搜索對應(yīng)的投影數(shù)據(jù)庫得到長度為1的前綴對應(yīng)的頻繁序列,然后遞歸的挖掘長度為2的前綴所對應(yīng)的頻繁序列,。。。以此類推,一直遞歸到不能挖掘到更長的前綴挖掘?yàn)橹埂?/p>

PrefixSpan算法流程:

輸入:序列數(shù)據(jù)庫S和支持度閾值α 輸出:所有滿足支持度要求的頻繁序列集

步驟:(備注:所找到的前綴即頻繁序列)

1. 找出所有子序列中長度為1的前綴以及對應(yīng)的投影數(shù)據(jù)庫;2. 對于長度為1的前綴進(jìn)行計(jì)數(shù),將支持度低于閾值α的前綴對應(yīng)的項(xiàng)從序列數(shù)據(jù)庫;S中刪除,同時得到所有的頻繁1項(xiàng)序列。3. 對于每個長度為i滿足支持度的前綴進(jìn)行遞歸挖掘:

a. 找出前綴對應(yīng)的投影數(shù)據(jù)庫,如果投影數(shù)據(jù)庫為空,則遞歸返回;b. 統(tǒng)計(jì)對應(yīng)投影數(shù)據(jù)庫中各項(xiàng)的支持度計(jì)數(shù),如果所有項(xiàng)的支持度計(jì)數(shù)都低于閾值α,則遞歸返回。;c. 將滿足支持度計(jì)數(shù)的各個單項(xiàng)和當(dāng)前的前綴進(jìn)行合并,得到若干新的前綴。;d. 令i=i+1,前綴為合并單項(xiàng)后的各個前綴,分別遞歸執(zhí)行第三步。

協(xié)同過濾各種方式總結(jié):

廣義的協(xié)同過濾算法主要包括三種算法:基于用戶(UserCF)的協(xié)同過濾算法;基于物品(ItemCF)的協(xié)同過濾算法;基于模型(ModelCF)的協(xié)同過濾算法;

使用關(guān)聯(lián)規(guī)則的協(xié)同過濾;使用聚類算法的協(xié)同過濾;使用分類算法的協(xié)同過濾;使用回歸的協(xié)同過濾;使用矩陣分解/隱語義模型的協(xié)同過濾;使用神經(jīng)網(wǎng)絡(luò)的協(xié)同過濾;

總結(jié)

以上是生活随笔為你收集整理的关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。