Деревья Классификации

Построение дерева

Исходные данные представлены в Таблице 1:

Таблица 1

5.1

0.5

Aaaaa

3

1

5.1

4.5

Bbbb

3

1

4.4

4

Ccc

3

1

5.4

3.5

Ccc

4.5

1

5

3.5

Dd

4

1

7.7

5

Aaaaa

1.5

2

6.1

3.5

Bbbb

3.5

2

6.8

0.5

Bbbb

2.5

2

5.6

4

Bbbb

3.5

2

6.7

5

Aaaaa

1.5

2

6.4

1

Dd

0.5

3

6

4.5

Ccc

2.5

3

6.7

2

Ccc

3

3

5.5

4.5

Dd

5

3

5.5

0.5

Dd

0.5

3

 

Загружаем  А+ скрипт в рабочую область:

     $load /home/vova/Trees/class3.+

Загружаем данные:

     dataûRead '/home/vova/Trees/paper5.csv'

     Òdata

 5 15

Будем строить дерево регрессии для переменной, представленной в последнем 5-ом столбце (Таблица 1). Будем строить дерево для X5 в зависимости от предикоров X2 и X3, Для этого воспользуемя функцией Parse{formula;data}, где аргумент formula задает зависимую и предикторные переменные:

     data2ûParse{'X5~X2+X3';data}

Для построения дерева регрессии воспользуемся функцией Grow{i;data}. Первый аргумент i используется во внутренних рекурсивных вызовах Grow{}, поэтому он при основном вызове не задается:

     tûGrow{;data2}

Графическое изображение деревьев

Для графического изображения полученно дерева регрессии его необходимо преобразовать соответствующим образом к типу ‘slotfiller’. Для этого воспользуемся функцией Plot{tree}:

     trûPlot t

Явно укажем свойства отображения дерева:

propsû(`class;`tree;`font;font;`nodebg;`red;`nodefg;`white)

     `tr has props

 `.tr

Отобразим результат:

     show `tr

Выбор дерева правильного размера. Крос проверка.

Для проведения кросс-проверки используем функцию CrossVal{K;tree;data}, принимающей 3 аргумента. K – параметр кросс-проверки, tree – проверяемое дерево, data – исходные данные.

cvûCrossVal{10;t;data2}

cv

  7  3

  4  3

  2  8

  1 15

График поведения ошибки на кросс-проверке:

cû`cv

show `c is `graph

     `c has (`title;'Cross Validation')

 `.c

Как видно из графика в качестве дерева правильного размера следует выбрать дерево с 4 вершинами. Усечем исходное дерево до 4 вершин и графически изобразим полученный результат:

t2ûCut{4;t}

tr2ûPlot t2

`tr2 has props

 `.tr2

show `tr2

Использование полученного дерева для задач классификации

Для предсказания классовой принадлежности новых данных по значениям их предикторных переменных воспользуемся функцией Predict{newdata;tree}, где newdata представляет матрицу новых данных, а  tree – построенное дерево.

prûPredict{data2;t}

Øpr

1 1 1 1 1 2 2 2 2 2 3 3 3 3 3

 

_

 

Сайт создан в системе uCoz