淺談Feature Scaling

轉自:http://blog.sina.com.cn/s/blog_7f2889330101awle.html

定義:Feature scaling is a method used to standardize the range of independent variables or features of data. In data processing, it is also known as data normalization and is generally performed during the data preprocessing step.(來源於wikipedia)


簡單來說,它主要用來把所有特徵值範圍映射至同樣的範圍裏面如(0,1)、(-1,1)、(-0.5,0.5)等。


Feature scaling (數據規範化) 是數據挖掘或機器學習常用到的步驟,這個步驟有時對算法的效率和準確率都會產生巨大的影響。

對精度的影響:很明顯,這個步驟的必要性要依賴於數據特徵的特性,如果有>=2特徵,並且不同特徵間的值變化範圍差異大,那就很有必要使用Feature scaling。比如說,在信用卡欺詐檢測中,如果我們只使用用戶的收入作爲學習特徵,那就沒有必要做這個步驟。但是如果我們同時使用用戶的收入和用戶年齡兩個特徵的話,在建模之前採用這個步驟就很有可能能提高檢測精度,這是因爲用戶收入這個特徵的取值範圍可能爲[50000,60000]甚至更大,但用戶年齡只可能是[20,100]左右,這時候,假如說我用K最近鄰的方法去做檢測的話,用戶收入這個特徵的相似度對檢測結果的影響將會大大大於用戶年齡的作用,然而事實上,這兩個特徵對欺詐檢測可能有着同等的重要性。因此,假如我們在檢測實施前,對着兩個特徵進行規範化,那我們的檢測方法中就能真正地同等對待它們。


對效率的影響:再舉一個例子,該例子來源於Ng教授的ML課程,



例子如上圖,在該例子中,我們想用線性迴歸根據房屋的大小和房屋的臥室數量來預測房價,採用的優化方法爲batch gradient descent。在建立模型的過程中,如果不對房屋的大小和房屋的臥室數量兩個特徵規範化,我們的優化問題將會在很skewed的區域中進行(如左圖所示),這樣會使得batch gradient descent的收斂很慢。而當我們對其進行規範化之後,問題就會轉變爲偏圓形的空間中優化,這時候,batch gradient descent的收斂速度將會得到大幅度提高。(好奇,只是加速收斂的目的麼?)

實踐:

常用的Feature scaling方法有如下幾種:

xi' = (xi - a) / b;

其中a可以爲特徵xi的均值,b則可以爲xi的最大值、(最大值 - 最小值)、標準差等。

 

總結

該步驟的原理和方法都是很簡單的,但是如果數據挖掘或機器學習中少了這一步,有時候會對學習效率和準確度產生巨大影響,因此,在學習建模之前,要認真考慮是否進行Feature scaling


參考資源:

http://en.wikipedia.org/wiki/Feature_scaling

https://class.coursera.org/ml/

發佈了21 篇原創文章 · 獲贊 34 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章