1. 程式人生 > >【特徵工程】3 特徵工程技術與方法

【特徵工程】3 特徵工程技術與方法

引言

在之前學習機器學習技術中,很少關注特徵工程(Feature Engineering),然而,單純學習機器學習的演算法流程,可能仍然不會使用這些演算法,尤其是應用到實際問題的時候,常常不知道怎麼提取特徵來建模。 
特徵是機器學習系統的原材料,對最終模型的影響是毋庸置疑的。

特徵工程的重要意義

資料特徵會直接影響你使用的預測模型和實現的預測結果。準備和選擇的特徵越好,則實現的結果越好。 
影響預測結果好壞的因素:模型的選擇、可用的資料、特徵的提取。 
優質的特徵往往描述了資料的固有結構

大多數模型都可以通過資料中良好的結構很好的學習,即使不是最優的模型,優質的特徵也可以得到不錯的效果。優質特徵的靈活性可以讓你使用簡單的模型運算的更快,更容易理解,更容易維護。 
優質的特徵可以在使用不是最優的模型引數的情況下得到不錯的預測結果,這樣你就不必費力去選擇最適合的模型和最優的引數了。

特徵工程定義

特徵工程是將原始資料轉化為特徵,更好表示預測模型處理的實際問題,提升對於未知資料的準確性。它是用目標問題所在的特定領域知識或者自動化的方法來生成、提取、刪減或者組合變化得到特徵。 
下面的圖給出了特徵工程的概貌: 

特徵工程的子問題

1. 機器學習中的特徵(Feature)

在機器學習和模式識別中,特徵是在觀測現象中的一種獨立、可測量的屬性。選擇資訊量大的、有差別性的、獨立的特徵是模式識別、分類和迴歸問題的關鍵一步。 
最初的原始特徵資料集可能太大,或者資訊冗餘,因此在機器學習的應用中,一個初始步驟就是選擇特徵的子集,或構建一套新的特徵集,減少功能來促進演算法的學習,提高泛化能力和可解釋性。

在表格資料中,觀測資料或例項(對應表格的一行)由不同的變數或者屬性(表格的一列)構成,這裡屬性其實就是特徵。但是與屬性一詞不同的是,特徵是對於分析和解決問題有用、有意義的屬性。 
在機器視覺中,一幅影象是一個觀測,但是特徵可能是圖中的一條線;在自然語言處理中,一個文字是一個觀測,但是其中的段落或者詞頻可能才是一種特徵;在語音識別中,一段語音是一個觀測,但是一個詞或者音素才是一種特徵。

2. 特徵的重要性(Feature Importance)

你可以客觀的評價特徵的實用性。判別特徵的重要性是對特徵進行選擇的預先指標,特徵根據重要性被分配分數,然後根據分數不同進行排序,其中高分的特徵被選擇出來放入訓練資料集。 
如果與因變數(預測的事物)高度相關,則這個特徵可能很重要,其中相關係數和獨立變數方法是常用的方法。

在構建模型的過程中,一些複雜的預測模型會在演算法內部進行特徵重要性的評價和選擇,如多元自適應迴歸樣條法(Multivariate Adaptive Regression Splines, MARS)、隨機森林(Random Forest)、梯度提升機(Gradient Boosted Machines)。這些模型在模型準備階段會進行變數重要性的確定。

3. 特徵提取(Feature Extraction)

一些觀測資料如果直接建模,其原始狀態的資料太多。像影象、音訊和文字資料,如果將其看做是表格資料,那麼其中包含了數以千計的屬性。 
特徵提取是自動地對原始觀測降維,使其特徵集合小到可以進行建模的過程。 
對於表格式資料,可以使用主元素分析(Principal Component Analysis)、聚類等對映方法;對於影象資料,可以進行線(line)或邊緣(edge)的提取;根據相應的領域,影象、視訊和音訊資料可以有很多數字訊號處理的方法對其進行處理。

4. 特徵選擇(Feature Selection)

不同的特徵對模型的準確度的影響不同,有些特徵與要解決的問題不相關,有些特徵是冗餘資訊,這些特徵都應該被移除掉。 
特徵選擇是自動地選擇出對於問題最重要的那些特徵子集的過程。 
特徵選擇演算法可以使用評分的方法來進行排序;還有些方法通過反覆試驗來搜尋出特徵子集,自動地建立並評估模型以得到客觀的、預測效果最好的特徵子集;還有一些方法,將特徵選擇作為模型的附加功能,像逐步迴歸法(Stepwise regression) 
就是一個在模型構建過程中自動進行特徵選擇的演算法。

5. 特徵構建(Feature Construction)

特徵重要性和選擇是告訴使用者特徵的客觀特性,但這些工作之後,需要你人工進行特徵的構建。 
特徵構建需要花費大量的時間對實際樣本資料進行處理,思考資料的結構,和如何將特徵資料輸入給預測演算法。 
對於表格資料,特徵構建意味著將特徵進行混合或組合以得到新的特徵,或通過對特徵進行分解或切分來構造新的特徵;對於文字資料,特徵夠自己按意味著設計出針對特定問題的文字指標;對於影象資料,這意味著自動過濾,得到相關的結構。

6. 特徵學習(Feature Learning)

特徵學習是在原始資料中自動識別和使用特徵。 
現代深度學習方法在特徵學習領域有很多成功案例,比如自編碼器和受限玻爾茲曼機。它們以無監督或半監督的方式實現自動的學習抽象的特徵表示(壓縮形式),其結果用於支撐像語音識別、影象分類、物體識別和其他領域的先進成果。 
抽象的特徵表達可以自動得到,但是你無法理解和利用這些學習得到的結果,只有黑盒的方式才可以使用這些特徵。你不可能輕易懂得如何創造和那些效果很好的特徵相似或相異的特徵。這個技能是很難的,但同時它也是很有魅力的,很重要的。

特徵工程的流程

機器學習中資料的轉換過程:

  1. 選擇資料:收集整合資料,將資料規劃化為一個數據集
  2. 預處理資料:對資料進行清洗、格式化、取樣
  3. 轉換資料:特徵工程所在
  4. 對資料建模:構建模型、評估模型、調整模型

特徵工程的迭代過程:

  1. 對特徵進行頭腦風暴:深入分析問題,觀察資料特點,參考其他問題的有關特徵工程的方法並應用到自己問題中
  2. 特徵的設計:你可以自動提取特徵,手動構造特徵,或將兩者相結合
  3. 特徵選擇:使用不同的特徵重要性評分方法或特徵選擇方法
  4. 評估模型:利用所選擇的特徵對測試資料進行預測,評估模型準確性

參考資料