数据科学中的陷阱I:变量的数学运算合理吗?

作者: tgbaggio | 来源:发表于2018-09-09 09:16 被阅读6次

数据科学中有各种各样的模型,有的听起来很简单,比如线性回归;有的呢,听起来就很吓人,比如深度学习。但是不管什么样的模型,从本质上来讲,模型都是对训练数据做数学运算,并以此求得模型参数的估计值。所以我们需要保证两点:

  • 第一,训练数据能进行数学运算
  • 第二,对变量所做的数学运算是合理的

对于第一点,通常只在一些特定的应用场景里才需要比较复杂的处理,比如自然语言处理、图像识别等。但对于第二点,几乎所有的场景都会遇到。这里将注重研究第二点“对变量所做的数学运算是合理的”,它表示的内涵是:对于变量,数字的运算有相应的实际意义,包括以下两个方面。

  • 数字的大小关系。
  • 数字的四则运算。

为了更好地讨论问题,将模型的自变量分类。正如前面章节所提到的,在模型里使用的变量可以分为两类:数值型变量和类别型变量。如图1所示。

图1

数值型变量,在学术上也被称为定量变量(quantitative variable),如长度、收入、重量等。它们的数值表示具体的测量或计数。事实上,定量变量按是否连续可进一步细分为连续型变量和离散型变量。在一定区间内可以任意取值的变量叫连续型变量,比如人的身高、体重等;反之则是离散型变量,比如公司员工人数等。对于这类变量,数字间的不等关系是有实际意义的。比如对于收入,在数学上,100小于1000;在实际生活中,100元也小于1000元。数字间的四则运算也同理,这里就不赘述了。当然由于数字的等于关系和四则运算,数值型变量常常隐含着边际效应恒定的假设,正如我们在第5章里讨论的那样。在某些场景下,这个隐含假设与现实不符,直接使用变量会影响模型的效果。

类别型变量,也被称为定性变量(categorical variable)。它并不是表示数量上的变化,而是表示类别。比如性别、省份、学历、产品等级等。这类变量的取值通常是用文字而非数字来表示。比如对于性别这个变量,可能的取值为男、女。因此要将文字变量转换为数字变量,并且保证对于转换之后的变量,数学运算是有意义的,这并不是一件容易的事情。通常针对一个类别型变量,我们会用一个数字去表示其中的一个类别,但这样的转换方法并不能满足要求:

  • 对于有序的类别型变量,比如产品等级,0表示合格、1表示良好、2表示优秀。这种情况下,0小于1的确对应着合格等级次于良好等级,但数字间的四则运算就没有对应意义了。数学上2减1等于1,但对于产品等级,优秀减去良好还等于良好吗?

  • 对于无序的类别型变量,比如对于省份,0表示北京、1表示上海、2表示深圳等。数字间的大小关系和四则运算都是没有实际意义的。

因此,在模型里直接使用类别型变量是没有任何道理的,也会严重影响模型的效果。由此可见,不管是数值型变量还是类别型变量,通常都需要根据问题场景做相应变换后,再放到模型中使用。具体的方法将在后续的文章中(《数据科学中的陷阱II:定性变量的处理》)详细讨论。

广告时间

这篇文章的大部分内容参考自我的新书《精通数据科学:从线性回归到深度学习》

李国杰院士和韩家炜教授在读过此书后,亲自为其作序,欢迎大家购买。

相关文章

  • 数据科学中的陷阱II:定性变量的处理

    在之前的文章里《数据科学中的陷阱I:变量的数学运算合理吗?》,我们讨论过定性变量,也就是表示类别的变量,比如性别、...

  • 数据科学中的陷阱I:变量的数学运算合理吗?

    数据科学中有各种各样的模型,有的听起来很简单,比如线性回归;有的呢,听起来就很吓人,比如深度学习。但是不管什么样的...

  • 数据科学中的陷阱:变量的数学运算合理吗?

    数据科学中有各种各样的模型,有的听起来很简单,比如线性回归;有点呢,听起来就很吓人,比如深度学习。但是不管什么样的...

  • 运算符

    数据的运算: 说直白点:就是利用数学的运算方式来对我们变量中存储的数据进行:计算,对比,条件设置,赋值等处理 运算...

  • 变量和数据类型

    5.1 变量概述 变量:常量是固定不变的数据,那么在程序中可以变化的量称为变量。 数学中,可以使用字母代替数字运算...

  • javascript精雕细琢(二):++、--那点事

    目录 引言 ++和--在数学运算中的计算规则 ++和--在变量引用时的计算规则 ++和--的数据转换应用 结语 引...

  • Python基础入门:从变量到异常处理(1天)--阿里云天池

    变量、运算符与数据类型和位运算 2 变量、运算符与数据类型 2.1注释 1.在python中,#表示注释,作用于整...

  • Java 基础笔记

    变量赋值操作 ++i和i++的区别?++i是先将当前变量的值自增,再入栈做运算,而i++是先入栈再进行运算,自增和...

  • day7

    part 1 上周内容回顾以及本周内容 1、python 基本语法 2、 基本数据类型 变量:存数据运算符(数学,...

  • 解题思维

    你的问题是? 扩充知识领域:机器学习 需要的知识基础:python;数据科学运算工具;数学知识 对数学的理解:如何...

网友评论

    本文标题:数据科学中的陷阱I:变量的数学运算合理吗?

    本文链接:https://www.haomeiwen.com/subject/meyrgftx.html