使用基礎採礦結構的數據設計及處理採礦模型之後,採礦模型就會完成並包含 採礦模型內容。 您可以使用此內容進行預測或分析您的資料。
採礦模型內容包含模型的相關元數據、有關數據的統計數據,以及採礦演算法所探索的模式。 視所使用的演算法而定,模型內容可能包含回歸公式、規則和專案集的定義,或權數和其他統計數據。
不論所使用的演算法為何,採礦模型內容都會以標準結構呈現。 您可以在 SQL Server Data Tools (SSDT) 中提供的 Microsoft泛型內容樹檢視器中瀏覽結構,然後切換至其中一個自定義查看器,以查看每個模型類型的資訊如何以圖形方式解譯和顯示。 您也可以使用支援MINING_MODEL_CONTENT架構數據列集的任何客戶端,針對採礦模型內容建立查詢。 如需更多訊息,請參閱 資料探勘查詢任務及操作指南。
本節描述針對各種採礦模型提供的內容基本結構。 它會描述所有採礦模型內容通用的節點類型,並提供如何解譯資訊的指引。
採礦模型內容的結構
每個模型的內容都會呈現為一系列 節點。 節點是採礦模型中的物件,其中包含模型部分的元數據和相關信息。 節點會排列在階層中。 階層中節點的確切排列,以及階層的意義,取決於您所使用的演算法。 例如,如果您建立判定樹模型,模型可以包含多個樹狀結構,全都連接到模型根目錄;如果您建立類神經網路模型,模型可能會包含一或多個網路,再加上統計數據節點。
每個模型中的第一個節點稱為 根節點,或 模型父 節點。 每個模型都有根節點(NODE_TYPE = 1)。 根節點通常包含模型的相關一些元數據,以及子節點的數目,但模型所探索到之模式的其他資訊很少。
根據您用來建立模型的演算法,根節點具有不同數目的子節點。 子節點有不同的意義,並包含不同的內容,視演算法和數據深度和複雜度而定。
採礦模型內容中的節點
在採礦模型中,節點是一般用途的容器,可儲存模型之所有或部分的相關信息。 每個節點的結構一律相同,並包含數據採礦架構數據列集所定義的數據行。 如需詳細資訊,請參閱 DMSCHEMA_MINING_MODEL_CONTENT數據列集。
每個節點都包含節點的相關元數據,包括每個模型內唯一的標識碼、父節點的標識碼,以及節點擁有的子節點數目。 元數據會識別節點所屬的模型,以及儲存該特定模型的資料庫目錄。 節點中提供的其他內容會根據您用來建立模型的演算法類型而有所不同,而且可能包含下列專案:
在訓練數據中用來支援特定預測值的案例計數。
統計數據,例如平均值、標準偏差或變異數。
係數和公式。
規則和橫向指標的定義。
描述模型部分的 XML 片段。
採礦內容節點類型清單
下表列出數據採礦模型中輸出的不同節點類型。 因為每個演算法會以不同的方式處理資訊,因此每個模型只會產生幾個特定的節點類型。 如果您變更演算法,節點類型可能會變更。 此外,如果您重新處理模型,則每個節點的內容可能會變更。
備註
如果您使用的數據採礦服務與 SQL Server 2014 Analysis Services (SSAS) 中提供的數據採礦服務不同,或者如果您建立自己的外掛程式演算法,則可以使用其他自定義節點類型。
| NODE_TYPE標識碼 | 節點標籤 | 節點內容 |
|---|---|---|
| 1 | 型號 | 元數據和根內容節點。 適用於所有模型類型。 |
| 2 | 樹 | 分類樹狀結構的根節點。 適用於判定樹模型。 |
| 3 | 內部 | 樹狀結構中的內部分割節點。 適用於判定樹模型。 |
| 4 | 分配 | 樹狀結構的終端節點。 適用於判定樹模型。 |
| 5 | 集群 | 演算法偵測到的叢集。 適用於叢集模型和時序群集模型。 |
| 6 | 未知 | 未知的節點類型。 |
| 7 | 項目集 | 演算法偵測到的項目集。 適用於關聯模型或時序群集模型。 |
| 8 | 關聯規則 | 演算法偵測到的關聯規則。 適用於關聯模型或時序群集模型。 |
| 9 | 可預測屬性 | 可預測屬性。 適用於所有模型類型。 |
| 10 | 輸入屬性 | 輸入屬性。 適用於決策樹和朴素貝葉斯模型。 |
| 11 | 輸入屬性狀態 | 輸入屬性狀態的統計數據。 適用於決策樹和樸素貝葉斯模型。 |
| 13 | 順序 | 時序叢集之 Markov 模型元件的最上層節點。 適用於時序群集模型。 |
| 14 | 過渡 | Markov 轉換矩陣。 適用於時序群集模型。 |
| 15 | TimeSeries | 時間序列樹狀結構的非根節點。 僅適用於時間序列模型。 |
| 16 | TsTree | 對應至可預測時間序列之時間序列樹狀結構的根節點。 適用於時間序列模型,且只有在使用MIXED 參數建立模型時才適用。 |
| 17 | NNetSubnetwork | 一個子網路。 適用於類神經網路模型。 |
| 18 | NNet輸入層 | 包含輸入層節點的群組。 適用於類神經網路模型。 |
| 19 | 神經網路隱藏層 (NNetHiddenLayer) | 包含描述隱藏層之節點的群組。 適用於類神經網路模型。 |
| 21 | NNetOutputLayer | 包含輸出層節點的群組。 適用於類神經網路模型。 |
| 21 | NNet輸入節點 | 符合輸入屬性與對應狀態之輸入層中的節點。 適用於類神經網路模型。 |
| 22 | NNetHiddenNode | 隱藏層中的節點。 適用於類神經網路模型。 |
| 23 | NNetOutputNode | 輸出層中的節點。 此節點通常會比對輸出屬性和對應的狀態。 適用於類神經網路模型。 |
| 24 | NNetMarginalNode | 定型集的臨界統計數據。 適用於類神經網路模型。 |
| 25 | RegressionTreeRoot | 回歸樹的根節點。 適用於線性回歸模型和包含連續輸入屬性的判定樹模型。 |
| 26 | NaiveBayes邊際統計節點 | 定型集的臨界統計數據。 適用於樸素貝氏模型。 |
| 二十七 | ArimaRoot | ARIMA 模型的根節點。 僅適用於使用 ARIMA 演算法的時間序列模型。 |
| 28 | ARIMA週期結構 | ARIMA 模型中的定期結構。 僅適用於使用 ARIMA 演算法的時間序列模型。 |
| 二十九 | ArimaAutoRegressive | ARIMA 模型中單一詞彙的自動回歸係數。 僅適用於使用 ARIMA 演算法的時間序列模型。 |
| 30 | ARIMA移動平均 | 在 ARIMA 模型中移動單一詞彙的平均係數。 僅適用於使用 ARIMA 演算法的時間序列模型。 |
| 1000 | CustomBase | 自訂節點類型的起點。 自定義節點類型的值必須大於這個常數的整數。 適用於使用自訂外掛演算法所建立的模型。 |
節點標識碼、名稱、標題和描述
任何模型的根節點一律具有 0 的唯一標識碼(NODE_UNIQUE_NAME)。 Analysis Services 會自動指派所有節點標識碼,因此無法修改。
每個模型的根節點也包含模型的相關一些基本元數據。 此元數據包含儲存模型的 Analysis Services 資料庫(MODEL_CATALOG)、架構(MODEL_SCHEMA),以及模型的名稱(MODEL_NAME)。 不過,此資訊會在模型的所有節點中重複,因此您不需要查詢根節點以取得此元數據。
除了作為唯一標識碼的名稱之外,每個節點都有 一個名稱 (NODE_NAME)。 此名稱由演算法自動建立以供顯示之用,因此無法編輯。
備註
Microsoft叢集演算法可讓使用者將易記名稱指派給每個叢集。 不過,這些易記名稱不會保存在伺服器上,而且如果您重新處理模型,演算法將會產生新的叢集名稱。
演算法會自動產生每個節點的 標題 和 描述 ,並做為標籤,協助您了解節點的內容。 針對每個欄位產生的文字取決於模型類型。 在某些情況下,名稱、標題和描述可能包含完全相同的字串,但在某些模型中,描述可能包含其他資訊。 如需實作的詳細數據,請參閱個別模型類型的相關主題。
備註
只有當您使用實作重新命名的自定義外掛程式演演算法來建置模型時,Analysis Services 伺服器才支援重新命名節點。 若要啟用重新命名,您必須在建立外掛程式演算法時覆蓋方法。
節點父系、節點子系和節點基數
樹狀結構中父節點和子節點之間的關聯性取決於PARENT_UNIQUE_NAME數據行的值。 此值會儲存在子節點中,並告訴您父節點的標識符。 以下是一些範例,展示如何使用這項資訊:
如果PARENT_UNIQUE_NAME 為 NULL,這表示該節點是模型的頂層節點。
如果PARENT_UNIQUE_NAME值為 0,節點必須是模型中頂端節點的直接子代。 這是因為根節點的標識碼一律為 0。
您可以使用資料採礦延伸模組 (DMX) 查詢內的函式來尋找特定節點的子系或父系。 如需在查詢中使用函式的詳細資訊,請參閱 數據採礦查詢。
基數 是指集合中的項目數目。 在處理過的採礦模型的背景中,基數(有界度)會告訴您在特定節點中的子節點數量。 例如,如果判定樹模型具有 [Yearly Income] 的節點,而該節點有兩個子節點,一個用於條件 [Yearly Income] = High,另一個用於條件,[Yearly Income] = Low,則 [Yearly Income] 節點的 CHILDREN_CARDINALITY 值為 2。
備註
在 Analysis Services 中,計算節點基數時,只會將直接子節點納入考量。 不過,如果您建立自定義外掛程式演算法,則可以重載 CHILDREN_CARDINALITY 以不同方式計算基數。 例如,如果您想要計算子系總數,而不只是立即子系,這可能很有用。
雖然所有模型的基數都會以相同方式計算,但解譯或使用基數值的方式會根據模型類型而有所不同。 例如,在叢集模型中,頂端節點的基數會告訴您找到的叢集總數。 在其他類型的模型中,基數可能一律有一個設定值,視節點類型而定。 如需如何解譯基數的詳細資訊,請參閱個別模型類型的相關主題。
備註
某些模型,例如Microsoft類神經網路演算法所建立的模型,也包含特殊的節點類型,可提供整個模型定型數據的描述性統計數據。 根據定義,這些節點永遠不會有子節點。
節點分布
NODE_DISTRIBUTION數據行包含巢狀數據表,在許多節點中提供演算法所探索模式的重要和詳細資訊。 此數據表中提供的確切統計數據會根據模型類型、節點在樹狀結構中的位置,以及可預測的屬性是連續數值還是離散值而變更:不過,它們可以包含屬性的最小值和最大值、指派給值的權數、節點中的案例數目、回歸公式中使用的係數,以及標準偏差和變異數等統計量值。 如需有關如何解譯節點分佈的更多資訊,請參閱您正在使用的特定模型類型主題。
備註
視節點類型而定,NODE_DISTRIBUTION數據表可能是空的。 例如,某些節點只能組織子節點的集合,而它是包含詳細統計數據的子節點。
巢狀數據表NODE_DISTRIBUTION一律包含下列數據行。 每個數據行的內容會根據模型類型而有所不同。 如需特定模型類型的詳細資訊,請參閱 依演算法類型採礦模型內容。
屬性名稱
內容會因演算法而異。 可以是欄的名稱,例如可預測的屬性、規則、項集,或者是演算法內部的資訊片段,如公式的一部分。
此資料行也可以包含屬性值組。
屬性值
ATTRIBUTE_NAME中名為的屬性值。
如果屬性名稱是數據行,則最直接的情況是,ATTRIBUTE_VALUE包含該數據行的其中一個離散值。
視演演算法處理值的方式而定,ATTRIBUTE_VALUE也可以包含旗標,告訴您屬性是否有值存在Existing,或值是否為 null (Missing)。
例如,如果您的模型設定為尋找至少購買特定專案一次的客戶,則ATTRIBUTE_NAME數據行可能包含屬性值組,以定義感興趣的專案,例如 Model = 'Water bottle',而ATTRIBUTE_VALUE數據行只會包含 關鍵詞 Existing 或 Missing。
支援
具有此屬性-值對或包含此項目集或規則的案例數量。
一般而言,針對每個節點,支援值會告訴您目前節點中包含多少定型集案例。 在大多數模型類型中,支持代表案例的精確數量。 支援值很有用,因為您可以檢視定型案例中的數據分佈,而不需要查詢定型數據。 Analysis Services 伺服器也會使用這些預存值來計算預存機率與先前的機率,以判斷推斷是否強或弱。
例如,在分類樹狀結構中,支援值表示具有所描述屬性組合的案例數目。
在決策樹中,樹狀結構每個層級的支援總和會加總至其父節點的支援。 例如,如果包含 1200 個案例的模型除以性別相等,然後針對節點 (2) 的節點 (2), 節點 (4)、 (5) 和 [6] 的子節點,一律會加總到與節點 (2) 相同的案例數目。
| 節點標識碼和節點屬性 | 支援數量 |
|---|---|
| (1) 模型根 | 1200 |
| (2) 性別 = 男性 (3) 性別 = 女性 |
600 600 |
| (4) 性別 = 男性和收入 = 高 (5) 性別 = 男性和收入 = 中等 (6) 性別 = 男性和收入 = 低 |
200 200 200 |
| (7) 性別 = 女性和收入 = 高 (8) 性別 = 女性和收入 = 中等 (9) 性別 = 女性和收入 = 低 |
200 200 200 |
針對群集模型,支援的數目可以加權,以包含屬於多個叢集的機率。 多個叢集成員資格是預設的叢集方法。 在此情境下,由於每個案例不一定只屬於一個且只有一個叢集,因此在這些模型中的支持度可能不會在所有叢集加總達到 100%。
概率
表示整個模型中這個特定節點的機率。
一般而言,機率代表這個特定值的支援,除以節點內案例的總計數(NODE_SUPPORT)。
不過,機率會稍微調整,以消除數據中遺漏值所造成的偏差。
例如,如果 [Total Children] 的目前值為 'One' 和 'Two',您想要避免建立一個預測無法沒有小孩或有三個小孩的模型。 為了確保遺漏值的可能性降低,但並非完全不可能,演算法總是會在任何屬性的實際值計數上加1。
範例:
[Total Children = One] 的機率 = [總子女數為一的案例數] + 1/[案例總數] + 3
[總孩子數=兩個] 的概率= ([總孩子數=兩個] 的案例計數+1)/[所有案例的計數] +3
備註
3 的調整是藉由將1新增至現有值總數 n 來計算。
調整之後,所有值的機率加起來仍等於 1。 沒有數據之值的機率(在此範例中為 [Total Children = 'Zero', 'Three', or some other value]),從非常低的非零層級開始,而且隨著增加更多案例而緩慢上升。
方差
表示節點內值的變異數。 根據定義,離散值的變異數一律為 0。 如果模型支持連續值,則會使用分母 n 或節點中的案例數目,將變異數計算為 σ (sigma)。
一般使用兩個定義來表示標準偏差(StDev)。 計算標準偏差的其中一種方法會考慮偏差,另一個方法會計算標準偏差而不使用偏差。 一般而言,Microsoft數據採礦演算法在計算標準偏差時不會使用偏差。
出現在NODE_DISTRIBUTION數據表中的值是所有離散和離散化屬性的實際值,以及連續值的平均值。
值類型
指出值或屬性的數據類型,以及值的用法。 特定實值型別僅適用於特定模型類型:
| VALUE_TYPE標識碼 | 值標籤 | 實值類型名稱 |
|---|---|---|
| 1 | 失蹤 | 表示案例數據未包含此屬性的值。 狀態 Missing 會與具有值的屬性分開計算。 |
| 2 | 現存 | 表示案例數據包含此屬性的值。 |
| 3 | 連續的 | 表示屬性的值是連續數值,因此可以透過平均值來表示,以及變異數和標準偏差。 |
| 4 | 離散 | 指出數值或文字,視為離散的值。 注意 離散值也可以遺失;不過,進行計算時會以不同的方式處理它們。 如需詳細資訊,請參閱遺漏值(Analysis Services - 數據採礦)。 |
| 5 | 離散化 | 表示屬性包含已離散化的數值。 此值會是描述離散化貯體之格式化字串。 |
| 6 | 現存 | 表示屬性具有連續數值,而且數據中已提供值,以及遺漏或推斷的值。 |
| 7 | 係數 | 表示係數的數值。 係數是計算相依變數值時所套用的值。 例如,如果您的模型建立回歸公式來根據年齡預測收入,則係數會用於將年齡與收入相關的公式中。 |
| 8 | 分數提升 | 表示代表屬性分數增益的數值。 |
| 9 | 統計學 | 表示數值,表示回歸輸入值的統計數據。 |
| 10 | 節點唯一名稱 | 表示值不應該處理為數值或字串,而是當做模型中另一個內容節點的唯一標識符來處理。 例如,在類神經網路模型中,標識符會提供輸出層節點到隱藏層節點的指標,以及從隱藏層中的節點到輸入層中的節點。 |
| 11 | 攔截 | 表示代表回歸公式中截距的數值。 |
| 12 | 週期性 | 表示值表示模型中的定期結構。 僅適用於包含 ARIMA 模型的時間序列模型。 注意:Microsoft 時間序列演算法會根據訓練數據自動偵測週期性結構。 因此,最終模型中的週期性可能包含您在建立模型時未提供做為參數的週期性值。 |
| 13 | 自動回歸順序 | 表示值代表自動回歸數列的數目。 適用於使用 ARIMA 演演算法的時間序列模型。 |
| 14 | 移動平均順序 | 表示值,表示數列中移動平均的數目。 適用於使用 ARIMA 演演算法的時間序列模型。 |
| 15 | 差異順序 | 表示該值代表一個數值,指示數列被微分的次數。 適用於使用 ARIMA 演演算法的時間序列模型。 |
| 16 | 布爾邏輯 | 表示布爾型別。 |
| 17 | 其他 | 表示演算法所定義的自定義值。 |
| 18 | 預先呈現的字串 | 表示演算法將自定義值呈現為字串。 物件模型未套用任何格式設定。 |
實值型別衍生自 ADMOMD.NET 列舉。 如需詳細資訊,請參閱 Microsoft.AnalysisServices.AdomdServer.MiningValueType。
節點分數
節點分數的意義會根據模型類型而有所不同,而且也可以專屬於節點類型。 如需如何計算每個模型和節點類型NODE_SCORE的相關信息,請參閱 依演算法類型採礦模型內容。
節點機率和臨界機率
採礦模型架構行集包含所有模型類型的欄位 NODE_PROBABILITY 和 MARGINAL_PROBABILITY。 這些數據行只會在機率值有意義的節點中包含值。 例如,模型的根節點永遠不會包含機率分數。
在這些提供機率分數的節點中,節點機率和臨界機率代表不同的計算。
臨界機率 是從其父代到達節點的機率。
節點機率 是從根節點到達該節點的機率。
節點機率 一律小於或等於 邊際機率。
例如,如果決策樹中所有客戶的母群體均按性別平均分割(且沒有缺漏值),子節點的機率應該是 0.5。 不過,假設每一個性別範疇的節點都以收入層級,高、中、低均等分配。 在此情況下,每個子節點的MARGINAL_PROBABILITY分數應一律為 .33,但NODE_PROBABILTY值將是導致該節點的所有機率乘積,因此一律小於MARGINAL_PROBABILITY值。
| 節點/屬性和值的層級 | 臨界機率 | 節點機率 |
|---|---|---|
| 模型根目錄 所有目標客戶 |
1 | 1 |
| 目標客戶依性別分割 | .5 | .5 |
| 目標客戶按性別分割,再按收入分割三種方式 | .33 | .5 * .33 = .165 |
節點規則和臨界規則
採礦模型架構數據列集也包含所有模型類型的數據行NODE_RULE和MARGINAL_RULE。 這些數據行包含 XML 片段,可用來串行化模型,或表示模型結構的某些部分。 如果某個值毫無意義,某些節點的數據行可能空白。
提供兩種 XML 規則,類似於兩種機率值。 MARGINAL_RULE中的 XML 片段會定義目前節點的屬性和值,而 NODE_RULE 中的 XML 片段則描述模型根目錄中目前節點的路徑。
採礦模型內容依據演算法類型
每個演算法都會將不同類型的資訊儲存為其內容架構的一部分。 例如,Microsoft叢集演算法會產生許多子節點,每個節點都代表可能的叢集。 每個叢集節點都包含描述叢集中專案所共用特性的規則。 相反地,Microsoft線性回歸演算法不包含任何子節點;相反地,模型的父節點包含方程式,描述分析所探索的線性關聯性。
下表提供每種演算法類型主題的連結。
模型內容主題: 說明每個演算法類型之每個節點類型的意義,並提供特定模型類型最感興趣的節點指引。
查詢主題: 針對特定模型類型和如何解譯結果的指引,提供查詢範例。
檢視採礦模型內容的工具
當您在 SQL Server Data Tools (SSDT) 中瀏覽或探索模型時,您可以在 SQL Server Data Tools (SSDT) 和 SQL Server Management Studio 中檢視 Microsoft一般內容樹視圖器中的資訊。
Microsoft 通用內容查看器會使用採礦模型的內容結構資料列集合中可用的相同資訊,顯示來自模型的欄、規則、特性、屬性、節點和其他內容。 內容架構數據列集是一個泛型架構,用來呈現數據採礦模型內容的詳細資訊。 您可以在任何支援階層式數據列集的用戶端中檢視模型內容。 SQL Server Data Tools (SSDT) 中的查看器會在 HTML 資料表查看器中呈現這項資訊,以一致格式表示所有模型,讓您更輕鬆地瞭解您所建立之模型的結構。 如需詳細資訊,請參閱 使用Microsoft泛型內容樹視圖器流覽模型。
用於查詢採礦模型內容的工具
若要擷取採礦模型內容,您必須針對數據採礦模型建立查詢。
建立內容查詢最簡單的方式是在 SQL Server Management Studio 中執行下列 DMX 語句:
SELECT * FROM [<mining model name>].CONTENT
如需詳細資訊,請參閱 數據採礦查詢。
您也可以使用數據採礦架構數據列集來查詢採礦模型內容。 架構數據列集是用戶端用來探索、瀏覽和查詢採礦結構和模型資訊的標準結構。 您可以使用 XMLA、Transact-SQL 或 DMX 語句來查詢架構數據列集。
在 SQL Server 2014 中,您也可以開啟 Analysis Services 實例的連線並查詢系統數據表,來存取數據採礦架構數據列集中的資訊。 如需詳細資訊,請參閱查詢數據採礦架構數據列集(Analysis Services - 數據採礦)。