導航:首頁 > 源碼編譯 > 隨機森林演算法r語言

隨機森林演算法r語言

發布時間:2022-05-01 15:03:45

『壹』 R語言,怎麼保存計算好的隨機森林模型,或者怎麼做可以不用每次都重算模型

你可以先把訓練好的模型賦值到一個變數,然後保存工作空間到一個.RData文件。

『貳』 隨機森林演算法怎麼提高預測數據的准確率

不了解什麼是隨機森林。感覺應該是一種演算法。如果做計算機視覺建議你用OpenCV,R語言主要用在統計分析、機器學習領域。你找幾篇這方面的文獻看看別人跟你做類似課題時是用C++還是R。

『叄』 隨機森林演算法是什麼

隨機森林指的是利用多棵樹對樣本進行訓練並預測的一種分類器。該分類器最早由Leo Breiman和Adele Cutler提出,並被注冊成了商標。

在機器學習中,隨機森林是一個包含多個決策樹的分類器, 並且其輸出的類別是由個別樹輸出的類別的眾數而定。 Leo Breiman和Adele Cutler發展出推論出隨機森林的演算法。 而 "Random Forests" 是他們的商標。

這個術語是1995年由貝爾實驗室的Tin Kam Ho所提出的隨機決策森林(random decision forests)而來的。

這個方法則是結合 Breimans 的 "Bootstrap aggregating" 想法和 Ho 的"random subspace method"以建造決策樹的集合。

學習演算法

根據下列演算法而建造每棵樹:

1、 用N來表示訓練用例(樣本)的個數,M表示特徵數目。

2、 輸入特徵數目m,用於確定決策樹上一個節點的決策結果;其中m應遠小於M。

3、 從N個訓練用例(樣本)中以有放回抽樣的方式,取樣N次,形成一個訓練集(即bootstrap取樣),並用未抽到的用例(樣本)作預測,評估其誤差。

4、 對於每一個節點,隨機選擇m個特徵,決策樹上每個節點的決定都是基於這些特徵確定的。根據這m個特徵,計算其最佳的分裂方式。

5、 每棵樹都會完整成長而不會剪枝,這有可能在建完一棵正常樹狀分類器後會被採用)。

(3)隨機森林演算法r語言擴展閱讀:

基於隨機森林的非監督學習

作為構建的一部分,隨機森林預測器自然會導致觀測值之間的不相似性度量。還可以定義未標記數據之間的隨機森林差異度量:其思想是構造一個隨機森林預測器,將「觀測」數據與適當生成的合成數據區分開來。

觀察到的數據是原始的未標記數據,合成數據是從參考分布中提取的。隨機森林的不相似性度量之所以吸引人,是因為它能很好地處理混合變數類型,對輸入變數的單調變換是不敏感的,而且在存在異常值的情況下度量結果依然可靠。

由於其固有變數的選擇,隨機森林不相似性很容易處理大量的半連續變數。

『肆』 機器學習有哪些演算法

1. 線性回歸
在統計學和機器學習領域,線性回歸可能是最廣為人知也最易理解的演算法之一。
2. Logistic 回歸
Logistic 回歸是機器學習從統計學領域借鑒過來的另一種技術。它是二分類問題的首選方法。
3. 線性判別分析
Logistic 回歸是一種傳統的分類演算法,它的使用場景僅限於二分類問題。如果你有兩個以上的類,那麼線性判別分析演算法(LDA)是首選的線性分類技術。
4.分類和回歸樹
決策樹是一類重要的機器學習預測建模演算法。
5. 樸素貝葉斯
樸素貝葉斯是一種簡單而強大的預測建模演算法。
6. K 最近鄰演算法
K 最近鄰(KNN)演算法是非常簡單而有效的。KNN 的模型表示就是整個訓練數據集。
7. 學習向量量化
KNN 演算法的一個缺點是,你需要處理整個訓練數據集。
8. 支持向量機
支持向量機(SVM)可能是目前最流行、被討論地最多的機器學習演算法之一。
9. 袋裝法和隨機森林
隨機森林是最流行也最強大的機器學習演算法之一,它是一種集成機器學習演算法。

想要學習了解更多機器學習的知識,推薦CDA數據分析師課程。CDA(Certified Data Analyst),即「CDA 數據分析師」,是在數字經濟大背景和人工智慧時代趨勢下,面向全行業的專業權威國際資格認證,旨在提升全民數字技能,助力企業數字化轉型,推動行業數字化發展。點擊預約免費試聽課。

『伍』 R語言之決策樹和隨機森林

R語言之決策樹和隨機森林
總結決策樹之前先總結一下特徵的生成和選擇,因為決策樹就是一種內嵌型的特徵選擇過程,它的特徵選擇和演算法是融合在一起的,不需要額外的特徵選擇。
一、特徵生成:
特徵生成是指在收集數據之時原始數據就具有的數據特徵,這些數據特徵由收集的數據決定(其實也就是在產品定型時設定的需要收集的數據特徵),當然,在數據預處理時,也可以在此基礎上構造一些新的數據特徵,這些特徵越多越好,表示你考慮問題比較周全,具體那些變數有用或沒用,這要交給下一步特徵選擇來決定。
二、特徵選擇
特徵選擇是指在原有數據特徵的基礎上,去除重要性比較低的特徵變數,過濾出有用的特徵變數。這里比較困難的是搞清楚什麼樣的特徵比較重要?這需要根據具體的問題具體分析,有些變數的選擇可以很直觀的看出來,但這種直覺也不一定正確。對於常用特徵選擇方法主要有:過濾型、包裝型、內嵌型。
過濾型:是指你可以根據某個統計量的大小排序來選擇特徵變數,如相關系數、p值、R值等
包裝型:是指在一個特徵集合中選取最優的特徵子集。具體需要考慮:用什麼樣的演算法來選取?選取的最優的標準是什麼?
常用的演算法是分步回歸包括向前搜索、向後刪除、雙向搜索
向前搜索:每次選取一個能使模型預測或分類效果最好的特徵變數進來,進來後不退出,直到模型改善效果不再明顯;
向後刪除:是指每次從特徵全集中每次刪除一個特徵變數能使模型預測或分類效果最好,退出後不進來,直到模型改善效果不再明顯;
雙向搜索:是指每次每次刪除一個特徵變數或加入一個特徵變數能使模型預測或分類效果最好,退出的不進來,進來的不退出,直到模型改善效果不再明顯;
這里再提一下特徵變數選擇的幾個標准:p值、R值、AIC(越小效果越好)、BIC(越小效果越好)、熵(越小效果越好)
內嵌型:這里應該主要就是像決策樹這樣的情況,演算法內部完成特徵變數的選取。
三、決策樹
決策的幾個要點:1、如何決策?(也就是如何樹如何分叉)------熵和信息增益---這裡麵包含的就是特徵的選擇?哪個特徵變數包含的信息量大,就排在前面,至於最後樹的深度就決定特徵變數的個數。
當然不同的演算法使用的衡量的標准不同,還有:信息增益比、基尼不純系數
2、如何剪枝?-----一般是事後剪枝
3、連續性變數如何離散化?-----閾值的選擇
熵:是指信息的混合程度(混亂程度),熵【0-1】越大表示該集合中混合的信息越多,也就表明這次的分叉效果不好還是有很多不同類的信息混在一起
信息增益:熵值的減少量,越大越好
決策樹模型特點:模型易於解釋;存儲空間較小,以樹的形式存儲,決策樹是一個弱分類器,不能完全分類,需要把多個弱分類器通過多數投票法組合在一起。
四、R包實現決策樹
library(rpart)
library(rpart.plot)
## rpart.control對樹進行一些設置
## xval是10折交叉驗證
## minsplit是最小分支節點數,這里指大於等於20,那麼該節點會繼續分劃下去,否則停止
## minbucket:葉子節點最小樣本數
## maxdepth:樹的深度
## cp全稱為complexity parameter,指某個點的復雜度,對每一步拆分,模型的擬合優度必須提高的程度
ct <- rpart.control(xval=10, minsplit=20, cp=0.1)
## kyphosis是rpart這個包自帶的數據集
## na.action:缺失數據的處理辦法,默認為刪除因變數缺失的觀測而保留自變數缺失的觀測。
## method:樹的末端數據類型選擇相應的變數分割方法:
## 連續性method=「anova」,離散型method=「class」,計數型method=「poisson」,生存分析型method=「exp」
## parms用來設置三個參數:先驗概率、損失矩陣、分類純度的度量方法(gini和information)
## cost是損失矩陣,在剪枝的時候,葉子節點的加權誤差與父節點的誤差進行比較,考慮損失矩陣的時候,從將「減少-誤差」調整為「減少-損失」
data("Kyphosis")
fit <- rpart(Kyphosis~Age + Number + Start,data=kyphosis, method="class",control=ct,parms = list(prior = c(0.65,0.35), split = "information"));
## 作圖有2種方法
## 第一種:
par(mfrow=c(1,3));plot(fit); text(fit,use.n=T,all=T,cex=0.9)
## 第二種,這種會更漂亮一些:
rpart.plot(fit, branch=1, branch.type=2, type=1, extra=102,
shadow.col="gray", box.col="green",
border.col="blue", split.col="red",
split.cex=1.2, main="Kyphosis決策樹");
## rpart包提供了復雜度損失修剪的修剪方法,printcp會告訴分裂到每一層,cp是多少,平均相對誤差是多少
## 交叉驗證的估計誤差(「xerror」列),以及標准誤差(「xstd」列),平均相對誤差=xerror±xstd
printcp(fit)
## 通過上面的分析來確定cp的值
##調用CP(complexity parameter)與xerror的相關圖,一種方法是尋找最小xerror點所對應
#的CP值,並由此CP值決定樹的大小,另一種方法是利用1SE方法,尋找xerror+SE的最小點對應的CP值。
plotcp(fit)
##利用以下方法進行修剪:
## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])
fit2 <- prune(fit, cp=0.01)
#利用模型預測
ndata=data.frame(...)
predict(fit,newdata=ndata)

#案例
str(iris)
set.seed(1234)#設置隨機數種子--使每次運行時產生的一組隨機數相同,便於結果的重現
#抽樣:從iris數據集中隨機抽70%定義為訓練數據集,30%為測試數據集(常用)
#這里是對行抽樣,ind是一個只含1和2的向量
ind <- sample(2, nrow(iris), replace=TRUE, prob=c(0.7, 0.3))
trainData <- iris[ind==1,]
testData <- iris[ind==2,]
f<-Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
#訓練數據
fit<-rpart(f,trainData)
#預測
re<-predict(fit,testData)
#******************或者用其他包********************
library(party)
#建立決策樹模型預測花的種類
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
iris_ctree <- ctree(myFormula, data=trainData)
# 查看預測的結果
z<-table(predict(iris_ctree), trainData$Species)
#可以根據以上列聯表求出預測的正確率---評估模型
#計算準確度
q<-sum(diag(z))/sum(z)
五、機器集成與隨機森林法則
前面說過,決策樹的一個特點是:弱分類器,分類不完全,需要利用集成投票的方式來增加精確度和穩健性。
機器集成演算法:對於數據集訓練多個模型,對於分類問題,可以採用投票的方法,選擇票數最多的類別作為最終的類別,而對於回歸問題,可以採用取均值的方法,取得的均值作為最終的結果。主要的集成演算法有bagging和adaboost演算法。
隨機森林:隨機森林就是利用機器集成多個決策樹,主要有兩個參數,一個是決策樹的個數,一個是每棵樹的特徵變數個數。
隨機森林特點:精確度高、穩健性好,但可解釋性差。(可以知道各個變數的重要性)
R包實現機器集成演算法:
#adabag包均有函數實現bagging和adaboost的分類建模
#利用全部數據建模
library(adabag)
a<-boosting(Species~.,data=iris)
z0<-table(iris[,5],predict(a,iris)$class)
#計算誤差率
E0<-(sum(z0)-sum(diag(z0)))/sum(z0)
barplot(a$importance)
b<-errorevol(a,iris)#計算全體的誤差演變
plot(b$error,type="l",main="AdaBoost error vs number of trees") #對誤差演變進行畫圖

a<-bagging(Species~.,data=iris)
z0<-table(iris[,5],predict(a,iris)$class)
#計算誤差率
E0<-(sum(z0)-sum(diag(z0)))/sum(z0)
barplot(a$importance)
b<-errorevol(a,iris)#計算全體的誤差演變
plot(b$error,type="l",main="AdaBoost error vs number of trees") #對誤差演變進行畫圖

#5折交叉驗證
set.seed(1044) #設定隨機種子
samp=c(sample(1:50,25),sample(51:100,25),sample(101:150,25)) #進行隨機抽樣
a=boosting(Species~.,data=iris[samp,]) #利用訓練集建立adaboost分類模
z0<-table(iris[samp,5],predict(a,iris[samp,])$class)#訓練集結果
z1<-table(iris[-samp,5],predict(a,iris[-samp,])$class)#測試集結果
E0<-(sum(z0)-sum(diag(z0)))/sum(z0)
E1<-(sum(z0)-sum(diag(z0)))/sum(z1)

a=bagging(Species~.,data=iris[samp,]) #利用訓練集建立adaboost分類模
z0<-table(iris[samp,5],predict(a,iris[samp,])$class)#訓練集結果
z1<-table(iris[-samp,5],predict(a,iris[-samp,])$class)#測試集結果
E0<-(sum(z0)-sum(diag(z0)))/sum(z0)
E1<-(sum(z0)-sum(diag(z0)))/sum(z1)
R包實現隨機森林:
#隨機森林法則
library(randomForest)
library(foreign)
data("iris")
#抽樣數據
ind<-sample(2,nrow(iris),replace = TRUE,prob=c(0.7,0.3))
traning<-iris[ind==1,]
testing<-iris[ind==2,]
#訓練數據
rf <- randomForest(Species ~ ., data=traning, ntree=100, proximity=TRUE)
#預測
table(predict(rf),traning$Species)
table(predict(rf,testing),testing$Species)
#查看預測的效果
print(rf)
plot(rf)
#查看重要性
importance(rf)
varImpPlot(rf)

『陸』 怎樣用隨機森林演算法實現文本分類

不了解什麼是隨機森林。
感覺應該是一種演算法。
如果做計算機視覺建議你用OpenCV,

R語言主要用在統計分析、機器學習領域。
你找幾篇這方面的文獻看看別人跟你做類似課題時是用C++還是R。

『柒』 求問隨機森林演算法的簡單實現過程

隨機森林(Random forest)指的是利用多棵樹對樣本進行訓練並預測的一種分類器。 並且其輸出的類別是由個別樹輸出的類別的眾數而定。在機器學習中有一個地位很重要的包scikit-learn可實現隨機森林演算法。


原理:(隨機森林的分類預測和回歸預測sklearn.ensemble.RandomForestRegressor方法)
(1)給定訓練集S,測試集T,特徵維數F。確定參數:使用到的CART的數量t,每棵樹的深度d,每個節點使用到的特徵數量f,終止條件:節點上最少樣本數s,節點上最少的信息增益m,對於第1-t棵樹,i=1-t:
(2)從S中有放回的抽取大小和S一樣的訓練集S(i),作為根節點的樣本,從根節點開始訓練
(3)如果當前節點上達到終止條件,則設置當前節點為葉子節點,如果是分類問題,該葉子節點的預測輸出為當前節點樣本集合中數量最多的那一類c(j),概率p為c(j)占當前樣本集的比例;如果是回歸問題,預測輸出為當前節點樣本集各個樣本值的平均值。然後繼續訓練其他節點。如果當前節點沒有達到終止條件,則從F維特徵中無放回的隨機選取f維特徵。利用這f維特徵,尋找分類效果最好的一維特徵k及其閾值th,當前節點上樣本第k維特徵小於th的樣本被劃分到左節點,其餘的被劃分到右節點。繼續訓練其他節點。
(4)重復(2)(3)直到所有節點都訓練過了或者被標記為葉子節點。
(5)重復(2),(3),(4)直到所有CART都被訓練過。
隨機森林的簡單實現過程如下:
一、 開發環境、編譯環境:
PyCharm Community Edition 2016.2.3
python2.7.10
二、 所用庫及安裝方法:
pandas[python自帶]
sklearn:命令行pip install sklearn;如果沒有安裝pip,先使用easy_install pip安裝pip;如果在MAC上沒有許可權,使用sudo pip install sklearn;
三、 代碼介紹
1. 使用pandas讀取本地excel的訓練集和測試集,將屬性集賦給X_train和Y_train;將要預測的集合賦給X_test和Y_test;
2. 使用DictVectorizer對數據進行規范化、標准化
3. 生成RandomForestRegressor對象,並將訓練集傳入fit方法中進行訓練
4. 調用predict函數進行預測,並將結果存入y_predict變數中;
5. 使用mean_squared_error、score方法輸出MSE、NMSE值對擬合度、穩定度進行分析;輸出feature_importance,對影響最終結果的屬性進行分析;
6. 詳細代碼見附錄
四、 附錄
# coding:utf-8
import pandas as pd
data_train = pd.read_excel('/Users/xiaoliu/Desktop/data_train.xlsx')
X_train = data_train[['CPI', 'GDP', 'PPI', 'AJR', 'BJFJ', 'FBDR', 'PCFD', 'PCFDED', 'BDR']]
y_train = data_train['FJ']

data_test = pd.read_excel('/Users/xiaoliu/Desktop/data_test.xlsx')
X_test = data_test[['CPI', 'GDP', 'PPI', 'AJR', 'BJFJ', 'FBDR', 'PCFD', 'PCFDED', 'BDR']]
y_test = data_test['FJ']

from sklearn.feature_extraction import DictVectorizer

vec = DictVectorizer(sparse=False)
X_train = vec.fit_transform(X_train.to_dict(orient='records'))
X_test = vec.transform(X_test.to_dict(orient='records'))

from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor()
rf.fit(X_train,y_train)
y_predict = rf.predict(X_test)
print 'predict value:',y_predict

from sklearn.metrics import mean_squared_error
print 'MSE:', mean_squared_error(y_test, y_predict)
print 'NMES:',rf.score(X_test, y_test)
print rf.feature_importances_

『捌』 請教在R語言裡面如何計算隨機森林模型的p值

arrStr[i]=String.valueOf(arrChar[i]);
}for (String i: arrStr )
{if (i.matches(E1))
{
countH++;
}if (i.matches(E2))
{
countE++;
}

『玖』 r語言中隨機森林裡的classwt參數是什麼意思

隨機森林是一種集成分類器,對影響隨機森林性能的參數進行了分析,結果表明隨機森林中樹的數量對隨機森林的性能影響至關重要。對樹的數量的確定方法以及隨機森林性能指標的評價方法進行了研究與總結。以分類精度為評價方法,利用UCI數據集對隨機森

閱讀全文

與隨機森林演算法r語言相關的資料

熱點內容
數據挖掘中誤差值演算法函數 瀏覽:118
php開發套件 瀏覽:190
伺服器的spi板是什麼 瀏覽:896
解壓縮全能王中文密碼是什麼 瀏覽:80
javaftp伺服器上傳文件 瀏覽:103
演算法設計中文版pdf 瀏覽:81
視頻壓縮形式怎麼改 瀏覽:368
perl程序員 瀏覽:789
電子表格對比命令 瀏覽:610
php循環輸出數組內容 瀏覽:750
電腦加密能不能強制關掉 瀏覽:616
趣味單人解壓桌游 瀏覽:212
oppo手機谷歌伺服器無法核實什麼 瀏覽:320
軟體怎麼加密華為 瀏覽:222
掃地機怎麼安裝app 瀏覽:319
考研結合特徵值計演算法 瀏覽:516
操作系統演算法綜合題 瀏覽:152
華為程序員待遇 瀏覽:547
程序員帶娃的圖片 瀏覽:79
迷你雲伺服器怎麼下載 瀏覽:815