本文由 沈慶陽 所有,轉(zhuǎn)載請與作者取得聯(lián)系!
在特征工程(上),我們提到了壞數(shù)據(jù)對(duì)整個(gè)數(shù)據(jù)集的危害,那么我們有什么方法去挑選出并剔除壞數(shù)據(jù)呢?
縮放
縮放,顧名思義,將特征值從自然范圍(比如0到1000)轉(zhuǎn)換到標(biāo)準(zhǔn)范圍(0到1或-1到1)。
對(duì)于多特特征,縮放可以幫助提升梯度下降法的收斂速度;避免因訓(xùn)練時(shí)超出數(shù)值范圍(如大于float型最大值的范圍)而造成的NaN而產(chǎn)生的后果(即NaN陷阱);幫助模型為特征確定合適的權(quán)重。
除了將[min,max]以線性方式縮放到諸如[0,1]范圍之內(nèi),還有另一種縮放策略——計(jì)算每個(gè)數(shù)值的Z得分。
Z得分的計(jì)算公式如下:
縮放值=(原始數(shù)值-平均值)/標(biāo)準(zhǔn)偏差
scaled=(value-mean)/stddev
極端離群值
通過將totalRooms/population得到roomsPerPerson特征。
california_housing_dataframe["rooms_per_person"] = (
california_housing_dataframe["total_rooms"] / california_housing_dataframe["population"])
使用pyplot繪制其概率分布如下:

我們可以看到,人均房間數(shù)大部分分布在1到2之間。但是在圖的右側(cè)我們不難觀察到甚至于人均55個(gè)房間,可以說該分布具有很長的尾巴。由于右側(cè)的這些分布偏離我們的主要分布很遠(yuǎn),因此需要降低這些極端離群值對(duì)數(shù)據(jù)集的影響。
其中一個(gè)處理極端離群值的方法就是取對(duì)數(shù)。
roomsPerPerson=log((totalRooms / population) + 1)

我們可以看到在對(duì)數(shù)據(jù)進(jìn)行取對(duì)數(shù)處理過后,最遠(yuǎn)的離群值到了4左右,相比最遠(yuǎn)到55少了不少,但是仍然有很多離群值。即使用對(duì)數(shù)縮放之后仍存在部分離群值。如果這時(shí)候我們將roomsPerPerson的最大值限制為4呢?也就是所有大于4的值都會(huì)變?yōu)?。
roomsPerPerson = min(totalRooms / population, 4)

可以看到,由于將特征值最大值限制為了4,因此所有大于4的值都會(huì)變成4,因此在4的地方會(huì)出現(xiàn)激增。盡管這個(gè)地方出現(xiàn)了一個(gè)峰值,但也比原始數(shù)據(jù)有用的多。
分箱
假設(shè)我們存在一個(gè)特征值分布在從32到44范圍之內(nèi)的特征。

可以看出,跟隨緯度的變化,房價(jià)的變化不再是線性關(guān)系。為了將緯度特征變成一個(gè)實(shí)用的預(yù)測指標(biāo),則需要對(duì)緯度進(jìn)行分箱。
即對(duì)32到44之間的內(nèi)容等分為11份。如第一個(gè)箱(Bin)是從32到34,第二個(gè)箱是從34到36...
我們使用一個(gè)具有11個(gè)元素的矢量來表示,即33緯度坐落在第一個(gè)箱內(nèi),則該緯度表示為:
[1,0,0,0,0,0,0,0,0,0]
清查
有時(shí),在進(jìn)行數(shù)據(jù)集準(zhǔn)備的時(shí)候,我們獲取的數(shù)據(jù)往往存在不可靠的情況。其具體表現(xiàn)有如下幾種:
不良標(biāo)簽:將鋼筆誤標(biāo)記為茶杯
重復(fù)樣本:一個(gè)樣本存在兩次(同時(shí)存在訓(xùn)練集和驗(yàn)證集/測試集中,相當(dāng)致命)
不良特征值:特征值錯(cuò)誤,如將房價(jià)錯(cuò)誤地多大了一個(gè)0
遺漏值:如某個(gè)房屋的價(jià)格忘記輸入了,導(dǎo)致該樣本的特征值為NaN
在同上面的一些對(duì)數(shù)據(jù)的處理過程中,直方圖是可視化數(shù)據(jù)集中的數(shù)據(jù)的一種很直觀的方法。同時(shí),了解數(shù)據(jù)的最大值最小值、均值和中間值和標(biāo)準(zhǔn)偏差(方差)都是很有作用的。
最后請記住,良好的機(jī)器學(xué)習(xí)依賴于良好的數(shù)據(jù)。
覺得寫的不錯(cuò)的朋友可以點(diǎn)一個(gè) 喜歡? ~
謝謝你的支持!