Занятие 10. Символьная регрессия • • • • Краткое содержание Понятие символьной регрессии Синтаксические деревья и обратная польская запись Понятие генетического алгоритма Символьная регрессия: практический пример Символьная регрессия - метод построения регрессионных моделей путём перебора суперпозиций заранее заданного набора функций Достоинства: 1. Возможно использовать в том случае, когда неизвестен вид модели Недостатки: 1. Ресурсоёмкость 2. Нередко полученные модели избыточно сложны Для поиска оптимальной модели применяют так называемые генетические алгоритмы. Привычная для нас запись формул сложна и неудобна для использования в генетических алгоритмах (из-за разного приоритета операций, скобок и т.п.) Синтаксическое дерево 𝒚= • Обычно получают в ходе синтаксического анализа формул • Не требуется задание приоритета операций в самом дереве • Расчёт с помощью рекурсии (т.е. спуск по поддеревьям) 𝒙𝟐 − 𝟑𝒙 + 𝟐 + − 𝟐 ^ 𝒙 ∗ 𝟐 𝟑 𝒙 Обратная польская запись Обратная польская (постфиксная) запись 3 5 + 2 * 6 7 + 8 9 - / - Традиционная (инфиксная) запись 2*(3+5) – (6+7)/(8-9) Вычисление выражения Вычисление выражения Вход Стек 3 5 + 2 * 6 7 + 8 9 - / 3 5 Вход Стек + 2 * 6 7 + 8 9 - / 8 2 Вход Стек * 6 7 + 8 9 - / 16 6 7 Вход Стек + 8 9 - / 16 13 8 9 Вход Стек - / 16 13 -1 Вход Стек / 16 -13 Вход Стек 29 3+5 = 8; 8*2 = 16 6+7 = 13; 8-9 = -1 13/-1 = -13; 16 – (-13) = 29 Особенности обратной польской записи: • У операций отсутствует приоритет • Не нужны скобки • Все операции записываются единообразно Особенности работы со стеком 1. Новые значения добавляются на его вершину 2. Операции берут значения с вершины стека и помещают результат на вершину Генетические алгоритмы Генетические алгоритмы – алгоритмы нелинейной оптимизации. Ключевые характеристики: • Работа с большим количеством потенциальных решений («популяцией») • Использование целевой функции для отбора членов популяции • Получение новых членов популяции операциями «скрещивания» (комбинированием) и «мутациями» (случайные изменения) Ср. с процессом эволюции в живой природе (идея генетического алгоритма была взята именно из биологии) Генерация исходной (случайной) популяции Отбор части популяции с использованием целевой функции ДА Желаемый результат достигнут? НЕТ Вернуть результат Получение недостающей части популяции скрещиванием и мутациями Пример символьной регрессии Базовые операции Скрещивание Поместить в стек x Поместить в стек число Сложение и вычитание Умножение и деление (в виде 𝑥/(𝑦 + 𝛿)) 5. Возведение в степень (в виде 𝑥 𝑦) 6. Унарный минус Шаг 1. Взять два случайных члена популяции Шаг 2. Разделить каждое выражение на две части и поменять их местами Внимание! Они должны возвращать корректный результат при любых входных данных! Шаг 3. Внести случайные изменения («мутации» в коэффициенты и операции) 1. 2. 3. 4. Члены популяции Выражения в обратной польской записи A B + C D C D / B A Результат A B + C / C D D + * + * => (A+B)*(C+D) ^ + => (C/D)+B^A B A ^ + => (A+B)/C+B^A => C*(D+D) Функция приспособленности 𝑅𝑆𝑆 = 𝑦𝑖 − 𝑦𝑖 𝑖 2 Пример символьной регрессии 𝑦 = 𝑥 2 − 2𝑥 + 3 Результат регрессии X [-1.0409] + U- [2.0115] ^ [3.8315] [0.3417] ^ [0.6995] / [0.6995] ^ + Упрощенный результат регрессии (X – 1.0409)^2.0115 + (3.8315^0.3417)^0.6995/0.6995 = = (X – 1.0409)^2.0115 + 1.5825