[Converge] Feature Selection in training of Deep Learning

特徵相關性對於DL的影響

連接:https://www.zhihu.com/question/47908908/answer/110987483php

 

經驗一

1. 輸入特徵最好不相關。若是某些維輸入的相關性太強,那麼網絡中與這些輸入神經元相連的權重實際上起到的做用就是類似的(redundancy),訓練網絡時花在調整這些權重之間關係上的力氣就白費了。(僅僅是多費了點時間?)算法

2. 上面說的輸入的相關是指全部訓練數據某些維度上相關,而不是說某些訓練數據在全部維度上相關。在你舉的例子中,若是類似數據都很是接近,那麼這些數據實際上是冗餘的,能夠去掉一部分;若是類似數據之間的方差足夠大,那麼這種方差就能加強模型的魯棒性數組

3. 若是你不使用minibatch,那麼沒有影響。網絡

4. 須要歸一化,不然訓練過程當中容易遇到數值上的困難。


樣本之間的相關性不怕,特別是數據量大的時候。
輸入特徵之間最好仍是不要相關,可是若是數據量夠大,問題也不大。性能

 


經驗二

給題主分享一些實驗的經驗。首先分析一下你的問題,從題主的描述中,我感受題主問題兩個方面; 學習

1,數據預處理

1.1 數據量綱

數據量綱,能夠理解爲數據在相應度量單位下的數值;好比溫度和高度等度量單位,單位分別爲攝氏度和釐米;大數據

  • 若是溫度度量的是人的體溫,那麼正常人類的範圍是從34-42度之間了;
  • 若是高度度量人的高度,那麼範圍會從30cm—230cm之間了,

若是剔除單位,單純的從數據上來講,很明顯身高數據的幅值範圍要大並且其數值也更大,網站

因此在相同的處理下,同時乘除同一個係數,身高對於結果的影響要大一些。spa

固然你能夠說溫度乘以一個大的係數,身高乘以一個小的係數,這種方式來平衡或者抵消量綱的影響,這個確實正確,最小二乘迴歸分析也是這麼處理的,可是這個增長了模型訓練的難度,並且大的係數很容易致使過擬合ci

 

特徵重要程度,其次從面對問題的角度來分析,

  • 若是你預測一我的會不會發燒的問題,那麼這個時候溫度對於結果和影響確定大於身高,即溫度比身高更重要,甚至能夠認爲身高對於結果是無用變量能夠刪除;
  • 若是你預測一我的的籃球水平,那麼這時身高就比溫度更重要,

以上兩種問題中對於溫度和身高的分析都是基於咱們的常識經驗,其實也能夠看作一種機理分析,即咱們已經先驗地知道了問題的因果關係,能夠直觀的斷定變量的做用;

然而現實中咱們遇到的問題,每每很難作機理分析;更一般的作法是咱們經過觀察測定了一些對於結果有影響的變量,至於which變量對於結果是相當重要的咱們每每不可以經過經驗或者機理分析直接給出,那麼這個時候最好的作法就是認爲全部變量一樣重要

那麼,體現變量同樣重要的廣泛作法就是去除量綱,即歸一化處理到相同或相近的數值和幅值範圍,一般的方法有最大最小值歸一化和方差歸一化兩種,

最大最小值歸一化把數據歸一化到[0,1]或[-1,1]區間,

方差歸一化更傾向於經過變量自身的離散程度(方差)來自身歸一化,此種歸一化後的數據範圍一般不是[0 ,1]或[-1,1]區間。

 

1.2 數據相關性

數據相關,一般指不一樣變量(度量維度)之間聯繫的程度,例如

人的身高和體重具備很大的相關性,通常身高高的體重都大;

還有就是顏值和受歡迎程度也是相關的;

那麼若是相關性比較大的兩個變量同時出如今數據中,會形成變量的重複使用和數據冗餘,

假設咱們要預測某個省份的gdp,那麼一般會在統計局網站中找一些相似人口,用電量,教育投入,高等教育人口比例,消費水平等相似的數據,那麼咱們假設教育投入決定了高等人口比例,即兩者之間有因果關係,那麼此時若是把上述變量不加處理都扔進去模型中,就等價於教育投入這個變量使用的兩次,不只影響結果,還會增長了計算量 。

解決數據相關性問題主要是

先計算數據變量間的相關係數,把相關係數高的兩個變量提出一個,

或者用萬金油PCA,不只可以消除相關性還可以下降維度。

 

 

2 訓練方法

其實主要指訓練過程當中的一些trick,網絡結構,神經元類型,學習方法,學習率,迭代次數,收斂精度,學習批量,亂序操做,權值初始值,權值懲罰項,權值約束,稀疏性,固然還有很重要的數據量;

每一個參數的設置都會影響你最終的訓練時間和結果,全部參數都設置對告終果不必定好,可是有一個參數設置很差結果必定很差,神經網絡就是這麼任性的。一個好的模型和參數組合,在不進行數據處理時也能夠獲得不錯的結果;並且一樣的模型偶爾也會出現使用原始數據的結果反而比預處理後的結果要好,固然只是偶爾;因此從數據到結果是一個系統,哪個環節出了問題都得不到很好的結果;若是某一個環節表現特別優異能夠在必定程度上彌補其它環節的不足。

上面扯了這麼多,來正面回答一下題主的問題。

 

2.1 相關性問題

相關性問題是一個無肯定解的問題,特徵之間的相關性是否會影響到網絡的性能,致使了比特徵間獨立的狀況下性能要差。

對於神經網絡而言,數據的相關性會影響到網絡性能,可是若是訓練方法得當,參數選取正確其結果不必定比特徵獨立差

其次因爲神經網絡強大的擬合能力,有的數據集在不去除相關性和不使用pca降維時結果要更好,這個要看數據的特色和質量。

 

問題中題主用一個實例是(5,3,6)另一個是(5.1,3.3,6.1)來描述數據相關性有些不太恰當,從例子來看感受題主描述的應該是數據分佈的密集讀或者散佈程度;

數據異常的點越少散佈越均勻數據量越大,越可以提升準確性;相反則會致使很差的結果。

因爲神經網絡一般使用監督引導學習,經典的BP算法就是經過預測殘差來引導網絡學習的,若是數據分佈不均勻,那麼數據相對密集的地方會產出更多的引導學習,即網絡更偏向數據密集的地方擬合,這時對於非密集處的數據就會產生壞的影響,能夠理解成拔河,數據密集且多的地方可以把神經網絡「拉」(引導)過來。

那麼解決這種問題最好的方法能夠考慮一下svm,若是題主堅持神經網絡模型,那麼能夠嘗試增大數據量,經過複製或者插值增長數據相對稀少位置的數據,也能夠刪除一部分密集處的數據。

 

2.2 歸一化的問題

也是一個無固定解的問題;就我的的經驗而言大部分狀況下歸一化比不歸一化要好,可是也存在一些特別的數據集,不歸一化的狀況下反而結果會更好;

至於兩種歸一化方法感受旗鼓至關了,從經驗來講基於最大最小值的[0,1]歸一化要稍微好一些。可是圖像數據必定要歸一化,不歸一化結果很爛。因此最終是否歸一化,選擇哪一種歸一化方法須要題主用實驗來驗證你的數據適合哪一種狀況。

 

是否對於數據進行亂序操做,要看題主使用的是哪一種學習方法了,目前主要分爲:

    1. 全批量學習(整個數據集的)
    2. 子批量學習(mini-batch學習)
    3. 增量學習(一個一個的學習)
  • 若使用全批量學習,數據是否亂序基本沒有影響,其收斂曲線較平滑,可使用稍大一些的學習率;
  • 要是使用增量學習,數據亂序會影響結果,這個影響有不肯定性,由於增量學習自己就會波動較大,異常值對於此種結果有很大的影響,並且增量學習更容易受到參數設置的影響,因此結果會有更大的不肯定性,爲了消除波動的影響,建議使用較小的學習率;
  • 子批量學習方法,介於增量和全批量學習之間,其原理相似經過子採樣來估計總體,建議使用此種訓練方法,大多數數據集此種方法可以在最小的訓練時間下達到收斂精度,可是不絕對。

 

經過以上分析,感受題主要罵娘了,說了半天和沒說同樣,那個狀況都是不絕對,我只能說臣妾冤枉啊,以前在UCI數據上刷數據的時候,被害慘了,只能各類試驗,找到每一個數據集最適合的處理方法。

神經網絡是一個系統的工程,以前深度神經網絡的學習不少狀況下依靠參數的設置,其實就是依靠trick和經驗,以前聽過一個說法:

一個學習幾天的本科生和一個研究神經網絡的教授均可以用神經網絡來解決一個問題,那麼這個不一樣就在於經驗和感受上,可能本科生要獲得好的結果要經過蠻力實驗更多的次數。

感受這也是神經網絡的魅力所在,使用網絡模型很簡單,只要有數據,不須要機理分析,就能夠訓練模型,可是模型結果的好壞則須要不少的trick,這也是神經網絡簡單,同時也不簡單的地方了。

 

最後要多囉嗦一句,從解決問題的角度,感受題主應該首先基於機理分析,分析一下輸入數據,而後去尋找適合的模型,

有時候非線性迴歸偏最小二乘就能夠解決問題;

此外簡單的模型在修改的時候更加好控制,也具備更大的靈活性;

如果其餘模型效果都不太理想,再考慮神經網絡,由於神經網絡多少有些黑箱模型,只要數據量足夠,結果不會太差,多少有些暴力。

  

這是一個很大的話題,持續中...

相關文章
相關標籤/搜索