機(jī)器學(xué)習(xí)之特征工程深度解析 原創(chuàng)
機(jī)器學(xué)習(xí)不僅要求算法找出優(yōu)質(zhì)模式,提供算法所真正需要的數(shù)據(jù)類型也非常重要。本文將探索機(jī)器學(xué)習(xí)中的特征工程相關(guān)算法,借助這些算法可以創(chuàng)建新的特征并對(duì)其進(jìn)行處理,以優(yōu)化機(jī)器學(xué)習(xí)模型。
引言
你一定聽(tīng)說(shuō)過(guò)“garbage in, garbage out(輸入的垃圾數(shù)據(jù)會(huì)導(dǎo)致輸出的垃圾結(jié)果)”這句諺語(yǔ),這句話在訓(xùn)練機(jī)器學(xué)習(xí)模型時(shí)確實(shí)適用。如果我們使用不相關(guān)的數(shù)據(jù)來(lái)訓(xùn)練機(jī)器學(xué)習(xí)模型,那么即使是最好的機(jī)器學(xué)習(xí)算法也無(wú)濟(jì)于事。相反,即使使用簡(jiǎn)單的機(jī)器學(xué)習(xí)算法,使用精心設(shè)計(jì)的有意義的特征也可以獲得卓越的性能。那么,我們?nèi)绾尾拍軇?chuàng)建這些有意義的特征,從而最大限度地提高我們模型的性能呢?答案是特征工程。
當(dāng)使用傳統(tǒng)的機(jī)器學(xué)習(xí)算法,如回歸、決策樹(shù)、支持向量機(jī)和其他需要數(shù)字輸入的算法時(shí),特征工程尤其重要。然而,創(chuàng)建這些數(shù)字輸入可不僅僅是關(guān)于數(shù)據(jù)技能的問(wèn)題。這是一個(gè)需要?jiǎng)?chuàng)造力和領(lǐng)域知識(shí)的過(guò)程,而且它擁有與科學(xué)一樣多的藝術(shù)特征。
從廣義上講,我們可以將特征工程分為兩個(gè)部分:1)創(chuàng)建新的特征;2)處理這些特征,使其在所使用的機(jī)器學(xué)習(xí)算法中進(jìn)一步優(yōu)化。在本文中,我們將討論特征工程的這兩個(gè)組成部分相關(guān)的跨區(qū)段、結(jié)構(gòu)化、非NLP數(shù)據(jù)集等內(nèi)容。
創(chuàng)建新特征
原始數(shù)據(jù)收集可能會(huì)讓人筋疲力盡,而且在這項(xiàng)任務(wù)結(jié)束時(shí),我們可能太累了,以至于無(wú)法投入更多的時(shí)間和精力來(lái)創(chuàng)建其他特征。但這正是我們必須抵制直接投入到模型訓(xùn)練的誘惑的地方。我向你保證,這種做法是非常有價(jià)值的!
在這個(gè)轉(zhuǎn)折點(diǎn)上,我們應(yīng)該停下來(lái)問(wèn)問(wèn)自己,“如果我根據(jù)我的領(lǐng)域知識(shí)手動(dòng)進(jìn)行預(yù)測(cè),哪些特征會(huì)幫助我做好工作呢?”問(wèn)這個(gè)問(wèn)題可能會(huì)為我們的模型創(chuàng)造新的有意義的特征開(kāi)辟可能性;否則,我們的模型可能會(huì)錯(cuò)過(guò)這些特征。一旦我們考慮了我們可能從中受益的其他特征,那么我們就可以利用以下技術(shù)從原始數(shù)據(jù)中創(chuàng)建新的特征。
1.聚合
顧名思義,這種技術(shù)可以幫助我們組合多個(gè)數(shù)據(jù)點(diǎn),以創(chuàng)建更全面的視圖。我們通常使用計(jì)數(shù)、求和、平均值、最小值、最大值、百分位數(shù)、標(biāo)準(zhǔn)差和變異系數(shù)等標(biāo)準(zhǔn)函數(shù)對(duì)連續(xù)數(shù)字?jǐn)?shù)據(jù)進(jìn)行聚合運(yùn)算。每個(gè)函數(shù)可以捕獲不同的信息元素,使用的最佳函數(shù)取決于具體的使用場(chǎng)景。通常,我們可以在特定的時(shí)間或事件窗口上應(yīng)用聚合技術(shù),這在特定問(wèn)題的上下文中是極其有意義的。
讓我們舉一個(gè)例子,我們想預(yù)測(cè)給定的信用卡交易是否是欺詐性的。對(duì)于這個(gè)使用場(chǎng)景,我們無(wú)疑可以使用特定于交易的特征,但除了這些特征之外,我們還可以從創(chuàng)建聚合的客戶級(jí)特征中受益,如:
- 客戶在過(guò)去五年中成為欺詐受害者的次數(shù):一個(gè)客戶以前曾多次成為欺詐受害者,更有可能再次成為欺詐受害者。因此,使用這種聚合的客戶級(jí)視圖可以提供適當(dāng)?shù)念A(yù)測(cè)信號(hào)。
- 最后五筆交易金額的中位數(shù):通常,當(dāng)信用卡受損時(shí),欺詐者可能會(huì)嘗試進(jìn)行多次小數(shù)額交易來(lái)測(cè)試信用卡?,F(xiàn)在,小數(shù)額交易非常常見(jiàn),可能不是欺詐的跡象,但如果我們?cè)诙虝r(shí)間內(nèi)連續(xù)看到許多此類交易,這可能表明信用卡受損。對(duì)于這樣的情況,我們可以考慮創(chuàng)建一個(gè)將最后幾筆交易金額考慮在內(nèi)的聚合特征。
上圖顯示了單個(gè)交易金額情況。我們可以看到,孤立的小數(shù)額交易并不罕見(jiàn),也不表明存在欺詐;然而,連續(xù)多次小數(shù)額交易卻是欺詐的跡象。下圖顯示了最后五筆交易金額的滾動(dòng)中位數(shù),只有在存在多筆連續(xù)小數(shù)額交易的模式時(shí),才會(huì)返回低值。在這種情況下,底部聚合視圖可以使用交易金額作為特征來(lái)區(qū)分合法的小數(shù)額交易和存在欺詐的小數(shù)額交易事務(wù)。
2.差異和比率
在許多類型的問(wèn)題中,集合模式的變化對(duì)于預(yù)測(cè)或異常檢測(cè)是非常有價(jià)值的信號(hào)。其中,差異和比率是表示數(shù)字特征變化的有效技術(shù)。就像聚合一樣,我們也可以在問(wèn)題的上下文中在有意義的時(shí)間窗口內(nèi)應(yīng)用這些技術(shù)。
示例:
- 過(guò)去1小時(shí)內(nèi)新商戶交易的百分比與過(guò)去30天內(nèi)新商戶成交的百分比之間的差異:快速連續(xù)的高百分比新商戶交易本身可能表明存在欺詐風(fēng)險(xiǎn),但是,當(dāng)我們看到這種行為與客戶的歷史行為相比發(fā)生了變化時(shí),這將成為一個(gè)更加明顯的信號(hào)。
- 當(dāng)天的交易次數(shù)與最近30天的每日交易次數(shù)中位數(shù)的比率:當(dāng)信用卡被破壞時(shí),它可能會(huì)在較短的時(shí)間窗口內(nèi)發(fā)生許多交易,這可能不符合過(guò)去的信用卡使用情況。當(dāng)前一天的交易計(jì)數(shù)與最后30天的中間每日的交易計(jì)數(shù)的比率顯著提高可能意味著存在欺詐性使用模式。
從上表中我們可以看出,給定日期的高交易計(jì)數(shù)本身可能并不意味著存在異常交易行為。相反,基于比率的特征可以促進(jìn)客戶當(dāng)前交易行為與其過(guò)去交易行為之間的比較,從而可以更有效地捕捉異常。
3.年齡編碼
我們可以使用年齡計(jì)算技術(shù),通過(guò)獲取兩個(gè)時(shí)間戳或日期之間的差異,將日期或時(shí)間戳特征轉(zhuǎn)換為數(shù)字特征。如果與特征值相關(guān)聯(lián)的保有期可以是用于預(yù)測(cè)的有價(jià)值的信號(hào),則我們也可以使用該技術(shù)將某些非數(shù)字特征轉(zhuǎn)換為有意義的數(shù)字特征。
示例:
- 信用卡上次使用后的天數(shù):長(zhǎng)期處于休眠狀態(tài)的信用卡上的突然交易可能與高欺詐風(fēng)險(xiǎn)有關(guān)。我們可以通過(guò)計(jì)算自上次使用信用卡以來(lái)的日期與當(dāng)前交易日期之間的時(shí)間差來(lái)計(jì)算這一特征。
- 自客戶的設(shè)備首次使用以來(lái)的天數(shù):如果我們看到來(lái)自新設(shè)備的交易,它可能比客戶使用時(shí)間更長(zhǎng)的設(shè)備進(jìn)行的交易風(fēng)險(xiǎn)更大。我們可以創(chuàng)建一個(gè)特征,將設(shè)備的使用年限指示為客戶首次使用該設(shè)備的日期與當(dāng)前交易日期之間的差異。
上表顯示了一個(gè)年齡編碼的示例。在這里,我們創(chuàng)建了一個(gè)新的數(shù)字類型的特征“Days since transaction device first used(自交易設(shè)備首次使用以來(lái)的天數(shù))”,作為客戶設(shè)備首次使用日期和當(dāng)前交易日期之間的天數(shù)差。
4.指示器編碼
指示器或布爾特征具有二進(jìn)制值{1,0}或{True,F(xiàn)alse}。指示器特征是一種非常常見(jiàn)的數(shù)據(jù)類型,用于表示各種類型的二進(jìn)制信息。在某些情況下,我們可能已經(jīng)具有數(shù)字形式的二進(jìn)制特征,而在其他情況下,它們可能具有非數(shù)字值。要使用非數(shù)字二進(jìn)制特征進(jìn)行模型訓(xùn)練,我們所要做的就是將它們映射到數(shù)字值。
除了這些常見(jiàn)的情況和指示器特征的使用之外,我們還可以利用指示器編碼作為一種工具來(lái)表示非數(shù)字?jǐn)?shù)據(jù)點(diǎn)之間的比較。這個(gè)屬性使它特別強(qiáng)大,因?yàn)樗鼮槲覀儨y(cè)量非數(shù)字特征的變化創(chuàng)造了一種方式。
示例:
- 最近登錄事件期間驗(yàn)證失?。鹤罱卿浭∈录赡芘c更高的欺詐交易風(fēng)險(xiǎn)有關(guān)。在這種情況下,原始數(shù)據(jù)可能具有特征值“Yes”或“No”;我們?cè)谶@里所要做的就是將這些值映射到1或0。
- 與上次交易相比,國(guó)家的位置發(fā)生了變化:國(guó)家位置的變化可能表明信用卡受損。在這里,創(chuàng)建一個(gè)表示非數(shù)字特征為“國(guó)家位置”變化的指示器特征將捕獲此國(guó)家變化信息。
上表顯示了一個(gè)指示器編碼的示例。在這里,我們通過(guò)將客戶的當(dāng)前交易國(guó)家與他們以前的交易國(guó)家進(jìn)行比較,創(chuàng)建了一個(gè)新的數(shù)字特征“Country change from previous transaction(從上次交易以來(lái)的國(guó)家變化)”。
5.獨(dú)熱編碼
如果我們的特征數(shù)據(jù)是分類形式的,無(wú)論是數(shù)字的還是非數(shù)字的都可以應(yīng)用獨(dú)熱編碼技術(shù)。其中,數(shù)字分類形式是指包含非連續(xù)或非測(cè)量數(shù)據(jù)的數(shù)字?jǐn)?shù)據(jù),如地理區(qū)域代碼、商店ID和其他此類數(shù)據(jù)。獨(dú)熱編碼技術(shù)可以將這些特征轉(zhuǎn)換為一組指示器特征,我們可以在訓(xùn)練機(jī)器學(xué)習(xí)模型時(shí)使用這些指示器特征。對(duì)分類特征應(yīng)用獨(dú)熱編碼將為該分類變量中的每個(gè)類別創(chuàng)建一個(gè)新的二進(jìn)制特征。由于新特征的數(shù)量隨著類別數(shù)量的增加而增加,因此該技術(shù)適用于類別數(shù)量較少的特征,尤其是當(dāng)我們有較小的數(shù)據(jù)集時(shí)。其中一條標(biāo)準(zhǔn)經(jīng)驗(yàn)法則建議,如果我們每個(gè)類別至少有十條記錄,就應(yīng)該應(yīng)用這項(xiàng)技術(shù)。
示例:
- 交易性購(gòu)買類別:某些類型的購(gòu)買類別可能與較高的欺詐風(fēng)險(xiǎn)相關(guān)。由于購(gòu)買類別名稱是文本數(shù)據(jù),我們可以應(yīng)用獨(dú)熱編碼技術(shù)將此特征轉(zhuǎn)換為一組數(shù)字指示器特征。如果有十個(gè)不同的采購(gòu)類別名稱,獨(dú)熱編碼將創(chuàng)建十個(gè)新的指示器特征,每個(gè)采購(gòu)類別名稱對(duì)應(yīng)一個(gè)指示器特征。
- 設(shè)備類型:在線交易可以通過(guò)幾種不同類型的設(shè)備進(jìn)行,如iPhone、Android手機(jī)、Windows PC和Mac。其中一些設(shè)備更容易受到惡意軟件的影響,或者欺詐者很容易訪問(wèn),因此可能與更高的欺詐風(fēng)險(xiǎn)有關(guān)。要以數(shù)字形式包括設(shè)備類型信息,我們可以對(duì)設(shè)備類型應(yīng)用獨(dú)熱編碼,這將為每個(gè)設(shè)備類型創(chuàng)建一個(gè)新的指示器特征。
上表顯示了獨(dú)熱編碼的示例。在這里,我們通過(guò)將獨(dú)熱編碼技術(shù)應(yīng)用于非數(shù)字分類特征“Device Type(設(shè)備類型)”,創(chuàng)建了一組新的數(shù)字指示器特征。
6.目標(biāo)編碼
目標(biāo)編碼技術(shù)適用于應(yīng)用獨(dú)熱編碼的相同類型的特征;但是,與獨(dú)熱編碼器相比,這種技術(shù)存在一些優(yōu)點(diǎn)和缺點(diǎn)。當(dāng)類別的數(shù)量很大時(shí)(基數(shù)很高),使用獨(dú)熱編碼將不樂(lè)觀地增加特征的數(shù)量,這可能導(dǎo)致模型過(guò)擬合。在這種情況下,目標(biāo)編碼可能是一種有效的技術(shù),但前提是我們正在研究監(jiān)督學(xué)習(xí)問(wèn)題。這是一種將每個(gè)類別值映射到該類別目標(biāo)的預(yù)期值的技術(shù)。如果處理具有連續(xù)目標(biāo)的回歸問(wèn)題,那么此計(jì)算將類別映射到該類別的平均目標(biāo)值。在二進(jìn)制目標(biāo)的分類問(wèn)題的情況下,目標(biāo)編碼將把類別映射到該類別的正事件概率。與獨(dú)熱編碼不同,這種技術(shù)的優(yōu)點(diǎn)是不增加特征的數(shù)量。但是,這種技術(shù)也存在缺點(diǎn),就是它只能應(yīng)用于監(jiān)督學(xué)習(xí)問(wèn)題。應(yīng)用這項(xiàng)技術(shù)也可能使模型容易受到過(guò)擬合的影響,特別是在某些類別的觀測(cè)數(shù)量較低的情況下。
示例:
- 商戶名稱:針對(duì)某些商戶的交易可能存在欺詐行為??赡苡谐汕先f(wàn)這樣的商家,每個(gè)商家都有不同的欺詐交易風(fēng)險(xiǎn)。對(duì)包含商家名稱的特征應(yīng)用獨(dú)熱編碼可能會(huì)引入數(shù)千個(gè)新特征,這是不可取的。在這種情況下,目標(biāo)編碼可以在不增加特征數(shù)量的情況下幫助捕獲商家的欺詐風(fēng)險(xiǎn)信息。
- 交易郵政編碼:就像商家一樣,在不同郵政編碼中進(jìn)行的交易可能代表不同的欺詐風(fēng)險(xiǎn)水平。盡管郵政編碼中存在數(shù)值,但它們不是連續(xù)的測(cè)量變量,不應(yīng)按原樣在模型中使用。相反,我們可以通過(guò)應(yīng)用目標(biāo)編碼等技術(shù)來(lái)合并與每個(gè)郵政編碼相關(guān)的欺詐風(fēng)險(xiǎn)信息。
上表給出了目標(biāo)編碼的示例。在這里,我們通過(guò)將目標(biāo)編碼技術(shù)應(yīng)用于非數(shù)字分類特征“Merchant Name(商戶姓名)”,創(chuàng)建了一個(gè)新的數(shù)字特征“Merchant Name target encoding(商戶姓名目標(biāo)編碼)”。顧名思義,這種技術(shù)依賴于目標(biāo)值來(lái)計(jì)算新的特征值。
一旦我們從原始數(shù)據(jù)中創(chuàng)建了新特性,下一步就是對(duì)它們進(jìn)行處理,以獲得最佳的模型性能。我們通過(guò)下一節(jié)中討論的特征處理來(lái)實(shí)現(xiàn)這一點(diǎn)。
特征處理
特征處理是指一系列數(shù)據(jù)處理步驟,以確保機(jī)器學(xué)習(xí)模型符合預(yù)期的數(shù)據(jù)。雖然在使用某些機(jī)器學(xué)習(xí)算法時(shí)需要其中一些處理步驟,但其他步驟確保我們?cè)谒紤]的特征和機(jī)器學(xué)習(xí)算法之間達(dá)成良好的一致性。在本節(jié)中,讓我們討論一些常見(jiàn)的特征處理步驟以及為什么需要它們。
1.異常值處理
一些機(jī)器學(xué)習(xí)算法,特別是回歸模型等參數(shù)算法,會(huì)受到異常值的嚴(yán)重影響。這些機(jī)器學(xué)習(xí)算法試圖適應(yīng)異常值,嚴(yán)重影響模型參數(shù)并損害整體性能。要處理異常值,我們必須首先識(shí)別它們。我們可以通過(guò)應(yīng)用某些經(jīng)驗(yàn)法則來(lái)檢測(cè)特定特征的異常值,例如絕對(duì)值大于平均值加三個(gè)標(biāo)準(zhǔn)差,或者一個(gè)值在最接近的須值之外(最接近的四分位數(shù)加四分位數(shù)間距值的1.5倍)。一旦我們確定了特定特征中的異常值,我們就可以使用以下一些技術(shù)來(lái)處理異常值:
- 刪除:我們可以刪除至少有一個(gè)異常值的觀測(cè)值。如果我們的數(shù)據(jù)在不同特征之間存在太多的異常值,我們可能會(huì)失去許多觀測(cè)結(jié)果。
- 替換:我們可以用平均值替換異常值,例如給定特征的平均值、中值和模數(shù)。
- 特征轉(zhuǎn)換或標(biāo)準(zhǔn)化:我們可以使用對(duì)數(shù)轉(zhuǎn)換或特征標(biāo)準(zhǔn)化(如下文中所述的)來(lái)減少異常值的大小。
- 封頂和截底:我們可以將超出某個(gè)值的異常值替換為該值,例如,將第99個(gè)百分位數(shù)以上的所有值替換為第99個(gè)百分點(diǎn)值,將第1個(gè)百分位以下的所有值都替換為第1個(gè)百分點(diǎn)值。
上圖顯示了檢測(cè)單變量異常值的兩種常用技術(shù)。我們可以看到,這兩種技術(shù)可以產(chǎn)生不同的異常值集。如果數(shù)據(jù)遵循正態(tài)分布,則應(yīng)使用均值+3的標(biāo)準(zhǔn)差技術(shù)。注意,基于箱形圖的技術(shù)一般來(lái)說(shuō)更通用些,可以應(yīng)用于任何分布的數(shù)據(jù)。
注意,有一些技術(shù)可以檢測(cè)多變量異常值(關(guān)于多個(gè)特征的異常值)的觀測(cè)值,但它們更復(fù)雜,通常不會(huì)在機(jī)器學(xué)習(xí)模型訓(xùn)練方面增加太多的價(jià)值。還要注意的是,在使用大多數(shù)非參數(shù)機(jī)器學(xué)習(xí)模型(如支持向量機(jī))和基于樹(shù)的算法(如決策樹(shù)、隨機(jī)森林和XGBoost)時(shí),不需要考慮異常值。
2.缺失值處理
缺失數(shù)據(jù)在真實(shí)世界的數(shù)據(jù)集中非常常見(jiàn)。除了XGBoost這樣的少數(shù)算法外,大多數(shù)傳統(tǒng)的機(jī)器學(xué)習(xí)算法都不允許在訓(xùn)練數(shù)據(jù)集中丟失值。因此,修復(fù)缺失值是機(jī)器學(xué)習(xí)建模中的常規(guī)任務(wù)之一。目前,已經(jīng)存在幾種技術(shù)可以處理缺失的值;然而,在實(shí)現(xiàn)任何技術(shù)之前,重要的是要了解丟失數(shù)據(jù)的原因,或者至少要知道數(shù)據(jù)是否隨機(jī)丟失。
如果數(shù)據(jù)不是隨機(jī)丟失的,這意味著某些亞組更有可能存在丟失的數(shù)據(jù),那么輸入這些數(shù)據(jù)的值可能很困難,尤其是在幾乎沒(méi)有可用數(shù)據(jù)的情況下。如果數(shù)據(jù)隨機(jī)丟失,我們可以使用接下來(lái)描述的一些常見(jiàn)處理技術(shù)。它們都有各自的優(yōu)缺點(diǎn),但是由我們自己來(lái)決定什么方法最適合我們的使用場(chǎng)景。
- 刪除觀測(cè)值:我們可以刪除至少有一個(gè)缺失特征值的觀測(cè)值。然而,如果我們的數(shù)據(jù)在不同的特征中有太多的缺失值,那么我們最終可能會(huì)失去許多觀測(cè)結(jié)果。
- 刪除特征:如果一個(gè)特征存在大量缺失值,我們可以選擇把這一特征徹底刪除掉。
- 用平均值替換:我們可以使用平均值,如給定特征的平均值、中值和模值來(lái)替換缺失的值。這種方法實(shí)施起來(lái)很簡(jiǎn)單,但可能無(wú)法為所有類型的觀測(cè)提供良好的估計(jì)。例如,高欺詐風(fēng)險(xiǎn)交易可能具有與低欺詐風(fēng)險(xiǎn)交易金額不同的平均交易金額,并且使用總體平均值來(lái)代替缺失的高欺詐風(fēng)險(xiǎn)的交易金額可能不是一個(gè)好的替換方案。
- 最大似然、多重輸入、K個(gè)最近鄰:這些是更復(fù)雜的方法,考慮了與數(shù)據(jù)集中其他特征的關(guān)系,可以提供比總體平均值更準(zhǔn)確的估計(jì)。然而,實(shí)現(xiàn)這些方法卻需要額外的建?;蛩惴▽?shí)現(xiàn)。
上表顯示了缺失值處理中常用技術(shù)的應(yīng)用。
3.縮放
通常,我們?cè)跈C(jī)器學(xué)習(xí)模型中使用的特征具有不同的范圍。如果我們?cè)诓豢s放的情況下使用它們,則具有大絕對(duì)值的特征將主導(dǎo)預(yù)測(cè)結(jié)果。相反,為了給每個(gè)特征一個(gè)公平的機(jī)會(huì)來(lái)為預(yù)測(cè)結(jié)果做出貢獻(xiàn),我們必須將所有特征放在同一尺度上。兩種最常見(jiàn)的縮放技術(shù)是:
- 規(guī)一化:此縮放技術(shù)將特征值限制在0和1之間。為了應(yīng)用歸一化,我們減去最小特征值,并將其除以該特征的范圍(最小值和最大值之間的差)。如果我們的一些特征有尖銳的偏斜或有一些極端的異常值,那么歸一化可能不是一種好的技術(shù)。
- 標(biāo)準(zhǔn)化:該技術(shù)將特征數(shù)據(jù)分布轉(zhuǎn)換為標(biāo)準(zhǔn)正態(tài)分布。我們可以通過(guò)減去平均值并除以標(biāo)準(zhǔn)差來(lái)實(shí)現(xiàn)這項(xiàng)技術(shù)。如果特征具有尖銳的偏斜或一些極端的異常值,則通常優(yōu)選這種技術(shù)。
請(qǐng)注意,基于樹(shù)的算法,如決策樹(shù)、隨機(jī)森林、XGBoost和其他算法,可以處理未縮放的數(shù)據(jù),并且在使用這些算法時(shí)不需要縮放。
上表顯示了兩種常用特征縮放技術(shù)的應(yīng)用情況。
上圖顯示了原始、標(biāo)準(zhǔn)化和標(biāo)準(zhǔn)化特征值之間的比例差異。正如我們所看到的,縮放不會(huì)影響數(shù)據(jù)分布的形狀。
4.降維
今天,我們擁有大量的數(shù)據(jù),我們可以構(gòu)建大量的特征集合來(lái)訓(xùn)練我們的模型。對(duì)于大多數(shù)算法來(lái)說(shuō),擁有更多的特征是好的,因?yàn)檫@意味著將提供更多的選項(xiàng)來(lái)提高模型性能。然而,并非所有算法都是如此?;诰嚯x度量的算法受到維數(shù)災(zāi)難——隨著特征數(shù)量的大幅增加,兩個(gè)觀測(cè)值之間的距離值變得毫無(wú)意義。因此,要使用依賴于距離度量的算法,我們應(yīng)該確保不使用大量特征。
如果我們的數(shù)據(jù)集擁有大量的特征,那么,如果我們不知道保留哪些特征和丟棄哪些特征的話,我們可以使用主成分分析(PCA)等技術(shù)。PCA技術(shù)能夠?qū)⑴f特征集轉(zhuǎn)換為新特征集。它會(huì)創(chuàng)建新的特征,使得具有最高特征值的特征捕獲來(lái)自舊特征的大部分信息。然后,我們可以只保留前幾個(gè)新特征,并丟棄其余的特征。
其他統(tǒng)計(jì)技術(shù),如關(guān)聯(lián)分析和特征選擇算法,可以用于監(jiān)督學(xué)習(xí)問(wèn)題,以減少特征的數(shù)量。然而,它們通常不會(huì)捕獲與PCA對(duì)相同數(shù)量的特征所捕獲的信息水平相同的信息。
上表顯示了主成分分析在特征降維中的應(yīng)用。正如我們所看到的,前三個(gè)特征捕獲了原始數(shù)據(jù)集中超過(guò)87%的信息。在這種情況下,我們可以選擇忽略兩個(gè)特征(f4和f5),以獲得小于13%的信息損失。要保留的特征數(shù)量和要消除的特征數(shù)量將因問(wèn)題而異,具體取決于各種因素。
5.向正態(tài)分布的轉(zhuǎn)換
這種措施是一個(gè)例外,因?yàn)樗贿m用于目標(biāo),而不適用于特征。此外,大多數(shù)機(jī)器學(xué)習(xí)算法對(duì)目標(biāo)的分布沒(méi)有任何限制,但某些算法,如線性回歸,要求目標(biāo)正態(tài)地分布。線性回歸假設(shè)所有數(shù)據(jù)點(diǎn)的誤差值對(duì)稱且集中在零附近(就像正態(tài)分布的形狀一樣),正態(tài)分布目標(biāo)變量確保滿足這一假設(shè)。
我們可以通過(guò)繪制直方圖來(lái)了解目標(biāo)的分布情況。像Shapiro-Wilk檢驗(yàn)這樣的統(tǒng)計(jì)檢驗(yàn)通過(guò)檢驗(yàn)這一假設(shè)來(lái)告訴我們正態(tài)性。如果我們的目標(biāo)不是正態(tài)分布的,我們可以嘗試各種變換,如對(duì)數(shù)變換、平方變換、平方根變換等,以檢查哪些變換使目標(biāo)分布正態(tài)。還有一種Box-Cox變換,它嘗試多個(gè)參數(shù)值,我們可以選擇一個(gè)最能將目標(biāo)的分布變換為正態(tài)的參數(shù)值。
上圖顯示了原始目標(biāo)數(shù)據(jù)的三種轉(zhuǎn)換。在這種特定情況下,我們可以看到,日志轉(zhuǎn)換最能將原始數(shù)據(jù)分布轉(zhuǎn)換為正態(tài)分布。
注意:雖然我們可以以任何順序在特征中實(shí)現(xiàn)特征處理步驟,但我們必須徹底考慮它們的應(yīng)用順序。例如,使用均值替換的缺失值處理可以在異常值檢測(cè)之前或之后實(shí)現(xiàn)。然而,用于替換的平均值可能會(huì)有所不同,這取決于我們是在異常值處理之前還是之后處理缺失值。本文中概述的特征處理序列按問(wèn)題對(duì)后續(xù)處理步驟的影響順序處理這些問(wèn)題。因此,遵循這個(gè)順序通常對(duì)解決大多數(shù)問(wèn)題是有效的。
結(jié)論
正如引言中所提到的,特征工程是機(jī)器學(xué)習(xí)的一個(gè)維度,它使我們能夠在特殊程度上控制模型的性能。為了充分利用特征工程的潛力,我們?cè)诒疚闹袑W(xué)習(xí)了各種技術(shù),這些技術(shù)可以幫助我們創(chuàng)建新的特征并對(duì)其進(jìn)行處理,以優(yōu)化機(jī)器學(xué)習(xí)模型。無(wú)論您選擇使用本文中的哪些特征工程原理和技術(shù),我們?cè)诖颂貏e強(qiáng)調(diào)的是要理解機(jī)器學(xué)習(xí)不僅僅是要求算法找出模式。也就是說(shuō),我們通過(guò)提供算法所真正需要的數(shù)據(jù)類型,最終使算法能夠有效地完成其工作。
最后,除非另有說(shuō)明;否則,本文所有圖片均由作者本人提供。
譯者介紹
朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。
原文標(biāo)題:Feature Engineering for Machine Learning,作者:Sumit Makashir
鏈接:
https://towardsdatascience.com/feature-engineering-for-machine-learning-eb2e0cff7a30。
