簡介
數據挖掘使專家、分析師和用戶可以洞察大量數據集中存在的模式,並使之成為日常業務流程中的一部分。在過去,數據挖掘一直是統計和數據分析專家的任務。另一方面,數據挖掘的結果又常常與公司中各種不同的用戶有關聯。
考慮以下場景。您收集關於符合特定的人口特征(例如年齡、職業和居住地點)的客戶以及過去的事務(例如售出的產品以及合同)的數據。商場營銷部門希望針對具有相似特點的特定客戶群開發新的定制產品。如何發現那樣的獨特用戶群?數據集群為這個問題提供了一個解決方案。它自動根據數據集的屬性或特征對數據集進行分組。然後,分析師查看這些組,並交互式地對它們進行微調,直到滿足他/她的需要。而市場營銷專家將發現,有一群為數不多、但是在經濟上有重大意義的客戶,他們的年齡超出了平均年齡,不使用 Internet 銀行。根據這樣的信息,可以為這些客戶開發專門的產品。在分析過程中,一個關鍵的步驟就是讓用戶理解數據集群步驟的結果。專業的分析師通常並不擅長低級的數據庫編程。
如何將數據挖掘的結果交付給需要它的分析師和雇員?如何顯示結果,以反映用戶所涉及的業務流程?如何滿足安全性需求,使每個用戶只看到他/她應該看到的內容。對於這些問題,要想給出令人滿意的答案,必須將視角從統計分析轉變到實際的終端用戶以及他/她所涉及的業務流程上來。InfoSphere Warehouse 是企業數據倉庫的強有力的基礎。InfoSphere Warehouse 直接在存儲數據的底層 DB2 數據庫中提供數據挖掘功能。整個數據挖掘功能可以通過一個容易使用的、基於 Eclipse 的工具平台來訪問,而且部署任務可以直接在工具中觸發。
IBM Cognos 是報告解決方案中的領先者之一。在很多公司中,報告扮演著一個重要的角色,因為它有助於以不同的方式為不同的目標人群合並和可視化相關信息。報告的結果通常是通過對存儲在數據倉庫中的信息應用基本的算術運算而得到的(例如,每月的平均銷售額)。對於高級的分析,例如上面的例子,則超出了報告框架的范圍和能力。因此,可以將兩者相結合,既使用 InfoSphere Warehouse 的可伸縮的、高級的分析功能,又使用 IBM Cognos 已有的、先進的報告功能。接下來的小節展示如何靈活地將 IBM InfoSphere Warehouse Data Mining 與 IBM Cognos 相結合,以實現這個目標。這種集成不需要任何復雜的編程或設置,只需使用純 DB2 SQL 就能完成。
接下來的小節簡要地介紹 InfoSphere Warehouse 和 IBM Cognos 的基本架構。然後將描述如何集成它們。最後,通過一個簡單的、逐步講解的來自醫療保健領域的例子來演示這種集成。這個系列接下來的文章將描述這種集成的一些更高級的技巧和概念。
產品組件
IBM InfoSphere Warehouse
InfoSphere Warehouse 以 DB2 作為數據存儲。它提供了數據庫分區功能(DPF),以便以可伸縮的、安全的、高性能的方式存儲數據倉庫中的數據,並將在線事務處理(OLTP)數據庫的優點與大型數據倉庫的存儲需求相結合。InfoSphere Warehouse 提供了很多不同的用於倉庫管理和分析的工具。這些分析組件有:
Cubing 服務
數據挖掘
文本分析
InfoSphere Warehouse Design Studio 是基於 Eclipse 的工具平台,用於為數據挖掘和文本分析設計工作負載規則、數據轉換流和分析流。然後,可以將這些流部署到 InfoSphere Warehouse 管理控制台,以根據需要進行調度和運行。InfoSphere Warehouse 數據挖掘是用 DB2 存儲過程和用戶定義函數構建的,以利用 DB2 作為執行環境,從而獲得高性能的數據庫內執行。可以通過 SQL 接口或通過 InfoSphere Warehouse 的挖掘流訪問它。
數據挖掘是一項從大型數據集中發現有用信息的任務。一個典型的場景是醫療保健,本文將用它作為實例。如今可以收集到大量的衛生保健數據,這些數據描述很多不同的病人數年來的狀態。這種數據的一個重要用途是在早期發現潛伏性疾病的指標。例如,出於這個目的,可以收集患有心髒病的病人的數據,並分析什麼因素與這種疾病有關,例如血壓和體重。這種數據必須在收集後進行轉換,使之能用於數據挖掘。更具體而言,需要有一個表,每個病人對應於其中的一行記錄,表中有一些列,表示關於病人的信息。而且,還應該有一個專門的列表明這個病人是否真正患病。圖 1 顯示了一種可能的模式:
圖 1. 心髒病數據庫表的模式(InfoSphere Warehouse 例子的一部分)
基於這種數據,InfoSphere Warehouse 中的存儲過程可以構建一個模型,對於任何新的病人,該模型可以預測他/她是否可能有潛伏性心髒病。這個過程稱作 “建模”。這樣得到的 XML 數據挖掘模型存儲在數據庫中,可以通過 SQL/XQuery 進行訪問。這個模型可用於兩個目的:首先,可以從這個模型提取信息,以洞察哪些是心髒病的重要指標以及其他統計信息。其次,可以將該模型自動應用到新的數據記錄上。因此,對於在心髒病這一列上還沒有值的任何記錄,可以自動添加這個值,另外再添加一個表示預測的置信度的一個值。這個過程稱作 “評價”。圖 2 通過示意圖顯示了這個過程:
圖 2. 基於歷史數據構建預測模型,然後將此模型應用到新數據上
InfoSphere Warehouse 幾乎包含目前所有數據挖掘算法的極為高效的實現。要調用數據挖掘,首先要將數據寫到一個表中。然後創建一個模型,再將這個模型應用到目標值尚且未知的記錄上,以產生一個預測和該預測的置信度值。所有數據挖掘函數都是作為常規的 SQL 命令來調用的,後面您將看到這一點。這樣便很容易集成到幾乎所有的設置中,例如 Web 服務。
IBM Cognos 8 Business Intelligence
IBM Cognos 8 Business Intelligence 提供一套完整的商業智能(BI)功能,並且基於一個靈活的面向服務架構(SOA)。它的主要功能有報告、分析、指示板(dashboard)和計分卡(scorecarding)。
報告用於聚合關於業務流程的相關數據,並將它分發給最能從這種特定信息中受益的人。在數據挖掘環境中,這意味著將結果傳遞給最能從生成的業務洞察力中受益的人。
創建和發布業務報告所需的 Cognos 8 組件有:
Cognos Connection:Cognos 8 功能的 Web 門戶和入口點。用戶可以從這裡管理、組織和查看已有的內容,例如報告或指示板。可以從 Cognos Connection 啟動基於 Web 的 authoring studio,例如 Report Studio,以創建新的資源或編輯已有的資源。它還可以用於管理 Cognos 服務器,例如更改訪問限制、導入內容或者更改將一份報告發送給哪些人的列表。
Cognos Framework Manager:用於 Cognos 8 中使用的數據源的建模工具。例如,在 Cognos 報告中,可以通過在 Framework Manager 中描述一個元數據層,來訪問大多數數據庫和其他數據源,例如 Web 服務中的數據。可以將數據庫表、視圖和存儲過程作為查詢主題添加到 Cognos 包中。Framework Manager 用於導入和合並公司中不同數據源中的信息,以便在 Report Studio 等的 Cognos 8 BI 工具中以一致的方式使用該信息。需要特別注意的是,創建報告時,數據本身還是存放在數據源中,並在那裡被訪問。
Cognos Report Studio:Cognos 8 BI 中的一個基於 Web 的 authoring studio。它用於創建和編輯關於 Framework Manager 中描述的數據的高級報告。它提供了一些強大的功能,例如下鑽(drill-down)、提示和豐富的圖表庫。
要將這種數據放入報告中,需要執行兩個步驟:
在 Framework Manager,數據建模者創建 Cognos 元數據,這種元數據從業務的角度描述數據庫中的數據(包括表之間的關系、值的業務名稱等)。
創建好元數據後,將它作為一個包部署到 Cognos 8 內容存儲中。然後可以通過 Cognos Connection 和 authoring studio 從這裡訪問它。
報告設計者進入 Cognos Connection,並在部署的包上創建一個新報告。創建報告後,可以管理目標組和分發形式(例如 email 或 Web 門戶)。
能夠從關系數據源創建報告是 InfoSphere Warehouse 數據挖掘與 IBM Cognos 集成的關鍵。
集成架構
如前所述,Cognos 報告的內容由一個關系數據源交付的一個結果集組成。一個特定報告的內容由針對一個或多個數據源的一個(動態的)SQL 查詢決定。可以通過以下方式,利用這個基本的通信模式將數據挖掘與 Cognos 報告集成:
Cognos 可以顯示有評價信息的表,還可能一起顯示置信度信息。
Cognos 可用於顯示模型信息。該信息是通過表提取器函數或 XQuery 查詢從實際的 XML 模型中提取的。
Cognos 可以通過調用 SQL 存儲過程來動態地調用數據挖掘和評價。這樣便允許:
在報告界面中以用戶提供的不同設置調用數據挖掘
在數據的不同子集上調用數據挖掘(例如,創建遞歸下鑽報告)
根據用戶的輸入動態地進行記錄
圖 3 總結了所有這些案例中使用的調用模式。
圖 3. IBM InfoSphere 數據挖掘與 IBM Cognos 報告的基本集成架構
可以通過一個存儲過程調用來調用數據挖掘,數據挖掘將在數據庫中創建一個 XML 挖掘模型。可以根據新的數據記錄這個模型,或者將模型信息提取到一個表中。然後,Cognos 可以使用這些表。從 Cognos 報告中,用戶可以通過調用數據庫上相應的存儲過程,交互式地調用數據挖掘。
這種集成帶來了很多好處:
它非常簡單,只需要 SQL 方面的知識,而不需要附加的編程。
挖掘模型存儲在數據庫中,可以從 Cognos 中安全、有效地訪問它們。
通過使用存儲過程,可以從 Cognos 中觸發和控制整個數據挖掘過程。
接下來的小節是這種集成的一個逐步講解的例子,這也是最簡單的例子:對數據庫中的記錄進行評價,並將結果顯示在一個 Cognos 報告中。模型信息的提取和從 Cognos 中對數據挖掘的動態調用將在本系列接下來的文章中談到。
在 Cognos 報告中使用數據挖掘結果:衛生保健部門的一個例子
這個例子分析一家醫院的病人數據。這家醫院的心髒科有他們的病人的主記錄,以及一些度量指標,例如心率、血壓、膽固醇等。這家醫院針對四種不同的心髒病對病人進行檢查。病人的記錄中有一個列表明他們是否患有四種心髒病之一,y 表示是,n 表示否。圖 1 中描繪了相應的心髒病數據庫表。這個表可以在 InfoSphere Warehouse 附帶的例子中找到。
分析的目標是預測新的病人患上這四種心髒病之一的風險。如果風險較高,則應該立即進行體檢。
這裡啟用了風險管理,雖然沒有針對這四種心髒病之一做過專門的檢查,但是已經從一些早期的在其他地方做的體檢得到度量指標。
創建預測模型
首先,基於 HEART 表創建一個預測模型,通過該模型可以預測病人患上心髒病的風險。
創建一個 Data Warehouse 項目:
右鍵單擊 Project Explorer,並選擇 New > Data Warehouse Project(如下面的圖 4 所示)。
圖 4. 創建一個 Data Warehouse 項目
在接下來的向導中,輸入項目名稱,例如:AdvancedAnalytics。然後單擊 Finish。
創建一個空的挖掘流:
展開新創建的項目。
右鍵單擊文件夾 Mining Flows,並選擇 New > Mining Flow。
在出現的向導中,輸入挖掘流的名稱 Heart Disease Risk。
在這個例子中,您將使用數據庫。因此,保留默認設置,單擊 Next。
選擇 DWESAMP 數據庫,並單擊 Finish。
創建挖掘流:
這時會打開 Mining Flow 編輯器。在挖掘編輯器的右側可以看到一個面板,其中有一些操作符(見圖 5)。可以通過將這些操作符拖放到編輯器畫布上來構建一個挖掘流。
圖 5. Design Studio 中的挖掘流
查看原圖(大圖)
為了創建用於預測病人患病風險的挖掘模型,可遵循以下步驟:
在面板中,從 Sources and Targets 區中選擇一個 Table Source 操作符,將它拖到編輯器上。
在表選擇對話框中,展開 HEALTHCARE 模式並選擇 HEART 表,然後單擊 Finish。
在面板中,從 Preprocessing Operators 區中選擇一個 Random Split 操作符並將它拖到編輯器上。
通過拖動鼠標,將第一個操作符的 Output 端連接到第二個操作符的 Input 端。
選擇 Random Split 操作符。
在挖掘編輯器下面的 PropertIEs 選項卡中,將測試數據屬性 Percentage 設為 20。這意味著之後我們將使用 20% 的數據來驗證我們的模型。因此,在構建預測模型之前,必須先劃分數據。
在面板中,從 Mining Operators 區選擇一個 Predictor 操作符並將它拖到編輯器上。
將 split 操作符的 Training Output 端與 Predictor Input Port 相連。
選擇 Predictor 操作符。
在挖掘編輯器下面的 PropertIEs 選項卡中,選擇左邊的 Mining Settings 選項卡。
在 Target column 選擇列表中,選擇 DISEASED 作為要預測的列。
Design Studio 自動識別出您要預測一個標稱值列,並自動提供可用於這一目的設置(在同一個選項卡中)。在 Algorithm 選擇列表中,選擇 Na&iUML;ve Bayes。
在 Mining Settings propertIEs 選項卡上,選擇 Model Name 選項卡。保留前綴,但是將模型名稱改為 HeartDiseasePrediction。
另外,從面板中的 Mining 區選擇 Tester 操作符,並將它拖到編輯器上。
將 Predictor 的 Model output 端與 Tester 的 Model input 端相連,再將 Random Split 的 Test output 端與 Tester 的 input 端相連。
保存挖掘流,例如單擊編輯器區並按 Ctrl+S。
現在,挖掘流已經可以執行了。
執行挖掘流:
可以執行整個挖掘流編輯器,或者通過右鍵單擊一個操作符並選擇 Run to this step… 只執行挖掘流中特定的路徑。在這個場景中,右鍵單擊 Tester 操作符,選擇 Run to this step…,然後單擊 Finish。這個流生成一個模型,該模型預測患上心髒病的風險,並將它存儲在數據庫中。先在 80% 的數據上對它進行訓練,然後在剩下的數據上對它進行測試。這樣可以估計該模型在新數據上執行的效果。這裡只需右鍵單擊 Tester 操作符的 Test Result 端。您也可以看看模型本身。為此,右鍵單擊 Predictor 操作符的 Model 端。
使用挖掘模型對新數據進行評價
評價是指將之前經過學習的模型應用到新數據上。新的數據沒有分類別(這裡是指還沒有做過心髒病檢查),評價過程根據挖掘模型將一個預測賦給每個新的記錄。
為評價創建一個新的挖掘流:
執行與創建新的挖掘流中相同的步驟,但是為它提供另一個名稱,例如 Classify New PatIEnts。
創建評價流:
為了創建用於對新病人分類的評價流,可執行以下步驟:
在面板中,從 Sources and Targets 區選擇一個 Model Source 操作符並將它拖到編輯器上。
在挖掘模型選擇對話框中,展開 classification 模型,並選擇 AdvancedAnalytics.HeartDiseasePrediction 模型。
從面板的 Sources and Targets 區中將一個 Table Source 操作符拖到編輯器上。
在表選擇對話框中,展開 HEALTHCARE 模式並選擇 HEART 表。可以每晚將這個表裝載到倉庫中,或者每當有新的病人來醫院,並且有必要的度量指標時實時地將這個表裝載到倉庫中。
從面板的 Mining Operators 區中將一個 Scorer 操作符拖到編輯器上。
將模型和 table source 操作符連接到 scorer。
scorer 附加 2 個列,其中一個列包含類別(y 和 n),另一個列指定這個類別的確定性。為了存儲這個有評價信息的表,必須以 Table Target 操作符的形式創建一個包含這些列的適當的表。
為此,右鍵單擊 scorer 的輸出端,並選擇 Create Suitable Table…。
在出現的對話框中,指定新表的名稱:NEW_PATIENT_CLASSIFICATION,以及將在其中創建這個表的模式:HEALTHCARE。 單擊 Finish。
保存評價流。
最後,通過右鍵單擊 table target 操作符並選擇 run to this step,執行這個流。
執行這個流後,下方的視圖會顯示有評價信息的表中的示例數據(見圖 6)。如果向右滾動,可以看到 scorer 添加的兩個列。
圖 6. 有示例結果的評價流