数据科学中有各种各样的模型,有的听起来很简单,比如线性回归;有点呢,听起来就很吓人,比如深度学习。但是不管什么样的模型,从本质上来讲,模型都是对训练数据做数学运算,并以此求得模型参数的估计值。所以我们需要保证两点:第一,训练数据能进行数学运算;第二,对变量所做的数学运算是合理的。对于第一点,通常只在一些特定的应用场景里才需要比较复杂的处理,比如自然语言处理、图像识别等。但对于第二点,几乎所有的场景都会遇到。这里将注重研究第二点“对变量所做的数学运算是合理的”,它表示的内涵是:对于变量,数字的运算有相应的实际意义,包括以下两个方面:
- 数字的大小关系。
- 数字的四则运算。
为了更好地讨论问题,将模型的自变量分类。正如前面章节所提到的,在模型里使用的变量可以分为两类:数值型变量和类别型变量。如图1所示。
图1
数值型变量,在学术上也被称为定量变量(quantitative variable),如长度、收入、重量等。它们的数值表示具体的测量或计数。事实上,定量变量按是否连续可进一步细分为连续型变量和离散型变量。在一定区间内可以任意取值的变量叫连续型变量,比如人的身高、体重等;反之则是离散型变量,比如公司员工人数等。对于这类变量,数字间的不等关系是有实际意义的。比如对于收入,在数学上,100小于1000;在实际生活中,100元也小于1000元。数字间的四则运算也同理,这里就不赘述了。当然由于数字的等于关系和四则运算,数值型变量常常隐含着边际效应恒定的假设。在某些场景下,这个隐含假设与现实不符,直接使用变量会影响模型的效果。
类别型变量,也被称为定性变量(categorical variable)。它并不是表示数量上的变化,而是表示类别。比如性别、省份、学历、产品等级等。这类变量的取值通常是用文字而非数字来表示。比如对于性别这个变量,可能的取值为男、女。因此要将文字变量转换为数字变量,并且保证对于转换之后的变量,数学运算是有意义的,这并不是一件容易的事情。通常针对一个类别型变量,我们会用一个数字去表示其中的一个类别,但这样的转换方法并不能满足要求:
- 对于有序的类别型变量,比如产品等级,0表示合格、1表示良好、2表示优秀。这种情况下,0小于1的确对应着合格等级次于良好等级,但数字间的四则运算就没有对应意义了。数学上2减1等于1,但对于产品等级,优秀减去良好还等于良好吗?
- 对于无序的类别型变量,比如对于省份,0表示北京、1表示上海、2表示深圳等。数字间的大小关系和四则运算都是没有实际意义的。
因此,在模型里直接使用类别型变量是没有任何道理的,也会严重影响模型的效果。由此可见,不管是数值型变量还是类别型变量,通常都需要根据问题场景做相应变换后,再放到模型中使用。具体的方法将在后续的文章中详细讨论。
注:这篇文章的大部分内容参考自我的新书《精通数据科学:从线性回归到深度学习》。