一、隨機森林原理解釋及其引數說明
二、函式、引數的中文解釋
function model = classrf_train(x, y, ntree, mtry, extra_options) %隨機森林中模型的訓練
x表示輸入的資料矩陣
y輸出ntree 設定的樹的數目
mtry的預設值為:floor(sqrt(size(x,2)), 表示不超過矩陣x列數的二次開根值的整數。
extra_options 包含很多控制rf的項
extra_optioons.replace 取值為1或0,預設值為1,表示是否做變數替換
extra_options.classwt 表示預先知道的類,函式首先得到乙個公升序排列的標籤然後給先前的類同樣的排序。
extra_options.cutoff 只在分類器中使用的乙個向量,長度等於類的數目。對類的觀察值是取對cutoff投票佔的最大比例的乙個。
extra_options.strata 用於分層抽樣
extra_options.sampsize 樣本的長度
extra_options.nodesize 表示終端節點的最小值,這個引數設定得越大會使更小的樹生長,耗時最少。
extra_options.importance 判斷是否需要對**器的extra_options.localimp 決定是否對casewise的重要性度量進行計算。
extra_options.proximity 判別是否計算行之間的距離
extra_options.oob_prox 判斷是否計算out-of-bag
extra_options.do_trace 如果設定為true,當隨機森林執行的時候輸出更多冗長的資料。如果設定為一些整數,輸出每個追蹤樹。
extra_options.keep_inbag 通過樹的數目矩陣跟蹤每個樣本在樹上的in-bag。 norm_votes 統計每一類的投票數
importance 對於分類器來說是乙個列數等於類別數加二,第一列計算精度下降值。在ncalss+1列表示所有類平均精度減少值。最後一列表示gini指數平均減小值。在隨機森林用於回歸的應用中importance表示的含義又不一樣,我們只用到分類的作用,所以對回歸的含義不做介紹。
importancesd 標準差
localimp 包含importance標準化殘差測量值的矩陣 ntree 生長的樹的數目
mtry 在每乙個**節點處樣本**器的個數。
votes 乙個矩陣,行表示每乙個輸入資料點,列表示每一類,記錄投票數。 proximity 如果proximity=true表示隨機森林被呼叫。
combine 把樹結合起來
gettree(rfobj, k=1, labelvar=false),這個函式的作用是從隨機森林中提取樹的結構,rfob表示對應的隨機森林,k表示要提取的那棵樹,, labelvar表示是否是最好的標籤用於變數分離和類的**。在分類器**中**點用整數表示,比如**器如果有四個引數,**點是十三,就表示成(1.0.1.1)因為
if labelvar=true) 乙個列數為六,行數等於樹中節點總數的矩陣。六列分別為:left daughter,如果是末端左子女節點取值為0。right daughter,如果這個右子節點是末端節點則取值為零。
split var表示哪個變數用來**節點,如果是末端節點則取零。split point 表示最佳**的位置。 status 是否是終端節點-1/1. prediction 對節點的** 用0表示還沒有到達終端節點。
grow(x, how.many, ...) 給現有的樹的群體增加新的額外的樹。x表示隨機森林的類,how.many表示增加到隨機森林x中的樹的個數。
importance(x, type=null, class=null, scale=true, ...) x表示隨機森林中的類,type表示測量的型別,取值為1的時候表示不準確度,取值為2的時候表示節點不純度測量。class 返回值表示哪乙個具體的類被測量了。scale 對測量值進行變換,求他們的標準差。對於分類器來說,節點不純度是通過gini係數求解的。返回值為乙個矩陣,行表示每個**變數,列表示不同的importance測量值。
margin(x, ...) 從隨機森林分類器中計算或繪製**器的邊緣。
mdsplot(rf, fac, k=2, palette=null, pch=20, ...) 隨機森林中相似矩陣的多維測量。rf 表示包含近鄰成分的隨機森林的類。fac 訓練rf的乙個響應值。k表示伸縮座標的維數。palette用顏色要區分不同的類。
outlier(x, cls=null, ...) 基於相似矩陣計算無關測量值。x指的是相似矩陣。cls表示相似矩陣所在的行屬於的類。如果沒有給出,則預設為所有資料來自同乙個類。
partialplot(x, pred.data, x.var, which.class, w, plot = true, add = false, n.pt =
min(length(unique(pred.data[, xname])), 51), rug = true, xlab=deparse(substitute(x.var)), ylab="", main=paste("partial dependence on", deparse(substitute(x.var))), ...) 用圖表描述區域性的乙個變數對類的概率的邊緣效應。
plot(x, type="l", main=deparse(substitute(x)), ...)計算錯誤率
predict(object, newdata, type="response",norm.votes=true, predict.all=false, proximity=false, nodes=false,cutoff, ...) 用隨機森林**測試資料。object表示隨機森林類的物件,由隨機森林函式建立。newdata表示包含新資料的資料幀或者矩陣。可表示響應,概率,票數,指輸出的型別。nodes判斷是否是終點。proximity判斷是否需要進行近鄰測量。predict.all判斷是否保留所有的**器。
randomforest(x, y=null, xtest=null, ytest=null, ntree=500, mtry=if (!is.null(y) && !is.factor(y))
隨機森林(Random Forest)演算法原理1
整合學習 ensemble 思想是為了解決單個模型或者某一組引數的模型所固有的缺陷,從而整合起更多的模型,取長補短,避免侷限性。隨機森林就是整合學習思想下的產物,將許多棵決策樹整合成森林,並合起來用來 最終結果。首先,介紹自助法 bootstrap 這個奇怪的名字 於文學作品 the adventu...
隨機森林 random forest
隨機森林是一種整合學習方法 ensemble learning 用於對資料進行分類 隨機森林的分類結果由眾多分類器的分類結果表決而得到 隨機森林的每個子分類器是決策樹 decision tree 隨機森林一般按以下幾個步驟來構造 第一步,假設我們的高光譜資料報含n個樣本,則我們隨機地有放回地抽取n次...
隨機森林 Random Forest
閱讀目錄 回到頂部 隨機森林非常像 機器學習實踐 裡面提到過的那個adaboost演算法,但區別在於它沒有迭代,還有就是森林裡的樹長度不限制。因為它是沒有迭代過程的,不像adaboost那樣需要迭代,不斷更新每個樣本以及子分類器的權重。因此模型相對簡單點,不容易出現過擬合。下面先來講講它的具體框架流...