告訴你為什麼資料要取對數

2021-07-26 01:44:23 字數 1228 閱讀 9089

2016-06-07 16:04

746人閱讀收藏 

舉報

機器學習(13)

平時在一些資料處理中,經常會把原始資料取對數後進一步處理。之所以這樣做是基於對數函式在其定義域內是單調增函式,取對數後不會改變資料的相對關係,取對數作用主要有:

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) 這正好是彈性的定義

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

告訴你為什麼資料要取對數

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

為什麼要敏捷?資料告訴你。。。

下午去ddj上晃了一圈,上面公布了最新的 乙個關於敏捷的調查結果。這個調查是由知名敏捷工具廠商versionone發起的,在今年六月和七月中進行,共收到來自80個國家3061個參與者提交 的結果。大部分參與者都是敏捷的team leader 教練或是諮詢師,他們所處公司中,絕大部分的開發隊伍少於10...

3 分鐘告訴你為什麼要學 Go

文章 go語言中文文件 go語言 或 golang 是google開發的開源程式語言,誕生於2006年1月2日下午15點4分5秒,於2009年11月開源,2012年發布go穩定版。go語言在多核併發上擁有原生的設計優勢,go語言從底層原生支援併發,無須第三方庫 開發者的程式設計技巧和開發經驗。go是...