數據挖掘是從大型數據集中發現可行信息的過程。數據挖掘使用數學分析來派生存在於數據中的模式和趨勢。通常,由於這些模式的關系過於復雜或涉及數據過多,因此使用傳統數據浏覽無法發現這些模式。
這些模式和趨勢可以被收集在一起並定義為“數據挖掘模型”。挖掘模型可以應用於特定的業務方案,例如:
◆ 預測銷售額
◆ 向特定客戶發送郵件
◆ 確定可能需要搭售的產品
◆ 查找客戶將產品放入購物車的順序序列
生成挖掘模型是大型過程的一部分,此過程包括從提出相關數據問題並創建模型以解答這些問題到將模型部署到工作環境的所有事情。此過程可以使用下列六個基本步驟進行定義:
◆ 定義問題
◆ 准備數據
◆ 浏覽數據
◆ 生成模型
◆ 浏覽和驗證模型
◆ 部署和更新模型
以下關系圖說明過程中每個步驟之間的關系,以及 Microsoft SQL Server 2008 中可用於完成每個步驟的技術。
盡管關系圖中所示的過程是一個循環過程,但是每個步驟並不需要直接執行到下一個步驟。創建數據挖掘模型是一個動態、交互的過程。浏覽完數據之後,您可能會發現數據不足,無法創建適當的挖掘模型,因此必須查找更多的數據。或者,您可以生成數個模型,但隨後發現這些模型無法充分地回答定義的問題,因此必須重新定義問題。您可能必須在部署模型之後對其進行更新,因為又出現了更多的可用數據。可能需要多次重復過程中的每個步驟才能創建良好的模型。
SQL Server 2008 提供用於創建和使用數據挖掘模型的集成環境,稱為 Business Intelligence Development Studio。該環境包括數據挖掘算法和工具,使用這些算法和工具更易於生成用於各種項目的綜合解決方案。
創建數據挖掘解決方案後,您可以使用 SQL Server Management Studio 維護和浏覽該解決方案。
定義問題
與以下關系圖的突出顯示相同,數據挖掘過程的第一步就是明確定義業務問題,並考慮解答該問題的方法。
該步驟包括分析業務需求,定義問題的范圍,定義計算模型所使用的度量,以及定義數據挖掘項目的特定目標。這些任務轉換為下列問題:
◆ 您在查找什麼?您要嘗試找到什麼類型的關系?
◆ 您要嘗試解決的問題是否反映了業務策略或流程?
◆ 您要通過數據挖掘模型進行預測,還是僅僅查找受關注的模式和關聯?
◆ 您要嘗試預測數據集的哪個屬性?
◆ 列如何關聯?或者如果有多個表,則表如何關聯?
◆ 如何分發數據?數據是否具有季節性性質?數據是否可以准確反映業務流程?
若要回答這些問題,可能必須進行數據可用性研究,必須調查業務用戶對可用數據的需求。如果數據不支持用戶的需求,則還必須重新定義項目。
此外,還需要考慮如何將模型結果納入用於度量業務進度的關鍵績效指標 (KPI)。
准備數據
如以下關系圖中突出顯示的那樣,數據挖掘過程的第二步就是合並和清除定義問題步驟中標識的數據。
數據可以分散在公司的各個部門並以不同的格式存儲,或者可能包含錯誤項或缺少項之類的不一致性。例如,數據可能顯示客戶在產品推向市場之前購買該產品,或者客戶在距離她家 2,000 英裡的商店定期購物。
數據清除不僅僅是刪除錯誤數據,還包括查找數據中的隱含相關性、標識最准確的數據源並確定哪些列最適合用於分析。例如,應當使用發貨日期還是訂購日期?最佳銷售影響因素是數量、總價格,還是打折價格?不完整數據、錯誤數據和輸入看似獨立,但實際上有很強的關聯性,它們可以以意想不到的方式影響模型的結果。因此,在開始生成挖掘模型之前,應確定這些問題及其解決方式。
通常,您使用的是一個非常大的數據集,並且無法仔細查看每個事務。因此,必須使用某種自動化的形式(如,在 Integration Services 中)來浏覽數據並找到這些不一致。Microsoft SQL Server 2008 Integration Services (SSIS) 包含完成該步驟所需的所有工具,步驟內容包括轉換到自動執行數據清除和合並。
需要特別注意的是用於數據挖掘的數據不必存儲在聯機分析處理 (OLAP) 多維數據集中,或者甚至不必存儲在關系數據庫中,但是您可以將它們作為數據源使用。您可以使用已被定義為 Analysis Services 數據源的任何數據源執行數據挖掘。這些數據源可以包括文本文件、Excel 工作簿或來自其他外部提供程序的數據。
浏覽數據
如以下關系圖中突出顯示的那樣,數據挖掘過程的第三步就是浏覽已准備的數據。
您必須了解數據,以便在創建挖掘模型時作出正確的決策。浏覽技術包括計算最小值和最大值,計算平均偏差和標准偏差,以及查看數據的分布。例如,通過查看最大值、最小值和平均值,您可以確定數據並不能代表客戶或業務流程,因此您必須獲取更多均衡數據或查看您的預期結果所依據的假定。標准偏差和其他分發值可以提供有關結果的穩定性和准確性的有用信息。大型標准偏差可以指示添加更多數據可以幫助改進模型。與標准分發偏差很大的數據可能已被扭曲,抑或准確反映了現實問題,但很難使模型適合數據。
借助您自己對業務問題的理解來浏覽數據,您可以確定數據集是否包含缺陷數據,隨後您可以設計用於解決該問題的策略或者更深入地理解業務的典型行為。
BI Development Studio 中的數據源視圖設計器包含數種可用於浏覽數據的工具。
此外,在創建模型時,Analysis Services 還會針對該模型中包含的數據自動創建統計摘要,您可以進行查詢以便用於報告或進一步分析。
生成模型
如以下關系圖中突出顯示的那樣,數據挖掘過程的第四步就是生成一個或多個挖掘模型。您將使用從浏覽數據步驟中獲得的知識來幫助定義和創建模型。
通過創建挖掘結構定義要使用的數據。挖掘結構定義數據源,但只有對挖掘結構進行處理後,該結構才會包含任何數據。處理挖掘結構時,Analysis Services 生成可用於分析的聚合信息以及其他統計信息。基於該結構的所有挖掘模型均可使用該信息。
在處理模型之前,數據挖掘模型只是一個容器,指定用於輸入的列、要預測的屬性以及指示算法如何處理數據的參數。處理模型也稱為“定型”。定型表示向結構中的數據應用特定數學算法以便提取模式的過程。在定型過程中找到的模式取決於選擇的定型數據、所選算法以及如何配置該算法。SQL Server 2008 包含多種不同算法,每種算法都適合不同的任務類型,並且每種算法都創建不同的模型類型。
此外,還可以使用參數調整每種算法,並向定型數據應用篩選器,以便僅使用數據子集,進而創建不同結果。在通過模型傳遞數據之後,即可查詢挖掘模型對象包含的摘要和模式,並將其用於預測。
您可以在 BI Development Studio 中使用數據挖掘向導或使用數據挖掘擴展插件 (DMX) 語言來定義新的模型。
務必記住,只要數據發生更改,必須更新數據挖掘結構和挖掘模型。重新處理挖掘結構以進行更新時,Analysis Services 檢索源中的數據,包括任何新數據(如果動態更新源),並重新填充挖掘結構。如果您具有基於結構的模型,則可以選擇更新基於該結構的模型,這表示可以根據新數據保留模型,或者也可以使模型保持原樣。
浏覽和驗證模型
如以下關系圖中突出顯示的那樣,數據挖掘過程的第五步就是浏覽您已經生成的挖掘模型並測試其有效性。
在將模型部署到生產環境之前,您需要測試模型的性能。此外,在生成模型時,您通常需要使用不同配置創建多個模型,並對所有這些模型進行測試,以便查看哪個模型為您的問題和數據生成最佳結果。
Analysis Services 提供的工具可幫助您將數據分成定型數據集和測試數據集,使您可以更准確地評估基於相同數據的所有模型的性能。您使用定型數據集生成模型,並通過創建預測查詢來使用測試數據集測試模型的准確性。在 SQL Server 2008 Analysis Services 中,生成挖掘模型時可自動執行該分區操作。
可以使用 BI Development Studio 中數據挖掘設計器內的查看器來浏覽算法發現的趨勢和模式。還可以使用該設計器中的工具(如,提升圖和分類矩陣)來測試模型創建預測的性能。若要驗證模型是否特定於您的數據,或者是否可用於推斷總體,您可以使用稱為“交叉驗證”的統計方法來自動創建數據子集,並參照每個子集測試模型。
如果您在生成模型步驟中創建的所有模型都無法正常工作,則必須返回到此過程的上一個步驟,並重新定義問題或重新調查原始數據集中的數據。
部署和更新模型
如下面的關系圖中突出顯示的那樣,數據挖掘過程的最後一步是將性能最佳的模型部署到生產環境。
當生產環境中部署了挖掘模型之後,便可根據您的需求執行許多任務。下面是一些可以執行的任務:
使用模型創建預測,然後可以使用這些預測作出業務決策。SQL Server 提供可用於創建預測查詢的 DMX 語言,同時還提供有助於生成查詢的預測查詢生成器。
創建內容查詢以檢索模型中的統計信息、規則或公式。
直接將數據挖掘功能嵌入到應用程序。您可以包括含有一組對象的分析管理對象 (AMO),應用程序可使用這組對象創建、更改、處理以及刪除挖掘結構和挖掘模型。另外,可以直接將 XML for Analysis (XMLA) 消息發送到 Analysis Services 實例。
使用 Integration Services 創建一個包,在這個包中,挖掘模型用於將傳入數據合理地分離到多個表中。例如,如果數據庫不斷地通過潛在客戶進行更新,則可以結合使用挖掘模型和 Integration Services 將傳入數據拆分為可能購買產品的客戶和不可能購買產品的客戶。
創建可讓用戶直接對現有挖掘模型進行查詢的報表。
在查看和分析後更新模型。任何更新都要求您重新處理該模型。
隨著組織傳入的數據不斷增多,應將動態更新模型並進行一致更改(以便提高解決方案的效率)作為部署策略的一部分。