Microsoft 類神經網路演算法 (SSAS)
在 Microsoft SQL Server 2005 Analysis Services (SSAS) 中,Microsoft 類神經網路演算法會以建構多層認知神經網路來建立分類和迴歸採礦模型。類似 Microsoft 決策樹演算法,若有提供可預測屬性的每一個狀態,則 Microsoft 類神經網路演算法會計算輸入屬性的每一個可能狀態的機率。稍後您可以使用這些機率,依據輸入屬性預測該預測屬性的結果。
範例
Microsoft 類神經網路演算法在分析複雜輸入資料 (例如來自製造程序或商業程序的資料) 或商務問題 (有大量培訓資料可用但很難使用其他演算法來衍生規則) 時很有用。
使用 Microsoft 類神經網路演算法的建議狀況包括下列各項:
- 行銷和促銷分析,例如衡量直接郵寄促銷廣告或電台廣告活動的績效。
- 從歷程記錄資料中預測股價移動、貨幣波動或其他高流動性財務資訊。
- 分析製造和產業流程。
演算法的運作方式
Microsoft 類神經網路 (Neural Network) 演算法使用多層認知 (Multilayer Perceptron) 網路,亦稱為倒傳播差異規則 (Back-Propagated Delta Rule) 網路,它包含最多 3 層神經 (Neuron) 或認知器 (Perceptron)。這 3 層分別是輸入層、選擇性隱藏層和輸出層。在多層認知網路上,每一層神經會接收一或多個輸入,並會產生一或多個相同的輸出。每一個輸出就是神經輸入總和的簡易非線性函數。輸入只會從輸入層的節點向前傳遞到隱藏層的節點,最後再傳遞至輸出層;同一層內的神經之間沒有連接。(如果不包括隱藏層,則稍後輸入會從輸入層的節點向前傳遞到輸出的節點中)。多層認知類神經網路的詳細討論是在此文件集的範圍之外。
以 Microsoft 類神經網路演算法建構的採礦模型可包含多個網路,視用於輸入和預測的資料行數目或只用於預測的資料行數目而定。單一採礦模型包含的網路數目,視採礦模型使用的輸入資料行和可預測資料行所包含的狀態數目而定。
在以 Microsoft 類神經網路演算法建立的類神經網路中,有 3 種神經類型:
- 輸入神經
輸入神經會提供資料採礦模型的輸入屬性值。針對分隔輸入屬性,輸入神經通常代表輸入屬性的單一狀態,包括遺漏值。例如,二進位輸入屬性會產生一個描述遺漏狀態或現有狀態的輸入節點,指出該屬性的值是否存在。用來作為輸入屬性的布林資料行會產生 3 個輸入神經:一個用於 True 值的神經,一個用於 False 值的神經,以及一個用於遺漏狀態或現有狀態的神經。有兩個以上之狀態的分隔輸入屬性會為每一個狀態產生一個輸入神經,並為遺漏狀態或現有狀態產生一個輸入神經。連續輸入屬性會產生兩個輸入神經:一個用於遺漏狀態或現有狀態的神經,一個用於連續屬性值本身的神經。輸入神經會提供輸入給一或多個隱藏神經。 - 隱藏神經
隱藏神經會接收來自輸入神經的輸入,並提供輸出給輸出神經。 - 輸出神經
輸出神經代表資料採礦模型的可預測屬性值。針對分隔輸入屬性,輸出神經通常代表可預測屬性的單一預測狀態,包括遺漏值。例如,二進位可預測屬性會產生一個描述遺漏狀態或現有狀態的輸出節點,指出該屬性的值是否存在。用來作為可預測屬性的布林資料行會產生 3 個輸出神經:一個用於 True 值的神經,一個用於 False 值的神經,以及一個用於遺漏狀態或現有狀態的神經。有兩個以上之狀態的分隔可預測屬性會為每一個狀態產生一個輸出神經,並為遺漏狀態或現有狀態產生一個輸出神經。連續可預測資料行會產生兩個輸出神經:一個用於遺漏狀態或現有狀態的神經,一個用於連續資料行值本身的神經。如果因為檢閱可預測資料行集而產生 500 個以上的輸出神經,則 Analysis Services 就會在採礦模型中產生新網路來代表其他輸出神經。
一個神經接收數個輸入:利用輸入神經,神經接收來自原始資料的輸入;利用隱藏神經和輸出神經,神經接收來自類神經網路中其他神經輸出的輸入。輸入會建立神經之間的關聯性,而關聯性會作為特定案例集分析的路徑。
每一個輸入都有被指定一個值,稱為加權,它描述特定輸入對隱藏神經或輸出神經的相關性或重要性。當演算法判斷輸入是否成功分類特定案例時,指定給輸入的加權愈大,該輸入的值對接收之神經的相關性或重要性也愈大。另請注意,加權可以是負數,這表示輸入可以禁止而非啟動特定神經。輸入的值會乘以加權來強調特定神經的輸入。(若為負加權,輸入的值會乘以較不醒目的加權)。
因此,每一個神經都有被指定一個簡易非線性函數,稱為啟動函數,它描述特定神經對類神經網路層的相關性或重要性。隱藏神經會對其啟動函數使用 hypertagngent 函數,而輸出神經則會對其啟動函數使用 sigmoid 函數。兩個函數都是非線性連續函數,可讓類神經建立輸入和輸出神經之間的非線性關聯性的模型。
培訓類神經網路
培訓使用 Microsoft 類神經網路演算法的資料採礦模型,包括數個步驟。您對演算法可用之參數所指定的值,對這些步驟會有很大的影響。
演算法先從資料來源評估和擷取培訓資料。某百分比的培訓資料,稱為鑑效組資料,保留供測量產生模型結構的精確度之用。在培訓程序期間,在培訓資料的每一次反覆之後,就會以鑑效組資料來評估模型。當模型的精確度不再增加時,培訓程序即停止。SAMPLE_SIZE 和 HOLDOUT_PERCENTAGE 參數的值是用來決定從培訓資料取樣的案例數目,以及為了鑑效組資料暫擱的案例數目。HOLDOUT_SEED 參數的值是用來隨機決定為了鑑效組資料而暫擱的個別案例。
接下來,演算法會決定採礦模型支援的網路數目和複雜度。如果採礦模型包含一或多個只用於預測的屬性,則演算法會建立單一網路來代表所有這些屬性。如果採礦模型包含一或多個同時用於輸入和預測的屬性,則演算法提供者會為每一個屬性建構網路。如果輸入屬性或可預測屬性的數目分別大於 MAXIMUM_INPUT_ATTRIBUTES 參數或 MAXIMUM_OUTPUT_ATTRIBUTES 參數的值,則會使用功能選項演算法來降低包括在採礦模型中之網路的複雜度。功能選項會將輸入屬性或可預測屬性的數目減少為在統計上與模型最相關的那些數目。
針對有分隔值的輸入屬性和可預測屬性,每一個輸入或輸出神經分別代表單一狀態。針對有連續屬性的輸入屬性和可預測屬性,每一個輸入或輸出神經分別代表該屬性值的範圍和散發。在任一案例中所支援的最大狀態數目,會視 MAXIMUM_STATES 演算法參數的值而定。如果特定屬性的狀態數目超過 MAXIMUM_STATES 演算法參數的值,則會選擇該屬性最常用或相關的狀態 (不超過最大值),而剩餘狀態則會分成遺漏值群組,作為分析用途。
然後,演算法會使用 HIDDEN_NODE_RATIO 參數的值來決定要為隱藏層建立的初始神經數目。您可以將 HIDDEN_NODE_RATIO 設定為 0,以防止在網路中建立演算法為採礦模型所產生的隱藏層,而將類神經網路視為邏輯迴歸來處理。
演算法提供者反覆地同時評估網路上所有輸入的加權,使用先前保留的培訓資料集,以及將鑑效組資料中每一個案例的實際已知值與網路的預測做比較,這種程序稱為批次學習。在演算法評估整個培訓資料集之後,演算法會檢閱每一個神經的預測值和實際值。演算法會計算錯誤的程度 (如果有的話) 並調整與該神經的輸入相關聯的加權,從輸出神經回溯到輸入神經,這種程序稱為倒傳播。接著,演算法會對整個培訓資料集重複此程序。因為演算法可以支援許多加權和輸出神經,所以使用結合漸層演算法 (conjugate gradient algorithm) 來引導培訓程序,以指派和評估輸入的加權。結合漸層演算法的討論是在此文件集的範圍之外。
使用演算法
類神經網路模型必須包含一個索引鍵資料行、一或多個輸入資料行,以及一或多個可預測資料行。
Microsoft 類神經網路演算法支援特定的輸入資料行內容類型、可預測資料行內容類型和模型旗標,這些都會在下表中列出。
輸入資料行內容類型 |
Continuous、Cyclical、Discrete、Discretized、Key、Table 和 Ordered |
可預測資料行內容類型 |
Continuous、Cyclical、Discrete、Discretized 和 Ordered |
模型旗標 |
MODEL_EXISTENCE_ONLY 和 NOT NULL |
散發旗標 |
Normal、Uniform 和 Log Normal |
所有 Microsoft 演算法都支援一個常用函數集。不過,Microsoft 類神經網路演算法支援下表所列出的其他函數。
|
如需所有 Microsoft 演算法常用的函數清單,請參閱<資料採礦演算法>。如需有關如何使用這些函數的詳細資訊,請參閱<資料採礦延伸模組 (DMX) 函數參考>。
使用 Microsoft 類神經網路演算法建立的模型不支援鑽研或資料採礦維度,因為採礦模型中的節點結構不一定會直接對應到基礎資料。
Microsoft 類神經網路演算法支援數個會影響所產生之採礦模型的效能和精確度的參數。下表描述每一個參數。
參數 | 描述 |
---|---|
HIDDEN_NODE_RATIO |
指定隱藏神經與輸入和輸出神經的比例。下列公式決定隱藏層中的初始神經數目。 HIDDEN_NODE_RATIO * SQRT(Total input neurons * Total output neurons) 預設值為 4.0。 |
HOLDOUT_PERCENTAGE |
指定用來計算鑑效組錯誤之培訓資料內的案例百分比,這可作為培訓採礦模型時停止準則的一部份。 預設值為 30。 |
HOLDOUT_SEED |
在演算法隨機決定鑑效組資料時,指定用來植入虛擬隨機產生器的數字。如果此參數是設定為 0,此演算法會依據採礦模型的名稱產生種子,以保證在重新處理期間,模型內容保持不變。 預設值為 0。 |
MAXIMUM_INPUT_ATTRIBUTES |
決定在運用功能選項之前可提供給演算法之輸入屬性的最大數目。將此值設定為 0,會停用輸入屬性的功能選項。 預設值為 255。 |
MAXIMUM_OUTPUT_ATTRIBUTES |
決定在運用功能選項之前可提供給演算法之輸出屬性的最大數目。將此值設定為 0,會停用輸出屬性的功能選項。 預設值為 255。 |
MAXIMUM_STATES |
指定演算法支援的每個屬性之分隔狀態的最大數目。如果特定屬性的狀態數目大於對這個參數所指定的數字,則演算法會使用該屬性最常用的狀態,並將剩餘狀態視為遺漏。 預設值為 100。 |
SAMPLE_SIZE |
指定用來培訓模型的案例數目。此演算法會使用此數字或不包括在鑑效組資料中之總案例數的百分比 (由 HOLDOUT_PERCENTAGE 參數指定),以較小者為準。 換句話說,如果 HOLDOUT_PERCENTAGE 是設定為 30,則演算法將使用這個參數的值或等於總案例數 70% 的值,以較小者為準。 預設值為 10000。 |
請參閱
概念
資料採礦演算法
資料採礦的功能選擇
使用資料採礦工具
以 Microsoft 類神經網路檢視器檢視採礦模型