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

適用于: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 Bike Buyer,Yearly Income
FILTER [Region] = 'Europe' OR [Region] = 'North America'

用於此範例的模型是以您在 Basic Data Mining Tutorial中建立的貝氏機率分類模型為基礎,但是透過加入另一個可預測屬性,並將篩選套用到定型資料來修改。

範例查詢 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 Missing 0 0 1
TM_NaiveBayes Bike Buyer 0 8869 0.507263784 4
TM_NaiveBayes Bike Buyer 1 8615 0.492736216 4
TM_NaiveBayes 性別 Missing 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 自行車購買者 - > 區域 1 17484 84.51555875 10
11 Bike Buyer - > Region = Missing 0 0 0 11
11 Bike Buyer - > Region = 北美洲 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
Bike Buyer - > 通勤 Distance 179.8419482
Bike Buyer - > 英文教育版 156.9841928
自行車購買者 - > 住家的子係數目 111.8122599
自行車購買者 - > 區域 84.51555875
Bike Buyer - > Marital Status 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 系統預存程式的詳細資訊,請參閱 Data Mining 預存程式 (Analysis Services - 資料採礦)

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

Microsoft 貝氏機率分類演算法用於預測的頻率通常比用於瀏覽輸入屬性和可預測屬性之間關聯性的頻率低。 不過,此模型支援同時針對預測和關聯使用預測函數。

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

下列查詢使用單一查詢提供新的值,並根據模型預測具備這些特徵的客戶是否可能購買自行車。 在迴歸模型上建立單一查詢最簡單的方式是使用 [單一查詢輸入] 對話方塊。 例如,您可以選取 TM_NaiveBayes 模型、選擇 [單一查詢],然後從 [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  

部分結果:

型號
Women's Mountain Shorts
Water Bottle
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 - 資料採礦)