告诉你为什么数据要取对数

2016-06-07 16:04 746人阅读 评论(0) 收藏 举报
 分类:
机器学习(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. 数据处理取对数的作用

    作者:姚岑卓 链接:https://www.zhihu.com/question/22012482/answer/21315349 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 如需要收回, ...

  2. 处理数据时,对数据取对数的意义

    平时在一些数据处理中,经常会把原始数据取对数后进一步处理. 之所以这样做是基于对数函数在其定义域内是单调增函数,取对数后不会改变数据的相对关系,取对数作用主要有: 1. 缩小数据的绝对数值,方便计算. ...

  3. EViews对数据进行调整(取对数)

    1.导入数据 (导入数据的具体操作参考) 2. 在操作栏输入 genr lnindex=log(y) (其实就是 genr lny=log(y) 3. 再输入genr lnshibor=log(x) ...

  4. 数据取对数运算的意义

    平时在一些数据处理中,经常会把原始数据取对数后进一步处理. 之所以这样做是基于对数函数在其定义域内是单调增函数,取对数后不会改变数据的相对关系,取对数作用主要有: 1. 缩小数据的绝对数值,方便计算. ...

  5. 关于Python爬虫原理和数据抓取1.1

    为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...

  6. python爬虫百度百科-python爬虫(一)_爬虫原理和数据抓取

    本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...

  7. hdu 1568 (log取对数 / Fib数通项公式)

    2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>= ...

  8. qt爬取网页信息_豆瓣TOP250数据爬取

    一.问题描述 用python爬取网页数据是现在流行的一种快速获取数据的方法,简单快捷.最近小编通过教程学习完成了豆瓣TOP250数据的爬取.下面就简单介绍一下如何用python程序实现豆瓣网页信息的爬 ...

  9. python 怎么取对数_概率矩阵分解(PMF)及MovieLens上的Python代码

    首先对Probabilistic Matrix Factorization这篇论文的核心公式进行讲解和推导:然后用Python代码在Movielens数据集上进行测试实验. 一. 背景知识 文中作者提 ...

最新文章

  1. 动力节点Java培训告诉你Java线程的多功能用法
  2. idea_pyspark 环境配置
  3. 减速电机JGA25-370的控制电路
  4. linux c语言定位显示字符,Linux c语言实现修改文本字符串
  5. 聊聊高并发(四十)解析java.util.concurrent各个组件(十六) ThreadPoolExecutor源码分析
  6. python全排列问题_Python基于回溯法子集树模板解决全排列问题示例
  7. 几天后自动领取java怎么做的_学了14天,终于把Java项目一做完啦
  8. OpenGL基础8:SOIL库
  9. java内存管理机制-转载保存有价值的东西
  10. Idea 插件:快速JSON转对象
  11. [PTA]7-24 约分最简分式
  12. .net core 缓存技术 、内存缓存 本人亲测
  13. git cherry-pick 多分支的代码库,将代码从一个分支转移到另一个分支
  14. 解决Win7无法登陆OneDrive并报错0x8004de40问题(亲测解决)
  15. android接入华为推送
  16. 塑料壳上下扣合的卡扣设计_一种组合玩具的塑料卡扣的制作方法
  17. Bash解析器常用快捷键
  18. Service START_NOT_STICKY、START_STICKY
  19. 中国互联网还不到躺平的时候!
  20. DEMATEL复杂因素分析算法最新进展综述

热门文章

  1. 463个生活小窍门 找找你需要的!(1-200)
  2. dp 母函数 入门 + 模板
  3. 比赛记录——记录一次失败的比赛,九坤量化验证码识别大赛
  4. MSDC 4.3 接口规范(8)
  5. NSString 和 UInt8 相互转换
  6. L - 芜湖塔台请求起飞
  7. 科技公司要干掉专业媒体?先迈过内容这道大坎
  8. N-Tiers设计系列(一):传统Asp运作方式
  9. Mapwingis添加图层,实现label
  10. 计算机年龄测试题,我的世界:五道测试题,看看你游戏时间是否和MC年龄相当...