共用方式為


內容查詢 (資料採礦)

內容查詢是擷取採礦模型內部統計數據和結構相關信息的方法。 有時候,內容查詢可以提供查看器中無法輕易取得的詳細數據。 您也可以使用內容查詢的結果,以程序設計方式擷取其他用途的資訊。

本節提供您可以使用內容查詢擷取之資訊類型的一般資訊,以及內容查詢的一般 DMX 語法。

基本內容查詢

範例

使用查詢結果

基本內容查詢

您可以使用預測查詢產生器建立內容查詢、使用 SQL Server Management Studio 中提供的 DMX 內容查詢範本,或直接在 DMX 中撰寫查詢。 不同於預測查詢,您不需要聯結外部數據,因此內容查詢很容易撰寫。

本節提供您可以建立之內容查詢類型的概觀。

  • 挖礦結構或案例資料的查詢可讓您檢視用於訓練的詳細資料。

  • 模型的查詢可以傳回模式、屬性清單、公式等等。

結構和案例數據的查詢

DMX 支援對用來建置採礦結構和模型的快取數據進行查詢。 根據預設,當您定義採礦結構時,會建立此快取,並在處理結構或模型時填入。

警告

此快取無法被清除或刪除,如果您需要將數據分成訓練集和測試集。 如果清除快取,您就無法查詢案例數據。

下列範例示範在案例數據上建立查詢的常見模式,或採礦結構中數據的查詢:

獲取模型的所有案例
SELECT FROM <model>.CASES

使用此語句可從用來建置模型的案例數據擷取指定的數據行。 您必須擁有模型的鑽研許可權,才能執行此查詢。

檢視 結構中包含的所有數據
SELECT FROM <structure>.CASES

使用此語句來檢視結構中包含的所有數據,包括未包含在特定採礦模型中的數據行。 要從採礦結構擷取數據,您必須擁有模型的鑽取權限以及結構的鑽取權限。

取得值範圍
SELECT DISTINCT RangeMin(<column>), RangeMax(<column>) FROM <model>

使用此語句來尋找連續資料行的最小值、最大值和平均值,或離散化資料行的分箱。

取得相異值
SELECT DISTINCT <column>FROM <model>

使用此語句來擷取 DISCRETE 資料行的所有值。 請勿將此語句用於 DISCRETIZED 資料行,應該改用 RangeMinRangeMax 函式。

尋找用來定型模型或結構的案例
SELECT FROM <mining structure.CASES WHERE IsTrainingCase()

使用此語句取得定型模型中使用的完整數據集。

尋找用於測試模型或結構的案例
SELECT FROM <mining structure.CASES WHERE IsTestingCase()

使用此語句來取得已保留的數據,以測試與特定結構相關的採礦模型。

從特定模型模式鑽研到基礎案例數據
SELECT FROM <model>.CASESWHERE IsTrainingCase() AND IsInNode(<node>)

使用此語句可從定型的模型擷取詳細的案例數據。 您必須指定特定的節點:例如,您必須知道叢集的節點標識碼、判定樹的特定分支等等。此外,您必須擁有模型的鑽研許可權,才能執行此查詢。

模型模式、統計數據和屬性的查詢

數據採礦模型的內容適用於許多用途。 透過模型內容查詢,您可以:

  • 擷取公式或機率,以便進行您自己的計算。

  • 針對關聯模型,擷取用來產生預測的規則。

  • 擷取特定規則的描述,讓您可以在自定義應用程式中使用規則。

  • 檢視時間序列模型偵測到的移動平均值。

  • 取得趨勢線某個區段的回歸公式。

  • 擷取識別為特定叢集一部分的客戶可採取動作的資訊。

下列範例示範在模型內容上建立查詢的一些常見模式:

從模型取得模式
SELECT FROM <model>.CONTENT

使用此語句來擷取模型中特定節點的詳細資訊。 根據演算法類型,節點可以包含規則和公式、支援和變異數統計數據等等。

擷取定型模型中所使用的屬性
CALL System.GetModelAttributes(<model>)

使用此預存程式來擷取模型所使用的屬性清單。 這項資訊有助於判斷因特徵選取而排除的屬性,例如。

擷取儲存在數據採礦維度中的內容
SELECT FROM <model>.DIMENSIONCONTENT

使用此語句從數據採礦維度擷取數據。

此查詢類型主要是供內部使用。 不過,並非所有演算法都支援這項功能。 MINING_SERVICES 綱要列集中,支援通過旗標來表示。

如果您開發自己的外掛程式演算法,您可以使用此語句來驗證模型的內容以進行測試。

取得模型的PMML表示法
SELECT * FROM <model>.PMML

取得一份表示模型為 PMML 格式的 XML 文件。 並非所有模型類型都受到支援。

範例

雖然某些模型內容是演算法的標準,但內容的某些部分會根據您用來建置模型的演算法而有很大的差異。 因此,當您建立內容查詢時,必須瞭解模型中哪些資訊對特定模型最有用。

本節提供一些範例,說明演算法的選擇如何影響模型中儲存的資訊種類。 如需採礦模型內容的詳細資訊,以及每個模型類型特有的內容,請參閱採礦模型內容(Analysis Services - 數據採礦)。

範例 1:關聯模型的內容查詢

根據您要查詢的模型類型,語句 SELECT FROM <model>.CONTENT會傳回不同類型的資訊。 對於關聯模型,資訊的主要部分是 節點類型。 節點就像是模型內容中資訊的容器。 在關聯模型中,代表規則的節點具有8的NODE_TYPE值,而代表專案集的節點NODE_TYPE值為7。

因此,下列查詢會傳回前 10 個項目集,依支持度排名(預設順序)。

SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT  
FROM <model>.CONTENT WHERE NODE_TYPE = 7  

下列查詢是以這項資訊為基礎。 查詢會傳回三個數據行:節點的標識碼、完整規則,以及專案集右側的產品,也就是預測要與某些其他產品建立關聯的產品,做為專案集的一部分。

SELECT FLATTENED NODE_UNIQUE_NAME, NODE_DESCRIPTION,  
     (SELECT RIGHT(ATTRIBUTE_NAME, (LEN(ATTRIBUTE_NAME)-LEN('Association model name')))   
FROM NODE_DISTRIBUTION  
WHERE LEN(ATTRIBUTE_NAME)>2  
)   
AS RightSideProduct  
FROM [<Association model name>].CONTENT  
WHERE NODE_TYPE = 8   
ORDER BY NODE_SUPPORT DESC  

FLATTENED 關鍵詞表示巢狀數據列集應該轉換成扁平化數據表。 代表規則右側產品的屬性包含在NODE_DISTRIBUTION數據表中;因此,我們只會藉由新增長度大於 2 的需求,只擷取包含屬性名稱的數據列。

簡單的字串函式可用來從第三個數據行中移除模型的名稱。 (通常模型名稱前面會加上巢狀數據行的值。

WHERE 子句指定NODE_TYPE的值應該是 8,只擷取規則。

如需更多範例,請參閱 關聯模型查詢範例

範例 2:判定樹模型的內容查詢

判定樹模型可用於預測和分類。 此範例假設您使用模型來預測結果,但您也想要找出哪些因素或規則可用來分類結果。

在判定樹模型中,節點可用來表示樹狀結構和分葉節點。 每個節點的標題都包含結果路徑的描述。 因此,若要追蹤任何特定結果的路徑,您必須識別包含它的節點,並取得該節點的詳細數據。

在預測查詢中,您會新增預測函數 PredictNodeId (DMX)來取得相關節點的標識碼,如下列範例所示:

SELECT  Predict([Bike Buyer]), PredictNodeID([Bike Buyer])   
FROM [<decision tree model name>]  
PREDICTION JOIN   
<input rowset>   

一旦您擁有包含結果之節點的標識符,您可以藉由建立包含NODE_CAPTION的內容查詢來擷取說明預測的規則或路徑,如下所示:

SELECT NODE_CAPTION  
FROM [<decision tree model name>]   
WHERE NODE_UNIQUE_NAME= '<node id>'  

如需更多範例,請參閱 判定樹模型查詢範例

處理查詢結果

如範例所示,內容查詢大多會傳回表格式數據列集,但也可能包含巢狀數據行的資訊。 您可以扁平化傳回的數據列集,但這會使使用結果更加複雜。 特別是NODE_DISTRIBUTION節點的內容是巢狀的,但包含模型的相關有趣資訊。

如需如何使用階層式數據列集的詳細資訊,請參閱 MSDN 上的 OLEDB 規格。

另請參閱

瞭解 DMX Select 語句
數據採礦查詢