对数函数在其定义域内是单调增函数,取对数后不会改变数据的相对关系,取对数作用主要有:
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、第一种情况是习惯问题
现在的正在退休年龄的教师,快要成为古人的老老教师,以及他们的老师们,
近乎百年来有一个习惯,现在的年轻人中也有不少受他们影响。遇到x^x求导
数的时候,他们的第一反应就算先取对数,求导之后,再取指数,迂腐曲折。
如果 y = x^x + 5^sinx + (tanx)^cosx + sinx^lnx + 、、、、
三下五除二,几分钟能解答的题目,他们要啰里啰唆写上几页纸,花费多出好
几倍的时间,在所不惜,迂腐不止。他们最大的毛病在于不愿意指数对数连用。
2、第二种情况,为了绘图所需,因为数据可能相差几个数量级,无法在同一张图
上清晰表示,采取对数坐标制。
3、第三种情况是:为了运用 linear law 的方法,不是为了简单的绘图清晰,而是
一种解题的方法,外推的方法,给人直观的感觉。我们的教学中几乎完全忽视
了linear law。因为我们知道这个方法老前辈们对它不屑一顾。
y=√[(x+1/2)²+(√3/2)²]-√[(x-1/2)²+(√3/2)²]
表示动点M(x,0)与定点A(-1/2,√3/2)和定点B(1/2,√3/2)的距离的差,
利用三角形的知识原来两边差的绝对值<第三边
即/MA-MB/</AB/=1
即/y/<1
即y属于(-1,1)
个人认为|y|≤1不能得到-1≤x≤1。此题x属于R。