1. 程式人生 > >資料探勘之頻繁項集分析

資料探勘之頻繁項集分析

頻繁項集最經典和常用的應用就是超市的購物籃分析。每個購物籃裡有很多商品,每個商品都是一項元素,每個購物籃都是一個集合,所有購物籃就形成了一個系列集合。

分析哪些商品經常一起頻繁出現在購物籃內,即找到頻繁項集,然後,再分析其他商品與頻繁項集的關係,即關聯規則。

1. 什麼是頻繁項?什麼是頻繁項集?與相似性分析有什麼差別? 有什麼應用?

頻繁項:在多個集合中,頻繁出現的元素/項,就是頻繁項

頻繁項集:有一系列集合,這些集合有些相同的元素,集合中同時出現頻率高的元素形成一個子集,滿足一定閾值條件,就是頻繁項集。

極大頻繁項集:元素個數最多的頻繁項集合,即其任何超集都是非頻繁項集。

k項集:k項元素組成的一個集合

相似性分析,研究的物件是集合之間的相似性關係。而頻繁項集分析,研究的集合間重複性高的元素子集。

頻繁項集的應用:真實超市購物籃的分析,文件或網頁的關聯程式分析,文件的抄襲分析,生物標誌物(疾病與某人生物生理資訊的關係)

超市購物籃的分析,主要是針對實體銷售商,而不是線上零售商,這是因為實體銷售可以找點頻繁項集合後,可以採取對一種頻繁項商品促銷,而擡高相關的頻繁項其他商品的價格來獲利,因為客戶一般不會去另外一家店購買其他的商品。而這種策略在線上銷售時,會忽略“長尾”客戶的需求。對於實體銷售,商品的數量和空間資源有限,所以只能針對一些暢銷商品進行關注和指定策略。而對於線上銷售,沒有資源限制,而且客戶切換商戶很方便,所以實體店銷售的策略不合適線上銷售,線上銷售更應該關注相似客戶群的分析,雖然他們的購買的產品不是最暢銷、頻繁的,但對客戶群的偏好分析,可以很容易做到對每個客戶進行定製化廣告推薦,所以,相似性分析對線上銷售更為重要。

2. 頻繁項集分析有哪些指標?有什麼意義?

1)支援度: 包含頻繁項集F的集合的數目

2)可信度:頻繁項F與某項j的並集 (即F U {j})的支援度 與 頻繁項集F的支援度的比值,

3)興趣度:F U {j} 可信度 與 包含{j}的集合比率之間的差值。若興趣度很高,則 頻繁項集F會促進 j 的存在, 若興趣度為負值,且頻繁項集會抑制 j 的存在;若興趣度為0,則頻繁項集對 j 無太大影響。

頻繁項集 與 某項 j 的關係就是 關聯規則。

3. 頻繁項對在記憶體中的存放方式有哪些?頻繁相對{i, j}

1)三角陣存放方式:即採用一個數組來儲存這個三角陣中的元素,它可以節省二維陣列一半的空間

2)三元組方式{i, j, c}:當頻繁項對的數目小於C(n, 2)的數目的1/3時,三元組的方式相對於三角陣比較有優勢。

4. Aprior演算法

是一種篩選頻繁項集的優化演算法。

頻繁項集兩個定理:

1)頻繁項子集定理:頻繁項集的子集都是頻繁項集,而非頻繁項的超集都是非頻繁項集。

2)頻繁項集的合併/連線定理:由k-1項集,向k項集進行合併。當兩個k-1項集,擁有k-2個相同元素時,才能合併成k項集。

Aprior演算法是採取逐步合併的方式,求取頻繁k項集,並且在合併之前,要過濾掉非頻繁項集。流程類似如下:

原始資料 --> 一級構建 --> 一級過濾 --> 二級構建 --> 二級篩選 --> 三級......

第k級會生成 k項集 和 過濾掉非頻繁項集,保留下k項頻繁項集。

每一級的構建都會引起資料量的增加,而每一級的過濾後,會大大減少資料量,便於下一級的運算。

逐步過濾和合並,直至生成極少數量的頻繁項集,或者極大頻繁項集.

Aprior有點類似廣度優先的演算法。

5. PCY演算法

當頻繁項對的數量比較大時,記憶體放不下,而這時對頻繁項對進行計數時,可能會產生記憶體抖動,即記憶體頁面頻繁換入換出,因為不同的頻繁項對計數器可能放在不同的頁面上。

對Aprior進行改進。

在第一步掃描時,為頻繁項對 建立一張hash表,hash表只是統計 hash到本桶的項對的個數。第二步,統計哪些是頻繁桶,並對桶內的兩個頻繁項進行計數處理。這樣,每個頻繁桶內代表的頻繁項集比較少,這樣,計算更大頻繁項集的計算量就大大降低了。

6. 多hash演算法

PCY的形變演算法,採用多個hash表和hash函式,只要桶的平均計數不小於閾值,分頻繁桶的數目任然比較多。這樣,一個非頻繁對同時hash到兩個hash表的頻繁桶內的概率就更低。減少了第二遍掃描的運算量。

7. 隨機化演算法

前提: 當資料量非常大,整個購物籃資料無法放入記憶體,這時,進行統計會有一定困難

解決方法:對購物籃進行隨機抽樣,只要樣本資料足夠大,還是能夠提取出逼近真實情況的頻繁項集的。

由於是抽樣,涉及概率p,所以頻繁項支援度的閾值s也需要降低,但是由於概率的乘法定理,抽樣的頻繁項集肯定是小於實際的數目,所以,需要降低閾值,可以將新的閾值設定的更小點,如0.9*p*s。

抽樣帶來的新問題: 偽正例(非頻繁項集被統計成頻繁項集)、偽反例(頻繁項集沒有提取出來)。偽正例可以通過後續的處理,排除掉,但是無法消除偽反例的情況。

8. SON演算法

對隨機抽樣的演算法進行改進。

將所有購物籃劃分成相對比較小的小組,這樣每個小組都能放進記憶體進行處理,每個小組內的項進行統計。處理完所有小組,然後,統計項對的頻率,找出頻繁項集。這個演算法比較適合map-reduce的處理方式。

在統計每個小組的頻繁項集時,其閾值仍然是需要降低的,類似於隨機抽樣演算法。

9. Toivonen 演算法

在給給定足夠記憶體的情況下:

剛開始,類似於隨機抽樣演算法,對購物籃抽樣,降低閾值,找出頻繁項集,除此之外,還要檢測反例邊界,反例邊界的構成:非頻繁集,但去掉任何一個元素就是頻繁集。

在完整的資料集中,對反例邊界上的項集進行檢測,若這個反例邊界的項集 沒偽反例,即在完整資料集中,仍然是非頻繁項集,則接收此次抽樣結果;若找到了偽反例,那麼就再次抽樣,直至成功。

10. 資料流中的頻繁項集分析

面臨的問題:

1)資料流可能速率很高,無法儲存整個流進行分析

2)隨時間的推移,頻繁項集也會發生變化

解決方法:

1) 抽樣技術

2)視窗的衰減模型

抽樣:

定期收集資料流,存為檔案後,再分析。分析期間,不再將資料流放入正在分析的檔案。不過,可以儲存為另一個檔案,供下次分析。

視窗衰減模型:

可以將倒數第i個出現的購物籃賦予(1-c)^i 的權值。這樣就形成了流中的一個衰減視窗。

當某個項集出現在當前購物籃中,並且其所有真子集已經開始計數,那麼此時開始對此項集開始計數。這樣需要計數的項集的規模就不會太大。

由於視窗不斷衰減,將所有計數值都乘以(1-c),並去掉計數低於1/2的項集。

相關推薦

資料頻繁分析

頻繁項集最經典和常用的應用就是超市的購物籃分析。每個購物籃裡有很多商品,每個商品都是一項元素,每個購物籃都是一個集合,所有購物籃就形成了一個系列集合。 分析哪些商品經常一起頻繁出現在購物籃內,即找到頻繁項集,然後,再分析其他商品與頻繁項集的關係,即關聯規則。 1. 什麼是

資料關聯分析二(頻繁的產生)

頻繁項集的產生 格結構(lattice structure)常常用來表示所有可能的項集。 發現頻繁項集的一個原始方法是確定格結構中每個候選項集的支援度。但是工作量比較大。另外有幾種方法可以降低產生頻繁項集的計算複雜度。 1. 減少候選項集的數目。如先驗

資料鳶尾花資料分析

因為手上沒有iris.data資料,只能通過在sklearn中載入原始資料,並將其轉換為Dataframe格式 主要內容:資料分佈的視覺化(特徵之間分佈、特徵內部、分類精度、熱力圖)  演算法:決策樹 隨機森林 import pandas as pd from skle

資料售房資料分析1

最近再做一批關於售房的資料,感覺自己陷入一個死衚衕裡: 該批資料是儲存再postgresql裡面,是從某售房網站上爬下來的,以資料庫中的一列欄位作為儲存資料,該列欄位是以json的資料形式儲存的,這裡跟我打開了一個新大門,資料庫能儲存json資料格式的資料,而且postgresql還有一套專門的

資料方差分析實驗

本部落格根據非常好的excel資料而編寫,使用python語言操作,預計使用一週的時間更新完成。需要《非常好的excel資料》word文件,歡迎發郵件給[email protected],免費發放。這篇部落格對應《非常好的excel資料》裡的第5章節。 1.1 單因素方差分析

資料關聯分析一(基本概念)

許多商業企業運營中的大量資料,通常稱為購物籃事務(market basket transaction)。表中每一行對應一個事務,包含一個唯一標識TID。 利用關聯分析的方法可以發現聯絡如關聯規則或頻繁項集。 關聯分析需要處理的關鍵問題: 1. 從大型事

資料挖掘頻繁模式的基本概念及方法

摘自《DATA MINING:Concepts and Techniques》一書,以及個人理解,主要為自己鞏固和總結,如有紕漏和出錯的地方,還請指出。此書第六章開頭指出    頻繁模式(frequent pattern),是指頻繁地出現在資料集中的模式,譬如項集,子序列或子

資料推薦分析--python實現

# #  FILTERINGDATA.py # #  Code file for the book Programmer's Guide to Data Mining #  http://guidetodatamining.com #  Ron Zacharski # #

使用Orange進行資料聚類分析(2)------K-means

一、基本k均值演算法 1 根據使用者指定的引數K,首先選擇K個初始化質心; 2 然後每個點指派到最近的質心,指派到一個質心的點形成一個簇。 3 更新每個簇的質心 4重複步驟2、3,直到簇不在發生變化。 虛擬碼描述如下: 選擇K個點作為初始質心 repeat 將每個質

轉載:資料_SVD的python實現和分析

作者:NumX  來源:CSDN  原文:https://blog.csdn.net/baidu_36316735/article/details/53760479?utm_source=copy 前言 今日實現第一個推薦演算法,在”機器學習實戰“一書中找到了SVD方法一

HAWQ + MADlib 玩轉資料(六)——主成分分析與主成分投影

一、主成分分析(Principal Component Analysis,PCA)簡介        在資料探勘中經常會遇到多個變數的問題,而且在多數情況下,多個變數之間常常存在一定的相關性。例如,網站的“瀏覽量”和“訪客數”往往具有較強的相關關係,而電商應用中的“下單數”和“成交數”也具有較強的相關關係。

資料關聯分析五(序列模式)

購物籃資料常常包含關於商品何時被顧客購買的時間資訊,可以使用這種資訊,將顧客在一段時間內的購物拼接成事務序列,這些事務通常基於時間或空間的先後次序。 問題描述 一般地,序列是元素(element)的有序列表。可以記做s=(e1,e2,⋯,en),其中

資料_SVD的python實現和分析pin

前言 今日實現第一個推薦演算法,在”機器學習實戰“一書中找到了SVD方法一章練習。這裡總結下筆記經驗,與大家分享 。 簡介 對於一個簡單的推薦系統,例如電影推薦,我們知道N個使用者對M個電影的評分。這時候對於一個新的使用者,我們應該如何給他推薦新的電影呢?一個最簡單的方法,

資料十大經典演算法

國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 2006年12月評選出了資料探勘領域的十大經典演算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, k

資料FP_Tree演算法實現

轉自http://www.cnblogs.com/zhangchaoyang/articles/2198946.html (格式複製之後有變化,建議直接點連結去部落格園看原文) python程式碼見https://github.com/yantijin/Lean_DataMining F

資料AdaBoost裝袋提升演算法

python3程式碼實現在https://github.com/yantijin/Lean_DataMining上,時間匆忙,敬請之處錯誤之處,謝謝! 以下內容轉自:https://blog.csdn.net/androidlushangderen/article/details/4363511

資料關聯規則Apriori演算法

一、Aoriori原始演算法: 頻繁挖掘模式與關聯規則 關聯規則兩個基本的指標(假設有事務A和事務B)   1、支援度(suport):計算公式如下        2、置信度(confidence):    關聯規則的挖掘過程:   1、設定最小支援度閾值,找出所有的頻繁項集且每個出現的次數要

零基礎入門大資料spark中的幾種map

今天再來說一下spark裡面的幾種map方法。前面的文章介紹過單純的map,但是spark還有幾種map值得對比一下,主要是下面幾種: map:普通的map flatMap:在普通map的基礎上多了一個操作,扁平化操作; mapPartitions:相對於分割槽P

零基礎入門大資料spark的rdd

本節簡單介紹一下spark下的基本資料結構RDD,方便理解後續的更多操作。 那麼第一個問題,什麼是rdd。我們知道,大資料一般儲存在分散式叢集裡面,那麼你在對其進行處理的時候總得把它讀出來吧,讀出來後總得把它存成某種格式的檔案吧,就好比程式語言裡面的,這個資料是陣列,那麼你可以以陣列

零基礎入門大資料reduce方法

上節介紹過大資料裡面(以spark為例)最為基礎典型的操作:map方法,map方法直白的理解就是一個分散式接受處理函式的方法,形式如map(fun),map方法本身不做處理,沒有map方法,裡面的函式fun就是一個單機的處理函式,有了map,相當於就把這個函式複製到多臺機器上,每臺機器同