特征工程以及特征工程的方法

參考文章
https://www.zhihu.com/question/29316149/answer/110159647
https://www.cnblogs.com/peizhe123/p/7412364.html

什么是特征工程

有這么一句話在業(yè)界廣泛流傳:數(shù)據(jù)和特征決定了機器學(xué)習(xí)的上限,而模型和算法只是逼近這個上限而已。那特征工程到底是什么呢?顧名思義,其本質(zhì)是一項工程活動,目的是最大限度地從原始數(shù)據(jù)中提取特征以供算法和模型使用。通過總結(jié)和歸納,人們認(rèn)為特征工程包括以下方面:


image.png

特征工程的常用處理方法

1.時間戳處理

時間戳屬性通常需要分離成多個維度比如年、月、日、小時、分鐘、秒鐘。但是在很多的應(yīng)用中,大量的信息是不需要的。比如在一個監(jiān)督系統(tǒng)中,嘗試?yán)靡粋€’位置+時間‘的函數(shù)預(yù)測一個城市的交通故障程度,這個實例中,大部分會受到誤導(dǎo)只通過不同的秒數(shù)去學(xué)習(xí)趨勢,其實是不合理的。并且維度'年'也不能很好的給模型增加值的變化,我們可能僅僅需要小時、日、月等維度。因此當(dāng)我們在呈現(xiàn)時間的時候,試著保證你所提供的所有數(shù)據(jù)是你的模型所需要的。假如數(shù)據(jù)源來自不同的地理數(shù)據(jù)源,可以利用時區(qū)將數(shù)據(jù)標(biāo)準(zhǔn)化。

2.數(shù)據(jù)類別屬性編碼化

一些數(shù)值可能不是數(shù)值型,這時候就需要用到編碼化,比如,風(fēng)向,的數(shù)據(jù)是東西南北,這時候,可以做成形如以下的編碼,將風(fēng)向編碼化,如下圖哪個風(fēng)向就將哪個風(fēng)向置換1.
處理前


image.png

出來后


image.png

3.分箱/分區(qū)

有時候,將數(shù)值型屬性轉(zhuǎn)換成類別呈現(xiàn)更有意義,同時能使算法減少噪聲的干擾,通過將一定范圍內(nèi)的數(shù)值劃分成確定的塊。舉個例子,我們預(yù)測一個人是否擁有某款衣服,這里年齡是一個確切的因子。其實年齡組是更為相關(guān)的因子,所有我們可以將年齡分布劃分成1-10,11-18,19-25,26-40等。而且,不是將這些類別分解成2個點,你可以使用標(biāo)量值,因為相近的年齡組表現(xiàn)出相似的屬性。
只有在了解屬性的領(lǐng)域知識的基礎(chǔ),確定屬性能夠劃分成簡潔的范圍時分區(qū)才有意義。即所有的數(shù)值落入一個分區(qū)時能夠呈現(xiàn)出共同的特征。在實際應(yīng)用中,當(dāng)你不想讓你的模型總是嘗試區(qū)分值之間是否太近時,分區(qū)能夠避免出現(xiàn)過擬合。例如,如果你所感興趣的是將一個城市作為整體,這時你可以將所有落入該城市的維度值進(jìn)行整合成一個整體。分箱也能減小小錯誤的影響,通過將一個給定值劃入到最近的塊中。如果劃分范圍的數(shù)量和所有可能值相近,或?qū)δ銇碚f準(zhǔn)確率很重要的話,此時分箱就不適合了。

4. 交叉特征

交叉特征算是特征工程中非常重要的方法之一了,交叉特征是一種很獨特的方式,它將兩個或更多的類別屬性組合成一個。當(dāng)組合的特征要比單個特征更好時,這是一項非常有用的技術(shù)。數(shù)學(xué)上來說,是對類別特征的所有可能值進(jìn)行交叉相乘。
假如擁有一個特征A,A有兩個可能值{A1,A2}。擁有一個特征B,存在{B1,B2}等可能值。然后,A&B之間的交叉特征如下:{(A1,B1),(A1,B2),(A2,B1),(A2,B2)},并且你可以給這些組合特征取任何名字但是需要明白每個組合特征其實代表著A和B各自信息協(xié)同作用。

5. 特征選擇

為了得到更好的模型,使用某些算法自動的選出原始特征的子集。這個過程,你不會構(gòu)建或修改你擁有的特征,但是會通過修剪特征來達(dá)到減少噪聲和冗余。
那些和我們解決的問題無關(guān)需要被移除的屬性,在我們的數(shù)據(jù)特征中存在了一些特征對于提高模型的準(zhǔn)確率比其他更重要的特征,也還有一些特征與其他特征放在一起出現(xiàn)了冗余,特征選擇是通過自動選出對于解決問題最有用的特征子集來解決上述問題的。
特征選擇算法可能會用到評分方法來排名和選擇特征,比如相關(guān)性或其他確定特征重要性的方法,更進(jìn)一步的方法可能需要通過試錯,來搜索出特征子集。
還有通過構(gòu)建輔助模型的方法,逐步回歸就是模型構(gòu)造過程中自動執(zhí)行特征選擇算法的一個實例,還有像Lasso回歸和嶺回歸等正則化方法也被歸入到特征選擇,通過加入額外的約束或者懲罰項加到已有模型(損失函數(shù))上,以防止過擬合并提高泛化能力。

6. 特征縮放

有時候,你可能會注意到某些特征比其他特征擁有高得多的跨度值。舉個例子,將一個人的收入和他的年齡進(jìn)行比較,更具體的例子,如某些模型(像嶺回歸)要求你必須將特征值縮放到相同的范圍值內(nèi)。通過縮放可以避免某些特征比其他特征獲得大小非常懸殊的權(quán)重值。

7.特征提取

特征提取涉及到從原始屬性中自動生成一些新的特征集的一系列算法,降維算法就屬于這一類。特征提取是一個自動將觀測值降維到一個足夠建模的小數(shù)據(jù)集的過程。對于列表數(shù)據(jù),可使用的方法包括一些投影方法,像主成分分析和無監(jiān)督聚類算法。對于圖形數(shù)據(jù),可能包括一些直線檢測和邊緣檢測,對于不同領(lǐng)域有各自的方法。
特征提取的關(guān)鍵點在于這些方法是自動的(雖然可能需要從簡單方法中設(shè)計和構(gòu)建得到),還能夠解決不受控制的高維數(shù)據(jù)的問題。大部分的情況下,是將這些不同類型數(shù)據(jù)(如圖,語言,視頻等)存成數(shù)字格式來進(jìn)行模擬觀察。

特征工程流程

image.png

數(shù)據(jù)預(yù)處理常用方法:

1.標(biāo)準(zhǔn)化

標(biāo)準(zhǔn)化的前提是特征值服從正態(tài)分布,標(biāo)準(zhǔn)化后,其轉(zhuǎn)換成標(biāo)準(zhǔn)正態(tài)分布。常用的方法有:z-score標(biāo)準(zhǔn)化,即零-均值標(biāo)準(zhǔn)化,y=(x-μ)/σ。經(jīng)過處理后的數(shù)據(jù)均值為0,標(biāo)準(zhǔn)差為1。

2.歸一化

常用的方法有: min-max歸一化y=(x-min)/(max-min)

3. 對定量特征二值化(離散化)

定量特征二值化的核心在于設(shè)定一個閾值,大于閾值的賦值為1,小于等于閾值的賦值為0

4.對定性特征進(jìn)行獨熱編碼

獨熱編碼:使用一個二進(jìn)制的位來表示某個定性特征的出現(xiàn)與否

5. 缺失值的處理

現(xiàn)實世界中的數(shù)據(jù)往往非常雜亂,未經(jīng)處理的原始數(shù)據(jù)中某些屬性數(shù)據(jù)缺失是經(jīng)常出現(xiàn)的情況。另外,在做特征工程時經(jīng)常會有些樣本的某些特征無法求出。下面是幾種處理數(shù)據(jù)中缺失值的主要方法。

  • 刪除
    最簡單的方法是刪除,刪除屬性或者刪除樣本。如果大部分樣本該屬性都缺失,這個屬性能提供的信息有限,可以選擇放棄使用該維屬性;如果一個樣本大部分屬性缺失,可以選擇放棄該樣本。雖然這種方法簡單,但只適用于數(shù)據(jù)集中缺失較少的情況。
    *統(tǒng)計填充
    對于缺失值的屬性,尤其是數(shù)值類型的屬性,根據(jù)所有樣本關(guān)于這維屬性的統(tǒng)計值對其進(jìn)行填充,如使用平均數(shù)、中位數(shù)、眾數(shù)、最大值、最小值等,具體選擇哪種統(tǒng)計值需要具體問題具體分析。另外,如果有可用類別信息,還可以進(jìn)行類內(nèi)統(tǒng)計,比如身高,男性和女性的統(tǒng)計填充應(yīng)該是不同的。
  • 統(tǒng)一填充
    對于含缺失值的屬性,把所有缺失值統(tǒng)一填充為自定義值,如何選擇自定義值也需要具體問題具體分析。當(dāng)然,如果有可用類別信息,也可以為不同類別分別進(jìn)行統(tǒng)一填充。常用的統(tǒng)一填充值有:“空”、“0”、“正無窮”、“負(fù)無窮”等。
  • 預(yù)測填充
    我們可以通過預(yù)測模型利用不存在缺失值的屬性來預(yù)測缺失值,也就是先用預(yù)測模型把數(shù)據(jù)填充后再做進(jìn)一步的工作,如統(tǒng)計、學(xué)習(xí)等。雖然這種方法比較復(fù)雜,但是最后得到的結(jié)果比較好。

特征選擇

當(dāng)數(shù)據(jù)預(yù)處理完成后,我們需要選擇有意義的特征輸入機器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練。通常來說,從兩個方面考慮來選擇特征:

  • 特征是否發(fā)散:如果一個特征不發(fā)散,例如方差接近于0,也就是說樣本在這個特征上基本上沒有差異,這個特征對于樣本的區(qū)分并沒有什么用。
    特征與目標(biāo)的相關(guān)性:這點比較顯見,與目標(biāo)相關(guān)性高的特征,應(yīng)當(dāng)優(yōu)選選擇。除方差法外,本文介紹的其他方法均從相關(guān)性考慮。
    根據(jù)特征選擇的形式又可以將特征選擇方法分為3種:

  • Filter:過濾法,按照發(fā)散性或者相關(guān)性對各個特征進(jìn)行評分,設(shè)定閾值或者待選擇閾值的個數(shù),選擇特征。

  • Wrapper:包裝法,根據(jù)目標(biāo)函數(shù)(通常是預(yù)測效果評分),每次選擇若干特征,或者排除若干特征。

  • Embedded:嵌入法,先使用某些機器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練,得到各個特征的權(quán)值系數(shù),根據(jù)系數(shù)從大到小選擇特征。類似于Filter方法,但是是通過訓(xùn)練來確定特征的優(yōu)劣。

  • 使用方差選擇法,先要計算各個特征的方差,然后根據(jù)閾值,選擇方差大于閾值的特征。

  • 使用相關(guān)系數(shù)法,先要計算各個特征對目標(biāo)值的相關(guān)系數(shù)以及相關(guān)系數(shù)的P值。 皮爾森相關(guān)系數(shù)是一種最簡單的,能幫助理解特征和響應(yīng)變量之間關(guān)系的方法,該方法衡量的是變量之間的線性相關(guān)性,結(jié)果的取值區(qū)間為[-1,1],-1表示完全的負(fù)相關(guān)(這個變量下降,那個就會上升),+1表示完全的正相關(guān),0表示沒有線性相關(guān)。

  • 距離相關(guān)系數(shù)是為了克服Pearson相關(guān)系數(shù)的弱點而生的。Pearson相關(guān)系數(shù)是0,我們也不能斷定這兩個變量是獨立的(有可能是非線性相關(guān));但如果距離相關(guān)系數(shù)是0,那么我們就可以說這兩個變量是獨立的。

  • 降維度 當(dāng)特征選擇完成后,可以直接訓(xùn)練模型了,但是可能由于特征矩陣過大,導(dǎo)致計算量大,訓(xùn)練時間長的問題,因此降低特征矩陣維度也是必不可少的。常見的降維方法除了以上提到的基于L1懲罰項的模型以外,另外還有主成分分析法(PCA)和線性判別分析(LDA),線性判別分析本身也是一個分類模型。PCA和LDA有很多的相似點,其本質(zhì)是要將原始的樣本映射到維度更低的樣本空間中,但是PCA和LDA的映射目標(biāo)不一樣:PCA是為了讓映射后的樣本具有最大的發(fā)散性;而LDA是為了讓映射后的樣本有最好的分類性能。所以說PCA是一種無監(jiān)督的降維方法,而LDA是一種有監(jiān)督的降維方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容