Теория вероятностей в машинном обучении. Часть 1: модель регрессии
В данной статье мы подробно рассмотрим вероятностную постановку задачи машинного обучения: что такое распределение данных, дискриминативная модель, i.i.d.-гипотеза и метод максимизации правдоподобия, что такое регрессия Пуассона и регрессия с оценкой уверенности, и как нормальное распределение связано с минимизацией среднеквадратичного отклонения.
В следующей части рассмотрим метод максимизации правдоподобия в классификации: в чем роль кроссэнтропии, функций сигмоиды и softmax и как кроссэнтропия связана с "расстоянием" между распределениями вероятностей и почему модель регрессии тоже обучается через минимизацию кроссэнтропии.
В третьей части (статья планируется) перейдем от метода максимизации правдоподобия к байесовскому выводу и его различным приближениям, таким как метод апостериорного максимума, методы Монте-Карло и вариационный вывод. Рассмотрим, как применение этих методов порождает типичные для машинного обучения понятия, такие как стохастический градиентный спуск, регуляризация, ансамблирование, подбор архитектуры и гиперпараметров. Также поговорим о роли априорных гипотез в машинном обучении.
Данная серия статей не является введением в машинное обучение и предполагает знакомство читателя с основными понятиями. Задача статей - рассмотреть машинное обучение с точки зрения теории вероятностей, что позволит по новому взглянуть на проблему, понять связь машинного обучения со статистикой и лучше понимать формулы из научных статей. Также на описанном материале строятся более сложные темы, такие как вариационные автокодировщики (Kingma and Welling, 2013), нейробайесовские методы (Müller et al., 2021) и даже некоторые теории сознания (Friston et al., 2022).
Бывало ли у вас такое, что разбираясь в некой сложной области вам сначала не удается систематизировать в голове всю имеющуюся информацию, а затем вы что-то узнаете или догадываетесь, и пазл внезапно складывается в стройную и непротиворечивую картину? Именно такую роль может сыграть понимание байесовского вывода в машинном обучении.
Как писал Пьер-Симон Лаплас в начале XIX века, "теория вероятностей - это здравый смысл, выраженный в вычислениях". Поэтому разрабатывать алгоритмы машинного обучения можно и не опираясь на теорию вероятностей и байесовский вывод. Но с изучением этих областей то, что раньше казалось просто здравым смыслом, приобретает большую строгость и обоснования.
Впрочем, в машинном обучении любые теории строятся на очень зыбкой почве, поскольку машинное обучение - это не чистая математика, а наука о применении алгоритмов обучения на данных к реальному миру. Любая математическая теория основана на аксиомах и условиях (например, в статистике таким условием часто является "независимость и одинаковая распределенность обучающих примеров"). В реальности эти условия могут не выполняться, и иногда даже не иметь четкого смысла. Об этой теме мы тоже поговорим подробнее.
Возможно, изложение в статье покажется слишком подробным и затянутым, но эти вещи невозможно объяснить в двух словах. Большое количество деталей и пояснений позволяет надеяться, что ничего важного не будет упущено, и в понимании не останется пробелов.
Содержание текущей части
В первом разделе мы рассмотрим связь между машинным обучением и статистическим выводом.
Во втором разделе поговорим о моделях: рассмотрим вероятностную модель регрессии и ее обучение методом максимизации правдоподобия.
В третьем разделе поговорим о данных: рассмотрим понятие вероятностного распределения данных, задачу максимизации метрики на распределении и i.i.d.-гипотезу.
В четвертом разделе снова вернемся к методу максимизации правдоподобия, используя материал из третьего раздела, и введем понятие статистической модели.
В пятом разделе рассмотрим модель регрессии с оценкой уверенности в виде формул и программного кода.
Звездочкой* отмечены дополнительные разделы, которые не повлияют на понимание дальнейшего материала.
1. Машинное обучение и статистический вывод
2. Вероятностная модель регрессии
2.1. Регрессия, классификация и промежуточные варианты
2.2. Вероятностное моделирование
2.3. Модель регрессии
2.4. Обсуждение
2.5. Функция потерь Хьюбера*
3. Вероятностное распределение данных
3.1. Понятие распределения данных
3.2. Дискриминативные модели
3.3. Генеративные модели*
3.4. i.i.d.-гипотеза и качество обобщения
3.5. Проблемы i.i.d.-гипотезы*
4. Статистические модели
4.1. Простые статистические модели
4.2. Статистические модели в машинном обучении
5. Регрессия с оценкой уверенности*
5.1. Моделирование дисперсии в модели регрессии*
5.2. Регрессия с константной оценкой дисперсии*
1. Машинное обучение и статистический вывод
Статистический вывод (оценка параметров и проверка гипотез) часто включается в курсы машинного обучения. Но многими он воспринимается лишь как досадная заноза, которая только отнимает время и далее нигде не используется. Однако машинное обучение и статистический вывод тесно связаны и решают почти одну и ту же задачу.
Машинное обучение заключается в написании и применении алгоритмов, которые обучаются на данных, автоматически выводя общие закономерности из частных примеров.
Статистический вывод заключается в оценке параметров распределений и проверке гипотез на основе наблюдений, то есть опять-таки в получении общих выводов из частных примеров.
Процесс выведения общих правил из частных примеров называется обобщением (generalization), или индуктивным выводом (inductive inference). Чем же тогда отличаются эти два раздела науки? Граница между ними довольно расплывчата. Вообще говоря, большую часть машинного обучения можно считать статистическим выводом, что мы более формально рассмотрим в дальнейшем.
Иногда говорят, что в статистике целью обычно является вывод (inference) о том, верна ли гипотеза или как связаны между собой переменные, а в машинном обучении целью обычно является предсказание (prediction) или генерация чего-либо (Bzdok et al., 2018), хотя эти две цели часто близки. В машинном обучении, как правило, используются более сложные модели, тогда как в традиционной статистике модели обычно проще, но за счет этого они более интерпретируемы и больше внимания уделяется оценке уверенности в сделанных выводах (Breiman, 2001).
2. Вероятностная модель регрессии
2.1. Регрессия, классификация и промежуточные варианты
Задачи классификации и регрессии отличаются типом целевого признака: в регрессии целевой признак количественный (иногда его называют "числовой"), в классификации - категориальный. Отличие категориального от количественного признака заключается не в его типе (int или float), а скорее в предполагаемой метрике сходства на множестве его значений:
В количественном признаке чем больше модуль разности между двумя значениями, тем сильнее они непохожи друг на друга. Например, предсказать значение 2 вместо 1 будет в меньшей степени ошибкой, чем предсказать 10 вместо 1.
В категориальном признаке все значения, называемые классами, одинаково непохожи друг на друга. Например, предсказать 2-й класс вместо 1-го будет в той же степени ошибкой, что и предсказать 10-й класс вместо 1-го. При этом множество значений дискретно и, как правило, конечно.
Все остальные отличия в алгоритмах (в формате выходных данных, функции потерь и метрике качества) обусловлены описанной выше разницей между этими типами. Вообще, при желании задачу классификации технически можно решать как регрессию, то есть напрямую предсказывать номер класса и округлять его до целого числа. Регрессию, наоборот, можно свести к классификации, выполнив дискретизацию множества значений целевого признака. Такие модели кое-как обучатся, но чаще всего их качество на валидации будет существенно ниже, впрочем бывают и исключения (Müller et al., 2021).
В случае иерархической классификации (Silla and Freitas, 2011) целевой признак на первый взгляд является категориальным, но на деле некоторые классы могут быть ближе по смыслу и положению в иерархии друг к другу, чем другие. Например, в классификации животных предсказать овчарку вместо лабрадора является в меньшей степени ошибкой, чем предсказать бегемота вместо лабрадора. Это означает, что на множестве значений целевого признака есть какая-то нетривиальная метрика сходства, и ее желательно учесть в алгоритме обучения.
Будет ли это по прежнему задачей классификации? Сложно сказать. Базовые понятия "классификации" и "регрессии" не покрывают все разнообразие промежуточных вариантов (так же как есть промежуточные варианты между молотком, топором и другими инструментами) (Bernholdt et al., 2019, Twomey et al., 2019). Важно лишь то, что при выборе формата выходных данных и функции потерь нужно учитывать метрику сходства на множестве значений целевого признака. Это один из способов внесения в модель априорной (известной или предполагаемой заранее) информации, к чему мы будем еще не раз возвращаться.
2.2. Вероятностное моделирование
В задачах классификации и регрессии (и многих других задачах) требуется найти зависимость между исходными данными
Общая идея вероятностного моделирования заключается в том, что вместо одного числа модель должна предсказывать распределение вероятностей на множестве
Таким образом мы позволим модели "сомневаться" в предсказании. Выполнив такой переход, мы ничего не теряем: распределение вероятностей
2.3. Модель регрессии
Пусть мы имеем нейронную сеть с одним скрытым слоем шириной в
Примечание. Умножение вектора
Меняя параметры
Алгоритмический подход. Мы выбираем способ расчета ошибки произвольным образом на основании здравого смысла, руководствуясь любыми соображениями. Например можем взять в качестве ошибки среднеквадратичное отклонение
Определившись с тем, как сильно нам нужно штрафовать большие ошибки в сравнении с маленькими, мы можем выбрать функцию потерь. Далее, поскольку в обучающей выборке много примеров, сложим величину ошибки на всех примерах и будем минимизировать полученную сумму.
Вероятностный подход. Будем рассматривать значение
Иногда то же самое записывают другим способом:
Формула плотности вероятности нормального распределения:
Эта формула выглядит несколько громоздкой, но на самом деле она несложная. Если мы обозначим
Итак, мы считаем, что для каждого
Для каждого обучающего примера: чем меньше вероятность истинного значения
Поиск значений параметров
Пока что мы рассмотрели только один пример, но в обучающей выборке много примеров. Будем искать такие параметры
Формула (5) говорит, что нам нужно минимизировать функцию потерь, равную сумме
Первые два слагаемых в (6) являются константами и поэтому не влияют на положение максимума по
Ранее мы вводили обозначение
Примечание. Значение
Резюме. В алгоритмическом подходе модель машинного обучения - это некая параметризованная функция
Важно понять, что между этими двумя подходами нет принципиальной разницы. Если вероятностная модель предсказывает, что "
Таким образом, вероятностная модель просто формализует то, что при точечной оценке мы предполагали неформально. Вспомним цитату Лапласа о том, что теория вероятностей - лишь здравый смысл, выраженный в вычислениях.
2.4. Обсуждение
На примере регрессии мы увидели, что вероятностный подход позволяет вывести выражение для функции потерь, которое в алгоритмическом подходе мы выбирали произвольно. Однако нормальное распределение в (2) мы выбрали произвольно. Вместо него мы могли бы взять, например, распределение Пуассона или Лапласа. В случае распределения Лапласа мы пришли бы к тому, что надо минимизировать среднее абсолютное отклонение
Какой же подход лучше - вероятностный или алгоритмический? Вероятностный подход удобно применять в тех случаях, когда есть объективные причины предполагать, что
Пример 1. Иногда мы знаем, что
Пример 2. Иногда мы знаем, что распределение
2.5. Функция потерь Хьюбера*
Часто мы используем нормальное распределение для
В реальности многие величины распределены приблизительно нормально. Однако распределения, которые встречаются в реальном мире, часто имеют более тяжелые хвосты, то есть большую вероятность встретить крайние значения. Скажем, рост или вес человека в популяции распределен приблизительно нормально, но рекордсмены по росту или весу (в ту или иную сторону) встречаются намного чаще, чем если бы распределение было строго нормальным.
Поэтому разумно было бы моделировать
В целом, из формулы (5) видно, что функция потерь равна минус логарифму плотности вероятности для выбранного распределения. На самом деле графики плотности для многих распределений удобнее смотреть в логарифмическом масштабе по вертикальной оси. Например, нормальное распределение в логарифмическом масштабе выглядит как парабола с направленными вниз ветвями, а распределение Лапласа в логарифмическом масштабе выглядит как функция
Интересно, что функцию потерь Хьюбера можно рассматривать как среднеквадратичную ошибку + gradient clipping, применяемый к градиенту функции потерь по
Gradient clipping также применяется при обучении нейронных сетей, но в этом случае он действует не на градиент по
3. Вероятностное распределение данных
3.1. Понятие распределения данных
Как правило считается, что обучающие и тестовые данные берутся из одного и того же совместного распределения
Конечно, генеральная совокупность данных - это условность, и вопрос ее близости к истине довольно философский. Обычно мы имеем лишь конечную выборку данных, добытую тем или иным способом, но не имеем строгого определения для
Например, пусть мы имеем датасет из объявлений о продаже автомобилей. Для нашего датасета верно, например, следующее:
Количество авто "Lada Granta" превосходит количество авто "Москвич-412"
Количество авто "Победа" с двигателем мощностью 500 л. с. равно нулю
Тогда мы можем считать датасет выборкой из распределения, в котором для
Если распределение
3.2. Дискриминативные модели
Запишем одну из базовых формул теории вероятностей:
Модели, которые моделируют
Важная особенность всех таких моделей в том, что они не моделируют вероятность входных данных
3.3. Генеративные модели*
Кроме дискриминативных, существуют еще генеративные модели - в статистике так называются модели, которые моделируют распределение для всех используемых переменных, то есть
С одной стороны кажется, что в задаче предсказания
Но здесь не учитываются некоторые тонкости. Моделировать
3.4. i.i.d.-гипотеза и качество обобщения
Часто выборку данных рассматривают как выборку из независимых и одинаково распределенных величин (independent and identically distributed, i.i.d.). Это означает, что каждый пример
По моему мнению, данная гипотеза сочетает в себе "блеск и нищету" машинного обучения. С одной стороны, она позволяет формализовать задачу машинного обучения как максимизация ожидаемой метрики качества
i.i.d.-гипотеза дает очень простой способ оценки качества модели: достаточно разделить данные на train и test, и поскольку примеры в test взяты из того же распределения, что и train, то оценка качества модели на test является оценкой Монте-Карло для ожидаемой метрики на всем распределении данных.
При большом размере тестовой выборки
В случае регрессии формула (12) обычно подразумевает точечную оценку для
3.5. Проблемы i.i.d.-гипотезы*
В простоте оценки качества заключается внешний "блеск" i.i.d.-гипотезы, за которым часто скрывается "нищета". Дело в том, что она часто не выполняется: обучающая выборка и та выборка, на которой модели предстоит работать по назначению, часто оказываются распределены по-разному.
Например, это практически неизбежно в кредитном скоринге: нам нужно предсказать вероятность того, что заемщик не вернет кредит, то обучающие данные собираются только по тем заемщикам, которым ранее выдали кредит. Если раньше в банке не выдавали кредиты людям моложе 20 лет, то такие люди не попадут в обучающее распределение данных. Модель может не научиться корректно работать на таких примерах. Если тестовая выборка была случайно отделена от обучающей, то на ней эта проблема никак не будет заметна, но при работе модели по назначению такие люди, конечно, будут часто встречаться. О способах решения данной проблемы в кредитном скоринге можно почитать, например, в Ehrhardt et al., 2021.
Часто бывают ситуации, когда обучающее распределение
В целом понятие "обучения" является более широким, чем задача максимизации метрики (11), особенно когда дело касается обучения агентов (роботов, ботов в компьютерных играх и т. д). Во многом обучение связано с умением выявлять причинно-следственные связи (Pearl, 2009), что помогает функционировать в изменяющейся среде и не обращать внимание на нерелевантные детали окружающей среды. Например, робот, который метко бросает мяч в корзину в лаборатории, но впадает в ступор на уличной площадке из-за того, что корзина стала другого цвета, вряд ли будет полезен. Но способность выявлять причинно-следственные связи никак не связана с максимизацией метрики (11), да и само понятие "распределения данных" часто неоднозначно, поскольку обычно источник данных не является генератором независимых и одинаково распределенных примеров.
Таким образом, i.i.d.-обучение, то есть любые методы, целью которых является максимизация метрики (11), имеет свои границы применимости. Во многих случаях, когда очевидно что i.i.d.-гипотеза неверна, применяют другие подходы (например, марковские цепи, авторегрессионные модели для прогнозирования временных рядов). Но существуют и пограничные случаи, когда непонятно можно ли применять i.i.d.-обучение. На мой взгляд, в табличных задачах слишком часто полагаются на i.i.d.-гипотезу. Возможно, что когда-нибудь в табличном ML в обиход войдут новые (или "хорошо забытые старые") подходы, которые могут учесть зависимость примеров друг от друга, например, с помощью латентных переменных или теории информации.
4. Статистические модели
В первой части мы рассмотрели метод максимизации правдоподобия, но за кадром остался вопрос о том, почему мы максимизируем именно произведение вероятностей, а не их сумму. В этой части мы еще вернемся к этому методу, используя материал из второй части, и соединим все элементы пазла в единую картину, введя понятие статистической модели и вероятности обучающей выборки.
4.1. Простые статистические модели
Статистический вывод (statistical inference) занимается оценкой неизвестных параметров распределений. Пусть у нас есть данные, которые являются выборкой из неизвестного распределения. Нам нужно ответить на вопрос - из какого распределения они получены? Мы вводим набор "распределений-кандидатов", который называется статистической моделью. Рассмотрим несколько примеров:
Пример 1. У нас есть набор чисел
Возьмем любое распределение из множества
Отсюда, зная
Пример 2. Аналогично предыдущему примеру, но мы не знаем ни среднее, ни дисперсию. Тогда наша статистическая модель - это множество всех одномерных нормальных распределений:
Здесь метод максимизации правдоподобия можно выполнить полностью аналогично, только формулы получатся сложнее.
Таким образом, статистическая модель ничего не говорит об оптимальных значениях параметров, а лишь описывает среди какого множества распределений
На какие "подводные камни" мы можем натолкнуться, используя метод максимизации правдоподобия? Их несколько.
Проблема 1. На самом деле распределение, из которого пришла выборка
Проблема 2. Выборка может не быть независимой и одинаково распределенной (i.i.d.). Например, она может быть результатом двухступенчатного семплирования или даже временным рядом, то есть выборкой из
Проблема 3. Мы можем заранее иметь предположения о том, какие значения параметров более вероятны, а какие менее вероятны. В этом случае метод максимизации правдоподобия применять не стоит, поскольку он не учитывает эту информацию. В следующей части мы рассмотрим байесовский вывод, который позволяет ее учесть.
Проблема 4. Если мы будем искать не 1-2 параметра (
В третьей части мы рассмотрим байесовский подход, с точки зрения которого метод максимума правдоподобия является лишь аппроксимацией полного байесовского вывода. При этом чем сложнее модель и меньше данных, тем менее точной получается аппроксимация, что и является причиной переобучения. Полный байесовский вывод часто невозможно выполнить ввиду огромной вычислительной сложности, но существуют его более точные аппроксимации: ансамблирование, вариационный вывод и другие методы.
4.2. Статистические модели в машинном обучении
В предыдущем разделе мы рассмотрели статистическую модель как параметризованное семейство распределений. Тот же подход можно применить в машинном обучении.
Модель машинного обучения (такую как линейная регрессия, случайный лес, нейронная сеть) можно рассмотреть как параметризованную функцию. С помощью этой функции мы оцениваем параметры распределения
У нас есть набор пар
Все остальное ними уже было рассмотрено ранее: осталось сформулировать задачу оптимизации (5-7) и итеративно решить каким-либо способом (для нейронных сетей - градиентным спуском, для случайного леса - построением новых деревьев и т. д.), найдя оптимальные значения параметров
Как видим, здесь есть полная аналогия с простыми статистическими моделями, которые мы рассмотрели в предыдущем разделе. Вместе с этим мы получаем те же самые три подводных камня, основным из которых часто является переобучение: существует множество значений параметров, дающих очень малую ошибку на train и высокую ошибку на test, и процесс оптимизации часто сходится именно к таким решениям.
Зачем нам нужны были сложности с логарифмом, и почему нельзя напрямую максимизировать вероятность
Казалось бы, мы уже рассмотрели много формул и терминов, но от проблемы переобучения никуда не делись, и вообще переход к вероятностной постановке задачи не принес осоой пользы (кроме регрессии Пуассона). Пока что это действительно так. Фундамент дома сам по себе не приносит пользы: жить в нем ничуть не более удобно, чем в вагончике на стройке. В следующих разделах мы рассмотрим как вероятностная постановка задач классификации и регрессии помогает задавать функцию потерь в сложных случаях, когда данные размечены несколькими аннотаторами по-разному, либо когда нам нужно оценивать уверенность в задаче регрессии. В следующей части рассмотрим байесовский вывод, который основывается на материале данной части.
5. Регрессия с оценкой уверенности*
5.1. Моделирование дисперсии в модели регрессии*
В разделе части 1 мы рассмотрели вариант модели регрессии, в котором
Но дисперсия не может быть меньше нуля, а модель может выдавать любое число. Поэтому удобнее, чтобы модель выдавала логарифм дисперсии. Ее дополнительно можно умножить на константу
Так же как и в первой части, мы минимизируем минус логарифм вероятности для каждого примера. Подставив в (6) выражения для
Если функцию потерь умножить на константу или сложить с константой, то положение ее локальных и глобальных минимумов не изменится. Поэтому в формуле (19) удалим второе и четвертое слагаемое, которые являются константами. Затем первое и третье слагаемое умножим на 2. Получим упрощенное выражение для функции потерь:
Мы снова видим среднеквадратичное отклонение, но теперь к нему добавляется дополнительный множитель и дополнительное слагаемое. Высокое значение предсказанной неуверенности
Проверим этот метод на практике, обучив модель на табличном датасете California Housing, в котором нужно предсказывать цену недвижимости в разных районах Калифорнии, имея 8 исходных признаков. В данном случае хорошо работает значение
Код
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from scipy.stats import pearsonr
import tensorflow as tf, numpy as np, matplotlib.pyplot as plt
from tensorflow.keras import Sequential, layers, optimizers, callbacks
from tensorflow.keras.optimizers.schedules import InverseTimeDecay
from tqdm.notebook import tqdm
def custom_loss(y_true, y_pred, C=0.2):
y_true = tf.squeeze(y_true)
mu, log_sigma = y_pred[:, 0], y_pred[:, 1]
loss = (y_true - mu)**2 / tf.math.exp(log_sigma) / C + log_sigma
return tf.math.reduce_mean(loss)
def custom_mse(y_true, y_pred):
y_true = tf.squeeze(y_true)
mu, log_sigma = y_pred[:, 0], y_pred[:, 1]
metrics = (y_true - mu)**2
return tf.math.reduce_mean(metrics)
# downloading and preprocessing dataset
X, y = fetch_california_housing(return_X_y=True)
y = np.log(y)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=5)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
y_train = scaler.fit_transform(y_train[:, None])[:, 0]
y_test = scaler.transform(y_test[:, None])[:, 0]
#training models
def train_simple_model(epochs=50, dropout=0.5):
model = Sequential([
layers.Dense(1000, 'relu'),
layers.Dropout(dropout),
layers.Dense(1)
])
model.compile(loss='mse', optimizer=
optimizers.Adam(InverseTimeDecay(1e-3, 1000, 2)))
model.fit(X_train, y_train, validation_data=(X_test, y_test),
batch_size=128, epochs=epochs, verbose=0)
return model, model.history.history['val_loss']
n_tests = 10
simple = [train_simple_model() for i in tqdm(range(n_tests))]
uncertainty = [train_model_with_uncertainty() for i in tqdm(range(n_tests))]
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(10, 3))
from matplotlib.lines import Line2D
for model, history in simple:
ax1.plot(history, color='C0', label='simple models with MSE loss')
for model, history in uncertainty:
ax1.plot(history, color='C1', label='models with uncertainty')
ax1.set_ylim(0.2, 0.4)
ax1.legend([Line2D([0], [0], color='C0', lw=4),
Line2D([0], [0], color='C1', lw=4)],
['simple models with MSE loss', 'models with uncertainty'])
ax1.set_xlabel('Epoch')
ax1.set_ylabel('Validation MSE')
model, _ = uncertainty[0]
preds_test = model.predict(X_test)
ax2.hexbin(np.abs(preds_test[:, 0] - y_test),
preds_test[:, 1], bins='log', extent=(0, 3, -3, 3), gridsize=50)
ax2.set_xlabel('Absolute error')
ax2.set_ylabel('Predicted log sigma')
corr = pearsonr(np.abs(preds_test[:, 0] - y_test), preds_test[:, 1])[0]
ax2.set_title(f'Correlation: {corr:g}')
plt.show()
Результаты эксперимента. Мы обучили 10 моделей с простой функцией потерь MSE и еще 10 моделей с оценкой неуверенности. На рисунке слева - динамика изменения MSE на валидации для всех моделей, в зависимости от эпохи обучения. Видно, что наши модели превысили по качеству обычные модели, обучаемые с функцией потерь MSE. Возможно это связано с тем, что снижается переобучение модели на выбросах, так как в областях с частыми выбросами предсказывается высокое значение неуверенности, что смягчает ошибку предсказания мат. ожидания в этих областях, уменьшая множитель при первом слагаемом.
На втором графике взяли одну из моделей с оценкой неуверенности и рассмотрели корреляцию фактической ошибки предсказания с предсказанной неуверенностью (на валидационной выборке). Положительная корреляция говорит о том, что модель в какой-то степени справляется с задачей оценки собственной уверенности в предсказании.
Описанный в этом разделе подход давно применяется в разных задачах (см. например Nix and Weigend, 1994). Недавно аналогичная функция потерь была реализована в библиотеке градиентного бустинга CatBoost под названием RMSEWithUncertainty. Посмотрим как она работает на практике, используя CatBoost версии 1.1.1:
Код
from catboost import CatBoostRegressor
model = CatBoostRegressor(depth=3, iterations=1000,
loss_function='RMSEWithUncertainty')
model.fit(X_train, y_train, verbose=0)
staged_preds = list(model.staged_predict(X_test, eval_period=1))
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(10, 3))
from sklearn.metrics import mean_squared_error
metrics = [mean_squared_error(y_test, p[:, 0]) for p in staged_preds]
ax1.plot(metrics, label='catboost')
ax1.set_xlabel('N trees')
ax1.set_ylabel('validation MSE')
ax1.legend()
last_preds = staged_preds[-1]
ax2.hexbin(np.abs(last_preds[:, 0] - y_test),
last_preds[:, 1], bins='log', extent=(0, 3, -3, 3), gridsize=50)
ax2.set_xlabel('Absolute error')
ax2.set_ylabel('Predicted log sigma')
corr = pearsonr(np.abs(last_preds[:, 0] - y_test), last_preds[:, 1])[0]
ax2.set_title(f'Correlation: {corr:g}')
plt.show()
В целом мы видим похожую картину, хотя точность предсказаний CatBoost получилась выше, чем нейронной сети. В CatBoost есть функция для отрисовки деревьев, воспользуемся ей, чтобы нарисовать первое дерево:
model.plot_tree(0)
Каждое звено дерева содержит разделяющее правило, в котором проверяется, что значение указанного признака больше указанного порога. Каждый лист дерева выдает 2 числа: само значение
5.2. Регрессия с константной оценкой дисперсии*
Вспомним вероятностную модель регрессии, которую мы рассматривали во второй части (2). В ней
Для этого мы могли бы сделать
Имеет ли это смысл? Возможно в каких-то случаях да. Но если дать модели выучивать параметр
Существует еще один похожий подход, называемый inductive conformal prediction (Vovk et al., 2005, Sousa, 2022). В нем на отдельной выборке рассчитывается вероятность модели допустить ошибку выше заданного порога, что близко по смыслу к оценке дисперсии.
Конец части 1. Ссылка на вторую часть. Спасибо@ivankomarovи @yorkoза ценные комментарии, которые были учтены при подготовке статьи.