У меня есть дерево решений.
Я передаю этому дереву решений некоторые входные значения.
Дерево решений затем возвращает значение.
Входными значениями могут быть «количество детей», «возраст в годах» и т. Д.
Дерево решений может затем возвратить (например) определенное значение, которое будет указывать, сколько автомобилей принадлежит семье или что-то в этом роде.
Это дерево решений (если преобразовано в оператор if-then) будет выглядеть так:
int i=0;
if (ownedHouses==0)
{
if (numberOfChildren==4)
{
if (ageFather==39)
{
if (incomeFamily==40000)
{
if (carsAlreadyCrashed==1)
{
i=3;
}
else
{
if (carsAlreadyCrashed==2)
{
if (insurancePaysForCrashes==1)
{
i=5;
}
}
else
{
i=4;
}
}
else
{
i=11;
}
}
}
else
{
i=2;
}
}
else
{
i=9;
}
}
else
{
i=22;
}
else
{
i=8;
}
Это всего лишь пример. На самом деле результирующее утверждение if-then будет абсолютно огромным. Хотя я могу анализировать данные и создавать из них такое if-then, я не могу использовать такой большой цикл if-then-loop в своем программном обеспечении.
Поэтому я ищу другой способ интеграции дерева решений в мое программное обеспечение.
Я видел подходы, в которых данные дерева решений (в какой бы форме они ни предоставлялись …) анализировались во время выполнения, а затем из него создавались классы с корнем, узлами и листьями.
Для моих целей это не достаточно быстро.
У кого-нибудь есть другая идея?
Спасибо вам за помощь.
Изменить: я изменил некоторые значения на реальные значения, чтобы сделать смысл более ясным.
Самая быстрая реализация, которую я знаю, реализована в ALGLIB.
Дерево решений хранится в виде массива двойников.
Вы можете найти реализацию этого подхода в dforest.dfprocessinternal
Других решений пока нет …