資料採礦的特徵選取
「特徵選取」(Feature Selection) 是任何資料採礦產品的必備功能。這是因為當您建立資料採礦模型時,資料集包含的資訊經常比建立模型所需的更多。例如,資料集可能包含 500 個資料行來描述客戶的特性,但其中可能只有 50 個資料行會用來建立特定的模型。如果您在建立此模型時保留不需要的資料行,定型程序期間就會需要更多 CPU 和記憶體,而且完成的模型需要更多儲存空間。
即使資源不是問題,您通常也會想要移除不需要的資料行,因為它們可能會降低已探索模式的品質,原因如下:
某些資料行是累贅或多餘的。這種情況會使有意義的資料模式更難發現。
若要發現高品質的模式,大部分的資料採礦演算法需要高維度資料集提供大得多的訓練資料集。但在某些資料採礦應用程式中,定型資料的量非常少。
特徵選取有助於解決低價值資料過多或高價值資料過少的問題。
Analysis Services 資料採礦中的特徵選取
一般而言,特徵選取的運作方式是計算每個屬性的分數,然後僅選取擁有最佳分數的屬性。您可以調整高分的臨界值。特徵選取一定會在定型模型之前執行,可自動從資料集裡選擇最有可能在模型中使用的屬性。
SQL Server 2008 Analysis Services (SSAS) 針對特徵選取提供了多個方法。選取最高值之屬性的精確方法取決於模型中所使用的演算法,以及您可能在模型上設定的任何參數。特徵選取會套用到輸入、可預測的屬性或是資料行中的狀態。只有演算法選取的屬性和狀態會包含在模型建立程序中,而且可以用來預測。特徵選取所忽略的可預測資料行會用於預測,但預測只會以模型中存在的全域統計資料為基礎。
注意—特徵選取只會影響用於模型的資料行,對採礦結構的儲存不會有任何影響。排除在採礦模型外的資料行仍可用於結構,而採礦結構資料行中的資料則會存入快取。
特徵選取方法的定義
依據您所使用的資料類型以及選擇用來分析的演算法而定,實作特徵選取的方法有許多種。SQL Server Analysis Services 提供數種常見且妥善建立的方法來為屬性評分。在任何演算法或資料集中所套用的方法取決於資料類型及資料行的使用方式。
「有趣性」(Interestingness) 分數是用來在包含非二進位連續數值資料的資料行中排名及排序屬性。
若為包含分隔和離散化資料的資料行,您可以從 Shannon's entropy 和兩個 Bayesian 分數中選擇。不過,如果模型包含任何連續資料行,則會使用有趣性分數來評估所有輸入資料行,以確保一致性。
本章節說明每個特徵選取的方法。
有趣性分數
如果特徵能告訴您一些有用的資訊,就具備「有趣性」。因為有用的定義會依狀況而異,所以資料採礦業界已開發出數種方法來測量「有趣性」。例如,對極端值偵測來說,「新奇」可能很有趣,但是區分緊密關聯之項目的能力 (或稱為「辨識權重」),對分類而言可能更有趣。
用於 SQL Server Analysis Services 的「有趣性」量值是以 entropy 為基礎,這表示具有隨機散發的屬性具有較高的 Entropy 和較低的資訊優勢,因此這類屬性較不有趣。任何特定屬性的 Entropy 都會與所有其他屬性的 Entropy 進行比較,如下所示:
Interestingness(Attribute) = - (m - Entropy(Attribute)) * (m - Entropy(Attribute))
中間 Entropy (或稱 m) 代表整個功能集的 Entropy。藉由從中間 Entropy 減去目標屬性的 Entropy,您可以評估屬性所提供的資訊量。
每當資料行包含非二進位的連續數值資料時,依預設就會使用此分數。
Shannon's Entropy
Shannon's Entropy 可針對特定結果而測量隨機變數的不確定性。例如,擲銅板的 Entropy 可以表示為銅板呈現大頭的機率函數。
Analysis Services 使用下列公式來計算 Shannon's Entropy:
H(X) = -∑ P(xi) log(P(xi))
這個計分方法可用於分隔和離散化的屬性。
Bayesian with K2 Prior
Analysis Services 提供兩種以 Bayesian 網路為基礎的特徵選取分數。Bayesian 網路是狀態及狀態間轉換的「導向」或「非循環」圖表,代表某些狀態一定會在目前的狀態之前、某些狀態會在之後,而圖表並不會重複或迴圈。依照定義,Bayesian 網路可以使用先前的知識。不過,在計算稍後狀態的機率時要使用什麼先前狀態的問題,對於演算法的設計、效能和精確度都很重要。
Bayesian 網路學習的 K2 演算法是由 Cooper 和 Herskovits 所開發,常用於資料採礦中。這個演算法可以擴充,而且可以分析多個變數,但需要對當做輸入的變數進行排序。如需詳細資訊,請參閱 Chickering、Geiger 和 Heckerman 所著的<學習 Bayesian 網路>(英文)。
這個計分方法可用於分隔和離散化的屬性。
Bayesian Dirichlet Equivalent with Uniform Prior
Bayesian Dirichlet Equivalent (BDE) 分數也會使用 Bayesian 分析來評估具有資料集的網路。BDE 計分方法是由 Heckerman 開發,以 Cooper 和 Herskovits 所開發的 BD 標準為基礎。Dirichlet 散發是多維度散發,描述網路中每個變數的條件式機率,而且具有許多對學習有用的屬性。
Bayesian Dirichlet Equivalent with Uniform Prior (BDEU) 方法假設 Dirichlet 散發的特殊案例,其中會使用數學常數來建立先前狀態的固定或統一散發。BDE 分數也假設可能性相等,這代表不能預期資料會區別相等的結構。換句話說,如果 If A Then B 的分數與 If B Then A 的分數相同,則不能根據資料區分結構,也不能推斷因果關係。
如需有關 Bayesian 網路以及實作這些計分方法的詳細資訊,請參閱<學習 Bayesian 網路>(英文)。
Analysis Services 演算法所使用的特徵選取方法
下表列出支援特徵選取的演算法、演算法所使用的特徵選取方法,以及設定來控制特徵選取行為的參數:
演算法 |
分析的方法 |
註解 |
---|---|---|
貝氏機率分類 |
Shannon's Entropy Bayesian with K2 Prior Bayesian Dirichlet with Uniform Prior (預設值) |
Microsoft 貝氏機率分類演算法只接受分隔或離散化的屬性,因此無法使用有趣性分數。 如需有關這個演算法的詳細資訊,請參閱<Microsoft 貝氏機率分類演算法技術參考>。 |
決策樹 |
有趣性分數 Shannon's Entropy Bayesian with K2 Prior Bayesian Dirichlet with Uniform Prior (預設值) |
如果任何資料行包含非二進位連續數值,則所有資料行都會使用有趣性分數以確保一致性。否則,便會使用預設特徵選取方法,或是當您建立模型時所指定的方法。 如需有關這個演算法的詳細資訊,請參閱<Microsoft 決策樹演算法技術參考>。 |
類神經網路 |
有趣性分數 Shannon's Entropy Bayesian with K2 Prior Bayesian Dirichlet with Uniform Prior (預設值) |
Microsoft 類神經網路演算法可以使用這兩種方法,只要資料包含連續資料行即可。 如需有關這個演算法的詳細資訊,請參閱<Microsoft 類神經網路演算法技術參考>。 |
羅吉斯迴歸 |
有趣性分數 Shannon's Entropy Bayesian with K2 Prior Bayesian Dirichlet with Uniform Prior (預設值) |
雖然 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,特徵選取就會關閉,且會影響處理時間和效能。
變更記錄
更新的內容 |
---|
已重新組織內容,先呈現特徵選取的基本原理,然後提供實作的詳細資料。已更新每一個模型類型的預設值。 |
已新增每一個演算法之技術參考主題的連結。 |