唐運(yùn)軍 孫舒暢
摘 要:隨著互聯(lián)網(wǎng)的快速發(fā)展,機(jī)器學(xué)習(xí)技術(shù)得到了廣泛的應(yīng)用。面對海量的數(shù)據(jù),特征工程就顯得至關(guān)重要,可以說特征工程決定了機(jī)器學(xué)習(xí)模型的上線。文章介紹了對數(shù)值、文本、類別時間等不同類型數(shù)據(jù)的處理方法,總結(jié)了在面對高維數(shù)據(jù)時的特征選擇方法并進(jìn)行了比較,對機(jī)器學(xué)習(xí)的研究和工程應(yīng)用具有指導(dǎo)意義。
關(guān)鍵詞:機(jī)器學(xué)習(xí);特征工程;特征選擇
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
前言
在機(jī)器學(xué)習(xí)中使用數(shù)學(xué)模型來擬合數(shù)據(jù)并預(yù)測結(jié)果,而特征就是模型的輸入。特征就是原始數(shù)據(jù)某個方面的數(shù)值表示。特征工程是指從原始數(shù)據(jù)中提取特征并將其轉(zhuǎn)換為適合機(jī)器學(xué)習(xí)模型的格式。它是機(jī)器學(xué)習(xí)流程中一個極其關(guān)鍵的環(huán)節(jié),因為正確的特征可以減輕構(gòu)建模型的難度,從而使機(jī)器學(xué)習(xí)流程輸出更高質(zhì)量的結(jié)果。機(jī)器學(xué)習(xí)從業(yè)者有一個共識,那就是建立機(jī)器學(xué)習(xí)流程的絕大部分時間都耗費(fèi)在特征工程和數(shù)據(jù)清洗上。
然而,盡管特征工程非常重要,專門討論這個話題的著作卻很少。張浩采用基于AdaBoost 算法的特征線性組合算法和基于提升樹的非特征線性組合算法來實現(xiàn)結(jié)構(gòu)化數(shù)據(jù)特征的自動生成,并采用基于高斯過程的貝葉斯優(yōu)化方法來自動調(diào)整數(shù)據(jù)挖掘算法模型的參數(shù)[1]。白肇強(qiáng)以電商平臺的用戶行為數(shù)據(jù)作為切入點(diǎn),介紹了特征工程的相關(guān)知識與概念,并在進(jìn)行特征工程與實驗驗證的過程中提出了多項新的工程實現(xiàn)方案[2]。余大龍在ReliefF特征選擇算法的基礎(chǔ)上,融合了兩種不同的數(shù)據(jù)降維算法和子模優(yōu)化的性質(zhì),研究了基于特征選擇的數(shù)據(jù)降維算法在文本和圖像特征選取中的應(yīng)用[3]。張嬌鵬以粗糙集理論為背景,提出了一種面向動態(tài)數(shù)據(jù)集的高效特征選擇算法和一種面向少量標(biāo)記數(shù)據(jù)集的半監(jiān)督特征選擇算法[4]。張笑鵬針對高維數(shù)據(jù)下的有監(jiān)督特征選擇方法和無監(jiān)督特征選擇方法分別提出了改進(jìn)的方法[5]。劉華文還提出了一種基于動態(tài)互信息的特征選擇方法[6]。國外有人把特征選擇問題與模擬退火算法、禁忌搜索算法、遺傳算法等, 或者僅僅是一個隨機(jī)重采樣過程結(jié)合起來, 以概率推理和采樣過程作為算法的基礎(chǔ),在算法運(yùn)行中對每個特征賦予一定的權(quán)重; 然后根據(jù)用戶所定義的或自適應(yīng)的閾值來對特征重要性進(jìn)行評價[7-8]。
究其原因,可能是正確的特征要視模型和數(shù)據(jù)的具體情況而定,而模型和數(shù)據(jù)千差萬別,很難從各種項目中歸納出特征工程的實踐原則。然而,特征工程并不只是針對具體項目的行為,它有一些基本原則,而且最好結(jié)合具體情境進(jìn)行解釋說明。
1 數(shù)據(jù)清洗
原始數(shù)據(jù)會因數(shù)據(jù)傳輸過程中的信號問題等原因存在錯誤數(shù)據(jù)、冗余數(shù)據(jù)和缺失數(shù)據(jù),需要進(jìn)行數(shù)據(jù)清洗,得到正確數(shù)據(jù)。錯誤數(shù)據(jù)是由測量時的錯誤造成的,如日期格式是“2018-09-19”和“20180920”兩種混用,需要統(tǒng)一格式。冗余數(shù)據(jù)則是對同一信息的多次表述,比如,一周中的一天可以用分類變量來表示,它的值為“星期一”“星期二”……“星期日”,還可以表示為 0 和 6 之間的整數(shù)值,需要刪去多余數(shù)據(jù)。如果某些數(shù)據(jù)點(diǎn)中不存在這種星期幾的信息,那就出現(xiàn)了缺失數(shù)據(jù),需要去掉所在行/列,取均值、中位數(shù)、眾數(shù)和使用算法預(yù)測。
2 特征處理
2.1 數(shù)值特征
數(shù)值類型的數(shù)據(jù)具有實際測量意義,分為連續(xù)型(身高體重等)和離散型(計數(shù)等)。對于離散型的數(shù)據(jù),我們可以二值化處理。例如如果消費(fèi)者試駕過我們的車輛,那就認(rèn)為對該車有興趣。我們也經(jīng)常使用分箱的方法處理年齡數(shù)據(jù),人工設(shè)計年齡范圍,例如:0-30歲為青年人,30-60歲為中年人,60歲以上為老年人,這樣就可以把數(shù)據(jù)分為3類,如圖1所示。
對于連續(xù)型的數(shù)據(jù),可以采用對數(shù)變換、標(biāo)準(zhǔn)化、最大最小值、最大絕對值、基于L1或L2范數(shù)等縮放方法。經(jīng)過對數(shù)變換之后,這樣小數(shù)值擴(kuò)大,大數(shù)值壓縮,低計數(shù)值的集中趨勢被減弱了,在x軸上的分布更均勻了。在梯度和矩陣為核心的算法中,譬如邏輯回歸,支持向量機(jī),神經(jīng)網(wǎng)絡(luò),縮放可以加快求解速度;而在距離類模型,譬如K近鄰,K-Means聚類中,縮放可以幫我們提升模型精度,避免某一個取值范圍特別大的特征對距離計算造成影響。
2.2 類別特征
類別數(shù)據(jù)表示的量可以是人的性別、婚姻狀況、家鄉(xiāng)、學(xué)歷等,其取值可是數(shù)值(如1代表男,0代表女),但是作為數(shù)值沒有任何數(shù)值意義。對于類別特征,最常見的是轉(zhuǎn)化為獨(dú)熱編碼(One-Hot Encoding),這是一種數(shù)據(jù)預(yù)處理技巧,它可以把類別數(shù)據(jù)變成長度相同的特征例如,人的學(xué)歷分成小學(xué)、中學(xué)、大學(xué),那么我們可以創(chuàng)建一個維度為3的特征,小學(xué)用(0,0,1)表示,中學(xué)用(1,0,0)表示,大學(xué)用(0,1,0)表示,如圖2所示。
2.3 時間特征
時間型特征有的可以看做連續(xù)值(用車時間、停車間隔)處理,有的可以看做離散值(星期幾、幾月份)處理。另外還可以做時間序列分析:滯后特征(又稱lag特征,當(dāng)前時間點(diǎn)之前的信息)、滑動窗口統(tǒng)計特征(如回歸問題中計算前n個值的均值,分類問題中前n個值中每個類別的分布)。
2.4 空間特征
對于坐標(biāo)經(jīng)緯度,可以散列成類別特征,行政區(qū)ID、街道ID、城市ID 可以直接當(dāng)作類別特征處理。對于兩地之間的距離計算可以采用歐式距離、球面距離、曼哈頓距離、真實距離。
2.5 文本特征
文本特征主要來自各大網(wǎng)站、社區(qū)論壇。首先進(jìn)行文本清洗:去除HTML標(biāo)記、轉(zhuǎn)小寫、去除噪聲、統(tǒng)一編碼等。最基礎(chǔ)的文本表示模型是詞袋模型。具體地說,就是將整段文本以詞為單位切分開,然后每篇文章可以表示成一個長向量,向量的每一個維度代表一個單詞。通常采用 TF-IDF 計算權(quán)重,如果某個詞或短語在一篇文檔中出現(xiàn)的頻率很高,并且在其他文檔中很少出現(xiàn),則認(rèn)為此詞語權(quán)重很高。詞袋模型是以單詞為單位進(jìn)行劃分,但有時候進(jìn)行單詞級別劃分并不是很好的做法,畢竟有的單詞組合起來才是其要表達(dá)的含義,因此可以將連續(xù)出現(xiàn)的n個詞(n <= N)組成的詞組(N-gram)作為一個單獨(dú)的特征放到向量表示中,構(gòu)成了 N-gram 模型。目前主流的是詞嵌入模型,詞嵌入是一類將詞向量化的模型的統(tǒng)稱,核心思想是將每個詞都映射成低維空間(通常 K=50-300維)上的一個稠密向量(Dense Vector)。常用的詞嵌入模型是 Word2Vec,它是一種底層的神經(jīng)網(wǎng)絡(luò)模型,有兩種網(wǎng)絡(luò)結(jié)構(gòu),分別是 CBOW(Continues Bag of Words)和Skip-gram。
3 特征選擇
對原始數(shù)據(jù)進(jìn)行處理以后,有時數(shù)據(jù)的維度會非常大,但不是每個維度對當(dāng)前的問題會有幫助,這時需要進(jìn)行數(shù)據(jù)降維。特征提取與特征選擇都能幫助減少特征的維度、數(shù)據(jù)冗余。從文字,圖像,聲音等其他非結(jié)構(gòu)化數(shù)據(jù)中提取新信息作為特征。從所有的特征中,選擇出有意義,對模型有幫助的特征,以避免必須將所有特征都導(dǎo)入模型去訓(xùn)練的情況。
雖然都是為了從原始特征中找出最有效的特征,但是它們之間的區(qū)別是特征提取強(qiáng)調(diào)通過特征轉(zhuǎn)換的方式得到一組具有明顯物理或統(tǒng)計意義的特征,這樣就改變了原來的特征空間。而特征選擇的方法是從原始特征數(shù)據(jù)集中選擇出子集,是一種包含的關(guān)系,沒有更改原始的特征空間。所以特征選擇的過程經(jīng)常能表示出每個特征的重要性對于模型構(gòu)建的重要性,更具有解釋性,應(yīng)用優(yōu)先級要高于特征提取。常見的特征選擇方法分為以下三種,主要區(qū)別在于特征選擇部分是否使用后續(xù)的學(xué)習(xí)器[9]。
3.1 過濾法
使用過濾方法進(jìn)行特征選擇不需要依賴任何機(jī)器學(xué)習(xí)算法,如圖3所示。它是根據(jù)各種統(tǒng)計檢驗中的分?jǐn)?shù)以及相關(guān)性的各項指標(biāo)來選擇特征,包括方差過濾,基于卡方,F(xiàn)檢驗和互信息的相關(guān)性過濾[10]。
3.2 嵌入法
嵌入法是一種讓算法自己決定使用哪些特征的方法,即特征選擇和算法訓(xùn)練同時進(jìn)行,如圖4所示。在使用嵌入法時,先使用某些機(jī)器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練,得到各個特征的權(quán)值系數(shù),根據(jù)權(quán)值系數(shù)從大到小選擇特征。這些權(quán)值系數(shù)往往代表了特征對于模型的某種貢獻(xiàn)或某種重要性,然后就可以基于這種貢獻(xiàn)的評估,找出對模型建立最有用的特征。
3.3 封裝法
相比于過濾式特征選擇不考慮后續(xù)學(xué)習(xí)器,封裝法直接把最終將要使用的學(xué)習(xí)器的性能作為特征子集的評價原則,如圖5所示。其目的就是為給定學(xué)習(xí)器選擇最有利于其性能、量身定做的特征子集。優(yōu)點(diǎn)是直接針對特定學(xué)習(xí)器進(jìn)行優(yōu)化,考慮到特征之間的關(guān)聯(lián)性,因此通常包裹式特征選擇比過濾式特征選擇能訓(xùn)練得到一個更好性能的學(xué)習(xí)器。缺點(diǎn)是由于特征選擇過程需要多次訓(xùn)練學(xué)習(xí)器,故計算開銷要比過濾式特征選擇要大得多。
4 結(jié)論
本文先是介紹了簡單特征工程的作用,然后說明目前特征工程方面的研究現(xiàn)狀:研究較少且只研究某一具體領(lǐng)域,沒有形成通用處理方法。在數(shù)據(jù)清洗之后,從數(shù)值特征、類別特征、時間特征、空間特征和文本特5個方面介紹一些通用方法。最后對于數(shù)據(jù)維數(shù)和樣本數(shù)過于龐大帶來的“維數(shù)災(zāi)難”,可以從特征選擇的過濾法、嵌入法和封裝法3種方法來解決。
特征工程包含許多復(fù)雜的知識,為了控制本文的篇幅,做了一些取舍。本文沒有討論音頻數(shù)據(jù)的傅里葉分析、隨機(jī)特征、隱含狄利克雷分和矩陣分解等知識。下一步將結(jié)合機(jī)器學(xué)習(xí)的應(yīng)用場景,對以上知識進(jìn)行重點(diǎn)研究。
參考文獻(xiàn)
[1] 張浩.自動化特征工程與參數(shù)調(diào)整算法研究[D].電子科技大學(xué), 2018.
[2] 白肇強(qiáng).基于用戶行為的特征工程構(gòu)建與應(yīng)用研究[D].華南理工大學(xué),2018.
[3] 余大龍.基于特征選擇的數(shù)據(jù)降維算法研究[D].安徽大學(xué), 2017.
[4] 張嬌鵬.基于粗糙集的特征選擇高效算法研究[D].山西大學(xué), 2017.
[5] 張笑朋.面向高維大數(shù)據(jù)的特征選擇方法研究[D].太原理工大學(xué), 2018.
[6] 劉華文.基于信息熵的特征選擇算法研究[D].長春:吉林大學(xué), 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.