頻繁項集的產生及經典演算法

来源:https://www.cnblogs.com/stormtides/archive/2019/11/19/11890440.html
-Advertisement-
Play Games

前言: 關聯規則是數據挖掘中最活躍的研究方法之一, 是指搜索業務系統中的所有細節或事務,找出所有能把一 組事件或數據項與另一組事件或數據項聯繫起來的規則,以獲 得存在於資料庫中的不為人知的或不能確定的信息,它側重於確 定數據中不同領域之間的聯繫,也是在無指導學習系統中挖掘本地模式的最普通形式。 一般 ...


前言:

  關聯規則是數據挖掘中最活躍的研究方法之一, 是指搜索業務系統中的所有細節或事務,找出所有能把一 組事件或數據項與另一組事件或數據項聯繫起來的規則,以獲 得存在於資料庫中的不為人知的或不能確定的信息,它側重於確 定數據中不同領域之間的聯繫,也是在無指導學習系統中挖掘本地模式的最普通形式。

  一般來說,關聯規則挖掘是指從一個大型的數據集(Dataset)發現有趣的關 聯(Association)或相關關係(Correlation),即從數據集中識別出頻繁 出現的屬性值集(Sets of Attribute Values),也稱為頻繁項集 (Frequent Itemsets,頻繁集),然後利用這些頻繁項集創建描述關聯關係的規則的過程。

關聯規則挖掘問題:

  發現頻繁項集:現所有的頻繁項集是形成關聯規則的基礎。通過用戶給定的最 小支持度,尋找所有支持度大於或等於Minsupport的頻繁項集。

  生成關聯規則:通過用戶給定的最小可信度,在每個最大頻繁項集中,尋找可信度不小於Minconfidence的關聯規則.

  如何迅速高效地發現所有頻繁項集,是關聯規則挖掘的核心問題,也是衡量關聯規則挖掘演算法效率的重要標準。

  經典的挖掘完全頻繁項集方法是查找頻繁項集集合的全集。其中包括基於廣度優先演算法搜索的 關聯規則演算法--Apriori演算法(通過多次迭代找出所有的頻繁項集)及DHP(Direct Hashing Pruning) 演算法等改進演算法;基於深度優先搜索策略的FP-Growth演算法,ECLAT演算法,COFI演算法等, 我將介紹兩種經典演算法--Apriori演算法和FP-Growth演算法。

1.Apriori演算法

  Apriori演算法基於頻繁項集性質的先驗知識,使用由下至上逐層搜索的迭代方法, 即從頻繁1項集開始,採用頻繁k項集搜索頻繁k+1項集,直到不能找到包含更多項的頻繁項集為止。

  Apriori演算法由以下步驟組成,其中的核心步驟是連接步和剪枝步:

Apriori演算法由以下步驟組成,其中的核心步驟是連接步和剪枝步

  (1)生成頻繁1項集L1。

  (2)連接步:為了尋找頻繁k項集 ,首先生成一個潛在頻繁k項集構成的候選項集 , 中的每一個項集是由兩個只有一項不同的屬於 的頻繁項集做k-2連接運算得到的。連接方法為:設l1和l2是 中的項集,即 ,如果l1和l2中的前k-2個元素相同,則稱l1和l2是可連接的,用 表示。假定事務資料庫中的項均按照字典順序排列,li[j]表示li中的第j項,則連接l1和l2的結果項集是 。

  (3)剪枝步:連接步生成的Ck是Lk的超集,包含所有的頻繁項集Lk,同時也可能包含一些非頻繁項集。可以利用前述先驗知識(定理3.2),進行剪枝以壓縮數據規模。比如,如果候選k項集Ck的k-1項子集不在Lk-1中,那麼該子集不可能是頻繁項集,可以直接刪除。

  (4)生成頻繁k項集Lk:掃描事務資料庫D,計算Ck中每個項集的支持度,去除不滿足最小支持度的項集,得到頻繁k項集Lk。

  (5)重覆步驟(2)~(4),直到不能產生新的頻繁項集的集合為止,演算法中止。

Apriori演算法是一種基於水平數據分佈的、寬度優先的演算法,由於 使用了層次搜索策略和剪枝技術,使得Apriori演算法在挖掘頻繁模式時具 有較高的效率。但是,Apriori演算法也有兩個致命的性能瓶頸:

  (1)Apriori演算法是一個多趟搜索演算法,每次搜索都要掃描事務資料庫,I/O開銷巨大。對於候選k項集Ck來說,必須掃描其中的每個元素以確認是否加入頻繁k項集Lk,若候選k項集Ck中包含n項,則至少需要掃描事務資料庫n次。

  (2)可能產生龐大的候選項集。由於針對頻繁項集Lk-1的k-2連接運算,由Lk-1 產生的候選k項集Ck是呈指數增長的,如此海量的候選集對於電腦的運算時間和 存儲空間都是巨大的挑戰。

交易 商品代碼
T100 L1,L2,L3
T200 L2,L3
T300 L2,L3
T400 L1,L2,L4
T500 L1,L3
T600 L2,L3
T700 L1,L3
T800 L1,L2,L3,L5
T900 L1,L2,L3

 當K=1,min_sup=1時

計算C1和L1

C1
項集 支持度計數
{L1} 6
{L2} 7
{L3} 6
{L4} 2
{L5} 2

 

 

 

 

 

 

 

 

 

 

 

L1:由C1剪枝得到L1
項集 支持度計數
{L1} 6
{L2} 7
{L3} 6
{L4} 2
{L4} 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

計算C2和L2

C2
項集 支持度計數
{L1,L2} 4
{L1,L3} 4
{L1,L4} 1
{L1,L5} 2
{L2,L3} 4
{L2,L4} 2
{L2,L5} 2
{L3,L4} 0
{L3,L5} 1
{L4,L5} 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L2:由C2剪枝得到L2
項集 支持度計數
{L1,L2} 4
{L1,L3} 4
{L1,L5} 2
{L2,L3} 4
{L2,L4} 2
{L2,L5} 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

計算C3和L3

C3:由L2計算三項集
{L1,L2}+{L1,L3} {L1,L2,L3}
{L1,L2}+{L1,L5} {L1,L2,L5}
{L1,L2}+{L2,L3} {L1,L2,L3}
{L1,L2}+{L2,L4} {L1,L2,L4}
{L1,L3}+{L1,L5} {L1,L3,L5}
{L1,L3}+{L2,L3} {L1,L2,L3}
{L1,L3}+{L2,L4} 超過三項
{L1,L3}+{L2,L5} 超過三項
{L1,L5}+{L2,L3} 超過三項
{L1,L5}+{L2,L4} 超過三項
{L1,L5}+{L2,L5} {L1,L2,L5}
{L2,L3}+{L2,L4} {L2,L3,L4}
{L2,L3}+{L2,L5} {L2,L3,L5}
{L2,L4}+{L2,L5} {L2,L4,L5}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L3:由C3剪枝得到L3
項集 支持度計數
{L1,L2,L3} 3
{L1,L2,L5} 2

 

 

 

 

 

 

 

 

 

計算C4和L4

C4:由L4計算四項集
{L1,L2,L3}+{L1,L2,L5} {L1,L2,L3,L5}

 

 

 

 

 

 

 

 

因為它的子集{L2,L3,L5}不是頻繁項集,此項集刪除,C4=0;

Apriori演算法優缺點:

優點:思路簡單;遞歸計算;實現方便

缺點:頻繁遍曆數據庫;生成候選集-----連接較多;占用空間大;運算量大。

2.FP-Growth演算法

  頻繁模式樹增長演算法(Frequent Pattern Tree Growth)採用分而治之的 基本思想,將資料庫中的頻繁項集壓縮到一棵頻繁模式樹中,同時保持項集 之間的關聯關係。然後將這棵壓縮後的頻繁模式樹分成一些條件子樹,每個 條件子樹對應一個頻繁項,從而獲得頻繁項集,最後進行關聯規則挖掘。

FP-Growth演算法演示-------構造FP樹

事務資料庫的建立

Tid items
1 L1,L2,L5
2 L2,L4
3 L2,L3
4 L1,L2,L4
5 L1,L3
6 L2,L3
7 L1,L3
8 L1,L2,L3,L5
9 L1,L2,L3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

掃描事務資料庫得到頻繁項目集F

從1到各點 各點路徑重覆次數
1-1 6
1-2 7
1-3 6
1-4 2
1-5 2

 

 

 

 

 

 

 

 

 

 

 

定義minsup=20%,即最小支持度為2,重新排列F

從1到各點 各點路徑重覆次數
1-2 7
1-1 6
1-3 6
1-4 2
1-5 2

 

 

 

 

 

 

 

 

 

 

重新調整事務資料庫

Tid items
1 L2,L1,L5
2 L2,L4
3 L2,L3
4 L2,L1,L4
5 L1,L3
6 L2,L3
7 L1,L3
8 L2,L1,L3,L5
9 L2,L1,L3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在FP樹中可以看到,從根節點到i5:1的路徑有兩條:

  i2:7-->i1:4-->i5:1

  i2:7-->i14-->i3:2-->i5:1

  i2:7-->i1:4和i2:7-->i14-->i3:2因為最終到達的節點肯定是i5,所以將i5省略就是i5的條件模式基,記為{i2,i1:1}{i2,i1,i3:1}

條件模式基:{i2,i1:1}{i2,i1,i3:1}

因為i3:1x小於最小支持度2,所以講i3:1省略不計,i5的條件FP樹記為{i2:2,I1:2}

根據條件FP樹,我們可以進行全排列組合,得到挖掘出來的頻繁模式(這裡要將商品本 身,如i5也算進去,每個商品挖掘出來的頻繁模式必然包括這商品本身)

條件模式基 條件FP樹 產生頻繁模式
I5 {{I2 I1:1},{I2 I1 I3:1}} {I2:2,I1:2} {I2 I5:2},{I1 I5:2},{I2,I1:2}
I4 {{I2 I1:1},{I2:1}} {I2:2} {I2 I4:2}
I3 {{I2 I1:2},{I2:2},{I1:2}} {I2:4,I1:2,I1:2} {I2 I3:4},{I1 I3:4},{I2 I1 I3:2}
I1 {{I1:4}} {I2:4} {I2 I1:4}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 您是否曾經驚訝於看到某人在 UNIX 中非常快速地工作,觸發命令並快速地執行操作?是的,我碰到過幾次,並且我一直都在向那些超級巨星開發者學習。在本文中,我想分享一些 UNIX 命令實踐,這些實踐是我在Linux 中快速,快速或有效地工作所遵循的。我在金融服務行業工作,我的工作涉及電子交易,衍生工具等 ...
  • VMware Tools是VMware虛擬機中自帶的一種增強工具,相當於VirtualBox中的增強功能(Sun VirtualBox Guest Additions),是VMware提供的增強虛擬顯卡和硬碟性能、以及同步虛擬機與主機時鐘的驅動程式。 只有在VMware虛擬機中安裝好了VMware ...
  • 目的 本文主要介紹以下內容: 設置centos的國內軟體源,預設源都是國外的下載軟體超級麻煩。 ssh登錄 下載一個shell或者cmder 下載wget 配置源 ...
  • 前兩篇介紹了Spark的yarn client和yarn cluster模式,本篇繼續介紹Spark的STANDALONE模式和Local模式。 下麵具體還是用計算PI的程式來說明,examples中該程式有三個版本,分別採用Scala、Python和Java語言編寫。本次用Java程式JavaSp ...
  • 最近遇到一些腳本誘發的審計相關BUG,感覺有必要重新梳理一下11g與12c的審計模式,於是根據官網修正了一下以前的一篇筆記這裡發出來。 一、審計功能的開啟: audit_trail參數的值可以設置為以下幾種(11G,12C適用): https://docs.oracle.com/cd/E11882_ ...
  • flink 中自身雖然實現了大量的connectors,如下圖所示,也實現了jdbc的connector,可以通過jdbc 去操作資料庫,但是flink-jdbc包中對資料庫的操作是以ROW來操作並且對資料庫事務的控制比較死板,有時候操作關係型資料庫我們會非常懷念在java web應用開發中的非常優 ...
  • 需求:有一個活動記錄表 t_ad ,商家每次發起一個活動,就會在 t_shake_devices_relation 表裡面生成一些關聯記錄。現在寫一個存儲過程實現,如果活動過期,就將關聯表裡面的數據標記刪除。 1、代碼如下: BEGIN /* 用途:每天23:00執行一次,處理“開屏廣告”和“門店主 ...
  • [20191119]探究ipcs命令輸出2.txt--//繼續上午的測試:http://blog.itpub.net/267265/viewspace-2664758/=>[20191119]探究ipcs命令輸出.txt--//先補充ipcs 剩餘2個參數 -l -u--//-l limits--/ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...