連續特徵離散化的必要性

在什麼情況下將連續的特徵離散化之後可以獲得更好的效果?

工業界中很少直接將連續值作爲邏輯迴歸模型的特徵輸入,而是將連續特徵離散化爲一系列0、1特徵,這樣做的優點可以歸納爲以下幾點:

1. 特徵魯棒性更強

  • 離散化後的特徵對異常值有很強的魯棒性
    比如對於一個連續特徵:年齡,如果直接將其作爲特徵,一個異常數據“年齡300歲”會給模型造成很大的干擾;如果離散爲年齡>30爲1,否則0。離散化後年齡300歲也會被歸爲0,如果訓練數據中沒有出現特徵"年齡-300歲",那麼在LR模型中,其權重對應於0,所以,即使測試數據中出現特徵"年齡-300歲",也不會對預測結果產生影響。
  • 特徵離散化後,模型會更穩定
    比如如果對用戶年齡離散化,20-30作爲一個區間,不會因爲一個用戶年齡長了一歲就變成一個完全不同的人。當然處於區間相鄰處的樣本會剛好相反,所以怎麼劃分區間是門學問;按區間離散化,劃分區間是非常關鍵的。

特徵離散化的過程,比如特徵A,如果當做連續特徵使用,在LR模型中,A會對應一個權重w,如果離散化,那麼A就拓展爲特徵A-1,A-2,A-3…,每個特徵對應於一個權重,如果訓練樣本中沒有出現特徵A-4,那麼訓練的模型對於A-4就沒有權重,如果測試樣本中出現特徵A-4,該特徵A-4也不會起作用。相當於無效。但是,如果使用連續特徵,在LR模型中,y = wa,a是特徵,w是a對應的權重,比如a代表年齡,那麼a的取值範圍是[0…100],如果測試樣本中,出現了一個測試用例,a的取值是300,顯然a是異常值,但是wa還是有值,而且值還非常大,所以,異常值會對最後結果產生非常大的影響。

2. 特徵表達性更豐富

  • 單變量離散化爲N個後,每個變量有單獨的權重,相當於爲模型引入了非線性,能夠提升模型表達能力,加大擬合;
    在LR模型中,特徵A作爲連續特徵對應的權重是Wa。A是線性特徵,因爲y = WaA,y對於A的導數就是Wa,如果離散化後,A按區間離散化爲A_1,A_2,A_3。那麼y = w_1A_1+w_2A_2+w_3A_3.那麼y對於A的函數就相當於分段的線性函數,y對於A的導數也隨A的取值變動,所以,相當於引入了非線性。
  • 離散化後可以進行特徵交叉,假如特徵A 離散化爲M個值,特徵B離散爲N個值,那麼交叉之後會有M*N個變量,進一步引入非線性,提升表達能力;

3. 降低過擬合風險

  • 特徵離散化以後,起到了簡化了邏輯迴歸模型的作用,降低了模型過擬合的風險。(當使用連續特徵時,一個特徵對應於一個權重,那麼,如果這個特徵權重較大,模型就會很依賴於這個特徵,這個特徵的一個微小變化可能會導致最終結果產生很大的變化,這樣子的模型很危險,當遇到新樣本的時候很可能因爲對這個特徵過分敏感而得到錯誤的分類結果,也就是泛化能力差,容易過擬合。而使用離散特徵的時候,一個特徵變成了多個,權重也變爲多個,那麼之前連續特徵對模型的影響力就被分散弱化了,從而降低了過擬合的風險。)

4. 模型迭代更快

  • 稀疏向量內積乘法運算快,計算結果方便存儲,容易擴展;
  • 離散特徵的增加和減少都很容易,易於模型的快速迭代
    離散特徵的增加和減少,模型也不需要調整,重新訓練是必須的,相比貝葉斯推斷方法或者樹模型方法迭代快

李沐曾經說過:模型是使用離散特徵還是連續特徵,其實是一個“海量離散特徵+簡單模型” 同 “少量連續特徵+複雜模型”的權衡。既可以離散化用線性模型,也可以用連續特徵加深度學習。就看是喜歡折騰特徵還是折騰模型了。通常來說,前者容易,而且可以n個人一起並行做,有成功經驗;後者目前看很贊,能走多遠還須拭目以待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章