
總結(jié)決策樹之前先總結(jié)一下特征的生成和選擇,因為決策樹就是一種內(nèi)嵌型的特征選擇過程,它的特征選擇和算法是融合在一起的,不需要額外的特征選擇。
一、特征生成:
特征生成是指在收集數(shù)據(jù)之時原始數(shù)據(jù)就具有的數(shù)據(jù)特征,這些數(shù)據(jù)特征由收集的數(shù)據(jù)決定(其實也就是在產(chǎn)品定型時設(shè)定的需要收集的數(shù)據(jù)特征),當然,在數(shù)據(jù)預(yù)處理時,也可以在此基礎(chǔ)上構(gòu)造一些新的數(shù)據(jù)特征,這些特征越多越好,表示你考慮問題比較周全,具體那些變量有用或沒用,這要交給下一步特征選擇來決定。
二、特征選擇
特征選擇是指在原有數(shù)據(jù)特征的基礎(chǔ)上,去除重要性比較低的特征變量,過濾出有用的特征變量。這里比較困難的是搞清楚什么樣的特征比較重要?這需要根據(jù)具體的問題具體分析,有些變量的選擇可以很直觀的看出來,但這種直覺也不一定正確。對于常用特征選擇方法主要有:過濾型、包裝型、內(nèi)嵌型。
過濾型:是指你可以根據(jù)某個統(tǒng)計量的大小排序來選擇特征變量,如相關(guān)系數(shù)、p值、R值等
包裝型:是指在一個特征集合中選取最優(yōu)的特征子集。具體需要考慮:用什么樣的算法來選???選取的最優(yōu)的標準是什么?
常用的算法是分步回歸包括向前搜索、向后刪除、雙向搜索
向前搜索:每次選取一個能使模型預(yù)測或分類效果最好的特征變量進來,進來后不退出,直到模型改善效果不再明顯;
向后刪除:是指每次從特征全集中每次刪除一個特征變量能使模型預(yù)測或分類效果最好,退出后不進來,直到模型改善效果不再明顯;
雙向搜索:是指每次每次刪除一個特征變量或加入一個特征變量能使模型預(yù)測或分類效果最好,退出的不進來,進來的不退出,直到模型改善效果不再明顯;
這里再提一下特征變量選擇的幾個標準:p值、R值、AIC(越小效果越好)、BIC(越小效果越好)、熵(越小效果越好)
內(nèi)嵌型:這里應(yīng)該主要就是像決策樹這樣的情況,算法內(nèi)部完成特征變量的選取。
三、決策樹
決策的幾個要點:1、如何決策?(也就是如何樹如何分叉)------熵和信息增益---這里面包含的就是特征的選擇?哪個特征變量包含的信息量大,就排在前面,至于最后樹的深度就決定特征變量的個數(shù)。
當然不同的算法使用的衡量的標準不同,還有:信息增益比、基尼不純系數(shù)
2、如何剪枝?-----一般是事后剪枝
3、連續(xù)性變量如何離散化?-----閾值的選擇
熵:是指信息的混合程度(混亂程度),熵【0-1】越大表示該集合中混合的信息越多,也就表明這次的分叉效果不好還是有很多不同類的信息混在一起
信息增益:熵值的減少量,越大越好
決策樹模型特點:模型易于解釋;存儲空間較小,以樹的形式存儲,決策樹是一個弱分類器,不能完全分類,需要把多個弱分類器通過多數(shù)投票法組合在一起。
四、R包實現(xiàn)決策樹
library(rpart)
library(rpart.plot)
## rpart.control對樹進行一些設(shè)置
## xval是10折交叉驗證
## minsplit是最小分支節(jié)點數(shù),這里指大于等于20,那么該節(jié)點會繼續(xù)分劃下去,否則停止
## minbucket:葉子節(jié)點最小樣本數(shù)
## maxdepth:樹的深度
## cp全稱為complexity parameter,指某個點的復(fù)雜度,對每一步拆分,模型的擬合優(yōu)度必須提高的程度
ct <- rpart.control(xval=10, minsplit=20, cp=0.1)
## kyphosis是rpart這個包自帶的數(shù)據(jù)集
## na.action:缺失數(shù)據(jù)的處理辦法,默認為刪除因變量缺失的觀測而保留自變量缺失的觀測。
## method:樹的末端數(shù)據(jù)類型選擇相應(yīng)的變量分割方法:
## 連續(xù)性method=“anova”,離散型method=“class”,計數(shù)型method=“poisson”,生存分析型method=“exp”
## parms用來設(shè)置三個參數(shù):先驗概率、損失矩陣、分類純度的度量方法(gini和information)
## cost是損失矩陣,在剪枝的時候,葉子節(jié)點的加權(quán)誤差與父節(jié)點的誤差進行比較,考慮損失矩陣的時候,從將“減少-誤差”調(diào)整為“減少-損失”
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包提供了復(fù)雜度損失修剪的修剪方法,printcp會告訴分裂到每一層,cp是多少,平均相對誤差是多少
## 交叉驗證的估計誤差(“xerror”列),以及標準誤差(“xstd”列),平均相對誤差=xerror±xstd
printcp(fit)
## 通過上面的分析來確定cp的值
##調(diào)用CP(complexity parameter)與xerror的相關(guān)圖,一種方法是尋找最小xerror點所對應(yīng)
#的CP值,并由此CP值決定樹的大小,另一種方法是利用1SE方法,尋找xerror+SE的最小點對應(yīng)的CP值。
plotcp(fit)
##利用以下方法進行修剪:
## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])
fit2 <- prune(fit, cp=0.01)
#利用模型預(yù)測
ndata=data.frame(...)
predict(fit,newdata=ndata)
#案例
str(iris)
set.seed(1234)#設(shè)置隨機數(shù)種子--使每次運行時產(chǎn)生的一組隨機數(shù)相同,便于結(jié)果的重現(xiàn)
#抽樣:從iris數(shù)據(jù)集中隨機抽70%定義為訓(xùn)練數(shù)據(jù)集,30%為測試數(shù)據(jù)集(常用)
#這里是對行抽樣,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
#訓(xùn)練數(shù)據(jù)
fit<-rpart(f,trainData)
#預(yù)測
re<-predict(fit,testData)
#******************或者用其他包********************
library(party)
#建立決策樹模型預(yù)測花的種類
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
iris_ctree <- ctree(myFormula, data=trainData)
# 查看預(yù)測的結(jié)果
z<-table(predict(iris_ctree), trainData$Species)
#可以根據(jù)以上列聯(lián)表求出預(yù)測的正確率---評估模型
#計算準確度
q<-sum(diag(z))/sum(z)
五、機器集成與隨機森林法則
前面說過,決策樹的一個特點是:弱分類器,分類不完全,需要利用集成投票的方式來增加精確度和穩(wěn)健性。
機器集成算法:對于數(shù)據(jù)集訓(xùn)練多個模型,對于分類問題,可以采用投票的方法,選擇票數(shù)最多的類別作為最終的類別,而對于回歸問題,可以采用取均值的方法,取得的均值作為最終的結(jié)果。主要的集成算法有bagging和adaboost算法。
隨機森林:隨機森林就是利用機器集成多個決策樹,主要有兩個參數(shù),一個是決策樹的個數(shù),一個是每棵樹的特征變量個數(shù)。
隨機森林特點:精確度高、穩(wěn)健性好,但可解釋性差。(可以知道各個變量的重要性)
R包實現(xiàn)機器集成算法:
#adabag包均有函數(shù)實現(xiàn)bagging和adaboost的分類建模
#利用全部數(shù)據(jù)建模
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) #設(shè)定隨機種子
samp=c(sample(1:50,25),sample(51:100,25),sample(101:150,25)) #進行隨機抽樣
a=boosting(Species~.,data=iris[samp,]) #利用訓(xùn)練集建立adaboost分類模
z0<-table(iris[samp,5],predict(a,iris[samp,])$class)#訓(xùn)練集結(jié)果
z1<-table(iris[-samp,5],predict(a,iris[-samp,])$class)#測試集結(jié)果
E0<-(sum(z0)-sum(diag(z0)))/sum(z0)
E1<-(sum(z0)-sum(diag(z0)))/sum(z1)
a=bagging(Species~.,data=iris[samp,]) #利用訓(xùn)練集建立adaboost分類模
z0<-table(iris[samp,5],predict(a,iris[samp,])$class)#訓(xùn)練集結(jié)果
z1<-table(iris[-samp,5],predict(a,iris[-samp,])$class)#測試集結(jié)果
E0<-(sum(z0)-sum(diag(z0)))/sum(z0)
E1<-(sum(z0)-sum(diag(z0)))/sum(z1)
R包實現(xiàn)隨機森林:
#隨機森林法則
library(randomForest)
library(foreign)
data("iris")
#抽樣數(shù)據(jù)
ind<-sample(2,nrow(iris),replace = TRUE,prob=c(0.7,0.3))
traning<-iris[ind==1,]
testing<-iris[ind==2,]
#訓(xùn)練數(shù)據(jù)
rf <- randomForest(Species ~ ., data=traning, ntree=100, proximity=TRUE)
#預(yù)測
table(predict(rf),traning$Species)
table(predict(rf,testing),testing$Species)
#查看預(yù)測的效果
print(rf)
plot(rf)
#查看重要性
importance(rf)
varImpPlot(rf)
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03