Введение в теорию деревьев решений

Деревья решений – один из простейших методов машинного обучения. Это совершенно прозрачный способ классификации наблюдений, и после обучения они представляются в виде последовательности предложений if-then (если-то), организованных в виде дерева. На рис. 7.1 приведен пример дерева решений для классификации фруктов.

Рис. 7.1. Пример дерева решений

Имея дерево решений, нетрудно понять, как оно принимает решения. Достаточно проследовать вниз по дереву, правильно отвечая на вопросы, – и в конечном итоге вы доберетесь до ответа. Обратная трассировка от узла, в котором вы остановились, до корня дает обоснование выработанной классификации.

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

class decisionnode:

def __ init_ (self,col=-1,value=None,results=None,tb=None,fb=None):

self.col=col

self.value=value

self.results=results

self.tb=tb

self.fb=fb

В каждом узле имеется пять переменных экземпляра, и все они могут быть заданы в инициализаторе:

•       col – индекс столбца проверяемого условия.

•       value – значение, которому должно соответствовать значение в столбце, чтобы результат был равен true.

•       tb и fb – экземпляры класса decisionnodes, в которые происходит переход в случае, если результаты – true или false соответственно.

•       results – словарь результатов для этой ветви. Значение равно None для всех узлов, кроме листовых.

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

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100