Все обученные модели могут устареть и стать бесполезными. Это общеизвестная правда, что через некоторое время все модели не могут быть точными. Это нормально и связано с временным сдвигом, который может произойти в потоке данных. В частности, необходимо отслеживать и постоянно обновлять большую часть приложений, которые включают моделирование человеческой деятельности. Например, изменение некоторых потребностей или рыночных тенденций может повлиять на покупательную способность клиентов. Если мы не сможем принять во внимание изменение привычек клиентов, наши прогнозы со временем окажутся ненадежными.

Учитывая контролируемую обученную модель, мы можем столкнуться с двумя противоположными ситуациями, которые влияют на будущие результаты. Изменение распределения функций или изменение целевого распределения. Сдвиг в распределении признаков вреден, потому что наша модель делает прогнозы на основе данных, которых она раньше не видела. Напротив, сдвиг в распределении меток - это плохо, потому что наша модель обучена приближаться к другой основной истине.

В этом посте мы проводим эксперимент, чтобы проверить способность некоторых моделей выдерживать сдвиги данных с течением времени. Мы рассматриваем линейную модель, дерево решений и линейное дерево. Мы хотим увидеть, как различные изменения режима могут повлиять на точность прогнозов будущих тестовых данных. Это позволяет нам подробнее рассказать о способности трех алгоритмов обрабатывать неизбежные сдвиги данных.

Линейные деревья, представленные в моем предыдущем посте, являются частным случаем модельных деревьев. Они строят дерево на основе переданных данных, оценивая наилучшие расщепления, соответствующие линейным моделям. Подобранная модель приводит к древовидной структуре с линейными моделями в листьях. Другими словами, он вычисляет несколько линейных регрессий, разделяя набор данных в соответствии с простыми правилами принятия решений. Каждый может легко реализовать линейные деревья с помощью пакета linear-tree. Его можно использовать как scikit-learn BaseEstimator, чтобы обернуть каждый линейный оценщик из sklearn.linear_model и построить оптимальную древовидную структуру.

УСТАНОВКА ЭКСПЕРИМЕНТА

Для наших экспериментов мы используем некоторые искусственные данные, созданные в контексте классификации. Мы разделяем наш набор данных на некоторые временные блоки, которые мы используем для обучения (включая поиск гиперпараметров) и оценки производительности наших моделей.

Как было сказано в предыдущем разделе, мы используем три разные модели: линейную модель, дерево решений и линейное дерево. Мы приближаем время, изменяя начальную точку теста. Мы рассматриваем 4 блока тестирования, в которых мы вычисляем оценку каждого типа модели в разные даты. Это позволяет нам отслеживать поведение моделей с течением времени.

Мы предлагаем эксперимент в трех разных версиях: без изменений, смещения функций и смещения ярлыков.

БЕЗ ПЕРЕМЕЩЕНИЙ

В контексте «без изменений» мы предполагаем увидеть в будущем такое же распределение данных. Это более совершенный и нереальный сценарий. Это идеально, потому что мы обучаем и тестируем нашу модель на аналогичных данных, что дает стабильные результаты. Это нереально, потому что в подобной ситуации мы должны быть счастливы. Мы живем в динамичном мире, и все они склонны к быстрым изменениям, что ухудшает характеристики нашей модели.

Однако мы начинаем с этой ситуации, чтобы соответствовать интересующим нас моделям. Проводим обучение с настройкой гиперпараметров на выбранных временных блоках. Оценки наборов тестов приведены на графике ниже.

Как и ожидалось, точность моделей остается неизменной во времени. Дерево решений и линейное дерево достигают одинаковых результатов.

ИЗМЕНЕНИЯ ФУНКЦИЙ

В контексте «сдвигов функций» мы можем столкнуться со сдвигом в распределении некоторых функций с течением времени. Мы моделируем двойную смену в два разных периода времени. Это возможно, просто добавив некоторые постоянные значения, чтобы изменить положение центра распределения.

Прогнозирование невидимых значений может привести к неверным прогнозам. Легко создавать изображения с помощью древовидных алгоритмов, когда данные могут попадать в самые неизученные разделенные разделы. Очевидно, что в этой ситуации мы должны ожидать общего снижения производительности по сравнению с ситуацией «без изменений». Наши модели не обучены работать со сдвигами распределения, поэтому мы регистрируем снижение точности как минимум на 10 пунктов. Мы наблюдаем, что линейное дерево лучше выживает по сравнению с деревом решений.

LABEL SHIFTS

В контексте «смены ярлыков» мы можем столкнуться со сдвигом в целевом распределении с течением времени. Мы моделируем такой сценарий, поддерживая тот же процесс генерации функций, но изменяя баланс меток в два разных периода времени.

В этом сценарии мы используем алгоритм, обученный заданному распределению меток, для прогнозирования данных с другим балансом меток. Достижение неоптимальных результатов (особенно для древовидных алгоритмов) - это нормально, потому что модель не ожидает такого большого количества вхождений определенного класса. Мы регистрируем постоянные показатели эффективности с течением времени, но с ухудшением по сравнению со случаем «без изменений». Как и раньше, линейное дерево лучше выживает в отношении дерева решений.

Во всех наших экспериментах с наличием сдвигов мы регистрируем хорошее поведение линейных деревьев при выживании. Они меньше страдают от снижения производительности по сравнению со стандартными деревьями решений и простыми линейными моделями. Их способность к лучшему обобщению является результатом объединения линейных приближений и разбиения данных в древовидной структуре. Это сделало линейные деревья более точными, когда данные попадают в неисследованные области расщепления, что особенно важно в случае временных сдвигов данных.

РЕЗЮМЕ

В этом посте мы смоделировали некоторые случаи временных сдвигов данных. Линейные деревья оказались хорошими моделями для тестирования и проверки, когда мы ожидаем временных сдвигов. Несмотря на то, что они не получили широкого распространения, они представляют собой очень простые, но мощные алгоритмы прогнозирования и представляют собой ценную альтернативу классическим деревьям решений.

ПРОВЕРИТЬ РЕПО НА GITHUB

Оставайтесь на связи: Linkedin