我在项目中使用.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
答案 0 :(得分:0)
是的,我的猜测是您的树根本不完整。
在使用该算法时,如果我没有为它提供包含输入列的所有可能组合的综合训练集,那么我得到零叶的机会会更高。但是,该算法因修剪过程始终会产生空路径而闻名。
检查其他样本是否也返回null。如果他们都这样做,那么您可能会遇到问题。如果只有一对返回NULL / unknown,则可能只是树自身构建方式的结果。在这种情况下,您将需要使用默认决策值来处理它。
我了解到,您可以提供一些默认值,以供算法单独应用,但是我从未使用过这些默认值。