截止目前, 信用卡交易風險檢測 我們完成了數據集的導入、數據集問題觀察。其中,問題觀察部分我們發現:
本節,小魚將帶大家完成數據預處理的部分,數據集切分,下采樣和過采樣的實現方法將在連載的下篇介紹~
前面我們提到,在開始機器學習前,我們期望平等對待每個特征,這就要求特征之間的數值大小不要差距太大,特征對結果的貢獻應該由和特征相乘的參數決定。
為此,我們經常需要對特征進行標準化、歸壹化來縮放數據集,數據樣本的分布不變,只是將它們都縮放到同壹個空間。
常見的縮放處理工具有如下三種:
數據集中的脫敏特征 V1 - V28 滿足均值為 0 ,標準差為 1,已經完成了標準化處理。接下來,我們只需要對 Amount 和 Time 進行標準化處理即可。
sklearn 為我們提供了 StandardScaler 和 RobustScaler 來對數據集進行標準化。若數據中存在很大的異常值,可能會影響特征的均值和方差,進而影響標準化結果。
在此種情況下,使用中位數和四分位數間距進行縮放會更有效。這就是 RobustScaler 的標準化邏輯。
下面是 Amount 和 Time 原始的分布直方圖:
下面是使用 StandardScaler 進行特征標準化處理的過程:
結果:
時間經過 StandardScaler 標準化處理之後,數據分布關於原點對稱,且被縮放了合理區間。
交易金額 Amount 這裏展示的不明顯,可以使用盒圖進壹步觀察:
交易金額經過 StandardScaler 標準化處理之後,大部分數據都分布在 0 附近,但仍存在較多的離群值,最大的甚至大於100。
接下來,我們使用 RobustScaler 來進行標準化處理:
繪制結果:
時間列標準化之後數據分布位於 -1 到 1 之間,並且關於原點對稱。金額的分布似乎範圍變得更廣了,離群值更大了。我們用盒圖對比壹下:
通過上述分析發現,標準化之後,金額數據的處理還是不夠理想,存在大量的離群值。為此,小魚接下來將使用歸壹化,來將所有的數據特征都縮放到 0~1 區間。
繪制歸壹化處理後的 Amount 和 Time 分布:
繪制結果:
歸壹化之後,數據都被縮放到了 0~1 的區間。