偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

R語(yǔ)言之Apriori算法應(yīng)用

大數(shù)據(jù) 算法
關(guān)聯(lián)分析用于發(fā)現(xiàn)隱藏在大型數(shù)據(jù)集中的有意義的聯(lián)系。所發(fā)現(xiàn)的聯(lián)系可以用關(guān)聯(lián)規(guī)則(association rule)或頻繁項(xiàng)集的形式表示。

[[193979]]

一. 概念

關(guān)聯(lián)分析用于發(fā)現(xiàn)隱藏在大型數(shù)據(jù)集中的有意義的聯(lián)系。所發(fā)現(xiàn)的聯(lián)系可以用關(guān)聯(lián)規(guī)則(association rule)或頻繁項(xiàng)集的形式表示。

項(xiàng)集:在關(guān)聯(lián)分析中,包含0個(gè)或多個(gè)項(xiàng)的集合被稱為項(xiàng)集(itemset)。如果一個(gè)項(xiàng)集包含k個(gè)項(xiàng),則稱它為k-項(xiàng)集。例如:{啤酒,尿布,牛奶,花生} 是一個(gè)4-項(xiàng)集??占侵覆话魏雾?xiàng)的項(xiàng)集。

關(guān)聯(lián)規(guī)則(association rule):是形如 X → Y 的蘊(yùn)含表達(dá)式,其中X和Y是不相交的項(xiàng)集,即:X∩Y=∅。關(guān)聯(lián)規(guī)則的強(qiáng)度可以用它的支持度(support)和置信度(confidence)來(lái)度量。

支持度:一個(gè)項(xiàng)集或者規(guī)則在所有事物中出現(xiàn)的頻率,確定規(guī)則可以用于給定數(shù)據(jù)集的頻繁程度。σ(X):表示項(xiàng)集X的支持度計(jì)數(shù)

項(xiàng)集X的支持度:s(X)=σ(X)/N;規(guī)則X → Y的支持度:s(X → Y) = σ(X∪Y) / N

置信度:確定Y在包含X的事務(wù)中出現(xiàn)的頻繁程度。c(X → Y) = σ(X∪Y)/σ(X)

支持度是一種重要的度量,因?yàn)橹С侄群艿偷囊?guī)則可能只是偶然出現(xiàn),低支持度的規(guī)則多半也是無(wú)意義的。因此,支持度通常用來(lái)刪去那些無(wú)意義的規(guī)則;

置信度度量是通過(guò)規(guī)則進(jìn)行推理具有可靠性。對(duì)于給定的規(guī)則X → Y,置信度越高,Y在包含X的事物中出現(xiàn)的可能性就越大。即Y在給定X下的條件概率P(Y|X)越大。

二. R語(yǔ)言中實(shí)現(xiàn)Apriori算法應(yīng)用

R語(yǔ)言中的Apriori算法實(shí)現(xiàn)包含在arules包中,本文不涉及算法的實(shí)現(xiàn),只是應(yīng)用arules該包實(shí)現(xiàn)關(guān)聯(lián)規(guī)則的挖掘。

1.數(shù)據(jù)源:利用arules包中自帶的Groceries數(shù)據(jù)集,該數(shù)據(jù)集是來(lái)自一個(gè)現(xiàn)實(shí)世界中的超市經(jīng)營(yíng)一個(gè)月的購(gòu)物數(shù)據(jù),包含了9835次交易。我們按照超市一天12個(gè)小時(shí)的工作時(shí)間計(jì)算,大約每小時(shí)的交易次數(shù)為9835/30/12=27.3,表明該超市規(guī)模屬于中等。

  1. > library(arules)  #加載 arules 包 
  2. > data(Groceries) 
  3. > Groceries 
  4. transactions in sparse format with 
  5.  9835 transactions (rowsand 
  6.  169 items (columns) 

2.探索和準(zhǔn)備數(shù)據(jù):

(1)事務(wù)型數(shù)據(jù)每一行指定一個(gè)單一的實(shí)例,每條記錄包括用逗號(hào)隔開(kāi)的任意數(shù)量的產(chǎn)品清單,通過(guò)inspect()函數(shù)可以看到超市的交易記錄,每次交易的商品名稱;通過(guò)summary()函數(shù)可以查看該數(shù)據(jù)集的一些基本 信息。

  1. > inspect(Groceries[1:5])   #通過(guò)inspect函數(shù)查看Groceries數(shù)據(jù)集的前5次交易記錄 
  2.   items                                                                
  3. 1 {citrus fruit,semi-finished bread,margarine,ready soups}             
  4. 2 {tropical fruit,yogurt,coffee}                                       
  5. 3 {whole milk}                                                         
  6. 4 {pip fruit,yogurt,cream cheese ,meat spreads}                        
  7. 5 {other vegetables,whole milk,condensed milk,long life bakery product} 
  8. <br>> summary(Groceries) 
  9. transactions as itemMatrix in sparse format with 
  10.  9835 rows (elements/itemsets/transactions) and 
  11.  169 columns (items) and a density of 0.02609146  
  12.   
  13. most frequent items: 
  14.       whole milk other vegetables       rolls/buns             soda           yogurt          (Other) 
  15.             2513             1903             1809             1715             1372            34055 
  16.   
  17. element (itemset/transaction) length distribution: 
  18. sizes 
  19.    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   26   27   28   29 
  20. 2159 1643 1299 1005  855  645  545  438  350  246  182  117   78   77   55   46   29   14   14    9   11    4    6    1    1    1    1    3 
  21.   32 
  22.    1 
  23.   
  24.    Min. 1st Qu.  Median    Mean 3rd Qu.    Max
  25.   1.000   2.000   3.000   4.409   6.000  32.000 
  26.   
  27. includes extended item information - examples: 
  28.        labels  level2           level1 
  29. 1 frankfurter sausage meat and sausage 
  30. 2     sausage sausage meat and sausage 
  31. 3  liver loaf sausage meat and sausage 
  1. > itemFrequency(Groceries[,1:3])   #itemFrequency()函數(shù)可以查看商品的交易比例<br>frankfurter sausage liver loaf <br>0.058973055 0.093950178 0.005083884 

分析:

①密度值0.02609146(2.6%)指的是非零矩陣單元格的比例。

該數(shù)據(jù)集一共有9835行(交易記錄),169列(所有交易的商品種類),因此,矩陣中共有9835*169=1662115個(gè)位置,我們可以得出,在30天內(nèi)共有1662115*0.02609146=43367件商品被購(gòu)買。進(jìn)一步可以得出在每次交易中包含了43367/9835=4.409件商品被購(gòu)買,在均值那一列可以看出(Mean=4.409)我們的計(jì)算是正確的;

②most frequent items:列出了事務(wù)型數(shù)據(jù)中最常購(gòu)買的商品。whole milk 在9835次交易中被購(gòu)買了2513次,因此,我們可以得出結(jié)論:whole milk有2513/9835=25.6%的概率出現(xiàn)在所有的交易中;

③element (itemset/transaction) length distribution:呈現(xiàn)了一組關(guān)于交易規(guī)模的統(tǒng)計(jì),總共有2159次交易中包含一件商品,有1次交易中包含了32件商品.從分位數(shù)分布情況可以看出,25%的交易中包含了兩件或者更少的商品,大約一半的交易中商品數(shù)量為3件;

(2)可視化商品的支持度——商品的頻率圖

為了直觀地呈現(xiàn)統(tǒng)計(jì)數(shù)據(jù),可以使用itemFrequenctyPlot()函數(shù)生成一個(gè)用于描繪所包含的特定商品的交易比例的柱狀圖。因?yàn)榘芏喾N商品,不可能同時(shí)展現(xiàn)出來(lái),因此可以通過(guò)support或者topN參數(shù)進(jìn)行排除一部分商品進(jìn)行展示

(3)可視化交易數(shù)據(jù)——繪制稀疏矩陣

通過(guò)使用image()函數(shù)可以可視化整個(gè)稀疏矩陣。

  1. image(Groceries[1:5]) # 生成一個(gè)5行169列的矩陣,矩陣中填充有黑色的單元表示在此次交易(行)中,該商品(列)被購(gòu)買了 

從上圖可以看出,***行記錄(交易)包含了四種商品(黑色的方塊),這種可視化的圖是用于數(shù)據(jù)探索的一種很有用的工具。它可能有助于識(shí)別潛在的數(shù)據(jù)問(wèn)題,比如:由于列表示的是商品名稱,如果列從上往下一直被填充表明這個(gè)商品在每一次交易中都被購(gòu)買了;另一方面,圖中的模式可能有助于揭示交易或者商品的有趣部分,特別是當(dāng)數(shù)據(jù)以有趣的方式排序后,比如,如果交易按照日期進(jìn)行排序,那么黑色方塊圖案可能會(huì)揭示人們購(gòu)買商品的數(shù)量或者類型受季節(jié)性的影響。這種可視化對(duì)于超大型的交易數(shù)據(jù)集是沒(méi)有意義的,因?yàn)閱卧?huì)很難發(fā)現(xiàn)有趣的模式。

3.訓(xùn)練模型

  1. grocery_rules <- apriori(data=Groceries,parameter=list(support =,confidence =,minlen =)) 

運(yùn)行apriori()函數(shù)很簡(jiǎn)單,但是找到支持度和置信度參數(shù)來(lái)產(chǎn)生合理數(shù)量的關(guān)聯(lián)規(guī)則時(shí),可能需要進(jìn)行大量的試驗(yàn)與誤差評(píng)估。

如果參數(shù)設(shè)置過(guò)高,那么結(jié)果可能是沒(méi)有規(guī)則或者規(guī)則過(guò)于普通而不是非常有用的規(guī)則;另一方面如果閾值太低,可能會(huì)導(dǎo)致規(guī)則數(shù)量很多,甚至需要運(yùn)行很長(zhǎng)的時(shí)間或者在學(xué)習(xí)階段耗盡內(nèi)存。

aprior()函數(shù)默認(rèn)設(shè)置 support = 0.1 和 confidence = 0.8,然而使用默認(rèn)的設(shè)置,不能得到任何規(guī)則

  1. > apriori(Groceries) 
  2. set of 0 rules  # 因?yàn)閟upport = 0.1,則意味著該商品必須至少出現(xiàn)在 0.1 * 9835 = 983.5次交易中,在前面的分析中,我們發(fā)現(xiàn)只有8種商品的 support >= 0.1,因此使用默認(rèn)的設(shè)置沒(méi)有產(chǎn)生任何規(guī)則也不足為奇 

解決支持度設(shè)定問(wèn)題的一種方法是考慮一個(gè)有趣的模式之前,事先想好需要的最小交易數(shù)量,例如:我們可以認(rèn)為如果一種商品一天被購(gòu)買了2次,一個(gè)月也就是60次交易記錄,這或許是我們所感興趣的,據(jù)此,可以計(jì)算所需要的支持度support=60/9835=0.006;

關(guān)于置信度:設(shè)置太低,可能會(huì)被大量不可靠的規(guī)則淹沒(méi),設(shè)置過(guò)高,可能會(huì)出現(xiàn)很多顯而易見(jiàn)的規(guī)則致使我們不能發(fā)現(xiàn)有趣的模式;一個(gè)合適的置信度水平的選取,取決于我們的分析目標(biāo),我們可以嘗試以一個(gè)保守的值開(kāi)始,如果發(fā)現(xiàn)沒(méi)有具有可行性的規(guī)則,可以降低置信度以拓寬規(guī)則的搜索范圍。

在此例中,我們將從置信度0.25開(kāi)始,這意味著為了將規(guī)則包含在結(jié)果中,此時(shí)規(guī)則的正確率至少為25%,這將排除最不可靠的規(guī)則

minlen = 2 表示規(guī)則中至少包含兩種商品,這可以防止僅僅是由于某種商品被頻繁購(gòu)買而創(chuàng)建的無(wú)用規(guī)則,比如在上面的分析中,我們發(fā)現(xiàn)whole milk出現(xiàn)的概率(支持度)為25.6%,很可能出現(xiàn)如下規(guī)則:{}=>whole milk,這種規(guī)則是沒(méi)有意義的。

最終,根據(jù)上面的分析我們確定如下參數(shù)設(shè)置:

  1. > grocery_rules <- apriori(data = Groceries,parameter = list(support = 0.006,confidence = 0.25,minlen = 2)) 
  2. > grocery_rules 
  3. set of 463 rules 

4.評(píng)估模型的性能

  1. > summary(grocery_rules) 
  2. set of 463 rules 
  3.   
  4. rule length distribution (lhs + rhs):sizes  # 前件+后件 的規(guī)則長(zhǎng)度分布 
  5.   2   3   4 
  6. 150 297  16    #有150個(gè)規(guī)則只包含2種商品,297個(gè)規(guī)則包含3種商品,16個(gè)規(guī)則包含4種商品 
  7.   
  8.    Min. 1st Qu.  Median    Mean 3rd Qu.    Max
  9.   2.000   2.000   3.000   2.711   3.000   4.000 
  10.   
  11. summary of quality measures: 
  12.     support           confidence          lift           
  13.  Min.   :0.006101   Min.   :0.2500   Min.   :0.9932  
  14.  1st Qu.:0.007117   1st Qu.:0.2971   1st Qu.:1.6229  
  15.  Median :0.008744   Median :0.3554   Median :1.9332  
  16.  Mean   :0.011539   Mean   :0.3786   Mean   :2.0351  
  17.  3rd Qu.:0.012303   3rd Qu.:0.4495   3rd Qu.:2.3565  
  18.  Max.   :0.074835   Max.   :0.6600   Max.   :3.9565  
  19.   
  20. mining info: 
  21.       data ntransactions support confidence 
  22.  Groceries          9835   0.006       0.25 
  23. <br>> inspect(grocery_rules[1:5]) 
  24.   lhs             rhs                support     confidence lift    
  25. 1 {pot plants} => {whole milk}       0.006914082 0.4000000  1.565460 
  26. 2 {pasta}      => {whole milk}       0.006100661 0.4054054  1.586614 
  27. 3 {herbs}      => {root vegetables}  0.007015760 0.4312500  3.956477 
  28. 4 {herbs}      => {other vegetables} 0.007727504 0.4750000  2.454874 
  29. 5 {herbs}      => {whole milk}       0.007727504 0.4750000  1.858983  

這里需要解釋一下lift(提升度),表示用來(lái)度量一類商品相對(duì)于它的一般購(gòu)買率,此時(shí)被購(gòu)買的可能性有多大。通俗的講就是:比如***條規(guī)則{pot plants} => {whole milk},lift = 1.565,表明(購(gòu)買pot plants 之后再購(gòu)買 whole milk商品的可能性) 是 (沒(méi)有購(gòu)買pot plants 但是購(gòu)買了whole milk 的可能性) 的 1.565倍;

***條規(guī)則解讀:如果一個(gè)顧客購(gòu)買了pot plants,那么他還會(huì)購(gòu)買whole milk,支持度support為0.0070,置信度confidence為0.4000,我們可以確定該規(guī)則涵蓋了大約0.7%的交易,而且在購(gòu)買了pot plants后,他購(gòu)買whole milk的概率為40%,提升度lift值為1.565,表明他相對(duì)于一般沒(méi)有購(gòu)買pot plant商品的顧客購(gòu)買whole milk商品的概率提升了1.565倍,我們?cè)谏厦娴姆治鲋兄溃?5.6%的顧客購(gòu)買了whole milk,因此計(jì)算提升度為0.40/0.256=1.56,這與顯示的結(jié)果是一致的,注意:標(biāo)有support的列表示規(guī)則的支持度,而不是前件(lhs)或者后件(rhs)的支持度。

提升度 lift(X → Y) = P (Y| X) / P (Y) , lift(X → Y) 與 lift(Y → X) 是相同的。

如果lift值>1,說(shuō)明這兩類商品在一起購(gòu)買比只有一類商品被購(gòu)買更常見(jiàn)。一個(gè)大的提升度值是一個(gè)重要的指標(biāo),它表明一個(gè)規(guī)則時(shí)很重要的,并反映了商品之間的真實(shí)聯(lián)系。

5.提高模型的性能

(1)對(duì)關(guān)聯(lián)規(guī)則集合排序

根據(jù)購(gòu)物籃分析的目標(biāo),最有用的規(guī)則或許是那些具有高支持度、信度和提升度的規(guī)則。arules包中包含一個(gè)sort()函數(shù),通過(guò)指定參數(shù)by為"support","confidence"或者"lift"對(duì)規(guī)則列表進(jìn)行重新排序。 在默認(rèn)的情況下,排序是降序排列,可以指定參數(shù)decreasing=FALSE反轉(zhuǎn)排序方式。

  1. > inspect(sort(grocery_rules,by="lift")[1:10]) 
  2.     lhs                                             rhs                  support     confidence lift    
  3. 3   {herbs}                                      => {root vegetables}    0.007015760 0.4312500  3.956477 
  4. 57  {berries}                                    => {whipped/sour cream} 0.009049314 0.2721713  3.796886 
  5. 450 {tropical fruit,other vegetables,whole milk} => {root vegetables}    0.007015760 0.4107143  3.768074 
  6. 174 {beef,other vegetables}                      => {root vegetables}    0.007930859 0.4020619  3.688692 
  7. 285 {tropical fruit,other vegetables}            => {pip fruit}          0.009456024 0.2634561  3.482649 
  8. 176 {beef,whole milk}                            => {root vegetables}    0.008032537 0.3779904  3.467851 
  9. 284 {pip fruit,other vegetables}                 => {tropical fruit}     0.009456024 0.3618677  3.448613 
  10. 282 {pip fruit,yogurt}                           => {tropical fruit}     0.006405694 0.3559322  3.392048 
  11. 319 {citrus fruit,other vegetables}              => {root vegetables}    0.010371124 0.3591549  3.295045 
  12. 455 {other vegetables,whole milk,yogurt}         => {tropical fruit}     0.007625826 0.3424658  3.263712 

(2)提取關(guān)聯(lián)規(guī)則的子集:可以通過(guò)subset()函數(shù)提取我們感興趣的規(guī)則

  1. > fruit_rules <- subset(grocery_rules,items %in"pip fruit")  # items 表明與出現(xiàn)在規(guī)則的任何位置的項(xiàng)進(jìn)行匹配,為了將子集限制到匹配只發(fā)生在左側(cè)或者右側(cè)位置上,可以使用lhs或者rhs代替 
  2. > fruit_rules 
  3. set of 21 rules 
  4. > inspect(fruit_rules[1:5]) 
  5.     lhs                           rhs                support     confidence lift    
  6. 127 {pip fruit}                => {tropical fruit}   0.020437214 0.2701613  2.574648 
  7. 128 {pip fruit}                => {other vegetables} 0.026131164 0.3454301  1.785237 
  8. 129 {pip fruit}                => {whole milk}       0.030096594 0.3978495  1.557043 
  9. 281 {tropical fruit,pip fruit} => {yogurt}           0.006405694 0.3134328  2.246802 
  10. 282 {pip fruit,yogurt}         => {tropical fruit}   0.006405694 0.3559322  3.392048 

以上,就是應(yīng)用R語(yǔ)言添加包arules中實(shí)現(xiàn)的apriori算法進(jìn)行的關(guān)聯(lián)規(guī)則挖掘的應(yīng)用,歡迎大家進(jìn)行交流!

責(zé)任編輯:武曉燕 來(lái)源: 博客園
相關(guān)推薦

2017-01-19 09:12:39

Apriori算法流程

2017-04-18 16:09:28

Apriori算法Python

2021-10-23 06:42:14

Go語(yǔ)言接口

2012-02-13 10:03:31

編程開(kāi)發(fā)

2018-08-01 15:10:02

GolangPython語(yǔ)言

2021-10-03 22:18:14

Go語(yǔ)言整數(shù)

2012-08-13 14:13:46

2020-12-31 09:06:44

Go語(yǔ)言Reflect

2013-02-25 10:44:13

數(shù)據(jù)分析大數(shù)據(jù)關(guān)聯(lián)分析

2022-03-28 13:34:26

Go泛型部署泛型

2021-10-09 07:52:01

Go程序重命名

2013-02-19 09:26:17

2021-10-16 17:53:35

Go函數(shù)編程

2010-01-14 10:34:02

C++語(yǔ)言

2017-10-13 10:02:12

Java

2009-06-14 21:54:37

動(dòng)態(tài)語(yǔ)言Java腳本API

2009-12-22 02:48:23

COBOL語(yǔ)言Grace Hoppe編譯語(yǔ)言

2011-01-14 14:22:50

Linux匯編語(yǔ)言

2023-07-21 14:20:03

ChatGPT神經(jīng)網(wǎng)絡(luò)

2011-01-14 14:08:17

Linux匯編語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)