# Дерево алгоритмов
Основным понятием, являющимся центром всей архитектуры модуля алгоритмов, является "дерево алгоритмов", показывающее то, как система выполняет пошаговый процесс оценки параметров: от предварительной настройки до выбора и выполнения одного из доступных семейств алгоритмов.
```{image} ./_static/Algo-tree.png
:alt: Select Parameters
:width: 500px
:align: center
```
Процесс можно разбить на следующие логические этапы:
1. **Начало и предварительная настройка:**
- Процесс начинается с получения входных данных (выборка, для которой мы хотим оценить смесь).
- Перед запуском основного алгоритма выполняются два ключевых подготовительных шага, которые предоставляют начальные условия:
- **Estimate number of components (Оценка числа компонент):** Определение предполагаемого количества компонент в смеси.
- **Initialize initial guess (Инициализация начального приближения):** Задание стартовых значений параметров для алгоритмов.
2. **Выбор семейства алгоритмов (Точка ветвления):**
- На основе конфигурации или выбора пользователя, система переходит к одному из трех основных семейств алгоритмов (обозначено ромбом). Это ключевая точка, обеспечивающая гибкость системы.
3. **Исполнение алгоритма:**
- **Ветвь EM-like (EM-подобные алгоритмы):**
- Представляет итеративные алгоритмы, основанные на максимизации ожидания.
- Классический цикл состоит из двух шагов: **E-step** (Expectation) и **M-step** (Maximization), которые повторяются до сходимости.
- **Ветвь Monte Carlo (Методы Монте-Карло):**
- Представляет алгоритмы, основанные на стохастическом сэмплировании (например, **MCMC**).
- Внутренняя структура этих методов пока что не рассматривается и здесь обозначена многоточием (...)
- **Ветвь Forward estimation (Прямое оценивание):**
- Представляет неитеративные методы.
- Примерами таких методов являются **MLE** и **Метод моментов**.
## EM-like
Как было показано в общей архитектуре "дерева алгоритмов", одной из ключевых стратегий оценки является EM-like. Данная диаграмма детализирует внутреннюю структуру этого итеративного процесса.
```{image} ./_static/EM-like.png
:alt: Select Parameters
:width: 700px
:align: center
```
Процесс состоит из двух фундаментальных шагов, выполняемых последовательно в цикле: **E-step** (шаг ожидания) и **M-step** (шаг максимизации):
1. **E-step (Шаг ожидания):**
- **Вход:** На вход шага поступает текущее состояние модели смеси (Mixture).
- **Задача:** Основная задача этого шага — вычислить "ответственность" (responsibilities) каждой компоненты смеси за каждую точку данных. По сути, это оценка скрытых (latent) переменных — вероятностей того, что $i$-ая точка данных принадлежит $k$-ой компоненте.
- **Выход:** Результатом являются вычисленные "ответственности", которые вместе с исходными данными передаются на следующий шаг.
2. **M-step (Шаг максимизации):**
- **Вход:** На вход поступают данные и вычисленные на E-шаге "ответственности".
- **Задача:** Цель этого шага — обновить параметры $\Theta, \Omega$ модели смеси.
- **Архитектурная особенность:** параметры компонент оцениваются независимо и параллельно. Для каждой компоненты можно указать собственные оценки стратегий а так же выбрать параметры, которые будут оценены. Таким образом можно для некоторых компонент оценить сначала один параметр, потом другой.
- **Доступные стратегии**:
- Q-function
- Moments
- L-moments
- TL-moments
- LQ-moments
3. **Завершение итерации:**
- **Выход:** На выходе M-шага мы получаем обновленную модель смеси (Mixture).
- Эта обновленная модель затем используется как входная для следующей итерации E-шага. Цикл "E-step -> M-step" повторяется до тех пор, пока не будет достигнут критерий останова. В конце каждой итерации происходит "pruning" смеси, отсекая ненужные компоненты (например те, которые вносят почти нулевой вклад в смесь).
## Monte Carlo
Пока что не рассматривались.
## Forward estimation
Эта ветвь объединяет неитеративные методы оценки параметров смеси. В отличие от EM-алгоритмов, которые уточняют параметры шаг за шагом, методы прямого оценивания вычисляют их напрямую на основе свойств выборки.
Основными представителями этого семейства являются **Метод Максимального Правдоподобия (MLE)** и **Метод Моментов (Method of Moments)**.
#### **Метод Максимального Правдоподобия (MLE)**
**Идея:** Метод заключается в поиске таких параметров модели ($\Theta$ и $\Omega$), при которых наблюдаемые данные являются наиболее "вероятными".
**Процесс:**
1. **Формирование функции правдоподобия:** Для смеси распределений функция правдоподобия $L(\Theta, \Omega~|~ x)$ строится на основе функции плотности $f(x ~|~ \Theta, \Omega)$.
2. **Максимизация:** Находится максимум логарифма этой функции.
#### **Метод Моментов (MoM)**
Пока что не рассматривался.