資料探勘和知識發現的技術、方法及應用

bidwhome發表於2007-05-08

-

[@more@]

資料探勘和知識發現的技術、方法及應用

一幅凝固的油畫

全部文章參考http://blog.csdn.net/ruixj/archive/2006/03/19/629161.aspx

Keywords:

data miningKnowledge discovery in databasesDMKDDCRISPDMInternet

概念

基於Internet的全球資訊系統的發展使我們擁有了前所未有的豐富資料。大量資訊在給人們帶來方便的同時也帶來了一大堆問題:第一是資訊過量,難以消化;第二是資訊真假難以辨識;第三是資訊保安難以保證;第四是資訊形式不一致,難以統一處理。資料豐富、知識貧乏已經成為一個典型問題。Data Mining資料探勘)的目的就是有效地從海量資料中提取出需要的答案,實現“資料-〉資訊-〉知識-〉價值”的轉變過程。

Data Mining資料探勘)是指用非平凡的方法從海量的資料中抽取出潛在的、有價值的知識(模型或規則)的過程。該術語還有其他一些同義詞:資料庫中的知識發現Knowledge discovery in databases)、資訊抽取(Information extraction)、資訊發現(Information discovery)、智慧資料分析(Intelligent data analysis)、探索式資料分析(exploratory data analysis)、資訊收穫(information harvesting)、資料考古(data archeology)等。

資料探勘的發展歷程大致如下:

1989 IJCAI會議: 資料庫中的知識發現討論專題

–Knowledge Discovery in Databases (G. Piatetsky-Shapiro and W. Frawley, 1991)

•1991-1994 KDD討論專題

–Advances in Knowledge Discovery and Data Mining (U. Fayyad, G. Piatetsky-Shapiro, P. Smyth, and R. Uthurusamy, 1996)

•1995-1998 KDD國際會議 (KDD’95-98)

–Journal of Data Mining and Knowledge Discovery (1997)

•1998 ACM SIGKDD, SIGKDD’1999-2002 會議,以及SIGKDD Explorations

資料探勘方面更多的國際會議

–PAKDD, PKDD, SIAM-Data Mining, (IEEE) ICDM, DaWaK, SPIE-DM, etc.

Data Mining資料探勘是資料庫研究、開發和應用最活躍的一個分支,是多學科的交叉領域,它涉及資料庫技術、人工智慧、機器學習、神經網路、數學、統計學、模式識別、知識庫系統、知識獲取、資訊提取、高效能運算、平行計算、資料視覺化等多方面知識。

資料探勘技術從一開始就是面向應用的,它不僅是面向特定資料庫的簡單檢索查詢呼叫,而且要對這些資料進行微觀、中觀乃至宏觀的統計、分析、綜合和推理,以指導實際問題的求解,企圖發現事件間的相互關聯,甚至利用已有的資料對未來的活動進行預測。例如加拿大BC省電話公司要求加拿大SimonFraser大學KDD研究組,根據其擁有十多年的客戶資料,總結、分析並提出新的電話收費和管理辦法,制定既有利於公司又有利於客戶的優惠政策。這樣一來,就把人們對資料的應用,從低層次的末端查詢操作,提高到為各級經營決策者提供決策支援。這種需求驅動力,比資料庫查詢更為強大。同時,這裡所說的資料探勘,不是要求發現放之四海而皆準的真理,也不是要去發現嶄新的自然科學定理和純數學公式,更不是什麼機器定理證明。所有發現的知識都是相對的,是有特定前提和約束條件、面向特定領域的,同時還要能夠易於被使用者理解,最好能用自然語言表達發現結果。因此資料探勘的研究成果是很講求實際的。

技術

Data Mining資料探勘)主要任務有資料彙總、概念描述、分類、聚類、相關性分析、偏差分析、建模等。具體技術包括:

統計分析(statistical analysis

常見的統計方法有迴歸分析(多元迴歸、自迴歸等)、判別分析(貝葉斯分析、費歇爾判別、非引數判別等)、聚類分析(系統聚類、動態聚類等)和探索性分析(主元分析法、相關分析法等)。其處理過程可以分為三個階段:蒐集資料、分析資料和進行推理。

決策樹(decision tree

決策樹是一棵樹,樹的根節點是整個資料集合空間,每個分節點是對一個單一變數的測試,該測試將資料集合空間分割成兩個或更多塊。每個葉節點是屬於單一類別的記錄。首先,透過訓練集生成決策樹,再透過測試集對決策樹進行修剪。決策樹的功能是預言一個新的記錄屬於哪一類。

決策樹分為分類樹和迴歸樹兩種,分類樹對離散變數做決策樹,迴歸樹對連續變數做決策樹。

透過遞迴分割的過程來構建決策樹:1 尋找初始分裂,整個訓練集作為產生決策樹的集合,訓練集每個記錄必須是已經分好類的。決定哪個屬性(Field)域作為目前最好的分類指標。一般的做法是窮盡所有的屬性域,對每個屬性域分裂的好壞做出量化,計算出最好的一個分裂。量化的標準是計算每個分裂的多樣性(diversity)指標GINI指標。2 樹增長到一棵完整的樹,重複第一步,直至每個葉節點內的記錄都屬於同一類。3 資料的修剪,去掉一些可能是噪音或者異常的資料。

基本演算法(貪心演算法)為:自上而下分而治之的方法,開始時,所有的資料都在根節點;屬性都是種類欄位 (如果是連續的,將其離散化);所有記錄用所選屬性遞迴的進行分割;屬性的選擇是基於一個啟發式規則或者一個統計的度量 (, information gain)。停止分割的條件:一個節點上的資料都是屬於同一個類別;沒有屬性可以再用於對資料進行分割。

虛擬碼(Building Tree)為:

Procedure BuildTree(S){

用資料集S初始化根節點R

用根結點R初始化佇列Q

While Q is not Empty do {

取出佇列Q中的第一個節點N

if N 不純 (Pure) {

for 每一個屬性 A

估計該節點在A上的資訊增益

選出最佳的屬性,將N分裂為N1N2

}

}

}

屬性選擇的統計度量為:資訊增益——Information gain (ID3/C4.5),所有屬性假設都是種類欄位,經過修改之後可以適用於數值欄位;基尼指數——Gini index (IBM IntelligentMiner),能夠適用於種類和數值欄位。

關聯規則(correlation rules

規則反映了資料項中某些屬性或資料集中某些資料項之間的統計相關性,其一般形式為: X1Xn Y[C,S],表示由X1Xn可以預測Y,其中可信度為C,支援度為S

I={i1, i2,…, im}是二進位制文字的集合,其中的元素稱為項(item)。記D為交易(transaction)T的集合,這裡交易T是項的集合,並且TÍI 。對應每一個交易有唯一的標識,如交易號,記作TID。設X是一個I中項的集合,如果XÍT,那麼稱交易T包含X

一個關聯規則是形如XÞY的蘊涵式,這裡XÌI, YÌI,並且XÇY=F。規則XÞY在交易資料庫D中的支援度support)是交易集中包含XY的交易數與所有交易數之比,記為support(XÞY),即

support(XÞY)=|{T:XÈYÍTTÎD}|/|D|

規則XÞY在交易集中的可信度confidence)是指包含XY的交易數與包含X的交易數之比,記為confidence(XÞY),即

confidence(XÞY)=|{T: XÈYÍTTÎD}|/|{T:XÍTTÎD}|

給定一個交易集D,挖掘關聯規則問題就是產生支援度和可信度分別大於使用者給定的最小支援度(minsupp)和最小可信度(minconf)的關聯規則。

基於規則中處理的變數的類別,關聯規則可以分為布林型和數值型。布林型關聯規則處理的值都是離散的、種類化的,它顯示了這些變數之間的關係;而數值型關聯規則可以和多維關聯或多層關聯規則結合起來,對數值型欄位進行處理,將其進行動態的分割,或者直接對原始的資料進行處理,當然數值型關聯規則中也可以包含種類變數。基於規則中資料的抽象層次,可以分為單層關聯規則和多層關聯規則。在單層的關聯規則中,所有的變數都沒有考慮到現實的資料是具有多個不同的層次的;而在多層的關聯規則中,對資料的多層性已經進行了充分的考慮。基於規則中涉及到的資料的維數,關聯規則可以分為單維的和多維的。在單維的關聯規則中,我們只涉及到資料的一個維,如使用者購買的物品;而在多維的關聯規則中,要處理的資料將會涉及多個維。

Agrawal等於1993年首先提出了挖掘顧客交易資料庫中項集間的關聯規則問題,其核心方法是基於頻集理論的遞推方法。以後諸多的研究人員對關聯規則的挖掘問題進行了大量的研究。他們的工作包括對原有的演算法進行最佳化,如引入隨機取樣、並行的思想等,以提高演算法挖掘規則的效率;提出各種變體,如泛化的關聯規則、週期關聯規則等,對關聯規則的應用進行推廣。

Agrawal等在1993年設計了一個基本演算法,提出了挖掘關聯規則的一個重要方法 — 這是一個基於兩階段頻集思想的方法,將關聯規則挖掘演算法的設計可以分解為兩個子問題:

1) 找到所有支援度大於最小支援度的項集(Itemset),這些項集稱為頻集(Frequent Itemset)。

2) 使用第1步找到的頻集產生期望的規則。

這裡的第2步相對簡單一點。如給定了一個頻集Y=I1I2...Ikk³2IjI,產生只包含集合{I1I2...Ik}中的項的所有規則(最多k),其中每一條規則的右部只有一項,(即形如[Y-Ii]ÞIi"1£i£k)。一旦這些規則被生成,那麼只有那些大於使用者給定的最小可信度的規則才被留下來。對於規則右部含兩個以上項的規則,在其以後的工作中進行了研究。為了生成所有頻集,使用了遞推的方法。其核心思想如下:

L1 = {large 1-itemsets};

for (k=2; Lk-1¹F; k++)

{

Ck=apriori-gen(Lk-1); //新的候選集

for all transactions tÎD

{

Ct=subset(Ck,t); //事務t中包含的候選集

for( all candidates cÎ Ct )

c.count++;

}

Lk={cÎ Ck |c.count³minsup}

}

Answer=ÈkLk;

首先產生頻繁1-項集L1,然後是頻繁2-項集L2,直到有某個r值使得Lr為空,這時演算法停止。這裡在第k次迴圈中,過程先產生候選k-項集的集合CkCk中的每一個項集是對兩個只有一個項不同的屬於Lk-1的頻集做一個(k-2)-連線來產生的。Ck中的項集是用來產生頻集的候選集,最後的頻集Lk必須是Ck的一個子集。Ck中的每個元素需在交易資料庫中進行驗證來決定其是否加入Lk,這裡的驗證過程是演算法效能的一個瓶頸。這個方法要求多次掃描可能很大的交易資料庫,即如果頻集最多包含10個項,那麼就需要掃描交易資料庫10遍,這需要很大的I/O負載。

Agrawal等引入了修剪技術(Pruning)來減小候選集Ck的大小,由此可以顯著地改進生成所有頻集演算法的效能。演算法中引入的修剪策略基於這樣一個性質:一個項集是頻集當且僅當它的所有子集都是頻集。那麼,如果Ck中某個候選項集有一個(k-1)-子集不屬於Lk-1,則這個項集可以被修剪掉不再被考慮,這個修剪過程可以降低計算所有的候選集的支援度的代價。

基於Apriori的頻集方法即使進行了最佳化,但是Apriori方法一些固有的缺陷還是無法克服:1) 可能產生大量的候選集。當長度為1的頻集有10000個的時候,長度為2的候選集個數將會超過10M。還有就是如果要生成一個很長的規則的時候,要產生的中間元素也是巨大量的。2) 無法對稀有資訊進行分析。由於頻集使用了引數minsup,所以就無法對小於minsup的事件進行分析;而如果將minsup設成一個很低的值,那麼演算法的效率就成了一個很難處理的問題。以下兩種方法,分別用於解決以上兩個問題。

解決問題1的一種方法採用了一種FP-growth的方法。他們採用了分而治之的策略:在經過了第一次的掃描之後,把資料庫中的頻集壓縮排一棵頻繁模式樹(FP-tree),同時依然保留其中的關聯資訊。隨後我們再將FP-tree分化成一些條件庫,每個庫和一個長度為1的頻集相關。然後再對這些條件庫分別進行挖掘。當原始資料量很大的時候,也可以結合劃分的方法,使得一個FP-tree可以放入主存中。實驗表明,FP-growth對不同長度的規則都有很好的適應性,同時在效率上較之Apriori演算法有巨大的提高。

第二個問題是基於這個的一個想法:apriori演算法得出的關係都是頻繁出現的,但是在實際的應用中,我們可能需要尋找一些高度相關的元素,即使這些元素不是頻繁出現的。在apriori演算法中,起決定作用的是支援度,而我們現在將把可信度放在第一位,挖掘一些具有非常高可信度的規則。對於這個問題的一個解決方法的整個演算法基本上分成三個步驟:計算特徵、生成候選集、過濾候選集。在三個步驟中,關鍵的地方就是在計算特徵時Hash方法的使用。在考慮方法的時候,有幾個衡量好壞的指數:時空效率、錯誤率和遺漏率。基本的方法有兩類:Min_Hashing(MH)Locality_Sensitive_Hashing(LSH)Min_Hashing的基本想法是:將一條記錄中的頭k個為1的欄位的位置作為一個Hash函式。Locality_Sentitive_Hashing的基本想法是:將整個資料庫用一種基於機率的方法進行分類,使得相似的列在一起的可能性更大,不相似的列在一起的可能性較小。對這兩個方法比較一下發現,MH的遺漏率為零,錯誤率可以由k嚴格控制,但是時空效率相對的較差。LSH的遺漏率和錯誤率是無法同時降低的,但是它的時空效率卻相對的好很多。所以應該視具體的情況而定。最後的實驗資料也說明這種方法的確能產生一些有用的規則。

基於範例的推理(case-based reasoning

範例推理是直接使用過去的經驗或解法來求解給定的問題。範例通常是一種已經遇到過並且有解法的具體問題。當給定一個特定問題時,範例推理就檢索範例庫,尋找相似的範例。如果存在相似的範例,其解法就可以用來求解新問題。而且該新問題被加入進範例庫,已備將來搜尋使用。

模糊集(fuzzy set

模糊集是表示和處理不確定性資料的重要方法,它不僅可以處理不完全資料、噪聲或不精確資料,還可以用於開發資料的不確定性模型,能夠提供比傳統方法更靈巧、更平滑的效能。

粗糙集(rough set

粗糙集是相對較新的一種數學工具,用於處理含糊性和不確定性,在資料探勘中可以發揮重要作用。粗糙集是由集合的下近似、上近似來定義的。下近似中的每一個成員都是該集合的確定成員,而不是上近似中的成員則肯定不是該集合的成員。粗糙集的上近似是下近似和邊界區的並。邊界區的成員可能是該集合的成員,但不是確定的成員。可以認為粗糙集是具有三值隸屬函式的模糊集,它常與關聯規則、分類和聚類方法結合使用,一般不單用。

貝葉斯信念網路(Bayesian belief network

貝葉斯信念網路是機率分佈的圖表示,它是一種有向無環圖,結點表示屬性變數,邊表示屬性變數之間的機率依賴關係。和每個結點相關的是條件機率分佈,用於描述該結點和其父結點之間的關係。

定義1:給定一個隨機變數集 ={},其中是一個多維向量。貝葉斯信念網路了說明上的一條聯合條件機率分佈。貝葉斯信念網路定義如下:

第一部分是一個有向無環圖,其頂點對應於有限集

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7600305/viewspace-914000/,如需轉載,請註明出處,否則將追究法律責任。

相關文章