特征选择在TreeBagger

8视图(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我怎么能实现更平衡的选择功能。

接受的答案

艾哈迈德·欧贝得
艾哈迈德·欧贝得 2019年5月21日
默认设置在TreeBagger特性样本的数量从最初的功能集装天花板(sqrt ())。
为什么这个数字特别?我不知道…
但是为什么它重要特性的一个子集,而不是整个组的特征吗?这是因为如果你总是用相同的特性(比如整个组特性)你会得到高度相关的决策树在每一个迭代,从而将无法抵消他们的伟大inherint varience。
我相信采样的特性在一个统一的方式,也就是说如果你有许多树,大约所有功能都应该同样代表了所有的树木。
然而,在你的案子的子集的特征有相同的大小原始特性集(装天花板(sqrt (2)) = 2)。一旦选择功能的集合,一定标准是用于选择哪些功能应该分割是基于。标准可以基尼指数,或信息增益(熵)。
所以我猜,因为你总是结束的一整套功能,和每次使用相同的标准去选择特性,你总是最终具有相同特性,另一个是排除在外。
1评论
帕特里克·施莱格尔
帕特里克·施莱格尔 2019年5月23日
谢谢你们的回答
investiaged这个进一步同时,事实证明,我有一个非常“强大的”功能中选择(几乎)所有病例如果随机森林寻找最好的特性将数据(这也是真正的如果我包括两个以上功能)。所以你猜,但是我仍然会努力补充你的解释之后我发现的东西。
国旗的NumPredictorsToSample决定从多少特性的随机森林会选择(见也 https://de.mathworks.com/help/stats/treebagger.html 第一个表,输入“NumPredictorsToSample”)。每次每个节点的最佳特征选择在每棵树的随机选择的特性。如果我有例如15特性和选择“NumPredictorsToSample, 3”随机森林,据我理解,寻找第一树和树节点如特性3号,7和9和选择最好的一个从他们分裂节点。那么它将可能看功能2、15 9或任何其他三个功能组合,下一个节点分裂等等。
我的问题是,我也选择了一个大量NumPredictorsToSample和一切由最好的特性决定了孤独。然而,较低的NumPredictorsToSample out-of-bag森林conisderably低误差(所以“最好”的特性实现最好的分类是不够的)。
我希望我是正确的,解释了它,有人也许stumbeling在这个问题在未来将在这里找到他的回答

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!