特征工程之数据预处理(上)
機(jī)器學(xué)習(xí)入門(mén)系列(2)–如何構(gòu)建一個(gè)完整的機(jī)器學(xué)習(xí)項(xiàng)目,第三篇!
該系列的前兩篇文章:
- 機(jī)器學(xué)習(xí)入門(mén)系列(2)–如何構(gòu)建一個(gè)完整的機(jī)器學(xué)習(xí)項(xiàng)目(一)
- 機(jī)器學(xué)習(xí)數(shù)據(jù)集的獲取和測(cè)試集的構(gòu)建方法
分別介紹了確定項(xiàng)目終極目標(biāo)、選擇損失函數(shù)、獲取數(shù)據(jù)以及構(gòu)建測(cè)試集,接下來(lái)在進(jìn)入選擇算法和訓(xùn)練模型之前,一個(gè)很重要的步驟就是特征工程,它包括了對(duì)數(shù)據(jù)的預(yù)處理、特征提取、特征分析以及特征構(gòu)建等幾個(gè)步驟,可以說(shuō)能否訓(xùn)練一個(gè)好的模型,除了選擇合適的算法,準(zhǔn)備好數(shù)據(jù)也是非常關(guān)鍵的!
由于篇幅問(wèn)題,所以這篇文章先介紹如何處理缺失值和圖片數(shù)據(jù)擴(kuò)充的問(wèn)題,下一篇文章會(huì)介紹處理異常值和類別不平衡的問(wèn)題。
3 特征工程
何為特征工程呢?顧名思義,就是對(duì)原始數(shù)據(jù)進(jìn)行一系列工程處理,將其提煉為特征,作為輸入供算法和模型使用。
本質(zhì)上講,特征工程是一個(gè)表示和展現(xiàn)數(shù)據(jù)的過(guò)程;實(shí)際工作中,特征工程的目的是去除原始數(shù)據(jù)中的雜質(zhì)和冗余,設(shè)計(jì)更高效的特征以刻畫(huà)求解的問(wèn)題與預(yù)測(cè)模型之間的關(guān)系。
特征工程的重要性有以下幾點(diǎn):
3.1 數(shù)據(jù)預(yù)處理
首先需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,一般常用的兩種數(shù)據(jù)類型:
這里主要介紹結(jié)構(gòu)化數(shù)據(jù)和圖像數(shù)據(jù)兩種數(shù)據(jù)的數(shù)據(jù)預(yù)處理方法。
3.1.1 處理缺失值
數(shù)據(jù)的缺失主要包括記錄的缺失和記錄中某個(gè)字段信息的缺失,兩者都會(huì)造成分析結(jié)果的不準(zhǔn)確。
缺失值產(chǎn)生的原因
- 信息暫時(shí)無(wú)法獲取,或者獲取信息的代價(jià)太大。
- 信息被遺漏,人為的輸入遺漏或者數(shù)據(jù)采集設(shè)備的遺漏。
- 屬性不存在,在某些情況下,缺失值并不意味著數(shù)據(jù)有錯(cuò)誤,對(duì)一些對(duì)象來(lái)說(shuō)某些屬性值是不存在的,如未婚者的配偶姓名、兒童的固定收入等。
缺失值的影響
- 數(shù)據(jù)挖掘建模將丟失大量的有用信息。
- 數(shù)據(jù)挖掘模型所表現(xiàn)出的不確定性更加顯著,模型中蘊(yùn)含的規(guī)律更難把握。
- 包含空值的數(shù)據(jù)會(huì)使建模過(guò)程陷入混亂,導(dǎo)致不可靠的輸出。
缺失值的處理方法
最常使用的還是第三種插值補(bǔ)全缺失值的做法,這種做法又可以有多種補(bǔ)全方法。
如果樣本屬性的距離是可度量的,則使用該屬性有效值的平均值來(lái)補(bǔ)全;
如果樣本屬性的距離不可度量,則可以采用眾數(shù)或者中位數(shù)來(lái)補(bǔ)全。
對(duì)樣本進(jìn)行分類后,根據(jù)同類其他樣本該屬性的均值補(bǔ)全缺失值,當(dāng)然同第一種方法類似,如果均值不可行,可以嘗試眾數(shù)或者中位數(shù)等統(tǒng)計(jì)數(shù)據(jù)來(lái)補(bǔ)全。
利用固定的數(shù)值補(bǔ)全缺失的屬性值。
利用機(jī)器學(xué)習(xí)方法,將缺失屬性作為預(yù)測(cè)目標(biāo)進(jìn)行預(yù)測(cè),具體為將樣本根據(jù)是否缺少該屬性分為訓(xùn)練集和測(cè)試集,然后采用如回歸、決策樹(shù)等機(jī)器學(xué)習(xí)算法訓(xùn)練模型,再利用訓(xùn)練得到的模型預(yù)測(cè)測(cè)試集中樣本的該屬性的數(shù)值。
這個(gè)方法根本的缺陷是如果其他屬性和缺失屬性無(wú)關(guān),則預(yù)測(cè)的結(jié)果毫無(wú)意義;但是若預(yù)測(cè)結(jié)果相當(dāng)準(zhǔn)確,則說(shuō)明這個(gè)缺失屬性是沒(méi)必要納入數(shù)據(jù)集中的;一般的情況是介于兩者之間。
將屬性映射到高維空間,采用獨(dú)熱碼編碼(one-hot)技術(shù)。將包含 K 個(gè)離散取值范圍的屬性值擴(kuò)展為 K+1 個(gè)屬性值,若該屬性值缺失,則擴(kuò)展后的第 K+1 個(gè)屬性值置為 1。
這種做法是最精確的做法,保留了所有的信息,也未添加任何額外信息,若預(yù)處理時(shí)把所有的變量都這樣處理,會(huì)大大增加數(shù)據(jù)的維度。這樣做的好處是完整保留了原始數(shù)據(jù)的全部信息、不用考慮缺失值;缺點(diǎn)是計(jì)算量大大提升,且只有在樣本量非常大的時(shí)候效果才好。
多重插補(bǔ)認(rèn)為待插補(bǔ)的值是隨機(jī)的,實(shí)踐上通常是估計(jì)出待插補(bǔ)的值,再加上不同的噪聲,形成多組可選插補(bǔ)值,根據(jù)某種選擇依據(jù),選取最合適的插補(bǔ)值。
壓縮感知通過(guò)利用信號(hào)本身所具有的稀疏性,從部分觀測(cè)樣本中回復(fù)原信號(hào)。壓縮感知分為感知測(cè)量和重構(gòu)恢復(fù)兩個(gè)階段。
-
感知測(cè)量:此階段對(duì)原始信號(hào)進(jìn)行處理以獲得稀疏樣本表示。常用的手段是傅里葉變換、小波變換、字典學(xué)習(xí)、稀疏編碼等
-
重構(gòu)恢復(fù):此階段基于稀疏性從少量觀測(cè)中恢復(fù)原信號(hào)。這是壓縮感知的核心
矩陣補(bǔ)全可以查看知乎上的問(wèn)題–矩陣補(bǔ)全(matrix completion)的經(jīng)典算法有哪些?目前比較流行的算法是什么?
除了手動(dòng)補(bǔ)全方法,其他插值補(bǔ)全方法只是將未知值補(bǔ)以我們的主觀估計(jì)值,不一定完全符合客觀事實(shí)。在許多情況下,根據(jù)對(duì)所在領(lǐng)域的理解,手動(dòng)對(duì)缺失值進(jìn)行插補(bǔ)的效果會(huì)更好。但這種方法需要對(duì)問(wèn)題領(lǐng)域有很高的認(rèn)識(shí)和理解,要求比較高,如果缺失數(shù)據(jù)較多,會(huì)比較費(fèi)時(shí)費(fèi)力。
尋找與該樣本最接近的樣本,使用其該屬性數(shù)值來(lái)補(bǔ)全。
3.1.2 圖片數(shù)據(jù)擴(kuò)充
對(duì)于圖片數(shù)據(jù),最常遇到的問(wèn)題就是訓(xùn)練數(shù)據(jù)不足的問(wèn)題。
一個(gè)模型所能獲取的信息一般來(lái)源于兩個(gè)方面,一個(gè)是訓(xùn)練數(shù)據(jù)包含的信息;另一個(gè)就是模型的形成過(guò)程中(包括構(gòu)造、學(xué)習(xí)、推理等),人們提供的先驗(yàn)信息。
而如果訓(xùn)練數(shù)據(jù)不足,那么模型可以獲取的信息就比較少,需要提供更多的先驗(yàn)信息保證模型的效果。先驗(yàn)信息一般作用來(lái)兩個(gè)方面,一是模型,如采用特定的內(nèi)在結(jié)構(gòu)(比如深度學(xué)習(xí)的不同網(wǎng)絡(luò)結(jié)構(gòu))、條件假設(shè)或添加其他約束條件(深度學(xué)習(xí)中體現(xiàn)在損失函數(shù)加入不同正則項(xiàng));第二就是數(shù)據(jù),即根據(jù)先驗(yàn)知識(shí)來(lái)調(diào)整、變換或者拓展訓(xùn)練數(shù)據(jù),讓其展現(xiàn)出更多的、更有用的信息。
對(duì)于圖像數(shù)據(jù),如果訓(xùn)練數(shù)據(jù)不足,導(dǎo)致的后果就是模型過(guò)擬合問(wèn)題,即模型在訓(xùn)練樣本上的效果不錯(cuò),但在測(cè)試集上的泛化效果很糟糕。過(guò)擬合的解決方法可以分為兩類:
- 一定程度內(nèi)的隨機(jī)旋轉(zhuǎn)、平移、縮放、裁剪、填充、左右翻轉(zhuǎn)等,這些變換對(duì)應(yīng)著同一個(gè)目標(biāo)在不同角度的觀察結(jié)果;
- 對(duì)圖像中的元素添加噪聲擾動(dòng),如椒鹽噪聲、高斯白噪聲等;
- 顏色變換。比如在圖像的 RGB 顏色空間進(jìn)行主成分分析,得到 3 個(gè)主成分的特征向量p1,p2,p3以及對(duì)應(yīng)的特征值λ1,λ2,λ3,然后在每個(gè)像素的 RGB 值上添加增量[p1,p2,p3]*[a1λ1,a2λ2,a3λ3],其中a1,a2,a3都是均值為 0, 方差較小的高斯分布隨機(jī)數(shù);
- 改變圖像的亮度、清晰度、對(duì)比度、銳度等。
上述數(shù)據(jù)擴(kuò)充方法是在圖像空間進(jìn)行變換的,也可以選擇先對(duì)圖像進(jìn)行特征提取,然后在圖像的特征空間進(jìn)行變換,利用一些通用的數(shù)據(jù)擴(kuò)充或者上采樣方法,例如 SMOTE(Synthetic Minority Over-sampling Technique)。
此外,最近幾年一直比較熱門(mén)的 GAN,生成對(duì)抗網(wǎng)絡(luò),它的其中一個(gè)應(yīng)用就是生成圖片數(shù)據(jù),也可以應(yīng)用于數(shù)據(jù)擴(kuò)充。
最后,還有一種方法可以不需要擴(kuò)充數(shù)據(jù),利用遷移學(xué)習(xí)的做法,也是如今非常常用的一個(gè)方法,微調(diào)(Finetuning),即借用在大數(shù)據(jù)集(如 ImageNet)上預(yù)訓(xùn)練好的模型,然后在自己的小數(shù)據(jù)集上進(jìn)行微調(diào),這是一種簡(jiǎn)單的遷移學(xué)習(xí),同時(shí)也可以快速訓(xùn)練一個(gè)效果不錯(cuò)的針對(duì)目標(biāo)類別的新模型。
小結(jié)
數(shù)據(jù)特征缺失和圖片數(shù)據(jù)的不足都是機(jī)器學(xué)習(xí)任務(wù)中非常常見(jiàn)的問(wèn)題,因此需要好好掌握如何處理缺失值,以及擴(kuò)充圖片數(shù)據(jù)的方法。
參考:
- 《百面機(jī)器學(xué)習(xí)》第一章 特征工程
- 機(jī)器學(xué)習(xí)之特征工程
- [數(shù)據(jù)預(yù)處理(方法總結(jié))]
- Python數(shù)據(jù)分析(三)——數(shù)據(jù)預(yù)處理
- Python數(shù)據(jù)分析(二)——數(shù)據(jù)探索
- 【Python數(shù)據(jù)分析基礎(chǔ)】: 異常值檢測(cè)和處理
歡迎關(guān)注我的微信公眾號(hào)–機(jī)器學(xué)習(xí)與計(jì)算機(jī)視覺(jué),或者掃描下方的二維碼,大家一起交流,學(xué)習(xí)和進(jìn)步!
往期精彩推薦
學(xué)習(xí)筆記
- 機(jī)器學(xué)習(xí)入門(mén)系列(1)–機(jī)器學(xué)習(xí)概覽
- [GAN學(xué)習(xí)系列] 初識(shí)GAN
- [GAN學(xué)習(xí)系列2] GAN的起源
- [GAN學(xué)習(xí)系列3]采用深度學(xué)習(xí)和 TensorFlow 實(shí)現(xiàn)圖片修復(fù)(上)
數(shù)學(xué)學(xué)習(xí)筆記
- 程序員的數(shù)學(xué)筆記1–進(jìn)制轉(zhuǎn)換
- 程序員的數(shù)學(xué)筆記2–余數(shù)
- 程序員的數(shù)學(xué)筆記3–迭代法
Github項(xiàng)目 & 資源教程推薦
- [Github 項(xiàng)目推薦] 一個(gè)更好閱讀和查找論文的網(wǎng)站
- [資源分享] TensorFlow 官方中文版教程來(lái)了
- 必讀的AI和深度學(xué)習(xí)博客
- [教程]一份簡(jiǎn)單易懂的 TensorFlow 教程
- [資源]推薦一些Python書(shū)籍和教程,入門(mén)和進(jìn)階的都有!
總結(jié)
以上是生活随笔為你收集整理的特征工程之数据预处理(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序员的职业选择:打工者、独立开发者、创
- 下一篇: 程序员公司选择:创业公司、中等规模公司、