1. 程式人生 > >特徵縮放和標準化

特徵縮放和標準化

首先簡單講一下:其實我覺得這兩個本質上是一樣的 看了好多部落格和論壇 發現每個人講的都不一樣,我直接去英文維基百科 特徵縮放上查了Feature scaling 和 英文維基百科 標準化 才基本上明白
部落格的最後 我會特別說一下 吳恩達老師在講解PCA的時候 說的 均值標準化特徵縮放
這裡直接翻譯過來

特徵縮放

目的

由於原始資料的值範圍變化很​​大,在一些機器學習演算法中,如果沒有標準化,目標函式將無法正常工作。例如,大多數分類器按歐幾里德距離計算兩點之間的距離。如果其中一個要素具有寬範圍的值,則距離將受此特定要素的控制。因此,應對所有特徵的範圍進行歸一化,以使每個特徵大致與最終距離成比例。
應用特徵縮放的另一個原因是梯度下降與特徵縮放比沒有它時收斂得快得多。

特徵縮放的方法

min-max normalization)

X 是一個原始值,X’是標準化值。例如,假設我們有學生的體重資料,學生的體重跨度[160磅,200磅]。要重新調整此資料,我們首先從每個學生的體重中減去160,然後將結果除以40(最大和最小權重之間的差異)。
在這裡插入圖片描述

Mean normalization

在這裡插入圖片描述

Standardization

在機器學習中,我們可以處理各種型別的資料,例如音訊訊號和影象資料的畫素值,並且該資料可以包括多個維度。特徵標準化使得資料中每個特徵的值具有零均值(當減去分子中的平均值時)和單位方差。該方法廣泛用於許多機器學習演算法(例如,支援向量機,邏輯迴歸和人工神經網路)的歸一化。一般的計算方法是確定分佈均值和標準差對於每個功能。接下來,我們從每個特徵中減去平均值。然後我們將每個特徵的值(平均值已被減去)除以其標準偏差。在這裡插入圖片描述

Scaling to unit length(縮放到單位長度)

在機器學習中廣泛使用的另一種選擇是縮放特徵向量的分量,使得完整向量具有長度1。這通常意味著將每個元件除以向量的歐幾里德長度:
在這裡插入圖片描述
在一些應用中(例如直方圖特徵),使用特徵向量的L1範數(即曼哈頓距離,城市塊長度或計程車幾何)可能更實際。如果在以下學習步驟中將標量度量用作距離度量,則這尤其重要。

應用

在隨機梯度下降中,特徵縮放有時可以提高演算法的收斂速度。在支援向量機中,它可以減少查詢支援向量的時間。請注意,特徵縮放會更改SVM結果。
這裡針對前者 直接給出兩張圖

未進行特徵縮放的

在這裡插入圖片描述
事實上如果這些輪廓再被放大一些的話,如果你畫的再誇張一些把它畫的更細更長,那麼可能情況會更糟糕,梯度下降的過程可能更加緩慢,需要花更長的時間反覆來回振盪,最終才找到一條正確通往全域性最小值的路。

進行特徵縮放的

在這裡插入圖片描述

如果你用這樣的代價函式來執行梯度下降的話,那麼可以從數學上來證明梯度下降演算法將會找到一條更捷徑的路徑通向全域性最小,而不是像剛才那樣 沿著一條讓人摸不著頭腦的路徑,來找到全域性最小值。
因此在這個例子中,通過特徵縮放,我們最終得到的兩個特徵x1和 x2都在0和1之間,這樣你得到的梯度下降演算法就會更快地收斂。

標準化

這裡真的不想多說什麼,直接附上一張圖
在這裡插入圖片描述

吳恩達 講解的PCA時候說的 均值標準化 特徵縮放

就是簡單的將每一個特徵減去它的均值,最後會使每個特徵都具有0均值
特徵縮放就是上面的最大-最小 特徵縮放法