Модули архитектуры pysatl-mpest#

На следующей диаграмме представлена высокоуровневая диаграмма архитектуры pysatl-mpest:

Select Parameters
  • Ядро (Core): Центральный модуль, который содержит основные классы для построения смеси и распределения. Ключевые компоненты:

    • MixtureModel — класс, представляющий саму модель смеси, который управляет компонентами и их весами.

    • Parameter — дескриптор для удобного определения и валидации параметров в классах распределений.

  • Распределения (Distributions): Модуль содержит конкретные реализации непрерывных вероятностных распределений (например, нормальное, экспоненциальное и т.д.), которые могут быть компонентами смеси. Каждый класс в этом модуле наследуется от ContinuousDistribution и реализует его методы.

  • Оценщики (Estimators): Модуль, содержащий алгоритмы для оценки параметров смешанной модели. Это основной интерфейс для пользователя. Оценщики делятся на два типа:

    • Итеративные (Iterative): Реализуют пошаговые алгоритмы, такие как EM. Ключевым классом здесь является Pipeline, который позволяет гибко конструировать процесс оценки из отдельных шагов (PipelineStep), критериев останова (Breakpointer) и стратегий удаления компонент (Pruner).

    • Прямые (Direct): Реализуют неитеративные методы оценки, например, основанные на методе моментов для всей смеси сразу.

  • Стратегии (Strategies): Определяют конкретную логику вычисления параметров для отдельной компоненты в рамках одного шага итеративного алгоритма (например, М-шага). Благодаря использованию механизма @singledispatch, для каждой компоненты можно задать свою, наиболее эффективную аналитическую или численную стратегию оценки (например, через Q-функцию или метод моментов), что делает систему легко расширяемой.

  • Оптимизаторы (Optimizers): Предоставляют общие численные методы оптимизации. Они используются стратегиями в тех случаях, когда для оценки параметров компоненты нет аналитического решения. Также могут использоваться напрямую некоторыми оценщиками (например, в MLE для прямой максимизации правдоподобия всей смеси).

  • Инициализаторы (Initializers): Вспомогательный модуль, который отвечает за начальную инициализацию параметров смеси перед запуском основного алгоритма оценки. Качественная инициализация может значительно ускорить сходимость и улучшить итоговый результат.

  • Выбор числа компонент (Component Number): Модуль, предоставляющий инструменты для одной из самых важных задач в моделировании смесей — определения оптимального количества компонент.