результат построения дерева решений - PullRequest
0 голосов
/ 09 января 2020

Я тренирую модель дерева решений на основе данных о заболеваниях сердца из Kaggle .

Поскольку я также строю другие модели, используя 10-кратное резюме, я пытаюсь использовать каретку пакет с методом rpart для построения дерева. Тем не менее, результат сюжета странный, так как «талий» должен быть фактором. Почему он показывает "талий нормальный <0,5"? Означает ли это, что если "thalium" == normal ", то выбрать левый маршрут" yes ", в противном случае правый маршрут" no "? </p>

Большое спасибо!

caret rpart decision tree plot using fancyRpartPlot

Исправления: Я извиняюсь за то, что не предоставил достаточного количества справочной информации, которая, казалось, вызывала некоторую путаницу. "Талиум" - это переменная, которая представляет метод, используемый для обнаружения коронарного стеноза (он же сужение). три уровня (нормальный, фиксированный дефект, обратимый дефект).

data structure

Кроме того, я хотел бы сделать график более читабельным, например вместо «талиум-нормальный» <0.5 ", это должно быть что-то вроде" thalium = normal ". Я мог бы достичь этой цели, используя rpart напрямую (см. Ниже). </p>

rpart decision tree plot

Тем не менее, вы, вероятно, заметили, что дерево отличается, несмотря на то, что я использовал рекомендованное значение cp с частотой каретки CV 10 (см. Код ниже).

code recommended cp, used for rpart tree using fancyRpartplot

Я понимаю, что эти два пакета м может привести к некоторым различиям. В идеале я мог бы использовать каретку с методом rpart для построения дерева так, чтобы оно совпало с другими моделями, встроенными в каретку. Кто-нибудь знает, как я мог бы сделать метку графика для древовидной модели, построенной с помощью caret rpart, легче для понимания?

Ответы [ 2 ]

1 голос
/ 09 января 2020

Было бы полезно, если бы были некоторые данные, такие как dput(head(data)), чтобы показать нам, как на самом деле выглядят ваши данные, или str(data), чтобы показать уровни переменных и типов данных.

Но, вероятно, (не видя ее) переменная равна thallium, а один уровень - normal, и таблица выбрала УРОВЕНЬ переменной thallium и оценивает, является ли этот уровень чем-то normal или нет.

Дерево обрабатывает категориальные переменные как фиктивные по уровню и принимает решение, основываясь на том, что> = .5 или <.5 и 0 всегда меньше, а 1 всегда больше. </p>

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

Для двоичной переменной это разделение составляет 0,5, поскольку оно находится посередине между двумя различными значениями, уровень может принимать 0 и 1 .

0 голосов
/ 09 января 2020

Ваш коэффициент thaliumnormal равен либо 0, либо 1, что означает «да» или «нет» - правильно?

В этом случае rpart принимает среднее значение 0,5, так что все решения 0 или 1 выше или ниже 0.5.

Значения ниже среза, в данном случае 0,5, всегда поворачиваются влево. Так что thaliumnormal==0 поворачивает налево, да.

Вы можете увидеть тот же пример, что и для sex

...