數據變換的小技巧(經常更新)

引子

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

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

本文記錄我在實際工作中碰到的有效的數據變換實例,並稍加解釋:


數據變換實例

  • 長尾分佈(右偏)【注意,右偏的“右”指的是長尾的位置,不是峯的位置!】:
    • 代表例子:房價分佈、收入分佈、做題時長分佈
    • 行之有效的處理方式:對數變換【ln(y)】、平方根變換
    • 若數據中存在負數、無法進行對數or平方根變換怎麼辦?——加上一個常數後化爲正數、再進行變換。
  • 左偏分佈:
    • 代表例子:普通人壽命分佈:
    • 行之有效的處理方式:平方函數【y^2】、指數函數【e^y】
  • 對偏態分佈的懶人方案:Box-cox轉換
  • 對週期性特徵進行sin、cos函數變換:
    • 原因:有些特徵具有周期性質。如一整天內醫院客流量、如一年四季的風向、一週七天的超市人流量等等,原本0時和23時的數據應該較爲接近,但若你直接採用時間數據,就相當於打破了這個時間循環。因此可以將時間週期(如24時)變換到0~π之間,然後0:00和23:00對應的數據就會在空間中較爲接近了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章