告訴你爲什麼數據要取對數

平時在一些數據處理中,經常會把原始數據取對數後進一步處理。之所以這樣做是基於對數函數在其定義域內是單調增函數,取對數後不會改變數據的相對關係,取對數作用主要有:
1. 縮小數據的絕對數值,方便計算。例如,每個數據項的值都很大,許多這樣的值進行計算可能對超過常用數據類型的取值範圍,這時取對數,就把數值縮小了,例如TF-IDF計算時,由於在大規模語料庫中,很多詞的頻率是非常大的數字。


2. 取對數後,可以將乘法計算轉換稱加法計算。

3. 某些情況下,在數據的整個值域中的在不同區間的差異帶來的影響不同。例如,中文分詞的mmseg算法,計算語素自由度時候就取了對數,這是因爲,如果某兩個字的頻率分別都是500,頻率和爲1000,另外兩個字的頻率分別爲200和800,如果單純比較頻率和都是相等的,但是取對數後,log500=2.69897,
log200=2.30103, log800=2.90308 這時候前者爲2log500=5.39794, 後者爲log200+log800=5.20411,這時前者的和更大,取前者。因爲前面兩個詞頻率都是500,可見都比較常見。後面有個詞頻是200,說明不太常見,所以選擇前者。


從log函數的圖像可以看到,自變量x的值越小,函數值y的變化越快,還是前面的例子,同樣是相差了300,但log500-log200>log800-log500,因爲前面一對的比後面一對更小。

也就是說,對數值小的部分差異的敏感程度比數值大的部分的差異敏感程度更高。這也是符合生活常識的,例如對於價格,買個家電,如果價格相差幾百元能夠很大程度影響你決策,但是你買汽車時相差幾百元你會忽略不計了。
4. 取對數之後不會改變數據的性質和相關關係,但壓縮了變量的尺度,例如800/200=4,
但log800/log200=1.2616,數據更加平穩,也消弱了模型的共線性、異方差性等。



5. 所得到的數據易消除異方差問題。

6. 在經濟學中,常取自然對數再做迴歸,這時迴歸方程爲 lnY=a lnX+b ,兩邊同時對X求導,1/Y*(DY/DX)=a*1/X, b=(DY/DX)*(X/Y)=(DY*X)/(DX*Y)=(DY/Y)/(DX/X)
這正好是彈性的定義


當然,如果數據集中有負數當然就不能取對數了。實踐中,取對數的一般是水平量,而不是比例數據,例如變化率等。

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