SPSS Clementine 數據挖掘入門

這篇文章是從網上找到的,非常非常好,特別適合入門的人,裏面有實際的一個挖掘例子,非常實用。推薦給大家。

SPSS Clementine是Spss公司收購ISL獲得的數據挖掘工具。在Gartner的客戶數據挖掘工具評估中,僅有兩家廠商被列爲領導者:SAS和SPSS。SAS獲得了最高ability to execute評分,代表着SAS在市場執行、推廣、認知方面有最佳表現;而SPSS獲得了最高的completeness of vision,表明SPSS在技術創新方面遙遙領先。

客戶端基本界面

SPSS Clementine(在此簡稱clementine)在安裝好後會自動啓用服務,服務端的管理需要使用SPSS Predictive Enterprise Manager,在服務端clementine沒有複雜的管理工具,一般的數據挖掘人員通過客戶端完成所有工作。下面就是clementine客戶端的界面。


一看到上面這個界面,我相信只要是使用過SSIS+SSAS部署數據挖掘模型的,應該已經明白了六、七分。是否以躍躍欲試了呢,別急,精彩的還在後面 ^_’

項目區

顧名思義,是對項目的管理,提供了兩種視圖。其中CRISP-DM (Cross Industry Standard Process for Data Mining,數據挖掘跨行業標準流程)是由SPSS、DaimlerChrysler(戴姆勒克萊斯勒,汽車公司)、NCR(就是那個擁有Teradata的公司)共同提出的。Clementine裏通過組織CRISP-DM的六個步驟完成項目。在項目中可以加入流、節點、輸出、模型等。

工具欄

工具欄總包括了ETL、數據分析、挖掘模型工具,工具可以加入到數據流設計區中,跟SSIS中的數據流非常相似。Clementine中有6類工具。

源工具(Sources)

相當SSIS數據流中的源組件啦,clementine支持的數據源有數據庫、平面文件、Excel、維度數據、SAS數據、用戶輸入等。

記錄操作(Record Ops)和字段操作(Field Ops)

相當於SSIS數據流的轉換組件,Record Ops是對數據行轉換,Field Ops是對列轉換,有些類型SSIS的異步輸出轉換和同步輸出轉換(關於SSIS異步和同步輸出的概念,詳見拙作:http://www.cnblogs.com/esestt/archive/2007/06/03/769411.html)。

圖形(Graphs)

用於數據可視化分析。

輸出(Output)

Clementine的輸出不僅僅是ETL過程中的load過程,它的輸出包括了對數據的統計分析報告輸出。


※在ver 11,Output中的ETL數據目的工具被分到了Export的工具欄中。


模型(Model)

Clementine中包括了豐富的數據挖掘模型。

數據流設計區

這個沒什麼好說的,看圖就知道了,有向的箭頭指明瞭數據的流向。Clementine項目中可以有多個數據流設計區,就像在PhotoShop中可以同時開啓多個設計圖一樣。

比如說,我這裏有兩個數據流:Stream1和Stream2。通過在管理區的Streams欄中點擊切換不同的數量流。

管理區

管理區包括Streams、Outputs、Models三欄。Streams上面已經說過了,是管理數據流的。

Outputs

不要跟工具欄中的輸出搞混,這裏的Outputs是圖形、輸出這類工具產生的分析結果。例如,下面的數據源連接到矩陣、數據審查、直方圖工具,在執行數據流後,這個工具產生了三個輸出。在管理區的Outputs欄中雙擊這些輸出,可看到輸出的圖形或報表。


Models

經過訓練的模型會出現在這一欄中,這就像是真表(Truth Table)的概念那樣,訓練過的模型可以加入的數據流中用於預測和打分。另外,模型還可以導出爲支持PMML協議的XML文件,但是PMML沒有給定所有模型的規範,很多廠商都在PMML的基礎上對模型內容進行了擴展,Clementine除了可以導出擴展的SPSS SmartScore,還可以導出標準的PMML 3.1。

下面使用Adventure Works數據庫中的Target Mail作例子,通過建立分類樹和神經網絡模型,決策樹用來預測哪些人會響應促銷,神經網絡用來預測年收入。

Target Mail數據在SQL Server樣本數據庫AdventureWorksDW中的dbo.vTargetMail視圖,關於Target Mail詳見:

http://technet.microsoft.com/zh-cn/library/ms124623.aspx#DataMining

或者我之前的隨筆:

http://www.cnblogs.com/esestt/archive/2007/06/06/773705.html

1. 定義數據源

將一個Datebase源組件加入到數據流設計區,雙擊組件,設置數據源爲dbo.vTargetMail視圖。


在Types欄中點“Read Values”,會自動讀取數據個字段的Type、Values等信息。


Values是字段包含的值,比如在數據集中NumberCardsOwned字段的值是從0到4的數,HouseOwnerFlag只有1和0兩種值。Type是依據Values判斷字段的類型,Flag類型只包含兩種值,類似於boolean;Set是指包含有限個值,類似於enumeration;Ragnge是連續性數值,類似於float。通過了解字段的類型和值,我們可以確定哪些字段能用來作爲預測因子,像AddressLine、Phone、DateFirstPurchase等字段是無用的,因爲這些字段的值是無序和無意義的。

Direction表明字段的用法,“In”在SQL Server中叫做“Input”,“Out”在SQL Server中叫做“PredictOnly”,“Both”在SQL Server中叫做“Predict”,“Partition”用於對數據分組。

2. 理解數據

在建模之前,我們需要了解數據集中都有哪些字段,這些字段如何分佈,它們之間是否隱含着相關性等信息。只有瞭解這些信息後才能決定使用哪些字段,應用何種挖掘算法和算法參數。

在除了在建立數據源時Clementine能告訴我們值類型外,還能使用輸出和圖形組件對數據進行探索。


例如先將一個統計組件和一個條形圖組件拖入數據流設計區,跟數據源組件連在一起,配置好這些組件後,點上方綠色的箭頭。


等一會,然後這兩個組件就會輸出統計報告和條形圖,這些輸出會保存在管理區中(因爲條形圖是高級可視化組件,其輸出不會出現在管理區),以後只要在管理區雙擊輸出就可以看打開報告。

3. 準備數據

將之前的輸出和圖形工具從數據流涉及區中刪除。

將Field Ops中的Filter組件加入數據流,在Filter中可以去除不需要的字段。


我們只需要使用MaritalStatus、Gender、YearlyIncome、TatalChildren、NumberChildrenAtHome、EnglishEducation、EnglishOccupation、HouseOwnerFlag、NumberCarsOwned、CommuteDistance、Region、Age、BikeBuyer這些字段。

加入Sample組件做隨機抽樣,從源數據中抽取70%的數據作爲訓練集,剩下30%作爲檢驗集。


注意爲種子指定一個值,學過統計和計算機的應該知道只要種子不變,計算機產生的僞隨機序列是不變的。

因爲要使用兩個挖掘模型,模型的輸入和預測字段是不同的,需要加入兩個Type組件,將數據分流。

決策樹模型用於預測甚麼人會響應促銷而購買自行車,要將BikeBuyer字段作爲預測列。


神經網絡用於預測年收入,需要將YearlyIncome設置爲預測字段。


有時候用於預測的輸入字段太多,會耗費大量訓練時間,可以使用Feature Selection組件篩選對預測字段影響較大的字段。

從Modeling中將Feature Selection字段拖出來,連接到神經網絡模型的組件後面,然後點擊上方的Execute Selection。


Feature Selection模型訓練後在管理區出現模型,右擊模型,選Browse可查看模型內容。模型從12個字段中選出了11個字段,認爲這11個字段對年收入的影響比較大,所以我們只要用這11個字段作爲輸入列即可。


將模型從管理區拖入數據流設計區,替換原來的Feature Selection組件。

4. 建模

加入Nearal Net和CHAID模型組件,在CHAID組件設置中,將Mode項設爲”Launch interactive session”。然後點上方的綠色箭頭執行整個數據流。


Clementine在訓練CHAID樹時,會開啓交互式會話窗口,在交互會話中可以控制樹生長和對樹剪枝,避免過擬合。如果確定模型後點上方黃色的圖標。


完成後,在管理區又多了兩個模型。把它們拖入數據流設計區,開始評估模型。

5. 模型評估

修改抽樣組件,將Mode改成“Discard Sample”,意思是拋棄之前用於訓練模型的那70%數據,將剩下30%數據用於檢驗。注意種子不要更改。


我這裏只檢驗CHAID決策樹模型。將各種組件跟CHAID模型關聯。


執行後,得到提升圖、預測準確率表……


6. 部署模型
Export組件都可以使用Publish發佈數據流,這裏會產生兩個文件,一個是pim文件,一個是par文件。

pim文件保存流的所有信息,par文件保存參數。有了這兩個文件就可以使用clemrun.exe來執行流,clemrun.exe是Clementine Solution Publisher的執行程序。Clementine Solution Publisher是需要單獨授權的。在SSIS中pim和par類似於一個dtsx文件,clemrun.exe就類似於dtexec.exe。
如果要在其他程序中使用模型,可以使用Clementine執行庫(CLEMRTL),相比起Microsoft的ole db for dm,SPSS的提供的API在開發上還不是很好用。

瞭解SPSS Clementine的基本應用後,再對比微軟的SSAS,各自的優缺點就非常明顯了。微軟的SSAS是Service Oriented的數據挖掘工具,微軟聯合SAS、Hyperion等公司定義了用於數據挖掘的web服務標準——XMLA,微軟還提供OLE DB for DM接口和MDX。所以SSAS的優勢是管理、部署、開發、應用耦合方便。

但SQL Server 2005使用Visual Studio 2005作爲客戶端開發工具,Visual Studio的SSAS項目只能作爲模型設計和部署工具而已,根本不能獨立實現完整的Crisp-DM流程。儘管MS Excel也可以作爲SSAS的客戶端實現數據挖掘,不過Excel顯然不是爲專業數據挖掘人員設計的。
PS:既然說到Visual Studio,我又忍不住要發牢騷。大家都知道Visual Studio Team System是一套非常棒的團隊開發工具,它爲團隊中不同的角色提供不同的開發模板,並且還有一個服務端組件,通過這套工具實現了團隊協作、項目管理、版本控制等功能。SQL Server 2005相比2000的變化之一就是將開發客戶端整合到了Visual Studio中,但是這種整合做得並不徹底。比如說,使用SSIS開發是往往要一個人完成一個獨立的包,比起DataStage基於角色提供了四種客戶端,VS很難實現元數據、項目管理、並行開發……;現在對比Clementine也是,Clementine最吸引人的地方就是其提供了強大的客戶端。當然,Visual Studio本身是很好的工具,只不過是微軟沒有好好利用而已,期望未來的SQL Server 2K8和Visual Studio 2K8能進一步改進。

sc102.jpg

所以我們不由得想到如果能在SPSS Clementine中實現Crisp-DM過程,但是將模型部署到SSAS就好了。

首先OLE DB for DM包括了Model_PMML結構行集,可以使用DMX語句“Create Mining Model From PMML ”將SPSS Clementine導出的PMML模型加入SSAS。

如果我記得沒錯的話,SQL Server 2005 最初發表版本中Analysis Services是PMML 2.1標準,而Clementine 11是PMML 3.1的,兩者的兼容性不知怎樣,我試着將一個PMML文件加入SSAS,結果提示錯誤。

另外,在SPSS Clementine中可以整合SSAS,通過使用SSAS的算法,將模型部署到SSAS。具體的做法是:

在SSAS實例中修改兩個屬性值。

在Clementine菜單欄選Tools -> Helper Applications。

然後啓用SSAS整合,需要選擇SSAS數據庫和SQL Server RMDBS,RMDBS是用來存儲臨時數據的,如果在Clementine的流中使用了SAS數據源,但SSAS不支持SAS數據文件,那麼Clementine需要將數據源存入臨時數據表中以便SSAS能夠使用。


啓用整合後,就可以在工具欄中看到多出了一類Datebase Modeling組件,這些都是SSAS的數據挖掘算法,接下來的就不用說了……

可惜的是SSAS企業版中就帶有9中算法,另外還有大量第三方的插件,但Clementine 11.0中只提供了7種SSAS挖掘模型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章