當前位置:首頁 » 操作系統 » r語言決策樹演算法

r語言決策樹演算法

發布時間: 2022-06-02 09:46:59

1. 決策樹演算法原理是什麼

決策樹構造的輸入是一組帶有類別標記的例子,構造的結果是一棵二叉樹或多叉樹。二叉樹的 內部節點(非 葉子節點)一般表示為一個邏輯判斷,如形式為a=aj的邏輯判斷,其中a是屬性,aj是該屬性的所有取值:樹的邊是邏輯判斷的分支結果。

多叉樹(ID3)的內部結點是屬性,邊是該屬性的所有取值,有幾個 屬性值就有幾條邊。樹的葉子節點都是類別標記。

由於數據表示不當、有雜訊或者由於決策樹生成時產生重復的子樹等原因,都會造成產生的決策樹過大。

因此,簡化決策樹是一個不可缺少的環節。尋找一棵最優決策樹,主要應解決以下3個最優化問題:①生成最少數目的葉子節點;②生成的每個葉子節點的深度最小;③生成的決策樹葉子節點最少且每個葉子節點的深度最小。

(1)r語言決策樹演算法擴展閱讀:

決策樹演算法的優點如下:

(1)分類精度高;

(2)生成的模式簡單;

(3)對雜訊數據有很好的健壯性。

因而是目前應用最為廣泛的歸納推理演算法之一,在 數據挖掘中受到研究者的廣泛關注。

2. r語言 隨機森林樣本訓練時間

r語言是一門計算機編程語言。
隨機森林演算法涉及對樣本單元和變數進行抽樣,從而生成大量決策樹。
假設訓練集中共有N個樣本,M個變數,則隨機森林演算法如下:(1)從訓練集中隨機有放回地抽取N個樣本單元,生成大量決策樹;(2)在每一個節點隨機抽取m<M個變數,將其作為分割該節點的候選變數。每一個節點處的變數數應一致;(3)完整生成所有決策樹,無需剪枝(最小節點為1);(4)終端節點的所屬類別由節點對應的眾數類別決定;(5)對於新的觀測點,用所有的樹對其分類,其類別由多數原則生成。

3. 機器學習有哪些演算法

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 數據分析師」,是在數字經濟大背景和人工智慧時代趨勢下,面向全行業的專業權威國際資格認證,旨在提升全民數字技能,助力企業數字化轉型,推動行業數字化發展。點擊預約免費試聽課。

4. R語言CART演算法想生成決策樹用什麼函數

tree。。。

5. r語言 決策樹 rpart怎麼畫決策樹

如果使用rpart()構造的決策樹,可以用plot畫決策樹 ,用text添加標注
參見幫助文檔:
library(rpart)
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
plot(fit)
text(fit, use.n = TRUE)

6. 使用R完成決策樹分類

使用R完成決策樹分類
傳統的ID3和C4.5一般用於分類問題,其中ID3使用信息增益進行特徵選擇,即遞歸的選擇分類能力最強的特徵對數據進行分割,C4.5唯一不同的是使用信息增益比進行特徵選擇。
特徵A對訓練數據D的信息增益g(D, A) = 集合D的經驗熵H(D) - 特徵A給定情況下D的經驗條件熵H(D|A)
特徵A對訓練數據D的信息增益比r(D, A) = g(D, A) / H(D)
而CART(分類與回歸)模型既可以用於分類、也可以用於回歸,對於回歸樹(最小二乘回歸樹生成演算法),需要尋找最優切分變數和最優切分點,對於分類樹(CART生成演算法),使用基尼指數選擇最優特徵。
一個使用rpart完成決策樹分類的例子如下:
[plain] view plain
library(rpart);

## 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我覺得是損失矩陣,在剪枝的時候,葉子節點的加權誤差與父節點的誤差進行比較,考慮損失矩陣的時候,從將「減少-誤差」調整為「減少-損失」
fit <- rpart(Kyphosis~Age + Number + Start,
data=kyphosis, method="class",control=ct,
parms = list(prior = c(0.65,0.35), split = "information"));

## 第一種
par(mfrow=c(1,3));
plot(fit);
text(fit,use.n=T,all=T,cex=0.9);

## 第二種,這種會更漂亮一些
library(rpart.plot);
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的值
## 我們可以用下面的辦法選擇具有最小xerror的cp的辦法:
## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])

fit2 <- prune(fit, cp=0.01);
rpart.plot(fit2, 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決策樹");
效果圖如下:

7. R語言學習之決策樹

R語言學習之決策樹
決策樹最重要的2個問題:決策樹的生長問題,決策樹的剪枝問題。 生長問題又包括了2個子問題:從分組變數的眾多取值中選擇一個最佳分割點和從眾多輸入變數中選擇當前最佳分組變數; 剪枝問題包括2個子問題:預修剪(事先指定樹的最大深度,葉子的最小樣本量等)和後修剪(先讓樹充分生長,然後邊修剪邊檢驗)。
在R中,實現決策樹需要載入包library(rpart),如果想把分類圖畫的漂亮點,還可以載入這個包:library(rpart.plot)## rpart.control對樹進行一些設置## xval是10折交叉驗證## minsplit是最小分支節點數,這里指大於等於20,那麼該節點會繼續分劃下去,否則停止## minbucket:葉子節點最小樣本數## maxdepth:樹的深度## cp全稱為complexity parameter,指某個點的復雜度,對每一步拆分,模型的擬合優度必須提高的程度,用來節省剪枝浪費的不必要的時間,R內部是怎麼計算的還真不知道唉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我覺得是損失矩陣,在剪枝的時候,葉子節點的加權誤差與父節點的誤差進行比較,考慮損失矩陣的時候,從將「減少-誤差」調整為「減少-損失」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±xstdprintcp(fit)## 通過上面的分析來確定cp的值## 我們可以用下面的辦法選擇具有最小xerror的cp的辦法:## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])fit2 <- prune(fit, cp=0.01)待續。。。。。。
註:1.在預測分類目標欄位時為類別指定先驗概率。先驗概率是對總體(從中可提取訓練數據)中的每個目標分類的總相對頻率的估計。換句話說,先驗概率是對預測值有任何了解之前對每個可能的目標值的概率估計。確定決策樹分支准則的時候會用到,具體內部演算法,我暫時還沒有查到。

8. 基於R語言的分類演算法之決策樹

基於R語言的分類演算法之決策樹
ID3 《= 最大信息熵增益,只能處理離散型數據
C4.5 《= 信息增益率,可處理連續性和離散型數據,相比ID3,減少了因變數過多導致的過擬合
C5.0 《= 信息增益率,運算性能比C4.5更強大
CART 《= 基尼指數最小原則,連續性和離散型數據均可
信息熵體現的是數據的雜亂程度,信息越雜亂,信息熵越大,反之越小。 例如:擁有四種連續型變數的特徵變數的信息熵一定比擁有三種的要大。
特徵變數的N種可能性,每種可能性的概率相同,N越大,信息熵越大。
每種可能性的概率不同,越偏態,信息熵越小。
所有特徵變數中,信息增益率的,就是根節點(root leaf),根節點一般是選擇N越大的特徵變數,因為N越大,信息熵越大。
信息增益率是在信息熵的基礎上作懲罰計算,避免特徵變數可能性多導致的高信息增益。
代碼相關
library(C50)
C5.0(x,y, trials = 1, rules=FALSE,weights=NULL,control=C5.0Control(),costs=NULL)
x為特徵變數,y為應變數
trials 為迭代次數(這個值根據不同數據而不同,並非越大越好,一般介於5-15之間,可以用遍歷來尋找最高准確率的模型,對模型准確率的提升效果中等)
cost 為損失矩陣,R中應該傳入一個矩陣(據說是對准確率矩陣約束猜測錯誤的項,但是並沒特別明顯的規律,可以使用遍歷來尋找最好的cost,准確率提升效果小)
costs <- matrix(c(1,2,1,2),
ncol = 2, byrow = TRUE,
dimnames = list(c("yes","no"), c("yes","no")))
control 設置C5.0模型的其他參數,比如置信水平和節點最小樣本等(水很深,參數很多,可以自行查閱R的幫助文檔,我只設置了一個CF,准確率提升效果小)
control = C5.0Control(CF = 0.25)
library(C50)
#對iris隨機劃分訓練集和測試集
set.seed(1234)
index <- sample(1:nrow(iris), size = 0.75*nrow(iris))
train <- iris[index,]
test <- iris[-index,]
#查看訓練集和測試集分布是否合理
prop.table(table(train$Species))
prop.table(table(test$Species))
#不設置任何參數
fit1 <- C5.0(x = train[,1:4], y = train[,5])
pred1 <- predict(fit1, newdata = test[,-5])
freq1 <- table(pred1, test[,5])
accuracy <- sum(diag(freq1))/sum(freq1)
pred1 setosa versicolor virginica
setosa 16 0 0
versicolor 0 13 1
virginica 0 0 8
准確率為0.9736842,只有一個錯誤。。。顯然150個iris太少了,優化都省了。

熱點內容
碧藍航線pc掛機腳本 發布:2024-05-19 02:30:03 瀏覽:588
腳本fir 發布:2024-05-19 02:28:57 瀏覽:260
阿里雲獨享伺服器 發布:2024-05-19 02:23:54 瀏覽:253
織夢源碼ga 發布:2024-05-19 02:23:20 瀏覽:571
java文件名後綴 發布:2024-05-19 02:14:39 瀏覽:956
快手點榜腳本 發布:2024-05-19 02:08:44 瀏覽:163
pythonforinkeys 發布:2024-05-19 01:55:44 瀏覽:793
電腦如何區域網共享文件夾 發布:2024-05-19 01:25:01 瀏覽:69
手機存儲越大性能越好嗎 發布:2024-05-19 01:14:28 瀏覽:177
我的世界hyp伺服器怎麼玩 發布:2024-05-19 00:51:25 瀏覽:801