#rpart
Вопрос:
Итак, я использую задачу «хрупкие семьи» для своего набора данных, чтобы увидеть, какие индивидуальные и семейные предикторы предсказывают успеваемость подростков (измеряемую средним баллом). Информация о моем наборе данных:
FFCWS-это продольное панельное исследование, в ходе которого в 1998-2000 годах были проведены базовые интервью как с матерями, так и с отцами. Последующие интервью были проведены, когда детям было 1, 3, 5, 9 и 15 лет. Интервью с родителями, основными воспитателями, учителями и детьми проводились либо на дому, либо по телефону(FFCWS, 2021). В 15 — м классе детей/подростков просят сообщить о своих оценках по четырем предметам- истории, математике, английскому языку и естественным наукам. Эти оценки усредняются для каждого учащегося, чтобы измерить его индивидуальную успеваемость в возрасте 15 лет. Ряд предикторов на индивидуальном и семейном уровнях, которые, как известно, влияют на успеваемость, как упоминалось ранее, также фиксируются в разные периоды жизни ребенка.
Я очень новичок в машинном обучении и нуждаюсь в некотором руководстве. Для этого я сначала создаю набор данных, содержащий все теоретически значимые переменные. Это 4,898×15. Мои окончательные наборы данных выглядят так (все они непрерывны, кроме:
final lt;- ffc %gt;% select(Gender, PPVT, WJ10, Grit, Self-control, Attention, Externalization, Anxiety, Depression, PCG_Income, PCG_Education, Teen_Mom, PCG_Exp, School_connectedness, GPA)
Затем я разделился на тестирование и тренировку следующим образом: final_split lt;- initial_split(final, prop = .7) final_train lt;- training(final_split) final_test lt;- testing(final_split)
Затем я запускаю модели: train lt;- rpart(GPA ~.,method = "anova", data = final_train, control=rpart.control(cp = 0.2, minsplit = 5, minbucket = 5, maxdepth = 10)) test lt;- rpart(GPA ~.,method = "anova", data = final_test, control=rpart.control(cp = 0.2, minsplit = 5, minbucket = 5, maxdepth = 10))
Затем я визуализирую результаты перекрестной проверки: rpart.plot(train, type = 3, digits = 3, fallen.leaves = TRUE) rpart.plot(test, type = 3, digits = 3, fallen.leaves = TRUE)
Затем я запускаю прогнозы: pred_train lt;- predict(train, ffc.final1_train) pred_test lt;- predict(test, ffc.final1_test)
Затем я рассчитываю точность: MAE lt;- function(actual, predicted) {mean(abs(actual - predicted)) } MAE(train$GPA, pred_train) MAE(test$GPA, pred_test)
Following are my questions:
- Теперь я не уверен, следует ли мне использовать rpart, случайный лес или XG Boost, поэтому мой первый вопрос заключается в том, как мне решить, какой алгоритм использовать. Я выбрал rpart, но я хочу, чтобы у меня были веские доводы для того же самого.
- Находятся ли эти шаги в правильном порядке? Какой смысл разделять мой набор данных на обучение и тестирование? В конечном итоге я получаю два дерева (одно для поезда, а другое для теста). Какие из них я должен использовать? Что я из этого делаю? Пошаговая процедура после понимания моего набора данных была бы весьма полезна. Спасибо!