轉載:原地址https://zhuanlan.zhihu.com/p/24930540
各位小夥伴們大家好,今天讓我們來聊一聊機器學習中的所需要的資料這個話題,首先,我們先開始想一個問題,為了讓機器學習更加的方便消化,我們需不需要對一些資料動一些手腳呢?所以,圍繞這個問題,我們今天就來講一講特徵數值的標準化。
也可以說是正常化,規律化正軌化等等。話不多說,讓我們馬上開始:
再說標準化之前,先讓我們想一想現實生活當中我們的資料是怎樣的,他們很可能來自不同的地方,是被不同的人採集,有著不同的規格,用一個最經典的房價預測的案例來說,當我們用機器學習來根據房屋的各個層面來預測房價,這其中可能包括離市中心的距離,房屋的樓層,房屋的面積,所在城市,幾室幾廳等等,但是因為這些資料的取值範圍往往差距懸殊,比如樓層可能在二三十層以內,面積可能上百,離市中心的距離可以以千來計。然後回到機器學習中,假如我們以一個簡單的線性迴歸來預測房屋的價格,那麼方程可能會這樣:
價格=a*距離市中心+b*樓層+c*面積
其中這個a,b,c這三個數值我們可以看做為機器學習需要努力努力再努力進行優化的引數,讓我們來說的更具體一點,用上述的a,b,c算出的價格是預測價格,機器學習需要預測真實值和預測值之間的差別,然後對這個誤差進行一些數學上的處理,使這個誤差值無限的接近於一個最小值0,變成一個進一步的階梯,然後反向的傳遞迴在這個引數a.b,c當中,來提升下一次預測的準確度
這時候就可以用這個公式:
誤差=預測-實際價格
這個時候你可能會想,這個概念和我們這個題目的標準化有什麼關係呢?
這個時候請我們想象下,現在我們假設把a,b,c分成三個人,他們現在是一個團隊,來共同的解決一個問題,在工作中a總是不知道工作發生了什麼,只會用蠻力氣,
b的能力適中,c的能力最強,這時候團隊的boss看了看他們的工作,說不行啊,還有很多提高的部分啊,然後不屑的表示,你們這個結果和我期待的有很大的差距,你們快去縮小下差距。這個時候,老闆給的要求是縮小差距,但是a,b,c卻不知道自己應該怎麼樣縮小差距,以及彼此之間的差距在哪?因此這三者只好評分這個任務,不過c很快就完成了,b,第二完成,a做的超級慢,所以這樣等完成後花的總時間很長,bc都需要等著a把剩下的工作做完才可以看結果,這樣下來,其實效率並不高。
好,這個時候我們把這個問題放到機器學習中,首先,我們先把b去除掉, 再把房價的問題在進行簡化一下:
價格=a*距離市中心+c*面積
只留下這a,c兩個特徵屬性,因為面積的跨度在0到200之間0,離市中心的跨度普遍在100之內,所以在這個公式中,c只要稍微變化一點,c*面積的變化也會很大,因為面積的值本來就很大,但是如果a也變化一點點,a*市中心的距離不會和c一樣有那麼大的影響力,這樣的差別就會影響最終的工作效率。所以這時候我們要提高效率,那麼這個時候效率的標準化就可以幫上忙。
我們在機器學習之前先將收集到的資料預先處理一下,我們把取值面積大的數值可以進行適當的濃縮一下取值跨度小的適當的可以進行放大一下,使得他們的跨度可以儘量的統一,通常用於特徵標準化的途徑有兩種,一種叫做minmax normalization 他們會按比例將所有的資料放縮到0-1這個區間,有的也可能是-1-1的區間,還有一種叫做std normalization,他會把所有的資料放縮成平均值為0,方差為1的資料(mean=0,std=1),通過使用這些標準化的手段,我們不僅可以加快機器學習的統計速度,還可以避免機器學習可以學到特別的扭曲。
好了,這就是這篇文章所表述的對於機器學習特徵標準化的一個小介紹和通常使用的一個方法,如果你對機器學習感興趣歡迎繼續關注我的簡書頻道和知乎專欄,我也很希望可以和大家進行交流。