日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

 將分為三個部分來演示如何實現(xiàn)這個功能。

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

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

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

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

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

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

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

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

打開SQL Server Data Tools,點擊File->New->Project

選擇項目類型:

Analysis Services Multidimensional and Data Mining Models

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

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

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

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

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

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

點擊下一步。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

指定完畢事例表和嵌套表,點擊下一步。

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

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

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

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

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

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

這里直接右鍵點擊Solution Explorer根目錄的項目名稱,然后右鍵菜單中選擇Process。

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

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

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

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

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

 

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

它跟SQL一樣,也是SELECT FROM的結(jié)構(gòu)。具體的語法信息大家有興趣的可以去參考微軟的SQL Server聯(lián)機數(shù)據(jù)庫。在此篇中,下面會給出一個簡單的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 

 

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

那么我們來看查詢結(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

 

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

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

在數(shù)據(jù)倉庫中,我們可以用SQL語句來驗證下這個結(jié)果

 

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

 

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

PROBABILITY-概率

購買Touring Tire的訂單中又包含Touring Tire Tube的個數(shù)。再簡單點說就是概率中的P(A|B)的問題了。

那么我們還是來驗證下第一行的計算結(jié)果,同時購買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行。

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

 

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

 

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

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

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

也許你已經(jīng)看出了那條DMX語句的一些門道,當(dāng)然,有些關(guān)鍵字你暫時可以不用去關(guān)心,必要的時候可以參考微軟的文檔。那么擴展一下,比如,客戶買了指定的兩樣產(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語句了吧,好吧,相信你不懂DMX的話你也看出這條語句的規(guī)律了,這些就夠了,后續(xù)文章中將會在c#邏輯代碼中根據(jù)這條基本的語句來動態(tài)的來拼DMX語句。

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

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

原文鏈接: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ù)分析之從購買記錄分析道具支付環(huán)節(jié)
  4. 小白學(xué)數(shù)據(jù)分析之付費滲透率
  5. 小白學(xué)數(shù)據(jù)分析之Excel制作INFOGRAPHIC

 


文章名稱:SQLServer數(shù)據(jù)挖掘規(guī)則實現(xiàn)商品推薦1
URL網(wǎng)址:http://m.5511xx.com/article/codegcc.html