開源的數(shù)據(jù)挖掘工具本 文的主要內(nèi)容編譯自Blaz Zupan和Janez Demsar的一篇論文(Open-Source Tools for Data Mining),原文參見http://magix.fri./blaz/papers/2008- OpenSourceDataMining.pdf。我僅僅選擇其中的要點和大家共享,同時加入一些個人的點評意見。 此外,對開源的數(shù)據(jù)挖掘工具有興趣的同仁,可以關(guān)注以下OSDM09這個workshop,它會在PAKDD'09上同時進行,主要討論的就是開源數(shù)據(jù)挖掘工具的議題。OSDM09的網(wǎng)址為:http://osdm09./。 開源的數(shù)據(jù)挖掘工具(Open-Source Tools for Data Mining) 數(shù)據(jù)挖掘軟件的歷史并不長,甚至連“數(shù)據(jù)挖掘”這個術(shù)語也只是在上世紀九十年代中期才正式提出,它融合了統(tǒng)計學(xué)、機器學(xué)習(xí)、數(shù)據(jù)可視化以及知識工程 等研究領(lǐng)域的內(nèi)容,在數(shù)據(jù)探索和模型推斷等方面已經(jīng)相當成熟。和現(xiàn)在相比,那時的數(shù)據(jù)挖掘軟件還顯得很笨拙,一般只提供了命令行界面。對于眾多沒有計算機 科學(xué)背景的用戶來說,還是太難用了。 現(xiàn)在的商用數(shù)據(jù)挖掘軟件已經(jīng)很成熟了,也提供易用的可視化界面,集成了數(shù)據(jù)處理、建模、評估等一整套功能。盡管開源的數(shù)據(jù)挖掘工具在穩(wěn)定性和成熟性上可能都無法跟商用數(shù)據(jù)挖掘軟件相比(IDMer:而且開源數(shù)據(jù)挖掘工具在性能上和售后支持上也無法提供讓商業(yè)用戶放心的保證),但有些開源工具還是做得不錯的,用戶可以選擇它來做一些相對不那么重要的分析挖掘工作。 本文對開源數(shù)據(jù)挖掘工具的演進過程進行了簡單回顧,并挑選了一些比較優(yōu)秀的開源挖掘工具,供大家選擇。 開源數(shù)據(jù)挖掘工具的演進過程 從上世紀八十年代起就出現(xiàn)了早期的模型推斷和機器學(xué)習(xí)程序,它們一般都是以命令行的方式執(zhí)行(從UNIX或DOS的命令行啟動),用戶在命令中指定
輸入數(shù)據(jù)文件名和算法相關(guān)參數(shù)。廣為人知的分類樹歸納算法,C4.5,就是這種程序(C4.5的源程序參見
http://www./Personal)。同時還出現(xiàn)了基于規(guī)則的學(xué)習(xí)算法,例如AQ和CN2。這些程序大多被用在醫(yī)療領(lǐng)
域,比如癌癥的診斷和預(yù)測。 命令行界面讓用戶很難對數(shù)據(jù)進行交互式分析,而且文本格式的輸出也不夠直觀。數(shù)據(jù)挖掘工具接下來的發(fā)展,就是內(nèi)置數(shù)據(jù)可視化并強化交互功能。在上世 紀九十年代中期,Silicon Graphics就收購了MLC++,并將其開發(fā)成為MineSet。MineSet幾乎可以稱為當時最全面的數(shù)據(jù)挖掘平臺。Clementine也是當 時非常流行的商用數(shù)據(jù)挖掘軟件,在界面易用性上非常突出。 現(xiàn)在的開源數(shù)據(jù)挖掘軟件,大多采用可視化編程的設(shè)計思路(IDMer:就是用圖形化的方法,來建立整個挖掘流程)。之所以這么做,是因為它能足夠靈活和易用,更適合缺乏計算機科學(xué)知識的用戶。 在分析軟件中,靈活性和可擴展性是非常重要的,它允許你可以開發(fā)和擴展新的挖掘算法。在這個方面,Weka(IDMer:它幾乎是開源數(shù)據(jù)挖掘軟件的代表)就 提供了文檔全面的Java函數(shù)和類庫,非常適合擴展。當然,您首先需要充分了解Weka的架構(gòu),并掌握Java編程技術(shù)。另一個很有名的開源軟件,R,則 采用了相對不同的思路。R提供了豐富的統(tǒng)計分析和數(shù)據(jù)挖掘功能,它的內(nèi)核是用C來實現(xiàn)的。但如果你想用R開發(fā)新的挖掘算法,那么你并不需要用C語言來開 發(fā),而是使用R軟件自有的腳本語言來開發(fā)。采用腳本語言的好處在于速度(IDMer:這里指的是開發(fā)新算法的時間會縮短,因為腳本語言相對來說更高級更簡單)、靈活(可以直接通過腳本調(diào)用挖掘軟件中復(fù)雜的功能函數(shù))、可擴展性(可以通過接口來調(diào)用其它數(shù)據(jù)挖掘軟件的功能)。當然,圖形化的界面更容易使用,但使用腳本語言來開發(fā)新算法則可以滿足一些特定分析需求。 開源數(shù)據(jù)挖掘工具箱-期望的功能
幾款優(yōu)秀的開源數(shù)據(jù)挖掘工具 本文只對幾種流行的開源數(shù)據(jù)挖掘平臺進行了檢視,比如Weka和R等。如果您想找尋更多的開源數(shù)據(jù)挖掘軟件,可以到KDnuggets和Open Directory上查看。為了評測這些軟件,我們用了UCI Machine Learning Repository上的心臟病診斷數(shù)據(jù)集。 R R (http://www.)
是用于統(tǒng)計分析和圖形化的計算機語言及分析工具,為了保證性能,其核心計算模塊是用C、C++和Fortran編寫的。同時為了便于使用,它提供了一種腳
本語言,即R語言。R語言和貝爾實驗室開發(fā)的S語言類似。R支持一系列分析技術(shù),包括統(tǒng)計檢驗、預(yù)測建模、數(shù)據(jù)可視化等等。在
CRAN(http://cran.) 上可以找到眾多開源的擴展包。 Tanagra Tanagra (http://eric./wricco/tanagra/) 是使用圖形界面的數(shù)據(jù)挖掘軟件,采用了類似Windows資源管理器中的樹狀結(jié)構(gòu)來組織分析組件。Tanagra缺乏高級的可視化能力,但它的強項是統(tǒng)計 分析,提供了眾多的有參和無參檢驗方法。同時它的特征選取方法也很多。 Weka Weka (Waikato Environment for Knowledge Analysis, http://www.cs./ml/weka/) 可能是名氣最大的開源機器學(xué)習(xí)和數(shù)據(jù)挖掘軟件。高級用戶可以通過Java編程和命令行來調(diào)用其分析組件。同時,Weka也為普通用戶提供了圖形化界面,稱 為Weka KnowledgeFlow Environment和Weka Explorer。和R相比,Weka在統(tǒng)計分析方面較弱,但在機器學(xué)習(xí)方面要強得多。在Weka論壇 (http://weka./wiki/index.php/Related_Projects) 可以找到很多擴展包,比如文本挖掘、可視化、網(wǎng)格計算等等。很多其它開源數(shù)據(jù)挖掘軟件也支持調(diào)用Weka的分析功能。
YALE (Yet Another Learning Environment, http://) 提供了圖形化界面,采用了類似Windows資源管理器中的樹狀結(jié)構(gòu)來組織分析組件,樹上每個節(jié)點表示不同的運算符(operator)。YALE中提供 了大量的運算符,包括數(shù)據(jù)處理、變換、探索、建模、評估等各個環(huán)節(jié)。YALE是用Java開發(fā)的,基于Weka來構(gòu)建,也就是說它可以調(diào)用Weka中的各 種分析組件。 KNIME KNIME (Konstanz InformationMiner, http://www.)是基于Eclipse開發(fā)環(huán)境來精心開發(fā)的數(shù)據(jù)挖掘工具。無需安裝,方便使用(IDMer:呵呵,大家喜歡的綠色版)。和YALE一樣,KNIME也是用Java開發(fā)的,可以擴展使用Weka中的挖掘算法。和YALE不同點的是,KNIME采用的是類似數(shù)據(jù)流(data flow)的方式來建立分析挖掘流程(IDMer:這個我喜歡,和SAS EM或SPSS Clementine等商用數(shù)據(jù)挖掘軟件的操作方式類似)。挖掘流程由一系列功能節(jié)點(node)組成,每個節(jié)點有輸入/輸出端口(port),用于接收數(shù)據(jù)或模型、導(dǎo)出結(jié)果。(IDMer:感覺KNIME比Weka的KnowledgeFlow更好用,連接節(jié)點時很方便,直接用鼠標拖拽連接端口即可。而Weka中則需要在節(jié)點上按鼠標右鍵,再選擇后續(xù)節(jié)點,比較麻煩,剛開始使用時找了半天才知道怎么連) Orange Orange (http://www./orange)是類似KNIME和Weka
KnowledgeFlow的數(shù)據(jù)挖掘工具,它的圖形環(huán)境稱為Orange畫布(OrangeCanvas),用戶可以在畫布上放置分析控件
(widget),然后把控件連接起來即可組成挖掘流程。這里的控件和KNIME中的節(jié)點是類似的概念。每個控件執(zhí)行特定的功能,但與KNIME中的節(jié)點
不同,KNIME節(jié)點的輸入輸出分為兩種類型(模型和數(shù)據(jù)),而Orange的控件間可以傳遞多種不同的信號,比如learners,
classifiers, evaluation results, distance matrices,
dendrograms等等。Orange的控件不象KNIME的節(jié)點分得那么細,也就是說要完成同樣的分析挖掘任務(wù),在Orange里使用的控件數(shù)量可
以比KNIME中的節(jié)點數(shù)少一些。Orange的好處是使用更簡單一些,但缺點是控制能力要比KNIME弱。
結(jié)論 |
|