數據縮放與轉換Data Scaling and Transformation

項目地址:https://github.com/Daya-Jin/ML_for_learner
原博客:https://daya-jin.github.io/2019/03/20/Data_Scaling/

Scaling

數據縮放的實質就是對數據進行無量綱化處理或弱化量綱,下面介紹幾種常用的縮放方式。

Linear Scale

歸一化(Normalization)通常指把數據縮放到[0,1][0,1]區間或[1,1][-1,1]區間,其轉換公式分別爲:

x=xxminxmaxxminx=x12(xmax+xmin)xmaxxmin \begin{aligned} x&=\frac{x-x_{min}}{x_{max}-x_{min}} \\ x&=\frac{x-\frac{1}{2}(x_{max}+x_{min})}{x_max-x_min} \\ \end{aligned}

標準化(Standardization)的實質就是計算Z-分數(Z-score):

x=xμσ x=\frac{x-\mu}{\sigma}

標準化後的數據服從標準正態分佈。

分別對歸一化與標準化的式子做一下變形:

xnorm=xxminxmaxxmin=1xmaxxminxxminxmaxxminxz=xμσ=1σxμσ \begin{aligned} x_{norm}&=\frac{x-x_{min}}{x_{max}-x_{min}} \\ &=\frac{1}{x_{max}-x_{min}}x-\frac{x_{min}}{x_{max}-x_{min}} \\ x_{z}&=\frac{x-\mu}{\sigma} \\ &=\frac{1}{\sigma}x-\frac{\mu}{\sigma} \\ \end{aligned}

可以看出歸一化與標準化實質上都相當於對數據的一個線性變換,只不過是線性變換的係數不同。由此可以探究兩者之間的區別。

首先不難看出歸一化的縮放係數只由數據中的兩個值決定:xminx_{min}xmaxx_{max},這一特性就決定了歸一化變換是不穩定的,它容易被異常值或離羣值影響。並且歸一化的輸出範圍固定爲[0,1][0,1]或者[1,1][-1,1]

而反觀標準化,它的線性變換系數是由數據統計量μ\muσ\sigma決定的,不難看出當σ>1\sigma>1時標準化會縮小數據的分佈,而當sigma<1sigma<1的時候會放大數據的分佈,總而言之標準化就會使得變換後的數據呈一個固定的分佈狀態。標準化並沒有對變換後的數據範圍作規定,它只保證數據整體的分佈。

Non-Linear Scale

當數據的取值跨度非常大時,考慮使用對數變換來縮小數據在量級上的差距。常用的對數變換有:

x=log2(x+1)x=log10(x+1) \begin{aligned} x=\log_{2}(x+1) \\ x=\log_{10}(x+1) \\ \end{aligned}

除了對數變換外,還可以使用開方變換:

x=xp x=\sqrt[p]{x}

Transformation

待補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章