日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习第18篇 - Boruta特征变量筛选(2)

發(fā)布時間:2025/3/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习第18篇 - Boruta特征变量筛选(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前面(機(jī)器學(xué)習(xí)第17篇 - 特征變量篩選(1))評估顯示Boruta在生物數(shù)據(jù)中具有較高的特征變量選擇準(zhǔn)確度,下面就具體看下如何應(yīng)用Boruta進(jìn)行特征變量選擇。

Boruta算法概述

Boruta得名于斯拉夫神話中的樹神,可以識別所有對分類或回歸有顯著貢獻(xiàn)的變量。其核心思想是統(tǒng)計比較數(shù)據(jù)中真實存在的特征變量與隨機(jī)加入的變量(也稱為影子變量)的重要性。

  • 初次建模時,把原始變量拷貝一份作為影子變量。

  • 原始變量的值隨機(jī)化后作為對應(yīng)影子變量的值 (隨機(jī)化就是打亂原始變量值的順序)。

  • 使用隨機(jī)森林建模并計算每個變量的重要性得分。

  • 對于每一個真實特征變量,統(tǒng)計檢驗其與所有影子變量的重要性最大值的差別。

    重要性顯著高于影子變量的真實特征變量定義為重要。

    重要性顯著低于影子變量的真實特征變量定義為不重要。

  • 所有不重要的變量和影子變量移除。

    基于新變量構(gòu)成的數(shù)據(jù)集再次重復(fù)剛才的建模和選擇過程,直到所有變量都被分類為重要或不重要,或達(dá)到預(yù)先設(shè)置的迭代次數(shù)。

  • 其優(yōu)點是:

  • 同時適用于分類問題和回歸問題

  • 考慮多個變量的關(guān)系信息

  • 改善了常用于變量選擇的隨機(jī)森林變量重要性計算方式

  • 會輸出所有與模型性能相關(guān)的變量而不是只返回一個最小變量集合

  • 可以處理變量的互作

  • 可以規(guī)避隨機(jī)森林自身計算變量重要性的隨機(jī)波動性問題和不能計算顯著性的問題

  • Boruta算法實戰(zhàn)

    # install.packages("Boruta")library(Boruta)set.seed(1) boruta <- Boruta(x=train_data, y=train_data_group, pValue=0.01, mcAdj=T, maxRuns=300) boruta## Boruta performed 299 iterations in 1.452285 mins. ## 54 attributes confirmed important: AC002073_cds1_at, D13633_at, ## D31887_at, D55716_at, D78134_at and 49 more; ## 6980 attributes confirmed unimportant: A28102, AB000114_at, ## AB000115_at, AB000220_at, AB000381_s_at and 6975 more; ## 36 tentative attributes left: D31886_at, D43950_at, D79997_at, ## HG2279.HT2375_at, HG417.HT417_s_at and 31 more;

    速度還是可以的(尤其是跟后面要介紹的 RFE 的速度比起來)

    boruta$timeTaken## Time difference of 1.452285 mins

    查看下變量重要性鑒定結(jié)果(實際上面的輸出中也已經(jīng)有體現(xiàn)了),54個重要的變量,36個可能重要的變量 (tentative variable, 重要性得分與最好的影子變量得分無統(tǒng)計差異),6,980個不重要的變量。

    table(boruta$finalDecision)## ## Tentative Confirmed Rejected ## 36 54 6980boruta$finalDecision[boruta$finalDecision=="Confirmed"]## AC002073_cds1_at D13633_at D31887_at D55716_at ## Confirmed Confirmed Confirmed Confirmed ## D78134_at D82348_at D87119_at HG2874.HT3018_at ## Confirmed Confirmed Confirmed Confirmed ## HG4074.HT4344_at HG4258.HT4528_at J02645_at J03909_at ## Confirmed Confirmed Confirmed Confirmed ## K02268_at L17131_rna1_at L27071_at L42324_at ## Confirmed Confirmed Confirmed Confirmed ## M10901_at M57710_at M60830_at M63138_at ## Confirmed Confirmed Confirmed Confirmed ## M63835_at U14518_at U23143_at U28386_at ## Confirmed Confirmed Confirmed Confirmed ## U37352_at U38896_at U56102_at U59309_at ## Confirmed Confirmed Confirmed Confirmed ## U63743_at U68030_at X01060_at X02152_at ## Confirmed Confirmed Confirmed Confirmed ## X14850_at X16983_at X17620_at X56494_at ## Confirmed Confirmed Confirmed Confirmed ## X62078_at X67155_at X67951_at X69433_at ## Confirmed Confirmed Confirmed Confirmed ## Z11793_at Z21966_at Z35227_at Z96810_at ## Confirmed Confirmed Confirmed Confirmed ## U16307_at HG3928.HT4198_at V00594_s_at X03689_s_at ## Confirmed Confirmed Confirmed Confirmed ## M14328_s_at X91911_s_at X12530_s_at X81836_s_at ## Confirmed Confirmed Confirmed Confirmed ## HG1980.HT2023_at M94880_f_at ## Confirmed Confirmed ## Levels: Tentative Confirmed Rejected

    繪制Boruta算法運(yùn)行過程中各個變量的重要性得分的變化 (綠色是重要的變量,紅色是不重要的變量,藍(lán)色是影子變量,黃色是Tentative變量)。

    這個圖也可以用來查看是否有必要增加迭代的次數(shù)以便再次確認(rèn)Tentative變量中是否有一部分為有意義的特征變量。從下圖來看,黃色變量部分隨著迭代還是有部分可能高于最高值,可以繼續(xù)嘗試增加迭代次數(shù)。

    Boruta::plotImpHistory(boruta)

    繪制鑒定出的變量的重要性。變量少了可以用默認(rèn)繪圖,變量多時繪制的圖看不清,需要自己整理數(shù)據(jù)繪圖。

    # ?plot.Boruta# plot(boruta)

    定義一個函數(shù)提取每個變量對應(yīng)的重要性值。

    library(dplyr) boruta.imp <- function(x){imp <- reshape2::melt(x$ImpHistory, na.rm=T)[,-1]colnames(imp) <- c("Variable","Importance")imp <- imp[is.finite(imp$Importance),]variableGrp <- data.frame(Variable=names(x$finalDecision), finalDecision=x$finalDecision)showGrp <- data.frame(Variable=c("shadowMax", "shadowMean", "shadowMin"),finalDecision=c("shadowMax", "shadowMean", "shadowMin"))variableGrp <- rbind(variableGrp, showGrp)boruta.variable.imp <- merge(imp, variableGrp, all.x=T)sortedVariable <- boruta.variable.imp %>% group_by(Variable) %>% summarise(median=median(Importance)) %>% arrange(median)sortedVariable <- as.vector(sortedVariable$Variable)boruta.variable.imp$Variable <- factor(boruta.variable.imp$Variable, levels=sortedVariable)invisible(boruta.variable.imp) }boruta.variable.imp <- boruta.imp(boruta)head(boruta.variable.imp)## Variable Importance finalDecision ## 1 A28102 0 Rejected ## 2 A28102 0 Rejected ## 3 A28102 0 Rejected ## 4 A28102 0 Rejected ## 5 A28102 0 Rejected ## 6 A28102 0 Rejected

    只繪制Confirmed變量。

    library(YSX)sp_boxplot(boruta.variable.imp, melted=T, xvariable = "Variable", yvariable = "Importance",legend_variable = "finalDecision", legend_variable_order = c("shadowMax", "shadowMean", "shadowMin", "Confirmed"),xtics_angle = 90)

    提取重要的變量 (可能重要的變量可提取可不提取)

    boruta.finalVars <- data.frame(Item=getSelectedAttributes(boruta, withTentative = F), Type="Boruta")

    也可以使用TentativeRoughFix函數(shù)進(jìn)一步計算。這一步的計算比較粗糙,根據(jù)重要性的值高低判斷Tentative類型的變量是否要為Confirmed或Rejected。

    Tentative.boruta <- TentativeRoughFix(boruta)

    機(jī)器學(xué)習(xí)系列教程

    從隨機(jī)森林開始,一步步理解決策樹、隨機(jī)森林、ROC/AUC、數(shù)據(jù)集、交叉驗證的概念和實踐。

    文字能說清的用文字、圖片能展示的用、描述不清的用公式、公式還不清楚的寫個簡單代碼,一步步理清各個環(huán)節(jié)和概念。

    再到成熟代碼應(yīng)用、模型調(diào)參、模型比較、模型評估,學(xué)習(xí)整個機(jī)器學(xué)習(xí)需要用到的知識和技能。

  • 機(jī)器學(xué)習(xí)算法 - 隨機(jī)森林之決策樹初探(1)

  • 機(jī)器學(xué)習(xí)算法-隨機(jī)森林之決策樹R 代碼從頭暴力實現(xiàn)(2)

  • 機(jī)器學(xué)習(xí)算法-隨機(jī)森林之決策樹R 代碼從頭暴力實現(xiàn)(3)

  • 機(jī)器學(xué)習(xí)算法-隨機(jī)森林之理論概述

  • 隨機(jī)森林拖了這么久,終于到實戰(zhàn)了。先分享很多套用于機(jī)器學(xué)習(xí)的多種癌癥表達(dá)數(shù)據(jù)集 https://file.biolab.si/biolab/supp/bi-cancer/projections/。

  • 機(jī)器學(xué)習(xí)算法-隨機(jī)森林初探(1)

  • 機(jī)器學(xué)習(xí) 模型評估指標(biāo) - ROC曲線和AUC值

  • 機(jī)器學(xué)習(xí) - 訓(xùn)練集、驗證集、測試集

  • 機(jī)器學(xué)習(xí) - 隨機(jī)森林手動10 折交叉驗證

  • 一個函數(shù)統(tǒng)一238個機(jī)器學(xué)習(xí)R包,這也太贊了吧

  • 基于Caret和RandomForest包進(jìn)行隨機(jī)森林分析的一般步驟 (1)

  • Caret模型訓(xùn)練和調(diào)參更多參數(shù)解讀(2)

  • 機(jī)器學(xué)習(xí)相關(guān)書籍分享

  • 基于Caret進(jìn)行隨機(jī)森林隨機(jī)調(diào)參的4種方式

  • 送你一個在線機(jī)器學(xué)習(xí)網(wǎng)站,真香!

  • UCI機(jī)器學(xué)習(xí)數(shù)據(jù)集

  • 機(jī)器學(xué)習(xí)第17篇 - 特征變量篩選(1)

  • 總結(jié)

    以上是生活随笔為你收集整理的机器学习第18篇 - Boruta特征变量筛选(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。