特徵選取 是數據採礦中常用的詞彙,用來描述可用來減少可管理大小的輸入以進行處理和分析的工具和技術。 特徵選取不僅意指基數縮減,這表示對於可考慮的屬性數量設置一個任意或預定的上限,還包括屬性的選擇,亦即分析師或模型工具會根據其對分析的有用性來主動選取或捨棄屬性。
套用特徵選取的能力對於有效分析至關重要,因為數據集經常包含比建置模型所需的資訊還多得多。 例如,數據集可能包含 500 個描述客戶特性的數據行,但如果某些數據行中的數據非常疏鬆,則從將它們新增至模型會獲得非常小的好處。 如果您在建置模型時保留不必要的數據行,在定型程序期間需要更多 CPU 和記憶體,則已完成的模型需要更多儲存空間。
即使資源不是問題,您通常仍想要移除不需要的數據行,因為它們可能會降低探索到模式的品質,原因如下:
某些欄位是嘈雜或冗餘。 此雜訊讓從數據中探索有意義的模式會更加困難;
若要發現有價值的模式,大多數資料探勘演算法需要在高維度資料集上使用更大的訓練資料集。 但是在某些資料探勘應用中,訓練數據非常少。
如果數據源中只有 500 個數據行中有 50 個資訊有助於建置模型,您可以只將它們排除在模型中,或者您可以使用特徵選取技術來自動探索最佳特徵,並排除統計上微不足道的值。 特徵選擇有助於解決兩個問題:數據過多但價值低,或數據不足但價值高。
Analysis Services 數據採礦中的特徵選取
通常,特徵選取會在 Analysis Services 中自動執行,而且每個演算法都有一組預設技術,可智慧地套用縮減功能。 在定型模型之前,一律會執行特徵選取,以自動選擇數據集中最有可能用於模型的屬性。 不過,您也可以手動設定參數以影響特徵選取行為。
一般而言,特徵選取的運作方式是計算每個屬性的分數,然後只選取具有最佳分數的屬性。 您也可以調整最高分數的閾值。 Analysis Services 提供多個方法來計算這些分數,而且在任何模型中套用的確切方法取決於這些因素:
模型中所使用的演算法
屬性的數據類型
您可能已在模型上設定的任何參數
特徵選取會套用至輸入、可預測屬性,或套用至數據行中的狀態。 當特徵選取的評分完成時,只有演算法選取的屬性和狀態會包含在模型建置程式中,並可用於預測。 如果您選擇不符合特徵選取閾值的可預測屬性,則屬性仍可用於預測,但預測只會以模型中存在的全域統計數據為基礎。
備註
特徵選取只會影響模型中使用的數據行,而且不會影響採礦結構的儲存。 您從採礦模型中排除的欄仍然在結構中可用,採礦結構中的欄位資料將會被快取。
特徵選取方法的定義
根據您正在使用的數據類型,以及您選擇進行分析的演算法,有許多方式可以實作特徵選取。 SQL Server Analysis Services 提供數種熱門且完善的評分屬性方法。 在任何演算法或數據集中套用的方法取決於數據類型,以及數據行使用方式。
有趣的分數是用來對包含非二進位連續數值數據的數據行中的屬性進行排名和排序。
香農熵 和兩個 貝氏 分數可用於包含離散和離散化數據的欄位。 不過,如果模型包含任何連續數據行,則會使用有趣的分數來評估所有輸入數據行,以確保一致性。
下一節說明特徵選取的每個方法。
趣味評分
如果功能告訴您一些有用的資訊,則功能會很有趣。 由於用途的定義會根據案例而有所不同,因此數據採礦業已開發出各種方法來測量 有趣性。 例如,新穎性可能在極端值偵測中很有趣,而判斷密切相關項目或判斷權重的能力可能在分類中更具吸引力。
SQL Server Analysis Services 中使用的有趣性量值是以 entropy 為基礎,這表示具有隨機分配的屬性具有較高的 entropy 和較低的信息增益:因此,這類屬性較不有趣。 任何特定屬性的 entropy 會與所有其他屬性的 entropy 進行比較,如下所示:
Interestingness(Attribute) = - (m - Entropy(Attribute)) * (m - Entropy(Attribute))
中心熵或 m 表示整個特徵集的熵。 藉由從中央熵中減去目標屬性的熵,您可以評估該屬性提供了多少資訊。
每當數據行包含非二進位連續數值數據時,預設會使用此分數。
香農熵
香農熵測量隨機變數在特定結果下的不確定性。 例如,硬幣投擲的熵可以表示為出現正面的機率函式。
Analysis Services 會使用下列公式來計算 Shannon 的 entropy:
H(X) = -∑ P(xᵢ) log(P(xᵢ))
這個評分方法適用於離散和離散化屬性。
貝氏與 K2 舊版
Analysis Services 提供兩個以貝氏網路為基礎的特徵選取分數。 貝氏網路是狀態的 有向 或 非循環 圖表,且狀態之間會轉換,這表示某些狀態一律在目前狀態之前、某些狀態為後置狀態,而且圖形不會重複或迴圈。 根據定義,貝氏網路允許使用先前的知識。 不過,在計算後續狀態機率時使用哪些先前狀態的問題對於演算法設計、效能和精確度而言很重要。
從貝氏網路學習的 K2 演算法是由 Cooper 和 Herskovits 所開發,通常用於數據採礦。 它是可調整的,而且可以分析多個變數,但需要排序做為輸入的變數。 如需詳細資訊,請參閱 Chickering、Geiger 和 Heckerman 撰寫的《Learning Bayesian Networks》。
這個評分方法適用於離散和離散化屬性。
貝氏迪里希萊特對等專案與統一優先
貝氏 Dirichlet 等價(BDE)分數也使用貝氏分析來評估給定一組數據的網絡。 BDE 評分方法是由 Heckerman 所開發,並以庫珀和赫斯科維茨開發的 BD 計量為基礎。 Dirichlet 分佈是一種多項分佈,描述網路中每個變數的條件機率,而且有許多屬性可用於學習。
貝葉斯 Dirichlet 等價配合均勻先驗(BDEU)方法假設一個 Dirichlet 分佈的特殊情況,其中使用數學常數來創建一個固定或者均勻的先驗狀態分佈。 BDE 分數也會假設可能性等價,這表示無法預期數據會區分對等結構。 換句話說,如果 A Then B 的分數與 If B Then A 的分數相同,則無法根據數據來區分結構,而且無法推斷因果關係。
如需貝氏網路和這些評分方法實作的詳細資訊,請參閱 學習貝氏網路。
Analysis Services 演算法所使用的特徵選取方法
下表列出支援特徵選取的演算法、演算法所使用的特徵選取方法,以及您設定用來控制特徵選取行為的參數:
| 演算法 | 分析方法 | 評論 |
|---|---|---|
| 貝氏機率分類 | 香農的熵 貝氏與 K2 先驗 貝葉斯迪利克雷分布與均勻先驗(預設值) |
Microsoft Naïve Bayes 演算法只接受離散或離散化屬性,因此無法使用 interestingness score。 如需此演算法的詳細資訊,請參閱 Microsoft貝氏機率分類演算法技術參考。 |
| 決策樹 | 有趣程度分數 香農的熵 貝葉斯與 K2 先驗 貝葉斯-迪里希萊特與均勻先驗分布(預設值) |
如果有任何數據行包含非二進位連續值,則會針對所有數據行使用有趣的分數,以確保一致性。 否則,會使用預設特徵選取方法,或您在建立模型時指定的方法。 如需此演算法的詳細資訊,請參閱 Microsoft判定樹演演算法技術參考。 |
| 類神經網路 | 趣味評分 香農熵 貝氏與 K2 先驗 貝葉斯狄利克雷均勻先驗(預設值) |
只要數據包含連續的數據欄,Microsoft 類神經網路演算法就可以同時使用貝氏方法和熵為基礎的方法。 如需此演算法的詳細資訊,請參閱 Microsoft類神經網路演算法技術參考。 |
| 邏輯斯回歸 | 趣味指數 香農的熵 貝氏與 K2 先驗分佈 貝葉斯狄利克雷與均一先驗(預設值) |
雖然Microsoft羅吉斯回歸演算法是以Microsoft類神經網路演算法為基礎,但您無法自定義羅吉斯回歸模型來控制特徵選取行為:因此,特徵選取一律預設為最適合屬性的方法。 如果所有屬性都是離散或離散化,則預設值為 BDEU。 如需此演算法的詳細資訊,請參閱 Microsoft羅吉斯回歸演算法技術參考。 |
| 叢集 | 趣味性分數 | Microsoft叢集演算法可以使用離散或離散化的數據。 不過,由於每個屬性的分數會計算為距離,並且以連續數位表示,因此必須使用有趣的分數。 如需此演算法的詳細資訊,請參閱 Microsoft叢集演算法技術參考。 |
| 線性迴歸 | 趣味指標 | Microsoft 線性回歸演算法只能使用趣味性评分,因為它只支援連續列。 如需此演算法的詳細資訊,請參閱 Microsoft線性回歸演算法技術參考。 |
| 關聯規則 序列聚類 |
未使用 | 這些演算法不涉及特徵選取。 不過,您可以透過設定 MINIMUM_SUPPORT 和 MINIMUM_PROBABILITY 這兩個參數的值,來控制演算法的行為,並在必要時減少輸入數據的大小。 如需詳細資訊,請參閱 Microsoft關聯演算法技術參考 和 Microsoft時序群集演算法技術參考。 |
| 時間序列 | 未使用 | 特徵選取不適用於時間序列模型。 如需此演算法的詳細資訊,請參閱 Microsoft時間序列演算法技術參考。 |
特徵選取參數
在支援特徵選取的演算法中,您可以使用下列參數來控制何時開啟特徵選取。 每個演算法都有允許輸入數目的預設值,但您可以覆寫此預設值並指定屬性數目。 本節列出提供用來管理功能選取的參數。
MAXIMUM_INPUT_ATTRIBUTES
如果模型包含的數據行數目超過 MAXIMUM_INPUT_ATTRIBUTES 參數中指定的數位,則演算法會忽略它計算為不感興趣的任何數據行。
MAXIMUM_OUTPUT_ATTRIBUTES(最大輸出屬性)
同樣地,如果模型包含比 在 MAXIMUM_OUTPUT_ATTRIBUTES 參數中指定的數位更可預測的數據行,演算法會忽略它計算為不感興趣的任何數據行。
最大狀態數
如果模型包含的案例比 在 MAXIMUM_STATES 參數中指定的還要多,則最不受歡迎的狀態會分組在一起,並視為遺漏。 如果其中任一個參數設定為 0,則會關閉特徵選取,因而影響處理時間和效能。
除了特徵選取的這些方法之外,您還可以藉由在模型上設定 模型旗 標或設定結構上的 散發旗 標,來改善演算法識別或升階有意義的屬性的能力。 如需這些概念的詳細資訊,請參閱模型標誌(數據採礦)和欄位分佈(數據採礦)。