數(shù)據(jù)挖掘與數(shù)據(jù)分析:基于R語言- 課件 第5-7章 決策樹與回歸樹、隨機森林、貝葉斯分類器_第1頁
數(shù)據(jù)挖掘與數(shù)據(jù)分析:基于R語言- 課件 第5-7章 決策樹與回歸樹、隨機森林、貝葉斯分類器_第2頁
數(shù)據(jù)挖掘與數(shù)據(jù)分析:基于R語言- 課件 第5-7章 決策樹與回歸樹、隨機森林、貝葉斯分類器_第3頁
數(shù)據(jù)挖掘與數(shù)據(jù)分析:基于R語言- 課件 第5-7章 決策樹與回歸樹、隨機森林、貝葉斯分類器_第4頁
數(shù)據(jù)挖掘與數(shù)據(jù)分析:基于R語言- 課件 第5-7章 決策樹與回歸樹、隨機森林、貝葉斯分類器_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

DataMiningandDataAnalysiswithR數(shù)據(jù)挖掘與數(shù)據(jù)分析:基于R語言第五章決策樹與回歸樹CART算法原理01CART算法示例02模型理解03R語言編程04章節(jié)內(nèi)容5.1CART算法原理應(yīng)用背景介紹決策樹作為一種常見的機器學(xué)習(xí)方法,在分類和預(yù)測任務(wù)上均體現(xiàn)出優(yōu)秀的泛化能力決策樹以樹模型為基礎(chǔ),針對特征對實例進行學(xué)習(xí),完成分類或回歸任務(wù)決策樹建模的過程可以看作是一系列if-then集合組合的過程,也可以理解為是特征空間在類別空間上的條件概率分布決策樹的樹形結(jié)構(gòu)是模擬人類在面臨決策問題時的一種自然處理機制圖5-1下雨問題的一棵決策樹分類與回歸樹(Classificationandregressiontree,Cart)模型分類與回歸樹模型作為應(yīng)用最廣泛的決策樹學(xué)習(xí)方法,不僅可以適用于分類任務(wù),在回歸任務(wù)上也具有不錯的性能。常用的決策樹算法有ID3、C4.5、C5.0和CART算法,本章主要介紹CART算法。

決策樹生成

從樹的根節(jié)點開始,遞歸地構(gòu)建生成樹的過程如下:選擇對應(yīng)當前數(shù)據(jù)集D的最優(yōu)分裂特征和最優(yōu)分裂點根據(jù)基尼系數(shù)最小準則(基尼指數(shù)越小,混亂程度越?。x擇最小基尼指數(shù)對應(yīng)的特征和特征分裂點進行樹的生成。對于新生成的節(jié)點,重復(fù)①②操作,生成新生成結(jié)點對應(yīng)的子樹,直至滿足決策樹生成的停止條件。決策樹生成

決策樹生成

決策樹生成

決策樹生成

決策樹剪枝

決策樹剪枝

決策樹剪枝5.2CART算法示例

序號房產(chǎn)狀況婚姻狀況年收入類別1是未婚良否2否已婚良否3否未婚差否4是已婚良否5否未婚良否6否已婚差否7是已婚優(yōu)否8否未婚良是9否已婚良否10否未婚良是表5-1貸款情況數(shù)據(jù)一覽表5.2CART算法示例

序號房產(chǎn)狀況婚姻狀況年收入類別1是未婚良否2否已婚良否3否未婚差否4是已婚良否5否未婚良否6否已婚差否7是已婚優(yōu)否8否未婚良是9否已婚良否10否未婚良是表5-1貸款情況數(shù)據(jù)一覽表5.2CART算法示例

序號房產(chǎn)狀況婚姻狀況年收入類別1是未婚良否3否未婚差否5否未婚良否8否未婚良是10否未婚良是序號房產(chǎn)狀況婚姻狀況年收入類別2否已婚良否4是已婚良否6否已婚差否7是已婚優(yōu)否9否已婚良否5.2CART算法示例

序號房產(chǎn)狀況婚姻狀況年收入類別1是未婚良否3否未婚差否5否未婚良否8否未婚良是10否未婚良是5.2CART算法示例

序號房產(chǎn)狀況婚姻狀況年收入類別2否已婚良否4是已婚良否6否已婚差否7是已婚優(yōu)否9否已婚良否5.2CART算法示例對于新的分裂點,繼續(xù)使用以上方法便可最終得到一棵如圖5-2的決策樹。圖5-2貸款情況數(shù)據(jù)集對應(yīng)決策樹5.2CART算法示例例5.2:已知訓(xùn)練數(shù)據(jù)如表5-4所示,根據(jù)平方誤差損失最小準則構(gòu)建一個二叉回歸樹。123456789105.55.75.86.46.77.08.68.78.99表5-1貸款情況數(shù)據(jù)一覽表

5.2CART算法示例123456789105.55.75.86.46.77.08.68.78.99

123456789105.505.605.675.856.026.186.536.807.037.237.427.647.908.158.448.808.878.95905.2CART算法示例

1234567891015.0411.727.895.663.721.936.8810.9614.8818.36

1234565.55.75.86.46.77.05.2CART算法示例取切分點分別為:[1,2,3,4,5,6],則可得如下輸出表:

1234561.270.810.230.501.031.831234565.505.605.675.856.026.186.326.486.76.857.00

789108.68.78.995.2CART算法示例取切分點分別為:[7,8,9,10],則可得如下輸出表:

789100.0470.0100.0470.100789108.68.658.738.88.878.9590

5.2CART算法示例最后,得到如圖5-3的完整二叉回歸樹。圖5-3完整的二叉回歸樹5.3模型理解決策樹(DecisionTree)作為一種用于分類和回歸的非參數(shù)監(jiān)督學(xué)習(xí)方法。其目標是創(chuàng)建一個模型,通過學(xué)習(xí)從數(shù)據(jù)特征推斷出的簡單決策規(guī)則來預(yù)測目標變量的類別或值。決策樹以使用一組if-then-else決策規(guī)則來學(xué)習(xí)數(shù)據(jù)中的深層信息。一般而言,決策樹深度越深,決策規(guī)則越復(fù)雜,模型適用的范圍越廣。圖5-1下雨問題的一棵決策樹決策樹優(yōu)點模型構(gòu)建和預(yù)測過程能夠以圖形方式顯示,相比其他機器學(xué)習(xí)方法更易于理解和解釋。不需要大規(guī)模訓(xùn)練數(shù)據(jù),無需數(shù)據(jù)標準化。能夠處理數(shù)值型和分類型數(shù)據(jù)。分類型數(shù)據(jù)可以采用獨熱編碼轉(zhuǎn)變?yōu)閿?shù)值型數(shù)據(jù),以構(gòu)建決策樹模型。能夠處理多輸出問題。決策樹是一種白盒模型。如果在模型中觀察到給定情況,易于通過布爾邏輯解釋模型的內(nèi)在思路。相比之下,黑盒模型中(例如,人工神經(jīng)網(wǎng)絡(luò))的模型結(jié)果可能難以解釋。對于異常的數(shù)據(jù)點有更強的包容性。即使真實模型違反了假設(shè),決策樹也表現(xiàn)良好。決策樹模型的優(yōu)缺點決策樹缺點決策樹針對大規(guī)模問題可能創(chuàng)建過于復(fù)雜的樹,出現(xiàn)過擬合現(xiàn)象,導(dǎo)致在訓(xùn)練數(shù)據(jù)集上表現(xiàn)良好,但在測試數(shù)據(jù)集上泛化能力差。解決方案包括修剪、設(shè)置葉子節(jié)點所需的最小樣本數(shù)或設(shè)置樹的最大深度等機制。決策樹具有不穩(wěn)定性。微小數(shù)據(jù)變化可能導(dǎo)致生成完全不同的決策樹。決策樹預(yù)測模型是非平滑非連續(xù)的。因此,決策樹模型更適用于分類而非推斷。實用的決策樹學(xué)習(xí)算法是基于啟發(fā)式算法,如貪婪算法。受限于每個節(jié)點上的局部最優(yōu)決策,算法不能保證返回全局最優(yōu)決策樹,可以通過訓(xùn)練多棵樹緩解。決策樹難以表達某些概念。對于像XOR、奇偶性或多路復(fù)用器等問題的建模效果較差。在某些類占主導(dǎo)地位的數(shù)據(jù)集上,決策樹模型會創(chuàng)建有“偏見”的樹。因此,建議平衡數(shù)據(jù)集后再建模。決策樹模型的優(yōu)缺點決策樹在具有大量特征的數(shù)據(jù)集上往往會發(fā)生過擬合現(xiàn)象。因此,獲得正確的樣本與特征數(shù)量的比例是十分重要的。對于特征數(shù)量較多的數(shù)據(jù)集,應(yīng)該考慮事先進行降維(PCA、ICA或特征選擇),這有利于決策樹有更好的機會找到具有區(qū)分力的特征。通過限制決策樹的最大深度可以來控制樹的大小以防止模型過擬合,這是防止模型過擬合的一種常用方法。在訓(xùn)練決策樹模型前,應(yīng)該平衡數(shù)據(jù)集,以防止決策樹在訓(xùn)練過程中偏向于占優(yōu)勢的類。如果樣本是加權(quán)的,那么使用基于權(quán)重的預(yù)剪枝準則來優(yōu)化決策樹的結(jié)構(gòu)會更容易,它可以確保葉子節(jié)點至少包含樣本權(quán)重總和的一部分?;貧w參數(shù)α越大的決策樹模型可以適應(yīng)越復(fù)雜的問題,但是并非所有的問題都需要復(fù)雜的決策樹模型,需要具體問題進行具體分析。決策樹模型實踐建議作為標稱屬性,其存在多個可能值,針對所使用的決策樹算法的不同,標稱屬性的分裂存在兩種方式:多路劃分和二元劃分。對于ID3、C4.5等算法,均采取多路劃分的方法,標稱屬性有多少種可能的取值,就設(shè)計多少個分支;對于CART算法采用二分遞歸分割的方法,因此CART算法生成的決策樹均為二叉樹。非監(jiān)督離散化是指在離散化過程中不使用類信息的方法,其輸入數(shù)據(jù)集僅含有待離散化屬性的值。下表總結(jié)了非監(jiān)督離散化的常用方法:連續(xù)屬性離散化方法方法描述等寬離散將屬性劃分為寬度一致的若干個區(qū)間,各個區(qū)間對應(yīng)一個離散特征等頻離散將屬性劃分為若干個區(qū)間,每個區(qū)間的數(shù)量相等,各區(qū)間對應(yīng)一個離散特征聚類對每個屬性進行聚類,形成幾個簇的過程,將各個簇作為不同的離散特征5.4R語言編程本節(jié)利用R語言將決策樹建模的整個過程進行實踐。對于一個新的問題,決策樹建模主要包括四個部分:數(shù)據(jù)導(dǎo)入、數(shù)據(jù)預(yù)處理、決策樹模型訓(xùn)練、決策樹模型驗證。數(shù)據(jù)導(dǎo)入首先導(dǎo)入讀取數(shù)據(jù)的相關(guān)庫,接著利用fread函數(shù)讀取原始數(shù)據(jù)集PurchasePredictionDataset.csv(下載鏈接/Apress/machine-learning-using-r/blob/master/Dataset/Chapter%206.zip)。該數(shù)據(jù)集共包含12個屬性信息,具體的屬性信息通過str(Data_Purchase)可以進行查看。結(jié)果如下:#相關(guān)庫導(dǎo)入library(data.table)library(splitstackshape)

#讀取數(shù)據(jù)集Data_Purchase<-fread("./PurchasePredictionDataset.csv",header=T,verbose=FALSE,showProgress=FALSE)

#查看數(shù)據(jù)信息str(Data_Purchase)table(Data_Purchase$ProductChoice)Classes'data.table'and'data.frame': 500000obs.of12variables:$CUSTOMER_ID:int12345678910...$ProductChoice:int2323232223...$MembershipPoints:int6242665953...$ModeOfPayment:chr"MoneyWallet""CreditCard""MoneyWallet""MoneyWallet"...$ResidentCity:chr"Madurai""Kolkata""Vijayawada""Meerut"...$PurchaseTenure:int441063313198...$Channel:chr"Online""Online""Online""Online"...$IncomeClass:int4754744464...$CustomerPropensity:chr"Medium""VeryHigh""Unknown""Low"...$CustomerAge:int55753426387172273329...$MartialStatus:int0000100001...$LastPurchaseDuration:int41515661054156...-attr(*,".internal.selfref")=<externalptr>

123410660319928614389350218數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理作為機器學(xué)習(xí)方法在模型訓(xùn)練中的重要一環(huán),具有十分重要的作用。原始數(shù)據(jù)集中的缺失值、異常值等問題均會對模型的訓(xùn)練產(chǎn)生一定的負面影響。為了避免這些負面因素對模型的影響,便需要進行數(shù)據(jù)預(yù)處理操作,為模型的訓(xùn)練奠定基礎(chǔ)。#獲取相關(guān)數(shù)據(jù)集的相關(guān)列Data_Purchase<-Data_Purchase[,.(CUSTOMER_ID,ProductChoice,MembershipPoints,IncomeClass,CustomerPropensity,LastPurchaseDuration)]

#刪除缺失值Data_Purchase<-na.omit(Data_Purchase)Data_Purchase$CUSTOMER_ID<-as.character(Data_Purchase$CUSTOMER_ID)

#分層抽樣Data_Purchase_Model<-stratified(Data_Purchase,group=c("ProductChoice"),size=10000,replace=FALSE)

print("TheDistributionofequalclassesisasbelow")table(Data_Purchase_Model$ProductChoice)數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理完成后,便需要對該數(shù)據(jù)集進行劃分,形成訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集兩部分。其中訓(xùn)練數(shù)據(jù)集用于訓(xùn)練決策樹,測試數(shù)據(jù)集則用于評估決策樹的泛化能力。Data_Purchase_Model$ProductChoice<-as.factor(Data_Purchase_Model$ProductChoice)Data_Purchase_Model$IncomeClass<-as.factor(Data_Purchase_Model$IncomeClass)Data_Purchase_Model$CustomerPropensity<-as.factor(Data_Purchase_Model$CustomerPropensity)

#在訓(xùn)練數(shù)據(jù)(Set_1)上建立決策樹,然后測試數(shù)據(jù)(Set_2)將被用于性能測試set.seed(917)train<-Data_Purchase_Model[sample(nrow(Data_Purchase_Model),size=nrow(Data_Purchase_Model)*(0.7),replace=FALSE,prob=NULL),]train<-as.data.frame(train)

test<-Data_Purchase_Model[!(Data_Purchase_Model$CUSTOMER_ID%in%train$CUSTOMER_ID),]print(train)print(test)決策樹模型訓(xùn)練準備好訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集后,接下來便利用決策樹模型在訓(xùn)練數(shù)據(jù)集上進行訓(xùn)練,學(xué)習(xí)數(shù)據(jù)中蘊含的規(guī)則。們利用訓(xùn)練數(shù)據(jù)集對CART模型進行訓(xùn)練,訓(xùn)練結(jié)束后,調(diào)用summary函數(shù)查看CART模型的訓(xùn)練結(jié)果:#導(dǎo)入相關(guān)庫library(rpart)

#CART模型構(gòu)建CARTModel<-rpart(ProductChoice~IncomeClass+CustomerPropensity+LastPurchaseDuration+MembershipPoints,data=train)

summary(CARTModel)Call:rpart(formula=ProductChoice~IncomeClass+CustomerPropensity+LastPurchaseDuration+MembershipPoints,data=train)n=28000

Nodenumber1:28000observations,complexityparam=0.08651825predictedclass=3expectedloss=0.7475714P(node)=1classcounts:7015702070686897probabilities:0.2510.2510.2520.246leftson=2(19278obs)rightson=3(8722obs)Primarysplits:CustomerPropensitysplitsasRLLLR,improve=372.73440,(0missing)MembershipPoints<1.5totheright,improve=278.31900,(0missing)LastPurchaseDuration<4.5totheleft,improve=189.24010,(0missing)IncomeClasssplitsasLLLLLRRRR,improve=26.05557,(0missing)Surrogatesplits:LastPurchaseDuration<14.5totheleft,agree=0.694,adj=0.019,(0split)

Nodenumber2:19278observations,complexityparam=0.0314829predictedclass=1expectedloss=0.6953522P(node)=0.6885classcounts:5873520140624142probabilities:0.3050.2700.2110.215leftson=4(16072obs)rightson=5(3206obs)Primarysplits:MembershipPoints<1.5totheright,improve=261.15400,(0missing)LastPurchaseDuration<3.5totheleft,improve=96.05630,(0missing)CustomerPropensitysplitsas-RRL-,improve=76.61419,(0missing)IncomeClasssplitsasLLLLLRRRR,improve=11.53160,(0missing)

Nodenumber3:8722observationspredictedclass=3expectedloss=0.6553543P(node)=0.3115classcounts:1142181930062755probabilities:0.1310.2090.3450.316

Nodenumber4:16072observationspredictedclass=1expectedloss=0.6812469P(node)=0.574classcounts:5123452736892733probabilities:0.3190.2820.2300.170

Nodenumber5:3206observationspredictedclass=4expectedloss=0.5605115P(node)=0.1145classcounts:7506743731409probabilities:0.2340.2100.1160.439決策樹模型驗證準備好訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集后,接下來便利用決策樹模型在訓(xùn)練數(shù)據(jù)集上進行訓(xùn)練,學(xué)習(xí)數(shù)據(jù)中蘊含的規(guī)則。們利用訓(xùn)練數(shù)據(jù)集對CART模型進行訓(xùn)練,訓(xùn)練結(jié)束后,調(diào)用summary函數(shù)查看CART模型的訓(xùn)練結(jié)果:#導(dǎo)入相關(guān)包library(gmodels)

purchase_pred_train<-predict(CARTModel,test,type="class")CrossTable(test$ProductChoice,purchase_pred_train,prop.chisq=FALSE,prop.c=FALSE,prop.r=FALSE,dnn=c('actualdefault','predicteddefault'))CellContents|-------------------------||N||N/TableTotal||-------------------------|

TotalObservationsinTable:19840

|predicteddefaultactualdefault|1|3|4|RowTotal|---------------|-----------|-----------|-----------|-----------|1|2923|1399|642|4964||0.147|0.071|0.032||---------------|-----------|-----------|-----------|-----------|2|2357|1909|665|4931||0.119|0.096|0.034||---------------|-----------|-----------|-----------|-----------|3|1733|2702|506|4941||0.087|0.136|0.026||---------------|-----------|-----------|-----------|-----------|4|1291|2241|1472|5004||0.065|0.113|0.074||---------------|-----------|-----------|-----------|-----------|ColumnTotal|8304|8251|3285|19840|---------------|-----------|-----------|-----------|-----------|本章小結(jié)首先詳細介紹了CART算法原理,主要包括決策樹生成與決策樹剪枝兩部分;隨后通過示例講解了CART算法的運行過程;為了加深讀者對決策樹模型的理解,本章接著介紹了決策樹模型的優(yōu)缺點以及決策樹模型的實踐建議;最后利用R語言將決策樹建模的整個過程進行實踐。DataMiningandDataAnalysiswithR數(shù)據(jù)挖掘與數(shù)據(jù)分析:基于R語言第六章隨機森林隨機森林方法原理01模型理解02R語言編程03章節(jié)內(nèi)容6.1隨機森林方法原理應(yīng)用背景介紹隨機森林作為一種經(jīng)典的集成學(xué)習(xí)方法,在許多任務(wù)上均有領(lǐng)先于一般單一模型的性能。所謂集成學(xué)習(xí)方法就是模擬人類的合作行為,通過多個模型對同一任務(wù)進行具體的操作(比如分類或回歸)。隨機森林中的基礎(chǔ)模型是熟知的決策樹模型,通過各個決策樹對任務(wù)進行綜合評估最終得出結(jié)果。bagging介紹由于隨機森林是基于bagging的一種集成學(xué)習(xí)方法,因此在對隨機森林方法介紹之前,首先探討集成學(xué)習(xí)的相關(guān)內(nèi)容。作為并行式集成學(xué)習(xí)方法的典型,bagging的特點便是采用隨機采樣的方法,讓各個“基學(xué)習(xí)器”隨機地學(xué)習(xí)整體樣本中采樣出來的一部分,進而綜合給出最終的輸出。

bagging介紹隨機森林

6.2模型理解隨機森林作為一種用于分類和回歸的集成學(xué)習(xí)方法,其目標是通過多個CART決策樹共同從數(shù)據(jù)特征推斷出簡單決策規(guī)則,從而達到預(yù)測目標變量類別或值的目的。一般而言,隨機森林中的CART決策樹的深度越深,決策規(guī)則越復(fù)雜,模型適用的范圍越廣。隨機森林模型的優(yōu)點隨機森林的訓(xùn)練可以高度并行化,這對于大數(shù)據(jù)時代的大樣本訓(xùn)練具有很大的優(yōu)勢,可以大大提升訓(xùn)練速度。由于隨機森林可以隨機選擇決策樹節(jié)點劃分特征,這在樣本特征維度很高的時候,仍然能高效地訓(xùn)練模型。隨機森林在訓(xùn)練后,可以給出各個特征對于輸出的重要性,從而可以針對不同的問題確定出重要特征和非重要特征。由于隨機森林采用了隨機采樣,訓(xùn)練出的模型的方差較小,從而具有更強的泛化能力。隨機森林模型的優(yōu)缺點隨機森林原理簡單,容易實現(xiàn)且計算開銷小,這對于大數(shù)據(jù)集而言,具有十分明顯的優(yōu)勢。隨機森林模型對部分特征缺失不敏感,因此,允許原始數(shù)據(jù)集中存在一定的數(shù)據(jù)缺失,具有較強的魯棒性。隨機森林模型的缺點隨機森林模型在某些噪音比較大的數(shù)據(jù)集上,容易陷入過擬合,使得模型在新的數(shù)據(jù)集上的預(yù)測或分類性能表現(xiàn)差。隨機森林模型對于取值劃分比較多的特征對應(yīng)的數(shù)據(jù)集不易產(chǎn)生令人滿意的模型擬合效果。隨機森林模型的優(yōu)缺點

隨機森林模型應(yīng)用

隨機森林模型應(yīng)用6.3R語言編程本節(jié)利用R語言將隨機森林建模的整個過程進行實踐。對于一個新的問題,隨機森林建模主要包括四個部分:數(shù)據(jù)導(dǎo)入、數(shù)據(jù)預(yù)處理、隨機森林模型訓(xùn)練、隨機森林模型驗證。數(shù)據(jù)導(dǎo)入首先導(dǎo)入讀取數(shù)據(jù)的相關(guān)庫,并利用fread函數(shù)讀取原始數(shù)據(jù)集PurchasePredictionDataset.csv(下載鏈接:/Apress/machine-learning-using-r/blob/master/Dataset/Chapter%206.zip)。該數(shù)據(jù)集共包含12個屬性信息,具體的屬性信息可以通過str(Data_Purchase)進行查看:#相關(guān)庫導(dǎo)入library(data.table)library(C50)library(splitstackshape)library(rattle)library(rpart.plot)library(data.table)library(knitr)#讀取數(shù)據(jù)集Data_Purchase<-fread("./PurchasePredictionDataset.csv",header=T,verbose=FALSE,showProgress=FALSE)str(Data_Purchase)#查看數(shù)據(jù)信息table(Data_Purchase$ProductChoice)數(shù)據(jù)預(yù)處理首先,選定了部分相關(guān)列作為用于隨機森林模型訓(xùn)練的屬性,包括用戶ID、用戶選擇的產(chǎn)品類型、用戶的會員積分、收入類別、顧客傾向性和產(chǎn)品最終購買時間。隨機森林對于缺失值是敏感的,因此對數(shù)據(jù)集中的缺失值實行了刪除操作。#獲取相關(guān)數(shù)據(jù)集的相關(guān)列Data_Purchase<-Data_Purchase[,.(CUSTOMER_ID,ProductChoice,MembershipPoints,IncomeClass,CustomerPropensity,LastPurchaseDuration)]#刪除缺失值Data_Purchase<-na.omit(Data_Purchase)Data_Purchase$CUSTOMER_ID<-as.character(Data_Purchase$CUSTOMER_ID)#分層抽樣Data_Purchase_Model<-stratified(Data_Purchase,group=c("ProductChoice"),size=10000,replace=FALSE)print("TheDistributionofequalclassesisasbelow")table(Data_Purchase_Model$ProductChoice)預(yù)處理結(jié)束后,還需要對該數(shù)據(jù)集進行劃分,形成訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集兩部分。其中訓(xùn)練數(shù)據(jù)集用于對隨機森林進行訓(xùn)練,而測試數(shù)據(jù)集則用于評估隨機森林的泛化能力。Data_Purchase_Model$ProductChoice<-as.factor(Data_Purchase_Model$ProductChoice)Data_Purchase_Model$IncomeClass<-as.factor(Data_Purchase_Model$IncomeClass)Data_Purchase_Model$CustomerPropensity<-as.factor(Data_Purchase_Model$CustomerPropensity)#在訓(xùn)練數(shù)據(jù)(Set_1)上建立隨機森林,然后測試數(shù)據(jù)(Set_2)將被用于性能測試set.seed(917)train<-Data_Purchase_Model[sample(nrow(Data_Purchase_Model),size=nrow(Data_Purchase_Model)*(0.7),replace=FALSE,prob=NULL),]train<-as.data.frame(train)test<-Data_Purchase_Model[!(Data_Purchase_Model$CUSTOMER_ID%in%train$CUSTOMER_ID),]print(test)數(shù)據(jù)預(yù)處理隨機森林模型訓(xùn)練準備好訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集后,接下來便利用隨機森林模型在訓(xùn)練數(shù)據(jù)集上進行訓(xùn)練,學(xué)習(xí)數(shù)據(jù)中蘊含的規(guī)則。模型訓(xùn)練代碼如下:#導(dǎo)入相關(guān)庫library(gmodels)library(ggplot2)library(lattice)library(caret)control<-trainControl(method="repeatedcv",number=5,repeats=2)#RandomForestset.seed(100)rfModel<-train(ProductChoice~CustomerPropensity+LastPurchaseDuration+MembershipPoints,data=train,method="rf",trControl=control)隨機森林模型驗證為了評估隨機森林模型,需要對模型在訓(xùn)練數(shù)據(jù)集上的效果進行驗證。predict函數(shù)的輸入為原始的測試數(shù)據(jù)集特征,輸出為對應(yīng)的標簽,即ProductChoice的預(yù)測值,接著利用CrossTable函數(shù)對ProductChoice的預(yù)測值和真實值進行分析,便可以得到整個隨機森林模型的評估結(jié)果。具體結(jié)果如圖所示:purchase_pred_test<-predict(rfModel,test)CrossTable(test$ProductChoice,purchase_pred_test,prop.chisq=FALSE,prop.c=FALSE,prop.r=FALSE,dnn=c('actualdefault','predicteddefault'))本章小結(jié)首先詳細介紹了隨機森林算法原理,主要包括bagging方法和隨機森林兩部分;隨后為了加深讀者對隨機森林模型的理解,介紹了隨機森林模型的優(yōu)缺點以及隨機森林模型應(yīng)用;最后利用R語言將隨機森林建模的整個過程進行實踐。DataMiningandDataAnalysiswithR數(shù)據(jù)挖掘與數(shù)據(jù)分析:基于R語言合作QQ:243001978第七章貝葉斯分類器合作QQ:243001978貝葉斯定理01樸素貝葉斯分類器02貝葉斯信念網(wǎng)絡(luò)03R編程04章節(jié)內(nèi)容應(yīng)用背景介紹合作QQ:243001978問題:分類過程中存在不確定性—屬性集和類變量關(guān)系的不確定性可能由噪聲數(shù)據(jù)或缺失屬性導(dǎo)致。解決方案:上述問題產(chǎn)生的原因可能是存在噪聲數(shù)據(jù),或者出現(xiàn)了某些影響分類的屬性卻沒有包含在分析中,此時可以基于概率模型構(gòu)建分類器。定義:貝葉斯分類器是建立在貝葉斯概率模型上,以貝葉斯定理為基礎(chǔ)的一類分類算法的總稱。具體而言,貝葉斯分類器是一種對屬性集和類變量的概率關(guān)系建模的方法,在包含不確定性的環(huán)境中研究如何對分類任務(wù)做出最優(yōu)決策,即在所有相關(guān)概率已知的情況下,基于概率和誤判損失來選擇最優(yōu)的類別標記。貝葉斯分類器7.1貝葉斯定理合作QQ:243001978貝葉斯概率模型

用X表示屬性集,Y表示類變量,如果類變量和屬性之間的關(guān)系不確定,那么可以把X和Y看作隨機變量,貝葉斯定理則是關(guān)于隨機變量(或稱為隨機事件)X和Y的條件概率(或邊緣概率)的一則定理。類條件概率

P(X|Y)表示在某種類別的前提下,某事發(fā)生的概率;后驗概率P(Y|X)表示某事發(fā)生了,并且它屬于某一類別的概率,后驗概率越大,說明某事物屬于這個類別的可能性越大。問題:準確估計類標號和屬性值的每一種可能組合的后驗概率非常困難,因為即便屬性數(shù)目不是很大,仍然需要很大的訓(xùn)練集進行數(shù)據(jù)支持。解決方案:此時,利用貝葉斯概率模型定理能較快地計算出后驗概率。后驗概率7.1貝葉斯定理合作QQ:243001978示例ID有房婚姻狀況年收入拖欠貸款1是單身125KNo2否已婚100KNo3否單身70KNo4是已婚120KNo5否離婚95KYes6否已婚60KNo7是離婚220KNo8否單身85KYes9否已婚75KNo10否單身90KYes表7-1預(yù)測貸款拖欠問題的訓(xùn)練集

總是常數(shù),因此可以忽略本章介紹樸素貝葉斯分類器和貝葉斯信念網(wǎng)絡(luò)實現(xiàn)通過計算訓(xùn)練集中屬于每個類的訓(xùn)練記錄所占的比7.2樸素貝葉斯分類器合作QQ:243001978樸素貝葉斯方法是一組監(jiān)督學(xué)習(xí)算法,是貝葉斯分類器中最簡單且最常見的一種分類方法

樸素貝葉斯分類器的工作流程合作QQ:243001978

…可對應(yīng)預(yù)測貸款拖欠問題的訓(xùn)練集樸素貝葉斯分類方法的關(guān)鍵是計算該步驟的條件概率樸素貝葉斯分類器的工作流程合作QQ:243001978

估計類別下屬性劃分的條件概率合作QQ:243001978

特征值P(特征值|No)P(特征值|Yes)有房=是3/70/3有房=否4/73/3婚姻狀況=單身2/72/3婚姻狀況=離婚1/71/3婚姻狀況=已婚4/70/3表7-2預(yù)測貸款拖欠問題中各類別下離散屬性的條件概率估計類別下屬性劃分的條件概率合作QQ:243001978

把連續(xù)屬性轉(zhuǎn)換成序數(shù)屬性。可以假設(shè)連續(xù)變量服從某種概率分布,然后使用訓(xùn)練數(shù)據(jù)估計分布的參數(shù)。估計類別下屬性劃分的條件概率合作QQ:243001978

估計類別下屬性劃分的條件概率合作QQ:243001978估計連續(xù)屬性的條件概率ID有房婚姻狀況年收入拖欠貸款1是單身125KNo2否已婚100KNo3否單身70KNo4是已婚120KNo5否離婚95KYes6否已婚60KNo7是離婚220KNo8否單身85KYes9否已婚75KNo10否單身90KYes屬性“年收入”為連續(xù)屬性。關(guān)于類No的樣本均值和方差的計算過程如下:

當給定一測試記錄中的年收入為120K時,其在類別No下的類條件概率計算如下:

表7-1預(yù)測貸款拖欠問題的訓(xùn)練集Laplace校準

K:代表類別的種類個數(shù)

Laplace校準根據(jù)給出的訓(xùn)練集和Laplace平滑公式,可以計算出校準后的先驗概率類別YesNo先驗概率表7-4Laplace校準后先驗概率計算結(jié)果特征值P(特征值|No)P(特征值|Yes)有房=是有房=否婚姻狀況=單身婚姻狀況=離婚婚姻狀況=已婚表7-5Laplace校準后條件概率計算結(jié)果樸素貝葉斯分類器的特征優(yōu)點對預(yù)測樣本進行預(yù)測時,過程簡單且速度快;對于多分類問題同樣很有效,復(fù)雜度不會表現(xiàn)出大幅度上升;在滿足條件獨立假設(shè)的情況下,貝葉斯分類器效果較好,略勝于邏輯回歸,并且所需要的樣本量也更少。面對孤立的噪聲點,樸素貝葉斯分類器是健壯的,因為基于訓(xùn)練數(shù)據(jù)估計條件概率時,這些點會被平均;在建模和分類時,樸素貝葉斯分類器可以通過忽略樣例,處理屬性值遺漏問題;面對無關(guān)屬性,該分類器是健壯的。缺點樸素貝葉斯有條件獨立的假設(shè)前提,而實際應(yīng)用中屬性之間很難完全獨立,相關(guān)屬性可能會降低該分類器的性能,使得算法的準確性和可信度下降;對于測試集中的一個類別變量特征,如果在訓(xùn)練集里沒出現(xiàn)過,直接應(yīng)用貝葉斯定理計算得到的概率是0,預(yù)測功能失效。此時需要應(yīng)用修改公式重新計算,例如使用Laplace校準解決這個問題。7.3貝葉斯信念網(wǎng)絡(luò)合作QQ:243001978貝葉斯信念網(wǎng)絡(luò)(BBN):樸素貝葉斯分類的改進屬性不要求所有屬性條件獨立。允許部分或子集屬性條件獨立。網(wǎng)絡(luò)圖形因果關(guān)系的圖形表示。網(wǎng)絡(luò)圖形提供對關(guān)系的直觀理解。貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)可能未知,基于數(shù)據(jù)進行啟發(fā)式學(xué)習(xí)。應(yīng)用領(lǐng)域醫(yī)療診斷、信息檢索。點擊技術(shù)、工業(yè)工程。模型表示

模型表示

模型表示圖7-1一種貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)示例

模型表示

圖7-2貝葉斯網(wǎng)絡(luò)中三個變量之間的典型依賴關(guān)系構(gòu)建BBN模型貝葉斯網(wǎng)絡(luò)的建模過程稱為學(xué)習(xí)過程,其包括兩個步驟創(chuàng)建網(wǎng)絡(luò)結(jié)構(gòu):網(wǎng)絡(luò)拓撲結(jié)構(gòu)既可以通過領(lǐng)域?qū)<覍I(yè)知識進行主觀編碼獲得,也可以利用算法基于訓(xùn)練數(shù)據(jù)集計算得到。兩種網(wǎng)絡(luò)結(jié)構(gòu)的生成算法:網(wǎng)絡(luò)結(jié)構(gòu)的系統(tǒng)生成算法和基于評分搜索的網(wǎng)絡(luò)結(jié)構(gòu)生成算法。估計每一個結(jié)點概率表中的概率值:當確定了合適的網(wǎng)絡(luò)結(jié)構(gòu),可以計算出與各結(jié)點關(guān)聯(lián)的概率表,相關(guān)概率的估計與樸素貝葉斯分類器中所用的方法類似。構(gòu)建BBN模型

構(gòu)建BBN模型算法7.1:貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)的系統(tǒng)生成算法算法不允許從低序列結(jié)點指向高序列結(jié)點的弧存在,保證了生成的網(wǎng)絡(luò)結(jié)構(gòu)不包含環(huán)。輸入的屬性排序方案是參考領(lǐng)域?qū)<业闹饔^判斷生成的,如果采用了不同的排序方案,可能得到不同的網(wǎng)絡(luò)結(jié)構(gòu)。從理論上講,通過檢查最多n!種屬性的排序能夠確定最佳的拓撲結(jié)構(gòu),但是隨之產(chǎn)生的時間成本和空間成本很大。為了縮減計算任務(wù)開銷和簡化貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)的建立過程,可以預(yù)先將屬性劃分為原因?qū)傩院徒Y(jié)果屬性,然后從各原因?qū)傩韵蚱鋵?yīng)的結(jié)果屬性畫弧。構(gòu)建BBN模型

圖7-3貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)生成過程構(gòu)建BBN模型

構(gòu)建BBN模型

構(gòu)建BBN模型從所有可能的網(wǎng)絡(luò)結(jié)構(gòu)空間搜索最優(yōu)貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)是一個NP難問題常用的策略能在有限時間內(nèi)求得近似解:貪心算法,例如從某個網(wǎng)絡(luò)結(jié)構(gòu)出發(fā),每次調(diào)整一條邊(增加、刪除或調(diào)整方向),直到評分函數(shù)值不再降低為止;通過給網(wǎng)絡(luò)結(jié)構(gòu)添加約束來削減搜索空間,例如將網(wǎng)絡(luò)結(jié)構(gòu)限定為樹形結(jié)構(gòu)等。搜索算法的目的是求出每個屬性評分函數(shù)最大的父屬性集合,相關(guān)算法包括:K2算法,爬山算法,GES算法和基于進化計算的方法。BBN案例分析發(fā)現(xiàn)心臟病和心口痛病人的貝葉斯網(wǎng)絡(luò)假設(shè)圖中每個變量都是二值的。心臟病結(jié)點(HD)的父母結(jié)點對應(yīng)于影響該疾病的危險因素,包括鍛煉(E)和飲食(D)等。心臟病結(jié)點的子結(jié)點對應(yīng)于該病的癥狀,如胸痛(CP)和高血壓(BP)等。心口痛(Hb)可能源于不健康的飲食,同時也可能導(dǎo)致胸痛。圖7-4發(fā)現(xiàn)心臟病和心口痛病人的貝葉斯網(wǎng)絡(luò)BBN案例分析

BBN案例分析

BBN案例分析

貝葉斯網(wǎng)絡(luò)的特征以下總結(jié)了貝葉斯網(wǎng)絡(luò)的一般特點:貝葉斯網(wǎng)絡(luò)提供了一種用圖形模型來捕獲特定領(lǐng)域的先驗知識的方法,并且網(wǎng)絡(luò)可以用來對變量間的因果依賴關(guān)系進行編碼。雖然貝葉斯網(wǎng)絡(luò)在構(gòu)造網(wǎng)絡(luò)時計算任務(wù)開銷大,但是在確定網(wǎng)絡(luò)結(jié)構(gòu)后,其很容易擴展(或簡化)網(wǎng)絡(luò),以適應(yīng)不斷變化的需求信息。貝葉斯網(wǎng)絡(luò)很適合處理不完整的數(shù)據(jù)。對于有屬性遺漏的實例可以通過對該屬性的所有可能取值的概率求和或求積分來加以處理。因為數(shù)據(jù)和先驗知識以概率的方式結(jié)合起來了,貝葉斯網(wǎng)絡(luò)能夠有效處理模型的過分擬合問題。如果貝葉斯網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)和所有結(jié)點的概率表是已知的,那么可以利用公式直接計算。但是某些情況下數(shù)據(jù)結(jié)構(gòu)是未知的,這時需要根據(jù)已知數(shù)據(jù)啟發(fā)式學(xué)習(xí)貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)。7.4R語言編程合作QQ:243001978數(shù)據(jù)導(dǎo)入利用樸素貝葉斯分類器對鳶尾花(Iris)數(shù)據(jù)集進行分類應(yīng)用。該數(shù)據(jù)集為軟件自帶數(shù)據(jù)集,可直接進行數(shù)據(jù)導(dǎo)入,數(shù)據(jù)導(dǎo)入與數(shù)據(jù)預(yù)處理的R編程代碼如右所示:#導(dǎo)入鳶尾花數(shù)據(jù)集data("iris")#數(shù)據(jù)具體信息展示head(iris,n=5)#整數(shù)變量因子化typeof(iris$Species)輸出:[1]"integer"

factor(iris$Species)levels(iris$Species)輸出:[1]"setosa""versicolor""virginica"

#數(shù)據(jù)維度信息dim(iris)輸出:[1]1505屬性名稱屬性解釋屬性示例Sepal.Length萼片長度(厘米)5.1Sepal.Width萼片寬度(厘米)3.5Petal.Length花瓣長度(厘米)1.4Petal.Width花瓣寬度(厘米)0.2Species種類setosa表7-6Iris數(shù)據(jù)集屬性解釋表樸素貝葉斯應(yīng)用實例模型訓(xùn)練調(diào)用樸素貝葉斯分類器可以通過e1071包實現(xiàn)。該包是一個核心包,里面實現(xiàn)了機器學(xué)習(xí)里面中的SVM(支持向量機)算法,NB(樸素貝葉斯)算法、模糊聚類算法、裝袋聚類算法等。使用help我們可以查看到樸素貝葉斯分類器的使用文檔,如圖7-5所示,其中?formula表示“公式”,data是訓(xùn)練集數(shù)據(jù),laplace參數(shù)是做拉普拉斯平滑,na.action參數(shù)是空缺值處理。#安裝核心包'e1071',使用其中的樸素貝葉斯分類方法install.packages('e1071')library(e1071)help(naiveBayes)圖7-5樸素貝葉斯分類器的R語言使用文檔樸素貝葉斯應(yīng)用實例模型訓(xùn)練首先,對處理后的數(shù)據(jù)集劃分訓(xùn)練集和測試集,預(yù)先設(shè)置70%的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)。然后,調(diào)用樸素貝葉斯方法分類器,輸出預(yù)測值結(jié)果。最后,利用列聯(lián)表展示分類結(jié)果。ntrain=nrow(iris)*0.7train_ord<-sample(nrow(iris),ntrain,replace=FALSE)train<-iris[train_ord,]test<-iris[-train_ord,]m<-naiveBayes(Species~.,data=train)pred<-predict(m,test)#加載列聯(lián)表的包install.packages('gmodels')library(gmodels)CrossTable(test$Species,pred)樸素貝葉斯應(yīng)用實例結(jié)果分析列聯(lián)表展示的分類結(jié)果如圖7-6所示。列聯(lián)表中每一格四個值分別代表:卡方檢驗值、行比例、列比例、總比例。從分類結(jié)果可以看出,測試集中的15個setosa(第一個物種)全部分類正確,17個versicolor(第二個物種)有16個分類正確,有1個錯誤的分到了virginica(第三個物種)中。13個virginica(第三個物種)有12個分類正確,1個分類錯誤。由此可以看出,樸素貝葉斯法分類器對該數(shù)據(jù)集的分類效果較好。圖7-6Iris數(shù)據(jù)集的分類結(jié)果列聯(lián)表貝葉斯網(wǎng)絡(luò)應(yīng)用示例數(shù)據(jù)導(dǎo)入對成績單(marks)數(shù)據(jù)集進行分類應(yīng)用該數(shù)據(jù)集包括88名學(xué)生的5門課程成績,課程包括MECH、VECT、ALG、ANL和STATR編程中可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論