通常,在data science中,預處理資料有乙個很關鍵的步驟就是資料的標準化。這裡主要引用sklearn文件中的一些東西來說明,主要把各個標準化方法的應用場景以及優缺點總結概括,以來充當筆記。
首先,我要引用我自己的文章feature preprocessing on kaggle裡面關於scaling的描述
tree-based models doesn』t depend on scaling
non-tree-based models hugely depend on scaling
在機器學習演算法的目標函式(例如svm的rbf核心或線性模型的l1和l2正則化),許多學習演算法中目標函式的基礎都是假設所有的特徵都是零均值並且具有同一階數上的方差。如果某個特徵的方差比其他特徵大幾個數量級,那麼它就會在學習演算法中佔據主導位置,導致學習器並不能像我們說期望的那樣,從其他特徵中學習。舉乙個簡單的例子,在knn中,我們需要計算待分類點與所有例項點的距離。假設每個例項點(instance)由n個features構成。如果我們選用的距離度量為歐式距離,如果資料預先沒有經過歸一化,那麼那些絕對值大的features在歐式距離計算的時候起了決定性作用,soga。
從經驗上說,歸一化是讓不同維度之間的特徵在數值上有一定比較性,可以大大提高分類器的準確性。
對於線性model來說,資料歸一化後,最優解的尋優過程明顯會變得平緩,更容易正確的收斂到最優解。
比較這兩個圖,前者是沒有經過歸一化的,在梯度下降的過程中,走的路徑更加的曲折,而第二個圖明顯路徑更加平緩,收斂速度更快。
sklearn的preprocessing
提供了可以滿足需求的歸一化方法:
標準化資料通過減去均值然後除以方差(或標準差),這種資料標準化方法經過處理後資料符合標準正態分佈,即均值為0,標準差為1,轉化函式為:
x =(x - ?)/?
適用於:如果資料的分布本身就服從正態分佈,就可以用這個方法。
通常這種方法基本可用於有outlier的情況,但是,在計算方差和均值的時候outliers仍然會影響計算。所以,在出現outliers的情況下可能會出現轉換後的數的不同feature分布完全不同的情況。
如下圖,經過standardscaler之後,橫座標與縱座標的分布出現了很大的差異,這可能是outliers造成的。
將特徵縮放至特定區間,將特徵縮放到給定的最小值和最大值之間,或者也可以將每個特徵的最大絕對值轉換至單位大小。這種方法是對原始資料的線性變換,將資料歸一到[0,1]中間。轉換函式為:
x = (x-min)/(max-min)
這種方法有個缺陷就是當有新資料加入時,可能導致max和min的變化,需要重新定義。
敲黑板,這種方法對於outlier非常敏感,因為outlier影響了max或min值,所以這種方法只適用於資料在乙個範圍內分布的情況
如果你的資料報含許多異常值,使用均值和方差縮放可能並不是乙個很好的選擇。這種情況下,你可以使用 robust_scale 以及 robustscaler 作為替代品。它們對你的資料的中心和範圍使用更有魯棒性的估計。
this scaler removes the median(中位數) and scales the data according to the quantile range(四分位距離,也就是說排除了outliers)假設我們有乙個只有乙個hidden layer的多層感知機(mlp)的分類問題。每個hidden unit表示乙個超平面,每個超平面是乙個分類邊界。引數w(weight)決定超平面的方向,引數b(bias)決定超平面離原點的距離。如果b是一些小的隨機引數(事實上,b確實被初始化為很小的隨機引數),那麼所有的超平面都幾乎穿過原點。所以,如果data沒有中心化在原點周圍,那麼這個超平面可能沒有穿過這些data,也就是說,這些data都在超平面的一側。這樣的話,區域性極小點(local minima)很有可能出現。 所以,在這種情況下,標準化到[-1, 1]比[0, 1]更好。
1、在分類、聚類演算法中,需要使用距離來度量相似性的時候、或者使用pca技術進行降維的時候,standardscaler表現更好。
2、在不涉及距離度量、協方差計算、資料不符合正太分布的時候,可以使用minmaxscaler。比如影象處理中,將rgb影象轉換為灰度影象後將其值限定在[0 255]的範圍。
原因是使用minmaxscaler,其協方差產生了倍數值的縮放,因此這種方式無法消除量綱對方差、協方差的影響,對pca分析影響巨大;同時,由於量綱的存在,使用不同的量綱、距離的計算結果會不同。
而在standardscaler中,新的資料由於對方差進行了歸一化,這時候每個維度的量綱其實已經等價了,每個維度都服從均值為0、方差1的正態分佈,在計算距離的時候,每個維度都是去量綱化的,避免了不同量綱的選取對距離計算產生的巨大影響。
預處理資料-sklearn
資料標準化/歸一化normalization
機器學習筆記:為什麼要對資料進行歸一化處理?
compare the effect of different scalers on data with outliers
資料歸一化和兩種常用的歸一化方法
should i normalize/standardize/rescale the data
機器學習資料預處理 標準化 歸一化方法
通常,在data science中,預處理資料有乙個很關鍵的步驟就是資料的標準化。這裡主要引用sklearn文件中的一些東西來說明,主要把各個標準化方法的應用場景以及優缺點總結概括,以來充當筆記。首先,我要引用我自己的文章feature preprocessing on kaggle裡面關於scal...
機器學習 資料特徵預處理歸一化和標準化
通過特定的統計方法 數學方法 將資料轉換成演算法要求的資料 數值型資料 標準縮放 歸一化 標準化 缺失值 類別行資料 one hot編碼 時間型資料 時間的切分將原始資料對映到乙個區間 0,1 特徵同等重要 歸一化處理 目的 使得某乙個特徵對最終結果不對造成更大的影響 缺點 對於異常點處理不好,容易...
sklearn資料預處理 歸一化 標準化
1 把數變為 0,1 之間的小數 主要是為了資料處理方便提出來的,把資料對映到0 1範圍之內處理,更加便捷快速。2 把有量綱表示式變為無量綱表示式 歸一化是一種簡化計算的方式,即將有量綱的表示式,經過變換,化為無量綱的表示式,成為純量。歸一化演算法有 1.線性轉換 y x minvalue maxv...