天天看點

資料變換的小技巧(經常更新)

引子

作為一個小白資料挖掘工程師,如何處理分布不均勻的資料是我們遇到的第一個難題,也是工作中最常見的問題之一。

何謂資料分布不均勻?比如使用者做一道題的做題時間長度(簡稱做題時長),在理想狀态下應該是正态分布的,即大部分人做題時長在一個合理位置(如3~5分鐘),做題時間很長or很短的人應該很少。但實際情況總是這樣的嗎?非也。由于不論是做題時長、房價還是人的收入,這些變量總有一個下限,卻沒有上限。這就導緻有些做題時長超級長、收入超級高的人,将機率分布從正态的拉成了右偏的,即長尾分布。這樣資料顯然是不夠完美的,因為這樣的資料不論是采取均勻的資料分箱,還是直接模組化,都會導緻大量資料的差别較小。那我們直接将之切除長尾?大多時間也不合适——這時候,資料變換就要粉墨登場了。

本文記錄我在實際工作中碰到的有效的資料變換執行個體,并稍加解釋:

資料變換執行個體

  • 長尾分布(右偏)【注意,右偏的“右”指的是長尾的位置,不是峰的位置!】:
    • 代表例子:房價分布、收入分布、做題時長分布
    • 行之有效的處理方式:對數變換【ln(y)】、平方根變換
    • 若資料中存在負數、無法進行對數or平方根變換怎麼辦?——加上一個常數後化為正數、再進行變換。
  • 左偏分布:
    • 代表例子:普通人壽命分布:
    • 行之有效的處理方式:平方函數【y^2】、指數函數【e^y】
  • 對偏态分布的懶人方案:Box-cox轉換
  • 對周期性特征進行sin、cos函數變換:
    • 原因:有些特征具有周期性質。如一整天内醫院客流量、如一年四季的風向、一周七天的超市人流量等等,原本0時和23時的資料應該較為接近,但若你直接采用時間資料,就相當于打破了這個時間循環。是以可以将時間周期(如24時)變換到0~π之間,然後0:00和23:00對應的資料就會在空間中較為接近了
上一篇: coding小技巧
下一篇: 小技巧記錄