覆盖主要内容
版本: 6.1.0

慈善机构精准营销案例

案例介绍

本案例展现当拥有分析数据集之后,如何建立分类模型。 这个流程包括发现并修改数据问题、填补缺失值、消除异常值、变量初筛、变量转换、变量压缩、建立模型、模型评估、模型解释。

有一个老兵社会组织主要通过发信件和邮寄小礼物的形式募集善款。为了减少成本,该组织决定仅向最有可能提供捐款的人发放信件和礼物。目前该组织有350万条历史营销记录,其中详细记录了营销信息与响应结果。该组织最感兴趣的是最近12~24个月有过捐款行为的人,并希望通过数据分析完成以下两个任务:确定什么人更有可能成为潜在的捐献人;确定这类人中各人的捐献数额可能是多少。企业在进行客户精准营销时需要关注两方面:一方面是本次营销客户的响应率,定位响应率高的客户可以降低营销成本;另一方面是潜在客户价值,即客户如果响应,则确定其消费能力的高低,定位潜在消费能力高的人可以提高收入。

这样需要同时构造两个模型,分别使用二元逻辑回归预测响应率和线性模型预测潜在消费能力。这类模型在精准营销中大量使用,被称为两阶段模型。综合运用逻辑回归的响应预测模型和线性回归的购买金额预测模型,根据模型分数的高低,为客户挑选一定预算条件下的最优质用户,从而帮助其实现商业目标。

数据集介绍

数据集下载:donations.csv donations2.csv

数据集具体描述如下。

名称变量描述类型
TargetB目标变量:是否捐款分类
TargetD目标变量:捐款数量连续
GittCnt36过去的36个月捐款次数连续
GiftCntAll过去所有月捐款总次数连续
GiftCntCard36过去36个月通过营业卡捐款的次数连续
GiftCntCardAll过去所有月通过营业卡捐款的次数连续
GiftAvgLast最后一次捐款的时间连续
GiftAvg36过去36个月平均捐款金额连续
GiftAvgAll过去所有月平均捐款金额连续
GiftAvgCard36过去36个月通过营销卡平均捐款金额连续
GiftTimeLast距离上次捐款的时间连续
GiftTimeFirst距离第一次捐款的时间连续
PromCnt12过去12个月营销次数连续
PromCnt36过去的36个月营销次数连续
PromCntAll过去所有月的营销次数连续
PromCntCard12过去12个月使用营销卡的次数连续
PromCntCard36过去36个月使用营销卡的次数连续
PromCntCardAll过去所有月使用营销卡的次数连续
StatusCat96NK状态信息分类
StatusCatStarAll综合过去所有月份的状态信息分类
DemCluster种族编号分类
DemAge年龄连续
DemGender性别分类
DemHomeOwner是否自有住房分类
DemMedHomeValue地区中房屋价格的中位数连续
DemPctVeterans地区中老兵的比例连续
DemMedIncome地区的收入中位数连续

案例操作

构建营销响应模型

为了能够更清晰的了解整个营销响应模型的流程,下图展示的是整个工作流:

数据挖掘的建模遵循SEMMA的建模步骤,虽然本案例中数据集已经整理好,但是在导入数据的时候,会出现数据类型(dtype)不匹配的问题。可以查看变量类型,并修改每个变量的类型。存在类型不对的变量是DemMedHomeValue和DemMedIncome,因为原始数据文件中,这两个变量是使用逗号做千分位的,因此默认作为字符串读入,故要将其更改为数值类型。变量度量类型从统计分析上将变量分为名义、等级和连续,因为每种度量类型代表不同的分析套路。这一点在SPSS、SAS等软件中保留了下来,可以防止初学者错误地选择统计方法,比如度量类型的变量不能用于分组。

1、使用“加载文件”组件加载数据集,在“手动上传”tab页点击“选择文件”来上传本案例所需数据集(donations.csv),设置属性【TARGET_B】的角色为“target”,即目标属性,类型修改为“categorical”,加载结果如下图所示。

2、接着运行“查看数据”组件,查看数据情况如下图所示,可以明显看到数据中有缺失值和离散值。

从中,我们可以看到Target_D缺省值较多。利用信息价值指标作为选择变量的依据。进行数据的清洗。这里我们以2%作为选取变量的阈值,将来只需要保留前两个分类变量即可。同样取2%作为选取变量的阈值,将来只需要保留前12个连续变量即可。观察每个变量情况,首先检验连续变量的分布情况,如果差异过大,有可能是错误值或者是有特殊意义的编码。我们关心的是错误值、缺失值情况。首先查看变量是否存在错误值,最可靠的方法是看直方图。

实际工作中,我们可以分析中位数和众数的关系。如果两者的值差别很大,则说明众数偏离群体较远,那么这个众数有可能是错误值。因为对于连续变量而言,取具体每个值的概率不高,而在数据采集过程中出现一些系统性错误的时候,往往会导致某些值被取到的频次很高。经过以上的变量选择,最终剩下6个变量参与预测响应的模型构建。 【PromCntAll】、【PromCntCarAll】、【GiftCnt36】、【GiftAvg36】、【GiftTimeLast】、【DemCluster】

3、了解了原始数据后,我们对数据进行如下预处理。首先运行“属性选择”组件,设置【TARGET_B】属性为分类属性,并丢弃掉不需要的属性。

4、首先我们将处理好的数据接入“数据抽样”组件,设置抽样比例为70%,即抽样数据为6780条记录,将其作为训练集;剩余数据为2906条记录,将其作为测试集。

5、然后运行“逻辑回归”组件,正则化方法我们采用套索回归(L1),惩戒力度用默认值,将其结果传递给下一个组件。

6、运行“预测”组件得到预测结果,其中“逻辑回归”列表示的就是“逻辑回归”组件的预测标签。我们可以看到,预测的标签与原始标签一致情况。

7、接下来我们关心模型的解释力度是否足够强。运行“ROC曲线”组件得到结果。

模型的解释力度通过看测试数据集的ROC曲线下的面积(AUC)得到,ROC曲线越接近左上角,AUC值越大,预测准确率越高。ROC曲线如果越接近45度对角线,预测准确率越低。

构建客户价值预测模型

此处采用线性回归对捐款数额(TargetD)进行建模,建模流程和上面类似。为了能够更清晰的了解整个数据处理的流程,下图展示的是整个工作流。

1、首先,我们使用“加载文件”组件加载训练集,选择“donations2.csv”文件,加载结果如下图所示。

数据导入后,识别出目标属性(target)和一般变量(feature)并区分为连续型变量(numeric)和离散型变量(categorical),手动设置属性【TARGET_D】的角色为“target”,即目标属性。

连续型变量重要性筛选:通过分析每个一般变量与目标变量的相关性绝对值大小筛选。利用pearson和spearman相关系数筛除相关程度过低的变量。离散型变量:利用一般变量与被目标变量的方差分析的显著性,将不显著的变量筛除。最终剩下如下变量参与预测模型构建。 【GiftCntAll】、【GiftAvgCard36】、【GiftCntCard36】、【DemGender】、【ProCntCardAll】、【GiftCnt36】、【DemMedHomeValue】、【GiftAvgAll】、【GiftAvgLast】、【GiftAvg36】

2、运行“属性选择”组件,设置【TARGET_D】属性为分类属性,并丢弃掉不需要的属性。并使用“编辑组件类型”组件根据上面的字段介绍将不正确的字段类型修改过来,连续型字段设置为“数值类型”,分类型字段设置为“离散类型”。

3、接着运行“查看数据”组件,查看数据情况,如下图所示。

4、我们看到目标变量缺失,这会影响我们的预测结果。所以我们使用“缺失值处理”对【Target_D】属性设置0为填充值。

5、经过数据预处理步骤后,我们再次运行“查看数据”查看处理后的数据如下图所示。经过剔除不需要的属性、缺失值填补和离散属性转换后,数据可以建模了。

由于代表客户价值的被目标变量为连续变量,因此选用线性回归。

6、首先我们将处理好的数据接入“数据抽样”组件,设置抽样比例为70%,即抽样数据(smp)为6780条记录,将其作为训练集;剩余数据(rmp)为2906条记录,将其作为测试集。

7、然后运行“线性回归”组件,这里采用默认配置。

8、最后运行“测试和评分”组件,分别选择抽样方法为训练集中测试和测试集中测试,在右侧可以看到模型的评估结果如下图所示。

从评估结果来看,可以看到模型Coefficient of determination(决定系数,也叫R2)为0.12,针对训练样本评分不错。现阶段,我们有对捐款概率预测的变量,也有未来捐款额度的预测变量。有了预测值,便可以制定营销策略了。