Преобразовать таблицу решений в дерево решений

Как преобразовать или визуализировать таблицу решений в граф дерева решений, есть ли алгоритм для ее решения или программное обеспечение для ее визуализации?

Например, я хочу визуализировать мою таблицу решений ниже:

3 ответа

Должен сказать, что это интересный вопрос.

Я не знаю окончательного ответа, но я бы предложил такой метод:

  • используйте карту Карно, чтобы превратить вашу таблицу решений в минимизированную логическую функцию
  • превратить вашу функцию в дерево

Давайте просто упростим пример и предположим, что с помощью Karnaugh вы получили функцию (a and b) or c or d, Вы можете превратить это в дерево как:

Источник: мой собственный

Конечно, проще создать таблицу решений из дерева решений, а не наоборот.

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

Во время этого процесса вы потеряете немного информации, но точность останется прежней. Взгляните на оба ряда, описывающих болезнь D04 - второй ряд на самом деле более общий, чем первый. Дерево решений, сгенерированное из этих данных, распознает упомянутое заболевание только по атрибутам E11, 12 и 13, поскольку этого достаточно для правильной маркировки экземпляра.

Я провел несколько часов в поисках хорошего алгоритма. Но я доволен своими результатами. Мой код слишком грязный, чтобы вставлять его сюда (я могу поделиться по запросу на ваше усмотрение), но общая идея заключается в следующем.

Предположим, у вас есть набор данных с некоторыми критериями принятия решений и результатами.

  1. Определите древовидную структуру (например, data.tree в R) и создайте корневой узел "Start".
  2. Рассчитайте итоговую энтропию вашего набора данных. Если энтропия равна нулю, все готово.
  3. Используя каждый критерий, один за другим, в качестве узла дерева вычислите энтропию для всех ветвей, созданных с помощью этого критерия. Взять хотя бы одну энтропию всех ветвей.
  4. Ветви, созданные с помощью критерия с наименьшей (минимальной) энтропией, являются вашим следующим узлом дерева. Добавьте их как дочерние узлы.
  5. Разделите ваши данные в соответствии с точкой принятия решения / узлом дерева, найденным на шаге 4, и удалите используемый критерий.
  6. Повторите шаги 2-4 для каждой ветви, пока все ваши ветви не будут иметь энтропию = 0.
  7. Наслаждайтесь идеальным деревом решений:)