В предыдущих хабрапостах мы поделились open source инструментом для сравнительного анализа метагеномных данных и рассказали об открытых проектах, которыми занимается наша лаборатория мультиагентных систем.

На этот раз представляем вашему вниманию Process Flow Optimization Tool от Национального центра когнитивных разработок Университета ИТМО.

Фото: Clayton Robbins. Источник: Unsplash.com
Фото: Clayton Robbins. Источник: Unsplash.com

Зачем он нужен

Инструмент позволяет извлечь из лог-данных оптимальную модель процесса — визуализировать его в понятном виде [с отображением главных сценариев исполнения] и — с помощью нахождения мета-состояний — интерпретировать и упростить модель процесса. Целевой аудиторией фреймворка являются не только организации, заинтересованные в аналитике бизнес-процессов as is и улучшении существующих решений в этой нише, но и ученые, работающие в области Process Mining и в целом занимающиеся исследованиями в сфере data science.

Интеллектуальный анализ в целом — перспективный подход к работе с внутриорганизационными рабочими процессами, в частности там, где они нетривиальны, слабо структурированы и вариативны в силу особенностей рода деятельности. Например, присутствия человеческого фактора и отсутствия автоматизации. Допустим как зачастую и обстоят дела в здравоохранении, поэтому здесь есть место для интеллектуального анализа процессов.

Так, Process Flow Optimization Tool уже применили в проектах группы «Цифровое здравоохранение», использовали для формирования признакового пространства для кластеризации пациентов с артериальной гипертензией (АГ) и предсказания их состояния, предложив новые признаки для предсказательной модели, а результаты опубликовали в журнале Computational Science — ICCS 2021. Однако Process Flow Optimization Tool или ProFIT, как его называют разработчики, показал свою валидность не только в сфере здравоохранения, поэтому может быть распространен на все области, где в том или ином виде присутствуют бизнес-процессы.

Как устроен этот инструмент

Модели процесса в ProFIT представляют собой графы прямых зависимостей (directly-follows graphs), где вершины — события (events) или действия (activities), связанные ориентированными дугами. Зелёная вершина обозначает начало процесса и показывает общее число случаев (cases) реализации процесса. Например, один случай — кейс конкретного пациента или работа врача, если посмотреть с другой перспективы. Терминальное состояние процесса, куда идут рёбра от завершающих событий, представлено красной вершиной. Также внутренние вершины и рёбра показывают абсолютные частоты появления событий и переходов между ними в логе. Чем больше абсолютное значение, тем темнее или жирнее выделен элемент.

Изображение: проект ProFIT
Изображение: проект ProFIT

Process Flow Optimization Tool включает в себя идеи алгоритма Fuzzy Miner. Он подходит для неструктурированных процессов и позволяет строить модели на разных уровнях детализации. Граф прямых зависимостей — как выходные данные — допускает присутствие циклов. Они имеют ключевую роль в концепции мета-состояний, о чем мы расскажем далее. Другие особенности решения:

  • Построение процесса за счет обхода в глубину. Суть в том, что майнеры нечётких моделей процесса (fuzzy net) обладают определенным недостатком. С их помощью можно получить «висячие» вершины, тупиковые переходы (deadlocks) и даже несвязанный граф. Поэтому мы добавили в алгоритм двойную проверку: (1) все вершины должны быть потомками начальной (зелёной); (2) все вершины должны быть предками терминальной (красной). Так из начала процесса мы дойдем к любому событию, и из любой внутренней вершины — попадем в конец процесса. Если модель не удовлетворяет этим условиям, добавляем в неё переходы, пока не получим исполнимый процесс.

  • Автоматизация настройки модели процесса. Здесь мы предлагаем доверить алгоритму найти оптимальное решение задачи математической оптимизации, где точность и сложность модели представлены в виде комбинированной целевой функции. Если говорить простыми словами, программа позволяет найти те параметры модели (число вершин и рёбер), которые выводят понятную и точную визуализацию процесса, вместо их ручного подбора.

  • Поиск мета-состояний в процессе и агрегация элементов. Эта идея появилась во время работы над проектом из области здравоохранения, где пациенты были вовлечены в процесс. Рутинный комплекс процедур, который они повторяли несколько раз во время лечения, представляет собой мета-состояние (здоровья, этапа лечения и так далее). Поэтому мы ищем наиболее часто встречающиеся циклы в модели процесса и агрегируем их в одно событие. Таким образом — можем интерпретировать и упростить модель.

От теории к практике

Мы проверили функциональность ProFIT на двух логах:

  • Для дистанционного мониторинга пациентов с АГ — на данных от компании PMT Online. Они содержат события-триггеры на измерения давления пациентов, страдающими артериальной гипертензией. Здесь присутствуют несколько клинических и неклинических типов событий: красная зона (превышение критических уровней), жёлтая зона (превышение целевых уровней), уведомления об отсутствии измерения и так далее.

  • Для процесса возмещения командировочных расходов — данных в рамках BPI Challenge 2020. Они содержат данные по информационному процессу в Технологическом университете Эйндховена за 2017-2018 года.

Сейчас мы работаем с информационной системой центра Алмазова в Санкт-Петербурге. Это — один из крупнейших кардиологических и научных мед. центров в России. Мы используем данные из системы контроля управления, плюс — медицинской информационной системы, чтобы собрать журнал событий по перемещениям и действиям медицинского персонала. Процесс состоит из тысяч разнообразных активностей — например, проведения лабораторных анализов, процедур, перемещений по отделениям и так далее. Такая информация требует подготовки, и пока мы не используем ее в кейсах и демо-примерах.

Общее демо с описанием на русском языке можно посмотреть тут. Чтобы начать использовать ProFIT, достаточно объявить и присвоить переменной экземпляр класса ProcessMap, а затем передать путь к логу в формате CSV/TXT/XES (либо сами данные в виде pandas.DataFrame) через метод set_log. Выглядит это следующим образом:

declarations = "../ProFIT/demo/log_examples/DomesticDeclarations.xes"
pm = ProcessMap()
pm.set_log(FILE_PATH = declarations)
pm.update() # after series of settings

Что дальше

Разработчики фреймворка открыты для обратной связи. В перспективе они рассматривают и другие нотации моделирования, плюс — подготовку веб-интерфейса для этого инструмента. Они считают, что для его полноценной работы необходимо реализовать функционал во всех подклассах Process Mining: а это process discovery (извлечение модели из данных), conformance checking (проверка модели на соответствие логу) и enhancement (оптимизация и улучшение процесса).

Пока проект охватывает первый и частично второй блок. Для третьего — можно найти применение системам ИИ и МО по нахождению и предсказанию узких мест (bottle-necks), количества необходимых ресурсов и так далее. Помимо этого — посмотреть на задачи предсказания следующего события (Predictive process monitoring) и улучшения лог-данных, полученных из не process-aware информационных систем (например, мед. карт пациентов), посредством NLP, онтологий.


Что еще есть у нас в блоге на Хабре:


Комментарии (1)


  1. i_shutov
    13.09.2021 15:50

    Добрый день.
    Поглядел в гит. Похоже, что вы делаете некую модификацию fuzzy. Fuzzy в работах описан достаточно общо и содержит очень спорные предпосылки. Передовая наука ушла далеко вперед.
    Какие планы дальше? Какие алгоритмы планируете реализовать?