特徵選取 (資料採礦)

適用於: SQL Server 2019 和舊版 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

SQL Server 2017 Analysis Services 中已淘汰數據採礦,現在已在 SQL Server 2022 Analysis Services 中停止。 檔不會更新為已淘汰和已停止的功能。 若要深入瞭解,請參閱 Analysis Services 回溯相容性

功能選取 是機器學習的重要組成部分。 特徵選取是指減少用於處理和分析的輸入,或尋找最有意義的輸入的程式。 相關詞彙 特徵工程(或 特徵擷取),是指從現有數據擷取實用資訊或特徵的程式。

為何要選取特徵?

基於數個原因,特徵選取對於建置良好模型至關重要。 其中一個是特徵選取表示 基數縮減,以對建置模型時可考慮的屬性數目施加截斷。 數據幾乎一律包含比建置模型所需的資訊更多,或錯誤的資訊種類。 例如,您可能有 500 個數據列描述客戶特性的數據集;不過,如果某些數據行中的數據非常疏鬆,則從將這些數據行新增至模型,而且如果其中一些數據行彼此重複,則使用這兩個數據行可能會影響模型,這幾乎沒有什麼好處。

特徵選取不僅能改善模型的品質,也會讓模型化程式更有效率。 如果您在建置模型時使用不必要的數據行,在定型程序期間需要更多 CPU 和記憶體,而完成的模型需要更多儲存空間。 即使資源不是問題,您仍會想要執行特徵選取並識別最佳數據行,因為不需要的數據行可能會以數種方式降低模型的品質:

  • 嘈雜或多餘的數據可讓您更難以探索有意義的模式。

  • 如果數據集是高維度,大部分的數據採礦演算法都需要更大的定型數據集。

在特徵選取過程中,分析師或模型化工具或演算法會根據分析的效用主動選取或捨棄屬性。 分析師可能會執行特徵工程來新增特徵,並移除或修改現有的數據,而機器學習演算法通常會為數據行評分,並驗證其在模型中的效用。

簡言之,特徵選取有助於解決兩個問題:擁有太多值的數據,或數據太少且價值過高。 在特徵選取中,您的目標應該是從數據源識別在建置模型時相當重要的數據行數目下限。

功能選取在 SQL Server 數據採礦中的運作方式

在定型模型之前,一律會執行特徵選取。 使用某些演算法時,特徵選取技術是「內建」,因此會排除無關的數據行,並自動探索到最佳功能。 每個演算法都有自己的一組預設技術,可智慧地套用功能縮減。 不過,您也可以手動設定參數以影響特徵選取行為。

在自動特徵選取期間,會針對每個屬性計算分數,而且只會為模型選取具有最佳分數的屬性。 您也可以調整最高分數的閾值。 SQL Server 數據採礦提供多個方法來計算這些分數,而且在任何模型中套用的確切方法取決於這些因素:

  • 模型中所使用的演算法

  • 屬性的數據類型

  • 您可能已在模型上設定的任何參數

特徵選取會套用至輸入、可預測屬性,或套用至數據行中的狀態。 當特徵選取的評分完成時,只有演算法選取的屬性和狀態會包含在模型建置程式中,並可用於預測。 如果您選擇不符合特徵選取閾值的可預測屬性,則屬性仍可用於預測,但預測只會以模型中存在的全域統計數據為基礎。

注意

特徵選取只會影響模型中使用的數據行,而且不會影響採礦結構的儲存。 您排除採礦模型的數據行仍可在 結構中使用,而且會快取採礦結構數據行中的數據。

特徵選取分數

SQL Server 數據採礦支持這些熱門且完善的評分屬性方法。 任何特定演算法或數據集中使用的特定方法取決於數據類型,以及數據行使用方式。

  • 有趣性 分數是用來排序包含非二進位連續數值數據之數據行中的屬性。

  • Shannon 的 entropy 和兩個 貝氏 分數可用於包含離散和離散化數據的數據行。 不過,如果模型包含任何連續數據行,則會使用有趣的分數來評估所有輸入數據行,以確保一致性。

有趣的分數

如果功能告訴您一些有用的資訊,則功能會很有趣。 不過,有趣性 可以透過許多方式來測量。 新奇 對於極端值偵測可能很有價值,但區分密切相關的專案,或 區分權數的能力,對於分類可能更有趣。

SQL Server 數據採礦中使用的有趣性量值是 以 entropy 為基礎的,這表示具有隨機分配的屬性具有較高的 entropy 和較低的資訊增益:因此,這類屬性較不有趣。 任何特定屬性的 entropy 會與所有其他屬性的 entropy 進行比較,如下所示:

Interestingness(Attribute) = - (m - Entropy(Attribute)) * (m - Entropy(Attribute))

中央 entropy 或 m 表示整個特徵集的 entropy。 藉由從中央 Entropy 減去目標屬性的 entropy,您可以評估屬性提供多少資訊。

每當數據行包含非二進位連續數值數據時,預設會使用此分數。

香農的 Entropy

香農的 Entropy 測量特定結果隨機變數的不確定性。 例如,硬幣投擲的 entropy 可以表示為它即將上頭機率的函式。

Analysis Services 會使用下列公式來計算 Shannon 的 entropy:

H(X) = -∑ P(習) 記錄(P(習))

這個評分方法適用於離散和離散化屬性。

貝氏與 K2 舊版

SQL Server 數據採礦提供兩個以貝氏網路為基礎的特徵選取分數。 貝氏網路是一種 導向非迴圈 狀態圖表,且狀態之間轉換,這表示某些狀態一律在目前狀態之前、某些狀態為後置狀態,而且圖形不會重複或迴圈。 根據定義,貝氏網路允許使用先前的知識。 不過,在計算後續狀態機率時使用哪些先前狀態的問題對於演算法設計、效能和精確度而言很重要。

從貝氏網路學習的 K2 演算法是由 Cooper 和 Herskovits 所開發,通常用於數據採礦。 它是可調整的,而且可以分析多個變數,但需要排序做為輸入的變數。

這個評分方法適用於離散和離散化屬性。

貝氏迪里希萊特對等專案與統一優先

貝氏 Dirichlet 對等專案 (BDE) 分數也會使用貝氏分析來評估給定數據集的網路。 BDE 評分方法是由 Heckerman 所開發,並以庫珀和赫斯科維茨開發的 BD 計量為基礎。 Dirichlet 分佈是一種多項分佈,描述網路中每個變數的條件機率,而且有許多屬性可用於學習。

貝氏 Dirichlet 對等的 Uniform Prior (BDEU) 方法假設 Dirichlet 分佈的特殊案例,其中數學常數用來建立先前狀態的固定或統一分佈。 BDE 分數也會假設可能性等價,這表示無法預期數據會區分對等結構。 換句話說,如果 A Then B 的分數與 If B Then A 的分數相同,則無法根據數據來區分結構,而且無法推斷因果關係。

每個演算法的功能選取方法

下表列出支援特徵選取的演算法、演算法所使用的特徵選取方法,以及您設定用來控制特徵選取行為的參數:

演算法 分析方法 評論
貝氏機率 香農的 Entropy

貝氏與 K2 舊版

貝氏迪里希萊特與統一之前 (預設值)
Microsoft貝氏機率分類演算法只接受離散或離散化屬性;因此,它無法使用有趣的分數。

如需此演算法的詳細資訊,請參閱 Microsoft 貝氏機率分類演算法技術參考
判定樹 有趣的分數

香農的 Entropy

貝氏與 K2 舊版

貝氏迪里希萊特與統一之前 (預設值)
如果有任何數據行包含非二進位連續值,則會針對所有數據行使用有趣的分數,以確保一致性。 否則,會使用預設特徵選取方法,或您在建立模型時指定的方法。

如需此演算法的詳細資訊,請參閱 Microsoft 判定樹演演算法技術參考
類神經網路 有趣的分數

香農的 Entropy

貝氏與 K2 舊版

貝氏迪里希萊特與統一之前 (預設值)
只要數據包含連續數據行,Microsoft類神經網路演算法就可以同時使用貝氏和 entropy 型方法。

如需此演算法的詳細資訊,請參閱 Microsoft 類神經網路演算法技術參考
羅吉斯回歸 有趣的分數

香農的 Entropy

貝氏與 K2 舊版

貝氏迪里希萊特與統一之前 (預設值)
雖然Microsoft羅吉斯回歸演算法是以Microsoft類神經網路演算法為基礎,但您無法自定義羅吉斯回歸模型來控制特徵選取行為:因此,特徵選取一律預設為最適合屬性的方法。

如果所有屬性都是離散或離散化,則預設值為 BDEU。

如需此演算法的詳細資訊,請參閱 Microsoft 羅吉斯回歸演算法技術參考
聚類 有趣的分數 Microsoft叢集演算法可以使用離散或離散化的數據。 不過,由於每個屬性的分數會計算為距離,並且以連續數位表示,因此必須使用有趣的分數。

如需此演算法的詳細資訊,請參閱 Microsoft 叢集演演算法技術參考
線性回歸 有趣的分數 Microsoft線性回歸演算法只能使用有趣的分數,因為它只支援連續數據行。

如需此演算法的詳細資訊,請參閱 Microsoft 線性回歸演算法技術參考
關聯規則

時序叢集
未使用 不會使用這些演算法叫用特徵選取。

不過,您可以視需要設定參數的值,以控制演算法的行為,並視需要減少輸入數據的大小,MINIMUM_SUPPORT和MINIMUM_PROBABILIITY。

如需詳細資訊,請參閱 Microsoft 關聯演算法技術參考Microsoft 時序群集演算法技術參考
時間序列 未使用 特徵選取不適用於時間序列模型。

如需此演算法的詳細資訊,請參閱 Microsoft 時間序列演演算法技術參考

特徵選取參數

在支援特徵選取的演算法中,您可以使用下列參數來控制何時開啟特徵選取。 每個演算法都有允許輸入數目的預設值,但您可以覆寫此預設值並指定屬性數目。 本節列出提供用來管理功能選取的參數。

MAXIMUM_INPUT_ATTRIBUTES

如果模型包含的數據行數目超過 MAXIMUM_INPUT_ATTRIBUTES 參數中指定的數位,則演算法會忽略其計算為不感興趣的任何數據行。

MAXIMUM_OUTPUT_ATTRIBUTES

同樣地,如果模型包含比在 MAXIMUM_OUTPUT_ATTRIBUTES 參數中指定的數位更可預測的數據行,演算法會忽略它計算為不感興趣的任何數據行。

MAXIMUM_STATES

如果模型包含的案例多於 MAXIMUM_STATES 參數中指定的案例,則最不受歡迎的狀態會分組在一起,並視為遺漏。 如果其中任一個參數設定為 0,則會關閉特徵選取,因而影響處理時間和效能。

除了這些特徵選取方法之外,您還可以藉由在模型上設定 模型旗標,或設定結構 上的 散發旗標,來改善演算法識別或升階有意義的屬性的能力。 如需這些概念的詳細資訊,請參閱 模型旗標(數據採礦)數據行散發(數據採礦)

另請參閱

自定義採礦模型和結構