营销推荐策略

最近更新时间:2019-10-17 16:45:49

场景背景

营销推荐

营销推荐能帮助企业根据其经营策略和用户历史情况,对企业产品的目标用户进行更加精准的定位,预估企业产品能向哪些客户进行介绍,哪些用户的购买率更高。这样的推荐销售不仅能节省顾客的购买成本、机会成本,更能免去大部分不必要环节,极大减少企业交易费用。

在本案例中,我们以营销推荐场景下金融银行为例,根据某用户的具体信息(16个特征)预测该用户是否会成为银行某产品的客户(1个标签是/否),以辅助银行工作人员判断是否需向该用户推荐某产品。

机器学习助力推荐策略

机器学习凭借其强大的海量数据处理能力和特征提取能力,成为营销推荐场景下的一个有力辅助工具。机器学习可以通过学习大量的企业客户信息,如客户本身的信息(年龄、职业、存款等)和客户在该企业产品下的历史购买记录,预判该用户是否是某产品的相关受众,以帮助企业决策是否向该用户推荐某产品。
本案例采用机器学习算法(随机森林)解决银行场景下的营销推荐问题。

数据集介绍

原始数据集

使用的银行客户信息来自于 Kaggle 公开数据集 Bank Marketing Dataset,该数据集记录了11,162位银行客户的17个特征(包含1个标签)。

本案例的任务描述为:利用机器学习算法(随机森林)学习银行客户历史的16个特征,达到预判标签列取值的目的(某客户是/否会购买该产品)。
数据集具体信息如下表:

数据特征列 取值范围 特征描述 是否需要数据预处理
age int: 18 ~ 95 客户年龄
job string: {management、blue-collar、technician、admin、other} 客户工作类型 需 String 转 Int
marital string: {married、single、divorced} 客户婚配状态 需 String 转Int
education string: {secondary、tertiary、primary、unknown} 受教育程度 需 String 转 Int
default string: {no、yes} 是否有信贷违约 需 String 转 Int
balance int: -6.85K - 81.2K 银行余额
housing string: {no、yes} 是否有房贷 需 String 转 Int
loan string: {no、yes} 是否有个人贷款 需 String 转 Int
contact string: {cellular、unknown、telephone} 联系方式 需 String 转Int
day int: 1 - 31 最近一次和客户沟通的日期:日
month string: {may、aug、jul、jun、other} 最近一次和客户沟通的日期:月 需 String 转 Int
duration int: 2 - 3.88K 持续时长
campaign int: 1 - 63 与客户沟通次数
pdays int: -1 - 854 距离上一次和客户沟通过去了多久
previous int: 0 - 58 之前与客户沟通的总次数
poutcome string: {unknown、failure、success、other} 上一次营销活动的结果 需 String 转 Int
deposit
(标签列)
string: {no、yes} 营销是否成功 1. 需 String 转 Int
2. 需删除缺失值(若有)

数据预处理

针对源数据集 Bank Marketing Dataset,我们需要做以下数据预处理:

  1. 因为机器学习算法只能处理 Int 型数据,所以源数据集中所有 String 型数据需转换为 Int 型,可用智能钛机器学习平台提供的【算法】>【机器学习算法】>【特征转换】>【StringIndexer】实现该目的。
  2. 因为标签数据中的缺失值会直接影响分类效果,所以需要删除标签数据中的缺失值,可用智能钛机器学习平台提供的【算法】>【机器学习算法】>【数据预处理】>【ReplaceMissing】实现该目的。
    以上两个数据预处理的操作均可在智能钛平台实现,工作流截图如下:

    我们将从 Kaggle 下载的源数据集进行以上预处理操作,得到处理后的数据集:bank_transfor.csv ,用户可直接通过公共 COS 路径对该数据进行访问(作为后续工作流的输入数据)。

整体流程

工作流整体流程如下:

本场景共包含6个环节,分别是:

  1. 公共数据集引入
  2. 数据集切分:训练集、测试集
  3. 数据特征选择
  4. 将自动特征选择后的训练数据喂给随机森林模型进行训练
  5. 将自定义特征选择后的测试集喂给训练好的模型进行测试
  6. 模型评估

详细流程

数据准备

步骤目的:将 COS 公共存储桶中该案例所需数据集 bank_transfor.csv 引入工作流,然后该数据集才能在工作流中被其他节点访问。
操作步骤:

  1. 智能钛控制台 的左侧导航栏,选择【输入】>【数据源】>【 COS 数据集】,按住左键不释放将该节点拖入画布中
  2. 在右侧弹出的配置栏中,修改【节点名称】为:历史营销数据
  3. 在右侧弹出的配置栏中,参数配置 > 算法 IO 参数 > COS 数据路径复制填写的:${ai_dataset_lib}/bank_transform.csv
  4. 单击【是否检查数据】,并进行关闭
  5. 右键【历史营销数据】,选择【起点运行】,待运行成功(耗时约2s)

数据集切分

步骤目的:将数据集合按指定比例划分为训练集和测试集(训练集用于训练模型参数,测试集用于评估模型性能)
操作步骤:

  1. 在智能钛控制台的左侧导航栏,选择【算法】>【机器学习算法】>【 数据预处理】>【Spliter】,并拖入画布中
  2. 完成【历史营销数据】输出和【Spliter】输入之间的连线(若平台已自动完成则忽略)
  3. 在右侧弹出的配置栏中,修改“节点名称”为:数据集切分
  4. 在右侧弹出的配置栏中,各配置信息如下:
    • 输入文件类型:csv(该数据文件格式为.csv)
    • 输入数据包含header信息:是(该数据文件中首行是各数据列的名称)
    • 输入数据分隔符:逗号(所有.csv文件的模型分隔符都是逗号)
    • 切分比例:0.8(该数值用于指定训练集和测试集的比例为0.8,即80%的数据用户训练,20%的数据用于测试)
    • 资源参数:都可保持不变(各参数具体含义可将鼠标悬浮于参数名后的“感叹号”查看)
  5. 右键【数据集切分】,选择【起点运行】,待运行成功(耗时约1min)

特征选择

步骤目的:从原始数据的16个特征中,选择最重要的10个特征(剔除部分不重要或对模型性能有副作用的特征),本案例中采用的特征选择方式是:基于卡方检验的特征选择。
操作步骤:

  1. 在智能钛控制台的左侧导航栏,选择【算法】>【机器学习算法】>【 特征选择】>【ChiSqSelector_1】,并拖入画布中
  2. 连接【数据集切分】左边表征训练数据的输出桩和【ChiSqSelector_1】的输入桩
  3. 在右侧弹出的配置栏中,配置信息如下:
    • 输入文件类型:csv
    • 标签列:16
    • 选择特征列:0-15
    • 输入数据包含 header 信息:是
    • 输入数据分隔符:逗号
    • 选择的特征个数:10
    • 资源参数:都可保持不变(各参数具体含义可将鼠标悬浮于参数名后的“感叹号”查看)
  4. 右键【ChiSqSelector_1】,选择【起点运行】,待运行成功(耗时约1min)
  5. 右键【ChiSqSelector_1】,选择【查看数据】>【查看中间结果】,查看输出结果文件所在路径,在 COS 控制台 根据文件路径,找到相应文件并下载,即可查看到“16个特征中选择出来10个特征的具体内容”,通过被选择的10个特征和原始特征作比较,得知被选择的特征列在原始数据中的序号是:“0,2, 3,4,5,6,7,8,9,11”


模型构建

步骤目的:采用随机森林算法解决营销推荐预测任务
操作步骤:

  1. 在智能钛控制台的左侧导航栏,选择【算法】>【机器学习算法】>【 分类】>【RandomForestClassifier_1】,并拖入画布中
  2. 连接【ChiSqSelector_1】的输出桩和【RandomForestClassifier_1】左边第一个表征训练集的输入桩
  3. 在右侧弹出的配置栏中,配置信息如下:
    • 输入文件类型:csv
    • 特征列:1-10
    • 标签列:0
    • 输入数据包含 header 信息:是
    • 输入数据分隔符:逗号
    • 模型保存格式:ML
  4. 连接【数据集切分】右边代表测试数据的输出桩和【RandomForestClassifier_1】旁边小漏斗的输入桩
  5. 单击小漏斗,在右侧弹出的配置栏中,配置信息如下:
    • 模型更新方式:手动运行(打开)
    • 模型运行方式:自动运行(打开)
    • 输入文件类型:csv
    • 特征列:0,2 - 9,11(注意此处输入不要包含任何空格)
    • 输出文件类型:csv
    • 输入数据包含 header 信息:是
    • 输入数据分隔符:逗号
    • 输出数据包含 header 信息:是
    • 输出数据分隔符:逗号
    • 模型导入格式:ML
  6. 右键【RandomForestClassifier_1】,选择【起点运行】(小漏斗会自动一起运行),待运行成功(耗时约3min)

模型评估

步骤目的:评估模型性能,可视化展示评估指标
操作步骤:

  1. 在智能钛控制台的左侧导航栏,选择【输出】>【模型评估】>【二分类任务评估】,并拖入画布中
  2. 连接小漏斗的输出桩和【二分类任务评估】的输入桩
  3. 在右侧弹出的配置栏中,配置信息如下:
    • 标签列:6
    • 是否打分项:是
    • 输入数据是否包含 header 信息:是
    • 输入数据分隔符:逗号
    • 打分列:21
    • 阈值:0.5
  4. 右键【二分类任务评估】,选择【起点运行】,待运行成功(耗时约1min)。
  5. 右键【二分类任务评估】,选择【评估指标】,即可查看该模型在营销推荐策略任务上的性能。