轉載
原地址:https://zhuanlan.zhihu.com/p/24839177
今天我們會來聊聊機器學習所需要的資料,為了讓機器學習方面消化, 我們需不需要對資料動些手腳呢. 所以今天就會提到特徵資料的標準化, 也可以說正常化, 歸一化, 正規化等等.
注: 本文不會涉及數學推導. 大家可以在很多其他地方找到優秀的數學推導文章.
因為本文原作是一段短視訊介紹.
也可以在這個網頁找到其他很多相關內容: 莫煩 Python
現實中的資料
在說特徵標準化之前,
我們先來說說現實生活中,
我們的資料是什麼樣的. 它們很可能來自不同的地方,
被不同的人採集,
有著不同的規格.
用最經典的房價預測例子來和大家說說. 我們用機器學習從房屋的各個層面來預測房價,
房屋的特徵可能包括,
離市中心的距離, 房屋樓層, 房屋面積, 所在城市,
幾室幾廳等等.
這些資料的取值範圍往往差距懸殊,
比如樓層一般在2-30層以內,
面積可能上百,
離市中心距離可以以千來記.
資料方程
回到機器學習中, 如果我們以一個簡單的線性迴歸方程來預測房屋的價格, 那方程可能會是這樣 . 價格= a* 離市中心 + b * 樓層 + c * 面積. 其中的 a b c 就是機器學習需要努力努力再努力 來優化的引數.
我們說的在具體一點, 用 abc 算出來的價格是預測價格 . 機器學習需要計算預測值和實際值的差別, 然後對這個誤差進行一些數學上的處理, 使之變成進步的階梯, 然後反向地傳遞迴引數 a b c 來提升下次的預測準確度. 好了. 這些概念和我們要提到的標準化有什麼關係呢?
舉例說明
我們可以把 abc 想想成3個人. 他們共同努力解決一個問題, 在某一個問題中, a工作的時候總是不知道發生了什麼, b 的能力適中, c 工作能力最強, 老闆看了他們一起工作的結果, 發現還有很多可以提高的地方, 然後不屑地說: 你們這個結果和我期望的還有很大差距, 你們快去縮小差距. 老闆給的要求只是縮小差距. 可是 abc 都不知道差距在哪. 所以他們這次只好平分接下來的任務, 不過 c 很快就做完了, b 第二, a 做得很慢, 所以花的總時間很長, c 和 b 都要等 a 把剩下的工作做完才能再給老闆看結果, 這樣 效率並不高.
把這個問題放在機器學習中, 為了好理解, 我們把 b 先排除掉. 再把房價問題也簡化一下, 留下兩個特徵. 因為面積的跨度一般可以從0 到 2-300, 而離市中心的距離跨度一般在10以內. 所以在這個公式中, c 只要稍稍變化一點, 他乘以面積的變化就會很大, 因為面積的值可以很大, 但是當a也變化那一點點時, 他對預測價格的影響力不會像 c 那樣巨大. 這樣的差別就會影響最終的工作效率. 所以, 我們要提高效率, 特徵的標準化就可以幫上忙. 我們在機器學習訓練之前, 先對資料預先處理一下, 取值跨度大的特徵資料, 我們濃縮一下, 跨度小的括展一下, 使得他們的跨度儘量統一.
通常用於 特徵標準化的途徑有兩種, 一種叫做 min max normalization, 他會將所有特徵資料按比例縮放到0-1的這個取值區間. 有時也可以是-1到1的區間. 還有一種叫做 standard deviation normalization, 他會將所有特徵資料縮放成 平均值為0, 方差為1. 使用這些標準化手段. 我們不僅可以快速推進機器學習的學習速度, 還可以避免機器學習 學得特扭曲.