SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2797|回复: 0
打印 上一主题 下一主题

[转] SAS决策树:训练误差和检验误差图

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2013-8-5 07:39:15 | 只看该作者

[转] SAS决策树:训练误差和检验误差图

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

我们看看用SAS如何验证这种现象并生成相应的训练误差和检验误差图。
[code:rmathdvt]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;[/code:rmathdvt]
原帖:http://blog.sina.com.cn/s/blog_8db50cf70101i45k.html#bsh-24-268562978
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-5-2 18:59 , Processed in 0.079120 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表