資料探勘研究與實務_資料前處理(缺值補值、類別資料編碼、特徵縮放)

準備給機器學習演算法的資料之前我們需要做一些Preprocessing,因為資料的品質、特徵的選取會影響機器學習的上限,而模型(Model)只是逼近這個上限,因此大部分80%的時間都是在對資料進行前處理。

缺值補值:
資料如果有缺值,就沒辦法在空間中表示出位置,所以需要補值。
若資料量足夠多,可以直接拋棄缺失值。
反之,則需要補值,常見補值方法有像是補固定值、平均值、眾數、中位數。
更進階的補值方法有最近插補法

類別資料編碼(有序/無序):
(PS:如果是類別的資料,就需要轉成數值才能在空間中來表示。):
因為要在數學模型空間中去表示點座標,因此所有的特徵都必須是數值。

一般而言要先辨別該資料是否為數值類,若屬於數值類,還要去判定是否有順序性。

有序:
有序的類別資料通常是直接使用數值替換,比如衣服尺寸: XL, L, M, S, XS雖然是類別的屬性
但因為有大小順序的關係,可以用10, 7 , 5, 3, 1來替換。

比如類別資料用1, 2, 3來表示第1類、第2類、第3類,會因第3類比第1類數值還要大,在空間中會造成離原點距離較遠,因此需要使用one-hot encoding(獨熱編碼)來處理。


無序:
無序的類別資料就會透過 one-hot encoding(獨熱編碼)來處理。
one-hot encoding作法就會將一個欄位拆成多個欄位,因此編號1的使用者的是(1,0,0)、編號2的使用者就是(0,1,0) 、編號3的使用者就是(0,0,1),通常只適用在類別種類少的形況下,若類別種類太多就會產生出一大堆的特徵,造成維數災難。


特徵縮放:
主要是可以幫助大部分的Model可以更快收斂並提升準確度,Model背後是用空間中的距離來做區分,假設某一個特徵過大,該Model的成本函數會被這個特徵所支配。

常見做法有像是:
正規化(Normalization),做完Normalization之後資料的範圍會介在0~1之間
公式: (X(i)-X(min))/(X(max)-X(min))。

標準化(Standardization):做完Standardization資料的平均值μ(X)會變為0, 標準差σ(X)變為1
公式: (X(i)-μ(X))/σ(X))

特徵縮放後能夠讓我們在做梯度下降時收斂更快。
少數幾個機器學習的Model不需要進行特徵縮放(Ex: 決策樹 和 隨機森林...etc)












留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header