引言
在之前學(xué)習(xí)機(jī)器學(xué)習(xí)技術(shù)中,很少關(guān)注特征工程(Feature Engineering)淫痰,然而最楷,單純學(xué)習(xí)機(jī)器學(xué)習(xí)的算法流程,可能仍然不會(huì)使用這些算法待错,尤其是應(yīng)用到實(shí)際問題的時(shí)候籽孙,常常不知道怎么提取特征來建模。
特征是機(jī)器學(xué)習(xí)系統(tǒng)的原材料朗鸠,對(duì)最終模型的影響是毋庸置疑的蚯撩。
特征工程的重要意義
數(shù)據(jù)特征會(huì)直接影響你使用的預(yù)測模型和實(shí)現(xiàn)的預(yù)測結(jié)果。準(zhǔn)備和選擇的特征越好烛占,則實(shí)現(xiàn)的結(jié)果越好胎挎。
影響預(yù)測結(jié)果好壞的因素:模型的選擇沟启、可用的數(shù)據(jù)、特征的提取犹菇。
優(yōu)質(zhì)的特征往往描述了數(shù)據(jù)的固有結(jié)構(gòu)德迹。
大多數(shù)模型都可以通過數(shù)據(jù)中良好的結(jié)構(gòu)很好的學(xué)習(xí),即使不是最優(yōu)的模型揭芍,優(yōu)質(zhì)的特征也可以得到不錯(cuò)的效果胳搞。優(yōu)質(zhì)特征的靈活性可以讓你使用簡單的模型運(yùn)算的更快,更容易理解称杨,更容易維護(hù)肌毅。
優(yōu)質(zhì)的特征可以在使用不是最優(yōu)的模型參數(shù)的情況下得到不錯(cuò)的預(yù)測結(jié)果,這樣你就不必費(fèi)力去選擇最適合的模型和最優(yōu)的參數(shù)了姑原。
特征工程定義
特征工程是將原始數(shù)據(jù)轉(zhuǎn)化為特征悬而,更好表示預(yù)測模型處理的實(shí)際問題,提升對(duì)于未知數(shù)據(jù)的準(zhǔn)確性锭汛。它是用目標(biāo)問題所在的特定領(lǐng)域知識(shí)或者自動(dòng)化的方法來生成笨奠、提取、刪減或者組合變化得到特征唤殴。
下面的圖給出了特征工程的概貌:

特征工程的子問題
機(jī)器學(xué)習(xí)中的特征(Feature)
在機(jī)器學(xué)習(xí)和模式識(shí)別中般婆,特征是在觀測現(xiàn)象中的一種獨(dú)立、可測量的屬性朵逝。選擇信息量大的蔚袍、有差別性的、獨(dú)立的特征是模式識(shí)別配名、分類和回歸問題的關(guān)鍵一步页响。
最初的原始特征數(shù)據(jù)集可能太大,或者信息冗余段誊,因此在機(jī)器學(xué)習(xí)的應(yīng)用中,一個(gè)初始步驟就是選擇特征的子集栈拖,或構(gòu)建一套新的特征集连舍,減少功能來促進(jìn)算法的學(xué)習(xí),提高泛化能力和可解釋性涩哟。
在表格數(shù)據(jù)中索赏,觀測數(shù)據(jù)或?qū)嵗▽?duì)應(yīng)表格的一行)由不同的變量或者屬性(表格的一列)構(gòu)成,這里屬性其實(shí)就是特征贴彼。但是與屬性一詞不同的是潜腻,特征是對(duì)于分析和解決問題有用、有意義的屬性器仗。
在機(jī)器視覺中融涣,一幅圖像是一個(gè)觀測童番,但是特征可能是圖中的一條線;在自然語言處理中威鹿,一個(gè)文本是一個(gè)觀測剃斧,但是其中的段落或者詞頻可能才是一種特征;在語音識(shí)別中忽你,一段語音是一個(gè)觀測幼东,但是一個(gè)詞或者音素才是一種特征。
特征的重要性(Feature Importance)
你可以客觀的評(píng)價(jià)特征的實(shí)用性科雳。判別特征的重要性是對(duì)特征進(jìn)行選擇的預(yù)先指標(biāo)根蟹,特征根據(jù)重要性被分配分?jǐn)?shù),然后根據(jù)分?jǐn)?shù)不同進(jìn)行排序糟秘,其中高分的特征被選擇出來放入訓(xùn)練數(shù)據(jù)集简逮。
如果與因變量(預(yù)測的事物)高度相關(guān),則這個(gè)特征可能很重要蚌堵,其中相關(guān)系數(shù)和獨(dú)立變量方法是常用的方法买决。
在構(gòu)建模型的過程中,一些復(fù)雜的預(yù)測模型會(huì)在算法內(nèi)部進(jìn)行特征重要性的評(píng)價(jià)和選擇吼畏,如多元自適應(yīng)回歸樣條法(Multivariate Adaptive Regression Splines督赤, MARS)、隨機(jī)森林(Random Forest)泻蚊、梯度提升機(jī)(Gradient Boosted Machines)躲舌。這些模型在模型準(zhǔn)備階段會(huì)進(jìn)行變量重要性的確定。
特征提刃孕邸(Feature Extraction)
一些觀測數(shù)據(jù)如果直接建模没卸,其原始狀態(tài)的數(shù)據(jù)太多。像圖像秒旋、音頻和文本數(shù)據(jù)约计,如果將其看做是表格數(shù)據(jù),那么其中包含了數(shù)以千計(jì)的屬性迁筛。
特征提取是自動(dòng)地對(duì)原始觀測降維煤蚌,使其特征集合小到可以進(jìn)行建模的過程。
對(duì)于表格式數(shù)據(jù)细卧,可以使用主元素分析(Principal Component Analysis)尉桩、聚類等映射方法;對(duì)于圖像數(shù)據(jù)贪庙,可以進(jìn)行線(line)或邊緣(edge)的提戎├纭;根據(jù)相應(yīng)的領(lǐng)域止邮,圖像这橙、視頻和音頻數(shù)據(jù)可以有很多數(shù)字信號(hào)處理的方法對(duì)其進(jìn)行處理奏窑。
特征選擇(Feature Selection)
不同的特征對(duì)模型的準(zhǔn)確度的影響不同,有些特征與要解決的問題不相關(guān)析恋,有些特征是冗余信息良哲,這些特征都應(yīng)該被移除掉。
特征選擇是自動(dòng)地選擇出對(duì)于問題最重要的那些特征子集的過程助隧。
特征選擇算法可以使用評(píng)分的方法來進(jìn)行排序筑凫;還有些方法通過反復(fù)試驗(yàn)來搜索出特征子集,自動(dòng)地創(chuàng)建并評(píng)估模型以得到客觀的并村、預(yù)測效果最好的特征子集巍实;還有一些方法,將特征選擇作為模型的附加功能哩牍,像逐步回歸法(Stepwise regression)
就是一個(gè)在模型構(gòu)建過程中自動(dòng)進(jìn)行特征選擇的算法棚潦。
特征構(gòu)建(Feature Construction)
特征重要性和選擇是告訴使用者特征的客觀特性,但這些工作之后膝昆,需要你人工進(jìn)行特征的構(gòu)建丸边。
特征構(gòu)建需要花費(fèi)大量的時(shí)間對(duì)實(shí)際樣本數(shù)據(jù)進(jìn)行處理,思考數(shù)據(jù)的結(jié)構(gòu)荚孵,和如何將特征數(shù)據(jù)輸入給預(yù)測算法妹窖。
對(duì)于表格數(shù)據(jù),特征構(gòu)建意味著將特征進(jìn)行混合或組合以得到新的特征收叶,或通過對(duì)特征進(jìn)行分解或切分來構(gòu)造新的特征骄呼;對(duì)于文本數(shù)據(jù),特征夠自己按意味著設(shè)計(jì)出針對(duì)特定問題的文本指標(biāo)判没;對(duì)于圖像數(shù)據(jù)蜓萄,這意味著自動(dòng)過濾,得到相關(guān)的結(jié)構(gòu)澄峰。
特征學(xué)習(xí)(Feature Learning)
特征學(xué)習(xí)是在原始數(shù)據(jù)中自動(dòng)識(shí)別和使用特征嫉沽。
現(xiàn)代深度學(xué)習(xí)方法在特征學(xué)習(xí)領(lǐng)域有很多成功案例,比如自編碼器和受限玻爾茲曼機(jī)俏竞。它們以無監(jiān)督或半監(jiān)督的方式實(shí)現(xiàn)自動(dòng)的學(xué)習(xí)抽象的特征表示(壓縮形式)耻蛇,其結(jié)果用于支撐像語音識(shí)別、圖像分類胞此、物體識(shí)別和其他領(lǐng)域的先進(jìn)成果。
抽象的特征表達(dá)可以自動(dòng)得到跃捣,但是你無法理解和利用這些學(xué)習(xí)得到的結(jié)果漱牵,只有黑盒的方式才可以使用這些特征。你不可能輕易懂得如何創(chuàng)造和那些效果很好的特征相似或相異的特征疚漆。這個(gè)技能是很難的酣胀,但同時(shí)它也是很有魅力的刁赦,很重要的。
特征工程的流程
機(jī)器學(xué)習(xí)中數(shù)據(jù)的轉(zhuǎn)換過程:
- 選擇數(shù)據(jù):收集整合數(shù)據(jù)闻镶,將數(shù)據(jù)規(guī)劃化為一個(gè)數(shù)據(jù)集
- 預(yù)處理數(shù)據(jù):對(duì)數(shù)據(jù)進(jìn)行清洗甚脉、格式化、采樣
- 轉(zhuǎn)換數(shù)據(jù):特征工程所在
- 對(duì)數(shù)據(jù)建模:構(gòu)建模型铆农、評(píng)估模型牺氨、調(diào)整模型
特征工程的迭代過程:
- 對(duì)特征進(jìn)行頭腦風(fēng)暴:深入分析問題,觀察數(shù)據(jù)特點(diǎn)墩剖,參考其他問題的有關(guān)特征工程的方法并應(yīng)用到自己問題中
- 特征的設(shè)計(jì):你可以自動(dòng)提取特征猴凹,手動(dòng)構(gòu)造特征,或?qū)烧呦嘟Y(jié)合
- 特征選擇:使用不同的特征重要性評(píng)分方法或特征選擇方法
- 評(píng)估模型:利用所選擇的特征對(duì)測試數(shù)據(jù)進(jìn)行預(yù)測岭皂,評(píng)估模型準(zhǔn)確性
參考資料
Wiki:Feature learning
機(jī)器學(xué)習(xí)中的數(shù)據(jù)清洗與特征處理綜述
Discover Feature Engineering, How to Engineer Features and How to Get Good at It
關(guān)于推薦系統(tǒng)中的特征工程
轉(zhuǎn)載請(qǐng)注明作者Jason Ding及其出處
Github博客主頁(http://jasonding1354.github.io/)
GitCafe博客主頁(http://jasonding1354.gitcafe.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡書主頁(http://www.reibang.com/users/2bd9b48f6ea8/latest_articles)
Google搜索jasonding1354進(jìn)入我的博客主頁