Вопрос или проблема
Я пытаюсь предсказать значения температур как функцию времени и различных параметров. Кривая температуры выглядит как “рампа” с некоторыми “гауссовыми пиками” на регулярных интервалах.
Итак, я пытаюсь построить модель регрессии для следующего уравнения:
$$
\hat{T}_{a, \mu, \sigma, s, c, m, p}\left(t\right) = a \frac{1}{\sigma\sqrt{2 \pi}} e^{-\frac{\left(\sin\left(\frac{t-s}{c}\right) – \mu\right)^2}{2 \sigma^2}} + m t + p
$$
Моя цель – установить значения $a$, $\mu$, $\sigma$, $s$, $c$, $m$, $p$.
Моё первое намерение было использовать градиентный спуск, но я почти уверен, что производная функции стоимости, основанной на RSS, не будет выпуклой, так что я могу застрять в локальном минимуме.
Мне также интересно, нет ли лучшей альтернативы для решения этой проблемы. Это касается особенно методов, не связанных с минимизацией производных. Я думаю (но не уверен), что нейронные сети могут помочь мне в этом.
Таким образом, коротко, как бы вы решили следующее?
\begin{equation}
\left[\begin{array}{l}
a \\
\mu \\
\sigma \\
s \\
c \\
m \\
p
\end{array}\right] \leftarrow \textrm{argmin}_{a, \mu, \sigma, s, c, m, p}\frac{1}{2N} \sum_{i=1}^N{\left(a \frac{1}{\sigma\sqrt{2 \pi}} e^{-\frac{\left(\sin\left(\frac{t_i-s}{c}\right) – \mu\right)^2}{2 \sigma^2}} + m t + p – T_i\right)^2}
\end{equation}
Большое спасибо за вашу помощь.
P.S.: Я использую python 3 с библиотекой scipy
Функция потерь, которая не является выпуклой, все еще может быть минимизирована с помощью градиентного спуска. Даже если функция потерь сойдется к локальному минимуму, это может быть полезным набором параметров.
Если вы решите не использовать градиентный спуск, в scipy есть несколько методов оптимизации функций. Попробуйте как можно больше и посмотрите, какой метод требует лучший набор параметров.
Ответ или решение
Для решения задачи регрессии, связанной с предсказанием температур в зависимости от времени и ряда параметров, необходимо учесть все особенности. Ваше уравнение включает в себя компоненты гауссовой функции и линейной зависимости, что делает его достаточно сложным в контексте поиска оптимальных параметров с помощью простого градиентного спуска из-за вероятной не выпуклости функции потерь.
Поиск решения задачи регрессии
Анализ проблемы
Главная цель — это минимизация функции потерь, представленной уравнением:
[
\left[\begin{array}{l}
a \
\mu \
\sigma \
s \
c \
m \
p
\end{array}\right] \leftarrow \text{argmin}{a, \mu, \sigma, s, c, m, p} \frac{1}{2N} \sum{i=1}^N \left( a \frac{1}{\sigma\sqrt{2 \pi}} e^{-\frac{\left(\sin\left(\frac{t_i-s}{c}\right) – \mu\right)^2}{2 \sigma^2}} + m t + p – T_i \right)^2
]
Использование градиентного спуска
Несмотря на опасения по поводу локальных минимумов, градиентные методы все еще могут быть полезны при должной реализации. Возможно, стоит использовать их в сочетании с методами случайного перезапуска или локальной оптимизации, чтобы исследовать пространство параметров более полноценно.
Альтернативные методики
-
Стратегии оптимизации из пакета SciPy:
- Воспользуйтесь функции
scipy.optimize.minimize
, которая предлагает различные алгоритмы оптимизации, такие как BFGS, Nelder-Mead, L-BFGS-B и другие. Пробуйте каждую из них, чтобы найти наиболее подходящую для вашей задачи.
- Воспользуйтесь функции
-
Эволюционные алгоритмы:
- Такие алгоритмы, как генетические алгоритмы или косящая партия, могут оказаться полезными в условиях сложного ландшафта функции потерь.
-
Нейронные сети:
- Рассмотрите применение нейронных сетей, которые могут обучаться сложным зависимостям благодаря своей гибкости. Использование полносоединенных сетей вкупе с функцией активации может помочь в моделировании зависимостей температурных данных.
-
Байесовская оптимизация:
- Данный подход может особенно хорошо работать, если необходимо оптимизировать функции, параметры которых сложно предугадать, предлагая метод поиска наилучшего набора гиперпараметров.
Заключение
Проблема сложной регрессии может быть решена с помощью нескольких стратегий, учитывающих нелинейную природу и многомерность задачи. Используйте разные подходы в комбинации и проведите тщательное тестирование с целью нахождения наиболее эффективного алгоритма. Полноценная оптимизация требует понимания как специфики данных, так и свойств используемых инструментов.