ClassificationTree的函数。适合自动修剪?
6视图(30天)
显示旧的评论
亲爱的所有,
我目前试图构造一个分类树,使用不同的解释变量Y变量x我想用购物车,因此尝试使用这个函数
Classification.Tree.fit (Y, X)
在MATLAB。
问题是我的变量Y两类,“s”和“n”,“n”是非常罕见的,意义~只有5%的数据是这个特定的类。这意味着大多数的y类的“年代”。
构建树的时候,我约8 - 10水平,终端节点很少有(或没有多少)预测观测。现在,我们种植的树表示
树
,如果我做到以下几点:
[~,~,~,bestLevel] = cvLoss(树,“树”,“所有”);
我得到bestLevel根(!),意味着每一个未来的预测价值将只是一个类…难道我的预测价值X是坏的,还是我做错一些吗?
我还想知道:当构造初始树——函数Classification.Tree.fit()自动修剪树一个“最佳大小”在返回之前,还是做一个尽可能大的树和叶子这之后用户删除吗?
接受的答案
Ilya
2012年6月30日
我描述的策略在不平衡数据在这篇文章中学习
//www.tianjin-qmedu.com/matlabcentral/answers/11549-leraning-classification-with-most-training-samples-in-one-category
最简单的做法是“前”设置为“统一”。
最优修剪水平可以等于最大的修剪水平一些数据。这未必是一个迹象表明事情错了。
看看“MergeLeaves”和“修剪”参数ClassificationTree.fit的医生。ClassificationTree的“修剪”医生说
计算
修剪树的最优序列。这棵树
不
修剪;计算最优序列。的医生说MergeLeaves ClassificationTree合并的叶子,源自相同的父节点,并给一笔风险值大于或等于与父节点相关联的风险。即ClassificationTree适用于少量的修剪,树叶。如果树砍掉分类错误(默认),这相当于合并叶子,每叶分享最受欢迎的课。
5个评论
安德鲁
2014年10月3日
编辑:安德鲁
2014年10月3日
这是真的吗?在我看来“MergeLeaves”功能并不像修剪做同样的事情。也没有指定修剪”“实际上修剪树:它仅仅计算PruneList。有些告诉是你建议的解决方案不允许用户设置修剪水平。我尝试了这个建议并没有得到使用它小得多的树。
所以我还没有找到一种方法,得到一袋修剪树木,在创建的时候或在事后通过调用“修剪”。你的评论关于这个被不必要的提高整体精度,但也许一个理由想要这个功能(我)是创建一个小合奏与原始性能相似。注意,我不是在谈论一个较少的弱学习者在这种情况下,但有一个体弱的学习者的大小可以修剪,不仅通过MinLeaf / MinParent有限,这是一个不同的方法。
所以就好了如果修剪方法支持,对一个和个人CompactClassificationTre万博1manbetxes。(一个可以产生与PruneList后者,使用“修剪”设置为“在”像你说的,所以为什么不提供能力来做修剪吗?)