使(shi)用(yong)SQL Server分析服務定位目標用(yong)戶
如(ru)何定(ding)位目(mu)標用戶(hu),在任何一個業務單元中都是(shi)一個很(hen)重(zhong)要(yao)的(de)話(hua)題,尤其在預算(suan)有限的(de)情況(kuang)下,如(ru)何獲得(de)活動的(de)最大收(shou)益,目(mu)標用戶(hu)的(de)定(ding)位都是(shi)很(hen)重(zhong)要(yao)的(de)手段。
本文將介紹如何通(tong)過SQL Server分(fen)析服務(SSAS)中的數據挖掘功能(neng)根據歷史(shi)記錄信(xin)息來定(ding)位目標用戶。
微軟的(de)(de)SQL Server為數據平臺提供了一(yi)套完整的(de)(de)解決方案,他不只是一(yi)個數據引擎,也提供了很多數據工具和服(fu)務,借助其中(zhong)的(de)(de)分析服(fu)務,結合業(ye)務系統中(zhong)的(de)(de)海量歷史數據信息,SQL SERVER就可(ke)以幫(bang)助我們發現(xian)其中(zhong)的(de)(de)模式和規律,從而(er)對目標數據做預測分析。
在實(shi)際中(zhong),不同(tong)的(de)(de)挖掘(jue)模(mo)(mo)型(xing)適用于不同(tong)的(de)(de)問(wen)題(ti)(ti)場景(jing),同(tong)一個(ge)(ge)問(wen)題(ti)(ti)模(mo)(mo)式下可能有多(duo)個(ge)(ge)模(mo)(mo)型(xing)都適合解決這(zhe)(zhe)個(ge)(ge)問(wen)題(ti)(ti),這(zhe)(zhe)樣對于問(wen)題(ti)(ti)的(de)(de)解決來說就多(duo)了(le)很多(duo)可對比性,從而我們可以(yi)根據每個(ge)(ge)模(mo)(mo)型(xing)預(yu)測的(de)(de)準(zhun)確程度選擇一個(ge)(ge)最優(you)的(de)(de)模(mo)(mo)型(xing)。
在本文(wen)的目(mu)標用(yong)(yong)戶定位(wei)的問題(ti)上,采(cai)用(yong)(yong)三種挖掘(jue)模(mo)型進行比較(jiao),分(fen)別是決策樹,貝葉斯和聚(ju)類算(suan)法。
本文使用的SQL SERVER版本是2012,示例數(shu)據庫(ku)是Adventure Works的數(shu)據倉庫(ku),關于如何(he)獲(huo)取以(yi)及部署這個(ge)示例數(shu)據倉庫(ku),可(ke)以(yi)參考我(wo)的這篇隨筆:
//ywjunkang.com/aspnetx/archive/2013/01/30/2883831.html
首先,建立數據挖(wa)掘(jue)項(xiang)目(mu),打開SQL DATA TOOLS,也就是Visual Studio 2010的那個Shell。

新(xin)建(jian)一(yi)個多維和(he)數據挖(wa)掘的分析服(fu)務項目。

項目建立完畢(bi)后,新建數據(ju)源連(lian)接。

選擇部署好的Adventure Works DW連(lian)接。

輸入模擬(ni)身份(fen)信息(xi),本演(yan)示用為了簡便直接(jie)使用本地管理員賬戶(當然生產環境中是不建議(yi)這(zhe)么(me)做(zuo)的)。

為數據源連接起名。

新建數據源視圖。

選(xuan)擇(ze)剛(gang)才建(jian)立的(de)數據源連(lian)接。

從左邊(bian)可選對象列表中選取兩個(ge)(ge)對象,一個(ge)(ge)是表ProspectiveBuyer,一個(ge)(ge)是視圖vTargetMail。

為數據源視圖取名。

可以在數據(ju)源視(shi)圖中看到添(tian)加(jia)進來的兩個(ge)表。
其中左(zuo)面(mian)的表(biao)是(shi)在(zai)數據倉庫經過整合的一批(pi)數據,用來訓練(lian)和驗證模型。右(you)面(mian)的表(biao)是(shi)待預測(ce)的表(biao),將在(zai)模型生成完畢后對這個表(biao)里的數據進(jin)行預測(ce)。

新建挖掘結構。

同時為挖(wa)掘(jue)結構指定(ding)一個(ge)(ge)(ge)挖(wa)掘(jue)模型,這里選擇(ze)決策樹模型。需(xu)要留意的是,一個(ge)(ge)(ge)挖(wa)掘(jue)結構可以(yi)有很(hen)多挖(wa)掘(jue)模型,不過在通(tong)過工(gong)具創建一個(ge)(ge)(ge)挖(wa)掘(jue)結構的時候需(xu)要指定(ding)一個(ge)(ge)(ge)挖(wa)掘(jue)模型。

選(xuan)擇(ze)剛才建立的數(shu)據源視圖。

選(xuan)取事例表vTargetMail。ProspectiveBuyer是后續要用來(lai)進(jin)行(xing)預(yu)測的,所以這里先忽略這個(ge)表。

首先,在Key列一欄選擇CustomerKey,用來指定鍵列。
然后選擇輸入列:
Age
CommuteDistance
EnglishEducation
EnglishOccupation
Gender
GeographyKey
HouseOwnerFlag
MaritalStatus
NumberCarsOwned
NumberChildrenAtHome
Region
TotalChildren
YearlyIncome
最后(hou),選中以下列表左側需要(yao)選擇的列。這些列不作為模型的考慮元素,但是會(hui)用在模型的鉆(zhan)取結果上。
AddressLine1
AddressLine2
DateFirstPurchase
EmailAddress
FirstName
LastName

確認內(nei)容類型(xing),這里有兩處(chu)需要更改(gai),一處(chu)是Geography Key改(gai)為Discrete離散(san)型(xing)的,以(yi)及BikeBuyer改(gai)為discrete離散(san)型(xing)的。
關于內容類型(xing)的(de)參考:
關于數據類型(xing)的參考(kao):

設定(ding)測試數(shu)據的比例。也就是說(shuo),在所(suo)有的歷史數(shu)據中,這里將決定(ding),有多少(shao)數(shu)據用來訓練模型(xing),有多少(shao)數(shu)據用來對模型(xing)進行準確度(du)測試。
這里(li)可(ke)以指定百(bai)分比或者(zhe)最(zui)大測(ce)試(shi)事(shi)例數,當兩(liang)個都(dou)有配置(zhi)的時候,系(xi)統會取最(zui)小測(ce)試(shi)事(shi)例集合的配置(zhi)。

為挖掘結構和挖掘模(mo)型取(qu)名,并且選(xuan)中允許鉆取(qu)的選(xuan)項。

至(zhi)此一個決策樹模(mo)型(xing)生成完(wan)畢(bi)。

點擊挖掘(jue)模(mo)型(xing)標簽,可(ke)以更直觀的看到挖掘(jue)結構和挖掘(jue)模(mo)型(xing)的結構。
接(jie)下來根據(ju)已經創(chuang)建(jian)好的挖(wa)掘結構(gou),創(chuang)建(jian)其它挖(wa)掘模型。

右鍵(jian)點擊挖(wa)掘結構(gou),選擇新建挖(wa)掘模型,為挖(wa)掘結構(gou)添加(jia)另外幾個(ge)模型用于對(dui)預測(ce)結果進行比對(dui)。

為(wei)挖掘模型取(qu)名,并在算(suan)法(fa)中選擇聚類算(suan)法(fa)。

按照同樣的方法,再創建一(yi)個貝葉(xie)斯模型。

由于(yu)貝葉斯模(mo)型不支持連續變量,所以這里會出現提示。繼續即可(ke)。

可以(yi)看(kan)到(dao)創(chuang)建好(hao)的(de)三個模型(xing),并且(qie)每個模型(xing)中各個字段的(de)用法。

點擊工(gong)具(ju)欄上的(de)處理按鈕,對模(mo)型進行部署和處理。

第一次部署或者項目有(you)過修改都會出(chu)現這樣一個提示,點Yes。

處理(li)(li)界面(mian),直接點擊(ji)Run開始處理(li)(li)。

處理過程中,處理的(de)(de)(de)時間取決于訓練(lian)數據的(de)(de)(de)大小以(yi)及(ji)機器的(de)(de)(de)硬(ying)件性能。當然對于Adventure Works的(de)(de)(de)這個示例來說(shuo),通常就是10多秒(miao)的(de)(de)(de)事(shi)。
挖掘結構處理完(wan)畢后,下(xia)面來簡單瀏覽一下(xia)各個挖掘模型(xing)。點擊挖掘模型(xing)瀏覽器標簽。然后在Mining Mode中選(xuan)定(ding)TU_DecisonTree決策樹模型(xing)。

可(ke)以看到,Microsoft 決(jue)策樹算(suan)法通過在樹中(zhong)創(chuang)建一系列拆(chai)分(fen)來生成(cheng)數據挖掘(jue)模型。 這(zhe)些拆(chai)分(fen)以"節點(dian)"來表示(shi)。 每當發現輸(shu)入列與可(ke)預測列密切相關時(shi),該(gai)算(suan)法便(bian)會向該(gai)模型中(zhong)添加一個(ge)節點(dian)。 離根(gen)節點(dian)距離越近的(de)屬(shu)性(xing),說明這(zhe)個(ge)屬(shu)性(xing)的(de)變化對預測列的(de)影響變化更(geng)大。

右鍵(jian)每一個節點(dian),可(ke)以鉆取到詳細信息。

選擇第(di)一項,查看模型包含的列(lie):

也可以選擇(ze)鉆(zhan)取模(mo)型和挖(wa)掘結構模(mo)型的信息,這樣前面在(zai)左(zuo)側定義的列就會顯示出(chu)來,方便(bian)定位詳細信息。

瀏覽聚類(lei)分析模型(xing),這里可以看(kan)到各個分類(lei)之(zhi)間的關系,通過拖動左(zuo)面(mian)的滑(hua)塊(kuai)可以看(kan)到相互之(zhi)間關系的強弱。

瀏覽貝葉斯模(mo)型(xing)(xing),在途(tu)中(zhong)可(ke)以看(kan)到是(shi)否(fou)是(shi)目標客戶(hu),模(mo)型(xing)(xing)分析出的幾個關(guan)鍵因素,也(ye)可(ke)以通過左邊的話快查看(kan)這些因素有(you)強到弱的關(guan)系。

接下來,將(jiang)對各個(ge)模(mo)(mo)型進行測(ce)試。雖然對于一個(ge)問題可以應(ying)用(yong)(yong)很多模(mo)(mo)型來解決,但往(wang)往(wang)只有(you)一個(ge)才是(shi)最優的,效率最高的。對模(mo)(mo)型的測(ce)試主要是(shi)用(yong)(yong)到提(ti)升圖。
首先,點擊Mining Accuracy Chart選項卡,確定(ding)用于提升圖的數(shu)據是(shi)Use mining model test cases。

然(ran)后點擊Lift Chart標(biao)簽,系統(tong)會顯示根據(ju)測試數(shu)據(ju)生成的提升圖。

從提(ti)升圖的結果來(lai)看(kan),決(jue)策樹(shu)的預測性能(neng)明顯高(gao)于其它模型。
關(guan)于提(ti)升圖,首先,對角線(xian)是隨機(ji)概率的結(jie)果,最(zui)上面的線(xian)是最(zui)佳理(li)想的預測結(jie)果,所以(yi)實際的模型預測效率都(dou)是介于這兩條線(xian)之間。
關(guan)于提升圖的更(geng)多信息可以參考微軟(ruan)的這篇文(wen)檔:
在已經確定決策(ce)樹模型(xing)是最優模型(xing)之(zhi)后(hou),如果還希望(wang)根據性別的(de)不同分(fen)析購(gou)買風格的(de)差異,可以(yi)創建(jian)篩選模型(xing)。
首先,回到(dao)Mining Models選(xuan)(xuan)項(xiang)卡,右鍵單擊(ji)創建(jian)好的決策樹(shu)模(mo)型,選(xuan)(xuan)擇新建(jian)模(mo)型。

在(zai)彈出的界面中,給新(xin)模型取一(yi)個名:TU_DecisionTree_Male,算(suan)法(fa)選擇(ze)Microsoft 決策樹。

點擊OK完成后,右鍵(jian)點擊新(xin)建的模(mo)型(xing),選擇Set Model Filter…

在(zai)Conditions中選擇Gender = M。

按照同樣的(de)方法,建立另外一個TU_DecisionTree_Female,Model Filter中(zhong) Conditions選擇Gender = F。

創建完兩個新篩選模型后,點擊提(ti)升圖。將(jiang)Predict Value設置成(cheng)1,以驗(yan)證目(mu)標客(ke)戶預測的(de)性能。

點擊(ji)Lift Chart查看提升圖。

可(ke)以看到(dao),三個(ge)決策樹模型的預(yu)測性能(neng)都是高于其它模型的。

模型(xing)測試完畢,可以(yi)判斷決策(ce)樹是基于定位目標(biao)用戶最(zui)佳的預(yu)測模型(xing)。接(jie)下來是用決策(ce)樹模型(xing)對一個表中的數據進行預(yu)測。
首(shou)先,選擇Mining Model Prediction選項卡(ka)。

點擊Select Model…選擇前面建立的TU_DecisionTree模型。

然后(hou)點(dian)擊Select Case Table…選(xuan)擇實例(li)表ProspectiveBuyer。

點擊OK后,可以看到在(zai)(zai)表(biao)ProspectiveBuyer中(zhong)并沒有對(dui)應(ying)的Age列(lie),而(er)這一列(lie)是在(zai)(zai)預(yu)測過程中(zhong)需要參考的一個(ge)重(zhong)要列(lie),所(suo)以回到數(shu)據源(yuan)視圖,在(zai)(zai)ProspectiveBuyer表(biao)里加入(ru)一個(ge)計算列(lie)。

右鍵單擊(ji)表ProspectiveBuyer點擊(ji)New Named Calculation…

在彈出的界面(mian)中為計(ji)算(suan)成(cheng)員取(qu)名并(bing)填寫(xie)計(ji)算(suan)公式:

可以(yi)(yi)看(kan)到(dao)新建的列(lie)已(yi)經添加到(dao)字段列(lie)表的末尾。在數(shu)據源(yuan)視圖(tu)(tu)中添加的列(lie)可以(yi)(yi)理(li)解為在物理(li)視圖(tu)(tu)和表上,在項目里建立的視圖(tu)(tu),所以(yi)(yi)實(shi)際上并沒有對(dui)實(shi)際的表或者視圖(tu)(tu)的結構進行更(geng)改(gai)。

然(ran)后回到預測界面(mian),將Mining Model中的Age列(lie)拖拽到Select Input Table(s)中剛建立(li)好的CalAge列(lie)。

點擊界(jie)面(mian)左上角的小圖(tu)標(biao),切(qie)換到Design設(she)計模式。

在下(xia)方的網格列表中,Source選擇(ze)Prediction Function。

指定一個別名Result,然后在Criteria/Argument中,把(ba)Bike Buyer字段從上方(fang)的Mining Model中拖拽過來(lai)。

然(ran)后(hou)在下方(fang)的(de)網格列表中(zhong),Source選(xuan)擇TM_DecisionTree,Filed選(xuan)擇Bike Buyer。最后(hou)在下面幾(ji)行中(zhong)Source指定ProsepectiveBuyer然(ran)后(hou)Filed中(zhong)依次指定calAge, FirstName, LastName和AddressLine1以及AddressLine2。

點擊工具圖標切換(huan)到Result結果視圖。

可以看到目標數據的預(yu)測結果。

另外(wai),也可以切換(huan)到Query模式查(cha)看系(xi)統生成的DMX語句。

至此,通過建立數(shu)據挖掘模型(xing),并(bing)且選(xuan)擇最(zui)優模型(xing)之后,對目標(biao)用(yong)戶(hu)列表里的(de)(de)(de)數(shu)據進行(xing)了(le)預測,從(cong)而幫助用(yong)戶(hu)更有(you)(you)效率的(de)(de)(de)確定了(le)目標(biao)潛(qian)在用(yong)戶(hu)。這(zhe)樣的(de)(de)(de)預測在某些場景下是(shi)非(fei)常有(you)(you)用(yong)的(de)(de)(de),比(bi)如企業最(zui)近要做一(yi)個(ge)活動(dong)(dong)推(tui)廣,但是(shi)費用(yong)成(cheng)本(ben)不(bu)足以(yi)給(gei)所(suo)(suo)有(you)(you)的(de)(de)(de)客戶(hu)進行(xing)推(tui)廣,所(suo)(suo)以(yi)這(zhe)個(ge)時候決(jue)定給(gei)哪些客戶(hu)來推(tui)送推(tui)廣服務(wu)就可以(yi)有(you)(you)效的(de)(de)(de)降低推(tui)廣活動(dong)(dong)的(de)(de)(de)成(cheng)本(ben)并(bing)且獲取最(zui)高的(de)(de)(de)推(tui)廣收益。
以(yi)上,如(ru)何(he)使用SQL Server分(fen)析服務(wu)(wu)來定位目(mu)標用戶介紹完畢。關于如(ru)何(he)將這個數據挖(wa)掘的(de)(de)功能加入到現(xian)有的(de)(de)項目(mu)中(zhong),可以(yi)參考我寫的(de)(de)另(ling)外一(yi)篇關于購物籃(lan)推薦的(de)(de)系列隨筆,里面(mian)會(hui)有介紹如(ru)何(he)構建Web服務(wu)(wu)以(yi)及編寫簡單的(de)(de)應用訪問(wen)這個服務(wu)(wu)從(cong)而使用數據挖(wa)掘的(de)(de)功能。
//ywjunkang.com/aspnetx/archive/2013/02/25/2931603.html
關于分析服務更多內容,歡迎訪問我的博(bo)客(ke)
微(wei)軟文(wen)檔中關于本文(wen)中提到(dao)的模型算法(fa)的參考:
決策樹模型:
貝葉斯模型:
聚類分析模型:
如(ru)果您有任(ren)何問(wen)題,歡迎在此篇回帖或(huo)者給我留(liu)言。
---------------------------------------------------------------
aspnetx的BI筆記系列(lie)索(suo)引:
使用SQL Server Analysis Services數據挖掘的關聯規則實現商品推薦功能
---------------------------------------------------------------
來自博客園的宋衛東
