Аппроксимация Лапласа (пример)
Материал из MachineLearning.
(→Сэмплирование) |
(→Смотри также) |
||
(71 промежуточная версия не показана) | |||
Строка 1: | Строка 1: | ||
- | [[Аппроксимация Лапласа]] - способ оценки параметров | + | [[Аппроксимация Лапласа]] - способ оценки параметров нормального распределения при аппроксимации заданной плотности вероятности. |
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
==Постановка задачи== | ==Постановка задачи== | ||
Задана выборка — множество <tex>X^N=\{{x}_1,\ldots,{x}_N|x\in\R^M\}</tex> значений свободных переменных и множество <tex>\{y_1,\ldots, y_N| y\in\R\}</tex> соответствующих им значений зависимой переменной. | Задана выборка — множество <tex>X^N=\{{x}_1,\ldots,{x}_N|x\in\R^M\}</tex> значений свободных переменных и множество <tex>\{y_1,\ldots, y_N| y\in\R\}</tex> соответствующих им значений зависимой переменной. | ||
- | Необходимо для выбранной регрессионной модели <tex>f( | + | Необходимо для выбранной регрессионной модели <tex>f(w,x)</tex>: |
- | + | ||
- | + | '''3-1''' показать зависимость среднеквадратичной ошибки от значений параметров модели: <tex>SSE=SSE(w)</tex>; | |
- | + | ||
+ | '''3-2''' построить график и сделать аппроксимацию Лапласа для зависимости <tex>SSE=SSE(w)</tex>; | ||
+ | |||
+ | '''3-3''' найти расстояния между полученными зависимостями, используя [http://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence расстояние Кульбака - Лейблера]. | ||
==Описание алгоритма== | ==Описание алгоритма== | ||
+ | При восстановлении регрессии рассматривалась следующая гипотеза порождения данных: | ||
+ | <center><tex>y=f(x,w)+\epsilon</tex>, где</center> | ||
+ | <center><tex>\epsilon\propto N(0,\sigma^2)</tex></center> | ||
+ | В таком случае, при фиксированной модели ''f'' плотность вероятности появления данных равняется<ref>Стрижов В.В., Крымова Е.А. Методы выбора регрессионных моделей. М.: ВЦ РАН, 2010. 60 с., стр. 41 </ref>: | ||
+ | <center><tex>p(y|x,w)=\frac{1}{Z_D}exp(-E_D)</tex>, где</center> | ||
+ | <tex>E_D</tex> - это функция регрессионных невязок, т.е. <tex>SSE</tex>; | ||
- | Расстояние Кульбака - Лейблера: | + | <tex>Z_D</tex> - нормировачный коэффициент. |
- | <center> <tex>D_{kl}(p,q)=\sum\limits_{ | + | |
+ | '''3-1'''. В заданной модели ''f'', используя [[метод наименьших квадратов]], находим оптимальное значение вектора параметров <tex>\mathcal w_{opt}</tex>. Далее, фиксируем все параметры выбранной регрессионной модели (для определенности зададим им оптимальные значения) кроме одного (пусть этот незафиксированный параметр будет <tex>w_1</tex>). После чего, варьируя значение <tex>w_1</tex>, строим искомую зависимость <tex>SSE=SSE(w_1)</tex> и график <tex>p(y|x,w_1)</tex>. Таким образом построена зависимость от одного параметра <tex>w_1</tex>. | ||
+ | Аналогично действуя, строится зависимость от большего количества параметров. | ||
+ | |||
+ | '''3-2'''. При аппроксимации Лапласа, полученную в пункте 3-1 функцию <tex>p(y|x,w_1)</tex> приближаем функцией многомерного нормального распределения <tex> N(w_{otp},A)</tex>. Воспользуемся нелинейной регрессионной моделью: | ||
+ | <center><tex> p \propto exp((w - w_{otp})^T A^{-1} (w-w_{otp})) </tex></center> | ||
+ | |||
+ | Другими словами, зная из пункта 3-1 значение <tex>p(D|w)</tex> (т.е. множество пар <tex>(p_i, w_i)</tex>, где <tex>w_i</tex> - вектор параметров ''i''-го сэмпла), надо получить корреляционную матрицу <tex>A</tex>. | ||
+ | |||
+ | Вначале, представляем элементы матрицы <tex>A</tex> в виде вектора параметров. Далее, используя [[метод Ньютона-Гаусса]],находим оптимальный вектора параметров (минимум суммы остаточных квадратов). Затем, делаем обратный переход от вектора параметров к матрице и получаем искомую корреляционную матрицу <tex>A</tex>. | ||
+ | |||
+ | |||
+ | '''3-3'''. Расстояние Кульбака - Лейблера между двумя распределениями ''p(z)'' и ''q(z)'' равняется: | ||
+ | <center> <tex>D_{kl}(p,q)=\sum\limits_{z\in \mathcal{Z}} p(z) \ln \frac{p(z)}{q(z)}</tex></center> | ||
==Вычислительный эксперимент== | ==Вычислительный эксперимент== | ||
- | Обозначим | + | Обозначим плотность распределения SSE как <tex> p_{SSE}</tex>, а его аппроксимация лапласа <tex> p_{lap}</tex>. |
+ | |||
+ | {{tip | Во время вычислительного эксперимента ''SSE'' принимало достаточно большие значения (порядка <tex>10^3 - 10^4</tex>). Как следствие, ''p(y)'' принимало значения порядка 1, и аппроксимация Лапласа была некорректной. | ||
+ | Поэтому, аппроксимация Лапласа применялась не к самому распределению ''p(y)'', а к ''ln(p(y))'' (т.е. к ''-SSE'' c точностью до коэффициента).}} | ||
+ | |||
===Пример 1=== | ===Пример 1=== | ||
- | Задуманная функция <tex>y=x + sin3x</tex>. | + | Задуманная функция <tex>y=x + sin3x</tex>. Рассматривается линейная регрессионная модель с двумя параметрами: <tex>y(x)=w_1+w_2x</tex>. |
- | + | <tex>w_1_{opt}</tex> и <tex>w_2_{opt}</tex> - оптимальное значение параметров (при которых ''SSE'' минимально). | |
- | ''' | + | '''Фиксируем один параметр''' <tex>w_1=w_1_{opt}</tex> и задаем различные значение <tex>w_2</tex> (500 случайных значений на отрезке [-1;2]). Строим зависимость: |
[[Изображение:Sse(w2)b.png|center|frame]] | [[Изображение:Sse(w2)b.png|center|frame]] | ||
Строка 41: | Строка 56: | ||
<tex>D_{kl}(p_{SSE},p_{lap})=0.0085</tex>. | <tex>D_{kl}(p_{SSE},p_{lap})=0.0085</tex>. | ||
- | '''Повторим эксперимент''', только теперь | + | '''Повторим эксперимент''', только теперь варьируем сразу оба параметра <tex>w_1</tex> и <tex>w_2</tex>: |
- | [[Изображение:Sse(w1,w2).png|center|frame|Рис. 1. Зависимость <tex>- SSE</tex> от <tex>w_1</tex> и <tex>w_2</tex>]] | + | [[Изображение:Sse(w1,w2)a.png|center|frame|Рис. 1. Зависимость <tex>- SSE</tex> от <tex>w_1</tex> и <tex>w_2</tex>]] |
- | [[Изображение:Sse(w1,w2) | + | [[Изображение:Sse(w1,w2)verh.png|center|frame|Рис. 2. Зависимость <tex>- SSE</tex> от <tex>w_1</tex> и <tex>w_2</tex>. Ось log(p) направлена вверх]] |
- | + | аппроксимация Лапласа: | |
- | [[Изображение: | + | [[Изображение:Laplas.png|center|frame|Laplace approximation]] |
+ | |||
+ | <tex>D_{kl}(p_{SSE},p_{lap})=4.9491*10^{-5}</tex> | ||
+ | |||
+ | ковариационная матрица | ||
+ | FIXIT: матрица не является положительно определенной! По критерию Сильвестра элементы не диагонали должны быть положительны | ||
+ | <tex>A=10^3*\begin{Vmatrix} | ||
+ | -0.1021 & -0.3141\\ | ||
+ | -0.3141 & -1.3242\\ | ||
+ | \end{Vmatrix} | ||
+ | </tex> | ||
- | |||
На рис.2 наблюдается зависимость между коэффициентами <tex>w_1</tex> и <tex>w_2</tex>. Следовательно, ковариационная матрица <tex>cov(w_1,w_2)</tex> не будет диагональной. | На рис.2 наблюдается зависимость между коэффициентами <tex>w_1</tex> и <tex>w_2</tex>. Следовательно, ковариационная матрица <tex>cov(w_1,w_2)</tex> не будет диагональной. | ||
+ | |||
+ | ===Пример 2=== | ||
+ | |||
+ | Задуманная функция <tex>y=7.5x + 12tanx+\epsilon</tex>, где <tex>\epsilon</tex> - белый гауссовский шум. Рассматривается следующая регрессионная модель: линейная комбинация функций <tex>x</tex> и <tex>tanx</tex>. | ||
+ | <center> <tex>y(x)=w_1*x+w_2tanx</tex>.</center> | ||
+ | <tex>w_1_{opt}</tex> и <tex>w_2_{opt}</tex> - оптимальное значение параметров (при которых ''SSE'' минимально). | ||
+ | |||
+ | '''Фиксируем один параметр''' <tex>w_1=w_1_{opt}</tex> и задаем различные значение <tex>w_2</tex> (10000 случайных значений на отрезке [5;15]). Строим зависимость: | ||
+ | |||
+ | [[Изображение:Odin_parametr.png|center|frame]] | ||
+ | |||
+ | <tex>D_{kl}(p_{SSE},p_{lap})=4.3097*10^{-16}</tex> | ||
+ | |||
+ | '''Повторим эксперимент''', только теперь варьируем сразу оба параметра <tex>w_1</tex> и <tex>w_2</tex>(10000 случайных значений на отрезке [-100;100]): | ||
+ | |||
+ | [[Изображение:Dva_parametr_bok.png|center|frame|Рис. 1. Зависимость <tex>- SSE</tex> от <tex>w_1</tex> и <tex>w_2</tex>]] | ||
+ | |||
+ | [[Изображение:Dva_parametr_verh.png|center|frame|Рис. 2. Зависимость <tex>- SSE</tex> от <tex>w_1</tex> и <tex>w_2</tex>. Ось log(p) направлена вверх]] | ||
+ | |||
+ | аппроксимация Лапласа: | ||
+ | |||
+ | [[Изображение:Laplas_bok.png|center|frame|Laplace Approximation]] | ||
+ | |||
+ | [[Изображение:Laplas_verh.png|center|frame|Laplace Approximation. Ось log(p) направлена вверх]] | ||
+ | |||
+ | <tex>D_{kl}(p_{SSE},p_{lap})=0.1753</tex> | ||
+ | |||
+ | ковариационная матрица | ||
+ | <tex>A=10^4*\begin{Vmatrix} | ||
+ | -2.9234 & 0.0413\\ | ||
+ | 0.0413 & -3.9066\\ | ||
+ | \end{Vmatrix} | ||
+ | </tex> | ||
+ | |||
+ | ===Пример 3=== | ||
+ | |||
+ | Задуманная функция <tex>y=exp(7+log(5x))+\epsilon</tex>, где <tex>\epsilon</tex> - белый гауссовский шум. Рассматривается существенно нелинейная регрессионная модель с двумя параметрами: <tex>y(x)=exp(w_1+log(w_2x))</tex>. | ||
+ | |||
+ | '''Фиксируем один параметр''' <tex>w_2=5</tex> и задаем различные значение <tex>w_1</tex> (10000 случайных значений на отрезке [6.5;7.5]). Строим зависимость: | ||
+ | |||
+ | [[Изображение:Non_lin_1_par.png|center|frame]] | ||
+ | |||
+ | <tex>D_{kl}(p_{SSE},p_{lap})=0.0794</tex>. | ||
+ | |||
+ | '''Повторим эксперимент''', только теперь варьируем сразу оба параметра <tex>w_1</tex> и <tex>w_2</tex>(10000 случайных значений на отрезках [4.5;5.5] и [6.5;7.5] соответственно): | ||
+ | |||
+ | [[Изображение:Non_lin_2_par.png|center|frame| Зависимость <tex>- SSE</tex> от <tex>w_1</tex> и <tex>w_2</tex>]] | ||
+ | |||
+ | аппроксимация Лапласа: | ||
+ | |||
+ | [[Изображение:Non_lin_2_par_laplas.png|center|frame| Laplace Approximation]] | ||
+ | |||
+ | |||
+ | <tex>D_{kl}(p_{SSE},p_{lap})=0.0718</tex> | ||
+ | |||
+ | ковариационная матрица | ||
+ | <tex>A=10^{11}*\begin{Vmatrix} | ||
+ | -2.7859 & 0.0056\\ | ||
+ | 0.0056 & 0.0146\\ | ||
+ | \end{Vmatrix} | ||
+ | </tex> | ||
== Смотри также == | == Смотри также == | ||
* [[Аппроксимация Лапласа]] | * [[Аппроксимация Лапласа]] | ||
* [[Сэмплирование]] | * [[Сэмплирование]] | ||
- | * [http:// | + | * [http://en.wikipedia.org/wiki/Sampling_(statistics)#Notes Сэмплирование на вики] |
- | * [ | + | * [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Group774/Zaitsev2010Laplace/zaytsev_yevgen_laplace_aproximation/ Скачать код MATLAB можно здесь] |
== Литература == | == Литература == | ||
Строка 68: | Строка 153: | ||
- | {{ | + | {{ЗаданиеВыполнено|Евгений Зайцев|В.В.Стрижов|24 декабря 2010|Yevgen.zaytsev|Strijov}} |
[[Категория:Практика и вычислительные эксперименты]] | [[Категория:Практика и вычислительные эксперименты]] |
Текущая версия
Аппроксимация Лапласа - способ оценки параметров нормального распределения при аппроксимации заданной плотности вероятности.
Содержание |
Постановка задачи
Задана выборка — множество значений свободных переменных и множество соответствующих им значений зависимой переменной. Необходимо для выбранной регрессионной модели :
3-1 показать зависимость среднеквадратичной ошибки от значений параметров модели: ;
3-2 построить график и сделать аппроксимацию Лапласа для зависимости ;
3-3 найти расстояния между полученными зависимостями, используя расстояние Кульбака - Лейблера.
Описание алгоритма
При восстановлении регрессии рассматривалась следующая гипотеза порождения данных:
В таком случае, при фиксированной модели f плотность вероятности появления данных равняется[1]:
- это функция регрессионных невязок, т.е. ;
- нормировачный коэффициент.
3-1. В заданной модели f, используя метод наименьших квадратов, находим оптимальное значение вектора параметров . Далее, фиксируем все параметры выбранной регрессионной модели (для определенности зададим им оптимальные значения) кроме одного (пусть этот незафиксированный параметр будет ). После чего, варьируя значение , строим искомую зависимость и график . Таким образом построена зависимость от одного параметра . Аналогично действуя, строится зависимость от большего количества параметров.
3-2. При аппроксимации Лапласа, полученную в пункте 3-1 функцию приближаем функцией многомерного нормального распределения . Воспользуемся нелинейной регрессионной моделью:
Другими словами, зная из пункта 3-1 значение (т.е. множество пар , где - вектор параметров i-го сэмпла), надо получить корреляционную матрицу .
Вначале, представляем элементы матрицы в виде вектора параметров. Далее, используя метод Ньютона-Гаусса,находим оптимальный вектора параметров (минимум суммы остаточных квадратов). Затем, делаем обратный переход от вектора параметров к матрице и получаем искомую корреляционную матрицу .
3-3. Расстояние Кульбака - Лейблера между двумя распределениями p(z) и q(z) равняется:
Вычислительный эксперимент
Обозначим плотность распределения SSE как , а его аппроксимация лапласа .
Пример 1
Задуманная функция . Рассматривается линейная регрессионная модель с двумя параметрами: . и - оптимальное значение параметров (при которых SSE минимально).
Фиксируем один параметр и задаем различные значение (500 случайных значений на отрезке [-1;2]). Строим зависимость:
.
Повторим эксперимент, только теперь варьируем сразу оба параметра и :
аппроксимация Лапласа:
ковариационная матрица FIXIT: матрица не является положительно определенной! По критерию Сильвестра элементы не диагонали должны быть положительны
На рис.2 наблюдается зависимость между коэффициентами и . Следовательно, ковариационная матрица не будет диагональной.
Пример 2
Задуманная функция , где - белый гауссовский шум. Рассматривается следующая регрессионная модель: линейная комбинация функций и .
и - оптимальное значение параметров (при которых SSE минимально).
Фиксируем один параметр и задаем различные значение (10000 случайных значений на отрезке [5;15]). Строим зависимость:
Повторим эксперимент, только теперь варьируем сразу оба параметра и (10000 случайных значений на отрезке [-100;100]):
аппроксимация Лапласа:
ковариационная матрица
Пример 3
Задуманная функция , где - белый гауссовский шум. Рассматривается существенно нелинейная регрессионная модель с двумя параметрами: .
Фиксируем один параметр и задаем различные значение (10000 случайных значений на отрезке [6.5;7.5]). Строим зависимость:
.
Повторим эксперимент, только теперь варьируем сразу оба параметра и (10000 случайных значений на отрезках [4.5;5.5] и [6.5;7.5] соответственно):
аппроксимация Лапласа:
ковариационная матрица
Смотри также
Литература
- Bishop, C. Pattern Recognition And Machine Learning. Springer. 2006.
Примечания
Данная статья была создана в рамках учебного задания.
См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |