查詢資料採礦模型 (Analysis Services - 資料採礦)
在您培訓資料採礦模型之後,就可以使用 SQL Server Management Studio 或 Business Intelligence Development Studio 中提供的自訂檢視器來探索模型。不過,如果想要進行預測或從模型取得進階或更特定的資訊,則必須針對資料採礦模型建立查詢。查詢有助於讓您以下列方式進一步地了解及使用模型中的資訊:
進行單一預測及批次預測。
進一步了解模型找到的模式。
檢視模型之特定模式或子集的詳細資料或定型案例。
鑽研採礦模型中案例的詳細資料。
擷取有關所有模型和資料或其子集的公式、規則或統計資料。
SQL ServerAnalysis Services 提供用來建立查詢的圖形設計介面,以及在建立自訂預測和複雜查詢時很有用的查詢語言,稱為「資料採礦延伸模組」(DMX)。若要建立 DMX 預測查詢,可以從 SQL Server Management Studio 和 Business Intelligence Development Studio 兩者都有提供的查詢產生器開始作業。SQL Server Management Studio 中也有提供一組 DMX 查詢範本。
如需有關如何使用查詢產生器的詳細資訊,請參閱<使用預測查詢產生器來建立 DMX 預測查詢>。
如需有關如何使用 DMX 查詢範本的詳細資訊,請參閱<在 SQL Server Management Studio 中建立 DMX 查詢>或<如何:在 SQL Server Management Studio 中使用範本>。
本節描述您可以建立的查詢類型,以及每種查詢類型所提供的資訊。本節也包含特定類型資料採礦模型的查詢範例。
預測查詢
單一預測查詢
批次預測查詢
時間序列預測
內容查詢
資料定義查詢
預測查詢
許多資料採礦專案的主要目標是要使用採礦模型來建立預測。例如,您可能想要預測公司在明年的十二月會賣出多少產生,或是否有潛在客戶會因為促銷活動而購買產品。
當您建立預測時,通常要提供一些新資料並要求模型根據新的資料產生預測。您可以用「預測聯結」將模型對應到外部資料來源,以批次的方式進行預測。或者,也可以建立「單一」查詢,一次提供一個值。
單一和批次預測查詢都使用 PREDICTION JOIN 語法來定義新的資料:不同之處在於如何指定預測聯結的輸入端。在單一查詢中,資料會在查詢時以內嵌方式提供。在批次查詢中,資料來自使用 OPENQUERY 語法指定的外部資料來源。如需詳細資訊,請參閱<OPENQUERY (DMX)>。
此外,時間序列模型也可讓您只根據模型進行預測,您不需要提供任何新資料,只需根據現有的序列要求預測即可。
下節提供有關如何建立下列每種查詢類型的詳細資訊:
查詢類型 |
查詢選項 |
---|---|
單一查詢預測 |
針對您在查詢中輸入的單一新案例或多個新案例進行預測。 |
批次預測 |
將外部資料來源中的新案例對應到模型並進行預測。 |
時間序列預測 |
根據現有的模型預測指定數目的未來步驟。 藉由加入新資料延伸現有的模型,然後根據複合序列進行預測。 使用 REPLACE_MODEL_CASES 選項將現有的模型套用至新的資料序列。 |
除了預測特定值 (例如下個月的銷售量,或建議客戶購買的產品) 以外,也可以自訂預測查詢以傳回與預測相關的各種資訊類型。例如,知道預測正確的機率可能很有用,因為這樣可以決定是否要向使用者進行建議。
若要自訂預測查詢所傳回的資訊,請將「預測函數」加入至查詢。每個模型或查詢類型都支援特定的函數。例如,群集模型支援特殊的預測函數,可針對模型建立的群組提供額外的詳細資料。時間序列模型支援可計算經過一段時間的差異的預測函數。也有可用於幾乎所有模型類型的一般預測函數。如需不同查詢類型所支援的預測函數清單,請參閱<將函數對應至查詢類型 (DMX)>。如需預測函數的完整清單,請參閱<資料採礦延伸模組 (DMX) 函數參考>。
回到頁首
單一查詢
當您想要即時建立簡單預測時,單一查詢便很有用。例如,您可以使用網站從客戶取得資訊,然後使用該資料來傳回預測,並以該客戶專用的建議形式展示該預測。或者,您可以分析電子郵件的內容,然後使用現有的分類模型來指派類別給電子郵件並依適當的方式傳遞訊息。
單一查詢不需要包含輸入的個別資料表。而是將單一的資料列傳遞至模型,然後再即時傳回單一預測。您也可以輸入包含單一案例的 SELECT 陳述式、加入 UNION 運算子,然後輸入另一個 SELECT 陳述式來指定其他案例,藉以擴充單一查詢即可進行多個預測。
您可以利用下列方式來針對現有的模型建立單一查詢:
使用「資料採礦設計工具」。
使用單一查詢範本。
以程式設計的方式或以其他的 Analysis Services 用戶端建立 DMX 陳述式。
當您建立單一查詢時,必須以 PREDICTION JOIN 的形式為模型提供新資料。這表示即使不是對應至實際的資料表,也必須確定新資料符合採礦模型中現有的資料行。如果新資料行和新資料完全相符,則 Analysis Services 會為您對應資料行。這稱為 NATURAL PREDICTION JOIN。不過,如果資料行不相符,或者新資料所包含的資料類型和量與模型中的不同,則您必須指定模型中與新資料對應的資料行,或指定遺漏的值。
如需有關如何在「資料採礦設計工具」中建立單一查詢的詳細資訊,請參閱<如何:在資料採礦設計師中建立單一查詢>和<使用預測查詢產生器來建立 DMX 預測查詢>。
如需有關使用 DMX 建立單一查詢的詳細資訊,請參閱<預測查詢 (DMX)>。
如需如何在 SQL Server Management Studio 中使用 DMX 查詢範本的範例,請參閱<如何:根據範本建立單一預測查詢>。
回到頁首
批次預測查詢
您在執行預測聯結時,要將模型對應到新的資料來源,然後 Analysis Services 會根據模型中的模式,針對新資料中的每個資料列進行預測。當資料表或其他外部資料來源中的資訊很多,而您想要使用定型模型進行預測時,預測聯結就很有用。
您可以利用下列方式來針對現有的模型建立批次預測:
使用「資料採礦設計工具」。
使用範本。
以程式設計的方式或以其他的 Analysis Services 用戶端建立 DMX 陳述式。
如果使用「資料採礦設計工具」來建立批次預測,則必須先將外部資料來源定義為資料來源檢視。
如果是使用 DMX 來建立預測聯結,則可使用 OPENQUERY、OPENROWSET 或 SHAPE 命令來指定外部資料來源。DMX 範本中的預設資料存取方法是 OPENQUERY。如需有關這些方法的詳細資訊,請參閱<<source data query> >。
不論您如何定義外部資料,所指定的資料來源所含的資料行都必須包含類似於模型中的資料。不過,新的資訊可能不完整。例如,您的客戶清單可能有 Age 資料行,但是沒有關於收入的相關資訊。即使定型模型時會使用收入資料,您仍然可以將新的資料對應到模型並建立預測,不過,在某些情況下,缺少完整的資訊可能會影響預測的品質。
若要取得最佳結果,應該在新資料和模型之間儘可能聯結相符的資料行。不過,即使沒有相符的項目,查詢也會成功。如果沒有聯結任何資料行,則查詢會傳回臨界預測,該預測相當於不具有 PREDICTION JOIN 子句的陳述式 SELECT <predictable-column> FROM <model>。
使用預測查詢的結果
預測查詢與關聯式資料庫的查詢不同。加入至查詢的每個預測函數都會傳回本身的資料列集。因此,當您對單一案例進行預測時,結果可能是一個預測值,以及數個包含其他詳細資料的巢狀資料表資料行。
每當您在單一查詢中結合數個函數時,傳回結果會結合為階層式資料列集。不過,如果提供者無法處理階層式資料列集,則您可以在預測查詢中使用 FLATTEN 關鍵字將結果扁平化。
如需包括扁平化資料列集範例的詳細資訊,請參閱<SELECT (DMX)>。
時間序列採礦模型中的預測
時間序列模型可以提供較大的彈性,因為您可以使用新資料並建立預測。您可以依現狀使用模型來建立預測,或對模型提供新資料,以根據最近的趨勢更新預測。如果加入新資料,則可以指定如何使用新資料來延伸模型案例或取代模型案例。
如果您延伸模型案例,會將新的事實資料加入至時間序列模型,且針對新的合併序列進行預測。如果您取代模型案例,則會保留定型的模型,但是會使用新的案例資料組來取代基礎案例。
不論使用的方法為何,預測一定是從原始序列的結尾開始。
例如,假設您擁有的現有時間序列模型已經過去年度銷售資料的定型。在收集數個月的新銷售資料後,您決定更新今年度的銷售預測。您可以加入新資料並延伸模型來進行新預測,以建立更新模型的預測聯結。
或者,您也可以根據現有的資料建立模型,然後建立預測聯結,以新資料取代案例資料。舉例來說,如果某店家遺漏很多資料,而您想要使用根據其他店家資料所建立的模型來進行預測,上述做法就很有用。如需有關如何在時間序列模型上建立預測聯結的詳細資訊,請參閱<查詢時間序列模型>或<PredictTimeSeries (DMX)>。
回到頁首
內容查詢
內容查詢是一種擷取採礦模型之內部統計資料和結構相關資訊的方法。內容查詢有時候可以提供檢視器中無法隨時取得的詳細資料。您也可以使用內容查詢的結果,以程式設計的方式擷取其他用途的資訊。例如,您可以擷取公式或機率來進行自己的計算,或擷取有關模型中案例的可行動資訊。
本章節提供有關可使用內容查詢所擷取之資訊類型的一般資訊。內容查詢會使用下表中所顯示的 DMX 語法:
查詢類型 |
查詢選項 |
---|---|
SELECT FROM <model>.CASES |
尋找用來定型或測試模型的案例。向下鑽研資料,包括基礎採礦結構中的資料行。 |
SELECT FROM <structure>.CASES |
檢視所有包含在結構中的資料,包括未包含在特定採礦模型中的資料行。 |
SELECT FROM <model>.CONTENT |
擷取有關模型中特定節點的詳細資訊,包括規則和公式、支援和變異數統計資料等等。 |
SELECT FROM <model>.DIMENSIONCONTENT |
支援資料採礦維度的查詢。 這個查詢類型主要供內部使用。如果您開發自己的外掛程式演算法,可以使用此語法來測試模型。 並非所有的演算法都支援這項功能。支援是由 MINING_SERVICES 結構描述資料列集中的旗標所代表。 |
有些模型內容在不同的演算法中也是標準的。不過,一般而言,每個模型的內容是根據用來建立模型的演算法而定。因此,當您建立內容查詢時,必須了解模型中有哪些類型的資訊是最有用的。
例如,如果建立使用 SELECT FROM <model>.CONTENT 語法的查詢,該查詢會根據模型是時序群集模型、決策樹模型或時間序列模型而傳回非常不同的資訊。對於關聯模型,您可能想要擷取特定規則的描述以在自訂應用程式中使用規則,而在時間序列或時序群集模型中,則可能想要尋找有關模型所偵測到的時間模式的詳細資訊。
下列章節提供了一些範例來說明可以從內容查詢取得的資訊廣度及深度;不過,如需有關採礦模型內容及每種模型類型特有之內容的詳細資訊,請參閱<採礦模型內容 (Analysis Services - 資料採礦)>。
範例 1:關聯模型的內容查詢
您可以使用 SELECT FROM <model>.CONTENT 陳述式來傳回不同類型的內容,根據所查詢的模型類型而定。對於關聯模型而言,代表規則的節點所擁有的 NODE_TYPE 值為 8,項目集所擁有的 NODE_TYPE 值則為 7。因此,下列查詢會傳回前 10 個項目集,並依照支援排序 (預設的排序)。
SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT
FROM <model>.CONTENT WHERE NODE_TYPE = 7
下列範例會傳回三個資料行:節點的識別碼、完整的規則以及項目集右側的產品 (也就是預測為與屬於項目集一部分的某些其他產品相關聯的產品)。
FLATTENED 關鍵字代表巢狀資料列集應該轉換成二維資料表。代表規則右側產品的屬性是包含在 NODE_DISTRIBUTION 資料表中;因此,我們會加入長度必須大於 2 的需求,只擷取包含屬性名稱的資料列。簡單字串函數是用來移除第三個資料行的模型名稱。通常模型名稱一定會加到巢狀資料行的前置詞。WHERE 子句指定 NODE_TYPE 的值應該為 8,以僅擷取規則。
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
如需其他範例,請參閱<查詢關聯模型 (Analysis Services - 資料採礦)>。
範例 2:決策樹模型的內容查詢
查詢模型內容很有用的一個案例,是當您想要藉由傳回說明為何預測某狀態的規則而繼續進行預測查詢時。例如,您可以藉由使用下列語法,將預測函數 PredictNodeId (DMX) 加入至查詢而取得包含規則之節點的識別碼:
SELECT Predict([Bike Buyer]), PredictNodeID([Bike Buyer])
FROM [<decision tree model name>]
PREDICTION JOIN
<input rowset>
對於決策樹模型而言,標題會包含結果路徑的描述。因此,您一旦取得包含結果之節點的識別碼之後,就可以藉由建立內容查詢來擷取說明預測的規則或路徑,如下所示:
SELECT NODE_CAPTION
FROM [<decision tree model name>]
WHERE NODE_UNIQUE_NAME= '<node id>'
如需其他範例,請參閱<查詢決策樹模型 (Analysis Services - 資料採礦)>。
回到頁首