『壹』 帶你了解數據挖掘中的經典演算法
數據挖掘的演算法有很多,而不同的演算法有著不同的優點,同時也發揮著不同的作用。可以這么說,演算法在數據挖掘中做出了極大的貢獻,如果我們要了解數據挖掘的話就不得不了解這些演算法,下面我們就繼續給大家介紹一下有關數據挖掘的演算法知識。
1.The Apriori algorithm,
Apriori演算法是一種最有影響的挖掘布爾關聯規則頻繁項集的演算法。其核心是基於兩階段頻集思想的遞推演算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這里,所有支持度大於最小支持度的項集稱為頻繁項集,簡稱頻集。這個演算法是比較復雜的,但也是十分實用的。
2.最大期望演算法
在統計計算中,最大期望演算法是在概率模型中尋找參數最大似然估計的演算法,其中概率模型依賴於無法觀測的隱藏變數。最大期望經常用在機器學習和計算機視覺的數據集聚領域。而最大期望演算法在數據挖掘以及統計中都是十分常見的。
3.PageRank演算法
PageRank是Google演算法的重要內容。PageRank里的page不是指網頁,而是創始人的名字,即這個等級方法是以佩奇來命名的。PageRank根據網站的外部鏈接和內部鏈接的數量和質量倆衡量網站的價值。PageRank背後的概念是,每個到頁面的鏈接都是對該頁面的一次投票,被鏈接的越多,就意味著被其他網站投票越多。這個就是所謂的「鏈接流行度」,這個標准就是衡量多少人願意將他們的網站和你的網站掛鉤。PageRank這個概念引自學術中一篇論文的被引述的頻度——即被別人引述的次數越多,一般判斷這篇論文的權威性就越高。
3.AdaBoost演算法
Adaboost是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器,然後把這些弱分類器集合起來,構成一個更強的最終分類器。其演算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的准確率,來確定每個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。這種演算法給數據挖掘工作解決了不少的問題。
數據挖掘演算法有很多,這篇文章中我們給大家介紹的演算法都是十分經典的演算法,相信大家一定可以從中得到有價值的信息。需要告訴大家的是,我們在進行數據挖掘工作之前一定要事先掌握好數據挖掘需呀掌握的各類演算法,這樣我們才能在工總中得心應手,如果基礎不牢固,那麼我們遲早是會被淘汰的。職場如戰場,我們一定要全力以赴。
『貳』 數據挖掘的十大經典演算法,總算是講清楚了,想提升自己的趕快收藏
一個優秀的數據分析師,除了要掌握基本的統計學、數據分析思維、數據分析工具之外,還需要掌握基本的數據挖掘思想,幫助我們挖掘出有價值的數據,這也是數據分析專家和一般數據分析師的差距所在。
國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 評選出了數據挖掘領域的十大經典演算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.
不僅僅是選中的十大演算法,其實參加評選的18種演算法,實際上隨便拿出一種來都可以稱得上是經典演算法,它們在數據挖掘領域都產生了極為深遠的影響。今天主要分享其中10種經典演算法,內容較干,建議收藏備用學習。
1. C4.5
C4.5演算法是機器學習演算法中的一種分類決策樹演算法,其核心演算法是ID3演算法. C4.5演算法繼承了ID3演算法的優點,並在以下幾方面對ID3演算法進行了改進:
1) 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;
2) 在樹構造過程中進行剪枝;
3) 能夠完成對連續屬性的離散化處理;
4) 能夠對不完整數據進行處理。
C4.5演算法有如下優點:產生的分類規則易於理解,准確率較高。其缺點是:在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致演算法的低效(相對的CART演算法只需要掃描兩次數據集,以下僅為決策樹優缺點)。
2. The k-means algorithm 即K-Means演算法
k-means algorithm演算法是一個聚類演算法,把n的對象根據他們的屬性分為k個分割,k < n。它與處理混合正態分布的最大期望演算法很相似,因為他們都試圖找到數據中自然聚類的中心。它假設對象屬性來自於空間向量,並且目標是使各個群組內部的均 方誤差總和最小。
3. Support vector machines
支持向量機,英文為Support Vector Machine,簡稱SV機(論文中一般簡稱SVM)。它是一種監督式學習的方法,它廣泛的應用於統計分類以及回歸分析中。支持向量機將向量映射到一個更 高維的空間里,在這個空間里建立有一個最大間隔超平面。在分開數據的超平面的兩邊建有兩個互相平行的超平面。分隔超平面使兩個平行超平面的距離最大化。假定平行超平面間的距離或差距越大,分類器的總誤差越小。一個極好的指南是C.J.C Burges的《模式識別支持向量機指南》。van der Walt 和 Barnard 將支持向量機和其他分類器進行了比較。
4. The Apriori algorithm
Apriori演算法是一種最有影響的挖掘布爾關聯規則頻繁項集的演算法。其核心是基於兩階段頻集思想的遞推演算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這里,所有支持度大於最小支持度的項集稱為頻繁項集,簡稱頻集。
5. 最大期望(EM)演算法
在統計計算中,最大期望(EM,Expectation–Maximization)演算法是在概率(probabilistic)模型中尋找參數最大似然 估計的演算法,其中概率模型依賴於無法觀測的隱藏變數(Latent Variabl)。最大期望經常用在機器學習和計算機視覺的數據集聚(Data Clustering)領域。
6. PageRank
PageRank是Google演算法的重要內容。2001年9月被授予美國專利,專利人是Google創始人之一拉里·佩奇(Larry Page)。因此,PageRank里的page不是指網頁,而是指佩奇,即這個等級方法是以佩奇來命名的。
PageRank根據網站的外部鏈接和內部鏈接的數量和質量倆衡量網站的價值。PageRank背後的概念是,每個到頁面的鏈接都是對該頁面的一次投票, 被鏈接的越多,就意味著被其他網站投票越多。這個就是所謂的「鏈接流行度」——衡量多少人願意將他們的網站和你的網站掛鉤。PageRank這個概念引自 學術中一篇論文的被引述的頻度——即被別人引述的次數越多,一般判斷這篇論文的權威性就越高。
7. AdaBoost
Adaboost是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器 (強分類器)。其演算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的准確率,來確定每個樣本的權 值。將修改過權值的新數據集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。
8. kNN: k-nearest neighbor classification
K最近鄰(k-Nearest Neighbor,KNN)分類演算法,是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。
9. Naive Bayes
在眾多的分類模型中,應用最為廣泛的兩種分類模型是決策樹模型(Decision Tree Model)和樸素貝葉斯模型(Naive Bayesian Model,NBC)。 樸素貝葉斯模型發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。
同時,NBC模型所需估計的參數很少,對缺失數據不太敏感,演算法也比較簡單。理論上,NBC模型與其他分類方法相比具有最小的誤差率。 但是實際上並非總是如此,這是因為NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,這給NBC模型的正確分類帶來了一定影響。在屬 性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最為良好。
10. CART: 分類與回歸樹
CART, Classification and Regression Trees。 在分類樹下面有兩個關鍵的思想。第一個是關於遞歸地劃分自變數空間的想法(二元切分法);第二個想法是用驗證數據進行剪枝(預剪枝、後剪枝)。在回歸樹的基礎上的模型樹構建難度可能增加了,但同時其分類效果也有提升。
參考書籍:《機器學習實戰》
『叄』 數據挖掘演算法有哪些
以下主要是常見的10種數據挖掘的演算法,數據挖掘分為:分類(Logistic回歸模型、神經網路、支持向量機等)、關聯分析、聚類分析、孤立點分析。每一大類下都有好幾種演算法,這個具體可以參考數據挖掘概論這本書(英文最新版)
『肆』 數據挖掘十大經典演算法(1)——樸素貝葉斯(Naive Bayes)
在此推出一個演算法系列的科普文章。我們大家在平時埋頭工程類工作之餘,也可以抽身對一些常見演算法進行了解,這不僅可以幫助我們拓寬思路,從另一個維度加深對計算機技術領域的理解,做到觸類旁通,同時也可以讓我們搞清楚一些既熟悉又陌生的領域——比如數據挖掘、大數據、機器學習——的基本原理,揭開它們的神秘面紗,了解到其實很多看似高深的領域,其實背後依據的基礎和原理也並不復雜。而且,掌握各類演算法的特點、優劣和適用場景,是真正從事數據挖掘工作的重中之重。只有熟悉演算法,才可能對紛繁復雜的現實問題合理建模,達到最佳預期效果。
本系列文章的目的是力求用最干練而生動的講述方式,為大家講解由國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 於2006年12月評選出的數據挖掘領域的十大經典演算法。它們包括:
本文作為本系列的第一篇,在介紹具體演算法之前,先簡單為大家鋪墊幾個數據挖掘領域的常見概念:
在數據挖掘領域,按照演算法本身的行為模式和使用目的,主要可以分為分類(classification),聚類(clustering)和回歸(regression)幾種,其中:
打幾個不恰當的比方 :
另外,還有一個經常有人問起的問題,就是 數據挖掘 和 機器學習 這兩個概念的區別,這里一句話闡明我自己的認識:機器學習是基礎,數據挖掘是應用。機器學習研製出各種各樣的演算法,數據挖掘根據應用場景把這些演算法合理運用起來,目的是達到最好的挖掘效果。
當然,以上的簡單總結一定不夠准確和嚴謹,更多的是為了方便大家理解打的比方。如果大家有更精當的理解,歡迎補充和交流。
好了,鋪墊了這么多,現在終於進入正題!
作為本系列入門的第一篇,先為大家介紹一個容易理解又很有趣的演算法—— 樸素貝葉斯 。
先站好隊,樸素貝葉斯是一個典型的 有監督的分類演算法 。
光從名字也可以想到,要想了解樸素貝葉斯,先要從 貝葉斯定理 說起。
貝葉斯定理是我們高中時代學過的一條概率學基礎定理,它描述了條件概率的計算方式。不要怕已經把這些知識還給了體育老師,相信你一看公式就能想起來。
P(A|B)表示事件B已經發生的前提下,事件A發生的概率,叫做事件B發生下事件A的條件概率。其基本求解公式為:
其中,P(AB)表示A和B同時發生的概率,P(B)標識B事件本身的概率。
貝葉斯定理之所以有用,是因為我們在生活中經常遇到這種情況:我們可以很容易直接得出P(A|B),P(B|A)則很難直接得出,但我們更關心P(B|A)。
而貝葉斯定理就為我們打通從P(A|B)獲得P(B|A)的道路。
下面不加證明地直接給出貝葉斯定理:
有了貝葉斯定理這個基礎,下面來看看樸素貝葉斯演算法的基本思路。
你看,其思想就是這么的樸素。那麼,屬於每個分類的概率該怎麼計算呢?下面我們先祭出形式化語言!
那麼現在的關鍵就是如何計算第3步中的各個條件概率。我們可以這么做:
因為分母對於所有類別為常數,因為我們只要將分子最大化皆可。又因為各特徵屬性是條件獨立的,所以有:
如果你也跟我一樣,對形式化語言有嚴重生理反應,不要怕,直接跳過前面這一坨,我們通過一個鮮活的例子,用人類的語言再解釋一遍這個過程。
某個醫院早上收了六個門診病人,如下表。
現在又來了第七個病人,是一個打噴嚏的建築工人。請問他最有可能患有何種疾病?
本質上,這就是一個典型的分類問題, 症狀 和 職業 是特徵屬性, 疾病種類 是目標類別
根據 貝葉斯定理
可得
假定"打噴嚏"和"建築工人"這兩個特徵是獨立的,因此,上面的等式就變成了
這是可以計算的。
因此,這個打噴嚏的建築工人,有66%的概率是得了感冒。同理,可以計算這個病人患上過敏或腦震盪的概率。比較這幾個概率,就可以知道他最可能得什麼病。
接下來,我們再舉一個樸素貝葉斯演算法在實際中經常被使用的場景的例子—— 文本分類器 ,通常會用來識別垃圾郵件。
首先,我們可以把一封郵件的內容抽象為由若干關鍵片語成的集合,這樣是否包含每種關鍵詞就成了一封郵件的特徵值,而目標類別就是 屬於垃圾郵件 或 不屬於垃圾郵件
假設每個關鍵詞在一封郵件里出現與否的概率相互之間是獨立的,那麼只要我們有若干已經標記為垃圾郵件和非垃圾郵件的樣本作為訓練集,那麼就可以得出,在全部垃圾郵件(記為Trash)出現某個關鍵詞Wi的概率,即 P(Wi|Trash)
而我們最重要回答的問題是,給定一封郵件內容M,它屬於垃圾郵件的概率是多大,即 P(Trash|M)
根據貝葉斯定理,有
我們先來看分子:
P(M|Trash) 可以理解為在垃圾郵件這個范疇中遇見郵件M的概率,而一封郵件M是由若干單詞Wi獨立匯聚組成的,只要我們所掌握的單詞樣本足夠多,因此就可以得到
這些值我們之前已經可以得到了。
再來看分子里的另一部分 P(Trash) ,這個值也就是垃圾郵件的總體概率,這個值顯然很容易得到,用訓練集中垃圾郵件數除以總數即可。
而對於分母來說,我們雖然也可以去計算它,但實際上已經沒有必要了,因為我們要比較的 P(Trash|M) 和 P(non-Trash|M) 的分母都是一樣的,因此只需要比較分子大小即可。
這樣一來,我們就可以通過簡單的計算,比較郵件M屬於垃圾還是非垃圾二者誰的概率更大了。
樸素貝葉斯的英文叫做 Naive Bayes ,直譯過來其實是 天真的貝葉斯 ,那麼他到底天真在哪了呢?
這主要是因為樸素貝葉斯的基本假設是所有特徵值之間都是相互獨立的,這才使得概率直接相乘這種簡單計算方式得以實現。然而在現實生活中,各個特徵值之間往往存在一些關聯,比如上面的例子,一篇文章中不同單詞之間一定是有關聯的,比如有些詞總是容易同時出現。
因此,在經典樸素貝葉斯的基礎上,還有更為靈活的建模方式—— 貝葉斯網路(Bayesian Belief Networks, BBN) ,可以單獨指定特徵值之間的是否獨立。這里就不展開了,有興趣的同學們可以做進一步了解。
最後我們來對這個經典演算法做個點評:
優點:
缺點:
好了,對於 樸素貝葉斯 的介紹就到這里,不知道各位看完之後是否會對數據挖掘這個領域產生了一點興趣了呢?
『伍』 大數據挖掘的演算法有哪些
大數據挖掘的演算法:
1.樸素貝葉斯,超級簡單,就像做一些數數的工作。如果條件獨立假設成立的話,NB將比鑒別模型收斂的更快,所以你只需要少量的訓練數據。即使條件獨立假設不成立,NB在實際中仍然表現出驚人的好。
2. Logistic回歸,LR有很多方法來對模型正則化。比起NB的條件獨立性假設,LR不需要考慮樣本是否是相關的。與決策樹與支持向量機不同,NB有很好的概率解釋,且很容易利用新的訓練數據來更新模型。如果你想要一些概率信息或者希望將來有更多數據時能方便的更新改進模型,LR是值得使用的。
3.決策樹,DT容易理解與解釋。DT是非參數的,所以你不需要擔心野點(或離群點)和數據是否線性可分的問題,DT的主要缺點是容易過擬合,這也正是隨機森林等集成學習演算法被提出來的原因。
4.支持向量機,很高的分類正確率,對過擬合有很好的理論保證,選取合適的核函數,面對特徵線性不可分的問題也可以表現得很好。SVM在維數通常很高的文本分類中非常的流行。
如果想要或許更多更詳細的訊息,建議您去參加CDA數據分析課程。大數據分析師現在有專業的國際認證證書了,CDA,即「CDA 數據分析師」,是在數字經濟大背景和人工智慧時代趨勢下,面向全行業的專業權威國際資格認證, 旨在提升全民數字技能,助力企業數字化轉型,推動行業數字化發展。 「CDA 數據分析師」具體指在互聯網、金融、零售、咨詢、電信、醫療、旅遊等行業專門從事數據的採集、清洗、處理、分析並能製作業務報告、 提供決策的新型數據分析人才。點擊預約免費試聽課。
『陸』 數據挖掘演算法有哪些
統計和可視化要想建立一個好的預言模型,你必須了解自己的數據。最基本的方法是計算各種統計變數(平均值、方差等)和察看數據的分布情況。你也可以用數據透視表察看多維數據。數據的種類可分為連續的,有一個用數字表示的值(比如銷售量)或離散的,分成一個個的類別(如紅、綠、藍)。離散數據可以進一步分為可排序的,數據間可以比較大小(如,高、中、低)和標稱的,不可排序(如郵政編碼)。圖形和可視化工具在數據准備階段尤其重要,它能讓你快速直觀的分析數據,而不是給你枯燥乏味的文本和數字。它不僅讓你看到整個森林,還允許你拉近每一棵樹來察看細節。在圖形模式下人們很容易找到數據中可能存在的模式、關系、異常等,直接看數字則很難。可視化工具的問題是模型可能有很多維或變數,但是我們只能在2維的屏幕或紙上展示它。比如,我們可能要看的是信用風險與年齡、性別、婚姻狀況、參加工作時間的關系。因此,可視化工具必須用比較巧妙的方法在兩維空間內展示n維空間的數據。雖然目前有了一些這樣的工具,但它們都要用戶「訓練」過他們的眼睛後才能理解圖中畫的到底是什麼東西。對於眼睛有色盲或空間感不強的人,在使用這些工具時可能會遇到困難。聚集(分群)聚集是把整個資料庫分成不同的群組。它的目的是要群與群之間差別很明顯,而同一個群之間的數據盡量相似。與分類不同(見後面的預測型數據挖掘),在開始聚集之前你不知道要把數據分成幾組,也不知道怎麼分(依照哪幾個變數)。因此在聚集之後要有一個對業務很熟悉的人來解釋這樣分群的意義。很多情況下一次聚集你得到的分群對你的業務來說可能並不好,這時你需要刪除或增加變數以影響分群的方式,經過幾次反復之後才能最終得到一個理想的結果。神經元網路和K-均值是比較常用的聚集演算法。不要把聚集與分類混淆起來。在分類之前,你已經知道要把數據分成哪幾類,每個類的性質是什麼,聚集則恰恰相反。關聯分析關聯分析是尋找資料庫中值的相關性。兩種常用的技術是關聯規則和序列模式。關聯規則是尋找在同一個事件中出現的不同項的相關性,比如在一次購買活動中所買不同商品的相關性。序列模式與此類似,他尋找的是事件之間時間上的相關性,如對股票漲跌的分析。關聯規則可記為A==>B,A稱為前提和左部(LHS),B稱為後續或右部(RHS)。如關聯規則「買錘子的人也會買釘子」,左部是「買錘子」,右部是「買釘子」。要計算包含某個特定項或幾個項的事務在資料庫中出現的概率只要在資料庫中直接統計即可。某一特定關聯(「錘子和釘子」)在資料庫中出現的頻率稱為支持度。比如在總共1000個事務中有15個事務同時包含了「錘子和釘子」,則此關聯的支持度為1.5%。非常低的支持度(比如1百萬個事務中只有一個)可能意味著此關聯不是很重要,或出現了錯誤數據(如,「男性和懷孕」)。要找到有意義的規則,我們還要考察規則中項及其組合出現的相對頻率。當已有A時,B發生的概率是多少?也即概率論中的條件概率。回到我們的例子,也就是問「當一個人已經買了錘子,那他有多大的可能也會買釘子?」這個條件概率在數據挖掘中也稱為可信度,計算方法是求百分比:(A與B同時出現的頻率)/(A出現的頻率)。讓我們用一個例子更詳細的解釋這些概念: 總交易筆數(事務數):1,000包含「錘子」:50包含「釘子」:80包含「鉗子」:20包含「錘子」和「釘子」:15包含「鉗子」和「釘子」:10包含「錘子」和「鉗子」:10包含「錘子」、「鉗子」和「釘子」:5 則可以計算出: 「錘子和釘子」的支持度=1.5%(15/1,000)「錘子、釘子和鉗子」的支持度=0.5%(5/1,000)「錘子==>釘子」的可信度=30%(15/50)「釘子==>錘子」的可信度=19%(15/80)「錘子和釘子==>鉗子」的可信度=33%(5/15)「鉗子==>錘子和釘子」的可信度=25%(5/20)
『柒』 數據挖掘的經典演算法
1. C4.5:是機器學習演算法中的一種分類決策樹演算法,其核心演算法是ID3演算法。
2. K-means演算法:是一種聚類演算法。
3.SVM:一種監督式學習的方法,廣泛運用於統計分類以及回歸分析中
4.Apriori :是一種最有影響的挖掘布爾關聯規則頻繁項集的演算法。
5.EM:最大期望值法。
6.pagerank:是google演算法的重要內容。
7. Adaboost:是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器然後把弱分類器集合起來,構成一個更強的最終分類器。
8.KNN:是一個理論上比較成熟的的方法,也是最簡單的機器學習方法之一。
9.Naive Bayes:在眾多分類方法中,應用最廣泛的有決策樹模型和樸素貝葉斯(Naive Bayes)
10.Cart:分類與回歸樹,在分類樹下面有兩個關鍵的思想,第一個是關於遞歸地劃分自變數空間的想法,第二個是用驗證數據進行減枝。
關聯規則規則定義
在描述有關關聯規則的一些細節之前,我們先來看一個有趣的故事: 尿布與啤酒的故事。
在一家超市裡,有一個有趣的現象:尿布和啤酒赫然擺在一起出售。但是這個奇怪的舉措卻使尿布和啤酒的銷量雙雙增加了。這不是一個笑話,而是發生在美國沃爾瑪連鎖店超市的真實案例,並一直為商家所津津樂道。沃爾瑪擁有世界上最大的數據倉庫系統,為了能夠准確了解顧客在其門店的購買習慣,沃爾瑪對其顧客的購物行為進行購物籃分析,想知道顧客經常一起購買的商品有哪些。沃爾瑪數據倉庫里集中了其各門店的詳細原始交易數據。在這些原始交易數據的基礎上,沃爾瑪利用數據挖掘方法對這些數據進行分析和挖掘。一個意外的發現是:跟尿布一起購買最多的商品竟是啤酒!經過大量實際調查和分析,揭示了一個隱藏在尿布與啤酒背後的美國人的一種行為模式:在美國,一些年輕的父親下班後經常要到超市去買嬰兒尿布,而他們中有30%~40%的人同時也為自己買一些啤酒。產生這一現象的原因是:美國的太太們常叮囑她們的丈夫下班後為小孩買尿布,而丈夫們在買尿布後又隨手帶回了他們喜歡的啤酒。
按常規思維,尿布與啤酒風馬牛不相及,若不是藉助數據挖掘技術對大量交易數據進行挖掘分析,沃爾瑪是不可能發現數據內在這一有價值的規律的。
數據關聯是資料庫中存在的一類重要的可被發現的知識。若兩個或多個變數的取值之間存在某種規律性,就稱為關聯。關聯可分為簡單關聯、時序關聯、因果關聯。關聯分析的目的是找出資料庫中隱藏的關聯網。有時並不知道資料庫中數據的關聯函數,即使知道也是不確定的,因此關聯分析生成的規則帶有可信度。關聯規則挖掘發現大量數據中項集之間有趣的關聯或相關聯系。Agrawal等於1993年首先提出了挖掘顧客交易資料庫中項集間的關聯規則問題,以後諸多的研究人員對關聯規則的挖掘問題進行了大量的研究。他們的工作包括對原有的演算法進行優化,如引入隨機采樣、並行的思想等,以提高演算法挖掘規則的效率;對關聯規則的應用進行推廣。關聯規則挖掘在數據挖掘中是一個重要的課題,最近幾年已被業界所廣泛研究。
『捌』 關聯分析的關聯分析的方法
Apriori演算法是挖掘產生布爾關聯規則所需頻繁項集的基本演算法,也是最著名的關聯規則挖掘演算法之一。Apriori演算法就是根據有關頻繁項集特性的先驗知識而命名的。它使用一種稱作逐層搜索的迭代方法,k—項集用於探索(k+1)—項集。首先,找出頻繁1—項集的集合.記做L1,L1用於找出頻繁2—項集的集合L2,再用於找出L3,如此下去,直到不能找到頻繁k—項集。找每個Lk需要掃描一次資料庫。
為提高按層次搜索並產生相應頻繁項集的處理效率,Apriori演算法利用了一個重要性質,並應用Apriori性質來幫助有效縮小頻繁項集的搜索空間。
Apriori性質:一個頻繁項集的任一子集也應該是頻繁項集。證明根據定義,若一個項集I不滿足最小支持度閾值min_sup,則I不是頻繁的,即P(I)<min_sup。若增加一個項A到項集I中,則結果新項集(I∪A)也不是頻繁的,在整個事務資料庫中所出現的次數也不可能多於原項集I出現的次數,因此P(I∪A)<min_sup,即(I∪A)也不是頻繁的。這樣就可以根據逆反公理很容易地確定Apriori性質成立。
針對Apriori演算法的不足,對其進行優化:
1)基於劃分的方法。該演算法先把資料庫從邏輯上分成幾個互不相交的塊,每次單獨考慮一個分塊並對它生成所有的頻繁項集,然後把產生的頻繁項集合並,用來生成所有可能的頻繁項集,最後計算這些項集的支持度。這里分塊的大小選擇要使得每個分塊可以被放入主存,每個階段只需被掃描一次。而演算法的正確性是由每一個可能的頻繁項集至少在某一個分塊中是頻繁項集保證的。
上面所討論的演算法是可以高度並行的。可以把每一分塊分別分配給某一個處理器生成頻繁項集。產生頻繁項集的每一個循環結束後.處理器之間進行通信來產生全局的候選是一項集。通常這里的通信過程是演算法執行時間的主要瓶頸。而另一方面,每個獨立的處理器生成頻繁項集的時間也是一個瓶頸。其他的方法還有在多處理器之間共享一個雜湊樹來產生頻繁項集,更多關於生成頻繁項集的並行化方法可以在其中找到。
2)基於Hash的方法。Park等人提出了一個高效地產生頻繁項集的基於雜湊(Hash)的演算法。通過實驗可以發現,尋找頻繁項集的主要計算是在生成頻繁2—項集Lk上,Park等就是利用這個性質引入雜湊技術來改進產生頻繁2—項集的方法。
3)基於采樣的方法。基於前一遍掃描得到的信息,對它詳細地做組合分析,可以得到一個改進的演算法,其基本思想是:先使用從資料庫中抽取出來的采樣得到一些在整個資料庫中可能成立的規則,然後對資料庫的剩餘部分驗證這個結果。這個演算法相當簡單並顯著地減少了FO代價,但是一個很大的缺點就是產生的結果不精確,即存在所謂的數據扭曲(Dataskew)。分布在同一頁面上的數據時常是高度相關的,不能表示整個資料庫中模式的分布,由此而導致的是采樣5%的交易數據所花費的代價同掃描一遍資料庫相近。
4)減少交易個數。減少用於未來掃描事務集的大小,基本原理就是當一個事務不包含長度為志的大項集時,則必然不包含長度為走k+1的大項集。從而可以將這些事務刪除,在下一遍掃描中就可以減少要進行掃描的事務集的個數。這就是AprioriTid的基本思想。 由於Apriori方法的固有缺陷.即使進行了優化,其效率也仍然不能令人滿意。2000年,Han Jiawei等人提出了基於頻繁模式樹(Frequent Pattern Tree,簡稱為FP-tree)的發現頻繁模式的演算法FP-growth。在FP-growth演算法中,通過兩次掃描事務資料庫,把每個事務所包含的頻繁項目按其支持度降序壓縮存儲到FP—tree中。在以後發現頻繁模式的過程中,不需要再掃描事務資料庫,而僅在FP-Tree中進行查找即可,並通過遞歸調用FP-growth的方法來直接產生頻繁模式,因此在整個發現過程中也不需產生候選模式。該演算法克服了Apriori演算法中存在的問顥.在執行效率上也明顯好於Apriori演算法。