共用方式為


貝氏機率分類模型查詢範例

適用於: SQL Server 2019 和舊版 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

SQL Server 2017 Analysis Services 中已淘汰數據採礦,現在已在 SQL Server 2022 Analysis Services 中停止。 檔不會更新為已淘汰和已停止的功能。 若要深入瞭解,請參閱 Analysis Services 回溯相容性

當您針對數據採礦模型建立查詢時,您可以建立內容查詢,以提供分析中探索到之模式的詳細數據,或者您可以建立預測查詢,該查詢會使用模型中的模式來為新數據進行預測。 您也可以針對數據採礦架構數據列集使用查詢來擷取模型的相關元數據。 本節說明如何為以 Microsoft貝氏機率分類演算法為基礎的模型建立這些查詢。

內容查詢

使用 DMX 取得模型元數據

擷取訓練數據摘要

尋找屬性的詳細資訊

使用系統預存程式

預測查詢

使用單一查詢預測結果

使用機率取得預測,並支援值

預測關聯

尋找貝氏機率分類模型的相關信息

貝氏機率分類模型的模型內容提供定型數據中值分佈的匯總資訊。 您也可以針對數據採礦架構數據列集建立查詢,以擷取模型元數據的相關信息。

範例查詢 1:使用 DMX 取得模型元數據

藉由查詢數據採礦架構數據列集,您可以尋找模型的元數據。 這可能包括建立模型、上次處理模型時、模型所依據的採礦結構名稱,以及做為可預測屬性的數據行名稱。 您也可以傳回建立模型時所使用的參數。

SELECT MODEL_CATALOG, MODEL_NAME, DATE_CREATED, LAST_PROCESSED,  
SERVICE_NAME, PREDICTION_ENTITY, FILTER  
FROM $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'TM_NaiveBayes_Filtered'  

範例結果:

元數據
MODEL_CATALOG AdventureWorks
MODEL_NAME TM_NaiveBayes_Filtered
DATE_CREATED 3/1/2008 19:15
LAST_PROCESSED 3/2/2008 20:00
SERVICE_NAME Microsoft_Naive_Bayes
PREDICTION_ENTITY 自行車買家,每年收入
濾波器 [Region] = 'Europe' OR [Region] = 'North America'

此範例所使用的模型是以您在 基本數據採礦教學課程中建立的貝氏機率分類模型為基礎,但已藉由新增第二個可預測屬性並將篩選套用至定型數據來修改。

範例查詢 2:擷取定型數據的摘要

在貝氏機率分類模型中,臨界統計數據節點會儲存定型數據中值分佈的匯總資訊。 此摘要很方便,讓您不必針對定型數據建立 SQL 查詢,以尋找相同的資訊。

下列範例會使用 DMX 內容查詢,從節點擷取數據(NODE_TYPE = 24)。 由於統計數據會儲存在巢狀數據表中,所以 FLATTENED 關鍵詞是用來讓結果更容易檢視。

SELECT FLATTENED MODEL_NAME,  
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT], [PROBABILITY], VALUETYPE FROM NODE_DISTRIBUTION) AS t  
FROM TM_NaiveBayes.CONTENT  
WHERE NODE_TYPE = 26  

注意

您必須以括弧括住數據行名稱 SUPPORT 和 PROBABILITY,以便與相同名稱的多維度表達式 (MDX) 保留關鍵詞區別。

部分結果:

MODEL_NAME t.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE t.SUPPORT t.PROBABILITY t.VALUETYPE
TM_NaiveBayes Bike Buyer 失蹤 0 0 1
TM_NaiveBayes Bike Buyer 0 8869 0.507263784 4
TM_NaiveBayes Bike Buyer 1 8615 0.492736216 4
TM_NaiveBayes 失蹤 0 0 1
TM_NaiveBayes F 8656 0.495081217 4
TM_NaiveBayes M 8828 0.504918783 4

例如,這些結果會告訴您每個離散值的定型案例數目(VALUETYPE = 4),以及針對遺漏值調整的計算機率(VALUETYPE = 1)。

如需貝氏機率分類模型中NODE_DISTRIBUTION數據表中提供之值的定義,請參閱 貝氏機率模型(Analysis Services - 數據採礦)的採礦模型內容。 如需有關支援和機率計算如何受到遺漏值影響的詳細資訊,請參閱 遺漏值 (Analysis Services - 數據採礦)

範例查詢 3:尋找屬性的詳細資訊

由於貝氏機率分類模型通常包含不同屬性之間關聯性的複雜資訊,因此檢視這些關聯性最簡單的方式是使用 Microsoft 貝氏機率分類查看器。 不過,您可以建立 DMX 查詢來傳回數據。

下列範例示範如何從模型傳回特定屬性的相關信息,Region

SELECT NODE_TYPE, NODE_CAPTION,   
NODE_PROBABILITY, NODE_SUPPORT, MSOLAP_NODE_SCORE  
FROM TM_NaiveBayes.CONTENT  
WHERE ATTRIBUTE_NAME = 'Region'  

此查詢會傳回兩種類型的節點:代表輸入屬性的節點(NODE_TYPE = 10),以及屬性每個值的節點(NODE_TYPE = 11)。 節點標題是用來識別節點,而不是節點名稱,因為標題同時顯示屬性名稱和屬性值。

NODE_TYPE NODE_CAPTION NODE_PROBABILITY NODE_SUPPORT MSOLAP_NODE_SCORE NODE_TYPE
10 Bike Buyer -> Region 1 17484 84.51555875 10
11 Bike Buyer -> Region = Missing 0 0 0 11
11 Bike Buyer -> Region = North America 0.508236102 8886 0 11
11 Bike Buyer -> Region = Pacific 0.193891558 3390 0 11
11 Bike Buyer -> Region = Europe 0.29787234 5208 0 11

儲存在節點中的某些數據行與您可以從臨界統計數據節點取得的數據行相同,例如節點機率分數和節點支援值。 不過,MSOLAP_NODE_SCORE是僅針對輸入屬性節點提供的特殊值,並指出模型中此屬性的相對重要性。 您可以在查看器的 [相依性網络] 窗格中看到大致相同的資訊;不過,查看器不提供分數。

下列查詢會傳回模型中所有屬性的重要性分數:

SELECT NODE_CAPTION, MSOLAP_NODE_SCORE  
FROM TM_NaiveBayes.CONTENT  
WHERE NODE_TYPE = 10  
ORDER BY MSOLAP_NODE_SCORE DESC  

範例結果:

NODE_CAPTION MSOLAP_NODE_SCORE
自行車買家 -> 總計兒童 181.3654836
自行車買家 -> 通勤距離 179.8419482
自行車購買者 -> 英文教育版 156.9841928
自行車買家 -> 編號兒童在家裡 111.8122599
Bike Buyer -> Region 84.51555875
自行車買家 -> 婚姻狀況 23.13297354
自行車買家 -> 英文職業 2.832069191

藉由流覽 Microsoft 一般內容樹視圖器中的模型內容,您將進一步瞭解哪些統計數據可能很有趣。 這裡示範了一些簡單的範例:您通常需要執行多個查詢或儲存結果,並將其處理在用戶端上。

範例查詢 4:使用系統預存程式

除了撰寫自己的內容查詢之外,您還可以使用一些 Analysis Services 系統預存程式來探索結果。 若要使用系統預存程式,請在預存程式名稱前面加上 CALL 關鍵字:

CALL GetPredictableAttributes ('TM_NaiveBayes')  

部分結果:

ATTRIBUTE_NAME NODE_UNIQUE_NAME
Bike Buyer 100000001

注意

這些系統預存程式適用於 Analysis Services 伺服器與客戶端之間的內部通訊,只有在開發和測試採礦模型時才應用於方便使用。 當您建立生產系統的查詢時,應該一律使用 DMX 撰寫自己的查詢。

如需 Analysis Services 系統預存程式的詳細資訊,請參閱 數據採礦預存程式 (Analysis Services - 數據採礦)

使用貝氏機率分類模型進行預測

Microsoft貝氏機率分類演算法通常用於預測,而不是用於探索輸入和可預測屬性之間的關聯性。 不過,此模型支援針對預測和關聯使用預測函式。

範例查詢 5:使用單一查詢預測結果

下列查詢會使用單一查詢來提供新的值,並根據模型預測具有這些特性的客戶是否可能購買自行車。 在回歸模型上建立單一查詢最簡單的方式,是使用 [單一查詢輸入] 對話方塊。 例如,您可以選取 TM_NaiveBayes 模型、選擇 Singleton Query,以及從下拉式清單中選取 [Commute Distance]Gender的值,以建置下列 DMX 查詢。

SELECT  
  Predict([TM_NaiveBayes].[Bike Buyer])  
FROM  
  [TM_NaiveBayes]  
NATURAL PREDICTION JOIN  
(SELECT '5-10 Miles' AS [Commute Distance],  
  'F' AS [Gender]) AS t  

範例結果:

表達
0

預測函式會傳回最有可能的值,在此案例中為0,這表示這種類型的客戶不太可能購買自行車。

範例查詢 6:使用機率和支援值取得預測

除了預測結果之外,您通常還想要知道預測有多強。 下列查詢會使用與上一個範例相同的單一查詢,但會新增預測函數,PredictHistogram (DMX),以傳回巢狀數據表,其中包含支持預測的統計數據。

SELECT  
  Predict([TM_NaiveBayes].[Bike Buyer]),  
  PredictHistogram([TM_NaiveBayes].[Bike Buyer])  
FROM  
  [TM_NaiveBayes]  
NATURAL PREDICTION JOIN  
(SELECT '5-10 Miles' AS [Commute Distance],  
  'F' AS [Gender]) AS t  

範例結果:

Bike Buyer $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY $VARIANCE $STDEV
0 10161.5714 0.581192599 0.010530981 0 0
1 7321.428768 0.418750215 0.008945684 0 0
0.999828444 5.72E-05 5.72E-05 0 0

數據表中的最後一個數據列會顯示支援和遺漏值機率的調整。 變異數和標準偏差值一律為 0,因為貝氏機率分類模型無法建立連續值的模型。

範例查詢 7:預測關聯

如果採礦結構包含具有可預測屬性做為索引鍵的巢狀數據表,則Microsoft貝氏機率分類演算法可用於關聯分析。 例如,您可以使用 第 3 課:建置購物籃案例(元數據採礦教學課程) 數據採礦教學課程中建立的採礦結構,來建置貝氏機率分類模型。 此範例中使用的模型已修改為在案例數據表中新增收入和客戶區域的相關信息。

下列查詢範例顯示單一查詢,可預測與購買產品相關的產品,'Road Tire Tube'。 您可以使用這項資訊,將產品推薦給特定類型的客戶。

SELECT   PredictAssociation([Association].[v Assoc Seq Line Items])  
FROM [Association_NB]  
NATURAL PREDICTION JOIN  
(SELECT 'High' AS [Income Group],  
  'Europe' AS [Region],  
  (SELECT 'Road Tire Tube' AS [Model])   
AS [v Assoc Seq Line Items])   
AS t  

部分結果:

女子山短褲
水瓶
Touring-3000
Touring-2000
Touring-1000

函式清單

所有Microsoft演算法都支援一組常見的函式。 不過,Microsoft貝氏機率分類演算法支援下表所列的其他函式。

預測函數 用法
IsDescendant (DMX) 判斷某個節點是否為模型中另一個節點的子系。
Predict (DMX) 傳回所指定數據行的預測值或一組值。
PredictAdjustedProbability (DMX) 傳回加權機率。
PredictAssociation (DMX) 預測關聯數據集中的成員資格。
PredictNodeId (DMX) 傳回每個案例的Node_ID。
PredictProbability (DMX) 傳回預測值的機率。
PredictSupport (DMX) 傳回指定狀態的支援值。

若要檢視特定函式的語法,請參閱 數據採礦延伸模組 (DMX) 函式參考

另請參閱

Microsoft 貝氏機率演演算法技術參考
Microsoft 貝氏機率分類演算法
貝氏機率分類模型的 採礦模型內容 (Analysis Services - 數據採礦)