覆盖主要内容
版本: 6.1.0

旅游企业客户洞察案例

案例介绍

一家跨国旅游企业想对公司近8年历史消费客户做一个分析,了解客户的特征,从而针对不同客户的特征做出相对应的营销策略,最大化投入产出比。通过识别高价值、高潜力的客户,实行差异化的客户管理策略,优化客户体验。为了实现这一目标,通过客户分群术,将具有相似特性的客户聚到相同类中,为每个不同特点的客户群体提供具有针对性的、个性化的营销和管理活动。

数据集介绍

数据集下载:data_travel.csv

在对客户进行分群之前,先让我们来了解客户数据构成。该客户数据主要包括客户系统中存储的客户历史消费记录,以及在第三方渠道购买的个人基本信息、家庭经济情况、兴趣爱好等,字段含义如下表所示。

名称说明类型
interested_travel旅行偏好二分类
computer_owner是否家有电脑二分类
age估计的年龄连续
home_value房产价格连续
loan_ratio贷款比率连续
risk_score风险分数连续
marital婚姻状况估计连续
interested_sport运动偏好连续
HH_grandparent户主祖父母是否建在连续
HH_dieting户主节食偏好连续
HH_head_age户主年龄连续
auto_member驾驶俱乐部估计连续
interested_golf高尔夫偏好二分类
interested_gambling博彩偏好二分类
HH_has_children户主是否有孩子二分类
HH_adults_num家庭成年人数量连续
interested_reading阅读偏好有序分类

通过对数据的观察,以及对业务需求的分析,可以确定进行建模 分析的思路如下:

1、数据集中的变量较多,如果全部放入模型会导致模型解释 困难。因此,一方面我们对于有相关性的变量进行降维,减少变量数目;另一方面,基于业务理解,预先将变量进行分组,使得同一组的变量能尽量解释业务的一个方面。比如本案例中可以将变量分成两组,分别是用户的家庭基本情况和用户的爱好情况,通过对每组变量 分别进行聚类,获取用户一个方面的特征描述,再对两个聚类结果进行综合,以获得较完整的用户画像。

2、案例中数据类型复杂,包含了连续变量、等级变量和名义变量,而且数据的实际类型与通常业务理解的类型有出入。例如, 有些情况下变量虽是离散型的,但实际是以连续的分数形式给出的, 如婚姻状况【marital】、爱好运动【interested_sport】等,这是由于作为数据 提供的服务商,该公司并不一定知道这些客户的真实个人信息,部分 数据是通过模型预测、打分得到的。由于k-means仅用于连续型变量 聚类,因此需要对变量进行预处理。对于有序分类变量,如果分类水 平较多可以按连续变量处理,否则按无序分类变量处理,再进入模 型;无序分类变量数目较少时,可以使用其哑变量编码进入模型。本案例中由于有较多的二分类变量,又集中在用户爱好这一方面,因此我们将【interested_reading】这一有序分类变量二值化,再与其他几个二分类变量一起进行汇总,得到用户的“爱好广度”,使用“爱好广度”与其他连续型的爱好类变量进行聚类。

3、离散变量(如【HH_has_children】)一般不参与聚类,因为其本身就可以视作是簇的标签;如果为了后期解释模型时简化处理,在离散变量不多的情况之下,也可以做哑变量变换后进入模型。

案例操作

使用“主成分分析”和“交互式K-Means”组件进行分类工作的流程如下图所示:

1、使用“加载文件”组件加载数据集,在“手动上传”tab页点击“选择文件”来上传本案例所需数据集,并按照“数据集介绍”开头的字段介绍进行默认参数设置,若字段类型为二分类则将其的类型设置为“categorical”,若字段类型为连续则将其的类型设置为“numeric”,具体如下图所示:

2、通过观察数据信息,我们发现数据中存在缺失值,需要对缺失值进行处理,将“加载文件”连接到“缺失值处理”组件,填补缺失值,这里我们使用使用平均值/频繁值填补。

3、再将“缺失值处理”连接到“特征构建”组件,修正错误值,错误值需要结合案例背景与数据对应的业务情况来进行修正。在该数据集当中,【HH_has_children】的分类水平以字符形式表示,需要转换为整型,同时其中的缺失值应当表示没有小孩,因此替换为0;阅读爱好【interested_reading】中包含错误值“.”,将其以0进行替换,代表该用户对阅读没有兴趣。

点击“新建属性”,分别填入下述内容,共计需要需要新建两个属性 1、属性名:fliter_interested_reading 表达式:0 if interested_reading==0 else 1 if interested_reading==1 else 2 if interested_reading==2 else 3 if interested_reading==3 else 0 2、属性名:fliter_HH_has_children 表达式:0 if HH_has_children=="N" else 1 if interested_reading=="Y" else 0

4、结合本案例场景中客户的经济文化以及消费水平、生活习惯等,可以将旅行、电脑、高尔夫、博彩、阅读这几个分类型变量综合 成一个“爱好广度”指标,其代表了用户休闲娱乐爱好;而连续型的 【interested_sport】、【HH_dieting】属于健康类爱好,【auto_member】属于奢侈型爱好。因此,将“特征构建”连接到“特征构建”组件。整合函数:interest = interested_travel + computer_owner + interested_golf + interested_gambling + fliter_interested_reading。

点击“新建属性”,填入下述内容: 属性名:interest 表达式:interested_travel + computer_owner + interested_golf + interested_gambling + fliter_interested_reading

5、在建模的过程中,并不需要所有特征都参与,因此将“特征构建”连接到“属性选择”组件,选择需要的特征,剔除冗余的特征,如图所示:

6、为了消除特征数据的范围相差较大给建模带了的影响,我们还需对数据进行预处理,将“属性选择”连接到“数据预处理”组件,选择“标准化属性”,对数据进行标准化处理。

7、然后将“数据预处理”连接到“数据信息”组件,我们可以查看处理后数据情况。

8、并将“数据预处理”连接到“主成分分析”组件,进行主成分分析。我们将主成分占比设置为0.7,其余参数设置选择默认参数。

9、将“主成分分析”连接到“查看数据”组件。查看每一个主成分对应特征权重分析情况。

10、最后,将“主成分分析”连接到“交互式k-Means”组件,选择类别为4,查看K-Means聚类分析的结果。