加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

决策树:训练误差和检验误差图

(2013-08-04 07:26:36)
分类: SAS_Data_Mining

在决策树的章节我们经常会看到一幅训练误差和检验误差图,用于说明过拟合现象,即模型的训练误差随着模型复杂度的增加而降低,但模型的检验误差却随着复杂度的增加先降低后增加。

 

我们看看用SAS如何验证这种现象并生成相应的训练误差和检验误差图。

 

libname sampsio "!sasroot\mmcommon\sample";

 

%macro Misc_rate_by_depth(depth=20);
proc delete data=misc;
run;

 

%do i=1 %to &depth;
proc arbor data=sampsio.hmeq_train criterion=ENTROPY splitsize=2 maxbranch=2 maxdepth=&i;
 target bad/level = binary;
 input loan value /level = interval;
 input mortdue reason job yoj derog delinq clage ninq clno debtinc /level = nominal;
 subtree largest;
 save NODESTATS=nodstat1 SEQUENCE=seq1 STATSBYNODE= statb1 SUM=sum1;
 score data=sampsio.hmeq_test out=scoreout;
run;quit;

 

data misc_train;
 set seq1 end=eof;
 length data $ 5;
 if eof then do;
    depth = &i;
  data='Train';
  output;
 end;
 label depth='Tree Depth';
 label data='Data';
 label _misc_='Misclassification Rate';
 keep depth data _misc_;
run;

 

data misc_test;
 set scoreout nobs=nobs end=eof;
 length data $ 5;
 retain misc_num 0;
 if u_bad ne bad then misc_num+1;
 if eof then do;
    depth = &i;
  data='Test';
      _misc_=misc_num/nobs;
  output;
 end;
 keep depth data _misc_;
run;

 

proc append base=misc data=misc_train force nowarn;
run;quit;

 

proc append base=misc data=misc_test force nowarn;
run;quit;

%end;
%mend Misc_rate_by_depth;


%Misc_rate_by_depth(depth=20);

proc sgplot data=misc;
 step y=_misc_ x=depth/group=data groupdisplay=overlay;
run;quit;

 

结果如下图所示:

http://s12/mw690/8db50cf7tx6BA8c8JUT7b&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有