提供好的特征是機器學習任務中最重要的工作,那么何為優秀的機器學習特征?以及如何高效地組合這些特征?
以二分類問題為例,好的特征具有很好的區分性。例如學習任務是區分兩種不同類型的狗:灰獵犬(Greyhound)和拉布拉多犬(Labrador)。假設有身高和眼睛的顏色兩種特征。一般而言,灰獵犬的平均身高要比拉布拉多犬要高一些,而狗的眼睛的顏色不取決于夠的品種,因此可以認為“身高”這個特征就比“眼睛顏色”這個特征更有用,因為“眼睛顏色”這個特征沒有告訴我們任何信息。
雖然灰獵犬的平均身高要比拉布拉多犬要高一些,但并不是說所有灰獵犬的身高都要比拉布拉多犬要高,那么為什么“身高”是一個有用的特征呢?假設在一個數據集D上兩種類型的狗的身高分布如下圖所示,其中紅色表示灰獵犬,藍色表示比拉布拉多犬。在這個數據集D上灰獵犬和拉布拉多犬各有500值,平均身高分別為28英寸和24英寸。
現在我們需要斷定在特定的身高每種狗的概率分布。現假設有一批身高為20英寸的狗,我們該如何預測這批狗的品種,使得我們的預測錯誤率最低呢?根據上面的圖,我們判斷這批狗中的大部分可能是拉布拉多犬。同樣,看圖的靠右側的柱狀圖,比如35英寸的身高的狗我們有信心認為其是灰獵犬。25英寸高的狗呢?這個時候我們就很難判斷其是什么品種了。綜上,身高是一個有用的特征,但它并不完美。一般而言,機器學習任務都很難只需要單一的特征。這就是為什么在機器學習任務里我們需要多種特征,否則就不需要機器學習算法,而只需要寫if else語句就夠了。Features capture different types of information。
假設一個特征的取值在二分類任務的正例和反例中各占大概一半的比例,那么這樣的特征是沒有用的,比如上面例子中的狗的眼睛顏色。無用的特征會降低分類器的準確率,特別是在樣本數量較少的情況下。
由于不同類型的特征還應該包含不同類型的信息,這樣才能夠起到互相補充的作用。也就是說應該避免冗余的特征。比如“單位為英寸的身高”和“單位和厘米的身高”兩個特征之間并不是相互獨立的,只是同一個屬性的2種不同維度的測試數據而已,因此這2個特征只要保留其中一個就可以了。應該刪除與已有特征高度密切相關的特征。
最后,好的特征還應該是易于理解的。比如要預測從一個城市寄一封信去另一個城市需要多長時間可以到達,一個易于理解的特征的例子是這2座城市之間的距離;一個不易于理解的特征組合是這2個城市各種的經緯度信息。因為簡單的關系更加易于學習,復雜的關系則需要更多的訓練數據,因此更難被學習出來。
總結
- 避免無用的特征(avoid useless features)
- 避免冗余的特征(avoid redundant features)
- 使用易于理解的簡單特征(good features should easy to understand)
好的特征具有如下的特點:
- 有區分性(Informative)
- 特征之間相互獨立(Independent)
- 簡單易于理解(Simple)