關聯規則可視化

關聯規則挖掘是一種流行的數據挖掘方法,在R語言中爲擴展包arules。然而,挖掘關聯規則每每致使很是多的規則,使分析師須要經過查詢全部的規則才能發現有趣的規則。經過手動篩選大量的規則集是費時費力。在本文中,咱們基於探索關聯規則的R擴展包arulesViz,提出幾個已知的和新穎的可視化技術。html

一、簡介

算法步驟這裏不作詳細介紹,下面是幾個重要的變量的定義:web

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越小,則數據越不平衡。算法

二、數據準備和arulesViz的統一接口

使用擴展包arulesViz以前,咱們首先須要加載它。這個包會自動加載其餘所須要的數據包,如arules。以下面的數據集Groceries包含在arules包裏面。ide

> library("arulesViz") > data("Groceries") > summary(Groceries)

設置支持度爲0.001,置信度爲0.5,R語句入下:spa

> rules <- apriori(Groceries, parameter = list(support = 0.001, confidence = 0.5)) > rules set of 5668 rules

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

> 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

三、散點圖

直接用plot畫出散點圖orm

> plot(rules)

plot1

圖1htm

從圖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爲縱標軸,以下所示。ci

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按鈕,在終端的界面上便顯示了這些規則。

四、基於分組矩陣的可視化

基於矩陣的可視化中只能有效處理規則數較少的可視化,由於大的規則集一般也有大量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)來改變組的個數。

五、基於圖的可視化

基於圖形的可視化技術,利用頂點表明項或者項目集,和邊表示規則中關係的關聯規則。強度一般使用顏色或者邊的寬度來表示。

基於圖形的可視化提供了一個規則很是明確的展現,但他們規則越過則每每容易變得混亂,所以是比較可行的是使用很是小的規則集。對於下面的圖,咱們選擇了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的內置基於徒刑的可視化只對規則數較少時有效。探索大量規則的可視化,須要先進的圖形放大,過濾,分組和着色節點的交互功能。

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

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

plot10

八、小節

plot11

參考文件:《Visualizing Association Rules-Introduction to the R-extension Package arulesViz

相關文章
相關標籤/搜索