機器學習_特徵處理

內容來源於其他博客,這裏做了個彙總,侵刪。

標準化歸一化數據

數據標準化是將數據按比例縮放,使之落入一個小的特定區間。去除數據的單位限制,將其轉化爲無量綱的純數值,便於不同單位或量級的指標能夠進行比較和加權。最典型的就是數據的歸一化處理,即將數據統一映射到[0,1]區間上。

歸一化的作用:
1. 提升模型的收斂速度
  如下圖,x1的取值爲0-2000,而x2的取值爲1-5,假如只有這兩個特徵,對其進行優化時,會得到一個窄長的橢圓形,導致在梯度下降時,梯度的方向爲垂直等高線的方向而走之字形路線,這樣會使迭代很慢,相比之下,右圖的迭代就會很(步長走多走少方向總是對的,不會走偏)

2.提升模型的精度
  在多指標評價體系中,由於各評價指標的性質不同,通常具有不同的量綱和數量級。當各指標間的水平相差很大時,如果直接用原始指標值進行分析,就會突出數值較高的指標在綜合分析中的作用,相對削弱數值水平較低指標的作用。

歸一化常用方法:

方法一:min-max標準化(Min-max normalization)/0-1標準化(0-1 normalization)

公式如下。

x=xminmaxmin

其中max爲樣本數據的最大值,min爲樣本數據的最小值。
或者
x=xxmeanmaxmin

其中xmean 爲樣本數據的平局值。
該方法的缺陷是當有新數據加入時,可能導致max和min的變化,需要重新定義。

方法二:log函數轉換

公式如下。

x=log10(x)log10(max)

max爲樣本數據最大值,並且所有的數據都要大於等於1。

方法三:反正切函數

反正切函數圖像如下

公式如下。

x=arctan(x)2π

使用這個方法需要注意的是如果想映射的區間爲[0,1],則數據都應該大於等於0,小於0的數據將被映射到[-1,0]區間上,而並非所有數據標準化的結果都映射到[0,1]區間上。

方法四:標準差標準化

這種方法給予原始數據的均值(mean)和標準差(standard deviation)進行數據的標準化。

經過處理的數據符合標準正態分佈,即均值爲0,標準差爲1,其轉化函數爲:

公式如下。

x=xμσ

其中μ 爲所有樣本數據的均值,σ 爲所有樣本數據的標準差。

將特徵轉化爲一個數值向量

下面分別對無序特徵有序特徵舉例說明

無序特徵

可以使用One-hot(也叫One-of-k)的方法把每個無序特徵轉化爲一個數值向量。比如一個無序特徵color有三種取值:redgreenblue。那麼可以用一個長度爲3的向量來表示它,向量中的各個值分別對應於redgreenblue。如:
這裏寫圖片描述

這就類似於NLP中的詞向量模型

上面說的表達方式裏有一個維度是可以省略的。既然我們知道color一定是取3個值中的一個,那麼我們知道向量的前兩個元素值,就能推斷第3個值是多少。所以,其實用下面的方式就可以表達到底是哪種顏色:

這裏寫圖片描述
這樣表達的好處是少用了一個維度,降低了轉化後特徵之間的相關性。但在實際問題中特徵基本都或多或少會有些缺失。使用第一種表達方式就可以用全0的向量來表示值缺失,而第二種表達方式是沒法表達缺失的。

有序特徵

有些特徵雖然也像無序特徵那樣只取限定的幾個值,但是這些值之間有順序的含義。例如一個人的狀態status有三種取值:bad, normal, good,顯然bad < normal < good。對於這些狀態的表達式可以如下圖所示:

這裏寫圖片描述

上面這種表達方式很巧妙地利用遞進表達了值之間的順序關係。

離散化

通常我們會將連續性特徵離散化,是把原來的值分段,轉化成一個取值爲0或1的向量。原始值落在某個段裏,向量中此段對應的元素就爲1,否則爲0。

這樣做的優勢是:

  • 離散特徵的增加和減少都很容易,易於模型的快速迭代;
  • 稀疏向量內積乘法運算速度快,計算結果方便存儲,容易擴展;
  • 離散化後的特徵對異常數據有很強的魯棒性:比如一個特徵是年齡>30是1,否則0。如果特徵沒有離散化,一個異常數- - - 據“年齡300歲”會給模型造成很大的干擾;
  • 邏輯迴歸屬於廣義線性模型,表達能力受限;單變量離散化爲N個後,每個變量有單獨的權重,相當於爲模型引入了非線- - 性,能夠提升模型表達能力,加大擬合;
  • 離散化後可以進行特徵交叉,由M+N個變量變爲M*N個變量,進一步引入非線性,提升表達能力;
  • 特徵離散化後,模型會更穩定,比如如果對用戶年齡離散化,20-30作爲一個區間,不會因爲一個用戶年齡長了一歲就變成一個完全不同的人。當然處於區間相鄰處的樣本會剛好相反,所以怎麼劃分區間是門學問;
    特徵離散化以後,起到了簡化了邏輯迴歸模型的作用,降低了模型過擬合的風險。

下面給出一個簡單示例:
  比如取離散點{0.5,1.5,2.5} ,通過判斷x 屬於(,0.5)[0.5,1.5)[1.5,2.5)[2.5,+) 中哪段來把它離散化爲4維的向量。下面是一些例子的離散結果:

離散化方法的關鍵是怎麼確定分段中的離散點。下面是常用的選取離散點的方法:

  • 等距離離散:顧名思義,就是離散點選取等距點。我們上面對x 取離散點{0.5,1.5,2.5} 就是一種等距離散,見下圖。圖中垂直的灰線代表離散點。
  • 等樣本點離散:選取的離散點保證落在每段裏的樣本點數量大致相同
  • 畫圖觀察趨勢:x 爲橫座標,y 爲縱座標,畫圖,看曲線的趨勢和拐點。通過觀察下面的圖我們發現可以利用3條直線(紅色直線)來逐段近似原來的曲線。把離散點設爲兩條直線相交的各個點,我們就可以把xx離散化爲長度爲3的向量。
    這裏寫圖片描述

參考

數據標準化/歸一化normalization
機器學習模型爲什麼要將特徵離散化
特徵處理

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