# Модули архитектуры pysatl-mpest ```{toctree} :maxdepth: 2 :caption: Содержание раздела: :hidden: :titlesonly: core distributions estimators/index components_number/index initializers optimizers strategies ``` На следующей диаграмме представлена высокоуровневая диаграмма архитектуры pysatl-mpest: ```{image} ../_static/highlevel-module.png :alt: Select Parameters :width: 900px :align: center ``` - **Ядро (Core):** Центральный модуль, который содержит основные классы для построения смеси и распределения. Ключевые компоненты: - **MixtureModel** — класс, представляющий саму модель смеси, который управляет компонентами и их весами. - **Parameter** — дескриптор для удобного определения и валидации параметров в классах распределений. - **Распределения (Distributions):** Модуль содержит конкретные реализации непрерывных вероятностных распределений (например, нормальное, экспоненциальное и т.д.), которые могут быть компонентами смеси. Каждый класс в этом модуле наследуется от `ContinuousDistribution` и реализует его методы. - **Оценщики (Estimators):** Модуль, содержащий алгоритмы для оценки параметров смешанной модели. Это основной интерфейс для пользователя. Оценщики делятся на два типа: - **Итеративные (Iterative):** Реализуют пошаговые алгоритмы, такие как EM. Ключевым классом здесь является `Pipeline`, который позволяет гибко конструировать процесс оценки из отдельных шагов (`PipelineStep`), критериев останова (`Breakpointer`) и стратегий удаления компонент (`Pruner`). - **Прямые (Direct):** Реализуют неитеративные методы оценки, например, основанные на методе моментов для всей смеси сразу. - **Стратегии (Strategies):** Определяют конкретную логику вычисления параметров для *отдельной компоненты* в рамках одного шага итеративного алгоритма (например, М-шага). Благодаря использованию механизма `@singledispatch`, для каждой компоненты можно задать свою, наиболее эффективную аналитическую или численную стратегию оценки (например, через Q-функцию или метод моментов), что делает систему легко расширяемой. - **Оптимизаторы (Optimizers):** Предоставляют общие численные методы оптимизации. Они используются стратегиями в тех случаях, когда для оценки параметров компоненты нет аналитического решения. Также могут использоваться напрямую некоторыми оценщиками (например, в **MLE** для прямой максимизации правдоподобия всей смеси). - **Инициализаторы (Initializers):** Вспомогательный модуль, который отвечает за начальную инициализацию параметров смеси перед запуском основного алгоритма оценки. Качественная инициализация может значительно ускорить сходимость и улучшить итоговый результат. - **Выбор числа компонент (Component Number):** Модуль, предоставляющий инструменты для одной из самых важных задач в моделировании смесей — определения оптимального количества компонент.