在這一課,您將使用 SELECT FROM <模型> PREDICTION JOIN (DMX) 形式的 SELECT 語句,根據您在 第 2 課:將採礦模型新增至關聯採礦結構中建立的判定樹模型,建立兩種不同類型的預測。 以下定義這些預測類型。
單例查詢
使用單例查詢提供臨時值以進行預測。 例如,您可以藉由將輸入值傳遞至查詢,例如通勤距離、區域代碼或客戶的孩子數目,來判斷單一客戶是否可能是自行車購買者。 單一查詢會傳回一個值,指出該人根據輸入的數據購買自行車的可能性。
批次查詢
使用批次查詢來判斷潛在客戶數據表中可能購買自行車的人員。 例如,如果您的行銷部門提供客戶和客戶屬性的清單,您可以使用批次預測來判斷數據表中誰可能會購買自行車。
SELECT 語句的 SELECT FROM <模型> PREDICTION JOIN (DMX) 形式包含三個部分:
結果中傳回的採礦模型數據行和預測函式清單。 結果也可以包含來源資料的輸入欄位。
定義用來建立預測之數據的來源查詢。 例如,在批次查詢中,這可能是客戶清單。
採礦模型欄位與源資料之間的對應。 如果這些名稱相符,您可以使用NATURAL語法並排除數據行對應。
您可以使用預測函數進一步增強查詢。 預測函式會提供其他資訊,例如預測發生的機率,並提供定型數據集中預測的支援。 如需預測函式的詳細資訊,請參閱函式(DMX)。
本教學課程中的預測是以 AdventureWorksDW2012 範例資料庫中的 ProspectiveBuyer 數據表為基礎。 PotentialBuyer 資料表包含潛在客戶及其相關特性的清單。 此數據表中的客戶與用來建立判定樹採礦模型的客戶無關。
您也可以使用 SQL Server Data Tools (SSDT) 中的預測查詢產生器來建立預測。
課程任務
您將在此課程中執行下列工作:
建立單一查詢,以判斷特定客戶是否可能購買自行車。
建立批次查詢,以判斷客戶數據表中所列的客戶可能會購買自行車。
單例查詢
第一個步驟是在單一預測查詢中使用 SELECT FROM <模型> PREDICTION JOIN (DMX)。 以下是單一語句的泛型範例:
SELECT <select list> FROM [<mining model name>]
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
程序代碼的第一行會定義查詢應該傳回之採礦模型中的數據行,並指定用來產生預測的採礦模型:
SELECT <select list> FROM [<mining model name>]
程式代碼的下一行會定義您用來建立預測的客戶特性:
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
ORDER BY <expression>
如果您指定 NATURAL PREDICTION JOIN,則伺服器會根據數據行名稱,比對模型中的每個數據行與輸入中的數據行。 如果數據行名稱不相符,則會忽略數據行。
建立單一預測查詢
在 物件總管 中,以滑鼠右鍵點擊 Analysis Services 實例,指向 新增查詢,然後按一下 DMX。
查詢編輯器隨即開啟,並包含新的空白查詢。
將單一語句的泛型範例複製到空白查詢中。
取代下列項目:
<select list>取代為:
[Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS StatisticsAS 語句用來將查詢所傳回的數據行別名。 PredictHistogram 函式會傳回有關預測的統計數據,包括機率和支援。 如需可用於預測語句之函式的詳細資訊,請參閱 Functions (DMX) 。
取代下列項目:
[<mining model>]取代為:
[Decision Tree]取代下列項目:
(SELECT '<value>' AS [<column name>], ...) AS t取代為:
(SELECT 35 AS [Age], '5-10 Miles' AS [Commute Distance], '1' AS [House Owner Flag], 2 AS [Number Cars Owned], 2 AS [Total Children]) AS t完整語句現在應該如下所示:
SELECT [Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics FROM [Decision Tree] NATURAL PREDICTION JOIN (SELECT 35 AS [Age], '5-10 Miles' AS [Commute Distance], '1' AS [House Owner Flag], 2 AS [Number Cars Owned], 2 AS [Total Children]) AS t在 [檔案] 功能表上,按一下 [另存新檔 DMXQuery1.dmx]。
在 [ 另存新檔 ] 對話框中,瀏覽至適當的資料夾,並將檔案
Singleton_Query.dmx命名為 。在工具列上,按兩下 [ 執行] 按鈕。
此查詢會傳回針對具指定特性的客戶是否會購買自行車的預測,以及該預測的相關統計數據。
批次查詢
下一個步驟是在批次預測查詢中使用 SELECT FROM <模型> PREDICTION JOIN (DMX)。 以下是 batch 語句的泛型範例:
SELECT TOP <number> <select list>
FROM [<mining model name>]
PREDICTION JOIN
OPENQUERY([<datasource>],'<SELECT statement>')
AS [<input alias>]
ON <on clause, mapping,>
WHERE <where clause, boolean expression,>
ORDER BY <expression>
如同在單一查詢中,程式代碼的前兩行會定義查詢傳回之採礦模型的數據行,以及用來產生預測的採礦模型名稱。 TOP <number> 語句指定查詢只會傳回<number>所指定的結果。
程式代碼的下一行會定義預測所依據的源數據:
OPENQUERY([<datasource>],'<SELECT statement>')
AS [<input alias>]
您有數個選項可用來擷取源數據,但在本教學課程中,您將使用 OPENQUERY。 如需可用選項的詳細資訊,請參閱 <源數據查詢>。
下一行定義採礦模型中源數據行與源數據行之間的對應:
ON <column mappings>
WHERE 子句會篩選預測查詢所傳回的結果:
WHERE <where clause, boolean expression,>
程式代碼的最後一行(選擇性)指定結果將依據的排序欄位。
ORDER BY <expression> [DESC|ASC]
搭配 TOP <number> 語句使用 ORDER BY 來篩選傳回的結果。 例如,在此預測中,您將傳回前十名自行車購買者,並依預測正確機率排序。 您可以使用 [DESC|ASC] 語法,可控制顯示結果的順序。
建立批次預測查詢
在 物件總管 中,以滑鼠右鍵點擊 Analysis Services 實例,指向 新增查詢,然後按一下 DMX。
查詢編輯器隨即開啟,並包含新的空白查詢。
將批次語句的泛型範例複製到空白查詢中。
取代下列項目:
<select list>取代為:
SELECT TOP 10 t.[LastName], t.[FirstName], [Decision Tree].[Bike Buyer], PredictProbability([Bike Buyer])TOP 10 子句指定查詢只會傳回前十個結果。 此查詢中的 ORDER BY 語句會依預測正確機率排序結果,因此只會傳回十個最有可能的結果。
替換以下佔位符:
[<mining model>]使用模型名稱:
[Decision Tree]替換以下一般的 OPENQUERY 查詢指令:
OPENQUERY([<datasource>],'<SELECT statement>')使用參考目前 Adventureworks 數據倉儲的語句,例如:
OPENQUERY([Adventure Works DW 2014], 'SELECT [LastName], [FirstName], [MaritalStatus], [Gender], [YearlyIncome], [TotalChildren], [NumberChildrenAtHome], [Education], [Occupation], [HouseOwnerFlag], [NumberCarsOwned] FROM [dbo].[ProspectiveBuyer] ') AS t取代下列泛型語法:
<ON clause, mapping,> WHERE <where clause, boolean expression,> ORDER BY <expression>此模型和輸入資料集所需的欄位映射:
[Decision Tree].[Marital Status] = t.[MaritalStatus] AND [Decision Tree].[Gender] = t.[Gender] AND [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND [Decision Tree].[Total Children] = t.[TotalChildren] AND [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND [Decision Tree].[Education] = t.[Education] AND [Decision Tree].[Occupation] = t.[Occupation] AND [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned] WHERE [Decision Tree].[Bike Buyer] =1 ORDER BY PredictProbability([Bike Buyer]) DESC指定
DESC,以便先列出機率最高的結果。完整語句現在應該如下所示:
SELECT TOP 10 t.[LastName], t.[FirstName], [Decision Tree].[Bike Buyer], PredictProbability([Bike Buyer]) FROM [Decision Tree] PREDICTION JOIN OPENQUERY([Adventure Works DW 2014], 'SELECT [LastName], [FirstName], [MaritalStatus], [Gender], [YearlyIncome], [TotalChildren], [NumberChildrenAtHome], [Education], [Occupation], [HouseOwnerFlag], [NumberCarsOwned] FROM [dbo].[ProspectiveBuyer] ') AS t ON [Decision Tree].[Marital Status] = t.[MaritalStatus] AND [Decision Tree].[Gender] = t.[Gender] AND [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND [Decision Tree].[Total Children] = t.[TotalChildren] AND [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND [Decision Tree].[Education] = t.[Education] AND [Decision Tree].[Occupation] = t.[Occupation] AND [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned] WHERE [Decision Tree].[Bike Buyer] =1 ORDER BY PredictProbability([Bike Buyer]) DESC在 [檔案] 功能表上,按一下 [另存新檔 DMXQuery1.dmx]。
在 [ 另存新檔 ] 對話框中,瀏覽至適當的資料夾,並將檔案
Batch_Prediction.dmx命名為 。在工具列上,按兩下 [ 執行] 按鈕。
此查詢會傳回包含客戶名稱的數據表、每個客戶是否會購買自行車的預測,以及預測的機率。
這是 Bike Buyer 教學課程的最後一個步驟。 您現在有一組採礦模型,可用來探索客戶之間的相似性,並預測潛在客戶是否會購買自行車。
若要瞭解如何在購物籃案例中使用 DMX,請參閱 購物籃 DMX 教學課程。