透過統計和視覺化技術檢查資料後,您應以更有效的方式轉換資料,以利模型訓練。正規化的目標是將特徵轉換為相似的尺寸。舉例來說,請考量以下兩項功能:
- 功能
X
的範圍為 154 到 24,917,482。 - 地圖項目
Y
的範圍介於 5 到 22 之間。
這兩項功能的範圍差異極大。正規化作業可能會
X
和 Y
來取得類似的範圍 (可能為 0 到 1)。
正規化具有以下優點:
- 在訓練期間,有助於模型更快收斂。當不同特徵具有不同的範圍時,梯度下降法 「bounce」以及慢慢收斂不過,更進階的最佳化器 (例如 Adagrad 和 Adam) 會隨著時間改變有效學習率,以防範這類問題。
- 協助模型推測出更準確的預測結果。 如果不同特徵的範圍不同,產生的模型可能會做出較不實用的預測。
- 有助於在特徵值非常高時避免「NaN 陷阱」。NaN 是「不是數字」的縮寫,如果模型中的值超過
浮點精確度限制,系統會將值改為
NaN
數字。當模型中的一個數字變成 NaN 時,模型中的其他數字最終也會變成 NaN。 - 協助模型瞭解每個特徵的適當權重。 如果沒有特徵縮放功能,模型會專心注意 但資訊廣泛但缺乏足夠關注 或縮小範圍
建議你將數值特徵正規化
範圍 (例如年齡和收入)
我們也建議您正規化涵蓋多個範圍的單一數值特徵
例如 city population.
請考慮下列兩項功能:
- 「
A
」地圖項目的最低值為 -0.5,最高為 +0.5。 - 地圖項目
B
的最低值為 -5.0,最高值為 +5.0。
特徵 A
和 B
的跨距相對較窄。但功能 B
的
時距的寬度比特徵 A
的跨範圍大 10 倍。因此:
- 在開始訓練時,模型會假設特徵
A
為十次 較「重要」比功能B
- 訓練時間會比預期的長。
- 最終產生的模型可能不夠理想。
由於未歸一化,整體損害相對較小;不過,我們仍建議將特徵 A 和特徵 B 歸一化至相同的刻度,例如 -1.0 到 +1.0。
接著,請考慮兩個範圍差異較大的地圖項目:
- 地圖項目「
C
」的最低值為 -1,最高為 +1。 - 功能
D
的最低值為 +5000,最高值為 +1,000,000,000。
如果您沒有將特徵 C
和特徵 D
正規化,模型很可能會
可能不夠理想而且必須花費更多時間
甚至沒辦法完全收合!
本節說明三種常用的正規化方法:
- 線性縮放
- 標準分數縮放
- 對數縮放
本節還會介紹裁剪。雖然這並非真正的規格化技術,但裁剪確實可將不規則的數值特徵納入範圍,產生更優質的模型。
線性調整
線性縮放 (通常簡稱為「縮放」) 是指將浮點值從其自然範圍轉換為標準範圍,通常是 0 到 1 或 -1 到 +1。
符合下列所有條件時,建議您使用線性資源調度:
- 資料的上下限不會隨時間改變。
- 地圖項目幾乎不含或完全不含異常值,且這些異常值並非極端值。
- 特徵會平均地分佈在其範圍內。 也就是說,直方圖會針對大多數值顯示大致均勻的長條。
假設 human age
是功能。線性縮放是 age
的良好正規化技巧,因為:
- 大約的下限和上限值為 0 到 100。
age
中異常值的比例相對較低。大約只有 0.3% 人口超過 100 人- 雖然特定年齡層比其他年齡略高 資料集應包含所有年齡的足夠範例。
練習:檢查您的理解程度
假設模型有一個名為net_worth
的特徵,其中包含網路
適合每個人線性縮放是否會成為良好的正規化
「net_worth
」的技巧?原因為何?
標準分數縮放
Z 分數是指特定值與平均值之間的標準差數。 舉例來說,如果某個值比平均值「高出」 2 個標準差,則 Z 分數為 +2.0。如果某個值比平均值「低」 1.5 個標準差,則 Z 分數為 -1.5。
使用Z 分數縮放表示特徵,代表在特徵向量中儲存該特徵的 Z 分數。例如,下圖顯示兩個直方圖:
- 左側是經典的常態分佈。
- 右側是同樣分佈,經由 Z 分數縮放規範化。
Z 分數縮放功能也適合用於 一個看起來很明顯的常態分佈。
當資料與常態分佈或 有點像常態分佈
請注意,部分發布作業在
但其中仍包含極端離群值舉例來說,幾乎所有
net_worth
特徵中的資料點可整併成 3 個標準差
但這項功能有幾百個標準差
你太過分心在這些情況下,您可以結合
另一種正規化 (通常為剪輯) 來處理這種情況。
練習:檢查您的理解程度
假設您的模型會針對名為height
的特徵進行訓練,該特徵會儲存 1,000 萬名女性的成人身高。對於 height
,Z 分數縮放是否是適當的正規化技巧?原因為何?
對數刻度
對數縮放功能會計算原始值的對數。理論上 對數可以是任何底數;在實際執行時 自然對數 (ln)。
如果資料符合冪律分布,則可使用對數縮放功能。隨興的權法分配如下:
X
的低值會產生Y
的極高值。- 隨著
X
的值增加,Y
的值會快速減少。 因此,X
的值越高,Y
的值就會越低。
電影分級就是權力法散佈的良好範例。請注意下圖中的以下事項:
- 有些電影的使用者評分非常高,(低
X
的值為高)Y
的值)。 - 大多數電影的使用者評分很少。(
X
的值越高,Y
的值就越低)。
記錄縮放會變更分布情形,有助於訓練模型,進而做出更準確的預測。
第二個例子是書籍銷售量符合冪律分布,原因如下:
- 大多數出版書籍的銷量都很少,可能只有一、兩百本。
- 有些書籍內含數千本書籍,數量適中。
- 只有少數暢銷書的銷量會超過一百萬本。
假設您要訓練線性模型,找出書籍封面與書籍銷售量的關係。以原始值訓練的線性模型,必須找出書籍銷量達百萬本的書籍封面,比銷量只有 100 本的書籍封面,有 10,000 倍的影響力。然而,對所有銷售數據增加記錄,讓工作更可行。 例如,100 的記錄為:
~4.6 = ln(100)
而 1,000,000 的記錄為:
~13.8 = ln(1,000,000)
因此,1,000,000 的對數大約是 100 的對數的三倍。你或許「能」想像一下暢銷書封面大約 3 次 功能反而比只銷售小小的書籍封面更好 (有些許好處)。
裁剪
裁剪是一種技巧 盡可能降低極端離群值的影響簡單來說,剪裁通常大寫 (減少) 離群值與特定最大值。剪輯是一種 這個想法可能很有效
舉例來說,假設資料集包含名為 roomsPerPerson
的特徵,
當中包含房間數量 (會議室總數除以
來篩選各個房子的乘客人數。下圖顯示,超過 99% 的特徵值符合常態分佈 (大致上,平均值為 1.8,標準差為 0.7)。不過,這項功能
有幾個離群值,有些是極端的:
如何盡量減少這些極端離群值的影響?
直方圖並非均勻分佈、常態分配或權力法
發行。如果您只使用 cap 或 clip 這個最大值
「roomsPerPerson
」做為任意值,例如 4.0?
將特徵值裁剪為 4.0,並不代表模型會忽略所有 大於 4.0 的值而是表示所有大於 4.0 的值現在都會變成 4.0。這就是 4.0 分數的特殊曲線。儘管如此,經過縮放的功能集現在比原始資料更實用。
等等!您真的可以將每個異常值都降到某個任意上限嗎?在訓練模型時,是的。
您也可以在套用其他正規化後裁剪值。 舉例來說,假設您使用 Z 分數調整,但部分異常值的絕對值遠大於 3。在這種情況下,您可以:
- 將大於 3 的 Z 分數裁剪為 3。
- 將 Z 分數小於 -3 的剪輯片段,使其完全符合 -3。
截斷可避免模型對不重要的資料進行過度索引。不過 事實上,一些離群值很重要 因此,剪輯片段值務必要謹慎
歸一化技術摘要
正規化技巧 | 公式 | 使用時機 |
---|---|---|
線性調整 | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | 特徵統一分佈於 固定範圍 |
Z 分數縮放 | $$ x' = \frac{x - μ}{σ}$$ | 特徵分佈不含極端離群值時。 |
對數刻度 | $$ x' = log(x)$$ | 當特徵值符合冪律時。 |
剪輯 | 如果 $x >max$,設為「$x」= 最高$ 如果 $x <min$,設為「$x」= 分鐘$ |
當特徵包含極端離群值時。 |
練習:考考你的知識
假設您想開發一個可預測資料中心的
衡量的工作效率。
資料集中的所有 temperature
值幾乎都會下滑
介於 15 到 30 (攝氏) 之間,但有以下例外:
- 每年一到兩次,在極熱的日子裡
31 和 45 會記錄在
temperature
中。 - 在
temperature
中,每 1,000 個點會設為 1,000 而不是實際溫度
以下何者是合理的正規化技術
是temperature
嗎?
值為 1,000 是錯誤,應予以刪除,而非裁剪。
31 到 45 之間的值是有效資料點。 假設資料集未包含足夠的溫度範圍範例,無法訓練模型做出良好預測,那麼對這些值進行裁剪可能會是個不錯的做法。不過,請注意,在推論期間,經過裁剪的模型會對 45 和 35 的溫度做出相同的預測。