Предпосылки и проблемы
Я использую Гауссовские процессы (GP) для регрессии и последующей байесовской оптимизации (BO). Для регрессии я использую пакет gpml для MATLAB с несколькими пользовательскими модификациями, но проблема общая.
Общеизвестно, что когда два входных тренинга находятся слишком близко к входному пространству, ковариационная матрица может стать неположительной (на этом сайте есть несколько вопросов). В результате разложение по Холески ковариационной матрицы, необходимое для различных вычислений ГП, может потерпеть неудачу из-за числовой ошибки. Это случилось со мной в нескольких случаях при выполнении БО с целевыми функциями, которые я использую, и я бы хотел это исправить.
Предлагаемые решения
AFAIK, стандартное решение для устранения плохой обусловленности заключается в добавлении гребня или самородка к диагонали ковариационной матрицы. Для регрессии GP это означает добавление (или увеличение, если оно уже присутствует) шума наблюдения.
Все идет нормально. Я изменил код для точного вывода gpml так, чтобы всякий раз, когда разложение Холецкого не удавалось , я пытаюсь зафиксировать ковариационную матрицу в ближайшей симметричной положительно определенной матрице (SPD) в норме Фробениуса, вдохновленной этим кодом MATLAB Джона д'Эррико. Обоснование состоит в том, чтобы минимизировать вмешательство в исходную матрицу.
Этот обходной путь делает свою работу, но я заметил, что производительность BO существенно снизилась для некоторых функций - возможно, всякий раз, когда алгоритму потребуется увеличить масштаб в некоторой области (например, потому что он приближается к минимуму, или потому что длина масштабируется проблемы становятся неравномерно малыми). Такое поведение имеет смысл, поскольку я эффективно увеличиваю шум, когда две входные точки подходят слишком близко, но, конечно, это не идеально. Кроме того, я мог бы просто удалить проблемные точки, но, опять же, иногда мне нужно, чтобы входные точки были близки.
Вопрос
Я не думаю, что численные проблемы, связанные с факторизацией Холески ковариационных матриц ГП, являются новой проблемой, но, к моему удивлению, я не смог найти много решений до сих пор, кроме увеличения шума или удаления точек, которые находятся слишком близко друг к другу. С другой стороны, это правда, что некоторые из моих функций ведут себя довольно плохо, поэтому, возможно, моя ситуация не столь типична.
Любое предложение / ссылка, которая может быть полезна здесь?
Ответы:
Другой вариант - по существу усреднить баллы, вызывающие - например, если у вас есть 1000 баллов и 50 причинных проблем, вы можете выбрать оптимальное приближение низкого ранга, используя первые 950 собственных значений / векторов. Тем не менее, это не за горами удаления точек данных близко друг к другу, что вы, скорее всего, не сделаете. Имейте в виду, однако, что, добавляя джиттер, вы уменьшаете степени свободы - т.е. каждая точка меньше влияет на ваш прогноз, поэтому это может быть хуже, чем использование меньшего количества точек.
Редактировать:
Основываясь на комментариях, я подумал, что уточню, что я имел в виду, включая производные наблюдения. Если мы используем ядро Гаусса (в качестве примера),
его производные,
В остальном ГП такой же, как обычно.
источник
Одно из решений, которое мы нашли в офисе, - просто изменить проблемные моменты. Это может принять форму прямого удаления или чего-то более сложного. По сути, наблюдение состоит в том, что точки сближения сильно избыточны: фактически настолько избыточны, что они уменьшают ранг ковариационной матрицы. Точно так же одна точка в любом случае вносит мало информации в имеющуюся проблему, поэтому удаление одной или другой (или выполнение чего-то другого, например, усреднение их или «отскакивание» одной точки от другой на некоторое минимально допустимое расстояние) не так уж сильно изменить ваше решение.
Я не уверен, как судить, в какой момент эти две точки становятся «слишком близкими». Возможно, это может быть опцией настройки, оставленной пользователю.
(Ой! После того, как я опубликовал это, я нашел ваш вопрос здесь, который продвигает этот ответ к гораздо более сложному решению. Я надеюсь, что, ссылаясь на него из моего ответа, я буду помогать с SEO ...)
источник