1. 程式人生 > >機器學習中的特徵工程

機器學習中的特徵工程

特徵工程的目的是把原始的資料轉化為我們的模型可以使用的資料,其主要包括三個子問題,特徵構造、特徵提取和特徵選擇。特徵構造一般是在原有特徵的基礎上做一些“組合”操作,例如對原有特徵進行四則運算,從而得到新的特徵。特徵提取是指使用對映或變換的方法將維數較高的原始特徵轉換為維數較低的新的特徵。特徵選擇即從原始的特徵中挑選出一些最具有代表性,使得模型效果最好的特徵。其中特徵提取和特徵選擇最常使用。

(1)特徵提取

特徵提取又叫作“降維”,目前對於線性特徵的提取,常用方法有主成分分析(PrincipleComponent Analysis,PCA)、線性判別分析(LinearDiscriminant Analysis,LDA)以及獨立成分分析(Independent Component Analysis,ICA)。

①   主成分分析(Principle Component Analysis,PCA)

主成分分析(PCA)是一種經典的無監督降維方法,它的主要思想是在降維的過程中實現“減少噪聲”和“去冗餘”從而達到降維的目的。具體來說,“減少噪聲”是指在將維數較高的原始特徵轉換為維數較低的新特徵的過程中保留下維度間相關性儘可能小的特徵維度,這一操作實際上是通過藉助協方差矩陣的原理所實現的;“去冗餘”是指把“減少噪聲”操作之後保留下來的維度再進一步篩選,去掉含有較小“特徵值”的維度,使得留下來的特徵維度含有的“特徵值”儘可能的大,特徵值越大方差就會越大,進而所包含的資訊量就會越大。

主成分分析(PCA)法一大特點就是它是完全無引數限制的,也就是說PCA的結果只與資料有關,而使用者是無法進行干預的。這是它的優點,同時也是缺點。針對這一特點,PCA核方法kernel-PCA後來被提出,使得使用者可以根據先驗知識預先對資料進行非線性轉換,它也是當下比較流行的方法之一。

②   線性判別分析(Linear Discriminant Analysis,LDA)

線性判別分析(LDA)是一種經典的有監督降維演算法,它的主要思想是藉助協方差矩陣、廣義瑞利熵等原理實現資料類別間距離的最大化和類別內距離的最小化。瞭解了其主要思想,那麼線性判別分析(LDA)又是怎樣實現的呢?這裡以二分類LDA為例,二維特徵通過一系列矩陣運算實現從二維平面到一條直線的投影,期間同時通過藉助協方差矩陣、廣義瑞利熵等實現類間資料的最大化與類內資料的最小化。從二分類推廣到多分類是在二分類的基礎上增加了“全域性散度矩陣”來實現最終目標優化函式的設定,從而實現類間距離的最大化和類內距離的最小化。顯然,由於它是針對各個類別做的降維,所以資料經過線性判別分析(LDA)降維後,最多隻能降到原來的類別數減一的維度。

正因為如上特性,線性判別分析(LDA)除了可以實現降維外還可以實現分類。另外,對比前文講的主成分分析(PCA)可以看出,LDA在降維過程中著重考慮分類效能,而PCA著重考慮特徵維度之間的差異性與方差的大小即資訊量的大小。

③   獨立成分分析(Independent Component Analysis,ICA)

獨立成分分析(ICA)的主要思想是在降維的過程中保留相互獨立的特徵維度。這比PCA更進一步,在保證特徵維度之間不相關的同時保證相互獨立。不相關只是保證了沒有線性關係,而並不能保證是獨立的。

正因為其是以保證特徵維度之間的相互獨立性為目標,獨立成分分析(ICA)往往會比PCA有更好的降維效果。獨立成分分析(ICA)目前已經廣泛的應用到資料探勘、影象處理等多個領域。

(2)特徵選擇

不同的特徵對模型的影響程度不同,我們要選擇出重要的一些特徵,移除與問題相關性不是很大的特徵,這個過程就叫做特徵選擇。特徵選擇的最終目的是通過減少冗餘特徵以達到減少過擬合、提高模型準確度和在一定程度上減少訓練時間的效果。對比前文介紹的特徵提取,特徵選擇是對原始特徵取特徵子集的一個操作,而特徵提取則是對原始特徵進行對映或者變換操作以得到低維的新特徵。

特徵的選擇在特徵工程中十分重要,往往可以很大程度上決定最後模型訓練結果的好壞。常用的特徵選擇方法有:過濾式(filter)、包裹式(wrapper)以及嵌入式(embedding)。

① 過濾式

過濾式特徵選擇一般是通過統計度量的方法評估每個特徵和結果的相關性,來對特徵進行篩選,留下相關性較強的特徵。其核心思想是:先對資料集進行特徵選擇,然後再進行模型的訓練。即過濾式特徵選擇是獨立於特定的學習演算法的。也正因如此,過濾式特徵選擇擁有較高的通用性,可適用於大規模資料集。同樣地,正是由於其獨立於特定的學習演算法,也造成了其在後面的模型表現即分類準確率方面可能會表現欠佳。常用的過濾式特徵選擇方法有Pearson相關係數法、方差選擇法、假設檢驗、互資訊法等。這些方法通常是單變數的。

② 包裹式

包裹式特徵選擇通常是把最終機器學習模型的表現作為特徵選擇的重要依據,一步步篩選特徵。這種一步步篩選特徵的過程可以看作是目標特徵組合的搜尋過程,這種搜尋過程可以是最佳優先搜尋、隨機爬山演算法等。目前比較常用的一種包裹式特徵選擇法為遞迴特徵消除法,其原理是使用一個基模型(如:隨機森林、邏輯迴歸等)進行多輪訓練,每輪訓練結束後,消除若干權值係數較低的特徵,再基於新的特徵集進行新的一輪訓練。

正是由於包裹式特徵選擇是根據最終的模型表現來選擇特徵的,故通常其要比前文提到的過濾式特徵選擇有著更好的模型表現。同樣的,由於訓練過程時間久,系統的開銷也更大,一般來說不太適用於大規模資料集。

③  嵌入式

嵌入式特徵選擇同樣是根據機器學習的演算法、模型來分析特徵的重要性,從而選擇比較重要的N個特徵。與包裹式特徵選擇法最大的不同是,嵌入式方法是將特徵選擇過程與模型的訓練過程結合為一體,這樣就可以快速地找到最佳的特徵集合,更加高效、快捷。簡而言之,嵌入式特徵選擇是將全部的資料一起輸入模型中進行訓練和評測,而包裹式特徵選擇一般是一步步篩選特徵,一步步減少特徵進而得到所需要的特徵維度。常用的嵌入式特徵選擇方法有基於正則化項的特徵選擇法(如:Lasso)和基於樹模型的特徵選擇法(如:GBDT)。