Вывод нулевого дерева решений согласия на узле

Я использую .net framework в своем проекте и столкнулся с проблемой.

Я использую 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

person Patrik.Turcaj    schedule 21.04.2017    source источник
comment
Я не вижу проблем, мистер Проблема :D   -  person Martin Čuka    schedule 26.04.2017
comment
Вы имеете в виду, что ваши тренировочные данные не содержали всех примеров, которые можно было увидеть в тестовых данных? Тогда в этом случае действительно будет проблема при запуске дерева. Если у вас все еще есть проблема, не могли бы вы опубликовать пример набора данных и фрагмент кода, воспроизводящий проблему, на github.com/accord-net/framework/issues/689 ?   -  person Cesar    schedule 08.07.2017
comment
Начиная с версии 3.8.0, деревья решений по умолчанию будут использовать рекурсивный метод принятия решений, который не будет генерировать исключения при обнаружении неизвестных значений переменных в процессе принятия решения.   -  person Cesar    schedule 25.10.2017


Ответы (1)


Да, я предполагаю, что ваше дерево просто неполное.

При использовании этого алгоритма, если я не предоставлю ему исчерпывающий обучающий набор, содержащий все возможные комбинации входных столбцов, мои шансы получить нулевые листья намного выше. Однако этот алгоритм известен тем, что в любом случае имеет нулевые пути как побочный продукт процесса сокращения.

Проверьте, не возвращают ли другие образцы также null. Если они все делают, то у вас могут быть проблемы. Если только пара возвращает NULL/unknown, то это, вероятно, просто результат того, как дерево построило себя. В этом случае вам нужно будет обрабатывать его со значением решения по умолчанию.

Я читал, что есть значения по умолчанию, которые вы можете указать для применения алгоритма самостоятельно, однако я никогда не использовал их.

person Jereme Guenther    schedule 13.11.2019