1. 程式人生 > >R語言關聯規則視覺化:擴充套件包arulesViz的介紹

R語言關聯規則視覺化:擴充套件包arulesViz的介紹

關聯規則挖掘是一種流行的資料探勘方法,在R語言中為擴充套件包arules。然而,挖掘關聯規則往往導致非常多的規則,使分析師需要通過查詢所有的規則才能發現有趣的規則。通過手動篩選大量的規則集是費時費力。在本文中,我們基於探索關聯規則的R擴充套件包arulesViz,提出幾個已知的和新穎的視覺化技術。

1、簡介

演算法步驟這裡不做詳細介紹,下面是幾個重要的變數的定義:

Supp(X=>Y) = P(X)
Conf(X=>Y) = P(Y|X)
Lift(X=>Y) = CONF(X=>Y)/SUPP(Y) = P(X and Y)/(P(X)P(Y))
(Lift)是避免了一些不平衡資料標籤的偏差性, Lift越大,則資料質量較好;Lift越小,則資料越不平衡。

2、資料準備和arulesViz的統一介面

使用擴充套件包arulesViz之前,我們首先需要載入它。這個包會自動載入其他所需要的資料包,如arules。如下面的資料集Groceries包含在arules包裡面。
> library("arulesViz")
> data("Groceries")
> summary(Groceries)
設定支援度為0.001,置信度為0.5,R語句入下:
> rules <- apriori(Groceries, parameter = list(support = 0.001, confidence = 0.5))
> rules
set of 5668 rules

結果共找出了5668條規則。按照Lift降序排,最大的三條規則如下:

> inspect(head(sort(rules, by = "lift"), 3))
 lhs rhs support confidence lift
1 {Instant food products, 
 soda} => {hamburger meat} 0.001220132 0.6315789 18.99565
2 {soda, 
 popcorn} => {salty snack} 0.001220132 0.6315789 16.69779
3 {flour, 
 baking powder} => {sugar} 0.001016777 0.5555556 16.40807

3、散點圖

直接用plot畫出散點圖

> plot(rules)

plot1

圖1

從圖1可以看到高lift對應低supp。另外一些科學家認為最有意思的規則在supp/conf的邊沿上,如t圖1所示。

> head(quality(rules))
 support confidence lift
1 0.001118454 0.7333333 2.870009
2 0.001220132 0.5217391 2.836542
3 0.001321810 0.5909091 2.312611
4 0.001321810 0.5652174 2.212062
5 0.001321810 0.5200000 2.035097
6 0.003660397 0.6428571 2.515917

如果我們想個性化plot圖中的座標的特徵,將顏色表示conf,lift為縱標軸,如下所示。

plot2

圖2

> plot(rules, measure = c("support", "lift"), shading = "confidence")

圖2中的y軸是lift,這裡可以比較清晰地看出很多的規則都有高lift。

plot3

圖3

> plot(rules, shading = "order", control = list(main = "Two-key plot"))

圖3中,supp為x軸,conf為y軸,顏色的深淺表示“order”,例如規則裡頻繁項的個數。從圖中可以看出,order和supp有著很強的負相關性。這在關聯規則中也是熟知的。

散點圖方法提供了互動功能的選擇和縮放,可以使用interactive=TRUE來實現。

plot4

圖4

> sel <- plot(rules, measure = c("support", "lift"), shading = "confidence",
+ interactive = TRUE)

圖4中選擇了lift較高的幾個點,並且使用inspect按鈕,在終端的介面上便顯示了這些規則。

4、基於分組矩陣的視覺化

基於矩陣的視覺化中只能有效處理規則數較少的視覺化,因為大的規則集通常也有大量LHS/RHS(左邊的集合/右邊的集合)的限制。在這裡,我們引入一個新的視覺化技術,通過使用聚類方法將規則分組,可提高基於矩陣的視覺化。

一個直接的方法來聚類頻繁項集,便是定義兩個項集(Xi和Xj )之間的距離。一個比較好的選擇是使用Jaccard distance。

plot5

有幾種方法,以聚類關聯規則和頻繁項集解決高維和資料稀疏問題。有的建議要觀察包含在頻繁項集中的項的交易的個數。然而,他對從相同頻繁項集產生的聚類規則有著很強的偏向。由頻繁項集的定義,一個頻繁項集的兩個子集都將適用於許多常見的交易。這種偏見會導致大多隻是從集合關聯規則重新發現已知的頻繁項集的結構。

為了使分組速度加快並且有效地分為K類,這裡使用了K-means聚類方法。這個思路是LHS和RHS統計上是相似的則被歸為一類。相對於頻繁項集的其他聚類結果,這種方法得出含有替代品的分組(如“黃油”和“人造黃油”),這些通常是很少一起購買的,但因為他們有著相似的RHS。相同的分組方法也作用於後項。然而,由於挖掘的規則只得出一個RHS的項集,因此這裡沒有組合爆炸的問題,但這樣的分組通常也是不需要的。

在視覺化圖中,LHS是列,RHS是行,lift是圈的顏色深淺,圈的大小事聚合後的支援度。LHS的個數和分組中最重要(頻繁)項集顯示在列的標籤裡。lift從左上角到右下角逐漸減少。

> plot(rules, method = "grouped")

plot7

圖5

lift從左上角到右下角的顏色逐漸變小。這裡有3條規則包含“Instant food products ”,RHS超過2個其他項集的是“hamburger meat”。

組的個數預設是20個,我們也可以通過新增control = list(k = 50)來改變組的個數。

5、基於圖的視覺化

基於圖形的視覺化技術,利用頂點代表項或者專案集,和邊表示規則中關係的關聯規則。強度通常使用顏色或者邊的寬度來表示。

基於圖形的視覺化提供了一個規則非常明確的展示,但他們規則越過則往往容易變得混亂,因此是比較可行的是使用非常小的規則集。對於下面的圖,我們選擇了10條具有高lift的規則。

> subrules2 <- head(sort(rules, by = "lift"), 10)

arulesViz包含了一些基於圖形的視覺化展示,使用Rgraphviz擴充套件包的一些介面。預設的版本點代表專案集,表代表規則項集之間的有向邊 。

plot8

圖6

> plot(subrules2, method = "graph")

plot9

圖7

> plot(subrules2, method = "graph", control = list(type = "items"))

圖7著重於規則是如何由個別專案組成的,並顯示哪些規則共享的專案。arulesViz的內建基於徒刑的視覺化只對規則數較少時有效。探索大量規則的視覺化,需要先進的圖形放大,過濾,分組和著色節點的互動功能。

7、平行座標圖(Parallel coordinates plot )

平行座標圖將多維資料共享,使得每個維度上分別顯示在x軸和y軸。每個資料點是由連線的值對於每個維度中的線表示。每個資料點由連線每個維度的線表示。

plot10

8、小節

plot11

This entry was posted in