1. 程式人生 > >開源的數據挖掘工具

開源的數據挖掘工具

tar 允許 類型 博客 技能 數據挖掘 期望 idg open

分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net

本文的主要內容編譯自Blaz Zupan和Janez Demsar的一篇論文(Open-Source Tools for Data Mining)。我僅僅選擇其中的要點和大家共享,同時加入一些個人的點評意見。

此外,對開源的數據挖掘工具有興趣的同仁,可以關註以下OSDM09這個workshop,它會在PAKDD‘09上同時進行,主要討論的就是開源數據挖掘工具的議題。

開源的數據挖掘工具(Open-Source Tools for Data Mining)


Blaz Zupan, PhD, Janez Demsar, PhD (編譯:IDMer)

數據挖掘軟件的歷史並不長,甚至連“數據挖掘”這個術語也只是在上世紀九十年代中期才正式提出,它融合了統計學、機器學習、數據可視化以及知識工程等研究領域的內容,在數據探索和模型推斷等方面已經相當成熟。和現在相比,那時的數據挖掘軟件還顯得很笨拙,一般只提供了命令行界面。對於眾多沒有計算機科學背景的用戶來說,還是太難用了。

現在的商用數據挖掘軟件已經很成熟了,也提供易用的可視化界面,集成了數據處理、建模、評估等一整套功能。盡管開源的數據挖掘工具在穩定性和成熟性上可能都無法跟商用數據挖掘軟件相比(IDMer:而且開源數據挖掘工具在性能上和售後支持上也無法提供讓商業用戶放心的保證)

,但有些開源工具還是做得不錯的,用戶可以選擇它來做一些相對不那麽重要的分析挖掘工作。

本文對開源數據挖掘工具的演進過程進行了簡單回顧,並挑選了一些比較優秀的開源挖掘工具,供大家選擇。

開源數據挖掘工具的演進過程

從上世紀八十年代起就出現了早期的模型推斷和機器學習程序,它們一般都是以命令行的方式執行(從UNIX或DOS的命令行啟動),用戶在命令中指定輸入數據文件名和算法相關參數。廣為人知的分類樹歸納算法,C4.5,就是這種程序(C4.5的源程序參見http://www.rulequest.com/Personal)。同時還出現了基於規則的學習算法,例如AQ和CN2。這些程序大多被用在醫療領域,比如癌癥的診斷和預測。

這些程序一般並不包括數據抽樣等處理功能,用戶通常是使用一些腳本語言(例如Perl)來做這些事情。同時,一些研究團體還開發了程序庫(用於支持數據格式共享、建模評估和報表功能),例如MLC++,就是用C++編寫的機器學習程序庫。

命令行界面讓用戶很難對數據進行交互式分析,而且文本格式的輸出也不夠直觀。數據挖掘工具接下來的發展,就是內置數據可視化並強化交互功能。在上世紀九十年代中期,Silicon Graphics就收購了MLC++,並將其開發成為MineSet。MineSet幾乎可以稱為當時最全面的數據挖掘平臺。Clementine也是當時非常流行的商用數據挖掘軟件,在界面易用性上非常突出。

現在的開源數據挖掘軟件,大多采用可視化編程的設計思路(就是用圖形化的方法,來建立整個挖掘流程)。之所以這麽做,是因為它能足夠靈活和易用,更適合缺乏計算機科學知識的用戶。

在分析軟件中,靈活性和可擴展性是非常重要的,它允許你可以開發和擴展新的挖掘算法。在這個方面,Weka(它幾乎是開源數據挖掘軟件的代表)就提供了文檔全面的Java函數和類庫,非常適合擴展。當然,您首先需要充分了解Weka的架構,並掌握Java編程技術。另一個很有名的開源軟件,R,則采用了相對不同的思路。R提供了豐富的統計分析和數據挖掘功能,它的內核是用C來實現的。但如果你想用R開發新的挖掘算法,那麽你並不需要用C語言來開發,而是使用R軟件自有的腳本語言來開發。采用腳本語言的好處在於速度(這裏指的是開發新算法的時間會縮短,因為腳本語言相對來說更高級更簡單)、靈活(可以直接通過腳本調用挖掘軟件中復雜的功能函數)、可擴展性(可以通過接口來調用其它數據挖掘軟件的功能)。當然,圖形化的界面更容易使用,但使用腳本語言來開發新算法則可以滿足一些特定分析需求。

開源數據挖掘工具箱-期望的功能

  • 提供一組基本的統計工具,用於對數據進行常規探索;
  • 多種數據可視化技術,例如histograms, scatterplots, distribution charts, parallel coordinate visualizations, mosaic and sieve diagrams等等;
  • 標準的數據處理組件,包括querying from databases, case selection, feature ranking and subset selection, and feature discretization等等;
  • 無指導的數據分析技術,比如principal component analysis, various clustering techniques, inference of association rules, and subgroup mining techniques等等;
  • 有指導的數據分析技術,比如classification rules and trees, support vector machines, naive Bayesian classifiers, discriminant analysis等等;
  • 模型評估和評分工具,包括對結果的圖形化展示(比如ROC曲線和lift圖);
  • 推斷模型的可視化功能(例如用樹狀結構來顯示訓練好的決策樹,用氣泡圖來顯示聚類,用網絡圖來顯示關聯等等);
  • 提供探索型數據分析環境
  • 可以把模型保存為標準格式(例如PMML),以便進行共享和移植
  • 提供報表功能,可以生成分析報告,並允許保存用戶的備註或說明

幾款優秀的開源數據挖掘工具

本文只對幾種流行的開源數據挖掘平臺進行了檢視,比如Weka和R等。如果您想找尋更多的開源數據挖掘軟件,可以到KDnuggets和Open Directory上查看。為了評測這些軟件,我們用了UCI Machine Learning Repository上的心臟病診斷數據集。

R

用於統計分析和圖形化的計算機語言及分析工具,為了保證性能,其核心計算模塊是用C、C++和Fortran編寫的。同時為了便於使用,它提供了一種腳本語言,即R語言。R語言和貝爾實驗室開發的S語言類似。R支持一系列分析技術,包括統計檢驗、預測建模、數據可視化等等。在CRAN上可以找到眾多開源的擴展包。
R軟件的首選界面是命令行界面,通過編寫腳本來調用分析功能。如果缺乏編程技能,也可使用圖形界面,比如使用R Commander(http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/)或Rattle(http://rattle.togaware.com)。

技術分享圖片

Tanagra

使用圖形界面的數據挖掘軟件,采用了類似Windows資源管理器中的樹狀結構來組織分析組件。Tanagra缺乏高級的可視化能力,但它的強項是統計分析,提供了眾多的有參和無參檢驗方法。同時它的特征選取方法也很多。

技術分享圖片

Weka

可能是名氣最大的開源機器學習和數據挖掘軟件。高級用戶可以通過Java編程和命令行來調用其分析組件。同時,Weka也為普通用戶提供了圖形化界面,稱為Weka KnowledgeFlow Environment和Weka Explorer。和R相比,Weka在統計分析方面較弱,但在機器學習方面要強得多。在Weka論壇(http://weka.sourceforge.net/wiki/index.php/Related_Projects) 可以找到很多擴展包,比如文本挖掘、可視化、網格計算等等。很多其它開源數據挖掘軟件也支持調用Weka的分析功能。

技術分享圖片

技術分享圖片
技術分享圖片
RapidMiner

YALE (Yet Another Learning Environment) 提供了圖形化界面,采用了類似Windows資源管理器中的樹狀結構來組織分析組件,樹上每個節點表示不同的運算符(operator)。YALE中提供了大量的運算符,包括數據處理、變換、探索、建模、評估等各個環節。YALE是用Java開發的,基於Weka來構建,也就是說它可以調用Weka中的各種分析組件。

技術分享圖片

KNIME

KNIME (Konstanz InformationMiner)是基於Eclipse開發環境來精心開發的數據挖掘工具。無需安裝,方便使用(大家喜歡的綠色版)。和YALE一樣,KNIME也是用Java開發的,可以擴展使用Weka中的挖掘算法。和YALE不同點的是,KNIME采用的是類似數據流(data flow)的方式來建立分析挖掘流程(這個我喜歡,和SAS EM或SPSS Clementine等商用數據挖掘軟件的操作方式類似)。挖掘流程由一系列功能節點(node)組成,每個節點有輸入/輸出端口(port),用於接收數據或模型、導出結果。(感覺KNIME比Weka的KnowledgeFlow更好用,連接節點時很方便,直接用鼠標拖拽連接端口即可。而Weka中則需要在節點上按鼠標右鍵,再選擇後續節點,比較麻煩,剛開始使用時找了半天才知道怎麽連)
KNIME中每個節點都帶有交通信號燈,用於指示該節點的狀態(未連接、未配置、缺乏輸入數據時為紅燈;準備執行為黃燈;執行完畢後為綠燈)。在KNIME中有個特色功能——HiLite,允許用戶在節點結果中標記感興趣的記錄,並進一步展開後續探索。

技術分享圖片

技術分享圖片

Orange

類似KNIME和Weka KnowledgeFlow的數據挖掘工具,它的圖形環境稱為Orange畫布(OrangeCanvas),用戶可以在畫布上放置分析控件(widget),然後把控件連接起來即可組成挖掘流程。這裏的控件和KNIME中的節點是類似的概念。每個控件執行特定的功能,但與KNIME中的節點不同,KNIME節點的輸入輸出分為兩種類型(模型和數據),而Orange的控件間可以傳遞多種不同的信號,比如learners, classifiers, evaluation results, distance matrices, dendrograms等等。Orange的控件不象KNIME的節點分得那麽細,也就是說要完成同樣的分析挖掘任務,在Orange裏使用的控件數量可以比KNIME中的節點數少一些。Orange的好處是使用更簡單一些,但缺點是控制能力要比KNIME弱。
除了界面友好易於使用的優點,Orange的強項在於提供了大量可視化方法,可以對數據和模型進行多種圖形化展示,並能智能搜索合適的可視化形式,支持對數據的交互式探索。
Orange的弱項在於傳統統計分析能力不強,不支持統計檢驗,報表能力也有限。Orange的底層核心也是采用C++編寫,同時允許用戶使用Python腳本語言來進行擴展開發(參見http://www.scipy.org)。

技術分享圖片

技術分享圖片
GGobi

數據可視化是數據挖掘的重要組成部分, GGobi就是用於交互式可視化的開源軟件,它使用brushing的方法。GGobi可以用作R軟件的插件,或者通過Perl、Python等腳本語言來調用。

技術分享圖片

Mahout

是由 Apache Lucene(開源搜索)社區中對機器學習感興趣的一些成員發起的,他們希望建立一個可靠、文檔翔實、可伸縮的項目,在其中實現一些常見的用於集群和分類的機器學習算法。該社區最初基於 Ng et al. 的文章 “Map-Reduce for Machine Learning on Multicore”(見 參考資料),但此後在發展中又並入了更多廣泛的機器學習方法。

Mahout 支持一些集群算法實現(都是使用 Map-Reduce 編寫的),它們都有一組各自的目標和標準:
Canopy:一種快速集群算法,通常用於為其他集群算法創建初始種子。
k-Means(以及 模糊 k-Means):根據項目與之前叠代的質心(或中心)之間的距離將項目添加到 k 集群中。
Mean-Shift:無需任何關於集群數量的推理 知識的算法,它可以生成任意形狀的集群。
Dirichlet:借助基於多種概率模型的集群,它不需要提前執行特定的集群視圖。

PyMining

這是一個能夠根據源數據(比如說用csv格式表示的矩陣,或者中文文檔)使用多種多樣的算法去得到結果的一個平臺。
算法能夠通過xml配置文件去一個一個的運行,比如在開始的時候,我們可以先運行一下主成分分析算法去做特種選擇,然後我們再運行隨機森林算法來做分類。
目前算法主要是針對那些單機能夠完成的任務,該架構良好的擴展性能夠讓你在很短的時間內完成自己想要的算法,並且用於工程之中(相信我,肯定比Weka更快更好)。該項目的另一個特色是能夠很好的支持中文文本的分類、聚類等操作。
開源中文文本數據挖掘平臺 Ver 0.1發布,開源項目詳細介紹 支持中文文本的數據挖掘平臺開源項目PyMining發布

結論
以上介紹的幾款軟件都是優秀的開源數據挖掘軟件,各有所長,同時也各有缺點。讀者可以結合自己的需求來進行選擇,或者組合使用多個軟件。對於普通用戶可以選用界面友好易於使用的軟件,對於希望從事算法開發的用戶則可以根據軟件開發工具不同(Java、R、C++、Python等)來選擇相應的軟件。以上這幾款軟件(除了GGobi)基本上都提供了我們期望的大部分功能。
我嘗試了以上這幾種開源軟件,Weka很有名但用起來並不方便,界面也簡單了點;RapidMiner現在流行的勢頭在上升,但它的操作方式和商用軟件差別較大,不支持分析流程圖的方式,當包含的運算符比較多的時候就不容易查看了;KNIME和Orange看起來都不錯,Orange界面看上去很清爽,但我發現它不支持中文。我的推薦是KNIME,同時安裝Weka和R擴展包。

我的點評純屬個人意見,歡迎大家批評交流。在我的實際工作中使用開源挖掘工具並不多,大部分時候都是在使用SAS Enterprise Miner。

參考推薦:

開源的數據挖掘工具

五個免費開源的數據挖掘軟件

IDMer(數據挖掘博客、論壇列表)

支持中文文本的數據挖掘平臺開源項目PyMining發布

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net

開源的數據挖掘工具