R дерево решений с использованием всех переменных
Я хотел бы выполнить анализ дерева решений. Я хочу, чтобы дерево решений использовало все переменные в модели.
Мне также нужно построить дерево решений. Как я могу сделать это в R?
Это образец моего набора данных
> head(d)
TargetGroup2000 TargetGroup2012 SmokingGroup_Kai PA_Score wheeze3 asthma3 tres3
1 2 2 4 2 0 0 0
2 2 2 4 3 1 0 0
3 2 2 5 1 0 0 0
4 2 2 4 2 1 0 0
5 2 3 3 1 0 0 0
6 2 3 3 2 0 0 0
>
Я хотел бы использовать формулу
myFormula <- wheeze3 ~ TargetGroup2000 + TargetGroup2012 + SmokingGroup_Kai + PA_Score
Обратите внимание, что все переменные являются категориальными.
РЕДАКТИРОВАТЬ: Моя проблема заключается в том, что некоторые переменные не отображаются в дереве окончательного решения. Глубина дерева должна определяться штрафным параметром альфа. Я не знаю, как установить это наказание для того, чтобы все переменные появились в моей модели.
Другими словами, я хотел бы модель, которая минимизирует ошибки обучения.
3 ответа
Как упоминалось выше, если вы хотите запустить дерево для всех переменных, вы должны записать его как
ctree(wheeze3 ~ ., d)
Упомянутое вами наказание находится на ctree_control()
, Вы можете установить P-значение там и минимальный размер разделения и размера сегмента. Таким образом, чтобы максимизировать вероятность того, что все переменные будут включены, вы должны сделать что-то вроде этого:
ctree(wheeze3 ~ ., d, controls = ctree_control(mincriterion = 0.85, minsplit = 0, minbucket = 0))
Проблема в том, что вы рискуете перегрузиться.
Последнее, что вам нужно понять, это то, что причина, по которой вы можете не видеть все переменные в выходных данных дерева, заключается в том, что они не оказывают существенного влияния на переменную зависимых элементов. В отличие от линейной или логистической регрессии, которая покажет все переменные и даст вам P-значение, чтобы определить, являются ли они значимыми или нет, дерево решений не возвращает ненасыщенные переменные, т. Е. Не разделяется на них.
Чтобы лучше понять, как работает ctree, посмотрите здесь: https://stats.stackexchange.com/questions/12140/conditional-inference-trees-vs-traditional-decision-trees
Самый простой способ - использовать пакет rpart, который является частью ядра R.
library(rpart)
model <- rpart( wheeze3 ~ ., data=d )
summary(model)
plot(model)
text(model)
.
в формуле аргумент означает использование всех остальных переменных в качестве независимых переменных.