Python中的Apriori演算法詳解

PHPz
發布: 2023-06-10 08:03:13
原創
4749 人瀏覽過

Apriori演算法是資料探勘領域中關聯規則探勘的常見方法,被廣泛應用於商業智慧、行銷等領域。 Python作為一種通用的程式語言,也提供了多個第三方函式庫來實作Apriori演算法,本文將詳細介紹Python中Apriori演算法的原理、實作及應用。

一、Apriori演算法原理

在介紹Apriori演算法原理之前,先來學習下兩個關聯規則挖掘中的概念:頻繁項集和支持度。

頻繁項目集:指在某資料集中經常同時出現的一組物品集合。

支持度:項集在所有交易中出現的頻率稱為支持度。

例如,在一個超市的交易資料中,{牛奶,蛋糕}這個組合在所有交易中出現的頻率為10%。那麼,該組合的支持度為10%。

Apriori演算法是基於頻繁項集的概念,透過逐層搜尋頻繁項集來發掘項之間的關聯性。其想法如下:

  1. 自底向上地挖掘頻繁項集,從單一項目集(即單獨購買的商品)開始。
  2. 只有當某個項集的支持度滿足預設的最小支持度閾值時,它才能被視為頻繁項集。
  3. 基於頻繁項集,建立強關聯規則集。強關聯規則是指關聯規則中條件項目和結果項目之間的連結非常緊密的規則。

具體來說,Apriori演算法的實作流程如下:

  1. 對所有項目進行計數,獲得單項集的支援度計數。
  2. 對於每個支持度滿足最小支持度閾值的單項集,它們可以被認為是頻繁項集。
  3. 對於每個頻繁項集,產生它的所有非空子集,在生成的過程中透過計數的方式計算每個子集的支持度。
  4. 如果目前產生的子集的支持度滿足最小支持度閾值,則將該子集儲存為頻繁項集。
  5. 基於頻繁項集,建立強關聯規則集。對於一個頻繁項集,可以選擇其中的子集作為條件,剩下的部分作為結果,計算其置信度。如果置信度滿足最小置信度閾值,則將該關聯規則儲存為強規則。
  6. 迭代執行步驟3到步驟5,直到沒有新的頻繁項集或強規則為止。

要注意的是,Apriori演算法的時間複雜度是很高的,因為它需要對每個非空子集進行支援度計數。為了減少計算量,可以採用一些最佳化技巧,例如使用雜湊表和候選消減。

二、Python實作Apriori演算法

Python中有多個第三方函式庫可以實作Apriori演算法,如mlxtend、Orange等。以下以mlxtend為例介紹Apriori演算法的實作步驟。

  1. 安裝mlxtend庫

使用pip安裝mlxtend:

pip install mlxtend
登入後複製
  1. 匯入所需的庫

  1. 導入numpy庫和mlxtend庫:
import numpy as np
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules
登入後複製

準備資料

    產生一個簡單的交易資料集,包含4個交易記錄,每個記錄都是由一些物品組成:
  1. dataset = [['牛奶', '面包', '啤酒', '尿布'],
               ['牛奶', '面包', '啤酒', '尿布'],
               ['面包', '啤酒', '尿布', '饼干'],
               ['牛奶', '尿布', '啤酒', '饼干']]
    
    登入後複製
將資料轉換成布林表格

使用TransactionEncoder將資料轉換為布林表格,此步驟是為了從交易資料集中提取頻繁項集:

te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
登入後複製

挖掘頻繁項集

使用Apriori函數從布林表格中挖掘出頻繁項集:

frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)
登入後複製

透過設定min_support參數,可以控制頻繁項集的最小支持度。在上述程式碼中,設定了最小支持度為0.5。

建立強關聯規則集#########基於頻繁項集,使用association_rules函數建立強關聯規則集:###
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)
登入後複製
###透過設定metric參數,可以控制使用哪種測量來評估關聯規則的好壞。在上述程式碼中,使用了置信度(confidence)作為評估指標,並將最小置信度閾值設為0.7。 ######三、Apriori演算法應用場景######Apriori演算法可應用於多個領域,如行銷、推薦系統、社群網路分析等。以下以電商平台為例,展示Apriori演算法在商品推薦上的應用。 ######電商平台通常會記錄使用者的交易記錄,並使用這些記錄來推薦給使用者可能感興趣的商品。透過Apriori演算法,可以挖掘出高頻的商品組合,例如購買了A、B、C商品的人,還有很大機率購買D商品。基於這些關聯規則,電商平台可以將對應的商品推薦給用戶,提高用戶的交易率和購物體驗。 ######四、結論######Apriori演算法是一種常見的關聯規則挖掘方法,在Python中也有多個第三方函式庫可以實作該演算法。透過這些函式庫,可以方便地挖掘出頻繁項集和關聯規則,為資料分析和業務決策提供支援。 ###

以上是Python中的Apriori演算法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!