目錄
1晴玖、數(shù)據(jù)與處理與特征工程概述
2、Sklearn數(shù)據(jù)預處理之Preprocessing & Impute
3逊笆、Sklearn特征選擇feature_selection
4、總結
1、概述:
數(shù)據(jù)預處理與特征工程是數(shù)據(jù)建模前流程激蹲,數(shù)據(jù)不給力,再好的算法都沒用江掩。數(shù)據(jù)決定了模型的上限学辱。算法只是無限逼近這個上限。
Sklearn中的數(shù)據(jù)預處理和特征工程核心模塊:
模塊 preprocessing:幾乎包含數(shù)據(jù)預處理的所有內容环形。
模塊 impute:填補缺失值專用策泣。
模塊 feature_selection:包括特征選擇的各種方法實踐。
2抬吟、Sklearn數(shù)據(jù)預處理之Preprocessing & Impute
數(shù)據(jù)無量綱化:在機器學習算法實踐中萨咕,我們往往有著將數(shù)據(jù)轉換到同一規(guī)格或不同分布的數(shù)據(jù)轉換到某個特定的分布的需求,這種需求稱為將數(shù)據(jù)“無量綱化”拗军。無量綱化可以使矩陣和梯度為核心的算法中任洞,加快算法求解速度,使算法盡快收斂发侵,而在距離計算為核心的算法中交掏,無量綱化可以幫助我們提升模型精度,避免某一個取值過大的特征對距離計算公式造成影響刃鳄。(決策樹和樹的集成算法除外盅弛,不需要無量綱化,均能將任意數(shù)據(jù)處理的很好)
無量綱化可以是線性也可以是非線性的叔锐。線性無量綱化包括:中心化(Zero-centered或者Mean-subtraction)處理和縮放處理(scale)挪鹏。中心化的本質是讓所有記錄減去一個固定值,即讓樣本數(shù)據(jù)平移到某個位置愉烙√趾校縮放的本質是通過除以一個固定值,將數(shù)據(jù)固定在某一個范圍之中步责,取對數(shù)也是一種縮放處理返顺。
preprocessing.MinMaxScaler:當數(shù)據(jù)(x)按照最小值中心化后禀苦,再按極差(最大值-最小值)縮放,數(shù)據(jù)移動了最小值個單位遂鹊,并且會被收斂到【0-1】之間振乏,而這個過程叫做數(shù)據(jù)歸一化(Normalization,又稱Min-Max Scaling)秉扑,歸一化的數(shù)據(jù)服從正態(tài)分布慧邮。
公式如下:
preprocessing.StandardScaler:當數(shù)據(jù)(x)按均值()中心化后,再按標準差()縮放舟陆,數(shù)據(jù)就會服從均值為0误澳,方差為1的正態(tài)分布(即標準正態(tài)分布),而這個過程吨娜,就叫做數(shù)據(jù)標準化(Standardization脓匿,又稱Z-score normalization)。
公式如下:
StandardScaler和MinMaxScaler選哪個宦赠?
兩種歸一化方法的主要區(qū)別在于,如果數(shù)據(jù)集比較小米母,且相對噪聲少勾扭,數(shù)據(jù)跨度不大時,采用MinMaxScaler铁瞒,如果數(shù)據(jù)量較大妙色,維度較多,一般采用后者進行歸一化慧耍。
impute.SimpleImputer:用于缺失值處理身辨。
處理分類特征:
preprocessing.OneHotEncoder:特征專用,獨熱編碼芍碧,創(chuàng)建啞變量(處理名義變量)煌珊。
preprocessing.OrdinalEncoder:特征專用,能夠將分類特征轉換為分類數(shù)值泌豆。
preprocessing.LabelEncoder:標簽專用定庵,能夠將分類轉換為分類數(shù)值。
三者區(qū)別:獨熱編碼主要處理無序的名義變量踪危,而OrdinalEncoder主要處理有距變量(變量取值之間有一定的計算關系)蔬浙,LabelEncoder處理有序分類變量。
處理連續(xù)型特征:二值化與分段(分箱)
sklearn.preprocessing.Binarizer : 根據(jù)閾值將數(shù)據(jù)二值化為(0或1)贞远,用于處理連續(xù)型變量畴博。
preprocessing.KBinsDiscretizer:這是將連續(xù)型的變量劃分為分類變量的類,能夠將連續(xù)型變量排序分箱后編碼蓝仲。
3俱病、Sklearn特征選擇feature_selection
Filter過濾法:過濾法的主要對象是需要遍歷特征或升維的算法們蜜唾,而過濾法的主要目的是在維持算法表現(xiàn)的前提下,幫助算法降低它們的計算成本庶艾。
1袁余、方差過濾(VarianceThreshold) :通過特征本身的方差來篩選特征的類。比如:特征本身的方差較小咱揍,表示這個特征上基本上沒有差異颖榜,或許大部分特征值都相同,說明這個特征對樣本區(qū)分沒什么作用煤裙。因此要消除方差為0的特征掩完。
說明:方差過濾法有可能將有效特征過濾掉,導致模型效果變差硼砰;方差過濾的閾值一般設置比較小的值且蓬,對明顯不重要的特征進行預篩選,然后繼續(xù)選擇其他更優(yōu)的特征選擇方法繼續(xù)消減特征數(shù)量题翰。
2恶阴、相關性過濾:方差選擇之后,就是特征相關性問題了豹障。我們希望選擇與標簽相關性強的特征冯事,這樣的特征能夠為我們提供大量信息。如果特征與標簽無關血公,不僅會白白浪費計算內存昵仅,還有可能為模型引入噪音。在Sklearn中有三種常用的方法來判斷特征與標簽之間的相關性:卡方累魔,F(xiàn)檢驗摔笤,互信息。
? ? a垦写、卡方過濾:卡方過濾是專門針對離散型標簽(即分類問題)的相關性過濾吕世。卡方檢驗類feature_selection.chi2計算每個非負特征和標簽之間的卡方統(tǒng)計量梯澜,并依照卡方統(tǒng)計量由高到低為特征排名寞冯。再結合feature_selection.SelectKBest這個可以輸入“評分標準”來選出前K個分數(shù)最高的特征的類,我們可以借此去除最可能獨立于標簽晚伙,與我們分類無關的標簽吮龄。
? ? 卡方檢驗的本質:是推測兩組數(shù)據(jù)之間的差異,其檢驗原假設是“兩組數(shù)據(jù)是相互獨立的”咆疗±熘悖卡方檢驗返回卡方值和P值兩個統(tǒng)計量。其中卡方值很難界定有效范圍午磁,我們一般使用P值尝抖,0.05或0.01作為判斷邊界:我們希望選擇卡方值很大毡们,p值小于0.05的特征,即和標簽是相關的特征昧辽。
? ? b衙熔、F檢驗:又稱ANOVA,方差齊性檢驗搅荞,是用來捕捉每個特征與標簽之間的線性關系的過濾方法红氯。
F檢驗在數(shù)據(jù)服從正態(tài)分布時效果會非常穩(wěn)定,因此在使用F檢驗時咕痛,會先將數(shù)據(jù)轉換成服從正態(tài)分布的方式痢甘。F檢驗的本質上是尋找兩組數(shù)據(jù)之間的線性關系。返回F和P兩個統(tǒng)計量茉贡,和卡方檢驗一樣我們希望選取P值小于0.05或0.01的特征塞栅,這些特征與標簽是有顯著線性相關的。
? ??c腔丧、互信息:互信息法是用來捕捉每個特征與標簽之間的任意關系(包括線性和非線性關系)的過濾方法放椰。與F檢驗類似,既可以做分類又可以做回歸悔据。參數(shù)和用法與F檢驗一模一樣庄敛,但功能更強大,互信息既可以檢測出線性關系科汗,也可以找出非線性關系。
互信息的返回值是“每個特征與目標之間的互信息量的估計”绷雏,這個估計量在【0-1】之間头滔,為0表示兩個變量獨立,為1表示兩個變量完全相關涎显。
Embedded嵌入法:嵌入法是一種基于算法自己做決定選擇某些重要度高的特征(通過相關性過濾無關特征和通過方差過濾掉無區(qū)分度特征)坤检,因此嵌入法是過濾法的進化版。
feature_selection.SelectFromModel
過濾法使用統(tǒng)計量可以使用統(tǒng)計知識和常識查找范圍過濾特征期吓,而嵌入法通過權值系數(shù)很難界定特征的重要度閾值早歇,并且其計算速度也會和應用的算法有很大的關系。如果采用計算量大讨勤,計算緩慢的算法箭跳,嵌入法本身也會非常耗時耗力。并且潭千,特征選擇過后谱姓,還是需要自己來評估模型。
Wrapper包裝法:包裝法也是一個特征選擇和算法訓練同時進行的方法刨晴,與嵌入法十分相似屉来,它也是依賴于算法自身的選擇路翻,比如coef_屬性或feature_importances_屬性來完成特征選擇。但不同的是茄靠,我們往往使用一個目標函數(shù)作為黑盒來幫助我們選取特征茂契,而不是自己輸入某個評估指標或統(tǒng)計量的閾值。
feature_selection.RFE
包裝法效果是所有特征選擇方法中最利于提升模型表現(xiàn)的慨绳,它可以使用很少特征達到很優(yōu)秀的效果掉冶。除此之外,在特征數(shù)目相同時儡蔓,包裝法和嵌入法的效果能夠匹敵郭蕉,不過它比嵌入法算得更見緩慢,所以也不適用于太大型的數(shù)據(jù)喂江。相比之下召锈,包裝法是最能保證模型效果的特征選擇方法。
4获询、總結:經驗來說涨岁,過濾法更快速,但更粗糙吉嚣。包裝法和嵌入法更精確梢薪,比較適合具體到算法去調整,但計算量比較大尝哆,運行時間長秉撇。當數(shù)據(jù)量很大的時候,優(yōu)先使用方差過濾和互信息法調整秋泄,再上其他特征選擇方法琐馆。使用邏輯回歸時,優(yōu)先使用嵌入法恒序。使用支持向量機時瘦麸,優(yōu)先使用包裝法。迷茫的時候歧胁,從過濾法走起滋饲,看具體數(shù)據(jù)具體分析。