2.資料分類 Classification 分類範例一:鳶尾花各種分類模型 分類範例二:新生兒體重數值預測 分類範例三:交叉驗證與部署模型

Slides:



Advertisements
Similar presentations
©2009 陳欣得 統計學 —e1 微積分基本概念 1 第 e 章 微積分基本概念 e.1 基本函數的性質 02 e.2 微分基本公式 08 e.3 積分基本公式 18 e.4 多重微分與多重積分 25 e.5 微積分在統計上的應用 32.
Advertisements

REGRESSION AND CLASSIFICATION TREES 迴歸與分類樹. 簡介 傳統的複迴歸分析,假設誤差項服從常態分配,所 以複迴歸分析是一種有母數 (parametric) 方法。 本章將介紹一種常用的無母數 (non-parametric) 的 迴歸方法,此法稱為決策樹 (decision.
基于大数据挖掘的电话销售策略 --- 以百姓网电话销售业务为例
計算機程式語言實習課.
分類:基本概念、決策樹與模型評估.
類別資料分析(Categorical Data Analysis)
99年成語200題庫(21-40).
R軟體與統計分析(下) 常態分配與次數分配表CH 統計推論與各種檢定CH14 迴歸分析與羅吉斯迴歸CH15
Views ,Stored Procedures, User-defined Function, Triggers
LINGO.
實驗計畫資料分析作業解答 何正斌 國立屏東科技大學工業管理系.
題目:十六對一多工器 姓名:李國豪 學號:B
Chapter 5 迴圈.
R軟體統計分析 常態分配與次數分配表 統計推論與各種檢定 羅吉斯迴歸和決策樹 迴歸分析和變異數分析.
Supplement Data Mining 工具介紹 楊立偉教授 台灣大學工管系 2014 Fall 1.
Supplement Data Mining 工具介紹 楊立偉教授 台灣大學工管系 2015 Fall 1.
LINQ 建國科技大學 資管系 饒瑞佶.
Data Mining 資料探勘 個案分析與實作四 (SAS EM 迴歸分析、類神經網路):
Using EXCEL for ANOVA.
邏輯迴歸 Logistic Regression
分類:基本概念、決策樹與模型評估.
Data Mining 工具介紹 (Weka / R)
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
CHT IPv6測試 D-Link Taiwan 友訊科技台灣分公司 TTSS 電信技術支援課 Name:
安裝JDK 安裝Eclipse Eclipse 中文化
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
Java 程式設計 講師:FrankLin.
CH03 資訊管理的智慧觀點:技術篇.
海報評比 班級:系統四甲 學號: 姓名:蔡飛宏 授課老師:唐蔚.
MNIST 手寫數字影像辨識.
Random Forest (隨機森林) 學號:R 姓名:王順達
有關於股票報酬及匯率變化對台灣醫療產業市場收益的分析
CH1 我的第一個App與變數宣告.
第十章 線上行銷研究.
CH05. 選擇敘述.
挑戰C++程式語言 ──第8章 進一步談字元與字串
如何使用Gene Ontology 網址:
Cross-Selling Strategies in e-Marketing
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
HelloPurr_Extend 靜宜大學資管系 楊子青
DRC with Calibre 課程名稱:VLSI 報告人:黃家洋 日期: 改版(蔡秉均) 1.
MicroSim pspice.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
函數應用(二)與自定函數.
亂數 隨機產生亂數 Random類別支援的方法: Next多載方法 Next :傳回亂數。
SQL語法教學 2015/10/15 John.
從HTML表格到CSS 靜宜大學 資管系 楊子青.
動畫演示 Node規範了一些基本的方法,像是增加節點、刪除節點、讓節點做一些事、取得第n個節點等等
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
1-1 二元一次式運算.
674: Coin Change ★★☆☆☆ 題組:Problem Set Archive with Online Judge
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
非負矩陣分解法介紹 報告者:李建德.
Test for R Data Processing & Graphics
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
單元三:敘述統計 內容: * 統計量的計算 * 直方圖的繪製.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
SQLite資料庫 靜宜大學資管系 楊子青.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
Chapter 4 Multi-Threads (多執行緒).
银川社保网上申报 宁夏人力资源和社会保障 网上服务大厅操作
Develop and Build Drives by Visual C++ IDE
分類樹(Classification Tree)探討Baseball Data
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
CHT IPv6測試 D-Link Taiwan 友訊科技台灣分公司 TTSS 電信技術支援課 Name:
InputStreamReader Console Scanner
Presentation transcript:

2.資料分類 Classification 分類範例一:鳶尾花各種分類模型 分類範例二:新生兒體重數值預測 分類範例三:交叉驗證與部署模型 分類範例四:客戶信用風險評估 4 2 3 1 分類範例三:交叉驗證與部署模型

函數【C5.0】 【tree】 【ctree】 【RandomForest】檔案iris 150 records 5 fields 資料分類範例 一 函數【C5.0】 【tree】 【ctree】 【RandomForest】檔案iris 150 records 5 fields

資料探勘:決策樹 決策樹(decision tree)是常用的資料探勘技術,可視為迴歸分析的擴充 決策樹可用於分類預測,此類決策樹稱為分類樹(classification tree),有些決策樹演算法可達成類似迴歸分析的數值應變數預測功能,此類決策樹稱為迴歸樹(regression tree) 決策樹是將資料依照每一階段不同的條件作循環切割(recursive partition),跟迴歸分析最大的不同在於一個解釋變數可在不同的切割階段被重複使用

決策樹圖例

R軟體常用的幾種決策樹 C5.0決策樹: R提供C50套件的C5.0函數 iris.C5=C5.0(Species~ . ,data=iris) CART分類迴歸樹: R提供tree和rpart套件(內建)的tree和rpart函數 iris.tree=tree(Species~ . ,data=iris) Random Forest隨機森林: R提供randomForest套件的randomForest函數 iris.rf=randomForest(Species~ . ,data=iris)

C5.0決策樹基本概念 Quinlan在1986年所提出的ID3演算法後,因其無法處理連續屬性的問題且不適用在處理大的資料集,因此1993又發表C5.0的前身4.5,直到現在所使用的C5.0決策樹演算法 C5.0演算法的結果可產生決策樹及規則集兩種模型,並且依最大資訊增益的欄位來切割樣本,並重複進行切割直到樣本子集不能再被分割爲止 C5.0能處理連續型變數與類別型的變數資料,,目標欄位必須是類別型變數

iris的C5.0決策樹程式碼 #test group(test.index sampling 30% records), remaining 70% as train group n=0.3*nrow(iris) test.index=sample(1:nrow(iris),n) iris.train=iris[-test.index,] iris.test=iris[test.index,] library(C50) iris.tree=C5.0(Species~ . ,data=iris.train) summary(iris.tree) plot(iris.tree)

#train confusion matrix species.train=iris$Species[-test.index] train.pred=predict(iris.tree,iris.train,type='class') table.train=table(species.train,train.pred) table.train cat("Total records(train)=",nrow(iris.train),"\n") cat("Correct Classification Ratio(train)=", sum(diag(table.train))/sum(table.train)*100,"%\n") #test confusion matrix species.test=iris$Species[test.index] test.pred=predict(iris.tree,iris.test,type='class') table.test=table(species.test,test.pred) table.test cat("Total records(test)=",nrow(iris.test),"\n") cat("Correct Classification Ratio(test)=", sum(diag(table.test))/sum(table.test)*100,"%\n")

C5.0規則組及預測變數重要性

C5.0的決策樹圖

C5.0混淆矩陣和預測正確率

Modeler的決策樹模型

Modeler規則組及預測變數重要性

Modeler測試組的混淆矩陣和分析

比較party套件的ctree模型函數

ctree混淆矩陣和預測正確率

ctree的決策樹圖

隨機森林基本概念 隨機森林是由Brieman在2001年提出的Random Forest決策樹,將訓練樣本所有觀察值作多次抽出放回的隨機取樣,再用這些隨機樣本建構出數百數千棵決策樹,一個新物件會被分到哪個分類是由許多樹共同投票來決定 隨機森林可以應用在分類,也可以用在集群分析的領域 R提供randomForest套件建構randomForest決策樹,語法: library(randomForest) randomForest(Y ~.,data=…) .表示Y以外的其他所有變數

Random Forest程式碼 #test group(test.index sampling 30% records), remaining 70% as train group n=0.3*nrow(iris) test.index=sample(1:nrow(iris),n) iris.train=iris[-test.index,] iris.test=iris[test.index,] install.packages("randomForest") library(randomForest) iris.rf=randomForest(Species ~ ., data=iris.train,importance=T,proximity=T) print(iris.rf) round(importance(iris.rf),2)

names(iris.rf) (table.rf=iris.rf$confusion) cat("CORRECTION RATIO(train)=", sum(diag(table.rf)/sum(table.rf))*100,"%\n") #predict (rf.pred=predict(iris.rf,newdata=iris.test)) species.test=iris$Species[test.index] (table.test=table(Species=species.test,Predicted=rf.pred)) cat("CORRECTION RATIO(test)=", sum(diag(table.test)/sum(table.test))*100,"%\n") #clustering (iris.clutrf=randomForest(iris[,-5])) MDSplot(iris.clutrf,iris$Species,palette=rep(1,3), pch=as.numeric(iris$Species))

randomForest決策樹

訓練組混淆矩陣與預測正確率

測試組混淆矩陣與預測正確率

randomForest集群分析圖

函數【rpart】檔案babies.txt 1236 records 7 fields 資料分類範例二 函數【rpart】檔案babies.txt 1236 records 7 fields

分類迴歸樹基本概念 分類迴歸樹(CART, Classification and Regression Tree)由Brieman在1984年提出CART以反覆運算的方式,由根部開始反覆建立二元分支樹,直到樹節點中的同質性達到某個標準,或觸發反覆運算終止條件為止 CART的應變數欄位既可以是數值型資料,也可以是類別型資料 R提供tree和rpart建構CART決策樹,語法: rpart(Y ~ X1+X2+X3+…+Xk,data=…) tree(Y ~.,data=…) .表示Y以外的其他所有變數

babies資料檔範例 為了研究影響嬰兒體重的因素,使用rpart函數(Recursive Partitioning And Regression Trees),預測變數bwt是數值變數 資料的筆數計有1236筆,共有7個欄位, : 1. bwt:嬰兒體重 2. gestation:懷孕日數 3. parity:胎序,懷孕過幾胎 4. age:母親年齡 5. height :母親身高 6. weight :母親體重 7. smoke:母親抽煙與否,1表抽煙0表不抽煙

建立rpart模型的程式碼 babies=read.table("d:/stella/R/babies.txt",header=T) babies=na.exclude(babies) n=0.3*nrow(babies) test.index=sample(1:nrow(babies),n) babies.train=babies[-test.index,] babies.test=babies[test.index,] #decision tree library(rpart) babies.tree=rpart(bwt~gestation+parity+age+height+ weight+smoke,data=babies.train) babies.tree plot(babies.tree) text(babies.tree)

rpart決策樹

rpart決策樹圖

MAPE:數值變數預測效果評估 MAPE(Mean Absolute Percentage Error)的公式為: 各個樣本的(實際值-預測值)/實際值取絕對值後的平均 MAPE<10%則預測效果為GOOD 10%<MAPE<20%則預測效果為OK MAPE>20%則預測效果為BAD predict函數需加上type=“vector”以傳回預測值(原為type=“class”)

MAPE評估的程式碼 #variable importance babies.tree$variable.importance #MAPE of train and test group bwt.train=babies$bwt[-test.index] train.pred=predict(babies.tree,newdata=babies.train,type="vector") train.MAPE=mean(abs(bwt.train-train.pred)/bwt.train) cat("MAPE(train)=",train.MAPE*100,"%\n") bwt.test=babies$bwt[test.index] test.pred=predict(babies.tree,newdata=babies.test,type="vector") test.MAPE=mean(abs(bwt.test-test.pred)/bwt.test) cat("MAPE(test)=",test.MAPE*100,"%\n")

函數【C5.0】檔案iris 150 records 5 fields 資料分類範例三 函數【C5.0】檔案iris 150 records 5 fields

交叉驗證 目前為止我們使用過tree、 rpart 、 C5.0 、 ctree 、 randomForest等分類函數,分類正確率的預測又因為是取亂數,每次都不盡相同 ,所以我們希望各做10次再取平均值較為客觀 只要在程式片段以迴圈框住即可: for (i in 1:10) { … }

交叉驗證10次的執行結果

自動化交叉驗證10次

模型的部署iris 部署(deployment)就是將模型運用在新資料上,亦即先訓練舊資料再以新資料預測 新資料檔iris_new2.txt有10筆新資料,有花瓣花萼長寬但沒有種類欄位,需由我們建好的iris模型來預測,又假設交叉驗證結果是C5.0模型勝出,所以我們決定用C5.0模型來預測 因為新資料檔沒有Species欄位,因此產生的模型就無法產生混淆矩陣和正確率分析的結果 預測後的分類結果要和新資料檔合併並且輸出成一個新檔iris_all.txt

新資料與預測後的結果輸出

模型部署的程式碼 #C5.0 irisnew2.txt: 10 records library(C50) irisnew2=read.table("d:\\stella\\R\\iris_new2.txt",header=T,sep=",") #build C5.0 model iris.tree=C5.0(Species~ . ,data=iris) #predict irisnew2 iris.pred=predict(iris.tree,irisnew2,type='class') #merge predict result and output (irisall=data.frame(irisnew2,Spec.Pred=iris.pred)) write.table(irisall,"d:\\stella\\R\\iris_all.txt",row.names=F)

訓練iris C5.0模型再以新資料預測

資料分類範例四 函數【C5.0】 檔案risk.xlsx 4117 records 12 fields 檔案riskNew.xlsx 12470 records 10 fields

客戶信用風險評估 1.從risk.xlsx作資料準備 2.建立C5.0模型 3.判斷欄位的重要性 4.選出重要欄位重新建模 5.模型產生的規則組集 6.模型的決策樹圖 7.訓練和測試組正確率分析 8.以新資料riskNew.xlsx來預測

1. 從risk.xlsx作資料準備

2.建立C5.0模型

3.判斷欄位的重要性

4.選出重要欄位重新建模

5.模型產生的規則組集

6.模型的決策樹圖

7.訓練和測試組正確率分析

8.以新資料riskNew.xlsx預測

Modeler的混淆矩陣和分析結果

Modeler模型的直方圖