Хотя у нас есть множество регрессоров для прогнозирования / аппроксимации целевых переменных, не всегда более продвинутые из них выигрывают. В этой статье делается попытка показать, что Регрессор дерева решений (DTR) выигрывает у продвинутых, таких как Random Forest и т. Д.
Мы попытались сравнить DTR со следующими регрессорами:
- Линейный регрессор
- Усиленный регрессор
- ADABoost
- Случайные леса
Каждый регрессор был опробован индивидуально, чтобы найти его лучший результат, а затем сравнивался. Например, ADA Boost показал себя с максимальной эффективностью с 200 бустами, в то время как Bagging Regressor со 100 сумками.
Введение в набор данных:
Это данные о диабете, которые поставляются с пакетом наборов данных scikit learn. Этот набор данных содержит 442 строки и 11 функций (включая цель):
Загрузите набор данных:
diaData = load_diabetes ()
target = diaData.target
print (‘Shape: {}’. format (df.shape))
Форма: (442, 10)
Регрессионные испытания:
Все регрессоры были запущены с размером теста 20% и случайным начальным числом 123.
(XTrain, XTest, YTrain, YTest) = train_test_split (X, Y, test_size = 20, random_state = 123)
Линейная регрессия:
lreg = LinearRegression ()
lreg.fit (XTrain, YTrain)
print (‘Score: {: .2f}’. format (lreg.score (XTest, YTest)))
Оценка: 0,60
2. Повышение ADA:
Мы попробуем использовать разное количество бустов от 10 до 300, хотя количество бустов менялось с разными прогонами с присущими случайными выборками в модели во время каждого прогона, оценка была одинаковой:
sen = AdaBoostRegressor (n_estimators = 200)
sen.fit (XTrain, YTrain)
Максимальный балл 0,61 достигнут при 260 повышениях.
3. Упакованный регрессор:
У этого регрессора было минимальное улучшение:
breg = BaggingRegressor (n_estimators = 100)
breg.fit (XTrain, YTrain)
Максимальный балл 0,64 достигнут с 60 повышениями:
4. Регрессор случайного леса:
Случайный лес
Максимальный балл 0,61 при 10 лесах.
5. Регрессор дерева решений:
Сравнение регрессоров за один прогон:
Хотя на рисунке выше DTR явно является победителем, но внутренняя случайность регрессоров во время пакетирования, повышения и т. Д. Может изменить всю картину для нескольких прогонов. Следовательно, чтобы определить, есть ли в этих результатах расхождения, все регрессоры были запущены более 1000 раз, включая разделение обучающих и тестовых данных.
Вот результат:
Как и ожидалось, DTR был победителем в 99,995% случаев и только в 0,005% случаев Random Forest смог превзойти показатель DTR. И еще одно интересное наблюдение: только DTP и линейные регрессоры были стабильны во всех прогонах.
Почему?
Быстрый и простой ответ: мы позволяем дереву решений расти сколько угодно. Кажется, он настолько разросся, что начал переоснащаться. Это можно рассматривать как потенциальную причину, по которой вы должны увидеть сокращение . Дальнейший анализ будет последующим… :)
Спасибо за чтение.