最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

數(shù)據(jù)分享|R語言決策樹和隨機森林分類電信公司用戶流失churn數(shù)據(jù)和參數(shù)調(diào)優(yōu)、ROC曲線可

2023-07-16 00:23 作者:拓端tecdat  | 我要投稿

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

最近我們被客戶要求撰寫關(guān)于電信公司用戶流失的研究報告,包括一些圖形和統(tǒng)計輸出。

在本教程中,我們將學(xué)習(xí)覆蓋決策樹和隨機森林。這些是可用于分類或回歸的監(jiān)督學(xué)習(xí)算法

下面的代碼將加載本教程所需的包和數(shù)據(jù)集。

library(tidyverse)#?電信客戶流失率數(shù)據(jù)churn?<-?read_rds(chuata.rds))

數(shù)據(jù)

花點時間探索下面的這個數(shù)據(jù)集?(?查看文末了解數(shù)據(jù)獲取方式?)?。

此數(shù)據(jù)框中的一行代表一家電信公司的客戶。每個客戶都從該公司購買了電話和互聯(lián)網(wǎng)服務(wù)。

此數(shù)據(jù)中的因變量變量?canceled?指示客戶是否終止了他們的服務(wù)。

決策樹

為了演示擬合決策樹,我們將使用?churn數(shù)據(jù)集并使用所有可用的預(yù)測變量進行預(yù)測。

數(shù)據(jù)拆分

我們將數(shù)據(jù)分成訓(xùn)練集和測試集。訓(xùn)練數(shù)據(jù)將進一步分為 5 折進行超參數(shù)調(diào)優(yōu)。

?#?記住一定要設(shè)置你的隨機數(shù)種子。chuit?<-?iniplit(cdf)chining?<-?chulit?%>%?trang()chuest?<-?chuplit?%>%?tesg()#在訓(xùn)練數(shù)據(jù)集上創(chuàng)建交叉驗證的##這些將被用于調(diào)整模型的超參數(shù)chds?<-?vfcv(chung,?v?=?5)

特征工程

我們將在訓(xùn)練數(shù)據(jù)上進行以下轉(zhuǎn)換。

  • 消除數(shù)值預(yù)測變量的偏度

  • 標準化所有數(shù)字預(yù)測變量

  • 為所有名義預(yù)測變量創(chuàng)建虛擬變量

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

讓我們檢查一下特征工程步驟是否正確執(zhí)行。

模型規(guī)格

接下來,我們指定具有以下超參數(shù)的決策樹分類器:

  • 成本復(fù)雜度參數(shù)(又名 Cp 或 λ)

  • 樹的最大深度

  • 節(jié)點中進一步拆分所需的最小數(shù)據(jù)點數(shù)。

工作流程

接下來,我們將模型組合到一個工作流中,以輕松管理模型構(gòu)建過程。

treow?<-?workflow()

超參數(shù)調(diào)優(yōu)

我們將對決策樹超參數(shù)進行網(wǎng)格搜索,并在交叉驗證期間根據(jù) ROC 曲線下的面積選擇性能最佳的模型。

請參見下面的示例,我們在其中創(chuàng)建?tree_grid?對象。

##?創(chuàng)建一個超參數(shù)值的網(wǎng)格來測試tr_gid?<-?girular(cotolty(),??????????????????????????teedeth(),??????????????????????????mnn(),???????????????????????????lvs?=?2)

調(diào)整超參數(shù)?tune_grid()

為了從我們的調(diào)整網(wǎng)格中找到超參數(shù)的最佳組合,我們將使用該?tune_grid()?函數(shù)。

在我們的 KNN 示例中,此函數(shù)將模型對象或工作流作為第一個參數(shù),將交叉驗證折疊作為第二個參數(shù),將調(diào)整網(wǎng)格數(shù)據(jù)框作為第三個參數(shù)。

##?調(diào)整決策樹工作流程set.seed(314)tre_tig?<-?trewolow?%>%???????????????tue_rid(rsampes?=?chrnols,?????????????????????????grid?=?reegid)

查看我們的超參數(shù)調(diào)整的結(jié)果。

從下面的結(jié)果中,我們看到對于我們網(wǎng)格中的每個超參數(shù)組合。

下面?mean?結(jié)果中的列表示獲得的性能指標的平均值。

我們可以使用該?select_best()?模型從我們的調(diào)優(yōu)結(jié)果中選擇具有最佳整體性能的模型。在下面的代碼中,我們指定根據(jù)?roc_auc?指標選擇性能最佳的模型。

我們看到成本復(fù)雜度為 1-10、樹深度為 15、最小 n 為 40 的模型產(chǎn)生了最佳模型。

##?根據(jù)roc_auc選擇最佳模型besree?<-?te_uin?%>%

完成工作流程

超參數(shù)調(diào)整的最后一步是?將我們的最佳模型添加到我們的工作流對象中。

可視化結(jié)果

為了可視化我們的決策樹模型,我們需要使用該?fit()?函數(shù)手動訓(xùn)練我們的工作流對象。

此步驟是可選的,因為并非所有應(yīng)用程序都需要可視化模型。但是,如果目標是了解?模型預(yù)測某些值的原因?,那么建議這樣做。

下一節(jié)將展示如何擬合模型以?自動獲得測試集的性能。

擬合模型

接下來,我們將工作流程與訓(xùn)練數(shù)據(jù)相匹配。這是通過將我們的工作流對象傳遞給?fit()?函數(shù)來完成的。

???????????????fit(data?=?chning)

探索我們的訓(xùn)練模型變量的重要性

一旦我們在訓(xùn)練數(shù)據(jù)上訓(xùn)練了我們的模型,我們就可以使用該?vip?函數(shù)研究變量的重要性。

teeit?<-?tree__it?%>%?????????????pull_orfowit()

變量重要性

接下來我們傳遞?tree_fit?給?vip()?函數(shù)。

我們從下面的結(jié)果中看到最重要的預(yù)測因子。

vip(teeit)

點擊標題查閱往期內(nèi)容

PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯和KMEANS聚類用戶畫像

左右滑動查看更多

01

02

03

04

決策樹圖

我們可以可視化訓(xùn)練好的決策樹。

這種可視化是一種工具,用于傳達經(jīng)過訓(xùn)練的決策樹的預(yù)測規(guī)則。

很多時候,決策樹圖會很大并且難以閱讀。有專門的軟件包?R?用于放大決策樹圖的區(qū)域。

訓(xùn)練和評估?

接下來,我們將最終模型工作流程擬合到訓(xùn)練數(shù)據(jù)并評估測試數(shù)據(jù)的性能。

該?函數(shù)將使我們的工作流程適合訓(xùn)練數(shù)據(jù),并根據(jù)我們的?chuplit?對象定義的測試數(shù)據(jù)生成預(yù)測。

tre_latit?<-?fil_tewklow?%>%??????????????????last_fit(chnpit)

我們可以在測試數(shù)據(jù)上查看我們的性能指標

tre_lft?%>%?collect_metrics()

ROC曲線

我們可以繪制 ROC 曲線來可視化我們調(diào)整的決策樹的測試集性能

treatft?%>%?collect_predictions()?%>%

混淆矩陣

我們看到我們的模型在我們的測試數(shù)據(jù)集上產(chǎn)生了 80 個假陰性和 57 個假陽性。

tre_pcis?<-?tre_s_t?%>%?collect_predictions()

隨機森林

在本節(jié)中,我們將為?chudf?數(shù)據(jù)擬合一個隨機森林模型。隨機森林采用決策樹并在預(yù)測準確性方面構(gòu)建更強大的模型。支持該算法的主要機制是對訓(xùn)練數(shù)據(jù)進行重復(fù)采樣(替換)以生成一系列決策樹模型。然后對這些模型進行平均以獲得預(yù)測空間中給定值的單個預(yù)測。

隨機森林模型選擇預(yù)測變量的隨機子集,用于在樹構(gòu)建過程中分割預(yù)測空間。算法的每次迭代都會這樣做,通常是 100 到 2,000 次。

數(shù)據(jù)特征工程

我們已經(jīng)將我們的數(shù)據(jù)分成訓(xùn)練、測試和交叉驗證集,并訓(xùn)練了我們的特征工程,??chucipe. 這些可以在我們的隨機森林工作流程中重復(fù)使用。

模型

接下來,我們指定具有以下超參數(shù)的隨機森林分類器:

  • mtry:創(chuàng)建樹模型時在每次拆分時隨機抽樣的預(yù)測變量的數(shù)量

  • trees:要擬合并最終平均的決策樹的數(shù)量

  • min_n: 節(jié)點進一步分裂所需的最小數(shù)據(jù)點數(shù)

要指定具有 的隨機森林模型?,我們需要該?ranorest()?函數(shù)。

工作流程

接下來,我們將我們的模型和配方組合到一個工作流中,以輕松管理模型構(gòu)建過程。

f_orkflw?<-?workflow()?%>%

超參數(shù)調(diào)優(yōu)

隨機網(wǎng)格搜索

我們將對隨機森林超參數(shù)進行網(wǎng)格搜索,并在交叉驗證期間根據(jù) ROC 曲線下的面積選擇性能最佳的模型。

在上一節(jié)中,我們曾經(jīng)?gridlar()?創(chuàng)建一個超參數(shù)值網(wǎng)格。這創(chuàng)建了推薦默認值的常規(guī)網(wǎng)格。

另一種進行超參數(shù)調(diào)整的方法是創(chuàng)建一個?隨機?的值網(wǎng)格。許多研究表明,這種方法比常規(guī)網(wǎng)格方法做得更好。

在下面的代碼中,我們將范圍設(shè)置為 4 到 12。

##?創(chuàng)建一個超參數(shù)值的網(wǎng)格來測試set.sd(314)rf_gd?<-?grid_random(mry()?%>%?range_set

調(diào)整超參

為了從我們的調(diào)整網(wǎng)格中找到超參數(shù)的最佳組合,我們將使用該?tugid()?函數(shù)。

##?調(diào)整隨機森林工作流程set.seed(314)rftin?<-?rfwoflow?%>%??????????????tune_grid(resamples?=?cu_olds,???????????????????????grid?=?r_id)

查看我們的超參數(shù)調(diào)整的結(jié)果。

我們可以使用模型從我們的調(diào)優(yōu)結(jié)果中選擇具有最佳整體性能的模型。在下面的代碼中,我們指定根據(jù)?rocauc?指標選擇性能最佳的模型。

##?根據(jù)roc_auc選擇最佳模型berf?<-?rftunng?%>%????????????select_best

完成工作流程

超參數(shù)調(diào)整的最后一步是?將我們的最佳模型添加到我們的工作流對象中。

fina_rkflow?<-?rfow?%>%??????????????????????finaflow(betrf)

變量重要性

為了可視化隨機森林模型的可變重要性分數(shù)。

擬合模型

接下來,我們將工作流程與訓(xùn)練數(shù)據(jù)相匹配。這是通過將我們的工作流對象傳遞給?fit()?函數(shù)來完成的。

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

一旦我們在訓(xùn)練數(shù)據(jù)上訓(xùn)練了我們的模型,我們就可以研究變量的重要性。

第一步是從我們的工作流擬合中提取訓(xùn)練好的模型。

rf?<-?ft?%>%???????????pll_orfow_fit()

變量重要性

從我們的模型返回一個?ggplot?具有可變重要性分數(shù)的對象。重要性分數(shù)基于通過超參數(shù)隨機選擇的具有最大預(yù)測能力的預(yù)測變量。

訓(xùn)練和評估

接下來,我們將最終模型工作流程擬合到訓(xùn)練數(shù)據(jù)并評估測試數(shù)據(jù)的性能。

使我們的工作流程擬合訓(xùn)練數(shù)據(jù),并根據(jù)測試數(shù)據(jù)生成預(yù)測。

我們可以在測試數(shù)據(jù)上查看我們的性能指標

rf_tfit?%>%?cole_trcs()

ROC曲線

我們可以繪制 ROC 曲線來可視化隨機森林模型的測試集性能。

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

混淆矩陣

我們看到我們的模型在我們的測試數(shù)據(jù)集上產(chǎn)生了 61 個假陰性和 48 個假陽性,優(yōu)于我們的決策樹模型。

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

數(shù)據(jù)獲取

在下面公眾號后臺回復(fù)“流失數(shù)據(jù)”,可獲取完整數(shù)據(jù)。

點擊文末?“閱讀原文”

獲取全文完整資料。

本文選自《R語言決策樹和隨機森林分類電信公司用戶流失churn數(shù)據(jù)和參數(shù)調(diào)優(yōu)、ROC曲線可視化》。

點擊標題查閱往期內(nèi)容

從決策樹到隨機森林:R語言信用卡違約分析信貸數(shù)據(jù)實例
PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯和KMEANS聚類用戶畫像
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預(yù)測分析
PYTHON集成機器學(xué)習(xí):用ADABOOST、決策樹、邏輯回歸集成模型分類和回歸和網(wǎng)格搜索超參數(shù)優(yōu)化
R語言集成模型:提升樹boosting、隨機森林、約束最小二乘法加權(quán)平均模型融合分析時間序列數(shù)據(jù)
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預(yù)測分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機森林分析心臟病數(shù)據(jù)并高維可視化
R語言基于樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言用邏輯回歸、決策樹和隨機森林對信貸數(shù)據(jù)集進行分類預(yù)測
spss modeler用決策樹神經(jīng)網(wǎng)絡(luò)預(yù)測ST的股票
R語言中使用線性模型、回歸決策樹自動組合特征因子水平
R語言中自編基尼系數(shù)的CART回歸決策樹的實現(xiàn)
R語言用rle,svm和rpart決策樹進行時間序列預(yù)測
python在Scikit-learn中用決策樹和隨機森林預(yù)測NBA獲勝者
python中使用scikit-learn和pandas決策樹進行iris鳶尾花數(shù)據(jù)分類建模和交叉驗證
R語言里的非線性模型:多項式回歸、局部樣條、平滑樣條、 廣義相加模型GAM分析
R語言用標準最小二乘OLS,廣義相加模型GAM?,樣條函數(shù)進行邏輯回歸LOGISTIC分類
R語言ISLR工資數(shù)據(jù)進行多項式回歸和樣條回歸分析
R語言中的多項式回歸、局部回歸、核平滑和平滑樣條回歸模型
R語言用泊松Poisson回歸、GAM樣條曲線模型預(yù)測騎自行車者的數(shù)量
R語言分位數(shù)回歸、GAM樣條曲線、指數(shù)平滑和SARIMA對電力負荷時間序列預(yù)測R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態(tài)可視化
如何用R語言在機器學(xué)習(xí)中建立集成模型?
R語言ARMA-EGARCH模型、集成預(yù)測算法對SPX實際波動率進行預(yù)測在python 深度學(xué)習(xí)Keras中計算神經(jīng)網(wǎng)絡(luò)集成模型R語言ARIMA集成模型預(yù)測時間序列分析R語言基于Bagging分類的邏輯回歸(Logistic Regression)、決策樹、森林分析心臟病患者
R語言基于樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言基于Bootstrap的線性回歸預(yù)測置信區(qū)間估計方法
R語言使用bootstrap和增量法計算廣義線性模型(GLM)預(yù)測置信區(qū)間
R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態(tài)可視化
Python對商店數(shù)據(jù)進行l(wèi)stm和xgboost銷售量時間序列建模預(yù)測分析
R語言隨機森林RandomForest、邏輯回歸Logisitc預(yù)測心臟病數(shù)據(jù)和可視化分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機森林分析心臟病數(shù)據(jù)并高維可視化
Matlab建立SVM,KNN和樸素貝葉斯模型分類繪制ROC曲線
matlab使用分位數(shù)隨機森林(QRF)回歸樹檢測異常值


數(shù)據(jù)分享|R語言決策樹和隨機森林分類電信公司用戶流失churn數(shù)據(jù)和參數(shù)調(diào)優(yōu)、ROC曲線可的評論 (共 條)

分享到微博請遵守國家法律
泽普县| 清新县| 治多县| 元阳县| 定南县| 天津市| 和龙市| 马尔康县| 嵊泗县| 赣榆县| 砀山县| 财经| 吉首市| 城口县| 微博| 靖安县| 内江市| 大悟县| 道孚县| 兴和县| 潢川县| 亚东县| 临猗县| 兴业县| 广河县| 中西区| 阳高县| 科技| 潼关县| 林口县| 商城县| 西和县| 拜城县| 靖州| 若羌县| 孝感市| 安乡县| 大渡口区| 通州市| 稷山县| 鄱阳县|