為您介紹幾款開(kāi)源的數(shù)據(jù)挖掘工具
本文的主要內(nèi)容編譯自Blaz Zupan和Janez Demsar的一篇論文(Open-Source Tools for Data Mining),原文參見(jiàn)http://magix.fri.uni-lj.si/blaz/papers/2008-OpenSourceDataMini選擇其中的要點(diǎn)和大家共享,同時(shí)加入一些個(gè)人的點(diǎn)評(píng)意見(jiàn)。ng.pdf。我僅僅此外,對(duì)開(kāi)源的數(shù)據(jù)挖掘工具有興趣的同仁,可以關(guān)注以下OSDM09這個(gè)workshop,它會(huì)在PAKDD'09上同時(shí)進(jìn)行,主要討論的就是開(kāi)源數(shù)據(jù)挖掘工具的議題。OSDM09的網(wǎng)址為:http://osdm09.togaware.com/。
開(kāi)源的數(shù)據(jù)挖掘工具(Open-Source Tools for Data Mining)
=======================================================
Blaz Zupan, PhD, Janez Demsar, PhD (編譯:IDMer)
數(shù)據(jù)挖掘軟件的歷史并不長(zhǎng),甚至連“數(shù)據(jù)挖掘”這個(gè)術(shù)語(yǔ)也只是在上世紀(jì)九十年代中期才正式提出,它融合了統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)、數(shù)據(jù)可視化以及知識(shí)工程等研究領(lǐng)域的內(nèi)容,在數(shù)據(jù)探索和模型推斷等方面已經(jīng)相當(dāng)成熟。和現(xiàn)在相比,那時(shí)的數(shù)據(jù)挖掘軟件還顯得很笨拙,一般只提供了命令行界面。對(duì)于眾多沒(méi)有計(jì)算機(jī)科學(xué)背景的用戶來(lái)說(shuō),還是太難用了。
現(xiàn)在的商用數(shù)據(jù)挖掘軟件已經(jīng)很成熟了,也提供易用的可視化界面,集成了數(shù)據(jù)處理、建模、評(píng)估等一整套功能。盡管開(kāi)源的數(shù)據(jù)挖掘工具在穩(wěn)定性和成熟性上可能都無(wú)法跟商用數(shù)據(jù)挖掘軟件相比(IDMer:而且開(kāi)源數(shù)據(jù)挖掘工具在性能上和售后支持上也無(wú)法提供讓商業(yè)用戶放心的保證),但有些開(kāi)源工具還是做得不錯(cuò)的,用戶可以選擇它來(lái)做一些相對(duì)不那么重要的分析挖掘工作。
本文對(duì)開(kāi)源數(shù)據(jù)挖掘工具的演進(jìn)過(guò)程進(jìn)行了簡(jiǎn)單回顧,并挑選了一些比較優(yōu)秀的開(kāi)源挖掘工具,供大家選擇。
開(kāi)源數(shù)據(jù)挖掘工具的演進(jìn)過(guò)程
--------------------------
從上世紀(jì)八十年代起就出現(xiàn)了早期的模型推斷和機(jī)器學(xué)習(xí)程序,它們一般都是以命令行的方式執(zhí)行(從UNIX或DOS的命令行啟動(dòng)),用戶在命令中指定輸入數(shù)據(jù)文件名和算法相關(guān)參數(shù)。廣為人知的分類樹(shù)歸納算法,C4.5,就是這種程序(C4.5的源程序參見(jiàn)http://www.rulequest.com/Personal)。同時(shí)還出現(xiàn)了基于規(guī)則的學(xué)習(xí)算法,例如AQ和CN2。這些程序大多被用在醫(yī)療領(lǐng)域,比如癌癥的診斷和預(yù)測(cè)。
這些程序一般并不包括數(shù)據(jù)抽樣等處理功能,用戶通常是使用一些腳本語(yǔ)言(例如Perl)來(lái)做這些事情。同時(shí),一些研究團(tuán)體還開(kāi)發(fā)了程序庫(kù)(用于支持?jǐn)?shù)據(jù)格式共享、建模評(píng)估和報(bào)表功能),例如MLC++,就是用C++編寫(xiě)的機(jī)器學(xué)習(xí)程序庫(kù)。
命令行界面讓用戶很難對(duì)數(shù)據(jù)進(jìn)行交互式分析,而且文本格式的輸出也不夠直觀。數(shù)據(jù)挖掘工具接下來(lái)的發(fā)展,就是內(nèi)置數(shù)據(jù)可視化并強(qiáng)化交互功能。在上世紀(jì)九十年代中期,Silicon Graphics就收購(gòu)了MLC++,并將其開(kāi)發(fā)成為MineSet。MineSet幾乎可以稱為當(dāng)時(shí)最全面的數(shù)據(jù)挖掘平臺(tái)。Clementine也是當(dāng)時(shí)非常流行的商用數(shù)據(jù)挖掘軟件,在界面易用性上非常突出。
現(xiàn)在的開(kāi)源數(shù)據(jù)挖掘軟件,大多采用可視化編程的設(shè)計(jì)思路(IDMer:就是用圖形化的方法,來(lái)建立整個(gè)挖掘流程)。之所以這么做,是因?yàn)樗茏銐蜢`活和易用,更適合缺乏計(jì)算機(jī)科學(xué)知識(shí)的用戶。
在分析軟件中,靈活性和可擴(kuò)展性是非常重要的,它允許你可以開(kāi)發(fā)和擴(kuò)展新的挖掘算法。在這個(gè)方面,Weka(IDMer:它幾乎是開(kāi)源數(shù)據(jù)挖掘軟件的代表)就提供了文檔全面的Java函數(shù)和類庫(kù),非常適合擴(kuò)展。當(dāng)然,您首先需要充分了解Weka的架構(gòu),并掌握J(rèn)ava編程技術(shù)。另一個(gè)很有名的開(kāi)源軟件,R,則采用了相對(duì)不同的思路。R提供了豐富的統(tǒng)計(jì)分析和數(shù)據(jù)挖掘功能,它的內(nèi)核是用C來(lái)實(shí)現(xiàn)的。但如果你想用R開(kāi)發(fā)新的挖掘算法,那么你并不需要用C語(yǔ)言來(lái)開(kāi)發(fā),而是使用R軟件自有的腳本語(yǔ)言來(lái)開(kāi)發(fā)。采用腳本語(yǔ)言的好處在于速度(IDMer:這里指的是開(kāi)發(fā)新算法的時(shí)間會(huì)縮短,因?yàn)槟_本語(yǔ)言相對(duì)來(lái)說(shuō)更高級(jí)更簡(jiǎn)單)、靈活(可以直接通過(guò)腳本調(diào)用挖掘軟件中復(fù)雜的功能函數(shù))、可擴(kuò)展性(可以通過(guò)接口來(lái)調(diào)用其它數(shù)據(jù)挖掘軟件的功能)。當(dāng)然,圖形化的界面更容易使用,但使用腳本語(yǔ)言來(lái)開(kāi)發(fā)新算法則可以滿足一些特定分析需求。
開(kāi)源數(shù)據(jù)挖掘工具箱-期望的功能
------------------------------
提供一組基本的統(tǒng)計(jì)工具,用于對(duì)數(shù)據(jù)進(jìn)行常規(guī)探索;
多種數(shù)據(jù)可視化技術(shù),例如histograms, scatterplots, distribution charts, parallel coordinate visualizations, mosaic and sieve diagrams等等;
標(biāo)準(zhǔn)的數(shù)據(jù)處理組件,包括querying from databases, case selection, feature ranking and subset selection, and feature discretization等等;
無(wú)指導(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等等;
模型評(píng)估和評(píng)分工具,包括對(duì)結(jié)果的圖形化展示(比如ROC曲線和lift圖);
推斷模型的可視化功能(IDMer:例如用樹(shù)狀結(jié)構(gòu)來(lái)顯示訓(xùn)練好的決策樹(shù),用氣泡圖來(lái)顯示聚類,用網(wǎng)絡(luò)圖來(lái)顯示關(guān)聯(lián)等等);
提供探索型數(shù)據(jù)分析環(huán)境
可以把模型保存為標(biāo)準(zhǔn)格式(例如PMML),以便進(jìn)行共享和移植
提供報(bào)表功能,可以生成分析報(bào)告,并允許保存用戶的備注或說(shuō)明
#p#
幾款優(yōu)秀的開(kāi)源數(shù)據(jù)挖掘工具
--------------------------
本文只對(duì)幾種流行的開(kāi)源數(shù)據(jù)挖掘平臺(tái)進(jìn)行了檢視,比如Weka和R等。如果您想找尋更多的開(kāi)源數(shù)據(jù)挖掘軟件,可以到KDnuggets和Open Directory上查看。為了評(píng)測(cè)這些軟件,我們用了UCI Machine Learning Repository上的心臟病診斷數(shù)據(jù)集。
R
R (http://www.r-project.org) 是用于統(tǒng)計(jì)分析和圖形化的計(jì)算機(jī)語(yǔ)言及分析工具,為了保證性能,其核心計(jì)算模塊是用C、C++和Fortran編寫(xiě)的。同時(shí)為了便于使用,它提供了一種腳本語(yǔ)言,即R語(yǔ)言。R語(yǔ)言和貝爾實(shí)驗(yàn)室開(kāi)發(fā)的S語(yǔ)言類似。R支持一系列分析技術(shù),包括統(tǒng)計(jì)檢驗(yàn)、預(yù)測(cè)建模、數(shù)據(jù)可視化等等。在CRAN(http://cran.r-project.org) 上可以找到眾多開(kāi)源的擴(kuò)展包。
R軟件的首選界面是命令行界面,通過(guò)編寫(xiě)腳本來(lái)調(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資源管理器中的樹(shù)狀結(jié)構(gòu)來(lái)組織分析組件。Tanagra缺乏高級(jí)的可視化能力,但它的強(qiáng)項(xiàng)是統(tǒng)計(jì)分析,提供了眾多的有參和無(wú)參檢驗(yàn)方法。同時(shí)它的特征選取方法也很多。
#p#
Weka
Weka (Waikato Environment for Knowledge Analysis, http://www.cs.waikato.ac.nz/ml/weka/) 可能是名氣最大的開(kāi)源機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘軟件。高級(jí)用戶可以通過(guò)Java編程和命令行來(lái)調(diào)用其分析組件。同時(shí),Weka也為普通用戶提供了圖形化界面,稱為Weka KnowledgeFlow Environment和Weka Explorer。和R相比,Weka在統(tǒng)計(jì)分析方面較弱,但在機(jī)器學(xué)習(xí)方面要強(qiáng)得多。在Weka論壇(http://weka.sourceforge.net/wiki/index.php/Related_Projects) 可以找到很多擴(kuò)展包,比如文本挖掘、可視化、網(wǎng)格計(jì)算等等。很多其它開(kāi)源數(shù)據(jù)挖掘軟件也支持調(diào)用Weka的分析功能。
#p#
YALE (IDMer:現(xiàn)在已經(jīng)更名為RapidMiner)
YALE (Yet Another Learning Environment, http://rapid-i.com) 提供了圖形化界面,采用了類似Windows資源管理器中的樹(shù)狀結(jié)構(gòu)來(lái)組織分析組件,樹(shù)上每個(gè)節(jié)點(diǎn)表示不同的運(yùn)算符(operator)。YALE中提供了大量的運(yùn)算符,包括數(shù)據(jù)處理、變換、探索、建模、評(píng)估等各個(gè)環(huán)節(jié)。YALE是用Java開(kāi)發(fā)的,基于Weka來(lái)構(gòu)建,也就是說(shuō)它可以調(diào)用Weka中的各種分析組件。
#p#
KNIME
KNIME (Konstanz InformationMiner, http://www.knime.org)是基于Eclipse開(kāi)發(fā)環(huán)境來(lái)精心開(kāi)發(fā)的數(shù)據(jù)挖掘工具。無(wú)需安裝,方便使用(IDMer:呵呵,大家喜歡的綠色版)。和YALE一樣,KNIME也是用Java開(kāi)發(fā)的,可以擴(kuò)展使用Weka中的挖掘算法。和YALE不同點(diǎn)的是,KNIME采用的是類似數(shù)據(jù)流(data flow)的方式來(lái)建立分析挖掘流程(IDMer:這個(gè)我喜歡,和SAS EM或SPSS Clementine等商用數(shù)據(jù)挖掘軟件的操作方式類似)。挖掘流程由一系列功能節(jié)點(diǎn)(node)組成,每個(gè)節(jié)點(diǎn)有輸入/輸出端口(port),用于接收數(shù)據(jù)或模型、導(dǎo)出結(jié)果。(IDMer:感覺(jué)KNIME比Weka的KnowledgeFlow更好用,連接節(jié)點(diǎn)時(shí)很方便,直接用鼠標(biāo)拖拽連接端口即可。而Weka中則需要在節(jié)點(diǎn)上按鼠標(biāo)右鍵,再選擇后續(xù)節(jié)點(diǎn),比較麻煩,剛開(kāi)始使用時(shí)找了半天才知道怎么連)
KNIME中每個(gè)節(jié)點(diǎn)都帶有交通信號(hào)燈,用于指示該節(jié)點(diǎn)的狀態(tài)(未連接、未配置、缺乏輸入數(shù)據(jù)時(shí)為紅燈;準(zhǔn)備執(zhí)行為黃燈;執(zhí)行完畢后為綠燈)。在KNIME中有個(gè)特色功能——HiLite,允許用戶在節(jié)點(diǎn)結(jié)果中標(biāo)記感興趣的記錄,并進(jìn)一步展開(kāi)后續(xù)探索。
#p#
Orange
Orange (http://www.ailab.si/orange)是類似KNIME和Weka KnowledgeFlow的數(shù)據(jù)挖掘工具,它的圖形環(huán)境稱為Orange畫(huà)布(OrangeCanvas),用戶可以在畫(huà)布上放置分析控件(widget),然后把控件連接起來(lái)即可組成挖掘流程。這里的控件和KNIME中的節(jié)點(diǎn)是類似的概念。每個(gè)控件執(zhí)行特定的功能,但與KNIME中的節(jié)點(diǎn)不同,KNIME節(jié)點(diǎn)的輸入輸出分為兩種類型(模型和數(shù)據(jù)),而Orange的控件間可以傳遞多種不同的信號(hào),比如learners, classifiers, evaluation results, distance matrices, dendrograms等等。Orange的控件不象KNIME的節(jié)點(diǎn)分得那么細(xì),也就是說(shuō)要完成同樣的分析挖掘任務(wù),在Orange里使用的控件數(shù)量可以比KNIME中的節(jié)點(diǎn)數(shù)少一些。Orange的好處是使用更簡(jiǎn)單一些,但缺點(diǎn)是控制能力要比KNIME弱。
除了界面友好易于使用的優(yōu)點(diǎn),Orange的強(qiáng)項(xiàng)在于提供了大量可視化方法,可以對(duì)數(shù)據(jù)和模型進(jìn)行多種圖形化展示,并能智能搜索合適的可視化形式,支持對(duì)數(shù)據(jù)的交互式探索。
Orange的弱項(xiàng)在于傳統(tǒng)統(tǒng)計(jì)分析能力不強(qiáng),不支持統(tǒng)計(jì)檢驗(yàn),報(bào)表能力也有限。Orange的底層核心也是采用C++編寫(xiě),同時(shí)允許用戶使用Python腳本語(yǔ)言來(lái)進(jìn)行擴(kuò)展開(kāi)發(fā)(參見(jiàn)http://www.scipy.org)。
#p#
GGobi
數(shù)據(jù)可視化是數(shù)據(jù)挖掘的重要組成部分, GGobi (http://www.ggobi.org)就是用于交互式可視化的開(kāi)源軟件,它使用brushing的方法。GGobi可以用作R軟件的插件,或者通過(guò)Perl、Python等腳本語(yǔ)言來(lái)調(diào)用。
結(jié)論
----
以上介紹的幾款軟件都是優(yōu)秀的開(kāi)源數(shù)據(jù)挖掘軟件,各有所長(zhǎng),同時(shí)也各有缺點(diǎn)。讀者可以結(jié)合自己的需求來(lái)進(jìn)行選擇,或者組合使用多個(gè)軟件。對(duì)于普通用戶可以選用界面友好易于使用的軟件,對(duì)于希望從事算法開(kāi)發(fā)的用戶則可以根據(jù)軟件開(kāi)發(fā)工具不同(Java、R、C++、Python等)來(lái)選擇相應(yīng)的軟件。以上這幾款軟件(除了GGobi)基本上都提供了我們期望的大部分功能。
(IDMer:我嘗試了以上這幾種開(kāi)源軟件,Weka很有名但用起來(lái)并不方便,界面也簡(jiǎn)單了點(diǎn);RapidMiner現(xiàn)在流行的勢(shì)頭在上升,但它的操作方式和商用軟件差別較大,不支持分析流程圖的方式,當(dāng)包含的運(yùn)算符比較多的時(shí)候就不容易查看了;KNIME和Orange看起來(lái)都不錯(cuò),Orange界面看上去很清爽,但我發(fā)現(xiàn)它不支持中文。我的推薦是KNIME,同時(shí)安裝Weka和R擴(kuò)展包。)
(IDMer:我的點(diǎn)評(píng)純屬個(gè)人意見(jiàn),歡迎大家批評(píng)交流。在我的實(shí)際工作中使用開(kāi)源挖掘工具并不多,大部分時(shí)候都是在使用SAS Enterprise Miner。)
原文鏈接:http://www.cnblogs.com/nwf5d/archive/2011/05/11/2042786.html
【編輯推薦】