工欲善其事,必先利其器

機器學習煉丹爐要想練出好模型,除了要有好的學習方法外,好的調料(特徵)也是必不可少的。

「維度災難」大家都不陌生,它的外文名叫「The Curse of Dimensionality」。我覺得翻譯成為維度詛咒,更為貼切。隨著訓練樣本特徵數的由少到多,機器學習模型的準確率會先顯著提升,但是當特徵數繼續增加,模型訓練時間大幅上升,準確率不但不會上升,反而會下降,並且無可避免地陷入「過擬合」的泥潭,更為嚴重的是當某些無關特徵加入學習器時,會對模型的準確度造成極大影響。

(a)圖中的所體現的特徵就是一個較好的相關特徵, f_1<1和f_1>2 兩個條件清楚的將樣本分為了兩類。

(b)圖中的 f_2 雖然可以將樣本清楚的分為兩類,但是其和 f_1 的取址區域完全重疊,加入並學習器中不會提升模型準確率反而會增大訓練難度,成為冗餘特徵。

(c)圖中 f_3 完全無法區分樣本,成為無光特徵,這種特徵若是加入煉丹爐中,並且賦予其和其他特徵相等的地位,會極大毒害生成的模型。

特徵工程中的一大板塊,特徵選擇應運而生。

特徵選擇目前的方法主要有三種,Filter(篩)式,Wrapper(包裹)式,Embedded(嵌入)式。三種方法各有利弊,在此簡單介紹一下。

Filter式的特點是獨立。就像一個篩子,在樣本進入學習器之前,就對特徵進行篩選,將價值低的特徵從樣本中剔除,達到降維的目的。其優點是迅速,但是可能對不同機器學習方法效用不同,獨立篩選出來的特徵集對於特定學習方法可能不是最優的。因為對大規模數據處理速度較快,是目前應用最多的方法。

Filter

Wrapper式的特點就像名字,包裹式。其核心是在多次迭代學習中對特徵進行篩選,多次用不同特徵集對模型進行訓練,多次訓練後根據準確率篩選出最優秀的特徵集合。優點是簡單粗暴,理想情況下是最好的方法,但是隨著數據特徵的增大,其時間消耗往往成指數級增長。一個有 p 個特徵的集合,有 2^p 個子集,當有幾百個,甚至上萬個的特徵時顯得力不從心。

Wrapper

Embedded式將特徵選擇的演算法嵌入到了機器學習的演算法中,對演算法進行修改,它是對Filter和Wrapper方法的一種折中,既考慮到了機器學習方法,又比Wrapper式速度快很多。比較典型的例子就是正則化對特徵加入懲罰係數了。

Embedded

後面的文章將介紹Filter方法中比較有代表性的幾種方法。

推薦閱讀:

相關文章