国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

隨機森林算法介紹及多分類預測的R實現(xiàn)

這篇具有很好參考價值的文章主要介紹了隨機森林算法介紹及多分類預測的R實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

隨機森林(Random Forest)是一種經(jīng)典的機器學習算法,是數(shù)據(jù)科學家中最受歡迎和常用的算法之一,最早由Leo Breiman和Adele Cutler于2001年提出。它是基于集成學習(Ensemble Learning)的一種方法,通過組合多個決策樹來進行預測和分類,在回歸問題中則取平均值。其最重要的特點之一是能夠處理包含連續(xù)變量和分類變量的數(shù)據(jù)集。在本文中,我們將詳細了解隨機森林的工作原理,介紹其在R中的實現(xiàn)及其優(yōu)缺點。

1. 算法基本原理

1) 隨機抽樣:在隨機森林中,每個決策樹的訓練樣本都是通過隨機抽樣得到的。隨機抽樣是指從原始訓練集中有放回地抽取一部分樣本,構成一個新的訓練集。這樣做的目的是使得每個決策樹的訓練樣本略有差異,增加決策樹之間的多樣性。

2) 隨機特征選擇:在每個決策樹的節(jié)點上,隨機森林算法會從所有特征中隨機選擇一部分特征進行分割。這樣做的目的是增加每個決策樹之間的差異性,防止某些特征過于主導整個隨機森林的決策過程。

3) 決策樹構建:使用隨機采樣的數(shù)據(jù)和隨機選擇的特征,構建多個決策樹。決策樹的構建過程中,采用通常的決策樹算法(如ID3、CART等)。

4) 隨機森林的預測:當新的樣本輸入到隨機森林中時,它會經(jīng)過每個決策樹的預測過程,最后根據(jù)決策集成的方式得到最終的預測結(jié)果。對于分類問題,最常見的集成方式是采用多數(shù)投票,即根據(jù)每個決策樹的分類結(jié)果進行投票,選擇獲得最多票數(shù)的類別作為最終的預測結(jié)果。對于回歸問題,可以采用平均預測的方式,即將每個決策樹的預測值取平均作為最終的預測結(jié)果。n

隨機森林分類預測,算法,隨機森林,分類

通過隨機抽樣和隨機特征選擇,隨機森林算法能夠減少過擬合風險,提高模型的泛化能力。同時,通過集成多個決策樹的預測結(jié)果,隨機森林能夠獲得更穩(wěn)定和準確的預測。

2. 隨機森林算法的R實現(xiàn)

以鳶尾花數(shù)據(jù)集為例,加載需要的包及數(shù)據(jù)集,未安裝的需要先安裝。

library(randomForest)
library(datasets)
library(caret)

data<-iris
str(data)

隨機森林分類預測,算法,隨機森林,分類

數(shù)據(jù)集包含150個觀測值和5個變量。物種被視為響應變量,為因子變量。

data$Species <- as.factor(data$Species)
table(data$Species)

隨機森林分類預測,算法,隨機森林,分類

可以看到結(jié)局變量各個分類分布平衡。

1)首先進行隨機抽樣。

set.seed(222)
ind <- sample(2, nrow(data), replace = TRUE, prob = c(0.7, 0.3))
train <- data[ind==1,]
test <- data[ind==2,]

其中測試集中有106個sample,訓練集中有44個sample。

2)然后進行模型構建,這里使用默認參數(shù)擬合隨機森林模型。

rf <- randomForest(Species~., data=train, proximity=TRUE)

3)參數(shù)調(diào)整

參數(shù)調(diào)整是優(yōu)化隨機森林模型性能的重要步驟。下面是一些常用的參數(shù)調(diào)整方法:

樹的數(shù)量(ntree):增加樹的數(shù)量可以提高模型的穩(wěn)定性和準確性,但也會增加計算時間。一般來說,增加樹的數(shù)量直到模型性能趨于穩(wěn)定為止。

特征數(shù)(mtry):mtry參數(shù)控制每個決策樹在分裂節(jié)點時隨機選擇的特征數(shù)。較小的mtry值會增加樹之間的差異性,但可能會降低模型的準確性。較大的mtry值會增加模型的穩(wěn)定性,但可能會導致模型過度擬合。一般推薦使用默認值sqrt(p),其中p是特征的總數(shù)。

決策樹的最大深度(max_depth):限制決策樹的最大深度可以防止過度擬合。通過限制最大深度,可以控制模型的復雜度并提高泛化能力。

節(jié)點分割的最小樣本數(shù)(min_samples_split):限制節(jié)點分割所需的最小樣本數(shù)可以控制決策樹的生長。較小的值會增加模型的復雜性,可能導致過度擬合。較大的值會限制模型的生長,可能導致欠擬合。選擇合適的值需要根據(jù)數(shù)據(jù)集的大小和特征的分布進行調(diào)整。

節(jié)點分割的最小準則(criterion):決定節(jié)點分割的準則,常用的有基尼系數(shù)(gini)和信息增益(entropy)。這兩個準則在大多數(shù)情況下表現(xiàn)相似,通常選擇默認值基尼系數(shù)。

其他參數(shù):還有其他一些參數(shù)可以調(diào)整,如樣本權重、葉節(jié)點最小樣本數(shù)等,根據(jù)具體問題進行調(diào)整。

# 如果需要調(diào)整參數(shù),可以使用tuneRF()函數(shù)進行自動調(diào)參。

tuned_rf_model <- tuneRF(train[, -5], train[, 5], ntreeTry = 500,

? ? ? ? ? ? ? ? ? ? ? ?stepFactor = 1.5, improve = 0.01, trace = TRUE,

? ? ? ? ? ? ? ? ? ? ? ?plot = TRUE)

隨機森林分類預測,算法,隨機森林,分類

隨機森林分類預測,算法,隨機森林,分類

可以看到mtry=3時,OOBerror最小,因此模型中應該設置mtry=3。

在進行參數(shù)調(diào)整時,可以使用交叉驗證來評估模型性能,并選擇表現(xiàn)最好的參數(shù)組合。例如,可以使用k折交叉驗證,將訓練集分成k個子集,每次使用其中k-1個子集作為訓練數(shù)據(jù),剩余一個子集作為驗證數(shù)據(jù),重復進行k次并計算平均性能指標。

隨機森林分類預測,算法,隨機森林,分類

R中的caret包為調(diào)整機器學習算法的參數(shù)提供了一個很好的工具。但并非所有的機器學習算法都可以在caret中進行調(diào)整。只有那些影響較大的算法參數(shù)才可以在caret中進行調(diào)整。因此,caret中只有mtry參數(shù)可供調(diào)諧。原因是它對最終準確度的影響,而且它必須根據(jù)經(jīng)驗為一個數(shù)據(jù)集找到。ntree參數(shù)則不同,它可以隨心所欲地放大,并在一定程度上繼續(xù)提高精度。它的調(diào)整不那么困難或關鍵,而且可能更多的是受到可用計算時間的限制。

R中實現(xiàn)方式如下:

# 定義參數(shù)網(wǎng)格
rf_grid <- expand.grid(mtry = seq(2, 6, by = 1))

# 設置交叉驗證方案
control <- trainControl(method = "cv", number = 10)

# 運行交叉驗證
rf_model <- train(Species ~ ., data = train, method = "rf", trControl = control, tuneGrid = rf_grid, importance = TRUE)

# 輸出最佳參數(shù)組合和性能指標
print(rf_model$bestTune)

隨機森林分類預測,算法,隨機森林,分類

print(rf_model$results)

隨機森林分類預測,算法,隨機森林,分類

可以看到在mtry=3時,Accuracy最高。

best_model <- rf_model$finalModel

將調(diào)優(yōu)后的參數(shù)賦值給best_model。

在上面的代碼中,我們首先將數(shù)據(jù)集劃分為訓練集和測試集。然后定義了一個包含參數(shù)范圍(mtry)的網(wǎng)格。接下來,使用trainControl()函數(shù)設置了一個十折折交叉驗證方案,并運行train()函數(shù)來進行模型擬合和性能評估。最后,輸出了最佳參數(shù)組合和各個參數(shù)組合下的性能指標。需要注意的是,在實際應用中,可能需要嘗試多個不同的參數(shù)網(wǎng)格,并對每個網(wǎng)格進行交叉驗證以選擇最優(yōu)參數(shù)組合。

3)接下來在測試集中進行預測。

# 預測測試集數(shù)據(jù)
predictions <- predict(best_model, newdata = test)

# 繪制混淆矩陣
result_matrix<-confusionMatrix(table(predictions, test$Species))
result_matrix

隨機森林分類預測,算法,隨機森林,分類

混淆矩陣中顯示了預測各個類別的敏感性,特異性等指標,總體Accuracy為0.9388,具有很好的預測效能。

#模型的各個類別預測效能

result_matrix$byClass

隨機森林分類預測,算法,隨機森林,分類

#預測各個類別概率

rf_pred <- predict(best_model, test, type = 'prob')
rf_pred <- data.frame(rf_pred)
colnames(rf_pred) <- paste0(colnames(rf_pred), "_pred_RF")

構建繪圖數(shù)據(jù),該部分在我前面的博客里也講過做法,詳情見,這里再呈現(xiàn)一下。

Library(multiROC)
true_label <- dummies::dummy(test_df$Species, sep = ".")
true_label <- data.frame(true_label)
colnames(true_label) <- gsub(".*?\\.", "", colnames(true_label))
colnames(true_label) <- paste(colnames(true_label), "_true")
final_df <- cbind(true_label, rf_pred)
roc_res <- multi_roc(final_df, force_diag=F)
pr_res <- multi_pr(final_df, force_diag=F)
plot_roc_df <- plot_roc_data(roc_res)
plot_pr_df <- plot_pr_data(pr_res)
##AUC值
auc_value<-roc_res_value$AUC
auc_num<-unlist(auc_value)

隨機森林分類預測,算法,隨機森林,分類

# 繪制ROC曲線
require(ggplot2)
ggplot(plot_roc_df, aes(x = 1-Specificity, y=Sensitivity)) +
?geom_path(aes(color = Group), size=1.5) +
?geom_segment(aes(x = 0, y = 0, xend = 1, yend = 1),
? ? ? ? ? ? ? colour='grey', linetype = 'dotdash') +
?theme_bw() +
? theme(plot.title = element_text(hjust = 0.5),
? ? ? ?legend.justification=c(1, 0), legend.position=c(.95, .05),
? ? ? ?legend.title=element_blank(),
? ? ? ?legend.background = element_rect(fill=NULL, size=0.5,
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?linetype="solid", colour ="black"))

隨機森林分類預測,算法,隨機森林,分類

評估變量重要性

Importance(best_model)

隨機森林分類預測,算法,隨機森林,分類

此處“Mean Decrease Accuracy”和“Mean Decrease Gini”為隨機森林模型中的兩個重要指標。其中,“mean decrease accuracy”表示隨機森林預測準確性的降低程度,該值越大表示該變量的重要性越大;“mean decrease gini”計算每個變量對分類樹每個節(jié)點上觀測值的異質(zhì)性的影響,從而比較變量的重要性。該值越大表示該變量的重要性越大。

3. 算法優(yōu)缺點

1)隨機森林算法相比于其他機器學習算法具有以下優(yōu)勢

高準確性:通過組合多個決策樹,利用集成學習的方式提高了預測的準確性。它能夠處理大量的訓練數(shù)據(jù),并且對于噪聲和缺失數(shù)據(jù)具有較好的魯棒性。

可擴展性:可以有效地處理具有大量特征的數(shù)據(jù)集,并且能夠處理高維度的輸入。它可以在較短的時間內(nèi)對大規(guī)模數(shù)據(jù)集進行訓練,并且具有較快的預測速度。

特征選擇:可以通過計算特征的重要性來評估每個特征對于預測的貢獻程度。這可以幫助我們識別出對于問題最為重要的特征,從而進行特征選擇和降維,提高模型的效率和性能。

抗過擬合:通過隨機選擇訓練樣本和特征的方式,降低了單個決策樹過擬合的風險。同時,隨機森林中的多個決策樹進行投票或平均預測,可以減少模型的方差,提高了泛化能力。

處理非線性關系:能夠有效地處理非線性關系,不需要對數(shù)據(jù)進行過多的預處理或進行特征工程。它可以捕捉到特征之間的復雜非線性關系,從而更好地擬合數(shù)據(jù)。

魯棒性:對于缺失值和噪聲具有較好的魯棒性。它可以處理具有缺失值的數(shù)據(jù),并且對于噪聲和異常值的影響較小。

總的來說,隨機森林算法在準確性、可擴展性、特征選擇、抗過擬合、處理非線性關系和魯棒性等方面都具有優(yōu)勢,因此在許多實際應用中被廣泛采用。

2)缺點

決策邊界的不連續(xù)性:由于隨機森林是由多個決策樹組成的,因此它的決策邊界是由決策樹的集合構成的。這可能導致決策邊界出現(xiàn)不連續(xù)的情況,對于某些問題可能不夠精細。

訓練時間較長:相比于一些簡單的線性模型,隨機森林的訓練時間可能較長。因為它需要構建多個決策樹并進行集成,每個決策樹的構建都需要消耗時間。

難以解釋性:算法的預測結(jié)果可能較難以解釋。由于它是由多個決策樹集成而成,決策樹之間的復雜關系可能使得解釋模型的預測過程變得困難。

對于高維稀疏數(shù)據(jù)不太適用:在處理高維稀疏數(shù)據(jù)時可能表現(xiàn)不佳。由于決策樹在高維空間中容易出現(xiàn)過擬合問題,而隨機森林的集成學習也無法完全克服這個問題。

超參數(shù)調(diào)優(yōu)的挑戰(zhàn):有多個超參數(shù)需要調(diào)優(yōu),如決策樹數(shù)量、最大深度等。在實際應用中,選擇合適的超參數(shù)可能需要一定的經(jīng)驗和調(diào)試,增加了調(diào)優(yōu)的難度。

需要注意的是,隨機森林算法的優(yōu)勢和缺點是相對于其他機器學習算法而言的,不同的算法在不同的問題和數(shù)據(jù)集上可能具有不同的表現(xiàn)。在實際應用中,選擇合適的算法要根據(jù)具體問題的特點和需求進行綜合考量。

Reference:

https://linuxcpp.0voice.com/?id=89171

https://stackoverflow.com/questions/34169774/plot-roc-for-multiclass-roc-in-proc-package

http://t.csdn.cn/T6mFJ

更多信息與交流,歡迎關注公眾號:單細胞學會

直接掃描下方二維碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-708570.html

到了這里,關于隨機森林算法介紹及多分類預測的R實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 使用python中的隨機森林進行數(shù)據(jù)分類預測

    以下是使用Python中的隨機森林進行數(shù)據(jù)分類預測的示例代碼: 這個示例代碼使用 sklearn 庫中的 RandomForestClassifier 類來構建隨機森林模型。首先,將數(shù)據(jù)集劃分為訓練集和測試集,然后創(chuàng)建一個隨機森林模型,并使用訓練集對其進行訓練。最后,用測試集數(shù)據(jù)進行預測,并計算

    2024年02月16日
    瀏覽(27)
  • Python實現(xiàn)PSO粒子群優(yōu)化算法優(yōu)化隨機森林分類模型(RandomForestClassifier算法)項目實戰(zhàn)

    Python實現(xiàn)PSO粒子群優(yōu)化算法優(yōu)化隨機森林分類模型(RandomForestClassifier算法)項目實戰(zhàn)

    說明:這是一個機器學習實戰(zhàn)項目(附帶數(shù)據(jù)+代碼+文檔+視頻講解),如需數(shù)據(jù)+代碼+文檔+視頻講解可以直接到文章最后獲取。 PSO是粒子群優(yōu)化算法(Particle Swarm Optimization)的英文縮寫,是一種基于種群的隨機優(yōu)化技術,由Eberhart和Kennedy于1995年提出。粒子群算法模仿昆蟲、

    2024年02月13日
    瀏覽(23)
  • Python實現(xiàn)貝葉斯優(yōu)化器(Bayes_opt)優(yōu)化隨機森林分類模型(RandomForestClassifier算法)項目實戰(zhàn)

    Python實現(xiàn)貝葉斯優(yōu)化器(Bayes_opt)優(yōu)化隨機森林分類模型(RandomForestClassifier算法)項目實戰(zhàn)

    說明:這是一個機器學習實戰(zhàn)項目(附帶 數(shù)據(jù)+代碼+文檔+視頻講解 ),如需 數(shù)據(jù)+代碼+文檔+視頻講解 可以直接到文章最后獲取。 貝葉斯優(yōu)化器(BayesianOptimization) 是一種黑盒子優(yōu)化器,用來尋找最優(yōu)參數(shù)。 貝葉斯優(yōu)化器是基于高斯過程的貝葉斯優(yōu)化,算法的參數(shù)空間中有大

    2024年02月11日
    瀏覽(33)
  • 分類算法系列⑥:隨機森林

    分類算法系列⑥:隨機森林

    目錄 集成學習方法之隨機森林 1、集成學習方法 2、隨機森林 3、隨機森林原理 為什么采用BootStrap抽樣 為什么要有放回地抽樣 4、API 5、代碼 代碼解釋 結(jié)果 6、隨機森林總結(jié) ? ??作者介紹:雙非本科大三網(wǎng)絡工程專業(yè)在讀,阿里云專家博主,專注于Java領域?qū)W習,擅長web應用

    2024年02月10日
    瀏覽(20)
  • 無涯教程-分類算法 - 隨機森林

    隨機森林是一種監(jiān)督學習算法,可用于分類和回歸,但是,它主要用于分類問題,眾所周知,森林由樹木組成,更多樹木意味著更堅固的森林。同樣,隨機森林算法在數(shù)據(jù)樣本上創(chuàng)建決策樹,然后從每個樣本中獲取預測,最后通過投票選擇最佳解決方案。它是一種集成方法,

    2024年02月11日
    瀏覽(15)
  • 四、分類算法 - 隨機森林

    四、分類算法 - 隨機森林

    目錄 1、集成學習方法 2、隨機森林 3、隨機森林原理 4、API 5、總結(jié) sklearn轉(zhuǎn)換器和估算器 KNN算法 模型選擇和調(diào)優(yōu) 樸素貝葉斯算法 決策樹 隨機森林

    2024年02月22日
    瀏覽(18)
  • 分類算法-隨機森林實戰(zhàn)案例

    分類算法-隨機森林實戰(zhàn)案例

    ????????隨機森林是一種 有監(jiān)督學習算法 ,是以決策樹為基學習器的 集成學習算法 。???????? ????????那什么是有監(jiān)督學習呢?有監(jiān)督學習就是把有已知結(jié)果的數(shù)據(jù)集拿去訓練,如果訓練結(jié)果與標準答案的精度足夠高就可以使用這個模型去預測或者分類未知結(jié)果

    2023年04月16日
    瀏覽(34)
  • 時間序列預測 | Matlab基于鯨魚算法優(yōu)化隨機森林(WOA-RF)與隨機森林(RF)的時間序列預測對比

    時間序列預測 | Matlab基于鯨魚算法優(yōu)化隨機森林(WOA-RF)與隨機森林(RF)的時間序列預測對比

    效果一覽 文章概述 時間序列預測 | Matlab基于鯨魚算法優(yōu)化隨機森林(WOA-RF)與隨機森林(RF)的時間序列預測對比 評價指標包括:MAE、RMSE和R2等,代碼質(zhì)量極高,方便學習和替換數(shù)據(jù)。要求2018版本及以上。 部分源碼

    2024年02月08日
    瀏覽(31)
  • 為葡萄酒數(shù)據(jù)集構造SVM分類器和使用隨機森林回歸模型預測葡萄酒質(zhì)量

    為葡萄酒數(shù)據(jù)集構造SVM分類器和使用隨機森林回歸模型預測葡萄酒質(zhì)量

    目錄 前言 一、實驗目的 二、實驗環(huán)境 三、實驗內(nèi)容與結(jié)果 1、SVM(support vector Machine)是什么? 2、SVM能干什么? 3、SVM如何實現(xiàn)? 4、獨熱編碼:獨熱編碼(One-Hot Encoding) - 知乎 5、?隨機森林算法的基本原理 四、模型構建 1、讀入數(shù)據(jù) 2、數(shù)據(jù)初始化 3、訓練模型,評價分類器

    2023年04月25日
    瀏覽(27)
  • 使用IBM SPSS Modeler進行隨機森林算法預測

    使用IBM SPSS Modeler進行隨機森林算法預測

    IBM SPSS產(chǎn)品系列最主要的兩款軟件為IBM SPSS Statistics和IBM SPSS Modeler。 IBM SPSS Statistics主要用于統(tǒng)計分析,如均值比較、方差分析、相關分析、回歸分析、聚類分析、因子分析、非參數(shù)檢驗等等。一般應用于數(shù)據(jù)量較小的分析,比如在學校的時候用的多,一般直接錄入數(shù)據(jù)或?qū)?/p>

    2023年04月13日
    瀏覽(43)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包