類神經網路模型查詢範例
適用於: 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 取得模型元數據
擷取模型 的輸入屬性
預測查詢
尋找類神經網路模型的相關信息
所有採礦模型都會根據標準化架構、採礦模型架構數據列集來公開演算法所學習的內容。 此資訊提供有關模型的詳細數據,並包含在分析中探索到的基本元數據、分析中探索到的結構,以及處理時所使用的參數。 您可以使用數據採礦延伸模組 (DMX) 語句,針對模型內容建立查詢。
範例查詢 1:使用 DMX 取得模型元數據
下列查詢會傳回一些有關使用 Microsoft類神經網路演算法所建置之模型的基本元數據。 在類神經網路模型中,模型的父節點只包含模型的名稱、儲存模型的資料庫名稱,以及子節點的數目。 不過,臨界統計數據節點 (NODE_TYPE = 24) 同時提供這個基本元數據和一些衍生的統計數據,說明模型中所使用的輸入數據行。
下列範例查詢是以您在 元數據採礦教學課程中建立的採礦模型為基礎,名為 Call Center Default NN
。 此模型會使用來自來電中心的數據來探索人員配置與通話數目、訂單和問題之間的可能相互關聯。 DMX 語句會從類神經網路模型的臨界統計數據節點擷取數據。 此查詢包含 FLATTENED 關鍵詞,因為感興趣的輸入屬性統計數據會儲存在巢狀數據表中,NODE_DISTRIBUTION。 不過,如果您的查詢提供者支援階層式數據列集,則不需要使用 FLATTENED 關鍵詞。
SELECT FLATTENED MODEL_CATALOG, MODEL_NAME,
( SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE,
[SUPPORT], [PROBABILITY], VALUETYPE
FROM NODE_DISTRIBUTION
) AS t
FROM [Call Center Default NN].CONTENT
WHERE NODE_TYPE = 24
注意
您必須以括弧括住巢狀數據表數據行 SUPPORT 和 PROBABILITY 的名稱,以區分它們與相同名稱的保留關鍵詞。
範例結果:
MODEL_CATALOG | MODEL_NAME | t.ATTRIBUTE_NAME | t.ATTRIBUTE_VALUE | t.SUPPORT | t.PROBABILITY | t.VALUETYPE |
---|---|---|---|---|---|---|
Adventure Works DW 多維度 2012 | 客服中心 NN | 每個問題的平均時間 | 失蹤 | 0 | 0 | 1 |
Adventure Works DW 多維度 2012 | 客服中心 NN | 每個問題的平均時間 | < 64.7094100096 | 11 | 0.407407407 | 5 |
如需架構數據列集中數據行在類神經網路模型內容中的意義定義,請參閱 類神經網路模型(Analysis Services - 數據採礦)的採礦模型內容。
範例查詢 2:從架構數據列集擷取模型元數據
您可以藉由查詢數據採礦架構數據列集,找到 DMX 內容查詢中傳回的相同資訊。 不過,架構數據列集會提供一些額外的數據行。 下列範例查詢會傳回建立模型的日期、修改的日期,以及模型上次處理的日期。 查詢也會傳回可預測的數據行,這些數據行無法輕易從模型內容取得,以及用來建置模型的參數。 這項資訊對於記錄模型很有用。
SELECT MODEL_NAME, DATE_CREATED, LAST_PROCESSED, PREDICTION_ENTITY, MINING_PARAMETERS
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Call Center Default NN'
範例結果:
排 | 元數據 |
---|---|
MODEL_NAME | 話務中心預設 NN |
DATE_CREATED | 2008/1/10 下午 5:07:38 |
LAST_PROCESSED | 2008/1/10 下午 5:24:02 |
PREDICTION_ENTITY | 每個問題的平均時間, 服務等級, 訂單數目 |
MINING_PARAMETERS | HOLDOUT_PERCENTAGE=30, HOLDOUT_SEED=0, MAXIMUM_INPUT_ATTRIBUTES=255,MAXIMUM_OUTPUT_ATTRIBUTES=255, MAXIMUM_STATES=100,SAMPLE_SIZE=10000,HIDDEN_NODE_RATIO=4 |
範例查詢 3:擷取模型的輸入屬性
您可以藉由查詢輸入層的子節點 (NODE_TYPE = 20) 來擷取用來建立模型的輸入屬性值組(NODE_TYPE = 18)。 下列查詢會從節點描述傳回輸入屬性的清單。
SELECT NODE_DESCRIPTION
FROM [Call Center Default NN].CONTENT
WHERE NODE_TYPE = 2
範例結果:
NODE_DESCRIPTION |
---|
每個問題的平均時間=64.7094100096 - 77.4002099712 |
周中的日=星期五。 |
層級 1 運算子 |
這裡只會顯示結果中的幾個代表性數據列。 不過,您可以看到NODE_DESCRIPTION會根據輸入屬性的數據類型提供稍微不同的資訊。
如果屬性是離散或離散化值,則會傳回屬性及其值或其離散化範圍。
如果屬性是連續數值數據類型,則NODE_DESCRIPTION只包含屬性名稱。 不過,您可以擷取巢狀NODE_DISTRIBUTION數據表以取得平均值,或傳回NODE_RULE,以取得數值範圍的最小值和最大值。
下列查詢示範如何查詢巢狀NODE_DISTRIBUTION數據表,以傳回一個數據行中的屬性,以及它們在另一個數據行中的值。 對於連續屬性,屬性的值會以其平均值表示。
SELECT FLATTENED
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE
FROM NODE_DISTRIBUTION) as t
FROM [Call Center Default NN -- Predict Service and Orders].CONTENT
WHERE NODE_TYPE = 21
範例結果:
t.ATTRIBUTE_NAME | t.ATTRIBUTE_VALUE |
---|---|
每個問題的平均時間 | 64.7094100096 - 77.4002099712 |
一周中的一天 | 週五。 |
層級 1 運算子 | 3.2962962962963 |
最小值和最大範圍值會儲存在 NODE_RULE 數據行中,並以 XML 片段表示,如下列範例所示:
<NormContinuous field="Level 1 Operators">
<LinearNorm orig="2.83967303681711" norm="-1" />
<LinearNorm orig="3.75291955577548" norm="1" />
</NormContinuous>
範例查詢 4:從隱藏層擷取權數
類神經網路模型的模型內容是結構化方式,可讓您輕鬆地擷取網路中任何節點的詳細數據。 此外,節點的標識碼會提供資訊,協助您識別節點類型之間的關聯性。
下列查詢示範如何擷取儲存在隱藏層特定節點下的係數。 隱藏層包含只包含元數據的召集人節點(NODE_TYPE = 19),以及多個子節點(NODE_TYPE = 22),其中包含各種屬性和值組合的係數。 此查詢只會傳回係數節點。
SELECT FLATTENED TOP 1 NODE_UNIQUE_NAME,
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, VALUETYPE
FROM NODE_DISTRIBUTION) as t
FROM [Call Center Default NN -- Predict Service and Orders].CONTENT
WHERE NODE_TYPE = 22
AND [PARENT_UNIQUE_NAME] = '40000000200000000' FROM [Call Center Default NN].CONTENT
範例結果:
NODE_UNIQUE_NAME | t.ATTRIBUTE_NAME | t.ATTRIBUTE_VALUE | t.VALUETYPE |
---|---|---|---|
70000000200000000 | 6000000000000000a | -0.178616518 | 7 |
70000000200000000 | 6000000000000000b | -0.267561918 | 7 |
70000000200000000 | 600000000000000c | 0.11069497 | 7 |
70000000200000000 | 60000000000000000d | 0.123757712 | 7 |
70000000200000000 | 6000000000000000e | 0.294565343 | 7 |
70000000200000000 | 6000000000000000f | 0.22245318 | 7 |
70000000200000000 | 0.188805045 | 7 |
此處顯示的部分結果示範類神經網路模型內容如何將隱藏節點與輸入節點產生關聯。
隱藏層中節點的唯一名稱一律以 70000000 開頭。
輸入層中節點的唯一名稱一律以 60000000 開頭。
因此,這些結果會告訴您標識碼所表示的節點70000000200000000有六個不同的係數 (VALUETYPE = 7) 傳遞給它。 係數的值位於ATTRIBUTE_VALUE數據行中。 您可以使用ATTRIBUTE_NAME數據行中的節點識別碼,確切判斷係數的輸入屬性。 例如,節點標識碼 600000000000000000a 是指輸入屬性和值,Day of Week = 'Tue.'
您可以使用節點標識符來建立查詢,或使用 Microsoft 一般內容樹視圖器流覽至節點。
同樣地,如果您查詢輸出層中節點的NODE_DISTRIBUTION數據表(NODE_TYPE = 23),您可以看到每個輸出值的係數。 不過,在輸出層中,指標會回到隱藏層的節點。 如需詳細資訊,請參閱類神經網路模型 採礦模型內容(Analysis Services - 數據採礦)。
使用類神經網路模型進行預測
Microsoft類神經網路演算法同時支援分類和回歸。 您可以搭配這些模型使用預測函式來提供新的數據,並建立單一或批次預測。
範例查詢 5:建立單一預測
在類神經網路模型上建置預測查詢的最簡單方式,就是使用預測查詢產生器,可在 SQL Server Management Studio 和 SQL Server Data Tools 中 採礦設計師的 [] 索引標籤上取得。 您可以在Microsoft類神經網路查看器中流覽模型,以篩選感興趣的屬性並檢視趨勢,然後切換至 [採礦預測] 索引標籤,以建立查詢並預測這些趨勢的新值。
例如,您可以流覽客服中心模型,以檢視訂單磁碟區與其他屬性之間的相互關聯。 若要這樣做,請在查看器中開啟模型,然後針對 [輸入],選取 <[所有>]。 接下來,針對 [輸出],選取 [訂單數目]。 針對 [值 1],選取代表最多訂單的範圍,針對 [值 2],選取代表最少訂單的範圍。 然後,您可以看到模型與訂單磁碟區相互關聯的所有屬性。
藉由流覽查看器中的結果,您會發現一周中的特定日子有低訂單量,且操作員數目的增加似乎與較高的銷售量相關。 然後,您可以在模型上使用預測查詢來測試「假設假設」,並詢問增加低量日第 2 層運算子的數目是否會增加訂單。 若要這樣做,請建立如下的查詢:
SELECT Predict([Call Center Default NN].[Number of Orders]) AS [Predicted Orders],
PredictProbability([Call Center Default NN].[Number of Orders]) AS [Probability]
FROM [Call Center Default NN]
NATURAL PREDICTION JOIN
(SELECT 'Tue.' AS [Day of Week],
13 AS [Level 2 Operators]) AS t
範例結果:
預測訂單 | 概率 |
---|---|
364 | 0.9532... |
預測的銷售量高於週二目前的銷售額範圍,且預測的機率很高。 不過,您可能想要使用批處理來測試模型上的各種假設,以建立多個預測。
注意
適用於 Excel 2007 的數據採礦 Add-Ins 提供羅吉斯回歸精靈,可讓您輕鬆地回答複雜的問題,例如需要多少層級二級運算元,才能針對特定班次將服務等級提升到目標層級。 數據採礦載入宏是免費下載,並包含以類神經網路和/或羅吉斯回歸演算法為基礎的精靈。 如需詳細資訊,請參閱 office 2007 網站
預測函式清單
所有Microsoft演算法都支援一組常見的函式。 沒有Microsoft類神經網路演算法特有的預測函式;不過,演算法支援下表所列的函式。
預測函數 | 用法 |
---|---|
IsDescendant (DMX) | 判斷某個節點是否為類神經網路圖形中另一個節點的子節點。 |
PredictAdjustedProbability (DMX) | 傳回加權機率。 |
PredictHistogram (DMX) | 傳回與目前預測值相關的值數據表。 |
PredictVariance (DMX) | 傳回預測值的變異數。 |
PredictProbability (DMX) | 傳回預測值的機率。 |
PredictStdev (DMX) | 傳回預測值的標準偏離。 |
PredictSupport (DMX) | 針對類神經網路和羅吉斯回歸模型,會傳回單一值,代表整個模型的定型集大小。 |
如需所有Microsoft演算法通用的函式清單,請參閱 演算法參考 (Analysis Services - 數據採礦)。 如需特定函式的語法,請參閱 數據採礦延伸模組 (DMX) 函式參考。
另請參閱
Microsoft 類神經網路演算法
Microsoft 類神經網路演算法技術參考
類神經網路模型的採礦模型內容 (Analysis Services - 數據採礦)
第 5 課:建置類神經網路和羅吉斯回歸模型 (元數據採礦教學課程)