Press "Enter" to skip to content

机器学习从入门到进阶⑧丨回归模型中的定性变量

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

在之前的文章中,我们讨论了回归模型。费尔南多选出了最好的模型,他建立了一个多变量回归模型,如下:

 

价格 = -55089.98 + 87.34 × 发动机大小 + 60.93 × 马力 + 770.42 × 宽度

 

该模型构建了一个根据车辆发动机大小、马力和宽度的函数,来预测或估算车辆的价格。而该模型中所有的预测变量都是数值型的。

 

但是,如果有定性变量呢?如何利用定性变量来增强模型?又该如何解释定性变量呢?

 

这篇文章我们将针对 定性变量 进行讨论。

 

费尔南多得到了两个类似的定性变量:

 

 

fuelType:燃料类型。该值可以是汽油或者柴油;

 

driveWheels:驱动方式。有三个可能的值,四轮驱动、前轮驱动和后轮驱动,分别表示为4WD、 FWD 、RWD。

 

 

数据集如下图:

 

 

费尔南多希望找出这些定性变量对汽车价格的影响。

 

概述

 

定性变量是非数值型的变量。适合用于将数据分类,也称为 分类变量 (categorical variables)或者 因子 (factor)。因子具有一定的水平(level),而水平代表了特定变量的特殊值。

 

燃料种类有两个特殊值,汽油和柴油。这意味着燃料类型有两个因子。

 

驱动方式有三个特殊值值。四驱、后驱和前驱,这意味着驱动方式有三个因子。

 

回归模型使用定性变量的时候,需要将定性变量转变为 虚拟变量 (dummy variable),也就是简单的0和1。

 

如下面的例子中,样本数据中有5辆车的数据,每辆车都有其燃料类型,也就是柴油或汽油。

 

 

燃料类型是一个定性变量。它有两个level(柴油或天然气)。用统计软件创建一个名为fuelTypegas的虚拟变量,该变量的值为0或1。如果燃料类型是汽油,那幺虚拟变量是1,否则就是0。

 

可以写成:

 

xi = 1,当燃料类型为汽油时

 

xi = 0,当燃料类型为柴油时

 

回归模型创建的虚拟变量的数量,要比定性变量中因子值的数量少一个。

 

让我们来看看定性变量在回归模型中的表现。当只有价格和燃料类型这两个输入的时候,简单回归模型可以提供如下的系数:

 

 

其中只有一个系数斜率和一个截距,回归模型为定性变量的因子值(在这个例子里为汽油)创建了一个虚拟变量。

 

如果虚拟变量为0,即汽车的燃料类型是柴油,则 价格= 18348 + 0 ×(-6925)= $18348

 

如果虚拟变量为1,即汽车的燃料类型是汽油,则 价格 = 18348 + 1 × (-6925) = $11423

 

处理双因子level的定性变量的方式是明确的,即构建虚拟变量,其值非0即1。但是该如何处理level超过两个的变量呢?让我们通过另一个例子来说明。

 

驱动方式是具有三个因子的定性变量。在这种情况下,回归模型会创建两个虚拟变量。假设样本数据中有4辆车的数据:

 

 

会创建两个虚拟变量:

 

driveWheelsfwd:如果驱动方式是前驱则为1,其驱动方式为0

 

driveWheelsrwd:如果驱动方式是后驱则为1,其驱动方式为0

 

可写为:

 

如果驱动方式为前驱,xi1 = 1 ,否则 xi1 = 0

 

如果驱动方式是后驱,xi2 = 1 ,否则 xi2 = 0

 

需要注意的是,这里并没有为四驱创建虚拟变量。

 

那幺最终是如何在回归模型中表现出四驱呢?回归模型的处理方式如下:

 

 

首先,回归模型为价格估算创建了一个 基线 (baseline)。基线是只有一个定性变量(不创建虚拟变量)时的平均价格,即截距值。基线方程是为四驱创建的,也就是四驱车的平均价格;

 

对于前驱:车辆的平均价格按 基线 + 1x前驱系数 来估算,即 价格 = 7603 + 1 x 1405 + 0 x 10704 = $9008。这意味着,前驱车辆的平均价格比四驱高出1405美元;

 

对于后驱:车辆的平均价格按 基线 + 1x后驱系数 来估算,即 价格 = 7603 + 0 x 1405 + 1 x 10704 = $18307。这意味着,后驱车辆的价格比四驱高出10704美元。

 

所有具有超过两个因子值的定性变量均以此类方式处理。

 

模型构建

 

了解了定性变量的处理方式,让我们看看费尔南多如何将这些定性变量应用在他的模型中。原始模型为:

 

价格 = -55089.98 + 87.34 × 发动机大小 + 60.93 × 马力 + 770.42 × 宽度

 

他添加了两个定性变量到模型中,燃料类型和驱动方式,于是模型被改写为:

 

价格 = β0 + β1.发动机大小 + β2.马力 + β3.宽度 + β4.燃料类型 +β5.前驱 + β6.后驱

 

通过在统计软件中的训练,得到了如下的系数:

 

 

模型现在为:

 

价格 = -76404.83 + 57.20 × 发动机大小 + 23.72 × 马力 + 1214.42 × 宽度 – 1381.47 × 燃料类型 -344.62 × 前驱 + 2189.16 × 后驱

 

这里面有定量变量和定性变量的混合,这些变量之间是彼此独立的。

 

β0:注意,这里并没有为柴油车和四驱车创建虚拟变量。β0代表着柴油版四驱车的平均价格,是一个负值,即价格为负数,而价格是不可能是负数。这个模型可能违反了线性回归假设。

 

β1:对β1的解释与多变量回归中的一样, 即汽车发动机大小每增加一个单位时价格的平均增长 。当发动机大小每增加1个单位,价格平均增长$57。

 

β2:对β2的解释与多变量回归中的一样, 即汽车马力每增加一个单位时价格的平均增长 。当马力每增加1个单位,价格平均增长$23.72。

 

β3:对β3的解释与多变量回归中的一样, 即汽车宽度每增加一个单位时价格的平均增长 。当宽度每增加1个单位,价格平均增长$1214.42。

 

β4:这个系数是由虚拟变量(燃料类型为汽油)产生, 解释为汽油车与柴油车的平均价格差异。意味着,汽油车比柴油车价格平均便宜$1381.47。

 

β5:这个系数是由虚拟变量(驱动方式为前驱)产生, 解释为前驱车与四驱车的平均价格差异。意味着,前驱车比四驱车价格平均便宜$344.62。

 

β5:这个系数是由虚拟变量(驱动方式为后驱)产生, 解释为后驱车与四驱车的平均价格差异。意味着,后驱车比四驱车价格平均贵$2189.16。

 

调整R平方值为0.8183,说明这个模型可以解释训练数据中81.83%的变化。

 

请注意,并不是所有的系数都有显着性。 实际上,在这个案例中,定性变量并没有为模型表现带来显着差异。

 

结语

 

这个模型并不比之前的模型更好,但是也能够完成任务。 我们理解了如何解释回归模型中的定性变量。 显然,前一版使用马力、发动机大小和宽度做变量的模型效果更好(调整平方值达到0.8276)。

 

但是,费尔南多又在想,之前对马力、发动机大小和宽度是独立处理的,那幺:

 

马力、发动机大小和宽度之间有什幺联系?

 

它们之间的联系是否可以模型化?

 

我们将在下篇文章中将针对这些问题,解释回归模型中“交互”的概念。

 

翻译:TalkingData

 

作者:Pradeep Menon

 

来源:Mudium

 

原文链接:https://datascientia.blog/2017/08/19/dss8-qual-var/

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注