
說明
隨機森林是另一類可用的集成學習方法,該算法在訓練過程中將產(chǎn)生多棵決策樹,每棵決策樹會根據(jù)輸入數(shù)據(jù)集產(chǎn)生相應的預測輸出,算法采用投票機制選擇類別眾數(shù)做為預測結(jié)果。
操作
導入隨機森林包:
library(randomForest)
使用隨機森林分類器處理訓練數(shù)據(jù):
churn.rf = randomForest(churn ~ .,data = trainset,importance = T)
churn.rf
Call:
randomForest(formula = churn ~ ., data = trainset, importance = T)
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 4
OOB estimate of error rate: 5.27%
Confusion matrix:
yes no class.error
yes 245 97 0.28362573
no 25 1948 0.01267106
利用訓練好的模型對測試集進行分類預測:
churn.prediction = predict(churn.rf,testset)
類似其它分類處理,產(chǎn)生分類表:
table(churn.prediction,testset$churn)
churn.prediction yes no
yes 111 7
no 30 870
調(diào)用plot函數(shù)繪制森林對象均方差:
plot(churn.rf)
隨機森林的均方差
根據(jù)建立好的模型評估各屬性的重要度:
importance(churn.rf)
yes no MeanDecreaseAccuracy MeanDecreaseGini
international_plan 68.9592890 54.118994 72.190204 50.35584
voice_mail_plan 18.8899994 15.832400 19.607844 10.44601
number_vmail_messages 21.3080062 16.262770 22.068514 19.05619
total_day_minutes 28.3237379 30.323756 39.961077 79.91474
total_day_calls 0.6325725 -1.131930 -0.802642 20.80946
total_day_charge 28.4798708 28.146414 35.858906 77.84837
total_eve_minutes 18.5242988 20.572464 24.484322 42.99373
total_eve_calls -3.3431379 -2.301767 -3.495801 17.45619
total_eve_charge 20.4379809 20.619705 24.489771 44.02855
total_night_minutes 0.9451961 16.105720 16.694651 22.93663
total_night_calls -0.3497164 2.202619 1.869193 19.94091
total_night_charge 0.1110824 15.977083 16.593633 22.22769
total_intl_minutes 17.3951655 20.063485 24.967698 26.05059
total_intl_calls 37.3613313 23.415764 35.497785 33.03289
total_intl_charge 16.7925666 19.636891 24.498369 26.60077
number_customer_service_calls 79.7530696 59.731615 85.221845 67.29635
調(diào)用varlmPlot函數(shù)繪制變量重要性曲線
varImpPlot(churn.rf)
變量重要性示例
調(diào)用margin及plot函數(shù)并繪制邊緣累計分布圖:
margins.rf = margin(churn.rf,trainset)
plot(margins.rf)
隨機森林算法邊緣累積分布圖
還可以用直方圖來繪制隨機森林的邊緣分布:
hist(margins.rf,main = "Margines of Random Forest for churn dataset")
邊緣分布直方圖
調(diào)用boxplot繪制隨機森林各類別邊緣的箱線圖
boxplot(margins.rf ~ trainset$churn,main = "Margines of Random Forest for churn dataset by class")
隨機森林類別邊緣箱圖
原理:
隨機森林算法目標是通過將多個弱學習機(如單棵決策樹)組合得到一個強學習機,算法的處理過程與bagging方法非常相似,假設(shè)當擁有N個特征數(shù)為M的樣例,首先采用bootstrap對數(shù)據(jù)集進行采樣,每次隨機采樣N個樣本作為單個決策樹的訓練數(shù)據(jù)集。在每個節(jié)點,算法首先隨機選取m(m << M)個變量,從它們中間找到能夠提供最佳分割效果的預測屬性。
然后,算法在不剪枝的前提下生成單顆決策樹,最后從每個決策樹都得到一個分類預測結(jié)果。
如果是回歸分析,算法將取所有預測的平均值或者加權(quán)平均值作為最后剛出,如果是分類問題,則選擇類別預測眾數(shù)做為最終預測輸出。
隨機森林包括兩個參數(shù),ntree(決策樹個數(shù))和mtry(可用來尋找最佳特征的特征個數(shù)),而bagging算法只使用了一個ntree參數(shù),因此,如果將mtry設(shè)置成與訓練數(shù)據(jù)集特征值一樣大時,隨機森林算法就等同于bagging算法。
本例利用randomForest包提供的隨機森林算法建立了分類模型,將importance值設(shè)置為“T”,以確保對預測器的重要性進行評估。
與bagging和boosting方法類似,一旦隨機森林的模型構(gòu)建完成,我們就能利用其對測試數(shù)據(jù)集進行預測,并得到相應的分類表。
randomForest包還提供了importance和varlmpPlot函數(shù)則可以通過繪制平均精確度下降或者平均基尼下降曲線實現(xiàn)屬性重要性的可視化。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內(nèi)涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10