1. 程式人生 > >資料探勘技術的來源 歷史 研究內容及常用技術

資料探勘技術的來源 歷史 研究內容及常用技術

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                 

資料探勘技術的來源、歷史、研究內容及常用技術

1 資料探勘技術的由來

1.1網路之後的下一個技術熱點
  我們現在已經生活在一個網路化的時代,通訊、計算機和網路技術正改變著整個人類和社會。如果用晶片整合度來衡量微電子技術,用CPU處理速度來衡量計算機技術,用通道傳輸速率來衡量通訊技術,那麼摩爾定律告訴我們,它們都是以每18個月翻一番的速度在增長,這一勢頭已經維持了十多年。在美國,廣播達到5000萬戶用了38年;電視用了13年;Internet撥號上網達到5000萬戶僅用了4年。全球IP網發展速度達到每6個月翻一番,國內情況亦然。1999年初,中國上網使用者為210萬,現在已經達到600萬。網路的發展導致經濟全球化,在1998年全球產值排序前100名中,跨國企業佔了51個,國家只佔49個。有人提出,對待一個跨國企業也許比對待一個國家還要重要。在新世紀鐘聲剛剛敲響的時候,回顧往昔,人們不僅要問:就推動人類社會進步而言,歷史上能與網路技術相比擬的是什麼技術呢?有人甚至提出要把網路技術與火的發明相比擬。火的發明區別了動物和人,種種科學技術的重大發現擴充套件了自然人的體能、技能和智慧,而網路技術則大大提高了人的生存質量和人的素質,使人成為社會人、全球人。
  現在的問題是:網路之後的下一個技術熱點是什麼?讓我們來看一些身邊俯拾即是的現象:《紐約時報》由60年代的10~20版擴張至現在的100~200版,最高曾達1572版;《北京青年報》也已是16~40版;市場營銷報已達100版。然而在現實社會中,人均日閱讀時間通常為30~45分鐘,只能瀏覽一份24版的報紙。大量資訊在給人們帶來方便的同時也帶來了一大堆問題:第一是資訊過量,難以消化;第二是資訊真假難以辨識;第三是資訊保安難以保證;第四是資訊形式不一致,難以統一處理。人們開始提出一個新的口號:“要學會拋棄資訊”。人們開始考慮:“如何才能不被資訊淹沒,而是從中及時發現有用的知識、提高資訊利用率?”
  面對這一挑戰,資料開採和知識發現(DMKD)技術應運而生,並顯示出強大的生命力。
  1.2 資料爆炸但知識貧乏


  另一方面,隨著資料庫技術的迅速發展以及資料庫管理系統的廣泛應用,人們積累的資料越來越多。激增的資料背後隱藏著許多重要的資訊,人們希望能夠對其進行更高層次的分析,以便更好地利用這些資料。目前的資料庫系統可以高效地實現資料的錄入、查詢、統計等功能,但無法發現數據中存在的關係和規則,無法根據現有的資料預測未來的發展趨勢。缺乏挖掘資料背後隱藏的知識的手段,導致了“資料爆炸但知識貧乏”的現象。
  1.3 支援資料探勘技術的基礎
  資料探勘技術是人們長期對資料庫技術進行研究和開發的結果。起初各種商業資料是儲存在計算機的資料庫中的,然後發展到可對資料庫進行查詢和訪問,進而發展到對資料庫的即時遍歷。資料探勘使資料庫技術進入了一個更高階的階段,它不僅能對過去的資料進行查詢和遍歷,並且能夠找出過去資料之間的潛在聯絡,從而促進資訊的傳遞。現在資料探勘技術在商業應用中已經可以馬上投入使用,因為對這種技術進行支援的三種基礎技術已經發展成熟,他們是:
- - 海量資料蒐集
- - 強大的多處理器計算機
- - 資料探勘演算法
Friedman[1997]列舉了四個主要的技術理由激發了資料探勘的開發、應用和研究的興趣:
- - 超大規模資料庫的出現,例如商業資料倉庫和計算機自動收集的資料記錄;
- - 先進的計算機技術,例如更快和更大的計算能力和並行體系結構;
- - 對巨大量資料的快速訪問;
- - 對這些資料應用精深的統計方法計算的能力。

  商業資料庫現在正在以一個空前的速度增長,並且資料倉庫正在廣泛地應用於各種行業;對計算機硬體效能越來越高的要求,也可以用現在已經成熟的並行多處理機的技術來滿足;另外資料探勘演算法經過了這10多年的發展也已經成為一種成熟,穩定,且易於理解和操作的技術。
  1.4 從商業資料到商業資訊的進化

  從商業資料到商業資訊的進化過程中,每一步前進都是建立在上一步的基礎上的。見下表。表中我們可以看到,第四步進化是革命性的,因為從使用者的角度來看,這一階段的資料庫技術已經可以快速地回答商業上的很多問題了。

進化階段 商業問題 支援技術 產品廠家 產品特點
資料蒐集
(60年代)
“過去五年中我的總收入是多少?” 計算機、磁帶和磁碟 IBM,CDC 提供歷史性的、靜態的資料資訊
資料訪問
(80年代)
“在新英格蘭的分部去年三月的銷售額是多少?” 關係資料庫(RDBMS),結構化查詢語言(SQL),ODBC Oracle、Sybase、Informix、IBM、Microsoft Oracle、Sybase、Informix、IBM、Microsoft 在記錄級提供歷史性的、動態資料資訊
資料倉庫;
決策支援
(90年代)
“在新英格蘭的分部去年三月的銷售額是多少?波士頓據此可得出什麼結論?” 聯機分析處理(OLAP)、多維資料庫、資料倉庫 Pilot、Comshare、Arbor、Cognos、Microstrategy 在各種層次上提供回溯的、動態的資料資訊
資料探勘
(正在流行)
“下個月波士頓的銷售會怎麼樣?為什麼?” 高階演算法、多處理器計算機、海量資料庫 Pilot、Lockheed、IBM、SGI、其他初創公司 提供預測性的資訊

表一、資料探勘的進化歷程。

  資料探勘的核心模組技術歷經了數十年的發展,其中包括數理統計、人工智慧、機器學習。今天,這些成熟的技術,加上高效能的關係資料庫引擎以及廣泛的資料整合,讓資料探勘技術在當前的資料倉庫環境中進入了實用的階段。
  1.5 資料探勘逐漸演變的過程
  資料探勘其實是一個逐漸演變的過程,電子資料處理的初期,人們就試圖通過某些方法來實現自動決策支援,當時機器學習成為人們關心的焦點.機器學習的過程就是將一些已知的並已被成功解決的問題作為範例輸入計算機,機器通過學習這些範例總結並生成相應的規則,這些規則具有通用性,使用它們可以解決某一類的問題.隨後,隨著神經網路技術的形成和發展,人們的注意力轉向知識工程,知識工程不同於機器學習那樣給計算機輸入範例,讓它生成出規則,而是直接給計算機輸入已被程式碼化的規則,而計算機是通過使用這些規則來解決某些問題。專家系統就是這種方法所得到的成果,但它有投資大、效果不甚理想等不足。80年代人們又在新的神經網路理論的指導下,重新回到機器學習的方法上,並將其成果應用於處理大型商業資料庫。隨著在80年代末一個新的術語,它就是資料庫中的知識發現,簡稱KDD(Knowledge discovery in database).它泛指所有從源資料中發掘模式或聯絡的方法,人們接受了這個術語,並用KDD來描述整個資料發掘的過程,包括最開始的制定業務目標到最終的結果分析,而用資料探勘(data mining)來描述使用挖掘演算法進行資料探勘的子過程。但最近人們卻逐漸開始使用資料探勘中有許多工作可以由統計方法來完成,並認為最好的策略是將統計方法與資料探勘有機的結合起來。
  資料倉庫技術的發展與資料探勘有著密切的關係。資料倉庫的發展是促進資料探勘越來越熱的原因之一。但是,資料倉庫並不是資料探勘的先決條件,因為有很多資料探勘可直接從操作資料來源中挖掘資訊。


2 資料探勘的定義

2.1 技術上的定義及含義
  資料探勘(Data Mining)就是從大量的、不完全的、有噪聲的、模糊的、隨機的實際應用資料中,提取隱含在其中的、人們事先不知道的、但又是潛在有用的資訊和知識的過程。
與  資料探勘相近的同義詞有資料融合、資料分析和決策支援等。這個定義包括好幾層含義:資料來源必須是真實的、大量的、含噪聲的;發現的是使用者感興趣的知識;發現的知識要可接受、可理解、可運用;並不要求發現放之四海皆準的知識,僅支援特定的發現問題。
  ----何為知識?從廣義上理解,資料、資訊也是知識的表現形式,但是人們更把概念、規則、模式、規律和約束等看作知識。人們把資料看作是形成知識的源泉,好像從礦石中採礦或淘金一樣。原始資料可以是結構化的,如關係資料庫中的資料;也可以是半結構化的,如文字、圖形和影象資料;甚至是分佈在網路上的異構型資料。發現知識的方法可以是數學的,也可以是非數學的;可以是演繹的,也可以是歸納的。發現的知識可以被用於資訊管理,查詢優化,決策支援和過程控制等,還可以用於資料自身的維護。因此,資料探勘是一門交叉學科,它把人們對資料的應用從低層次的簡單查詢,提升到從資料中挖掘知識,提供決策支援。在這種需求牽引下,匯聚了不同領域的研究者,尤其是資料庫技術、人工智慧技術、數理統計、視覺化技術、平行計算等方面的學者和工程技術人員,投身到資料探勘這一新興的研究領域,形成新的技術熱點。
  這裡所說的知識發現,不是要求發現放之四海而皆準的真理,也不是要去發現嶄新的自然科學定理和純數學公式,更不是什麼機器定理證明。實際上,所有發現的知識都是相對的,是有特定前提和約束條件,面向特定領域的,同時還要能夠易於被使用者理解。最好能用自然語言表達所發現的結果。
  2.2 商業角度的定義
  資料探勘是一種新的商業資訊處理技術,其主要特點是對商業資料庫中的大量業務資料進行抽取、轉換、分析和其他模型化處理,從中提取輔助商業決策的關鍵性資料。
  簡而言之,資料探勘其實是一類深層次的資料分析方法。資料分析本身已經有很多年的歷史,只不過在過去資料收集和分析的目的是用於科學研究,另外,由於當時計算能力的限制,對大資料量進行分析的複雜資料分析方法受到很大限制。現在,由於各行業業務自動化的實現,商業領域產生了大量的業務資料,這些資料不再是為了分析的目的而收集的,而是由於純機會的(Opportunistic)商業運作而產生。分析這些資料也不再是單純為了研究的需要,更主要是為商業決策提供真正有價值的資訊,進而獲得利潤。但所有企業面臨的一個共同問題是:企業資料量非常大,而其中真正有價值的資訊卻很少,因此從大量的資料中經過深層分析,獲得有利於商業運作、提高競爭力的資訊,就像從礦石中淘金一樣,資料探勘也因此而得名。
  因此,資料探勘可以描述為:按企業既定業務目標,對大量的企業資料進行探索和分析,揭示隱藏的、未知的或驗證已知的規律性,並進一步將其模型化的先進有效的方法。
  2.3 資料探勘與傳統分析方法的區別
  資料探勘與傳統的資料分析(如查詢、報表、聯機應用分析)的本質區別是資料探勘是在沒有明確假設的前提下去挖掘資訊、發現知識.資料探勘所得到的資訊應具有先未知,有效和可實用三個特徵.
  先前未知的資訊是指該資訊是預先未曾預料到的,既資料探勘是要發現那些不能靠直覺發現的資訊或知識,甚至是違背直覺的資訊或知識,挖掘出的資訊越是出乎意料,就可能越有價值.在商業應用中最典型的例子就是一家連鎖店通過資料探勘發現了小孩尿布和啤酒之間有著驚人的聯絡.
  2.4 資料探勘和資料倉庫
  大部分情況下,資料探勘都要先把資料從資料倉庫中拿到資料探勘庫或資料集市中(見圖1)。從資料倉庫中直接得到進行資料探勘的資料有許多好處。就如我們後面會講到的,資料倉庫的資料清理和資料探勘的資料清理差不多,如果資料在匯入資料倉庫時已經清理過,那很可能在做資料探勘時就沒必要在清理一次了,而且所有的資料不一致的問題都已經被你解決了。

  資料探勘庫可能是你的資料倉庫的一個邏輯上的子集,而不一定非得是物理上單獨的資料庫。但如果你的資料倉庫的計算資源已經很緊張,那你最好還是建立一個單獨的資料探勘庫。
  當然為了資料探勘你也不必非得建立一個數據倉庫,資料倉庫不是必需的。建立一個巨大的資料倉庫,把各個不同源的資料統一在一起,解決所有的資料衝突問題,然後把所有的資料導到一個數據倉庫內,是一項巨大的工程,可能要用幾年的時間花上百萬的錢才能完成。只是為了資料探勘,你可以把一個或幾個事務資料庫導到一個只讀的資料庫中,就把它當作資料集市,然後在他上面進行資料探勘。

  2.5 資料探勘和線上分析處理(OLAP)
  一個經常問的問題是,資料探勘和OLAP到底有何不同。下面將會解釋,他們是完全不同的工具,基於的技術也大相徑庭。
  OLAP是決策支援領域的一部分。傳統的查詢和報表工具是告訴你資料庫中都有什麼(what happened),OLAP則更進一步告訴你下一步會怎麼樣(What next)、和如果我採取這樣的措施又會怎麼樣(What if)。使用者首先建立一個假設,然後用OLAP檢索資料庫來驗證這個假設是否正確。比如,一個分析師想找到什麼原因導致了貸款拖欠,他可能先做一個初始的假定,認為低收入的人信用度也低,然後用OLAP來驗證他這個假設。如果這個假設沒有被證實,他可能去察看那些高負債的賬戶,如果還不行,他也許要把收入和負債一起考慮,一直進行下去,直到找到他想要的結果或放棄。
  也就是說,OLAP分析師是建立一系列的假設,然後通過OLAP來證實或推翻這些假設來最終得到自己的結論。OLAP分析過程在本質上是一個演繹推理的過程。但是如果分析的變數達到幾十或上百個,那麼再用OLAP手動分析驗證這些假設將是一件非常困難和痛苦的事情。
資料探勘與OLAP不同的地方是,資料探勘不是用於驗證某個假定的模式(模型)的正確性,而是在資料庫中自己尋找模型。他在本質上是一個歸納的過程。比如,一個用資料探勘工具的分析師想找到引起貸款拖欠的風險因素。資料探勘工具可能幫他找到高負債和低收入是引起這個問題的因素,甚至還可能發現一些分析師從來沒有想過或試過的其他因素,比如年齡。
  資料探勘和OLAP具有一定的互補性。在利用資料探勘出來的結論採取行動之前,你也許要驗證一下如果採取這樣的行動會給公司帶來什麼樣的影響,那麼OLAP工具能回答你的這些問題。
  而且在知識發現的早期階段,OLAP工具還有其他一些用途。可以幫你探索資料,找到哪些是對一個問題比較重要的變數,發現異常資料和互相影響的變數。這都能幫你更好的理解你的資料,加快知識發現的過程。
  2.6 資料探勘,機器學習和統計
  資料探勘利用了人工智慧(AI)和統計分析的進步所帶來的好處。這兩門學科都致力於模式發現和預測。
  資料探勘不是為了替代傳統的統計分析技術。相反,他是統計分析方法學的延伸和擴充套件。大多數的統計分析技術都基於完善的數學理論和高超的技巧,預測的準確度還是令人滿意的,但對使用者的要求很高。而隨著計算機計算能力的不斷增強,我們有可能利用計算機強大的計算能力只通過相對簡單和固定的方法完成同樣的功能。
  一些新興的技術同樣在知識發現領域取得了很好的效果,如神經元網路和決策樹,在足夠多的資料和計算能力下,他們幾乎不用人的關照自動就能完成許多有價值的功能。
  資料探勘就是利用了統計和人工智慧技術的應用程式,他把這些高深複雜的技術封裝起來,使人們不用自己掌握這些技術也能完成同樣的功能,並且更專注於自己所要解決的問題。
  2.7 軟硬體發展對資料探勘的影響
  使資料探勘這件事情成為可能的關鍵一點是計算機效能價格比的巨大進步。在過去的幾年裡磁碟儲存器的價格幾乎降低了99%,這在很大程度上改變了企業界對資料收集和儲存的態度。如果每兆的價格是¥10,那存放1TB的價格是¥10,000,000,但當每兆的價格降為1毛錢時,儲存同樣的資料只有¥100,000!
  計算機計算能力價格的降低同樣非常顯著。每一代晶片的誕生都會把CPU的計算能力提高一大步。記憶體RAM也同樣降價迅速,幾年之內每兆記憶體的價格由幾百塊錢降到現在只要幾塊錢。通常PC都有64M記憶體,工作站達到了256M,擁有上G記憶體的伺服器已經不是什麼新鮮事了。
  在單個CPU計算能力大幅提升的同時,基於多個CPU的並行系統也取得了很大的進步。目前幾乎所有的伺服器都支援多個CPU,這些SMP伺服器簇甚至能讓成百上千個CPU同時工作。
  基於並行系統的資料庫管理系統也給資料探勘技術的應用帶來了便利。如果你有一個龐大而複雜的資料探勘問題要求通過訪問資料庫取得資料,那麼效率最高的辦法就是利用一個本地的並行資料庫。
  所有這些都為資料探勘的實施掃清了道路,隨著時間的延續,我們相信這條道路會越來越平坦。

3 資料探勘的研究歷史和現狀 

3.1 研究歷史
  從資料庫中發現知識(KDD)一詞首次出現在1989年舉行的第十一屆國際聯合人工智慧學術會議上。到目前為止,由美國人工智慧協會主辦的KDD國際研討會已經召開了8次,規模由原來的專題討論會發展到國際學術大會(見表1),研究重點也逐漸從發現方法轉向系統應用,注重多種發現策略和技術的整合,以及多種學科之間的相互滲透。1999年,亞太地區在北京召開的第三屆PAKDD會議收到158篇論文,空前熱烈。IEEE的Knowledge and Data Engineering會刊率先在1993年出版了KDD技術專刊。平行計算、計算機網路和資訊工程等其他領域的國際學會、學刊也把資料探勘和知識發現列為專題和專刊討論,甚至到了膾炙人口的程度。

  3.2 出版物及工具
  此外,在Internet上還有不少KDD電子出版物,其中以半月刊Knowledge Discovery Nuggets最為權威(http://www.kdnuggets.com/subscribe.html)。在網上還有許多自由論壇,如DM Email Club等。至於DMKD書籍,可以在任意一家計算機書店找到十多本。目前,世界上比較有影響的典型資料探勘系統有:SAS公司的Enterprise Miner、IBM公司的Intelligent Miner、SGI公司的SetMiner、SPSS公司的Clementine、Sybase公司的Warehouse Studio、RuleQuest Research公司的See5、還有CoverStory、EXPLORA、Knowledge Discovery Workbench、DBMiner、Quest等。讀者可以訪問http://www.datamininglab.com.網站,該網站提供了許多資料探勘系統和工具的效能測試報告。
  
3.3 國內現狀
  與國外相比,國內對DMKD的研究稍晚,沒有形成整體力量。1993年國家自然科學基金首次支援我們對該領域的研究專案。目前,國內的許多科研單位和高等院校競相開展知識發現的基礎理論及其應用研究,這些單位包括清華大學、中科院計算技術研究所、空軍第三研究所、海軍裝備論證中心等。其中,北京系統工程研究所對模糊方法在知識發現中的應用進行了較深入的研究,北京大學也在開展對資料立方體代數的研究,華中理工大學、復旦大學、浙江大學、中國科技大學、中科院數學研究所、吉林大學等單位開展了對關聯規則開採演算法的優化和改造;南京大學、四川聯合大學和上海交通大學等單位探討、研究了非結構化資料的知識發現以及Web資料探勘。
  
3.4 國內現狀
  最近,Gartner Group的一次高階技術調查將資料探勘和人工智慧列為“未來三到五年內將對工業產生深遠影響的五大關鍵技術”之首,並且還將並行處理體系和資料探勘列為未來五年內投資焦點的十大新興技術前兩位。根據最近Gartner的HPC研究表明,“隨著資料捕獲、傳輸和儲存技術的快速發展,大型系統使用者將更多地需要採用新技術來挖掘市場以外的價值,採用更為廣闊的並行處理系統來建立新的商業增長點。”


4 資料探勘研究內容和本質

----隨著DMKD研究逐步走向深入,資料探勘和知識發現的研究已經形成了三根強大的技術支柱:資料庫、人工智慧和數理統計。因此,KDD大會程式委員會曾經由這三個學科的權威人物同時來任主席。目前DMKD的主要研究內容包括基礎理論、發現演算法、資料倉庫、視覺化技術、定性定量互換模型、知識表示方法、發現知識的維護和再利用、半結構化和非結構化資料中的知識發現以及網上資料探勘等。
  ----資料探勘所發現的知識最常見的有以下四類:
  4.1 廣義知識(Generalization)
  ----廣義知識指類別特徵的概括性描述知識。根據資料的微觀特性發現其表徵的、帶有普遍性的、較高層次概念的、中觀和巨集觀的知識,反映同類事物共同性質,是對資料的概括、精煉和抽象。
  ----廣義知識的發現方法和實現技術有很多,如資料立方體、面向屬性的歸約等。資料立方體還有其他一些別名,如“多維資料庫”、“實現檢視”、“OLAP"等。該方法的基本思想是實現某些常用的代價較高的聚集函式的計算,諸如計數、求和、平均、最大值等,並將這些實現檢視儲存在多維資料庫中。既然很多聚集函式需經常重複計算,那麼在多維資料立方體中存放預先計算好的結果將能保證快速響應,並可靈活地提供不同角度和不同抽象層次上的資料檢視。另一種廣義知識發現方法是加拿大SimonFraser大學提出的面向屬性的歸約方法。這種方法以類SQL語言表示資料探勘查詢,收集資料庫中的相關資料集,然後在相關資料集上應用一系列資料推廣技術進行資料推廣,包括屬性刪除、概念樹提升、屬性閾值控制、計數及其他聚集函式傳播等。
  4.2 關聯知識(Association)
  ----它反映一個事件和其他事件之間依賴或關聯的知識。如果兩項或多項屬性之間存在關聯,那麼其中一項的屬性值就可以依據其他屬性值進行預測。最為著名的關聯規則發現方法是R.Agrawal提出的Apriori演算法。關聯規則的發現可分為兩步。第一步是迭代識別所有的頻繁專案集,要求頻繁專案集的支援率不低於使用者設定的最低值;第二步是從頻繁專案集中構造可信度不低於使用者設定的最低值的規則。識別或發現所有頻繁專案集是關聯規則發現演算法的核心,也是計算量最大的部分。
  4.3 分類知識(Classification&Clustering)
  ----它反映同類事物共同性質的特徵型知識和不同事物之間的差異型特徵知識。最為典型的分類方法是基於決策樹的分類方法。它是從例項集中構造決策樹,是一種有指導的學習方法。該方法先根據訓練子集(又稱為視窗)形成決策樹。如果該樹不能對所有物件給出正確的分類,那麼選擇一些例外加入到視窗中,重複該過程一直到形成正確的決策集。最終結果是一棵樹,其葉結點是類名,中間結點是帶有分枝的屬性,該分枝對應該屬性的某一可能值。最為典型的決策樹學習系統是ID3,它採用自頂向下不回溯策略,能保證找到一個簡單的樹。演算法C4.5和C5.0都是ID3的擴充套件,它們將分類領域從類別屬性擴充套件到數值型屬性。
  ----資料分類還有統計、粗糙集(RoughSet)等方法。線性迴歸和線性辨別分析是典型的統計模型。為降低決策樹生成代價,人們還提出了一種區間分類器。最近也有人研究使用神經網路方法在資料庫中進行分類和規則提取。
  4.4預測型知識(Prediction)
  ----它根據時間序列型資料,由歷史的和當前的資料去推測未來的資料,也可以認為是以時間為關鍵屬性的關聯知識。
  ----目前,時間序列預測方法有經典的統計方法、神經網路和機器學習等。1968年Box和Jenkins提出了一套比較完善的時間序列建模理論和分析方法,這些經典的數學方法通過建立隨機模型,如自迴歸模型、自迴歸滑動平均模型、求和自迴歸滑動平均模型和季節調整模型等,進行時間序列的預測。由於大量的時間序列是非平穩的,其特徵引數和資料分佈隨著時間的推移而發生變化。因此,僅僅通過對某段歷史資料的訓練,建立單一的神經網路預測模型,還無法完成準確的預測任務。為此,人們提出了基於統計學和基於精確性的再訓練方法,當發現現存預測模型不再適用於當前資料時,對模型重新訓練,獲得新的權重引數,建立新的模型。也有許多系統藉助並行演算法的計算優勢進行時間序列預測。
  4.5偏差型知識(Deviation)
  ----此外,還可以發現其他型別的知識,如偏差型知識(Deviation),它是對差異和極端特例的描述,揭示事物偏離常規的異常現象,如標準類外的特例,資料聚類外的離群值等。所有這些知識都可以在不同的概念層次上被發現,並隨著概念層次的提升,從微觀到中觀、到巨集觀,以滿足不同使用者不同層次決策的需要。

5 資料探勘的功能

資料探勘通過預測未來趨勢及行為,做出前攝的、基於知識的決策。資料探勘的目標是從資料庫中發現隱含的、有意義的知識,主要有以下五類功能。
  5.1 自動預測趨勢和行為
  資料探勘自動在大型資料庫中尋找預測性資訊,以往需要進行大量手工分析的問題如今可以迅速直接由資料本身得出結論。一個典型的例子是市場預測問題,資料探勘使用過去有關促銷的資料來尋找未來投資中回報最大的使用者,其它可預測的問題包括預報破產以及認定對指定事件最可能作出反應的群體。
  5.2 關聯分析
  資料關聯是資料庫中存在的一類重要的可被發現的知識。若兩個或多個變數的取值之間存在某種規律性,就稱為關聯。關聯可分為簡單關聯、時序關聯、因果關聯。關聯分析的目的是找出資料庫中隱藏的關聯網。有時並不知道資料庫中資料的關聯函式,即使知道也是不確定的,因此關聯分析生成的規則帶有可信度。
  5.3 聚類
  資料庫中的記錄可被化分為一系列有意義的子集,即聚類。聚類增強了人們對客觀現實的認識,是概念描述和偏差分析的先決條件。聚類技術主要包括傳統的模式識別方法和數學分類學。80年代初,Mchalski提出了概念聚類技術牞其要點是,在劃分物件時不僅考慮物件之間的距離,還要求劃分出的類具有某種內涵描述,從而避免了傳統技術的某些片面性。
  5.4概念描述
  概念描述就是對某類物件的內涵進行描述,並概括這類物件的有關特徵。概念描述分為特徵性描述和區別性描述,前者描述某類物件的共同特徵,後者描述不同類物件之間的區別。生成一個類的特徵性描述只涉及該類物件中所有物件的共性。生成區別性描述的方法很多,如決策樹方法、遺傳演算法等。
  5.5偏差檢測
  資料庫中的資料常有一些異常記錄,從資料庫中檢測這些偏差很有意義。偏差包括很多潛在的知識,如分類中的反常例項、不滿足規則的特例、觀測結果與模型預測值的偏差、量值隨時間的變化等。偏差檢測的基本方法是,尋找觀測結果與參照值之間有意義的差別。

6 資料探勘常用的技術

6.1 人工神經網路

  神經網路近來越來越受到人們的關注,因為它為解決大複雜度問題提供了一種相對來說比較有效的簡單方法。神經網路可以很容易的解決具有上百個引數的問題(當然實際生物體中存在的神經網路要比我們這裡所說的程式模擬的神經網路要複雜的多)。神經網路常用於兩類問題:分類和迴歸。
  在結構上,可以把一個神經網路劃分為輸入層、輸出層和隱含層(見圖4)。輸入層的每個節點對應一個個的預測變數。輸出層的節點對應目標變數,可有多個。在輸入層和輸出層之間是隱含層(對神經網路使用者來說不可見),隱含層的層數和每層節點的個數決定了神經網路的複雜度。

  除了輸入層的節點,神經網路的每個節點都與很多它前面的節點(稱為此節點的輸入節點)連線在一起,每個連線對應一個權重Wxy,此節點的值就是通過它所有輸入節點的值與對應連線權重乘積的和作為一個函式的輸入而得到,我們把這個函式稱為活動函式或擠壓函式。如圖5中節點4輸出到節點6的值可通過如下計算得到:
  W14*節點1的值+W24*節點2的值
  神經網路的每個節點都可表示成預測變數(節點1,2)的值或值的組合(節點3-6)。注意節點6的值已經不再是節點1、2的線性組合,因為資料在隱含層中傳遞時使用了活動函式。實際上如果沒有活動函式的話,神經元網路就等價於一個線性迴歸函式,如果此活動函式是某種特定的非線性函式,那神經網路又等價於邏輯迴歸。
  調整節點間連線的權重就是在建立(也稱訓練)神經網路時要做的工作。最早的也是最基本的權重調整方法是錯誤回饋法,現在較新的有變化坡度法、類牛頓法、Levenberg-Marquardt法、和遺傳演算法等。無論採用那種訓練方法,都需要有一些引數來控制訓練的過程,如防止訓練過度和控制訓練的速度。

  決定神經網路拓撲結構(或體系結構)的是隱含層及其所含節點的個數,以及節點之間的連線方式。要從頭開始設計一個神經網路,必須要決定隱含層和節點的數目,活動函式的形式,以及對權重做那些限制等,當然如果採用成熟軟體工具的話,他會幫你決定這些事情。
在諸多型別的神經網路中,最常用的是前向傳播式神經網路,也就是我們前面圖示中所描繪的那種。我們下面詳細討論一下,為討論方便假定只含有一層隱含節點。
  可以認為錯誤回饋式訓練法是變化坡度法的簡化,其過程如下:
  前向傳播:資料從輸入到輸出的過程是一個從前向後的傳播過程,後一節點的值通過它前面相連的節點傳過來,然後把值按照各個連線權重的大小加權輸入活動函式再得到新的值,進一步傳播到下一個節點。
  回饋:當節點的輸出值與我們預期的值不同,也就是發生錯誤時,神經網路就要 “學習”(從錯誤中學習)。我們可以把節點間連線的權重看成後一節點對前一節點的“信任” 程度(他自己向下一節點的輸出更容易受他前面哪個節點輸入的影響)。學習的方法是採用懲罰的方法,過程如下:如果一節點輸出發生錯誤,那麼他看他的錯誤是受哪個(些)輸入節點的影響而造成的,是不是他最信任的節點(權重最高的節點)陷害了他(使他出錯),如果是則要降低對他的信任值(降低權重),懲罰他們,同時升高那些做出正確建議節點的信任值。對那些收到懲罰的節點來說,他也需要用同樣的方法來進一步懲罰它前面的節點。就這樣把懲罰一步步向前傳播直到輸入節點為止。
  對訓練集中的每一條記錄都要重複這個步驟,用前向傳播得到輸出值,如果發生錯誤,則用回饋法進行學習。當把訓練集中的每一條記錄都執行過一遍之後,我們稱完成一個訓練週期。要完成神經網路的訓練可能需要很多個訓練週期,經常是幾百個。訓練完成之後得到的神經網路就是在通過訓練集發現的模型,描述了訓練集中響應變數受預測變數影響的變化規律。
  由於神經網路隱含層中的可變引數太多,如果訓練時間足夠長的話,神經網路很可能把訓練集的所有細節資訊都“記”下來,而不是建立一個忽略細節只具有規律性的模型,我們稱這種情況為訓練過度。顯然這種“模型”對訓練集會有很高的準確率,而一旦離開訓練集應用到其他資料,很可能準確度急劇下降。為了防止這種訓練過度的情況,我們必須知道在什麼時候要停止訓練。在有些軟體實現中會在訓練的同時用一個測試集來計算神經網路在此測試集上的正確率,一旦這個正確率不再升高甚至開始下降時,那麼就認為現在神經網路已經達到做好的狀態了可以停止訓練。
  圖6中的曲線可以幫我們理解為什麼利用測試集能防止訓練過度的出現。在圖中可以看到訓練集和測試集的錯誤率在一開始都隨著訓練週期的增加不斷降低,而測試集的錯誤率在達到一個谷底後反而開始上升,我們認為這個開始上升的時刻就是應該停止訓練的時刻。

  神經元網路和統計方法在本質上有很多差別。神經網路的引數可以比統計方法多很多。如圖4中就有13個引數(9個權重和4個限制條件)。由於引數如此之多,引數通過各種各樣的組合方式來影響輸出結果,以至於很難對一個神經網路表示的模型做出直觀的解釋。實際上神經網路也正是當作“黑盒”來用的,不用去管“盒子”裡面是什麼,只管用就行了。在大部分情況下,這種限制條件是可以接受的。比如銀行可能需要一個筆跡識別軟體,但他沒必要知道為什麼這些線條組合在一起就是一個人的簽名,而另外一個相似的則不是。在很多複雜度很高的問題如化學試驗、機器人、金融市場的模擬、和語言影象的識別,等領域神經網路都取得了很好的效果。
  神經網路的另一個優點是很容易在平行計算機上實現,可以把他的節點分配到不同的CPU上平行計算。
  在使用神經網路時有幾點需要注意:第一,神經網路很難解釋,目前還沒有能對神經網路做出顯而易見解釋的方法學。
  第二,神經網路會學習過度,在訓練神經網路時一定要恰當的使用一些能嚴格衡量神經網路的方法,如前面提到的測試集方法和交叉驗證法等。這主要是由於神經網路太靈活、可變引數太多,如果給足夠的時間,他幾乎可以“記住”任何事情。
  第三,除非問題非常簡單,訓練一個神經網路可能需要相當可觀的時間才能完成。當然,一旦神經網路建立好了,在用它做預測時執行時還是很快得。
  第四,建立神經網路需要做的資料準備工作量很大。一個很有誤導性的神話就是不管用什麼資料神經網路都能很好的工作並做出準確的預測。這是不確切的,要想得到準確度高的模型必須認真的進行資料清洗、整理、轉換、選擇等工作,對任何資料探勘技術都是這樣,神經網路尤其注重這一點。比如神經網路要求所有的輸入變數都必須是0-1(或-1 -- +1)之間的實數,因此像“地區”之類文字資料必須先做必要的處理之後才能用作神經網路的輸入。

  6.2決策樹
  決策樹提供了一種展示類似在什麼條件下會得到什麼值這類規則的方法。比如,在貸款申請中,要對申請的風險大小做出判斷,圖7是為了解決這個問題而建立的一棵決策樹,從中我們可以看到決策樹的基本組成部分:決策節點、分支和葉子。

  決策樹中最上面的節點稱為根節點,是整個決策樹的開始。本例中根節點是“收入>¥40,000”,對此問題的不同回答產生了“是”和“否”兩個分支。
  決策樹的每個節點子節點的個數與決策樹在用的演算法有關。如CART演算法得到的決策樹每個節點有兩個分支,這種樹稱為二叉樹。允許節點含有多於兩個子節點的樹稱為多叉樹。
  每個分支要麼是一個新的決策節點,要麼是樹的結尾,稱為葉子。在沿著決策樹從上到下遍歷的過程中,在每個節點都會遇到一個問題,對每個節點上問題的不同回答導致不同的分支,最後會到達一個葉子節點。這個過程就是利用決策樹進行分類的過程,利用幾個變數(每個變數對應一個問題)來判斷所屬的類別(最後每個葉子會對應一個類別)。
  假如負責借貸的銀行官員利用上面這棵決策樹來決定支援哪些貸款和拒絕哪些貸款,那麼他就可以用貸款申請表來執行這棵決策樹,用決策樹來判斷風險的大小。“年收入>¥40,00”和“高負債”的使用者被認為是“高風險”,同時“收入<¥40,000”但“工作時間>5年”的申請,則被認為“低風險”而建議貸款給他/她。
  資料探勘中決策樹是一種經常要用到的技術,可以用於分析資料,同樣也可以用來作預測(就像上面的銀行官員用他來預測貸款風險)。常用的演算法有CHAID、 CART、 Quest 和C5.0。
  建立決策樹的過程,即樹的生長過程是不斷的把資料進行切分的過程,每次切分對應一個問題,也對應著一個節點。對每個切分都要求分成的組之間的“差異”最大。
  各種決策樹演算法之間的主要區別就是對這個“差異”衡量方式的區別。對具體衡量方式演算法的討論超出了本文的範圍,在此我們只需要把切分看成是把一組資料分成幾份,份與份之間儘量不同,而同一份內的資料儘量相同。這個切分的過程也可稱為資料的“純化”。看我們的例子,包含兩個類別--低風險和高風險。如果經過一次切分後得到的分組,每個分組中的資料都屬於同一個類別,顯然達到這樣效果的切分方法就是我們所追求的。
  到現在為止我們所討論的例子都是非常簡單的,樹也容易理解,當然實際中應用的決策樹可能非常複雜。假定我們利用歷史資料建立了一個包含幾百個屬性、輸出的類有十幾種的決策樹,這樣的一棵樹對人來說可能太複雜了,但每一條從根結點到葉子節點的路徑所描述的含義仍然是可以理解的。決策樹的這種易理解性對資料探勘的使用者來說是一個顯著的優點。
  然而決策樹的這種明確性可能帶來誤導。比如,決策樹每個節點對應分割的定義都是非常明確毫不含糊的,但在實際生活中這種明確可能帶來麻煩(憑什麼說年收入¥40,001的人具有較小的信用風險而¥40,000的人就沒有)。
  建立一顆決策樹可能只要對資料庫進行幾遍掃描之後就能完成,這也意味著需要的計算資源較少,而且可以很容易的處理包含很多預測變數的情況,因此決策樹模型可以建立得很快,並適合應用到大量的資料上。
  對最終要拿給人看的決策樹來說,在建立過程中讓其生長的太“枝繁葉茂”是沒有必要的,這樣既降低了樹的可理解性和可用性,同時也使決策樹本身對歷史資料的依賴性增大,也就是說這是這棵決策樹對此歷史資料可能非常準確,一旦應用到新的資料時準確性卻急劇下降,我們稱這種情況為訓練過度。為了使得到的決策樹所蘊含的規則具有普遍意義,必須防止訓練過度,同時也減少了訓練的時間。因此我們需要有一種方法能讓我們在適當的時候停止樹的生長。常用的方法是設定決策樹的最大高度(層數)來限制樹的生長。還有一種方法是設定每個節點必須包含的最少記錄數,當節點中記錄的個數小於這個數值時就停止分割。
  與設定停止增長條件相對應的是在樹建立好之後對其進行修剪。先允許樹儘量生長,然後再把樹修剪到較小的尺寸,當然在修剪的同時要求儘量保持決策樹的準確度儘量不要下降太多。
  對決策樹常見的批評是說其在為一個節點選擇怎樣進行分割時使用“貪心”演算法。此種演算法在決定當前這個分割時根本不考慮此次選擇會對將來的分割造成什麼樣的影響。換句話說,所有的分割都是順序完成的,一個節點完成分割之後不可能以後再有機會回過頭來再考察此次分割的合理性,每次分割都是依賴於他前面的分割方法,也就是說決策樹中所有的分割都受根結點的第一次分割的影響,只要第一次分割有一點點不同,那麼由此得到的整個決策樹就會完全不同。那麼是否在選擇一個節點的分割的同時向後考慮兩層甚至更多的方法,會具有更好的結果呢?目前我們知道的還不是很清楚,但至少這種方法使建立決策樹的計算量成倍的增長,因此現在還沒有哪個產品使用這種方法。
  而且,通常的分割演算法在決定怎麼在一個節點進行分割時,都只考察一個預測變數,即節點用於分割的問題只與一個變數有關。這樣生成的決策樹在有些本應很明確的情況下可能變得複雜而且意義含混,為此目前新提出的一些演算法開始在一個節點同時用多個變數來決定分割的方法。比如以前的決策樹中可能只能出現類似“收入<¥35,000”的判斷,現在則可以用“收入<(0.35*抵押)”或“收入>¥35,000或抵押<150,000”這樣的問題。
  決策樹很擅長處理非數值型資料,這與神經網路只能處理數值型資料比起來,就免去了很多資料預處理工作。
甚至有些決策樹演算法專為處理非數值型資料而設計,因此當採用此種方法建立決策樹同時又要處理數值型資料時,反而要做把數值型資料對映到非數值型資料的預處理。
  6.3遺傳演算法
  基於進化理論,並採用遺傳結合、遺傳變異、以及自然選擇等設計方法的優化技術。
  6.4近鄰演算法
  將資料集合中每一個記錄進行分類的方法。
  6.5規則推導
  從統計意義上對資料中的“如果-那麼”規則進行尋找和推導。
  採用上述技術的某些專門的分析工具已經發展了大約十年的歷史,不過這些工具所面對的資料量通常較小。而現在這些技術已經被直接整合到許多大型的工業標準的資料倉庫和聯機分析系統中去了。

 

http://blog.csdn.net/jyz3051/article/details/2125559

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述