特征选择在TreeBagger
18视图(30天)
显示旧的评论
你好MathWorks社区
我目前接触到esembles TreeBagger类来生成一些分类树。现在我想知道,如何决定湿草地功能是用于把数据。如果我创建一个树桩esemble 5000棵树和使用它分类数据集有两个特性(例如VRQL-Value和最大频率),然后检查功能被选为每一个分裂树如下:
cellArray = {};
为y = 1:长度(Random_Forest_Model.Trees)
cellArray {y} = Random_Forest_Model.Trees {y} .CutPredictor {1};
结束
它发生在某些情况下,只有一个特征被选为所有5000棵树和其他功能被选在没有一个情况下(即cellArray看起来是这样的:{“x2”、“x2”、“x2”,…、“x2”})。这也可以发生在多个特性:只有一个特征被选中时,其他人将被忽略。
也许更重要的事情关于数据集:
——功能实现值从1到100,另一个从大约200年到1200年
——不平衡类(类1:52项,第2类:超过300项)
只有更大的类包含nan
——功能包含nan
现在我的问题是:我如何才能实现,TreeBagger使用所有功能进行分类,而不是只有一个或genreal我怎么能实现更平衡的选择功能。
0评论
接受的答案
艾哈迈德·欧贝得
2019年5月21日
默认设置在TreeBagger特性样本的数量从最初的功能集装天花板(sqrt ())。
为什么这个数字特别?我不知道…
但是为什么它重要特性的一个子集,而不是整个组的特征吗?这是因为如果你总是用相同的特性(比如整个组特性)你会得到高度相关的决策树在每一个迭代,从而将无法抵消他们的伟大inherint varience。
我相信采样的特性在一个统一的方式,也就是说如果你有许多树,大约所有功能都应该同样代表了所有的树木。
然而,在你的案子的子集的特征有相同的大小原始特性集(装天花板(sqrt (2)) = 2)。一旦选择功能的集合,一定标准是用于选择哪些功能应该分割是基于。标准可以基尼指数,或信息增益(熵)。
所以我猜,因为你总是结束的一整套功能,和每次使用相同的标准去选择特性,你总是最终具有相同特性,另一个是排除在外。