如何定位目標使用者,在任何一個業務單元中都是一個很重要的話題,尤其在預算有限的情況下,如何獲得活動的最大收益,目標使用者的定位都是很重要的手段。
本文將介紹如何通過SQL Server分析服務(SSAS)中的資料採礦功能根據記錄資訊來定位目標使用者。
微軟的SQL Server為資料平台提供了一套完整的解決方案,他不只是一個資料引擎,也提供了很多資料工具和服務,藉助其中的分析服務,結合業務系統中的海量曆史資料資訊,SQL SERVER就可以協助我們發現其中的模式和規律,從而對目標資料做預測性分析。
在實際中,不同的採礦模型適用於不同的問題情境,同一個問題模式下可能有多個模型都適合解決這個問題,這樣對於問題的解決來說就多了很多可對比性,從而我們可以根據每個模型預測的準確程度選擇一個最優的模型。
在本文的目標使用者定位的問題上,採用三種採礦模型進行比較,分別是決策樹,貝葉斯和聚類演算法。
本文使用的SQL SERVER版本是2012,樣本資料庫是Adventure Works的資料倉儲,關於如何擷取以及部署這個樣本資料倉儲,可以參考我的這篇隨筆:
http://www.cnblogs.com/aspnetx/archive/2013/01/30/2883831.html
首先,建立資料採礦項目,開啟SQL DATA TOOLS,也就是Visual Studio 2010的那個Shell。
建立一個多維和資料採礦的分析服務項目。
項目建立完畢後,建立資料來源串連。
選擇部署好的Adventure Works DW串連。
輸入類比身份資訊,本示範用為了簡便直接使用本地管理員賬戶(當然生產環境中是不建議這麼做的)。
為資料來源串連起名。
建立資料來源檢視。
選擇剛才建立的資料來源串連。
從左邊可選對象列表中選取兩個對象,一個是表ProspectiveBuyer,一個是視圖vTargetMail。
為資料來源檢視取名。
可以在資料來源檢視中看到添加進來的兩個表。
其中左面的表是在資料倉儲經過整合的一批資料,用來訓練和驗證模型。右面的表是待預測的表,將在模型產生完畢後對這個表裡的資料進行預測。
建立採礦結構。
同時為採礦結構指定一個採礦模型,這裡選擇決策樹模型。需要留意的是,一個採礦結構可以有很多採礦模型,不過在通過工具建立一個採礦結構的時候需要指定一個採礦模型。
選擇剛才建立的資料來源檢視。
選取案例表vTargetMail。ProspectiveBuyer是後續要用來進行預測的,所以這裡先忽略這個表。
首先,在Key列一欄選擇CustomerKey,用來指定鍵列。
然後選擇輸入列:
Age
CommuteDistance
EnglishEducation
EnglishOccupation
Gender
GeographyKey
HouseOwnerFlag
MaritalStatus
NumberCarsOwned
NumberChildrenAtHome
Region
TotalChildren
YearlyIncome
最後,選中以下列表左側需要選擇的列。這些列不作為模型的考慮元素,但是會用在模型的切入結果上。
AddressLine1
AddressLine2
DateFirstPurchase
EmailAddress
FirstName
LastName
確認內容類型,這裡有兩處需要更改,一處是Geography Key改為Discrete離散型的,以及BikeBuyer改為discrete離散型的。
關於內容類型的參考:
http://technet.microsoft.com/zh-cn/library/ms174572
關於資料類型的參考:
http://technet.microsoft.com/zh-cn/library/ms174796
設定測試資料的比例。也就是說,在所有的曆史資料中,這裡將決定,有多少資料用來訓練模型,有多少資料用來對模型進行準確度測試。
這裡可以指定百分比或者最大測試案例數,當兩個都有配置的時候,系統會取最小測試案例集合的配置。
為採礦結構和採礦模型取名,並且選中允許切入的選項。
至此一個決策樹模型產生完畢。
點擊採礦模型標籤,可以更直觀的看到採礦結構和採礦模型的結構。
接下來根據已經建立好的採礦結構,建立其它採礦模型。
右鍵點擊採礦結構,選擇建立採礦模型,為採礦結構添加另外幾個模型用於對預測結果進行比對。
為採礦模型取名,並在演算法中選擇聚類演算法。
按照同樣的方法,再建立一個貝葉斯模型。
由於貝葉斯模型不支援連續變數,所以這裡會出現提示。繼續即可。
可以看到建立好的三個模型,並且每個模型中各個欄位的用法。
點擊工具列上的處理按鈕,對模型進行部署和處理。
第一次部署或者項目有過修改都會出現這樣一個提示,點Yes。
處理介面,直接點擊Run開始處理。
處理過程中,處理的時間取決於訓練資料的大小以及機器的硬體效能。當然對於Adventure Works的這個樣本來說,通常就是10多秒的事。
採礦結構處理完畢後,下面來簡單瀏覽一下各個採礦模型。點擊採礦模型瀏覽器標籤。然後在Mining Mode中選定TU_DecisonTree決策樹模型。
可以看到,Microsoft 決策樹演算法通過在樹中建立一系列拆分來產生資料採礦模型。 這些拆分以"節點"來表示。 每當發現輸入列與可預測資料行密切相關時,該演算法便會向該模型中添加一個節點。 離根節點距離越近的屬性,說明這個屬性的變化對預測列的影響變化更大。
右鍵每一個節點,可以切入到詳細資料。
選擇第一項,查看模型包含的列:
也可以選擇切入模型和採礦結構模型的資訊,這樣前面在左側定義的列就會顯示出來,方便定位詳細資料。
瀏覽群集模型,這裡可以看到各個分類之間的關係,通過拖動左面的滑塊可以看到相互之間關係的強弱。
瀏覽貝葉斯模型,在途中可以看到是否是勘探,模型分析出的幾個關鍵因素,也可以通過左邊的話快查看這些因素有強到弱的關係。
接下來,將對各個模型進行測試。雖然對於一個問題可以應用很多模型來解決,但往往只有一個才是最優的,效率最高的。對模型的測試主要是用到增益圖。
首先,點擊Mining Accuracy Chart選項卡,確定用於增益圖的資料是Use mining model test cases。
然後點擊Lift Chart標籤,系統會顯示根據測試資料產生的增益圖。
從增益圖的結果來看,決策樹的預測效能明顯高於其它模型。
關於增益圖,首先,對角線是隨機機率的結果,最上面的線是最佳理想的預測結果,所以實際的模型預測效率都是介於這兩條線之間。
關於增益圖的更多資訊可以參考微軟的這篇文檔:
http://technet.microsoft.com/zh-cn/library/ms175428
在已經確定決策樹模型是最優模型之後,如果還希望根據性別的不同分析購買風格的差異,可以建立篩選模型。
首先,回到Mining Models選項卡,按右鍵建立好的決策樹模型,選擇建立模型。
在彈出的介面中,給新模型取一個名:TU_DecisionTree_Male,演算法選擇Microsoft 決策樹。
點擊OK完成後,右鍵點擊建立的模型,選擇Set Model Filter…
在Conditions中選擇Gender = M。
按照同樣的方法,建立另外一個TU_DecisionTree_Female,Model Filter中 Conditions選擇Gender = F。
建立完兩個新篩選模型後,點擊增益圖。將Predict Value設定成1,以驗證勘探預測的效能。
點擊Lift Chart查看增益圖。
可以看到,三個決策樹模型的預測效能都是高於其它模型的。
模型測試完畢,可以判斷決策樹是基於定位目標使用者最佳的預測模型。接下來是用決策樹模型對一個表中的資料進行預測。
首先,選擇Mining Model Prediction選項卡。
點擊Select Model…選擇前面建立的TU_DecisionTree模型。
然後點擊Select Case Table…選擇執行個體表ProspectiveBuyer。
點擊OK後,可以看到在表ProspectiveBuyer中並沒有對應的Age列,而這一列是在預測過程中需要參考的一個重要列,所以回到資料來源檢視,在ProspectiveBuyer表裡加入一個計算資料行。
按右鍵表ProspectiveBuyer點擊New Named Calculation…
在彈出的介面中為導出成員取名並填寫計算公式:
可以看到建立的列已經添加到欄位列表的末尾。在資料來源檢視中添加的列可以理解為在物理視圖和表上,在項目裡建立的視圖,所以實際上並沒有對實際的表或者視圖的結構變更。
然後回到預測介面,將Mining Model中的Age列拖拽到Select Input Table(s)中剛建立好的CalAge列。
點擊介面左上方的小表徵圖,切換到Design設計模式。
在下方的網格列表中,Source選擇Prediction Function。
指定一個別名Result,然後在Criteria/Argument中,把Bike Buyer欄位從上方的Mining Model中拖拽過來。
然後在下方的網格列表中,Source選擇TM_DecisionTree,Filed選擇Bike Buyer。最後在下面幾行中Source指定ProsepectiveBuyer然後Filed中依次指定calAge, FirstName, LastName和AddressLine1以及AddressLine2。
點擊工具表徵圖切換到Result結果檢視。
可以看到目標資料的預測結果。
另外,也可以切換到Query模式查看系統產生的DMX語句。
至此,通過建立資料採礦模型,並且選擇最優模型之後,對目標使用者列表裡的資料進行了預測,從而協助使用者更有效率的確定了目標潛在使用者。這樣的預測在某些情境下是非常有用的,比如企業最近要做一個活動推廣,但是費用成本不足以給所有的客戶進行推廣,所以這個時候決定給哪些客戶來推送推廣服務就可以有效降低推廣活動的成本並且擷取最高的推廣收益。
以上,如何使用SQL Server分析服務來定位目標使用者介紹完畢。關於如何將這個資料採礦的功能加入到現有的項目中,可以參考我寫的另外一篇關於購物籃推薦的系列隨筆,裡面會有介紹如何構建Web服務以及編寫簡單的應用訪問這個服務從而使用資料採礦的功能。
http://www.cnblogs.com/aspnetx/archive/2013/02/25/2931603.html
關於分析服務更多內容,歡迎訪問我的部落格http://aspnetx.cnblogs.com
微軟文檔中關於本文中提到的模型演算法的參考:
決策樹模型:http://technet.microsoft.com/zh-cn/library/ms175312.aspx
貝葉斯模型:http://technet.microsoft.com/zh-cn/library/ms174806.aspx
群集模型:http://technet.microsoft.com/zh-cn/library/ms174879.aspx
如果您有任何問題,歡迎在此篇回帖或者給我留言。