IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> R语言决策树和随机森林分类电信公司用户流失churn数据和参数调优、ROC曲线可视化 -> 正文阅读

[数据结构与算法]R语言决策树和随机森林分类电信公司用户流失churn数据和参数调优、ROC曲线可视化

原文链接:http://tecdat.cn/?p=26868?

原文出处:拓端数据部落公众号

在本教程中,我们将学习覆盖决策树和随机森林。这些是可用于分类或回归的监督学习算法。

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

library(tidyverse)

# 电信客户流失率数据
churn <- read_rds(chuata.rds))


?

数据

花点时间探索下面的这个数据集。

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

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

决策树

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


?

数据拆分

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

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

chuit <- iniplit(cdf)

chining <- chulit %>% trang()

chuest <- chuplit %>% tesg()

#在训练数据集上创建交叉验证的
##这些将被用于调整模型的超参数

chds <- vfcv(chung, v = 5)


?

特征工程

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

  • 消除数值预测变量的偏度
  • 标准化所有数字预测变量
  • 为所有名义预测变量创建虚拟变量

chu_rep <- recipe(cace_srce ~ ., data = chutann) %>% 
                       stepYeonon(al_nmeric(), -al_utcoms()) %>% 
                       ste_nomaze(all_umic(), -al_oucoes()) %>% 
                       ste_dumy(all_inal(), -al_otcomes())


?

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

?

模型规格

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

  • 成本复杂度参数(又名 Cp 或 λ)
  • 树的最大深度
  • 节点中进一步拆分所需的最小数据点数。


?

工作流程

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

treow <- workflow() 


?

超参数调优

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

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

## 创建一个超参数值的网格来测试
tr_gid <- girular(cotolty(),
                          teedeth(),
                          mnn(), 
                          lvs = 2)

?

调整超参数?tune_grid()

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

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

## 调整决策树工作流程
set.seed(314)

tre_tig <- trewolow %>%
               tue_rid(rsampes = chrnols,
                         grid = reegid)


?

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

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

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

?

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

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

## 根据roc_auc选择最佳模型
besree <- te_uin %>% 

?

完成工作流程

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

可视化结果

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

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

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


?

拟合模型

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


               fit(data = chning)


?

探索我们的训练模型变量的重要性

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

teeit <- tree__it %>% 
            pull_orfowit()


?

变量重要性

接下来我们传递?tree_fit?给?vip()?函数。

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

vip(teeit)


?

决策树图

我们可以可视化训练好的决策树。

这种可视化是一种工具,用于传达经过训练的决策树的预测规则。

很多时候,决策树图会很大并且难以阅读。有专门的软件包?R?用于放大决策树图的区域。
?

训练和评估?

接下来,我们将最终模型工作流程拟合到训练数据并评估测试数据的性能。

该?函数将使我们的工作流程适合训练数据,并根据我们的?chuplit?对象定义的测试数据生成预测。

tre_latit <- fil_tewklow %>% 
                 last_fit(chnpit)

我们可以在测试数据上查看我们的性能指标

tre_lft %>% collect_metrics()

?

ROC曲线

我们可以绘制 ROC 曲线来可视化我们调整的决策树的测试集性能

treatft %>% collect_predictions() %>% 


?

混淆矩阵

我们看到我们的模型在我们的测试数据集上产生了 80 个假阴性和 57 个假阳性。

tre_pcis <- tre_s_t %>% collect_predictions()

?
?

随机森林

在本节中,我们将为?chudf?数据拟合一个随机森林模型。随机森林采用决策树并在预测准确性方面构建更强大的模型。支持该算法的主要机制是对训练数据进行重复采样(替换)以生成一系列决策树模型。然后对这些模型进行平均以获得预测空间中给定值的单个预测。

随机森林模型选择预测变量的随机子集,用于在树构建过程中分割预测空间。算法的每次迭代都会这样做,通常是 100 到 2,000 次。


?

数据特征工程

我们已经将我们的数据分成训练、测试和交叉验证集,并训练了我们的特征工程,? chucipe. 这些可以在我们的随机森林工作流程中重复使用。


?

模型

接下来,我们指定具有以下超参数的随机森林分类器:

  • mtry:创建树模型时在每次拆分时随机抽样的预测变量的数量
  • trees:要拟合并最终平均的决策树的数量
  • min_n: 节点进一步分裂所需的最小数据点数

要指定具有 的随机森林模型?,我们需要该?ranorest()?函数。


?

工作流程

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

f_orkflw <- workflow() %>% 


?

超参数调优

随机网格搜索

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

在上一节中,我们曾经?gridlar()?创建一个超参数值网格。这创建了推荐默认值的常规网格。

另一种进行超参数调整的方法是创建一个?随机?的值网格。许多研究表明,这种方法比常规网格方法做得更好。

在下面的代码中,我们将范围设置为 4 到 12。

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

set.sd(314)

rf_gd <- grid_random(mry() %>% range_set

调整超参

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

## 调整随机森林工作流程
set.seed(314)

rftin <- rfwoflow %>% 
             tune_grid(resamples = cu_olds,
                       grid = r_id)


?

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

?

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

## 根据roc_auc选择最佳模型
berf <- rftunng %>% 
           select_best

?

完成工作流程

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

fina_rkflow <- rfow %>% 
                     finaflow(betrf)

变量重要性

为了可视化随机森林模型的可变重要性分数。
?

拟合模型

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

rf_it <- fnalrfrlow %>% 
             fit(data = crnranng)


?

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

第一步是从我们的工作流拟合中提取训练好的模型。

rf <- ft %>% 
          pll_orfow_fit()


?

变量重要性

从我们的模型返回一个?ggplot?具有可变重要性分数的对象。重要性分数基于通过超参数随机选择的具有最大预测能力的预测变量。

训练和评估

接下来,我们将最终模型工作流程拟合到训练数据并评估测试数据的性能。

使我们的工作流程拟合训练数据,并根据测试数据生成预测。

我们可以在测试数据上查看我们的性能指标

rf_tfit %>% cole_trcs()

?

ROC曲线

我们可以绘制 ROC 曲线来可视化随机森林模型的测试集性能。

rflafit %>% collepedions() %>% 
                roc_ve(trth  = cncele_srice, estimate = .rd_es) %>% 
                autplot()


?

混淆矩阵

我们看到我们的模型在我们的测试数据集上产生了 61 个假阴性和 48 个假阳性,优于我们的决策树模型。


conf_mat(predis, truth = cncervice, estimate = .prd_las)


最受欢迎的见解

1.PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯模型和KMEANS聚类用户画像

2.R语言基于树的方法:决策树,随机森林

3.python中使用scikit-learn和pandas决策树

4.机器学习:在SAS中运行随机森林数据分析报告

5.R语言用随机森林和文本挖掘提高航空公司客户满意度

6.机器学习助推快时尚精准销售时间序列

7.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用

8.python机器学习:推荐系统实现(以矩阵分解来协同过滤)

9.python中用pytorch机器学习分类预测银行客户流失

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-26 15:23:34  更:2022-05-26 15:23:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 -2025/2/6 5:53:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码