一、使用SAS/EM界面生成CHAID决策树

CHAID (Chi-Square Automatic Interaction

Detector)演算法為利用卡方分析(Chi-Square

Test)預測二個變數是否需要合併,如能夠產生最大的類別差異的預測變數,將成為節點的分隔變數。透過計算節點中類別的 P值

(P-Value),以P值大小來決定決策樹是否繼續生長,所以不需像C4.5或CART要再做決策樹修剪的動作。CHAID

與CART、C4.5

之差異在於,CHAID只限於處理類別變數,如連續變數必須採用區段的方式,轉換成類別變數。另一差異部分在於修剪的部分,CART、C4.5

是先過度套用資料訓練,之後再修剪。但CHAID 則是在過度套用之前即停止支點蔓生擴大。

二、通过R和SAS代码实现

样例数据来自 R 包,主要是想比较 R 和 SAS

生成的决策树是否相同。运行的结果确实不同,估计是运行参数的不同导致,仍有待研究。

1) Build CHAID tree using

R

# Train

data:

library(partykit)

library("CHAID")

data("BreastCancer", package = "mlbench")

# Build model:

ctrl

-1, alpha4 = 0.05,

minsplit=2, minbucket = 5, minprob = 0.01, stump = FALSE, maxheight

= 6)

b_chaid

Cl.thickness + Cell.size + Cell.shape + Marg.adhesion +

Epith.c.size + Bare.nuclei + Bl.cromatin + Normal.nucleoli +

Mitoses,

data = BreastCancer, na.action = na.pass, control =

ctrl)

plot(b_chaid)

2) Build CHAID tree using SAS/EM

SAS/EM Chaid Tree:

SAS Code:

proc iml;

submit /R;

#setInternet2(TRUE)

#install.packages("CHAID", repos="http://R-Forge.R-project.org")

# Train data:

library(partykit)

library("CHAID")

data("BreastCancer", package = "mlbench")

# Build model:

b_chaid

Cell.size + Cell.shape + Marg.adhesion +

Epith.c.size + Bare.nuclei + Bl.cromatin + Normal.nucleoli +

Mitoses,

data = BreastCancer)

png("D:/sbjgay/Chaid_r_plot.png")

plot(b_chaid)

dev.off()

endsubmit;

call ImportDataSetFromR("work.BreastCancer",

"BreastCancer");

run;quit;

filename rulecode "c:tempem_chaid_rules.sas";

*------------------------------------------------------------*;

* Tree: Run ARBOR procedure;

*------------------------------------------------------------*;

proc arbor data=work.BreastCancer

Leafsize=1

Splitsize=2

Mincatsize = 5

Maxbranch=10

Maxdepth=6

Criterion=PROBCHISQ

alpha = 0.05

Padjust= CHAIDAFTER

DEPTH

MAXRULES=5

MAXSURRS=0

Missing=USEINSEARCH

Exhaustive=0

event='malignant'

;

input Cl_thickness Cell_size

Cell_shape Marg_adhesion

Epith_c_size Bare_nuclei

Bl_cromatin Normal_nucleoli Mitoses / level=nominal;

target Class / level=NOMINAL

Criterion=PROBCHISQ;

Performance DISK

NodeSize=20000;

Assess NoValidata

measure=MISC;

SUBTREE LARGEST;

MAKEMACRO

NLEAVES=nleaves;

save

MODEL=Tree_EMTREE

SEQUENCE=Tree_OUTSEQ

IMPORTANCE=Tree_OUTIMPORT

NODESTAT=Tree_OUTNODES

SUMMARY=Tree_OUTSUMMARY

STATSBYNODE=Tree_OUTSTATS

Topology=Tree_OUTTOPOLOGY

Path = Tree_OUTPATH

Rules=Tree_OUTRules

;

code file=rulecode;

run;

quit;

3) Build CHAID tree using

TreeDisc.sas in SAS 9.3

NOTE: Treedisc.sas does not work in 9.4.

%inc 'c:tempchaidxmacro.sas';

%inc 'c:tempchaidtreedisc.sas';

data set2;

set breastcancer;

run;

%treedisc(data=set2, depvar=class, freq=, ordinal=,

nominal=Cl_thickness Cell_size Cell_shape Marg_adhesion

Epith_c_size Bare_nuclei Bl_cromatin Normal_nucleoli Mitoses,

alpha=0.05,

outtree=trd,

options=noformat,

trace=long);

%treedisc(intree=trd, draw=graphics);

NOTE: Trees built by the above 3 methods are

different. Not sure why this

happened.

Reference:

代码chaid_[转载]经典决策树之SAS实现--CHAID相关推荐

  1. Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet、AlexNet、VGG、NIN、GoogleNet、ResNet)——从代码认知CNN经典架构

    Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet.AlexNet.VGG.NIN.GoogleNet.ResNet)--从代码认知CNN经典架构 目录 CNN经典算 ...

  2. [论文阅读] (20)USENIXSec21 DeepReflect:通过二进制重构发现恶意行为(恶意代码ROI分析经典)

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  3. 无师自通-自己学写脚本,小明外挂脚本代码教程 转载

    无师自通-自己学写脚本,小明外挂脚本代码教程 转载 2011-02-03 19:47:20| 分类: 石器脚本 assa | 标签:walkpos 指令 对话框 跳转 道具 |字号 订阅 下载LOFT ...

  4. 转载……经典面试题目

    转载--经典面试题目 IBM公司面试题:病狗问题 村子中有50个人,每人有一条狗.在这50条狗中有病狗(这种病不会传染).于是人们就要找出病狗.每个人可以观察其他的49条狗,以判断它们是否生病,只有自 ...

  5. 我,一个写代码的(转载)

    原文地址:我,一个写代码的(转载) 作者:依然 写blog已经快两年了,起初仅仅是为了自己"备个案",结果慢慢演变成为了"分享成瘾".前几天一个朋友给我的blo ...

  6. XGBoost参数调优完全指南(附Python代码)——转载

    转载自https://www.cnblogs.com/mfryf/p/6293814.html 译注:文内提供的代码和运行结果有一定差异,可以从这里下载完整代码对照参考.另外,我自己跟着教程做的时候, ...

  7. ComputerVision会议+领先研究室+专家+代码网址(转载)

    [ZZ]计算机视觉.模式识别.机器学习常用牛人主页链接 转自:http://fuliang.iteye.com/blog/1738826 博客分类: Data/Web Mining Machine L ...

  8. HDFS集中式的缓存管理原理与代码剖析--转载

    原文地址:http://yanbohappy.sinaapp.com/?p=468 Hadoop 2.3.0已经发布了,其中最大的亮点就是集中式的缓存管理(HDFS centralized cache ...

  9. 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码_转载...

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

最新文章

  1. python文件输出-python文件流
  2. LeetCode 1108. IP 地址无效化
  3. windows查看dll库接口函数
  4. HTML5博客个人日志记录网页模板
  5. 二分图的最大匹配问题
  6. Mr.J-- jQuery学习笔记(五)--属性及属性节点
  7. Derek解读Bytom源码-P2P网络 地址簿
  8. Servlet体系及方法
  9. 解决gitlab关闭登录选项问题
  10. linux显示防火墙端口命令,Linux查询端口是否被防火墙屏蔽 firewall-cmd命令用法
  11. Firefox浏览器个人用的插件
  12. 禅道下载与安装教程(完整版)
  13. python客户端软件开发_用 Python 实现一个简易版 HTTP 客户端
  14. 自己动手写一个分库分表中间件(五)分布式事务问题解决思路<一>基于 Spring 编程式事务
  15. Coggle打卡——Linux使用基础
  16. yolo系列之yolo v3【深度解析】——讲的挺好,原作者厉害的
  17. 电视剧 | 黑镜S5E1 生死搏击
  18. 在其他电脑远程访问svn
  19. 中国石油大学《社会学概论》第二次在线作业
  20. 美剧中50句经典俚语完美解析

热门文章

  1. 新疆出差——特色美食大合集
  2. Android项目开发实战—自定义左右菜单
  3. Google Chrome等浏览器不允许关闭点击跟踪??
  4. Android一个ListView列表之中插入两种不同的数据
  5. 码农必读的 7 本计算机书
  6. window server 2012 IE10 增强的安全设置 如何关闭
  7. MS10-002紧急补丁将在美国太平洋时间上午10点左右发布
  8. 调用PDF的打印命令
  9. 来和 webpack 谈场恋爱吧!这课程好甜!
  10. dns服务器正则表达式验证,js如何对域名和ip进行校验?(正则表达式)