唐運軍 孫舒暢
摘 要:隨著互聯(lián)網的快速發(fā)展,機器學習技術得到了廣泛的應用。面對海量的數據,特征工程就顯得至關重要,可以說特征工程決定了機器學習模型的上線。文章介紹了對數值、文本、類別時間等不同類型數據的處理方法,總結了在面對高維數據時的特征選擇方法并進行了比較,對機器學習的研究和工程應用具有指導意義。
關鍵詞:機器學習;特征工程;特征選擇
Abstract: With the rapid development of the Internet, machine learning technology has been widely used. In the face of massive data, feature engineering is very important. It can be said that feature engineering determines the on-line application of machine learning model. This paper introduces the processing methods for different types of data, such as numerical value, text, time of category, etc., and summarizes and compares the feature selection methods in the face of high-dimensional data, which has guiding significance for the research and engineering application of machine learning.
Keywords: Machine learning; Feature engineering; Feature selection
前言
在機器學習中使用數學模型來擬合數據并預測結果,而特征就是模型的輸入。特征就是原始數據某個方面的數值表示。特征工程是指從原始數據中提取特征并將其轉換為適合機器學習模型的格式。它是機器學習流程中一個極其關鍵的環(huán)節(jié),因為正確的特征可以減輕構建模型的難度,從而使機器學習流程輸出更高質量的結果。機器學習從業(yè)者有一個共識,那就是建立機器學習流程的絕大部分時間都耗費在特征工程和數據清洗上。
然而,盡管特征工程非常重要,專門討論這個話題的著作卻很少。張浩采用基于AdaBoost 算法的特征線性組合算法和基于提升樹的非特征線性組合算法來實現結構化數據特征的自動生成,并采用基于高斯過程的貝葉斯優(yōu)化方法來自動調整數據挖掘算法模型的參數[1]。白肇強以電商平臺的用戶行為數據作為切入點,介紹了特征工程的相關知識與概念,并在進行特征工程與實驗驗證的過程中提出了多項新的工程實現方案[2]。余大龍在ReliefF特征選擇算法的基礎上,融合了兩種不同的數據降維算法和子模優(yōu)化的性質,研究了基于特征選擇的數據降維算法在文本和圖像特征選取中的應用[3]。張嬌鵬以粗糙集理論為背景,提出了一種面向動態(tài)數據集的高效特征選擇算法和一種面向少量標記數據集的半監(jiān)督特征選擇算法[4]。張笑鵬針對高維數據下的有監(jiān)督特征選擇方法和無監(jiān)督特征選擇方法分別提出了改進的方法[5]。劉華文還提出了一種基于動態(tài)互信息的特征選擇方法[6]。國外有人把特征選擇問題與模擬退火算法、禁忌搜索算法、遺傳算法等, 或者僅僅是一個隨機重采樣過程結合起來, 以概率推理和采樣過程作為算法的基礎,在算法運行中對每個特征賦予一定的權重; 然后根據用戶所定義的或自適應的閾值來對特征重要性進行評價[7-8]。
究其原因,可能是正確的特征要視模型和數據的具體情況而定,而模型和數據千差萬別,很難從各種項目中歸納出特征工程的實踐原則。然而,特征工程并不只是針對具體項目的行為,它有一些基本原則,而且最好結合具體情境進行解釋說明。
1 數據清洗
原始數據會因數據傳輸過程中的信號問題等原因存在錯誤數據、冗余數據和缺失數據,需要進行數據清洗,得到正確數據。錯誤數據是由測量時的錯誤造成的,如日期格式是“2018-09-19”和“20180920”兩種混用,需要統(tǒng)一格式。冗余數據則是對同一信息的多次表述,比如,一周中的一天可以用分類變量來表示,它的值為“星期一”“星期二”……“星期日”,還可以表示為 0 和 6 之間的整數值,需要刪去多余數據。如果某些數據點中不存在這種星期幾的信息,那就出現了缺失數據,需要去掉所在行/列,取均值、中位數、眾數和使用算法預測。
2 特征處理
2.1 數值特征
數值類型的數據具有實際測量意義,分為連續(xù)型(身高體重等)和離散型(計數等)。對于離散型的數據,我們可以二值化處理。例如如果消費者試駕過我們的車輛,那就認為對該車有興趣。我們也經常使用分箱的方法處理年齡數據,人工設計年齡范圍,例如:0-30歲為青年人,30-60歲為中年人,60歲以上為老年人,這樣就可以把數據分為3類,如圖1所示。
對于連續(xù)型的數據,可以采用對數變換、標準化、最大最小值、最大絕對值、基于L1或L2范數等縮放方法。經過對數變換之后,這樣小數值擴大,大數值壓縮,低計數值的集中趨勢被減弱了,在x軸上的分布更均勻了。在梯度和矩陣為核心的算法中,譬如邏輯回歸,支持向量機,神經網絡,縮放可以加快求解速度;而在距離類模型,譬如K近鄰,K-Means聚類中,縮放可以幫我們提升模型精度,避免某一個取值范圍特別大的特征對距離計算造成影響。
2.2 類別特征
類別數據表示的量可以是人的性別、婚姻狀況、家鄉(xiāng)、學歷等,其取值可是數值(如1代表男,0代表女),但是作為數值沒有任何數值意義。對于類別特征,最常見的是轉化為獨熱編碼(One-Hot Encoding),這是一種數據預處理技巧,它可以把類別數據變成長度相同的特征例如,人的學歷分成小學、中學、大學,那么我們可以創(chuàng)建一個維度為3的特征,小學用(0,0,1)表示,中學用(1,0,0)表示,大學用(0,1,0)表示,如圖2所示。
2.3 時間特征
時間型特征有的可以看做連續(xù)值(用車時間、停車間隔)處理,有的可以看做離散值(星期幾、幾月份)處理。另外還可以做時間序列分析:滯后特征(又稱lag特征,當前時間點之前的信息)、滑動窗口統(tǒng)計特征(如回歸問題中計算前n個值的均值,分類問題中前n個值中每個類別的分布)。
2.4 空間特征
對于坐標經緯度,可以散列成類別特征,行政區(qū)ID、街道ID、城市ID 可以直接當作類別特征處理。對于兩地之間的距離計算可以采用歐式距離、球面距離、曼哈頓距離、真實距離。
2.5 文本特征
文本特征主要來自各大網站、社區(qū)論壇。首先進行文本清洗:去除HTML標記、轉小寫、去除噪聲、統(tǒng)一編碼等。最基礎的文本表示模型是詞袋模型。具體地說,就是將整段文本以詞為單位切分開,然后每篇文章可以表示成一個長向量,向量的每一個維度代表一個單詞。通常采用 TF-IDF 計算權重,如果某個詞或短語在一篇文檔中出現的頻率很高,并且在其他文檔中很少出現,則認為此詞語權重很高。詞袋模型是以單詞為單位進行劃分,但有時候進行單詞級別劃分并不是很好的做法,畢竟有的單詞組合起來才是其要表達的含義,因此可以將連續(xù)出現的n個詞(n <= N)組成的詞組(N-gram)作為一個單獨的特征放到向量表示中,構成了 N-gram 模型。目前主流的是詞嵌入模型,詞嵌入是一類將詞向量化的模型的統(tǒng)稱,核心思想是將每個詞都映射成低維空間(通常 K=50-300維)上的一個稠密向量(Dense Vector)。常用的詞嵌入模型是 Word2Vec,它是一種底層的神經網絡模型,有兩種網絡結構,分別是 CBOW(Continues Bag of Words)和Skip-gram。
3 特征選擇
對原始數據進行處理以后,有時數據的維度會非常大,但不是每個維度對當前的問題會有幫助,這時需要進行數據降維。特征提取與特征選擇都能幫助減少特征的維度、數據冗余。從文字,圖像,聲音等其他非結構化數據中提取新信息作為特征。從所有的特征中,選擇出有意義,對模型有幫助的特征,以避免必須將所有特征都導入模型去訓練的情況。
雖然都是為了從原始特征中找出最有效的特征,但是它們之間的區(qū)別是特征提取強調通過特征轉換的方式得到一組具有明顯物理或統(tǒng)計意義的特征,這樣就改變了原來的特征空間。而特征選擇的方法是從原始特征數據集中選擇出子集,是一種包含的關系,沒有更改原始的特征空間。所以特征選擇的過程經常能表示出每個特征的重要性對于模型構建的重要性,更具有解釋性,應用優(yōu)先級要高于特征提取。常見的特征選擇方法分為以下三種,主要區(qū)別在于特征選擇部分是否使用后續(xù)的學習器[9]。
3.1 過濾法
使用過濾方法進行特征選擇不需要依賴任何機器學習算法,如圖3所示。它是根據各種統(tǒng)計檢驗中的分數以及相關性的各項指標來選擇特征,包括方差過濾,基于卡方,F檢驗和互信息的相關性過濾[10]。
3.2 嵌入法
嵌入法是一種讓算法自己決定使用哪些特征的方法,即特征選擇和算法訓練同時進行,如圖4所示。在使用嵌入法時,先使用某些機器學習的算法和模型進行訓練,得到各個特征的權值系數,根據權值系數從大到小選擇特征。這些權值系數往往代表了特征對于模型的某種貢獻或某種重要性,然后就可以基于這種貢獻的評估,找出對模型建立最有用的特征。
3.3 封裝法
相比于過濾式特征選擇不考慮后續(xù)學習器,封裝法直接把最終將要使用的學習器的性能作為特征子集的評價原則,如圖5所示。其目的就是為給定學習器選擇最有利于其性能、量身定做的特征子集。優(yōu)點是直接針對特定學習器進行優(yōu)化,考慮到特征之間的關聯(lián)性,因此通常包裹式特征選擇比過濾式特征選擇能訓練得到一個更好性能的學習器。缺點是由于特征選擇過程需要多次訓練學習器,故計算開銷要比過濾式特征選擇要大得多。
4 結論
本文先是介紹了簡單特征工程的作用,然后說明目前特征工程方面的研究現狀:研究較少且只研究某一具體領域,沒有形成通用處理方法。在數據清洗之后,從數值特征、類別特征、時間特征、空間特征和文本特5個方面介紹一些通用方法。最后對于數據維數和樣本數過于龐大帶來的“維數災難”,可以從特征選擇的過濾法、嵌入法和封裝法3種方法來解決。
特征工程包含許多復雜的知識,為了控制本文的篇幅,做了一些取舍。本文沒有討論音頻數據的傅里葉分析、隨機特征、隱含狄利克雷分和矩陣分解等知識。下一步將結合機器學習的應用場景,對以上知識進行重點研究。
參考文獻
[1] 張浩.自動化特征工程與參數調整算法研究[D].電子科技大學, 2018.
[2] 白肇強.基于用戶行為的特征工程構建與應用研究[D].華南理工大學,2018.
[3] 余大龍.基于特征選擇的數據降維算法研究[D].安徽大學, 2017.
[4] 張嬌鵬.基于粗糙集的特征選擇高效算法研究[D].山西大學, 2017.
[5] 張笑朋.面向高維大數據的特征選擇方法研究[D].太原理工大學, 2018.
[6] 劉華文.基于信息熵的特征選擇算法研究[D].長春:吉林大學, 2010.
[7] Tsymbal A, Seppo P, David W P. Ensemble features election with the simple Bayesian classification[J].Information Fusion,2003,4(2):87- 100.
[8] Wu B L,Tom A, David F, et al. Comparison of statistical methods for classification of ovarian cancer using mass spectrometry data[J]. Bioinformatics, 2003, 19(13): 1636-1643.
[9] Wang H, Han Z Z, Xie Q Y, et al. Finite-time chaos control via nonsingular terminal sliding mode control[J].Communications Nonlinear Science and Number Simulation,2009,14(6):2728-2733.
[10] Koller D, Sahami M. Toward optimal feature selection[C]. Proc of Int Conf on Machine Learning. Bari, 1996:284-292.