為您介紹幾款開源的數(shù)據(jù)挖掘工具
本文的主要內(nèi)容編譯自Blaz Zupan和Janez Demsar的一篇論文(Open-Source Tools for Data Mining),原文參見http://magix.fri.uni-lj.si/blaz/papers/2008-OpenSourceDataMini選擇其中的要點和大家共享,同時加入一些個人的點評意見。ng.pdf。我僅僅此外,對開源的數(shù)據(jù)挖掘工具有興趣的同仁,可以關(guān)注以下OSDM09這個workshop,它會在PAKDD'09上同時進行,主要討論的就是開源數(shù)據(jù)挖掘工具的議題。OSDM09的網(wǎng)址為:http://osdm09.togaware.com/。
開源的數(shù)據(jù)挖掘工具(Open-Source Tools for Data Mining)
=======================================================
Blaz Zupan, PhD, Janez Demsar, PhD (編譯:IDMer)
數(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.rulequest.com/Personal)。同時還出現(xiàn)了基于規(guī)則的學(xué)習(xí)算法,例如AQ和CN2。這些程序大多被用在醫(yī)療領(lǐng)域,比如癌癥的診斷和預(yù)測。
這些程序一般并不包括數(shù)據(jù)抽樣等處理功能,用戶通常是使用一些腳本語言(例如Perl)來做這些事情。同時,一些研究團體還開發(fā)了程序庫(用于支持數(shù)據(jù)格式共享、建模評估和報表功能),例如MLC++,就是用C++編寫的機器學(xué)習(xí)程序庫。
命令行界面讓用戶很難對數(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ù)挖掘工具箱-期望的功能
------------------------------
提供一組基本的統(tǒng)計工具,用于對數(shù)據(jù)進行常規(guī)探索;
多種數(shù)據(jù)可視化技術(shù),例如histograms, scatterplots, distribution charts, parallel coordinate visualizations, mosaic and sieve diagrams等等;
標準的數(shù)據(jù)處理組件,包括querying from databases, case selection, feature ranking and subset selection, and feature discretization等等;
無指導(dǎo)的數(shù)據(jù)分析技術(shù),比如principal component analysis, various clustering techniques, inference of association rules, and subgroup mining techniques等等;
有指導(dǎo)的數(shù)據(jù)分析技術(shù),比如classification rules and trees, support vector machines, naive Bayesian classifiers, discriminant analysis等等;
模型評估和評分工具,包括對結(jié)果的圖形化展示(比如ROC曲線和lift圖);
推斷模型的可視化功能(IDMer:例如用樹狀結(jié)構(gòu)來顯示訓(xùn)練好的決策樹,用氣泡圖來顯示聚類,用網(wǎng)絡(luò)圖來顯示關(guān)聯(lián)等等);
提供探索型數(shù)據(jù)分析環(huán)境
可以把模型保存為標準格式(例如PMML),以便進行共享和移植
提供報表功能,可以生成分析報告,并允許保存用戶的備注或說明
#p#
幾款優(yōu)秀的開源數(shù)據(jù)挖掘工具
--------------------------
本文只對幾種流行的開源數(shù)據(jù)挖掘平臺進行了檢視,比如Weka和R等。如果您想找尋更多的開源數(shù)據(jù)挖掘軟件,可以到KDnuggets和Open Directory上查看。為了評測這些軟件,我們用了UCI Machine Learning Repository上的心臟病診斷數(shù)據(jù)集。
R
R (http://www.r-project.org) 是用于統(tǒng)計分析和圖形化的計算機語言及分析工具,為了保證性能,其核心計算模塊是用C、C++和Fortran編寫的。同時為了便于使用,它提供了一種腳本語言,即R語言。R語言和貝爾實驗室開發(fā)的S語言類似。R支持一系列分析技術(shù),包括統(tǒng)計檢驗、預(yù)測建模、數(shù)據(jù)可視化等等。在CRAN(http://cran.r-project.org) 上可以找到眾多開源的擴展包。
R軟件的首選界面是命令行界面,通過編寫腳本來調(diào)用分析功能。如果缺乏編程技能,也可使用圖形界面,比如使用R Commander(http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/)或Rattle(http://rattle.togaware.com)。
#p#
Tanagra
Tanagra (http://eric.univ-lyon2.fr/wricco/tanagra/) 是使用圖形界面的數(shù)據(jù)挖掘軟件,采用了類似Windows資源管理器中的樹狀結(jié)構(gòu)來組織分析組件。Tanagra缺乏高級的可視化能力,但它的強項是統(tǒng)計分析,提供了眾多的有參和無參檢驗方法。同時它的特征選取方法也很多。
#p#
Weka
Weka (Waikato Environment for Knowledge Analysis, http://www.cs.waikato.ac.nz/ml/weka/) 可能是名氣最大的開源機器學(xué)習(xí)和數(shù)據(jù)挖掘軟件。高級用戶可以通過Java編程和命令行來調(diào)用其分析組件。同時,Weka也為普通用戶提供了圖形化界面,稱為Weka KnowledgeFlow Environment和Weka Explorer。和R相比,Weka在統(tǒng)計分析方面較弱,但在機器學(xué)習(xí)方面要強得多。在Weka論壇(http://weka.sourceforge.net/wiki/index.php/Related_Projects) 可以找到很多擴展包,比如文本挖掘、可視化、網(wǎng)格計算等等。很多其它開源數(shù)據(jù)挖掘軟件也支持調(diào)用Weka的分析功能。
#p#
YALE (IDMer:現(xiàn)在已經(jīng)更名為RapidMiner)
YALE (Yet Another Learning Environment, http://rapid-i.com) 提供了圖形化界面,采用了類似Windows資源管理器中的樹狀結(jié)構(gòu)來組織分析組件,樹上每個節(jié)點表示不同的運算符(operator)。YALE中提供了大量的運算符,包括數(shù)據(jù)處理、變換、探索、建模、評估等各個環(huán)節(jié)。YALE是用Java開發(fā)的,基于Weka來構(gòu)建,也就是說它可以調(diào)用Weka中的各種分析組件。
#p#
KNIME
KNIME (Konstanz InformationMiner, http://www.knime.org)是基于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é)點,比較麻煩,剛開始使用時找了半天才知道怎么連)
KNIME中每個節(jié)點都帶有交通信號燈,用于指示該節(jié)點的狀態(tài)(未連接、未配置、缺乏輸入數(shù)據(jù)時為紅燈;準備執(zhí)行為黃燈;執(zhí)行完畢后為綠燈)。在KNIME中有個特色功能——HiLite,允許用戶在節(jié)點結(jié)果中標記感興趣的記錄,并進一步展開后續(xù)探索。
#p#
Orange
Orange (http://www.ailab.si/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弱。
除了界面友好易于使用的優(yōu)點,Orange的強項在于提供了大量可視化方法,可以對數(shù)據(jù)和模型進行多種圖形化展示,并能智能搜索合適的可視化形式,支持對數(shù)據(jù)的交互式探索。
Orange的弱項在于傳統(tǒng)統(tǒng)計分析能力不強,不支持統(tǒng)計檢驗,報表能力也有限。Orange的底層核心也是采用C++編寫,同時允許用戶使用Python腳本語言來進行擴展開發(fā)(參見http://www.scipy.org)。
#p#
GGobi
數(shù)據(jù)可視化是數(shù)據(jù)挖掘的重要組成部分, GGobi (http://www.ggobi.org)就是用于交互式可視化的開源軟件,它使用brushing的方法。GGobi可以用作R軟件的插件,或者通過Perl、Python等腳本語言來調(diào)用。
結(jié)論
----
以上介紹的幾款軟件都是優(yōu)秀的開源數(shù)據(jù)挖掘軟件,各有所長,同時也各有缺點。讀者可以結(jié)合自己的需求來進行選擇,或者組合使用多個軟件。對于普通用戶可以選用界面友好易于使用的軟件,對于希望從事算法開發(fā)的用戶則可以根據(jù)軟件開發(fā)工具不同(Java、R、C++、Python等)來選擇相應(yīng)的軟件。以上這幾款軟件(除了GGobi)基本上都提供了我們期望的大部分功能。
(IDMer:我嘗試了以上這幾種開源軟件,Weka很有名但用起來并不方便,界面也簡單了點;RapidMiner現(xiàn)在流行的勢頭在上升,但它的操作方式和商用軟件差別較大,不支持分析流程圖的方式,當包含的運算符比較多的時候就不容易查看了;KNIME和Orange看起來都不錯,Orange界面看上去很清爽,但我發(fā)現(xiàn)它不支持中文。我的推薦是KNIME,同時安裝Weka和R擴展包。)
(IDMer:我的點評純屬個人意見,歡迎大家批評交流。在我的實際工作中使用開源挖掘工具并不多,大部分時候都是在使用SAS Enterprise Miner。)
原文鏈接:http://www.cnblogs.com/nwf5d/archive/2011/05/11/2042786.html
【編輯推薦】