1. 程式人生 > >使用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完成決策樹分類的例子如下:

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決策樹");

效果圖如下:


相關推薦

使用R完成決策分類

關於決策樹理論方面的介紹,李航的《統計機器學習》第五章有很好的講解。 傳統的ID3和C4.5一般用於分類問題,其中ID3使用資訊增益進行特徵選擇,即遞迴的選擇分類能力最強的特徵對資料進行分割,C4.5唯一不同的是使用資訊增益比進行特徵選擇。 特徵A對訓練資料D的資訊增益g(

R語言學習(三)——決策分類

分類 分類(Classification)任務就是通過學習獲得一個目標函式(Target Function)f, 將每個屬性集x對映到一個預先定義好的類標號y。 分類任務的輸入資料是記錄的集合,每條記錄也稱為例項或者樣例。用元組(X,y)表示,其中,X 是屬性集合,y是一個特殊的

機器學習演算法(二)——決策分類演算法及R語言實現方法

決策樹演算法是分類演算法中最常用的演算法之一。決策樹是一種類似流程圖的樹形結構,可以處理高維資料,直觀易理解,且準確率較高,因此應用廣泛。本篇小博就決策樹的若干演算法:ID3演算法、C4.5演算法以及分類迴歸樹(CART)、C5.0進行對比介紹,並對比C4.5與C5.0處理

統計學習方法五 決策分類

回歸 element row tps 樣本 pan 類別 表示 splay 決策樹分類 1,概念           2,決策樹算法 2.1,特征選擇:   熵:值越大,不確定性因素越大;條件熵:條件對結果的影響不確定性;信息增益;信息增益比                

機器學習之路: python 決策分類 預測泰坦尼克號乘客是否幸存

現象 info n) 指標 ssi 直觀 learn 保持 afr 使用python3 學習了決策樹分類器的api 涉及到 特征的提取,數據類型保留,分類類型抽取出來新的類型 需要網上下載數據集,我把他們下載到了本地, 可以到我的git下載代碼和數據集: https

R語言︱決策族——隨機森林演算法

筆者寄語:有一篇《有監督學習選擇深度學習還是隨機森林或支援向量機?》(作者Bio:SebastianRaschka)中提到,在日常機器學習工作或學習中,當我們遇到有監督學習相關問題時,不妨考慮下先用簡單的假設空間(簡單模型集合),例如線性模型邏輯迴歸。若效果不好,也即並沒達到你的預期或評判效果基

sklearn的快速使用之六(決策分類

print(__doc__) import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClas

決策分類鳶尾花資料集

import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeClassifier iris_

sklearn學習筆記之決策分類和線性迴歸

decisoin tree: # -*- coding: utf-8 -*- import sklearn from sklearn import tree import matplotlib.pyplot as plt from sklearn.model_selection impor

R語言 決策及其實現

一顆決策樹包含一個根結點、若干個內部結點和若干個葉結點;葉結點對應於決策結果,其他每個結點則對應於一個屬性測試;每個結點包含的樣本集合根據屬性測試的結果被劃分到子結點中;根結點包含樣本全集。從根結點到葉結點的路徑對應於了一個判定測試序列。目的:為了產生一顆泛化能力強,即處理未

決策分類器演算法實現

# -*- coding: cp936 -*- #決策樹分類器 my_data=[['slashdot','USA','yes',18,'None'],['google','France','yes',23,'Premium'], ['digg','USA

R語言-決策-員工離職預測訓練賽

題目:員工離職預測訓練賽 網址:http://www.pkbigdata.com/common/cmpt/員工離職預測訓練賽_競賽資訊.html 要求: 資料主要包括影響員工離職的各種因素(工資、出差、工作環境滿意度、工作投入度、是否加班、是否升職、工資提升比例等)以及員工

R語言-決策-party包

1、首先解釋下熵和吉尼係數在決策樹的功用        決策樹學習的關鍵是如何選擇最優的劃分屬性。通常,隨著劃分過程的不斷進行,我們希望決策樹的內部分支節點所包含的樣本儘可能屬於同一類別,即節點的“純度”越來越高。  

r語言決策

決策樹演算法 決策樹的建立 建立決策樹的問題可以用遞迴的形式表示: 1、首先選擇一個屬性放置在根節點,為每一個可能的屬性值產生一個分支:將樣本拆分為多個子集,一個子集對應一種屬性值; 2、在每一個分支上遞迴地重複這個過程,選出真正達到這個分支的例項; 3、如果在一個節點上的

R語言 決策

決策樹是以樹的形式表示選擇及其結果的圖。圖中的節點表示事件或選擇,並且圖的邊緣表示決策規則或條件。它主要用於使用R的機器學習和資料探勘應用程式。 決策樹的使用的例子是 - 預測電子郵件是垃圾郵件或非垃圾郵件,預測腫瘤癌變,或者基於這些因素預測貸款的信用風險。通

決策分類鳶尾花資料demo

code:import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib as mpl from sklearn import tree from sklearn

R語言-決策演算法(C4.5和CART)的實現

決策樹演算法的實現: 一、C4.5演算法的實現 a、需要的包:sampling、party library(sampling) library(party) sampling用於實現資料分層隨機抽樣,構造訓練集和測試集。 party用於實現決策樹演算法 另外,還可以設定隨

決策分類——matlab程式

%% 使用ID3決策樹演算法預測銷量高低 clc; clear ; %% 資料預處理 disp('正在進行資料預處理...'); [matrix,attributes_label,attributes] = id3_preprocess(); %% 構造ID3決策樹,其

影像資訊提取之——基於專家知識的決策分類

 可以將多源資料用於影像分類當中,這就是專家知識的決策樹分類器,本專題以ENVI中Decision Tree為例來敘述這一分類器。 本專題包括以下內容: 專家知識分類器概述 知識(規則)定義 ENVI中Decision Tree的使用 概述 基於知識的決策樹分

R語言決策演算法

1,生成樹:rpart()函式raprt(formular,data,weight,subset,na.action=na.rpart,method,model=FALSE,x=FALSE,y=TRUE,parms,control,cost,...)         fomula :模型格式形如outcom