㈠ 數據挖掘- 關聯分析演算法
關聯分析,顧名思義就是找出哪幾項之間是有關聯關系的,舉個例子:
以上是五個購物記錄,從中我們可以發現,購買了尿布的人其中有3個購買了啤酒,那麼久我們可以推測,尿布和啤酒之間有較強的關聯關系,盡管他們之間看起來並沒有什麼聯系,也就是能得到規則:
因為購物分析能較好地描述關聯分析,所以又被叫做 購物籃分析 。
為了較好的描述這個分析的各種名詞,我們把上面的表格重新設計一下:
把每一個購物訂單中,涉及到的商品都變成1,沒涉及到的變成0,也就是將各個商品的購買記錄 二元化 。
當然肯定也有多個分類的情況。
那麼麵包,牛奶這些就叫數據集的 項 ,而他們組合起來的子集就叫做 項集 。可以為空,空集是不包含任何項的項集,如果一個項集包含k個子項,就叫做k-項集。
訂單12345叫做 事務 ,某個項集在所有事務中出現多少次,叫做項集的 支持度計數 。
在上面的表格中,項集{啤酒、尿布、牛奶}的支持度計數為2,因為有兩個事務(3、4)包含這一項集。
用 支持度 和 置信度 來衡量,假定存在規則 ,其中X和Y是 不相交 的項集,則支持度為:
其中N是數據集中的事務個數,相當於表示該規則在數據集中出現了多少次。
置信度為:
置信度的意思就是,在出現X的情況下,有多少次同時出現了Y,代表這個關聯規則的頻繁程度。
注意置信度的分母是 ,因此這個評價可能會存在一定的問題。
關聯分析的核心目標就是找出支持度大於等於某個閾值, 同時 置信度大於等於某個閾值的所有規則,這兩個閾值記為 和 。
為了更有效率的完成這個過程,通常把關聯規則演算法分為兩步:
可以看出來,首先要求得頻繁項集,這步驟的開銷很大,但是只需要考慮支持度就可以了,第二步只考慮置信度就可以了。
下面就可以分兩步來解析演算法:
首先我們可以把項集聯想成一個樹形結構,每層代表著不同的k-項集,依層遞增,非葉子節點來自於他的幾個父節點的並集,如圖:
我們肯定不能通過傳統的方式,遍歷這些節點,算出支持度,然後篩選掉不滿足最小支持度的那些,這樣開銷太大,因此我們引入先驗原理,來輔助剪枝。
這個原理不難想像,假如一個項集{a,b}是非頻繁項集,那麼{a,b,c}肯定也是,因為ab是,在{a,b,c}中與之關聯的c必須在ab出現之後才存在,因此他的支持度肯定不會大於{a,b}。
頻繁的就是支持度大於等於最小支持度的項集,非頻繁就是小於的。
我們可以利用這一定理,把非頻繁項集的超集一並從樹中減去,這樣就能大大的降低計算次數,如圖:
虛線圈上的,就是在{a,b}確定是非頻繁項集之後,剪掉的超集,這些是不用計算的。
根據這個原理,可以說一下Apriori演算法。
根據上面說的先驗原理,Apriori演算法先從項集寬度最低的1開始,遍歷所有的項集支持度,找出頻繁項集(因為第一層在找出支持度之前),之後根據先驗原理,挑選任意兩個頻繁項集組成2-頻繁項集(很簡單,如果挑非頻繁的,那組成的項集就不是頻繁項集了),再用2-項集挑選3-項集,直到挑選不出更高層次的項集為止,把這些項集作為 候選項集 ,如圖:
圖中1-項集中,啤酒,麵包,尿布,牛奶的支持度大於等於3(設 為3),則由他們組成2-項集,繼續篩選滿足支持度不小於3的項集,再由2-項集生成3-項集,這就是 Apriori 演算法篩選頻繁項集的基本步驟。總結如下:
上面提到了用k-1項集生成k-項集,那麼如何才能最有效率的產生k-項集呢,這里用了 的方法,也就是找到一對(k-1)-項集,當他們的前(k-2)項都相同時,進行合並,合並之後的結果就是{ },因為前k-2項是相同的。
舉個例子:
上面說了如何產生候選項集,接下來就是如何更有效率的確定支持度計數了,同樣,如果遍歷一個一個查的話效率是很低的,我們可以用枚舉的方法遍歷每個事務包含的項集,以查找3-項集為例,如圖:
因為我們要查3-項集,因此樹狀結構就分到3-項集為止。
因為3-項集的開頭第一個項肯定在1,2,3之間,我們就設定這三個數為三個分支,無論到哪個節點,都嚴格按照這個來分(1在左,2在中,3在右),在下面的層次中如何碰到比123更大的,則再向右分,就可以得到圖中的關於事務t的所有3-項集。
有了所有項集的列表,我們可以用候選項集去匹配這些項集,從而看t中是否包含候選項集,如果包含,則支持度+1。
可以使用Hash樹來進行匹配,從而實現支持度計數。
如下圖,就是一個Hash樹的例子,每個內部節點都使用Hash函數 來確定應當沿著當前節點的哪個分支向下,所以1,4,7就到了同一分支。
我們對於單個事務,可以遍歷Hash樹,設事務為t,則保證所有包含屬於事務t的候選3-項集的葉節點至少訪問一次。
由於我們之前已經通過樹的方式枚舉出了t中所有的3-項集,那麼我們跟這個Hash一走分支,找到對應3-項集的就+1支持度,即可算出每個候選項集的支持度。
提取規則相應的比較簡單,設有 頻繁項集Y ,我們忽略前件為空和後件為空的規則,每個頻繁項集能產生 個關聯規則,提取方法就是將Y劃分為兩個 非空 的子集X和Y-X,使得 滿足 置信度閾值 也就是最小置信度。
同樣的,提取規則也有一個原理:
參考頻繁項集的尋找過程,我們可以利用樹形結構對規則進行剪枝。
樹的每層對應規則後件中的項數,如圖:
假設規則{ } { }不滿足置信度閾值的要求,那麼可以丟棄後件包含{a}的所有規則,如上圖所示。
至此我們經歷了尋找頻繁項集和提取規則的過程,基本Apriori演算法就算完成了,不過還有一些需要考慮的細節。
在實際應用過程中,往往頻繁項集產生的數量可能很大,所以很難表示,我們需要尋找一種方法,找到一些有代表性的頻繁項集,以保證其描述性。
通常有如下兩種方法:
如圖:
這種表示很明顯降低了需要表示項集的個數,我們需要別的候選項集,直接取極大頻繁項集的子集就行,任意一個肯定都是。
但是這么做,表示不出他們子集的支持度,所以就需要再遍歷數據集,確定非極大頻繁項集的支持度,不是很方便。
所以我們還可以用閉頻繁項集來表示。
先來看閉項集的概念:
那麼閉頻繁項集的概念就很好理解了:
如圖,我們假設 是40%。
這種做法可以保證支持度和描述性。
之前舉的例子都是二元分類的,要麼1要麼0,下面看多分類的,我們很容易想到可以用獨熱編碼解決這個問題,把所有分類二元化,但是這樣就存在一個問題,有的屬性值可能會不夠頻繁,沒辦法成為頻繁項集。
所以最好是把多分類的項根據實際情況進行分類化,不要針對每個屬性都設置獨熱編碼。
或者將不太頻繁的屬性值合並為一個稱作其他的類別。
所以面對多分類屬性,我們要做的就是:
獨熱編碼二元化-針對這些值進行一定的合並,或者分類或者並為其他 - 刪除冗餘的項 - 避免包含多個來自同一屬性的項的候選集(例如{ },被寫到了一個候選集中,但是實際上這種情況不可能發生,由於獨熱編碼進行的二元化而產生了這種情況,需要避免。)
我們也會遇到一些連續屬性,可以通過以下幾種方式處理:
這種做法有一個問題就是分類的效果取決於區間的個數和跨度,如果取不好很難得到理想的結果。
如果要驗證統計出的值是否具有統計意義,可以參考假設檢驗中針對不同比較的不同公式,這里不再舉例。
把mini-Apriori演算法中的支持度代入到Apriori演算法的支持度中即可。
舉個例子:
想要衡量模型的好與壞,肯定要有一個評估指標,我們可以根據業務實際去評價,這是主管評價,叫做 主觀興趣度度量 ,這個顯然要結合業務,所以我們要看看一些客觀指標。
指標的評價往往依賴於相依表,這個相依表有點類似於混淆矩陣:
其中A,B代表在事務中出現,!A,!B代表沒有在事務中出現,空列空行例如 代表A的支持度計數, 表示包含B但是不包含A的事務的個數。
最基本的就是置信度和支持度了,但是這兩種指標都很難做到客觀評價模型,會受到多種因素的影響。
我們可以用 興趣因子 來衡量模型:
首先我們引入 提升度 的概念,它用於計算規則置信度和 規則後件 中項集的支持度之間的比率,
對於二元變數,提升度等價於另一種稱作興趣因子的客觀度量,定義為:
其中N是事務個數。
如果
但是興趣因子有一定局限性,看上圖,{p,q}和{r,s}的興趣因子分別為1.02和4.08,雖然p和q同時出現在88%的文檔中,但是他們的興趣因子接近於1,表明他們相互獨立,另一方面,{r,s}的興趣因子閉{p,q}的高,但是r和s很少出現在一個文檔中,這種情況下,置信度要比興趣因子更可信,置信度表明p和q之間的聯系94.6%遠高於r和s之間。
另外還可以引入 相關系數 ,邏輯類似於向量的相關系數:
相關度的值從-1到1,如果變數相互獨立,則Φ=0。
他的局限性在於在食物中把同時出現和同時不出現視為同等重要,這往往不符合實際規律,同時對於傾斜的變數很難度量。
IS度量 可以用於處理非對稱二元變數,定義如下:
IS數學上等價於二元變數的餘弦度量。
但是IS取決於A和B的支持度,所以存在與置信度度量類似的問題——即使是不相關或者負相關的模式,度量值也可能相當大。
支持度,全置信度,可以應用於較大的項集,興趣因子,IS、PS、Jaccard系數等使用多維相依表中的頻率,可以擴展到多個變數。
針對大多數項具有較低或中等的頻率,但是少數項具有很高頻率的數據集。
交叉支持模式是一個項集 ,他的支持度比率是:
小於用戶指定的閾值 。
需要保證全置信度小於上面的支持度比率,而全置信度是:
其中 .
全置信度能夠確保項集中的項之間是強關聯的,例如,假定一個項集X的全置信度是80%,如果X中的一個項出現在某個事物中,則X中其他的項至少也有80%的幾率屬於同一個事務,這種強關聯模式又稱 超團模式 。
本文主要講述數據挖掘分析領域中,最常用的四種數據分析方法:描述型分析、診斷型分析、預測型分析和指令型分析。
當剛涉足數據挖掘分析領域的分析師被問及,數據挖掘分析人員最重要的能力是什麼時,他們給出了五花八門的答案。
其實我想告訴他們的是,數據挖掘分析領域最重要的能力是:能夠將數據轉化為非專業人士也能夠清楚理解的有意義的見解。
使用一些工具來幫助大家更好的理解數據分析在挖掘數據價值方面的重要性,是十分有必要的。其中的一個工具,叫做四維分析法。
簡單地來說,分析可被劃分為4種關鍵方法。
下面會詳細介紹這四種方法。
1. 描述型分析:發生了什麼?
最常用的四種大數據分析方法
這是最常見的分析方法。在業務中,這種方法向數據分析師提供了重要指標和業務的衡量方法。
例如,每月的營收和損失賬單。數據分析師可以通過這些賬單,獲取大量的客戶數據。了解客戶的地理信息,就是「描述型分析」方法之一。利用可視化工具,能夠有效的增強描述型分析所提供的信息。
2. 診斷型分析:為什麼會發生?
最常用的四種大數據分析方法
描述性數據分析的下一步就是診斷型數據分析。通過評估描述型數據,診斷分析工具能夠讓數據分析師深入地分析數據,鑽取到數據的核心。
良好設計的BI dashboard能夠整合:按照時間序列進行數據讀入、特徵過濾和鑽取數據等功能,以便更好的分析數據。
3. 預測型分析:可能發生什麼?
最常用的四種大數據分析方法
預測型分析主要用於進行預測。事件未來發生的可能性、預測一個可量化的值,或者是預估事情發生的時間點,這些都可以通過預測模型來完成。
預測模型通常會使用各種可變數據來實現預測。數據成員的多樣化與預測結果密切相關。
在充滿不確定性的環境下,預測能夠幫助做出更好的決定。預測模型也是很多領域正在使用的重要方法。
4. 指令型分析:需要做什麼?
最常用的四種大數據分析方法
數據價值和復雜度分析的下一步就是指令型分析。指令模型基於對「發生了什麼」、「為什麼會發生」和「可能發生什麼」的分析,來幫助用戶決定應該採取什麼措施。通常情況下,指令型分析不是單獨使用的方法,而是前面的所有方法都完成之後,最後需要完成的分析方法。
例如,交通規劃分析考量了每條路線的距離、每條線路的行駛速度、以及目前的交通管制等方面因素,來幫助選擇最好的回家路線。
結論
最後需要說明,每一種分析方法都對業務分析具有很大的幫助,同時也應用在數據分析的各個方面。
㈢ 數據挖掘方法入門——關聯分析
自然界中,某件事情發生時,其他事件也會發生,這種聯系稱為關聯。關聯分析就是為了尋找事物之間的一些有趣的關聯關系。
最讓人熟知的就是購物籃分析,商場在分析用戶經常同時購買「啤酒、尿布「、「籃球」、「籃球服」等商品組合,於是將其放在一起以促進銷售。這種關聯關系的分析,不僅應用與網站設計者可以根據訪客日誌數據,發現訪客瀏覽習慣和網站頁面間的關系。
拿某個商場的交易數據中進行分析,數據集中有限的項目經過排列組合以後可以產生大量的關聯規則,但是,只有一小部分的規則會是用戶感興趣的,因此需要引入一個「興趣度」的概念幫助用戶評估得到的關聯規則。
而與興趣度評估相關的度量包括:簡潔性、正確性、實用性、新穎性
1)簡潔性:太復雜的規則會讓用戶的興趣度降低,也難以解釋和理解
2)正確性:令人信服的程度有多高。
正確性的判斷指標是置信度,表示這個規則正確的概率有多大。即在某一項x出現的前提下,另外一項y出現的頻率是多少。
置信度confident(x=>y)=p(y|x)
3)實用性:判斷該規則再次出現的可能性有多大,即這個指標的覆蓋率。
實用性的判斷指標是支持度,支持度越大說明規則應用越廣泛,即xy同時出現的頻率.
支持度support(x=>y)= p(x U y)
4)新穎性:判斷規則是否已經被導出的另外一個規則作蘊含。
在這4個指標中,置信度和實用性是用來評判一條規則是強關聯規則的依據。
強關聯規則:同時滿足用戶定義的最小支持度閾值和最小置信度閾值的關聯規則
弱關聯規則:不滿足最小支持度閾值和最小置信度閾值的關聯規則
5)改善度:
期望可信度是在x沒有影響的作用下y出現的頻率,p(i)
改善度則是評估x的出現對y的出現的影響性。p(y|x)/p(x)越大,則改善度越高,說明x的出現對y的可能影響就越大。
1)布爾規則和量化規則
(1)布爾規則:性別=女=》職業=老師
(2)量化規則:性別=女=》平均收入=2300
量化關聯規則可以直接對原始數據進行處理,或先對數值型屬性進行分區間進行動態分割
2)單層規則和多層關聯規則
在單層規則中,所有的項不考慮現實數據的多層性,而在實際應用中,涉及不同的抽象層發現的多層關聯規則則是一種更有用的關聯規則,因為屬性之間存在一種層次關系。
(1)不涉及不同抽象層的項的規則稱為單層關聯規則
adidas籃球=》nike籃球服
(2)較高層次和較低層次之間規則稱為多層關聯規則
adidas籃球=》籃球服
3)單維規則和多維規則
(1)單維關聯規則:處理同一個屬性或維度內的聯系。
adidas籃球=》nike籃球服
(2)多維關聯規則:多個屬性或維度之間的聯系。
用戶的年齡和購買物品
㈣ 大數據掘金之中的數據分析方法不哪些
數據挖掘最常見的十種方法:
1、基於歷史的MBR分析(Memory-Based Reasoning;MBR)
基於歷史的MBR分析方法最主要的概念是用已知的案例(case)來預測未來案例的一些屬性(attribute),通常找尋最相似的案例來做比較。
2、購物籃分析(Market Basket Analysis)
購物籃分析最主要的目的在於找出什麼樣的東西應該放在一起?商業上的應用在藉由顧客的購買行為來了解是什麼樣的顧客以及這些顧客為什麼買這些產品,找出相 關的聯想(association)規則,企業藉由這些規則的挖掘獲得利益與建立競爭優勢。舉例來說,零售店可藉由此分析改變置物架上的商品排列或是設計 吸引客戶的商業套餐等等。
3、決策樹(Decision Trees)
決策樹在解決歸類與預測上有著極強的能力,它以法則的方式表達,而這些法則則以一連串的問題表示出來,經由不斷詢問問題最終能導出所需的結果。典型的決策 樹頂端是一個樹根,底部有許多的樹葉,它將紀錄分解成不同的子集,每個子集中的欄位可能都包含一個簡單的法則。此外,決策樹可能有著不同的外型,例如二元 樹、三元樹或混和的決策樹型態。
4、遺傳演算法(Genetic Algorithm)
遺傳演算法學習細胞演化的過程,細胞間可經由不斷的選擇、復制、交配、突變產生更佳的新細胞。基因演算法的運作方式也很類似,它必須預先建立好一個模式,再經 由一連串類似產生新細胞過程的運作,利用適合函數(fitness function)決定所產生的後代是否與這個模式吻合,最後僅有最吻合的結果能夠存活,這個程序一直運作直到此函數收斂到最佳解。基因演算法在群集 (cluster)問題上有不錯的表現,一般可用來輔助記憶基礎推理法與類神經網路的應用。
5、聚類分析(Cluster Detection)
這個技術涵蓋范圍相當廣泛,包含基因演算法、類神經網路、統計學中的群集分析都有這個功能。它的目標為找出數據中以前未知的相似群體,在許許多多的分析中,剛開始都運用到群集偵測技術,以作為研究的開端。
6、連接分析(Link Analysis)
連接分析是以數學中之圖形理論(graph theory)為基礎,藉由記錄之間的關系發展出一個模式,它是以關系為主體,由人與人、物與物或是人與物的關系發展出相當多的應用。例如電信服務業可藉 連結分析收集到顧客使用電話的時間與頻率,進而推斷顧客使用偏好為何,提出有利於公司的方案。除了電信業之外,愈來愈多的營銷業者亦利用連結分析做有利於 企業的研究。
7、OLAP分析(On-Line Analytic Processing;OLAP)
嚴格說起來,OLAP分析並不算特別的一個數據挖掘技術,但是透過在線分析處理工具,使用者能更清楚的了解數據所隱藏的潛在意涵。如同一些視覺處理技術一般,透過圖表或圖形等方式顯現,對一般人而言,感覺會更友善。這樣的工具亦能輔助將數據轉變成信息的目標。
8、神經網路(Neural Networks)
神經網路是以重復學習的方法,將一串例子交與學習,使其歸納出一足以區分的樣式。若面對新的例證,神經網路即可根據其過去學習的成果歸納後,推導出新的結果,乃屬於機器學習的一種。數據挖掘的相關問題也可采類神經學習的方式,其學習效果十分正確並可做預測功能。
9、判別分析(Discriminant Analysis)
當所遭遇問題它的因變數為定性(categorical),而自變數(預測變數)為定量(metric)時,判別分析為一非常適當之技術,通常應用在解決 分類的問題上面。若因變數由兩個群體所構成,稱之為雙群體 —判別分析 (Two-Group Discriminant Analysis);若由多個群體構成,則稱之為多元判別分析(Multiple Discriminant Analysis;MDA)。
10、羅吉斯回歸分析(Logistic Analysis)
當判別分析中群體不符合正態分布假設時,羅吉斯回歸分析是一個很好的替代方法。羅吉斯回歸分析並非預測事件(event)是否發生,而是預測該事件的機 率。它將自變數與因變數的關系假定是S行的形狀,當自變數很小時,機率值接近為零;當自變數值慢慢增加時,機率值沿著曲線增加,增加到一定程度時,曲線協 率開始減小,故機率值介於0與1之間。