日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SQLServer數(shù)據(jù)挖掘規(guī)則實(shí)現(xiàn)商品推薦1

 將分為三個(gè)部分來(lái)演示如何實(shí)現(xiàn)這個(gè)功能。

1.構(gòu)建挖掘模型

2.為挖掘模型編寫服務(wù)接口

3.開發(fā)簡(jiǎn)單的前端應(yīng)用

此篇介紹如何使用SQL Server Analysis Services基于此問(wèn)題來(lái)構(gòu)建簡(jiǎn)單的挖掘模型。

關(guān)于數(shù)據(jù)挖掘,簡(jiǎn)單的就是說(shuō)從海量數(shù)據(jù)中發(fā)現(xiàn)信息的一個(gè)過(guò)程。如果說(shuō)商業(yè)智能分為三個(gè)層次:告訴你發(fā)生了什么,為什么會(huì)發(fā)生,將來(lái)會(huì)發(fā)生什么。那么,數(shù)據(jù)挖掘絕對(duì)算是商業(yè)智能中最高的一個(gè)層次,告訴你將來(lái)會(huì)發(fā)生什么,也就是預(yù)測(cè)。而預(yù)測(cè)的基礎(chǔ)就是根據(jù)海量的歷史數(shù)據(jù),結(jié)合一定的算法,以概率為基礎(chǔ),告訴你一條新數(shù)據(jù)某條屬性的趨勢(shì)。

數(shù)據(jù)挖掘的模型很多,貝葉斯,時(shí)間序列,關(guān)聯(lián)規(guī)則等都是常用的模型,根據(jù)不同的問(wèn)題特征可以套用不同的模型算法。比如此篇提到的商品推薦,就是典型的適合用關(guān)聯(lián)規(guī)則來(lái)解決。在數(shù)據(jù)挖掘中典型的啤酒和尿布的問(wèn)題,大體上就是基于這個(gè)方法。

創(chuàng)建挖掘模型項(xiàng)目

筆者注:如果你是一個(gè)c#或者相關(guān)的應(yīng)用程序開發(fā)人員,以下的內(nèi)容看起來(lái)可能會(huì)有些陌生,筆者建議此部分跟著文章中介紹的步驟來(lái)做就可以,相關(guān)細(xì)節(jié)我會(huì)盡量以開發(fā)人員的角度去解釋。后面有適合開發(fā)人員邏輯的一些介紹可以幫助你更好的理解數(shù)據(jù)挖掘項(xiàng)目。

打開SQL Server Data Tools,點(diǎn)擊File->New->Project

選擇項(xiàng)目類型:

Analysis Services Multidimensional and Data Mining Models

為項(xiàng)目添加數(shù)據(jù)源。

如圖,在Solution Explorer中,右鍵單擊Data Sources,選擇New Data Source:

這里用到的數(shù)據(jù)源是微軟官方示例庫(kù)Adventure Works DW 2012,是Data Warehouse的示例庫(kù)。

關(guān)于如何獲取并且部署這些示例庫(kù),可以參考此篇下面的文章列表。

然后,添加數(shù)據(jù)源視圖,在Solution Explorer中右鍵Data Source Views,選擇New Data Source View。

在Relational data source中,選擇剛才建立的數(shù)據(jù)源名稱:

點(diǎn)擊下一步。

這個(gè)界面中選擇用到的表。根據(jù)微軟官方教程以及示例數(shù)據(jù),只選擇vAssocSeqLineItems和vAssocSeqOrders兩個(gè)視圖就可以。

如果要用關(guān)聯(lián)規(guī)則來(lái)解決問(wèn)題,那么你的數(shù)據(jù)就要符合一定的結(jié)構(gòu)。而具體的結(jié)構(gòu)要求就可以參考這兩個(gè)視圖。

vAssocSeqOrders是訂單主表,里面記錄了基本的訂單信息,一條訂單一行記錄。

vAssocSeqLineItems是訂單相信信息表,里面記錄了每條訂單里都包含了哪些商品。

兩張表邏輯上通過(guò)OrderNumber關(guān)聯(lián),我們關(guān)注的字段是Model,這里面記錄了商品名稱。

選擇好用到的表之后,可以直接點(diǎn)擊完成結(jié)束數(shù)據(jù)源視圖的設(shè)置。

這兩個(gè)視圖是沒有邏輯關(guān)系的,但這里需要指定一下。

方法就是在數(shù)據(jù)源視圖里,拖拽vAssocSeqLineItems里的OrderNumber字段到vAssocSeqOrders的OrderNumber字段。完成后可以看到一個(gè)從vAssocSeqLineItems視圖指向vAssocSeqOrders的箭頭。

到這里數(shù)據(jù)源視圖設(shè)置完畢。

下面建立基于關(guān)聯(lián)規(guī)則的挖掘模型。在Solution Explorer中,右鍵單擊Mining Structures,選擇New Mining Structure。

第一個(gè)界面,使用已經(jīng)存在的關(guān)系數(shù)據(jù)庫(kù)或者數(shù)據(jù)倉(cāng)庫(kù),所以直接下一步。

然后在這個(gè)界面中指定挖掘結(jié)構(gòu)要采用的挖掘模型。點(diǎn)擊下拉框,選擇Microsoft Association Rules,也就是關(guān)聯(lián)規(guī)則。點(diǎn)下一步。

這里指定數(shù)據(jù)源視圖,默認(rèn)選擇剛才建立的就可以,直接點(diǎn)擊下一步。

這一步比較關(guān)鍵,理解起來(lái)也比較繞。這里主要是要指定事例表和嵌套表。在這里,記錄訂單基本信息的是事例表,而記錄訂單里有哪些產(chǎn)品的表為嵌套表。

在這個(gè)模型當(dāng)中,我們要清楚的是,我們的事例單位,是一條條訂單,而不是訂單里的一個(gè)個(gè)產(chǎn)品。如果每次在建立模型的過(guò)程中無(wú)法區(qū)分哪個(gè)應(yīng)該是事例表哪個(gè)應(yīng)該是嵌套表的話,那么可以回頭來(lái)先想下這個(gè)問(wèn)題。

指定完畢事例表和嵌套表,點(diǎn)擊下一步。

這里指定在分析模型中如何使用這些列。首先指定鍵列為OrderNumber和Model,然后再把Model列指定為輸入列和可預(yù)測(cè)列。因?yàn)檫@里就是要根據(jù)已經(jīng)選擇的商品來(lái)預(yù)測(cè)客戶將會(huì)購(gòu)買什么商品。

按如圖所示的方法指定完畢后,點(diǎn)擊下一步。

選擇列的類型,這里根據(jù)系統(tǒng)自動(dòng)判斷的類型選擇就可以,直接點(diǎn)擊下一步。

然后這個(gè)界面中主要是用來(lái)指定測(cè)試數(shù)據(jù)集的多少。默認(rèn)是30%,也就是在數(shù)據(jù)中,保留30%的數(shù)據(jù)來(lái)驗(yàn)證建立好的挖掘模型的正確性。此篇不對(duì)其做過(guò)詳細(xì)的介紹,所以先設(shè)置成0,然后直接點(diǎn)擊Finish完成模型設(shè)置向?qū)А?/p>

可以看到建立好的挖掘結(jié)構(gòu)。

模型建立好了之后,需要將其部署到一個(gè)分析服務(wù)的實(shí)例上去,然后將其處理。

這里直接右鍵點(diǎn)擊Solution Explorer根目錄的項(xiàng)目名稱,然后右鍵菜單中選擇Process。

系統(tǒng)會(huì)提示服務(wù)器內(nèi)容已過(guò)期,VS的判斷是只要你的Source Code比目標(biāo)服務(wù)器的版本新,那么都會(huì)報(bào)這個(gè)out of date錯(cuò)誤,即使目標(biāo)服務(wù)器上根本沒有這個(gè)庫(kù)。所以這里選擇Yes。

第一次 部署可能會(huì)彈出這個(gè)提示框讓你指定可以方位數(shù)據(jù)源鏈接的賬戶,這里通常直接敲本地管理員的賬戶就 ok。

出現(xiàn)這個(gè)界面,直接點(diǎn)擊Run處理挖掘模型。

然后系統(tǒng)會(huì)自動(dòng)去做很多工作,這里的細(xì)節(jié)你可以不去關(guān)心。(當(dāng)然在其不報(bào)Error的情況下)

處理完成之后,挖掘模型就建立好了。后續(xù)的實(shí)現(xiàn)商品推薦的功能,就是基于此模型來(lái)實(shí)現(xiàn)的。

 

這里再介紹一個(gè)概念,叫DMX,也許你從沒聽說(shuō)過(guò),但你一定知道SQL,簡(jiǎn)單的來(lái)說(shuō)SQL就是用來(lái)查表得,那么DMX就是用來(lái)查數(shù)據(jù)挖掘模型的。

它跟SQL一樣,也是SELECT FROM的結(jié)構(gòu)。具體的語(yǔ)法信息大家有興趣的可以去參考微軟的SQL Server聯(lián)機(jī)數(shù)據(jù)庫(kù)。在此篇中,下面會(huì)給出一個(gè)簡(jiǎn)單的DMX查詢,大家只要基本知道它是干什么的就可以了。

 

DAX示例查詢:

 

 
 
 
 
  1. SELECT FLATTENED 
  2. PredictAssociation([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,3) 
  3. FROM 
  4. [Association] 
  5. NATURAL PREDICTION JOIN 
  6. (SELECT (SELECT 'Touring Tire' AS [Model] 
  7. ) AS [v Assoc Seq Line Items]) AS t 

 

這個(gè)語(yǔ)句的大體意思就是,購(gòu)買了產(chǎn)品Touring Tire的用戶當(dāng)中,根據(jù)歷史信息,還有可能會(huì)購(gòu)買哪些產(chǎn)品。

那么我們來(lái)看查詢結(jié)果:

Model

SUPPORT

PROBABILITY

ADJUSTEDPROBABILITY

Touring Tire Tube

1397

0.860385925

0.783460119

Sport-100

6171

0.267877412

0.489939538

Patch kit

3010

0.244040863

0.567612365

 

然后我們來(lái)簡(jiǎn)單解釋下相關(guān)列的信息:

SUPPORT-支持度,所處行的項(xiàng)支持度,這里跟傳統(tǒng)的支持度有些不同,這里,比如第一行,指的是有多少個(gè)訂單中包含了產(chǎn)品Touring Tire Tube。

在數(shù)據(jù)倉(cāng)庫(kù)中,我們可以用SQL語(yǔ)句來(lái)驗(yàn)證下這個(gè)結(jié)果

 

 
 
 
 
  1. SELECT COUNT(1) 
  2. FROM [AdventureWorksDW2012].[dbo].[vAssocSeqLineItems] 
  3. WHERE [Model]='Touring Tire Tube' 

 

返回的結(jié)果就是1397。

PROBABILITY-概率

購(gòu)買Touring Tire的訂單中又包含Touring Tire Tube的個(gè)數(shù)。再簡(jiǎn)單點(diǎn)說(shuō)就是概率中的P(A|B)的問(wèn)題了。

那么我們還是來(lái)驗(yàn)證下第一行的計(jì)算結(jié)果,同時(shí)購(gòu)買Touring Tire Tube和Touring Tire的訂單數(shù)量:

 

 
 
 
 
  1. SELECT T1.[OrderNumber] 
  2. FROM [AdventureWorksDW2012].[dbo].[vAssocSeqLineItems] T1 
  3. INNER JOIN 
  4.     SELECT T2.[OrderNumber] 
  5.     FROM [AdventureWorksDW2012].[dbo].[vAssocSeqLineItems] T2 
  6.     WHERE T2.[Model]='Touring Tire Tube' 
  7. ) TZ ON T1.OrderNumber=TZ.OrderNumber 
  8. WHERE T1.[Model]='Touring Tire' 

 

我們可以看到查詢返回的結(jié)果數(shù)量是758行。

然后再計(jì)算下訂單中只包含Touring Tire的數(shù)量:

 

 
 
 
 
  1. SELECT [OrderNumber] 
  2. FROM [AdventureWorksDW2012].[dbo].[vAssocSeqLineItems] 
  3. WHERE [Model]='Touring Tire' 

 

返回的記錄行數(shù)是881行。

用758除以881,得到的數(shù)字正好是0.860385925。

這個(gè)概率正好反映了這樣一個(gè)事實(shí),就是購(gòu)買Touring Tire的客戶會(huì)有很大的可能性購(gòu)買Touring Tire Tube,所以當(dāng)客戶購(gòu)買Touring Tire之后系統(tǒng)自動(dòng)的向其推薦Touring Tire Tube準(zhǔn)沒錯(cuò)。

也許你已經(jīng)看出了那條DMX語(yǔ)句的一些門道,當(dāng)然,有些關(guān)鍵字你暫時(shí)可以不用去關(guān)心,必要的時(shí)候可以參考微軟的文檔。那么擴(kuò)展一下,比如,客戶買了指定的兩樣產(chǎn)品,那么我根據(jù)這兩樣已選的產(chǎn)品應(yīng)該推薦給客戶什么呢?

 

 
 
 
 
  1. SELECT FLATTENED 
  2. PredictAssociation([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,3) 
  3. FROM 
  4. [Association] 
  5. NATURAL PREDICTION JOIN 
  6. (SELECT (SELECT 'Touring Tire' AS [Model] 
  7. UNION SELECT 'Touring Tire Tube' AS [Model] 
  8. ) AS [v Assoc Seq Line Items]) AS t 

 

看到熟悉的UNION語(yǔ)句了吧,好吧,相信你不懂DMX的話你也看出這條語(yǔ)句的規(guī)律了,這些就夠了,后續(xù)文章中將會(huì)在c#邏輯代碼中根據(jù)這條基本的語(yǔ)句來(lái)動(dòng)態(tài)的來(lái)拼DMX語(yǔ)句。

以上數(shù)據(jù)挖掘模型的建立部分到此完畢,這是通常一個(gè)商業(yè)智能項(xiàng)目中底層架構(gòu)的基本部分。

后續(xù)我再寫兩篇在挖掘模型之上的文章,其中一個(gè)是基于這個(gè)模型開發(fā)service服務(wù)接口的,這個(gè)接口將方便各個(gè)客戶端應(yīng)用,winform, asp.net或者silverlight等調(diào)用。最后一篇將選用一個(gè)客戶端程序,構(gòu)建簡(jiǎn)單的界面,調(diào)用這個(gè)services來(lái)實(shí)現(xiàn)預(yù)測(cè)查詢。

原文鏈接:http://www.cnblogs.com/aspnetx/archive/2013/02/24/2923941.html

 

【編輯推薦】

  1. 小白學(xué)數(shù)據(jù)分析:怎么做流失分析
  2. 小白學(xué)數(shù)據(jù)分析之K-means理論篇
  3. 小白學(xué)數(shù)據(jù)分析之從購(gòu)買記錄分析道具支付環(huán)節(jié)
  4. 小白學(xué)數(shù)據(jù)分析之付費(fèi)滲透率
  5. 小白學(xué)數(shù)據(jù)分析之Excel制作INFOGRAPHIC

 


名稱欄目:SQLServer數(shù)據(jù)挖掘規(guī)則實(shí)現(xiàn)商品推薦1
標(biāo)題鏈接:http://www.dlmjj.cn/article/codegcc.html