数据科学工程实践:用户行为分析与建模、A/B实验、SQLFlow
上QQ阅读APP看书,第一时间看更新

1.2 DCM详述

1.1节引出了离散选择模型的基本形式:选择结果=F(决策者,备选项集合,备选项属性)。本节将详细介绍DCM的设计原理、常见的应用场景以及重要的数据知识。

1.2.1 从经济模型到计量模型

DCM是用来分析“从有限互斥选项集中进行单项选择”的计量模型。与大多数计量经济学建模一样,DCM主要有以下3项任务。

  • 预测一组决策者的决策行为。
  • 确定决策者在做出选择决策时,不同选项属性的影响。
  • 了解不同群体如何评价一个备选项的不同属性,以便通过精心设计的策略,修改对个体决策者有重要影响的选项的属性,以主动的方式改变行为。

我们定义如下数学公式表示效用最大化理论。

U(Xi,St)≥U(Xj,St) ∀ jij … ∀jC

其中U为效用函数,XiXj为备选项属性矢量,St为决策者属性矢量;ij表示相对备选项j,决策者更偏好于备选项i;∀jC表示备选项集合C中的任意备选项j

一般情况下,每个选项的属性是不同的,而决策者属性是相同的,我们选择了飞机,就意味着飞机的效用Uair是4个选项中效用最大的。而模型需要做的就是依靠已知的XS,得到效用函数U。有建模经验的读者都知道,模型本身是一种包括未知参数的计算框架,需要依靠训练数据,经过参数估计过程得到最终模型结果。

1. Probit模型

假设数据分析师已经了解决策过程的所有因素,可以对各因素做出准确的测量,且了解每个决策者对备选项的评价形式,那么数据分析师便可以使用确定效用模型准确地描述决策过程。然而现实中,分析师并不具备这种能力,我们的模型也不可能100%的准确,在模型中需要考虑客观存在的偏差,因此,DCM的效用表达式为

Uit = Vit + εit

其中,Vit表示数据分析师观察到的效用部分,通常称为确定性部分;εit是全部真实效用与效用确定性部分的差异,我们称之为残差部分。残差主要来自以下几个方面。

  • 未观察到的备选项属性:数据分析师了解到的备选项属性不完整,模型忽略了一些影响效用计算的备选项属性。
  • 未观察到的决策者属性:数据分析师了解到的决策者属性不完整,而且现实中人与人之间总会存在诸多差异,这些因素也会导致效用计算产生误差。
  • 属性的测量误差:备选项的属性不可准确观测。
  • 工具变量引入的误差:当数据分析师通过引入工具变量处理未知变量时,估计值与实际值之间存在不完全表示关系,同样会产生效用计算的误差。

通过理解残差项以及对人类行为进行客观观察,我们知道人类行为是具有概率性质的,而DCM就是基于概率选择理论设计出来的。

我们使用模型描述的是选择的概率,而不是预测一个人肯定会选择某个备选项。这些概率反映了具有给定属性且面对同一组备选项的决策者选择每个备选项的概率。

P(i)t = Prob(Uit > Ujt, ∀ji)

P(i)t = Prob(Vit + εit > Vjt + εjt, ∀ji)

P(i)t = Prob(VitVjt > εjtεit, ∀ji)

P(i)t = ∫I(VitVjt > εjtεit, ∀ji) f (εt) dεt

其中,f(εt)为残差的联合密度函数,I是判断函数,如果括号之间的语句为真,则函数结果为1,如果为假,则函数结果为0。不同的DCM有不同形式的f(εt),常用DCM有Logit模型和Probit模型,二者的区别在于f(εt)不同,分别为Logit分布和正态分布。由于Logit模型更具计算优势,因此应用广泛,本章后续内容将围绕Logit模型展开。

2. 效用函数的设计

效用函数的确定部分Vit是备选项属性和决策者属性的数学函数。理论上讲,Vit可以有任何数学形式,但为了便于模型参数的估计及模型解释,通常采用加法形式,具体形式如下。

Vit = V(Xi) + V(St) + V(Xi,St)

其中,V(Xi)是备选项i属性贡献的确定效用;V(St)是决策者t属性贡献的确定效用;V(Xi,St)是备选项i属性与决策者t属性的相互作用贡献的确定效用。

对公式进一步拆分,则V(Xi)的数学形式可以表达如下,其中βxk是待估计的模型参数。

V(Xi) = βi,1Xi,1 + βi,2Xi,1 + … + βi,kXi,k

如上式所示,每个备选项i的确定效用是其属性的加权和(系数需要我们基于训练数据估计得到)。DCM允许不同备选项具备相同或不同的属性系数。例如,在选择不同的出行方式时,各出行方式的费用Fee和时间Time是在决策过程中需要考虑的两个重要属性。设βfeeβtime分别作为费用和时间对决策的影响系数,假定不同出行方式的花费对效用的影响是一致的,即共用属性系数βfee;而对于时长系数,飞机、火车、长途汽车3种公共交通需要与他人共乘,可能与自驾的感受不同,因此飞机、火车、长途汽车的时长系数使用βtime,public表示,自驾的时长系数用βtime,car表示。

Vair = βfeeFeeair + βtime,publicTimeair

Vtrain = βfeeFeetrain + βtime,publicTimetrain

Vbus = βfeeFeebus + βtime,publicTimebus

Vcar = βfeeFeecar + βtime,carTimecar

在实际场景中,决策者对备选项会表现出特定偏好(ASC),且这些偏好不能被属性解释。在这种情况下,效用函数变为如下形式。

V(Xi) = ASCi + βi,1Xi,1 + βi,2Xi,1 + … + βi,kXi,k

对应上面的例子,各交通方式的效用形式变为如下形式,其中自驾为“参考”备选项,ASCair表示相对于自驾,决策者对飞机的特定选择偏好。

Vair = ASCair + βfeeFeeair + βtime,publicTimeair

Vtrain = ASCtrain + βfeeFeetrain + βtime,publicTimetrain

Vbus = ASCbus + βfeeFeebus + βtime,publicTimebus

Vcar = βfeeFeecar + βtime,carTimecar

此外,不同属性的决策者对于各备选项会有不同的偏好。例如,收入高的家庭可能更偏向选择飞机,出行成员较多的家庭可能更偏向选择自驾,因此引入收入Income属性是必要的。效用函数确定部分变为如下形式。

Vair = ASCair + βfeeFeeair + βtime,publicTimeair + βincome,airIncome

Vtrain = ASCtrain + βfeeFeetrain + βtime,publicTimetrain + βincome,trainIncome

Vbus = ASCbus + βfeeFeebus + βtime,publicTimebus + βincome,busIncome

Vcar = βfeeFeecar + βtime,carTimecar + βincome,carIncome

以上就是DCM的基本设计原理。与传统的线性回归模型相似,在实际操作中,我们需要做的就是依据对业务的理解及实际数据表现,确定效用函数形式,最后对模型进行解读,得到商业洞见。

1.2.2 DCM的应用场景

因为选择过程是多样的,所以对于不同的选择过程,需要应用不同的DCM。常用的DCM如表1-1所示,常用场景示例如图1-4所示。使用错误的选择模型会造成分析结果偏差,我们需要结合业务逻辑和数据反馈谨慎选择模型,尽可能得到准确的结果。

表1-1 常用的DCM模型

000
000

图1-4 常用应用场景示例

1.2.3 DCM的重要数学知识

1. Logit模型的残差分布假设

在众多统计建模文献中,最常见的残差分布假设是正态分布。然而,在离散选择模型的框架下,基于正态分布假设的Probit模型,其数学性质并不易于模型的估计。因此,Logit分布假设的应用更广泛。之所以选择Logit分布,是因为它在最大化的情况下具有计算优势,不用数值积分或模拟方法就能计算概率,且密度函数的形态接近正态分布。

2. 备选项的选择概率

不同的Logit模型备选项的选择概率形式不同。1.2.2节提到了3种Logit模型,其中LR模型和MNL模型的概率计算形式一致,只是备选项的数量有差别。选择第i个备选方案(LR模型中选择i,即y=1;未选择i,即y=0)的概率如下。

000

NL模型相对复杂,其备选项概率存在层次形式。举例来说,假设把飞行模式AIR、陆地模式GRD作为第1层级,火车、长途汽车、自驾作为第2层级,则选择概率如下。

000

其中,VGRD表示公共交通备选项的共同属性效用,ΓGRD表示除去VGRD后,飞机、火车、长途汽车效用的最大期望值。θGRD是对数和参数,范围是0~1。

P(car) = P(car | GRD)×P(GRD)

P(train) = P(train | GRD)×P(GRD)

P(bus) = P(bus| GRD)×P(GRD)

3. 极大似然估计

Logit模型基于训练数据为效用函数中每个属性估计对应参数。参数估计方法通常为极大似然估计,该过程包括如下两个重要步骤。

  • 定义观测样本的联合概率密度函数,称为似然函数。
  • 估计似然函数最大化的参数值,其中似然函数定义为
000

其中,δjt是选择结果,如果决策者t选择了选项j,则δjt=1,反之δjt=0。Pjt表示决策者t选择备选项j的概率。通过求似然函数的一阶导数并将其等价于0,得到似然函数最大的参数值。因为似然函数的对数变换与原函数具有等价的最大值,并且更便于分析,所以我们进行对数似然函数的最大化,以代替似然函数本身。对数似然函数及其一阶导数的表达式分别为

000

进一步计算一阶导数需要引入概率函数Pjt。这里为了便于理解,使用了MNL模型的Pjt形式,基于前文可以知道,NL模型有自己的Pjt形式:

000

β求一阶导数:

000

把上述两个公式带入对数似然函数的一阶导数可得:

000

为保证在对数似然函数的一阶导数为0时,似然率是最大值且二阶导数是负定的,我们求解对数似然函数的二阶导数:

000

可以看到,对β的所有值对数似然函数的二阶导数是负定的,因此数学上存在使得似然率最大的β。在大多数实际问题中,β的估计需要大量的计算和专门的计算机程序来完成,这不是本文讨论的重点,感兴趣的读者可以在软件包源码层面一探究竟。

4. IIA假设

MNL模型应用的重要前提是满足无关选择独立性假设(Independence of Irrelevant Alternatives,IIA)。具体来说,对于任何决策者,选择两个备选项的概率之比与其他备选项的存在无关。从数学上可以得到以下推导,因为前面已经给出MNL模型每个备选项的选择概率计算公式,所以可以得到两个备选项的选择概率之比:

000

然而,实际问题可能不满足IIA假设,例如经典的红蓝巴士悖论。该悖论假设有一群通勤者,他们可以选择开车上班,也可以选择坐蓝色巴士。假设选择开车的概率是2/3,选择坐蓝色巴士是1/3,则二者的选择概率之比为2∶1。现在假设巴士运营商的竞争对手在同一条路线上引入了红色巴士服务,使用相同的车型、相同的时间表,站点也与蓝色巴士相同,唯一的区别就是巴士的颜色。

假设人们不关心巴士的颜色,在这种情况下,合理的预期应该是选择开车和巴士的概率不变,且选择巴士的乘客将在红色巴士和蓝色巴士中平均分配。此时,我们预计红色巴士服务启动后的选择概率分别为开车(2/3)、蓝色巴士(1/6)、红色巴士(1/6)。然而,若维持IIA假设,MNL模型将保持开车和蓝色巴士的选择概率之比为2∶1,并且红蓝两种巴士具有相同的效用,即选择概率之比为1∶1,则3个备选方案的共享概率将为:开车(1/2)、蓝色巴士(1/4)、红色巴士(1/4)。也就是说,由于引入了一种与现有的备选项相同的备选项,人们选择开车的概率将从2/3下降到1/2。

红蓝巴士悖论为IIA的可能后果提供了一个重要的例证。虽然这是一种极端情况,但在其他不极端的情况下,IIA属性仍是一个问题。因此在进行MNL建模时需要进行IIA假设的检验,一般情况下可以使用Hausman卡方检验。如果IIA不满足,需要使用其他Logit模型,例如上面提到的NL模型。

5. 模型解读:边际效用

在解读模型的时候,我们习惯使用边际效用进行说明,即保持被研究属性以外的属性不变,对被研究属性的数值进行一定的变化,得到一组新的选择概率(P1*,P2*,…,Pk*),再基于实际的选择概率(P1,P2,…,Pk),就可以得到(∆P1,∆P2,…,∆Pk),这组概率变化就是被研究属性对选择的边际效用。后面我们会结合案例再进行详解。