Я был поражен, увидев этот алгоритм. В кодах, состоящих всего из нескольких строк, происходят такие красивые фоновые вычисления!
Опять же, поскольку это алгоритм повышения, выходные данные первой модели используются для следующей и так далее. Серия слабых моделей, вместе составляющих сильную модель.
Возьмем очень простой пример:
Теперь нам нужно предсказать зарплату студента, как только мы дадим IQ и CGPA. Мы попробуем решить эту проблему, используя технику ансамбля — Gradient Boost.
Итак, как известно, существует множество слабых моделей, которые используются в методике ансамбля. Итак, когда мы используем алгоритм Gradient Boosting, то первая модель по умолчанию НЕ является каким-либо алгоритмом. Это просто среднее значение среднего столбца.
Средняя зарплата = (3+4+8+6+3)/5 = 24/5 = 4,8
Таким образом, первым прогнозом для всех строк будет просто средняя заработная плата.
Итак, мы получаем 1-й слабый прогноз модели. Теперь, когда мы получаем прогноз от 1-й модели, мы находим псевдоостаточное значение. Не бойтесь этого термина… он означает просто ФАКТИЧЕСКУЮ — ПРОГНОЗИРУЕМУЮ ценность. Жаргонсс… Я говорю тебе!
Теперь поворот истории —
Поймите одну вещь :: Model1 Prediction + Pseudo Residual1 = Salary.
Например:
4,8 + (-1,8) = 3 или 4,8 + (-0,8) = 4 и т.п.
Итак, если ошибка верна, то мы можем добавить ошибку к предсказанному значению и получить зарплату, которую будет получать студент. Следовательно, следующая модель не предсказывает, какая зарплата будет выделена студенту на основе IQ и CGPA, а скорее предсказывает, насколько точны ошибки (псевдо-остатки)!!
Итак, входными данными для второй модели являются IQ, CGPA и Pseudo Residul1.
Итак, я фактически отправил вышеуказанные данные через DecisionTreeRegressor и построил дерево. Данные приведены ниже:
Код для DecisionTreeRegressor выглядит следующим образом:
from sklearn.tree import DecisionTreeRegressor dtree = DecisionTreeRegressor(random_state = 0) dtree.fit(x,y) #Output:: DecisionTreeRegressor(random_state=0) from sklearn import tree tree.plot_tree(dtree)
Очень красиво видеть, как все используется, когда мы отправляем тестовые данные, которые мы увидим в конце.
Мы пытаемся рассчитать зарплату до сих пор, зарплату, используя прогнозируемую зарплату 1-й модели и добавляя прогнозируемую ошибку 2-й модели. Прогнозируемая зарплата по модели 2 = прогноз1 (выше в таблице) + прогноз-ошибка2
=> Прогноз 1 для IQ: 80 (1-я строка) = 4,8
=› Error-Prediction 2 = При 80 ‹ 90 он переходит к конечному узлу слева, а значение = -1,8.
Следовательно, Прогноз зарплаты2 = 4,8 + (-1,8) = 3 (точное совпадение)
А если посчитать зарплату для любого IQ, то получим точно соответствующую зарплату.!!! Ура!! Ну не совсем! Его переоснащение.
Итак, мы постараемся придать вес предсказаниям ошибок для всех моделей.
Мы можем принять вес равным 0,1.
Зарплата = Prediction1 + wght* pred2(Ошибка — прогноз)
= 4.8 + (0.1*-1.8) = 4.62
Это выглядит высоким прямо сейчас, это слабый результат. Но по мере того, как мы будем увеличивать количество моделей, это значение будет продолжать приближаться к реальной зарплате.
Идя дальше, мы вычисляем псевдо-остаток для 2-й модели. Это Псевдо2 = Фактическая зарплата — Прогнозируемая зарплата = 3–4,62 = -1,62 и так далее.
Очень важно понимать, что прогноз 2 не определяет зарплату студента, а скорее прогнозирует, сколько ошибок допускает модель1. Следовательно, мы можем видеть, что pred2 совпадает с псевдозначением первой модели1, поскольку прогноз хороший.
Теперь, отправляя ввод для model3, мы отправляем значения IQ, CGPA и псевдо2.
Код для регрессора дерева решений:
dtree2 = DecisionTreeRegressor(random_state = 0) dtree2.fit(x2,y2) tree.plot_tree(dtree2)
Следуя только приведенной выше логике, мы можем увидеть прогнозируемую ошибку в дереве решений. Это прогнозируемое значение ошибки представляет собой комбинированную ошибку предыдущих моделей — (m1 + m2 в совокупности).
Псевдо3 (для IQ: 80) = Фактическая зарплата — (Прогноз1 + вес* прогнозируемое значение1 + вес * прогнозируемое значение2)
= 3 — (4.8 + (0.1*-1.8) + (0.1*-1.62 )) = 3 — 4.458 = -1.458
Для IQ = 80:
Прогноз модели 1 = 4,8
Прогноз модели 2 = 4,62
Прогноз модели 3 = 4,458
И по мере продвижения вперед значение будет приближаться к фактической зарплате.
Теперь пришло время увидеть красоту машинного обучения…
Предскажем зарплату IQ = 108, CGPA = 7
Подсчитаем, какую зарплату будет получать этот студент:
Прогнозируемая зарплата = 4,8 + 0,1*-0,8 + 0,1*-0,72 = 4,648
Просто используя три модели и 5 строк данных, мы можем предсказать эту зарплату. Если данных больше и мы построим больше моделей, мы сможем предсказать точную зарплату, которую получит студент.
Красиво не правда ли!!! На что способны все эти модели!!! Счастливого обучения!!!