假如你有一個購物類的網站,那么你如何給你的客戶來推薦產品呢?這個功能在很多電商類網站都有,那么,通過SQL Server Analysis Services的數據挖掘功能,你也可以輕松的來構建類似的功能。
將分為三個部分來演示如何實現這個功能。
第一篇介紹如何使用SQL Server Analysis Services基於此問題來構建簡單的挖掘模型。
關於數據挖掘,簡單的就是說從海量數據中發現信息的一個過程。如果說商業智能分為三個層次:告訴你發生了什么,為什么會發生,將來會發生什么。那么,數據挖掘絕對算是商業智能中最高的一個層次,告訴你將來會發生什么,也就是預測。而預測的基礎就是根據海量的歷史數據,結合一定的算法,以概率為基礎,告訴你一條新數據某條屬性的趨勢。
數據挖掘的模型很多,貝葉斯,時間序列,關聯規則等都是常用的模型,根據不同的問題特征可以套用不同的模型算法。比如此篇提到的商品推薦,就是典型的適合用關聯規則來解決。在數據挖掘中典型的啤酒和尿布的問題,大體上就是基於這個方法。
通過第一篇的內容,你可以基本掌握如何構建一個基於關聯規則的數據挖掘模型。
第二篇在上一篇已經構建好挖掘模型的基礎之上,介紹如何構建服務接口。
編寫服務接口的方法很多,比如使用WCF。為了簡便,這里直接使用ASP.NET Web Services。
將挖掘模型的具體查詢的實現部分寫到Web服務代碼中,主要是考慮到代碼分層降低耦合性。另外這部分邏輯通過服務的方式來暴露接口,可以方便其它任何平台來進行調用,比如ASP.NET, Winform, WPF或者其它基於java的技術框架等。Web服務最主要的部分是XML,一個服務接口往往就是一個URL地址,客戶端程序通過向這個地址發送xml請求的方式,來獲取服務端代碼的響應,結果再以xml的方式返回回來。那么既然來回通信的都是xml數據,是否意味這還要手動寫代碼來序列化和反序列化xml數據呢?這里面又涉及到一個SOAP的概念,這是一個在10年前很火的概念,簡單對象訪問協議。通過這個SOAP協議,客戶端程序可以知道要訪問一個Web服務,應該發送什么樣的xml數據,以及收到服務端xml的數據之后,本地再如何解析這些數據。基於這樣一個方式,Visual Studio中,當你引用一個服務的時候,它就會根據這個協議,在你本地生成若干代理類,這樣在你調用遠程的一個Web服務的時候,你就會感覺像是在調用本地里的一個類的方法一樣方便。
通過第二篇的內容,你可以基本掌握做數據挖掘查詢的基本方法,以及如何使用數據挖掘模型。
第三篇在上兩篇已經構建好挖掘模型和服務層的基礎之上,介紹如何構構建簡單的前端應用來做商品推薦功能。
由於我們用的是Web服務的方法來封裝挖掘模型的查詢,所以理論上這個服務可以被很多客戶端應用程序訪問,比如ASP.NET, winform和WPF等,這里我們選擇Silverlight 5。
Silverlight 5是跟FLASH差不多的東西,是微軟平台下的RIA方案。在這個平台下我們可以通過XAML開發出絢麗的應用程序。
雖然它的光輝已經快被HTML5所掩蓋,而且微軟也停止了后續版本的更新,全力的投入到HTML5中,但是HTML5成型還尚早,在企業開發中,Silverlight還是有十足的魅力和足夠的優勢以及強大的開發工具支持。
當然,如果你得項目是ASP.NET或者其它類型的項目,那么也可以參考此篇來進行操作。實際上此篇對於一個有經驗的前端開發人員意義不大,因為這里主要講的是如何調用一個Web服務。但作為一個系列考慮到每個人的側重點都不同,為了做一個整體的介紹,所以這里還將細致到每一步的操作。
通過第三篇的內容,你可以看到如何通過一個客戶端程序訪問服務接口然后做挖掘預測查詢從而實現商品推薦功能。
第四篇獨立於前三篇,主要介紹如何通過Excel的數據挖掘來獨立的實現商品推薦功能,將通過微軟提供的示例數據來進行演示。
Excel是大家再熟悉不過的工具,它是微軟Office里的組件之一。在baidu百科中你可以找到如下的描述:
Excel 是微軟辦公套裝軟件的一個重要的組成部分,它可以進行各種數據的處理、統計分析和輔助決策操作,廣泛地應用於管理、統計財經、金融等眾多領域。
數據處理,統計分析是我們經常用Excel來做的事,而輔助決策對應商業智能中的最高的一個層次,也就是微軟提供的Excel數據挖掘功能。
在Excel中進行數據挖掘,需要安裝一個插件:SQL Server Data Mining Tools Add-ins for Office。
通過第四篇的內容,你可以看到如何通過Excel實現商品推薦功能。
第五篇承接上一篇,主要介紹如何組織數據然后通過Excel的數據挖掘來獨立的實現商品推薦功能。
上一篇中我們演示了如何用微軟提供的Data Mining for Add-ins里的示例數據來實現挖掘預測分析的功能,此篇我們用Adventure Works來演示如何來組織數據在Excel中進行挖掘預測。
微軟提供的Adventure Works示例庫分為OLTP庫和OLAP庫,前者記錄業務數據,在一個系統中的業務數據通常都是操作在這一層,業務數據層經過ETL的清洗加載和轉換進入到數據倉庫,供分析系統做統計分析。
關於如何獲取並且安裝這些示例庫,可以參考我的這篇隨筆。
通過第五篇的內容,你可以簡單的了解如何組織數據挖掘的樣本數據,並且在Excel中導入。
前幾篇中,簡要的介紹如何建立挖掘模型並且編寫程序用簡單的DMX查詢挖掘模型從而實現預測,然后簡要介紹如何在Excel中獨立地進行預測分析。此篇講簡單介紹如何通過DMX語句創建挖掘結構和挖掘模型,並且訓練模型,然后進行預測查詢。
在分析服務中涉及到很多門查詢語言,首先,SQL語言是我們最熟悉不過的了。在分析服務中,可以通過 SQL來為多維數據集建立分區,或者在數據挖掘中指定訓練數據或者預測數據。其次,MDX,可以用它來查詢多維數據集。然后就是本文所介紹的DMX,它主要面向分析服務中的數據挖掘部分,通過它可以建立挖掘結構和挖掘模型,以及訓練數據和做預測查詢。
在微軟的文檔及示例還有很多圖書著作中,通過DMX的方式通常被分為三個步驟: 1.建立挖掘結構 2.建立挖掘模型 3.訓練數據 4.預測查詢
通過第六篇的內容,你可以簡單的了解如何組織數據挖掘的樣本數據,並且在Excel中導入。
上一篇中介紹的是如何通過DMX來創建挖掘模型,這一篇講簡單介紹如何通過編程的方式來創建挖掘模型。
通過編程的方式主要通過AMO來實現,分析服務的所有跟架構相關的實現,包括多維數據集和數據挖掘,都通過這個接口實現。
AMO對象樹包含了支持多維數據集和數據挖掘所有的對象模型,在我這篇隨筆中可以詳細看到它的結構。
通過第七篇一段完整的演示,你可以了解到使用AMO創建模型的具體細節變成方法。
第八篇繼承前幾篇,主要演示在分析服務下創建CLR存儲過程的完整過程
在SQLServer數據引擎服務中,編寫存儲過程,我們可以通過SQL語句以及CLR的方式進行編寫。那么在分析服務下能否寫存儲過程呢?答案是可以的,只不過是只能通過CLR的方式來實現。以下記錄實現過程及要點。
通過第八篇一段完整的演示,你可以了解到創建CLR存儲過程的步驟。
希望這個小系列能在項目中幫到大家。
文章相關文件下載:
用到的資源:
相關插件下載:
Microsoft SQL Server 2012 Data Mining Add-ins for Microsoft Office 2010