
????? 什么叫數據挖掘(Data Mining)?關于定義,各人的說法不一。基本上我們可以用一個例子講清楚:先給你一個大的數據集──假設你可以從中讀取數據,下面的問題是:從這里你可以得到什么?從某種角度來看,這是百分之百的統計分析工作,只是數據集太多的緣故罷了。但我們并不想忘記這些數據集是做 IT 的人這么多年來逐漸制造出來的,更何況他們對于如何有效而快速地存儲、選取和管理數據,確是有一套真功夫。在 IT 的骨架上把統計的精髓放進去,這的確是對現在這個信息時代的大挑戰。
時代變了,現在的數據來得既多又快還便宜,多到沒有人有時間去看的程度。這就如同我們的醫療體系。早先的醫生還要望聞問切,在少量的數據中,設法提取、組合出最好的治療方案。現在則是一個名醫,一上午要在門診醫治一百五十個病人以上。他只能憑某種算法、也就是經驗來看病:問一兩個問題,聽一兩個問題,然后開藥。這種對數據的不同的處理方式是數據挖掘和傳統的數據分析的主要區別。
說實在的,我們已經在某些方面具有相當的信息化程度了。你去任何一家醫院看病,哪一個窗口沒放著一臺PC?醫生暗示你可以離開的時候,值班的護士已經在她的 PC 上鍵入了許多你的資料。于是你直接可以去劃價、取藥,連下一次的預約也有人安排好了。前天,我去醫院借了一張X光片,一位五十多歲的老職員用“一陽指”在鍵盤上一步一個“腳印”地敲了不知多久,才輸入了該有的個人信息,然后大家就都松一口似地讓計算機去跑,最后當然是拿到X光片。這時回顧身后,已排了一條長龍。
這種情況,也暗示著目前信息社會的一類尷尬問題:很多事情都還配不上如此快的計算機—老職員的手指速度固然配不上,我們做統計的人和現有的某些統計方法也配不上,甚至于很多統計觀念恐怕也都配不上。于是 IT 的人就跳進來做了個項目:既然有了花大錢做出來的數據庫,而且這么多年下來數據堆得滿坑滿谷,好歹要告訴出錢的老板“這有什么用”。于是,DM便應運而生了。
如何看待數據挖掘
數據挖掘是先有了數據才興起的行業。我不想說“學問”,因為到現在為止,我好像都看不到大學問。數據挖掘能幫我做什么?不同的人有不同的看法,比較樂觀的是Berry and Linoff (1997) 的說法:分析報告給你后見之明 (hindsight);統計分析給你先機 (forESight);數據挖掘給你洞察力 (insight)。
這話說得太強,我不是那么地相信。因為這三者都是在既有的數據上做分析,在概念上應該并無本質區別,差別只是手上的數據集的大小和性質,因此,由方法的不同才有定義的不同。
較負面的理解來自Friedman (1997),他說:“Data mining is a commercial enterprise that seeks to mine the miners。(數據挖掘就是商業企業竭力去尋找挖掘者的過程。)”這句話有多少真實的成分,我并不清楚,但是酸味還是有一點的。在雅虎上鍵入“Data Mining”,立刻便找到一百五十多個網址。如果用GOOgle 搜尋,它在0.34秒內就找到1,260,000項查詢結果。這是在方法論都還沒有成熟之前便已有大量商品充斥的情形。看起來真是商機無限。在另一方面,我卻在文獻上讀到:“…… while I apprECiate the importance of data mining, in practice the profit it brings hAS turned out to be surprisingly limited in many key businesses.(雖然我認可數據挖掘重要性,事實上,在很多關鍵的業務中,它所帶來的利潤已證明出奇有限。” (Kann 2000)
多半的數據庫在建造時都另有目的,并不是設計來給大家挖掘的。上帝給我們大海,也許只是想給我們鹽。現在鹽的利潤有限,大家就拼命去提煉鈾,結果自然就不會十分理想。
我認為,比較中肯的是 Hand et al. (2000) 的說法:“Data mining is the process of seeking intereSTing or valuable infORMation in large data bases.(數據挖掘是一種在大型數據庫中尋找你感興趣或是有價值信息的過程。)”
挖掘需要“用心看”
DEMming (1943) 曾說過:“搜集數據的目的是為了行動。”這是在數據的搜集并不便宜的時候所說的話。現在要反過來看:已經有了一大堆數據,當初只是為了搜集而搜集──因為反正不貴,而且說不定某一天會有用─現在我們應該問,這些數據可以提供怎樣的信息,能讓數據的所有者采取何種有效的行動?我的意思是我們需要用心地去看這些數據。“用心看”有兩個角度:整體和局部。
從整體看: 模型
從整體的角度來看一個數據集,是靠統計學里面的抽樣方法就可以發揮得不錯的。抽樣的要點是細化──用一組較小的、容易處理的精選的數據來反映整體。在這里我們可以做一大堆傳統的建模工作,但這里面最主要的觀念是抽樣。
例如 SAS 的Enterprise Miner軟件中所構建出來的“表格”,就是全部數據的抽樣所得。從抽樣的觀點來看,數據量再多也不是問題──它反而可使抽樣理論更加簡單。在數據庫上抽樣,成本低,且沒有我們最頭痛的non-response(無反應)問題。這一部分,可以說是所有我們想做的理論和方法都十分成熟, 只要找一群還不錯的人,將這些已知的事物組合包裝就好。在表格上做傳統分析,最后的結果當然是一個可以用來描繪所有數據之間的關系的模型。
從局部看: 模式發現
從局部的角度來看數據挖掘,到目前為止,主要的目的是模式發現。這和我們常聽到的模式識別頗有不同。用雷達找飛機的工作,算是后者──我們知道飛機是我們要找的對象。但是在數據挖掘中,我們在通常情況下并不知道我們要找的東西是什么。在技術上,這也不能通過抽樣的方法來做。模式是數據的局部結構,在這一部分,數據挖掘強調的方法是算法。數據一多,光憑人力是不能完全解決問題的,我們只有靠明確的指令讓計算機一個一個幫我們找。那么在這里,我們就完全用不上統計方法嗎?也不盡然。在提取訓練樣本(trAIning sAMple)的時候,我們是可以把實驗設計的想法放進去的。
編者按: 數據挖掘應建立在聯機分析處理(On Line Analytical Processing,OLAP)的數據環境基礎之上,而數據倉庫技術能夠滿足數據挖掘技術對數據環境的要求。它從OLTP系統、異構分散的外部數據源、脫機的歷史業務數據中獲取數據并進行處理。
當今數據容量規模已經達到萬億字節(TB)的水平。過量的數據被人們稱為信息爆炸,帶來的挑戰是:一方面規模龐大、紛繁復雜的數據體系讓使用者漫無頭緒、無從下手;另一方面在這些大量數據的背后卻隱藏著很多具有決策意義的有價值的信息。那么,如何發現這些有用的知識,使之為管理決策和經營戰略發展服務?計算機科學給出的最新回答是:數據挖掘(Data Mining)。
一般說來,數據挖掘是一個利用各種分析方法和分析工具在大規模海量數據中建立模型和發現數據間關系的過程,這些模型和關系可以用來做出決策和預測。支持大規模數據分析的方法和過程,選擇或者建立一種適合數據挖掘應用的數據環境是數據挖掘研究的重要課題之一。
建立適合的數據環境
數據挖掘應建立在聯機分析處理(On Line Analytical Processing,OLAP)的數據環境基礎之上。數據挖掘對大量數據的探索式分析的起點是OLAP。數據挖掘需要對大量數據進行反復查詢操作,關心數據存取方式的方便性與可操作性。
聯機分析處理和傳統的聯機事務處理(On Line Transaction Processing, OLTP)是兩種性質不同的數據處理方式。OLTP主要用來完成基礎業務數據的增、刪、改等操作,如民航訂票系統、銀行儲蓄系統等等,對響應時間要求比較高,強調的是密集數據更新處理的性能和系統的可靠性及效率。而OLAP應用是對用戶當前及歷史數據進行分析、輔助領導決策,主要通過多維數據的查詢、旋轉、鉆取和切片等關鍵技術對數據進行分析和報表。
目前,多數企業內部的數據狀況是分散的,業務數據往往被存放在缺乏統一設計和管理的異構環境中,不易綜合查詢訪問,而且還有大量的歷史數據處于脫機狀態,不能在線集中存儲查詢。數據挖掘在對這些數據進行分析前,必須對這些數據進行不同程度的整合和清理,這是數據挖掘的首要環節,但一般的OLTP系統的數據環境是不具備這種能力的。
因此,合理而科學的數據環境是確保數據挖掘有效和正確實施的基礎和關鍵。它需要支持OLAP數據系統與OLTP數據系統的分離,需要服務于數據挖掘總體目標的數據再組織,需要有單獨的數據分析和數據處理環境。數據倉庫正是為了構建這種新的分析處理環境而出現的一種數據存儲和組織技術產品。
數據倉庫技術的引入
數據倉庫技術能夠滿足數據挖掘技術對數據環境的要求。實際上,數據倉庫技術所要研究和解決的問題就是從OLTP系統、異構分散的外部數據源、脫機的歷史業務數據中獲取數據,處理后為數據分析和管理決策提供應用服務。
公認的數據倉庫概念是W.H.Inmon在《建立數據倉庫》一書中提出的:數據倉庫就是面向主題的、集成的、不可更新的(穩定性)隨時間不斷變化(不同時間)的數據集合,用以支持經營管理中的決策制定過程。
數據倉庫中的數據是面向主題的,它與傳統數據庫中的面向應用相對應。數據倉庫的主題是一個在較高層次上將數據歸類的標準,每一個主題對應一個宏觀的分析領域;數據倉庫的集成特性是指在數據進入數據倉庫之前,必須經過數據加工和集成,這是建立數據倉庫的關鍵步驟。它能夠統一原始數據中的矛盾之處,還能夠將原始數據結構從面向應用向面向主題轉變;數據倉庫的穩定性是指數據倉庫反映的是歷史數據的內容,而不是日常事務處理產生的數據,數據經加工和集成進入數據倉庫后是極少或根本不修改的;數據倉庫是不同時間的數據集合,它要求數據倉庫中的數據保存時限能滿足進行決策分析的需要,而且數據倉庫中的數據都要標明該數據的時間屬性。
需要指出的是,數據倉庫中的數據并不是最新的、專有的,而是來源于其它數據庫的。數據倉庫的建立并不是要取代數據庫,它要建立在一個較全面和完善的信息應用的基礎上,用于支持高層決策分析,而原有的事務處理數據庫在總體數據環境中承擔的是日常基礎業務的處理任務。數據倉庫是數據庫技術的一種新的應用,而且到目前為止,數據倉庫大部分還是用關系數據庫管理系統來管理其中的數據。
與關系數據庫不同的是,數據倉庫至今并沒有嚴格的數學理論基礎,它更偏向于工程。由于數據倉庫的這種工程特性,因而在技術上可以根據它的工作過程分為:數據的抽取、數據的存儲和管理、數據的展現等關鍵技術。
◆ 數據的抽取
數據的抽取是數據進入倉庫的入口。由于數據倉庫是一個獨立的數據環境,它需要通過抽取過程將數據從聯機事務處理系統、外部數據源、脫機的數據存儲介質中導入數據倉庫。數據抽取在技術上主要涉及互連、復制、增量、轉換、調度和監控等幾個方面的處理。在數據抽取方面,未來的技術發展將集中在系統功能集成化方面,以適應數據倉庫本身或數據源的變化,使系統更便于管理和維護。
◆ 數據的存儲和管理
數據倉庫的組織管理方式決定了它有別于傳統數據庫的特性,也決定了其對外部數據的表現形式。數據倉庫管理所涉及的數據量比傳統事務處理大得多,且隨時間的推移而快速累積。在數據倉庫的數據存儲和管理中需要解決的是如何管理大量的數據、如何并行處理大量的數據、如何優化查詢等。目前,許多數據庫廠家提供的技術解決方案是擴展關系型數據庫的功能,將普通關系數據庫改造成適合擔當數據倉庫的服務器。
◆數據的展現
在數據展現方面主要的方式有:
查詢:實現預定義查詢、動態查詢、OLAP查詢與決策支持智能查詢;報表:產生關系數據表格、復雜表格、OLAP表格、報告以及各種綜合報表;可視化:用易于理解的點線圖、直方圖、餅圖、網狀圖、交互式可視化、動態模擬、計算機動畫技術表現復雜數據及其相互關系;統計:進行平均值、最大值、最小值、期望、方差、匯總、排序等各種統計分析;挖掘:利用數據挖掘等方法,從數據中得到關于數據關系和模式的知識。
數據挖掘與數據倉庫融合發展
數據挖掘和數據倉庫的協同工作,一方面,可以迎合和簡化數據挖掘過程中的重要步驟,提高數據挖掘的效率和能力,確保數據挖掘中數據來源的廣泛性和完整性。另一方面,數據挖掘技術已經成為數據倉庫應用中極為重要和相對獨立的方面和工具。
數據挖掘和數據倉庫是融合與互動發展的,其學術研究價值和應用研究前景將是令人振奮的。它是數據挖掘專家、數據倉庫技術人員和行業專家共同努力的成果,更是廣大渴望從數據庫“奴隸”到數據庫“主人”轉變的企業最終用戶的通途。