1. 程式人生 > >資料平滑處理——log1p()和exmp1()

資料平滑處理——log1p()和exmp1()

今天在做題的時候學到了一點有用的東西,所以這裡做個記錄分享一下,有關資料預處理的兩個函式問題——log1p、expm1

優點:

  1. 在資料預處理時首先可以對偏度比較大的資料用log1p函式進行轉化,使其更加服從高斯分佈,此步處理可能會使我們後續的分類結果得到一個更好的結果;
  2. 平滑處理很容易被忽略掉,導致模型的結果總是達不到一定的標準,同樣使用逼格更高的log1p能避免復值得問題——復值指一個自變數對應多個因變數;
  3. 其它的優點暫時還沒發現......

log1p的使用就像是將一個數據壓縮到了一個區間,與資料的標準化類似。下面再說說它的逆運算expm1函式。

由於前面使用過log1p將資料進行了壓縮,所以最後需要記得將預測出的平滑資料進行一個還原,而還原過程就是log1p的逆運算expm1。

上面介紹了兩者的概念和方法的優點,下面說說具體的數學含義:

log1p和expm1的功能:

    log1p := log(x+1)      即ln(x+1)

    expm1 := exp(x)-1

log1p函式有它存在的意義,即保證了x資料的有效性,當x很小時(如 兩個數值相減後得到x = 10^{-16}),由於太小超過數值有效性,用log(x+1)計算得到結果為0,換作log1p則計算得到一個很小卻不為0的結果,這便是它的意義(好像是用泰勒公式來展開運算的,不確定)。

同樣的道理對於expm1,當x特別小,exp(x)-1就會急劇下降出現如上問題,甚至出現錯誤值。

在最開始看到這樣的處理方式的時候,不是很理解包括為什麼是逆運算(一下子沒有想到),後來慢慢摸索就優點清晰了,比如為什麼兩這是逆運算(簡單處理):

logx是e為底的對數,e^{x}是e為底的指數,根據對數的規則,再進行變換推導可以得到:

    e^{log_{e}^{x}} = x

可以看到x經過對數的處理後,再經過指數處理再次得到x,這裡對兩者的逆運算做了簡單的介紹。

\text{RMSLE}=\sqrt{\frac{1}{n}\sum_{i=1}^n(\log(x_i+1)-\log(y_i+1))^2}

另外RMSLE(均方根對數誤差)會更多的懲罰欠擬合,所以在使用該誤差定義時我們也可以用到上面的函式:

  1. np.loglp計算加一後的對數,其逆運算是np.expm1;
  2. 採用此誤差函式時,可以先對原始資料做np.log1p,再使用RMSE。