對於數據的預處理分在思想上稱之為歸一化以及標准化(normalization)。
首先將歸一化/ 標准化,就是將數據縮放(映射)到一個范圍內,比如[0,1],[-1,1],還有在圖形處理中將顏色處理為[0,255];歸一化的好處就是不同緯度的數據在相近的取值范圍內,這樣在進行梯度下降這樣的算法的時候,曲線將會更加簡單(由原始的橢圓變成了圓形),如下圖所示:
至於縮放的原理就是量綱代表,比如身高和指甲寬度,如果統一都是厘米那么兩者不是一個數量級,如果把身高的量綱改為米,那么你會發現身高取值范圍和指甲寬度其實是相近的取值范圍,這樣避免了某個維度成為了影響學習結果的主導。
常見的歸一化/ 標准化
1. Standard Scala(z-score standardization):是標准化處理;將元素通過下面的公式進行處理:
x =(x - 𝜇)/𝜎
標准縮放只是是和數據近似服從正態分布的場景;而且數據的分布發生變化,變為相對標准的正態分布
2. MaxMinScala:其實這個是歸一化處理,MaxMinScaler並沒有改變數據分布,只是將按照某個規則進行縮放;處理公式如下:
x = (x-min)/(max-min)
適合於整體數據比較分布平和(集中),沒有離群數據,或者很少的離群數據,否則max的值的偏差將會導致計算不准確;而且MaxMinScala不穩定,如果有新加入的數據需要重新進行計算;
3. RobustScaler:是一種魯棒性特別好的算法;如果數據有很多異常值,那么使用該方法對數據進行處理;
4. 非線性化歸一:對於一些場景下數據分化非常大,那么可以使用log,指數以及反正切的方式對數據進行縮放;
log函數:x = lg(x)/lg(max);反正切函數:x = atan(x)*2/pi
總結:
1)在分類和聚類的算法中,牽涉到了距離的計算,那么,PCA降維計算的時候,Standard Scaler表現的比較好;
2)不涉及距離,協方差計算,數據不符合正態分布的場景下,可以使用MinMaxScaler來計算;
可以通過scipy庫中內容來做正態性檢驗;
什么是協方差?用來表明(X,Y)是否獨立的概念
參考:
https://www.cnblogs.com/bjwu/p/8977141.html
正態性檢驗實現
