学习
实践
活动
专区
工具
TVP
写文章

数据分享|R语言决策树和随机森林分类电信公司用户流失churn数据和参数调优、ROC曲线可视化

相关视频

下面的代码将加载本教程所需的包和数据集。

library(tidyverse)

# 电信客户流失率数据

churn 

数据

花点时间探索下面的这个数据集(查看文末了解数据获取方式)

此数据框中的一行代表一家电信公司的客户。每个客户都从该公司购买了电话和互联网服务。

此数据中的因变量变量  指示客户是否终止了他们的服务。

决策树

为了演示拟合决策树,我们将使用 数据集并使用所有可用的预测变量进行预测。

数据拆分

我们将数据分成训练集和测试集。训练数据将进一步分为 5 折进行超参数调优。

# 记住一定要设置你的随机数种子。

chuit 

chining % trang()

chuest % tesg()

#在训练数据集上创建交叉验证的

##这些将被用于调整模型的超参数

chds 

特征工程

我们将在训练数据上进行以下转换。

消除数值预测变量的偏度

标准化所有数字预测变量

为所有名义预测变量创建虚拟变量

chu\_rep %

stepYeonon(al\_nmeric(), -al\_utcoms()) %>%

ste\_nomaze(all\_umic(), -al_oucoes()) %>%

ste\_dumy(all\_inal(), -al_otcomes())

让我们检查一下特征工程步骤是否正确执行。

模型规格

接下来,我们指定具有以下超参数的决策树分类器:

成本复杂度参数(又名 Cp 或 λ)

树的最大深度

节点中进一步拆分所需的最小数据点数。

工作流程

接下来,我们将模型组合到一个工作流中,以轻松管理模型构建过程。

treow 

超参数调优

我们将对决策树超参数进行网格搜索,并在交叉验证期间根据 ROC 曲线下的面积选择性能最佳的模型。

请参见下面的示例,我们在其中创建  对象。

## 创建一个超参数值的网格来测试

tr_gid 

teedeth(),

mnn(),

lvs = 2)调整超参数 

为了从我们的调整网格中找到超参数的最佳组合,我们将使用该  函数。

在我们的 KNN 示例中,此函数将模型对象或工作流作为第一个参数,将交叉验证折叠作为第二个参数,将调整网格数据框作为第三个参数。

## 调整决策树工作流程

set.seed(314)

tre_tig %

tue_rid(rsampes = chrnols,

grid = reegid)

查看我们的超参数调整的结果。

从下面的结果中,我们看到对于我们网格中的每个超参数组合。

下面  结果中的列表示获得的性能指标的平均值。

我们可以使用该  模型从我们的调优结果中选择具有最佳整体性能的模型。在下面的代码中,我们指定根据  指标选择性能最佳的模型。

我们看到成本复杂度为 1-10、树深度为 15、最小 n 为 40 的模型产生了最佳模型。

## 根据roc_auc选择最佳模型

besree %完成工作流程

超参数调整的最后一步是 将我们的最佳模型添加到我们的工作流对象中。

可视化结果

为了可视化我们的决策树模型,我们需要使用该  函数手动训练我们的工作流对象。

此步骤是可选的,因为并非所有应用程序都需要可视化模型。但是,如果目标是了解 模型预测某些值的原因 ,那么建议这样做。

下一节将展示如何拟合模型以 自动获得测试集的性能。

拟合模型

接下来,我们将工作流程与训练数据相匹配。这是通过将我们的工作流对象传递给  函数来完成的。

fit(data = chning)探索我们的训练模型变量的重要性

一旦我们在训练数据上训练了我们的模型,我们就可以使用该  函数研究变量的重要性。

teeit %

pull_orfowit()变量重要性

接下来我们传递  给  函数。

我们从下面的结果中看到最重要的预测因子。

vip(teeit)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221122A05S9N00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券