1. 程式人生 > >Apriori演算法(基於R的應用示例)

Apriori演算法(基於R的應用示例)

這裡我們採用上文的資料集,利用R來做一個簡單的應用示例:

TID 項集
T1 I1, I2, I5
T2 I2, I4
T3 I2, I3
T4 I1, I2, I4
T5 I1, I3
T6  I2, I3
T7 I1, I3
T8 I1, I2, I3, I5
T9 I1, I2, I3

由事務生成頻繁項集

#  首先需要安裝R包

install.packages("arules")

install.packages("arulesViz")

#  處理事務資料集,並將其轉成transactions類的一個例項:

MyList<-list( 

c("I1", "I2", "I5"),

c("I2", "I4"),

c("I2", "I3"),

c("I1", "I2", "I4"),

c("I1", "I3"),

c("I2", "I3"),

c("I1", "I3"),

c("I1", "I2", "I3", "I5"),

c("I1", "I2", "I3")

)

# 命名

names(MyList)<-paste("Tr",c(1:9),sep="") #  將其轉換為transaction是類的示例 MyTrans<-as(MyList,"transactions") #  檢視 summary(MyTrans) inspect(MyTrans)
#  利用image函式視覺化物件 image(MyTrans)  

探索頻繁項集,生成有效關聯規則

其基本命令為: apriori(data=transactions類物件名,parameter=NULL,appearance=NULL)
其中:

1.資料應事先組織在引數data指定的transactions類物件中,也可以組織在自動轉換為transactions類物件的其他物件中(如列表、矩陣、資料框)。

2.引數parameter是一個關於引數的列表,包括的主要成分有:support,指定最小支援度(min_sup,預設值為0.1);confidence,指定最小置信度(min_conf,預設值為0.8);minlen,指定關聯規則所包含的最小專案數(預設值為1);maxlen,指定關聯規則所包含的最大專案數(預設值為10);target,指定輸出怎樣的搜尋結果,“rules”表示給出簡單關聯規則,“frequent itemsets”表示給出所有的頻繁項集,“maximally frequent itemsets”表示給出最大頻繁項集。

下面我們看一下不指定minlen引數的情況(即預設值為1):

MyRules<-apriori(data=MyTrans,parameter=list(support=0.22,confidence=0.6,target="rules"))

inspect(MyRules)

size(x=MyRules)

# 利用sorted函式排序:

MyRules.sorted<-sort(x=MyRules,by="lift",decreasing=TRUE)

inspect(MyRules.sorted)

可以看到有形如”{} => {I1}“的關聯規則出現,因為minlen是預設值,即允許規則中只包含一個專案;例如,前面說的{} => {I1}(S=0.6666667, C=0.6666667)表示I1會以2/3的概率出現在事務中,與前項無關。

下面我們更改一下minlen引數,令minlen=2,結果如下:

可以看到,根據提升度(lift)排序結果,後面兩個關聯規則小於1,應當認為這些規則缺乏實用性,可以剔除。我們可以發現,Apriori演算法僅依據最小支援度和最小置信度給出有效的關聯規則,對無用規則還需根據lift大小手工剔除。

# 由於前文沒有提及到提升度的概念,這裡需要補充一下提升度的概念。

# 在給出提升度的概念之前需要補充一下前項支援度後項支援度的概念。

# 這裡為了統一起見,對於規則A => B,前項支援度S(A) = T(A) / T,後項支援度S(B) = T(B) / T;其中T(A)、T(B)和T分別表示包含項A的事務數、包含項B的事務數和總事務數。

# 該規則的提升度(lift)定義為:規則置信度與後項支援度的比值,即:

L(A => B) = C / S(B) = S / (S(A)*S(B))

實際上,後項支援度是沒有模型時研究後項的先驗概率。規則的提升度則反映了專案A出現對專案B(即我們要研究的目標項)出現

的影響程度。從統計學的角度來看,如果專案A對專案B沒有影響,專案A獨立於專案B,則支援度S = S(A)*S(B),此時規則的提升度等於1。所以,有使用價值的簡單關聯規則應是規則提升度大於1的規則,意味著A的出現對B的出現有促進作用。規則提升度越大越好

篩選關聯規則

通常Apriori演算法給出的關聯規則較多,可以根據實際情況對其進行篩選。可利用subset函式提取關聯規則的子集,其基本語法為:

subset(x=關聯規則類物件名, subset=條件)

式中,引數subset後是一個邏輯表示式或正則表示式。

例如,對上面的關聯規則輸出只有兩個專案的規則:

輸出提升度大於1的規則:


關聯規則的視覺化

首先需要載入arulesViz包

視覺化頻繁項集

呼叫plot函式,藉助有向網狀圖視覺化頻繁項集,基本語法如下:

plot(x=頻繁項集類物件名,method="graph",control=list(main=圖形主標題))


簡單解釋一下:

圓圈的大小表示支援度,中間字母表示專案,通過有向箭頭指向一個支援度,表示相應專案組成的一個項集。例如,圖形中部的I1和I2均通過有向箭頭指向中部圓圈,表示{I1,I2}的支援度為0.4444444;I1、I2和I3均通過有向箭頭指向一個小圈,表示{I1,I2,I2}的支援度為0.2222222。

視覺化關聯規則

呼叫plot函式視覺化關聯規則,基本語法如下:

plot(x=關聯規則類物件名,method=圖型別名,control=控制引數)

其中:

1.引數method可取“grouped”表示類似以氣泡圖的形式展示關聯規則,取“graph”表示以有向網狀圖的形式展示關聯規則,取“paracoord”表示以平行圖形的形式展示關聯規則。

2.引數control是個列表,可指定圖的主標題、圖中箭頭的大小等。

-  繪製grouped圖


圖中橫座標為規則前項,縱座標為規則後項,圓圈表示關聯規則,圓圈大小表示支援度大小;顏色深淺代表規則提升度的高低。

例如:空項可以分別推出{I1}、{I2}、{I3},其中{I2}的支援度最大,且3個規則的提升度一樣。

-  繪製paracoord圖:



paracoord圖通過由左至右的帶箭頭折線表示關聯股則的前項和後項,用折線的粗細表示規則支援度的大小,灰度深淺表示提升度的高低。例如:
從圖中可以看出{I3} = > {I1}、{I3} = > {I2}、{I1} = > {I2}、{I1} = > {I3}的支援度是最高的。(注意這裡沒有畫出形如{} => {I1}的關聯規則)

-  繪製graph圖


圖中節點為關聯規則的前項和後項,帶方向的箭頭從前項指向後項。箭頭寬度的大小表示規則支援度的大小,灰度深淺表示提升度的高低。例如:

圖中,{} => {I2}的支援度顯然比{I4} => {I2}的支援度大,但是其提升度沒有後者高。

相關推薦

Apriori演算法基於R應用示例

這裡我們採用上文的資料集,利用R來做一個簡單的應用示例: TID 項集 T1 I1, I2, I5 T2 I2, I4 T3 I2, I3 T4 I1, I2, I4 T5 I1, I3 T6  I2, I3 T7 I1, I3 T8 I1, I2, I3, I5 T9

統計學習方法——感知機演算法基於R語言

演算法2.1 train <- function(mat) { nr <- nrow(mat) nc <- ncol(mat) w0 <- matrix(0,nc - 1,1) b0 <- 0

資料科學個人筆記:推薦系統之推薦演算法基於圖+隱語義

一、隱語義模型(LFM演算法) (一)基礎演算法 隱語義分析採取基於使用者行為統計的自動聚類,計算出使用者和隱類的關係和物品和隱類的關係。 此處使用LFM演算法,通過如下公式計算使用者u對物品i的興趣: Preference(u,i)=r(ui)=sum(p(u,k)

百度地圖熱力圖--批量地址轉換應用基於百度api

ldp item keyvalue 使用 創建地圖 ebr efault amp ont 需求:把外賣訂餐地址做個用戶分布熱力圖 思路分析:第一步去百度地圖api開放平臺找例子 http://lbsyun.baidu.com/jsdemo.htm#c1_15 首

《深度學習精要基於R語言》高清中文版PDF+高清英文版PDF+源代碼

dbd 語言 process sha http com cto oss RoCE 下載:https://pan.baidu.com/s/11zySQB5f0s9SXNgJdBOphg 更多最新的資料:http://blog.51cto.com/3215120 《深度學習精要

機器學習實戰Apriori演算法關聯分析

目錄 0. 前言 1. Apriori 演算法尋找頻繁項集 2. 從頻繁項集中挖掘關聯規則 3. 實戰案例 3.1. apriori演算法發現頻繁項集和關聯規則 學習完機器學習實戰的Apriori,簡單的做個筆記。文中部分描述屬於

DES加密演算法的java實現基於java類庫

嗯嗯........這個是我新開的部落格上的第一篇的文章,這裡小白希望自己的技術能夠一天比一天好(p≧w≦q),加油! 好吧,現在來一個基於java類庫的DES加密演算法的實現吧~網上不少的程式碼要不執行有問題,要不就是簡簡單單內建一個固定的加密字串就簡單完事了。好吧,我承認我現在是為懶人服務

實現Apriori演算法python

1 # coding: utf-8 2 3 # 利用python實現apriori演算法 4 5 # In[1]: 6 7 8 #匯入需要的庫 9 from numpy import * 10 11 12 # In[2]: 13 14 15

分享《深度學習精要基於R語言》+PDF+源碼+Joshua F.Wiley+高蓉

blog aaa 講解 pro 高清 water tex href ces 下載:https://pan.baidu.com/s/14UlxD5VJRY92UpP7Wr6Taw 更多最新的資料:http://blog.51cto.com/14087171 《深度學習精要(基

貪心演算法基於C++

文章基於此篇微信推送https://mp.weixin.qq.com/s/3h9iqU4rdH3EIy5m6AzXsg 簡介 動態規劃是一種由問題的最小子狀態(邊界)不斷推出更大的狀態,最後解決整個問題的解題思想。 基礎概念 最優子結構:狀態可被分解為的子狀態

二叉樹採用二叉連結串列儲存,複製二叉樹的演算法樹的應用

二叉樹採用二叉連結串列儲存,試寫出複製一棵二叉樹的演算法。 話不多說上程式碼: #include<stdio.h> #include<stdlib.h> typedef struct BiTnode   {   &

排序演算法之——優先佇列經典實現基於二叉堆

許多應用都需要處理有序的元素,但有時,我們不要求所有元素都有序,或是一定要一次就將它們排序,許多情況下,我們會收集這些元素裡的最大值或最小值。 這種情況下一個合適的資料結構應該支援兩種操作:插入元素、刪除最大元素。 優先佇列與棧和佇列類似,但它有自己的奇妙之處。 在本文中,會講解基於二叉堆的一種優先佇列

深度學習框架tensorflow學習與應用3非線性迴歸訓練示例

在瞭解了迴歸演算法中的正向傳播和反向傳播之後, 我們可以用梯度下降法來進行一個非線性迴歸的示例. 此次示例中, 我們設定輸入樣本神經元只有一個, 中間神經元有10個, 輸出神經元1個.               &

光條中心線提取-Steger演算法基於Hessian矩陣

採用結構光進行掃描檢測時,需要提取鐳射條紋的中心線,本文采用經典的Steger演算法提取光條中心。 Steger演算法原理 Steger演算法基於Hessian矩陣,能夠實現光條中心亞畫素精度定位:首先通過Hessian矩陣能夠得到光條的法線方向,然後在法線

聚類演算法——基於密度的聚類演算法以 DBSCAN 為例

      上一篇部落格提到 K-kmeans 演算法存在好幾個缺陷,其中之一就是該演算法無法聚類哪些非凸的資料集,也就是說,K-means 聚類的形狀一般只能是球狀的,不能推廣到任意的形狀。本文介紹一種基於密度的聚類方法,可以聚類任意的形狀。       基於密度的聚類是

查詢演算法基於二叉排序樹的查詢

1.二叉排序樹的定義與描述 二叉排序樹又稱為二叉查詢樹,它是一種特殊的二叉樹。 定義:二叉排序樹是一顆空樹或者是具有一下性質的二叉樹。 1)若它的左子樹非空,則左子樹上所有的結點值均小於根結點的值。 2)若它的右子樹非空,則右子樹上所有的結點的值均大於(

資料科學個人筆記:推薦系統之推薦演算法基於內容+標籤+半監督學習模型

一、基於內容的模型 (一)推薦系統冷啟動問題 使用者冷啟動:給新使用者推薦 物品冷啟動:新物品被推薦 系統冷啟動:為新開發的網站(還沒有使用者和使用者行為,只有一些物品資訊)設計推薦系統 冷啟動問題的一些解決方案:1.推薦熱門;2.用註冊資訊進行粗粒度的個性化;3.

R語言-決策樹演算法C4.5和CART的實現

決策樹演算法的實現: 一、C4.5演算法的實現 a、需要的包:sampling、party library(sampling) library(party) sampling用於實現資料分層隨機抽樣,構造訓練集和測試集。 party用於實現決策樹演算法 另外,還可以設定隨

python 文件讀寫模式r,r+,w,w+,a,a+的區別附代碼示例

nes one lba 只讀 輸出 div mod border with open 如下表 模式 可做操作 若文件不存在 是否覆蓋 r 只能讀 報錯 - r+ 可讀可寫 報錯 是 w 只能寫 創建 是 w+  可讀可寫 創建 是 a

【棧的應用】迷宮演算法棧和回溯思想

人生,就像一個很大的棧演變。出生時赤條條地來到這個世界,慢慢地長大,漸漸地變老,最終還得赤條條地離開世間。 思路分析: 上面是一個迷宮地圖,在地圖上,0 代表牆,1 代表通路。 迷宮是回溯法和棧的綜合應用。 下面給出完整的思路和尋路演