Дерево. Из деревьев решений с градиентным усилением.
Когда я играю с какой-то технологией или алгоритмом, мой любимый момент — это неуловимое переходное состояние, когда все еще немного «что за черт?» и тем не менее уже солидный, хотя и не скучный, инструмент. Деревья решений с градиентным усилением и экстраполяцией (GBDTE) уже существуют.
В предыдущих постах я объяснил, как я создал набор данных для тестирования этой идеи машинного обучения. На изображении показан один этап обучения алгоритма в этом наборе данных. Давайте распакуем, что происходит. В следующем посте я представлю четыре базисные функции: 1, t, sin(kt), cos(kt). Наш набор данных содержит восемь групп точек, и каждая группа представляет собой линейную комбинацию этих базисных функций. Таким образом, задача модели состоит из двух частей: сначала классифицировать точки и отнести их к группе; во-вторых, подобрать наилучшее приближение для каждой группы.
Давайте проверим себя. В более позднем посте я выделю две наиболее известные группы. Мы найдем их на дереве, проверим их вес, затем найдем на картинке и сравним нашу интерпретацию с графиками.
Просто ради интереса давайте проверим пузырь с id=4. Читаем сверху вниз: 0,20 означает, что при t = 0 этот компонент должен иметь значение 0,2. Следующее значение 0,09 означает, что мы имеем слегка восходящий тренд. Для sin и cos у нас есть нули. Это означает, что в этой компоненте нет колебаний. Теперь мы можем узнать значения f-параметров, описывающих эту компоненту. От корня следует идти по маршруту «право-лево-лево», в терминах значений коэффициентов это (0, 0, 1). Будьте осторожны, на изображении дерева факторами являются f0, f1, f2. На картинках с компонентами - f1, f2, f3. Моя вина. Проверьте изображение ниже. Вы увидите, что наше описание этого компонента совершенно верно. Оно работает!
В обратном направлении: второй компонент имеет гораздо более крутой наклон, мы можем ожидать большего значения второго компонента. Кривая поднимается, поэтому второй компонент листа положителен. Пересечение с Oy находится ниже, поэтому первая компонента листа должна быть близка к нулю. Некоторые колебания видны, но не очень заметны. Мы можем ожидать ненулевых малых третьего и четвертого компонентов. Статическими факторами являются (0, 1, 0), они читаются как последовательность слева, слева, справа на древовидной диаграмме и ведут к узлу с идентификатором: 1. Веса: -0,01, 0,26, 0, -0,01. Я думаю, идеальное совпадение.
И третья кривая: 1, 0, 0 - влево, вправо, влево - id=2; веса 0,03, 0,18, 0,09, -0,02; наконец, имеет довольно заметную гармоническую часть, и она полностью видна на кривой.
Довольно впечатляющий результат для одного шага алгоритма, не правда ли?
Когда тенденции в целом неплохие и дерево соответствует графику, меня беспокоит одна маленькая проблема. MSE показывает несоответствие на уровне 0,0003. Я не понимаю, почему. Еще.
