【機器學習與R語言】10- 關聯規則


1.理解關聯規則

1)基本認識

  • 購物籃分析:用來判別事務型數據中商品之間關聯的機器學習方法,在零售店之間廣泛使用。
  • 購物籃分析的結果是一組指定商品之間關系模式的關聯規則
  • 表現形式:{花生醬,果凍}——>{面包},即如果購買了花生醬和果凍,就很有可能購買面包。商品的集合稱為項集。
  • 特點:無監督學習,不能預測,智能發現知識;不能衡量算法性能,只能定性地評估。
  • 其他應用場景:癌症種尋找DNA和蛋白質頻繁出現的模式;信用卡欺詐和保險或醫療津貼的模式等。

2)Apriori算法

  • Apriori:a priori,即事先
  • 事務型數據特點:一般很龐大,潛在的項集數量隨着特征的數量呈指數增加。給定k個項,則有2^k個可能的項集必須用於規則的搜索。
  • 采用啟發式算法來減少需要搜索的項集數,如廣泛使用的Apriori算法,利用了一個簡單的先驗信念作為准則來減少關聯規則的搜索空間(Apriori性質:一個頻繁項集的所有子集必須也是頻繁的)。

image.png

度量規則興趣度:支持度和置信度

  • 支持度:一個項集或規則在數據中出現的頻率。項集可以是多個項{A,B},也可是單個{A}。
    N是數據庫中交易次數,count(X)是項集X的交易次數
  • 置信度:規則的預測能力或准確度度量,即表交易中項集X的出現導致項集Y出現的比例,和貝葉斯概率P(A|B)類似。
    同時包含項集X和Y的支持度與只包含項集X支持度之商

用Apriori性質建立規則

  • 如果{A,B}是頻繁的,那么{A}和{B}必須是頻繁的。通過Apriori算法可提前排除潛在的關聯規則。
  • 過程:一是通過多次迭代-停止的過程來識別所有滿足最小支持度閾值的項集;二是根據滿足最小置信度閾值的這些項集來創建規則。

2.關聯規則應用示例

用關聯規則確定經常一起購買的食品雜貨

1)收集數據

來自某超市經營一個月的購物數據,包含9835次交易,大約每天327次交易。不考慮品牌,將食品雜貨數量歸為169個類型,探究哪種類型的商品有可能一起購買。

數據下載:

鏈接: https://pan.baidu.com/s/11xTz8xkJxXTuj0hc5THTZA 提取碼: s5pr

2)探索和准備數據

不同於矩陣,事務型數據形式更自由,每一行為案例(一次交易),每條記錄包括用逗號隔開的任意數量的產品清單,一至多個。也就是說案例之間的特征可能是不同的。

①為交易數據創建一個稀疏矩陣
傳統的數據框一旦增加額外的交易和商品,會變得過大而導致內存不足,因此用稀疏矩陣(購買了該單元格為1,否則為0,169列商品大部分單元為0)在內存中沒有存儲完整的矩陣,只是存儲了由一個商品所占用的單元。

使用arules包中的read.transactions函數創建事務型數據的稀疏矩陣。

## Example: Identifying Frequently-Purchased Groceries ----
## Step 2: Exploring and preparing the data ----

# load the grocery data into a sparse matrix
library(arules)
groceries <- read.transactions("groceries.csv", sep = ",")
summary(groceries)

# look at the first five transactions
inspect(groceries[1:5])

# examine the frequency of items
itemFrequency(groceries[, 1:3])

②可視化商品的支持度(商品頻率)

# plot the frequency of items
itemFrequencyPlot(groceries, support = 0.1) #支持度至少10%
itemFrequencyPlot(groceries, topN = 20) #支持度前20的商品

10%
top20

③可視化稀疏矩陣(商品交易)
矩陣中有黑色填充的,說明被購買了。大多數情況下,圖形是比較隨機的。
對於超大型交易數據集不適合全部展示,這時可以對交易進行隨機抽樣並可視化。

# a visualization of the sparse matrix for the first five transactions
image(groceries[1:5])

# visualization of a random sample of 100 transactions
image(sample(groceries, 100))

image.png

3)訓練模型

apriori函數很簡單,但要找到支持度和置信度參數來產生合理數量的關聯規則,需要大量的試驗和誤差評估。參數閾值設置太高,可能沒有規則或規則太普通,太低則可能導致規則數量龐大,耗時耗內存。

訓練模型函數說明:

#找出關聯規則
myrules=arules::apriori(data, 
        parameter = list(
                     support = 0.1,  #最低支持度
                     confidence = 0.8, #最低置信度
                     minlen = 1)) #最低項數

# 檢驗關聯規則
inspect(myrules)
  • 支持度的閾值設置:考慮規則之前,事先想好需要最小的交易數量,如某商品一天購買2次(一月約60次)時可考慮建立規則,則支持度設為60/9835=0.006。
  • 置信度的閾值設置:涉及一個巧妙的平衡。絕大部分取決於分析目標,如從保守值開始,若無可行性規則,再降低要求拓寬范圍。
  • minlen設定為2有助於消除包含少於兩類商品的規則,防止僅僅是由於某商品被頻繁購買而創建的無趣規則。
## Step 3: Training a model on the data ----
library(arules)

# default settings result in zero rules learned
apriori(groceries)

# set better support and confidence levels to learn more rules
groceryrules <- apriori(groceries, parameter = list(support =
                          0.006, confidence = 0.25, minlen = 2))
groceryrules

建立的關聯規則數

4)評估性能

  • 規則的大小:前項(條件項/左項,lhs)和后項(結果項/右項,rhs)之和,如{peanut butter, jully}=>{bread}的大小為2+1=3.
  • 度量規則質量的統計量:支持度(support),置信度(confidence)和提升度(lift)。提升率是指一類商品相對於它的一般購買率,被購買的可能性有多大。若lift大於1,則說明商品關聯一起比單類商品購買更常見。
    提升率與置信度不同,與商品購買順序無關,lift(X—>Y)和lift(Y—>X)一樣
  • 需要注意一些平凡的規則和令人費解的規則(可能只是隨機模式)
## Step 4: Evaluating model performance ----
# summary of grocery association rules
summary(groceryrules)

# look at the first three rules
inspect(groceryrules[1:3])

規則結果
查看前三項規則

5)提高模型性能

①對關聯規則集合排序
最有用的規則或許是那些具有最高支持度、置信度和提升度的規則,所以對其進行排序來尋找感興趣的規則。

# sorting grocery rules by lift
inspect(sort(groceryrules, by = "lift")[1:5])

lift排序top5

②提取關聯規則的子集
假如只對某種商品和其他商品關聯感興趣,,如漿果berries,則可以提取包含berries的所有規則。

# finding subsets of rules containing any berry items
berryrules <- subset(groceryrules, items %in% "berries")
inspect(berryrules)

image.png

③將關聯規則保存到文件或數據框中
轉化數據框使用as函數。

# writing the rules to a CSV file
write(groceryrules, file = "groceryrules.csv",
      sep = ",", quote = TRUE, row.names = FALSE)

# converting the rule set to a data frame
groceryrules_df <- as(groceryrules, "data.frame") 
str(groceryrules_df)

image.png


機器學習與R語言系列推文匯總:
【機器學習與R語言】1-機器學習簡介
【機器學習與R語言】2-K近鄰(kNN)
【機器學習與R語言】3-朴素貝葉斯(NB)
【機器學習與R語言】4-決策樹
【機器學習與R語言】5-規則學習
【機器學習與R語言】6-線性回歸
【機器學習與R語言】7-回歸樹和模型樹
【機器學習與R語言】8-神經網絡
【機器學習與R語言】9-支持向量機
【機器學習與R語言】10-關聯規則
【機器學習與R語言】11-Kmeans聚類
【機器學習與R語言】12-如何評估模型的性能?
【機器學習與R語言】13-如何提高模型的性能?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM