节点

时间:2017-04-21 16:08:41

标签: c# .net decision-tree accord.net

我在项目中使用.net框架,我遇到了问题。

我正在使用7个DecisionVariables来创建决策树。其中5个是连续的,其中2个是离散的,我正在使用C45Learning。

我正在创建Decision Varibale:

连续

new DecisionVariable(SupportedValueType.ToString(), DecisionVariableKind.Continuous)

离散(在我的情况下,我创建了表示日期的离散变量)

int PossibleValues = 30; 
new DecisionVariable(SupportedValueType.ToString(), PossibleValues)

现在,当我创建一个树时,它的叶节点是具有离散决策变量的节点,并且此节点上的输出为NULL,因此当我运行时

tree.Decide(sample)

并以此叶节点结束,返回NULL。

有人能告诉我这是什么问题吗?

当我创建输入以创建此决策树时,我没有“使用”这30个可能值中的每一个,只有2-3个值。这可能是问题吗?

例如:( x变量是其他决策变量的值,当然我提供的输入数据更多,不仅仅是3行,而且我只更改了x值,仅使用了3天)

input:     label:

x,x,x,x,x,1 -> Small
x,x,x,x,x,2 -> Medium
x,x,x,x,x,3 -> Big

1 个答案:

答案 0 :(得分:0)

是的,我的猜测是您的树根本不完整。

在使用该算法时,如果我没有为它提供包含输入列的所有可能组合的综合训练集,那么我得到零叶的机会会更高。但是,该算法因修剪过程始终会产生空路径而闻名。

检查其他样本是否也返回null。如果他们都这样做,那么您可能会遇到问题。如果只有一对返回NULL / unknown,则可能只是树自身构建方式的结果。在这种情况下,您将需要使用默认决策值来处理它。

我了解到,您可以提供一些默认值,以供算法单独应用,但是我从未使用过这些默认值。