2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Подбор параметров модели
Сообщение06.01.2013, 18:36 
Здравствуйте.
Тема такая:
1. Проведён физический эксперимент.
2. Получены экспериментальные данные $\{t_i; y_i\}_n$\text{, где} t_i \text{-время, с}; y_i\in[0;1], n=500$$.
3. "Есть мнение", что эти данные обобщаются кривой: $$y=x_1^{x_2^{t}}-\left(x_1+\frac{t}{x_3}\right)\mathrm{e}^{-\frac {t}{x_4}\left(x_5-t\right)^2}$$
4. Требуется обеспечить максимальную адекватность модели путём подбора параметров: $x_1, x_2, x_3, x_4, x_5$
Традиционный МНК после приравнивания производных нулю даёт одно единственное уравнение: $$\sum\limits_{i=1}^n y_i - \sum\limits_{i=1}^n\left(x_1^{x_2^{t_i}}+\left(x_1+\frac{t_i}{x_3}\right)\mathrm{e}^{-\frac {t_i}{x_4}\left(x_5-t_i\right)^2\right)}=0,$$ которое пробовал решать градиентным методом, но безуспешно...
Подскажите метод, который поможет отыскать неизвестные параметры модели.
Спасибо.

 
 
 
 Re: Подбор параметров модели
Сообщение06.01.2013, 20:53 
deneb в сообщении #668003 писал(а):
Традиционный МНК после приравнивания производных нулю даёт одно единственное уравнение:
Традиционный МНК всегда давал столько уравнений, сколько у модели параметров. Их тут 5 штук.

Вы почём дифференцировали, когда производные к нулю приравнивали?
Не верю, что все пять производных дали одно и то же уравнение.
А самому подифференцировать --- страшновато как-то... Возраст не тот...

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 16:09 
Ищу минимум функционала:
$$S(x_1, x_2, x_3, x_4, x_5)=\frac12\sum\limits_{i=1}^n\left(y_i-x_1^{x_2^{t_i}}+\left(x_1+\frac{t_i}{x_3}\right)\mathrm{e}^{-\frac {t_i}{x_4}\left(x_5-t_i\right)^2\right)^2}\rightarrow \min$$
Необходимое условие минимума:
$$ \left\{
\begin{aligned}

$\frac {\partial S}{\partial x_1}$=
\sum\limits_{i=1}^n
\left[y_i-
x_1^{x_2^{t_i}}+
\left(x_1+\frac{t_i}{x_3}\right)
\mathrm{e}^{-\frac {t_i}{x_4}(x_5-t_i)^2}
\right]
x_1^{(x_2^{t_i} - 1)}x_2^{t_i}\mathrm{e}^{-\frac {t_i}{x_4}(x_5-t_i)^2}=0



$\frac {\partial S}{\partial x_2}$=
\sum\limits_{i=1}^n
\left[y_i-
x_1^{x_2^{t_i}}+
\left(x_1+\frac{t_i}{x_3}\right)
\mathrm{e}^{-\frac {t_i}{x_4}(x_5-t_i)^2}
\right]
x_1^{x_2^{t_i}}\ln(x_1)x_2^{(t_i - 1)} t_i=0



$\frac {\partial S}{\partial x_3}$=
\sum\limits_{i=1}^n
\left[y_i-
x_1^{x_2^{t_i}}+
\left(x_1+\frac{t_i}{x_3}\right)
\mathrm{e}^{-\frac {t_i}{x_4}(x_5-t_i)^2}
\right]
\left(-\frac {t_i}{x_3^2}\right) \mathrm{e}^{-\frac {t_i}{x_4}(x_5-t_i)^2}=0



$\frac {\partial S}{\partial x_4}$=
\sum\limits_{i=1}^n
\left[y_i-
x_1^{x_2^{t_i}}+
\left(x_1+\frac{t_i}{x_3}\right)
\mathrm{e}^{-\frac {t_i}{x_4}(x_5-t_i)^2}
\right]
\left(x_1+\frac {t_i}{x_3}\right)\frac {t_i(x_5-t_i)^2}{x_4^2}\mathrm{e}^{-\frac {t_i}{x_4}(x_5 - t_i)^2}=0



$\frac {\partial S}{\partial x_5}$=
\sum\limits_{i=1}^n
\left[y_i-
x_1^{x_2^{t_i}}+
\left(x_1+\frac{t_i}{x_3}\right)
\mathrm{e}^{-\frac {t_i}{x_4}(x_5-t_i)^2}
\right]
\left(x_1+\frac {t_i}{x_3}\right)\left(-\frac {t_i(2x_5-2t_i)}{x_4}\right)\mathrm{e}^{-\frac {t_i}{x_4}(x_5 - t_i)^2}=0

\end{aligned}
\right$$

Получаю уравнение:
$$
\sum\limits_{i=1}^n
\left[y_i-
x_1^{x_2^{t_i}}+
\left(x_1+\frac{t_i}{x_3}\right)
\mathrm{e}^{-\frac {t_i}{x_4}(x_5-t_i)^2}
\right]=0
$$
Теперь необходимо оценить параметры. Обращаюсь за помощью к вам...

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 16:45 
deneb в сообщении #668446 писал(а):
Получаю уравнение:
Вывод совершенно неверный.
В каждом из пяти уравнений стоит сумма из 500 слагаемых. И Вы, похоже, увидели в них общий множитель, и "вынесли его за скобку". Но ведь это не общий множитель: каждое $\left[ y_i-F^{\strut}_{\strut}(t_i;x_1,\ldots,x_5)\right]$ содержит своё личное $y_i, t_i$, и общим множителем не является.

Вы совершите ту же ошибку в простейшей МНК-модели, $y(t)=at+b$ с двумя параметрами? Вы тоже получите одно уравнение?

Думаю, Вы бы меньше путались, если бы вместо индексированных иксов назвали 5 параметров, например, $a,b,c,\not{\!d},\not{\!e},f,g$, оставив индексирование для 500 измеренных величин $t_i,y_i$.

-- 07 янв 2013, 17:50:57 --

Страшно подумать, сколько времени Вы затратили на написание этой системы в \LaTeX. При этом Вы допустили огромное количество синтаксических ошибок, но каким-то образом заставили формулу изображаться как следует! Почему-то сработало, например, недопустимое $$ ... $ ... $ ... $$.

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 18:07 
Спасибо! Вы правы
Тогда такой вопрос:
Решать систему i раз (задавая $t = t_i, y = y_i$)?
Или...
P.S. с $\LaTeX$ познакомился вчера

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 18:22 
deneb в сообщении #668483 писал(а):
P.S. с $\LaTeX$ познакомился вчера
Я понял, что примерно "только вчера", и, замечу, не упрекал: только сочувствовал и восторгался.
deneb в сообщении #668483 писал(а):
Решать систему i раз (задавая $t = t_i, y = y_i$)?
Следует ли это читать как "Решать систему i=500 раз ... ? " Сколько раз (одну и ту же) систему не решай, результат, при правильном решении, будет один и тот же. У Вас ОДНА система из ПЯТИ уравнений. Вы как-то некорректно высказались.
(ещё сейчас допишу чего-то)

-- 07 янв 2013, 19:37:11 --

deneb в сообщении #668003 писал(а):
2. Получены экспериментальные данные $\{t_i; y_i\}_n$, где $t_i$ - время, с; $y_i\in[0;1], n=500$.
3. "Есть мнение", что эти данные обобщаются кривой: $$y=x_1^{x_2^{t}}-\left(x_1+\frac{t}{x_3}\right)\mathrm{e}^{-\frac {t}{x_4}\left(x_5-t\right)^2}$$
Когда столь явно заявлено, что t --- время, да ещё в секундах, и что нечто физическое разбирается, выражение $\ldots^{x_2^{t}}$ смотрится ужасненько (на мой, конечно, взгляд, не_особо_физичный). $x_1^{e^{x_2 t}}$ не так бы пугало. И вообще, зачем вводить параметр как $\frac1{x_3}$, когда можно просто заменить это на $x_3$. И не дифференцировать потом дроби: $$y=a^{\mathrm{e}^{bt}}-(a+ct)\mathrm{e}^{-ft(g-t)^2}$$

-- 07 янв 2013, 19:47:37 --

А решать систему численно. Я даже не предлагаю в этой страшной модели пользоваться какой-либо линеаризацией.

ЦЕРНовскую программу Minuit погуглите.

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 19:14 
В линейном случае:
$$
\begin{cases}
 a\sum\limits_{i=1}^{n}x_i^2+b\sum\limits_{i=1}^{n}x_i=\sum\limits_{i=1}^{n}x_iy_i\\ 
 a\sum\limits_{i=1}^{n}x_i+\sum\limits_{i=1}^{n}b=\sum\limits_{i=1}^{n}y_i
\end{cases}
$$
всё ясно... просуммировал экспериментальные значения и "перекидывай" их из стороны в сторону и найдёшь a и b. Но в исследуемой модели неизвестные параметры входят в суммы. Никак не пойму как быть.

Насчёт дробей: если брать $c, f$ как линейные, то они могут оказаться очень маленькими(0.00000001) поэтому дроби $\frac 1c, \frac 1f$

Насчёт вида кривой: возможно и так
$$y=\mathmr{e}^{p\mathmr{e}^{ht}}-(a+ct)\mathmr{e}^{-ft(g-t)^2}$$

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 19:46 
Линейная задача проста и сводится к линейной системе. Заметьте, что если Вы перенесёте $x_i,y_i$ в систему центра тяжести ($\sum x_i=0$, $\sum y_i=0$), то и решится она устно.

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

Что касается очень маленьких значений параметров, то замена их на очень большие (типа $c\to c^{-1}$) вряд ли спасает ситуацию. Не вижу, как это может помочь делу. Не знаю, может ли помочь, скажем, логарифмическая замена.

Да и не такой уж я опытный МНК-минимизатор (отреагировал только на явные ошибки и подозрения). Остальные, видимо, на лыжах катаются.

-- 07 янв 2013, 20:50:46 --

deneb в сообщении #668506 писал(а):
Насчёт вида кривой: возможно и так
$$y=\mathmr{e}^{p\mathmr{e}^{ht}}-(a+ct)\mathmr{e}^{-ft(g-t)^2}$$
А здесь Вы вместо пяти прежних параметров вставили шесть. Такие штуки делаются или осознанно (тогда с комментарием), или по ошибке.

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 21:18 
Итак... система из 5 нелинейных уравнений. Есть смысл решать её итерационным методом, если начальное приближение $x_0 = (a_0, b_0, c_0, f_0, g_0)$ известно?
$$
\begin{cases}
 a_{n+1}=\varphi_1(a_n, b_n, c_n, f_n, g_n)\\
 b_{n+1}=\varphi_2(a_n, b_n, c_n, f_n, g_n)\\
 c_{n+1}=\varphi_3(a_n, b_n, c_n, f_n, g_n)\\
 f_{n+1}=\varphi_4(a_n, b_n, c_n, f_n, g_n)\\
 g_{n+1}=\varphi_5(a_n, b_n, c_n, f_n, g_n)
\end{cases}
$$

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 21:58 
Есть возможность попробовать разные методы.

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

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 22:22 
Можно сгенерировать в Excel 500 точек (t начинается с 0) и подставить $x_0 = (0.02, 0,98, 1000, 100000, 10)$ в уравнение: $$y=a^{b^{t}}-\left(a+\frac{t}{c}\right)\mathrm{e}^{-\frac {t}{f}(g-t)^2}.$$ Точки примерно соответствуют экспериментальным (параметры подбирал "на глаз")

 
 
 
 Re: Подбор параметров модели
Сообщение07.01.2013, 22:53 
Тратить время на поиск параметров в сгенерированной функции мне не интересно. Если данные – результат физического эксперимента, то да, тогда можно потратить какое-то время.

Кстати говоря, в Excel есть численные методы. Они зарыты где-то в меню «Поиск решения», причем его нужно включить в настройках. Там есть метод сопряженных градиентов, с помощью которого можно уточнить найденное на глаз решение.

 
 
 
 Re: Подбор параметров модели
Сообщение08.01.2013, 09:03 
Вот данные http://zalil.ru/34144010. Работаю со средними значениями (оранжевый столбик), для которых и нужно подобрать кривую.

Спасибо за совет, но программирование не проблема. Многие методы из книги "Пантелеев А.В., Летова Т.А. — Методы оптимизации в примерах и задачах" реализованы. Поэтому использовать Excel, Matlab и др. у меня нет желания. Хочется реализовать решение самостоятельно, тем более что таких файлов у меня больше сотни и процесс их обработки предстоит автоматизировать.

 
 
 
 Re: Подбор параметров модели
Сообщение08.01.2013, 20:02 
Во-первых, лучше сделать замены переменных, как описывал Алексей К..

Во-вторых, можно сделать масштабирование времени – можно сжать время в диапазон от 0 до 1 – тогда подбираемые параметры будут более «соразмерны».

В-третьих, если скопировать данные оранжевого столбца (или убрать форматирование), то видно, что есть значения больше единицы. Хотя в первом сообщении заявлено, что в игреки диапазоне от 0 до 1. Но это лирика. Но если значения подбираемой функции должны быть строго в диапазоне от 0 до 1, то это уже дополнительные ограничения (хотя бы 2).

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

Реализация качественных методов глобальной оптимизации – это сотни тысяч строк кода и много-много человеко-лет работы. Для собственной реализации можно предложить методы случайного поиска: локальный метод с генерацией случайной начальной точки, генетические алгоритмы, методы отжига и прочая хрень. Если нужно – информацию можно найти в интернетах.

 
 
 [ Сообщений: 14 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group