Привет, Хаброжители! Сегодня мы поделимся с вами отрывком из книги: «Современная бизнес‑аналитика. Увеличьте ценность данных с помощью Python и R». Статья посвящена ModelOps — набору практик для эффективного развертывания и эксплуатации моделей машинного обучения. Вы узнаете, как организовать полный жизненный цикл модели: от оценки и мониторинга до переобучения. В материале приведены практические примеры создания приложений для пакетной и онлайн‑оценки с помощью R Shiny и Python Streamlit, а также дашборда для мониторинга производительности в реальном времени.
ModelOps (операции с моделями, или их эксплуатация) — набор практик, нацеленных на надежное и эффективное развертывание и поддержание аналитических моделей машинного обучения в реальных приложениях. Мало разработать точную и надежную модель — нужно еще успешно ее развернуть в производственной среде, для чего необходимо учесть множество нюансов эксплуатации. Суть в следующем: если аналитическая модель не развернута или не используется, организация не получает от нее никакой выгоды.
Обзор ModelOps
Надежная работа моделей в технических производственных средах обеспечивается через наблюдение их производительности, выявление аномалий и при необходимости запуск нового цикла обучения.
Техническая производственная среда — это операционная инфраструктура, в которой развертываются и выполняются программные приложения или аналитические модели для использования в реальных условиях. Она включает аппаратное и программное обеспечение, сети и конфигурации, необходимые для непрерывной работы и эффективного функционирования этих приложений. Для внедрения модели в технической производственной среде бизнесаналитикам может потребоваться сотрудничество с техническими командами. Рассмотрим компоненты этой среды.
Вычислительные ресурсы
Достаточная вычислительная мощность и объем памяти для эффективного функционирования модели, обработки больших наборов данных и поддержки одновременных запросов пользователей.
Программная среда
Программный стек, необходимый для запуска модели, включая языки программирования, библиотеки, фреймворки и среды выполнения, такие как Python, R, TensorFlow или PyTorch. Надежные конвейеры данных для приема, предварительной обработки и преобразования входных данных, необходимых для модели. Сюда входят процессы извлечения данных, очистки, нормализации и разработки новых признаков.
Инфраструктура для внедрения модели
Система для размещения и внедрения обученной модели конечными пользователями или приложениями, часто реализуемая с использованием таких технологий, как REST API, микросервисы или платформы бессерверных вычислений.
Мониторинг и ведение журнала
Механизмы для мониторинга производительности и поведения модели в режиме реального времени, включая такие показатели, как точность, задержка, пропускная способность и использование ресурсов. Ведение журналов необходимо для регистрации событий, ошибок и отладочной информации.
Безопасность и соответствие требованиям
Меры по защите конфиденциальных данных, предотвращению несанкционированного доступа и соблюдению соответствующих нормативных требований и отраслевых стандартов. Сюда входят шифрование, контроль доступа, журналы аудита и методы сохранения конфиденциальности.
Развертывание и управление версиями
Процессы и инструменты для развертывания новых версий модели в рабочей среде, управления зависимостями и обеспечения обратной совместимости. Контроль версий крайне важен для отслеживания изменений и обеспечения возможности отката к предыдущей версии при необходимости.
ModelOps помогает поддерживать точность и эффективность модели с течением времени. Кроме того, он позволяет внедрять модели в больших масштабах, что дает организациям возможность использовать предиктивную аналитику для больших наборов данных и сложных систем. Эффективные конвейеры данных создают условия для гибкой разработки и развертывания моделей, позволяя командам быстро вносить изменения и легко внедрять обновленные версии. Наконец, ModelOps способствует постоянному совершенствованию, снижению рисков и оптимизации распределения ресурсов. В целом ModelOps необходим для того, чтобы максимально эффективно использовать инвестиции в машинное обучение, обеспечивать надежность и масштабируемость внедренных моделей, а также стимулировать непрерывное внедрение инноваций и совершенствование процессов принятия решений на основе данных.
Процессы ModelOps
ModelOps включает в себя ряд взаимосвязанных процессов, направленных на управление аналитическими моделями на протяжении всего их жизненного цикла, от разработки до развертывания и сопровождения.
Оценка модели
Подразумевает применение обученных моделей к новым данным для создания прогнозов или классификаций. Оценка может выполняться в режиме реального времени или в режиме пакетного прогнозирования и является важным этапом внедрения моделей машинного обучения для принятия решений.
Мониторинг модели
Предполагает непрерывное отслеживание производительности и поведения внедренных моделей в производственных средах. Сюда входит отслеживание ключевых показателей производительности, выявление аномалий или отклонений в поведении моделей, а также отправка оповещений или принятие мер при обнаружении проблем.
Обучение моделей заново
Это процесс обновления моделей машинного обучения с использованием новых данных для обеспечения их актуальности и точности в долгосрочной перспективе. Может включать в себя периодическое дообучение по заранее установленному графику, в ответ на определенные события или изменения в распределении данных.
Создание итогового отчета
Включает в себя подготовку подробных отчетов, в которых обобщаются результаты работы моделей машинного обучения, а также аналитические данные и выводы. Такие отчеты предоставляют заинтересованным сторонам ценную информацию об эффективности моделей, их влиянии на бизнес и областях, требующих улучшения.
Далее мы рассмотрим каждый из этих процессов более подробно, начиная с оценки моделей.
Оценка моделей
Оценка моделей — это процесс использования обученной аналитической модели для прогнозирования или получения аналитических данных на основе новых, ранее не встречавшихся данных. Она происходит после того, как модель обучается на исторических или размеченных данных и внедряется в производственной среде для применения в реальных условиях. Оценка начинается с модели, которая была обучена и принята заинтересованными сторонами. Модель разрабатывается на основе исторических данных для выявления закономерностей, взаимосвязей или классификаций, имеющих отношение к проблемной области. На этом этапе обучения используется обучение с учителем, без учителя или с подкреплением.
После того как модель будет принята заинтересованными сторонами по результатам оценки (см. главу 6), ее развертывают в производственной среде, где она может получать новые входные данные и генерировать прогнозы или аналитические выводы. Такое развертывание может включать в себя настройку API, микросервисов или конвейеров пакетной обработки для предоставления прогнозов конечным пользователям или приложениям.
Во время оценки внедренная модель получает входные данные из различных источников, таких как пользовательские взаимодействия, показания датчиков или запросы к базе данных. Они обычно представляют собой признаки или переменные, для анализа или прогнозирования которых модель была обучена. На основе полученных входных данных развернутая модель применяет изученные закономерности или правила для создания прогнозов, классификаций или других результатов. Например, модель может предсказывать отток клиентов, классифицировать изображения, рекомендовать товары или выявлять аномалии в данных датчиков.
Прогнозы или выводы модели передаются в соответствующее место назначения, например в пользовательский интерфейс, базу данных, панель управления или другое приложение. Эти результаты могут использоваться для принятия решений, запуска автоматических действий или предоставления ценной информации заинтересованным сторонам. После составления прогнозов эффективность модели определяется по тому, насколько хорошо ее прогнозы соответствуют фактическим данным или ожидаемым результатам. Такая оценка помогает выявить области, в которых модель можно улучшить или доработать, а также внести коррективы в процесс ее обучения в будущих итерациях.
В целом оценка — это важный этап в жизненном цикле аналитической модели, который позволяет организациям использовать прогностические возможности модели для принятия бизнес‑решений, оптимизации процессов и создания ценности для заинтересованных сторон.
Метод оценки модели могут определять различные требования. Одним из таких требований является соблюдение сроков выдачи прогнозов, которые можно обеспечить с помощью пакетной оценки или оценки в реальном времени. В первом случае прогнозы генерируются для большого объема данных одновременно. Этот подход подходит для сценариев обработки данных в офлайн‑режиме, где не требуется мгновенный отклик модели на входные данные, таких как задачи пакетной обработки или периодическое обновление модели. Оценка в реальном времени предполагает генерацию прогнозов или выводов в режиме реального времени по мере поступления новых данных. Этот метод подходит для приложений, требующих немедленной реакции или обработки с минимальной задержкой, таких как системы онлайн‑рекомендаций или обнаружения мошенничества.
Оценка моделей в R: использование Shiny‑приложений для оценки в реальном времени
Существует несколько подходов к реализации оценки моделей в R. Один из популярных — использование Shiny‑приложений, которые можно адаптировать для работы как в реальном времени, так и в пакетном режиме. Shiny — это пакет R для создания интерактивных веб‑приложений непосредственно на основе R‑скриптов. Он позволяет пользователям создавать веб‑дашборды для визуализации данных и интерактивные инструменты без необходимости знать HTML, CSS или JavaScript. С помощью Shiny пользователи могут применить свои знания в области программирования на R для создания динамических и интерактивных веб‑приложений, которыми легко делиться и к которым просто получить доступ из браузера.
Shiny сочетает вычислительную мощь R с интерактивностью веб‑приложений. Разработчики могут создавать элементы пользовательского интерфейса (такие как ползунки, кнопки и поля для ввода текста) и подключать их к коду R для получения динамических результатов. Приложения Shiny можно развернуть локально или на веб‑сервере, что делает их доступными для широкой аудитории.
Использование Shiny Apps для оценки результатов в реальном времени может включать разработку веб‑приложения Shiny на R, которое принимает входные данные от пользователей, обрабатывает их пакетами и генерирует прогнозы с помощью обученной модели. Shiny обеспечивает интерактивную визуализацию данных и обновление в режиме реального времени, что делает его удобным для развертывания приложений пакетной оценки. Для пакетных операций можно разработать веб‑приложение с реактивными элементами, которые постоянно обновляют прогнозы по мере того, как пользователи вводят новые данные. Модель реактивности Shiny позволяет мгновенно обновлять данные и обеспечивает взаимодействие между пользователем и системой, что делает ее подходящей для создания интерактивных информационных панелей или приложений с возможностью оценки в режиме реального времени.
Рассмотрим пример. Для простоты предположим, что мы создаем модель бинарной классификации с помощью логистической регрессии. Ниже приведен пример кода на языке R, который можно использовать для разработки приложения Shiny, принимающего входные данные от пользователей, обрабатывающего их пакетами и генерирующего прогнозы с помощью предварительно обученной модели:
library(shiny) library(dplyr) # Определяем интерфейс пользователя ui <- fluidPage( titlePanel("Batch Prediction App"), sidebarLayout( sidebarPanel( fileInput("file", "Upload CSV file", accept = c(".csv")), br(), actionButton("process", "Process Data"), br(), textOutput("status") ), mainPanel( tableOutput("data_preview"), tableOutput("predictions") ) ) ) # Определяем серверную логику server <- function(input, output) { # Реактивные значения хранят данные и предсказания модели data <- reactiveVal(NULL) predictions <- reactiveVal(NULL) # Читаем загруженный CSV-файл observeEvent(input$file, { req(input$file) df <- read.csv(input$file$datapath) if(!is.null(df)) { data(df) output$data_preview <- renderTable({ head(data(), 5) }) } }) # Обрабатываем данные и генерируем предсказания observeEvent(input$process, { if (!is.null(data())) { # Фиктивное предсказание (замените фактическим) predictions(data() %>% mutate(prediction = sample(c(0, 1), nrow(.), replace = TRUE))) output$predictions <- renderTable({ head(predictions(), 5) }) output$status <- renderText({ "Data processed and predictions generated." }) } else { output$status <- renderText({ "Please upload a CSV file first." }) } }) } # Запускаем приложение shinyApp(ui = ui, server = server)
Интерфейс состоит из панели заголовка («Batch Prediction App»), элемента ввода данных для загрузки CSV‑файла, кнопки для обработки данных и области вывода для отображения сообщений о состоянии, предварительного просмотра данных и прогнозов.
Панель sidebarPanel включает функцию загрузки файла (fileInput), кнопку (actionButton) для запуска обработки и область сообщения о состоянии (textOutput).
На mainPanel отображаются две таблицы: одна для предварительного просмотра загруженных данных (tableOutput(«data_preview»)) и другая для отображения прогнозов (tableOutput(«predictions»)).
reactiveVal() используется для хранения и обновления загруженных данных (data) и прогнозов (predictions).
При загрузке CSV‑файла приложение считывает его и отображает первые пять строк в разделе Data Preview.
При нажатии кнопки Process Data приложение проверяет, загружены ли данные. Если они доступны, приложение выполняет фиктивный прогноз, добавляя столбец с прогнозом в набор данных. Этот столбец генерируется случайным образом и содержит значения 0 или 1 для каждой строки.
Функция mutate() используется для добавления в набор данных столбца с прогнозами, содержащего случайные значения 0 или 1 (в качестве заполнителей). В реальном приложении эта часть будет заменена актуальными прогнозами, полученными с помощью модели машинного обучения.
Затем выводятся первые пять строк с прогнозами, а в сообщении о статусе указывается, что прогнозы были сгенерированы. Если файл не загружен, приложение выводит запрос с просьбой сначала загрузить файл.
Процесс работы с приложением выглядит следующим образом.
Пользователь загружает CSV‑файл.
Приложение выводит первые пять строк файла.
После нажатия кнопки Process Data приложение добавляет фиктивные прогнозы и выводит их вместе с исходными данными.
Структура CSV‑файла, необходимого для загрузки данных, должна соответствовать следующим требованиям.
В файле должны быть соответствующие признаки (столбцы), необходимые для модели прогнозирования. Каждый столбец представляет собой переменную, например числовую или категориальную, которую ожидает модель прогнозирования. Если это модель классификации, то в этих столбцах будут указаны признаки, которые нужны для прогнозирования.
CSV‑файл должен содержать строку заголовка с понятными названиями столбцов, соответствующими данным, которые ожидает получить приложение или модель машинного обучения. Например, если ваша модель ожидает получить такие данные, как возраст, доход и образование, первая строка должна содержать эти заголовки.
Каждая последующая строка должна содержать значения, соответствующие данным в заголовке. Каждая строка представляет собой наблюдение или пример данных.

Поскольку это приложение предназначено для пакетного прогнозирования, CSV‑файл не должен содержать целевую переменную (например, метки), которую вы хотите спрогнозировать. Приложение добавит прогнозируемые значения после обработки. На рис. 8.1–8.3 показан пользовательский интерфейс приложения Shiny, где отображаются экраны для загрузки файла, просмотра загруженного файла и просмотра прогнозов.


Таким образом, это приложение позволяет пользователям загружать CSVфайл, обрабатывать данные (в нашем случае генерировать фиктивные прогнозы) и отображать результаты в табличном формате. Этот код создает приложение Shiny с боковой панелью, на которой можно загрузить CSV‑файл с входными данными. После загрузки файла пользователи могут нажать кнопку Process Data, чтобы сгенерировать прогнозы с помощью предварительно обученной модели. В этом примере прогнозы представляют собой фиктивные значения, сгенерированные случайным образом, и отображаются на основной панели. Чтобы использовать этот код в практических целях, замените фиктивный код прогнозирования реальной логикой прогнозирования вашей модели.
Оценка моделей на Python: развертывание моделей с помощью Streamlit
Как и в случае с R, Python можно использовать несколькими способами для оценки моделей. Один из популярных подходов — применение Streamlit. Streamlit — это мощная и удобная платформа, разработанная специально для создания интерактивных приложений для анализа данных и машинного обучения. Она упрощает процесс разработки интуитивно понятных пользовательских интерфейсов, позволяя оценивать модели машинного обучения как в пакетном режиме, так и в режиме реального времени с минимальными усилиями.
С помощью Streamlit вы можете быстро создать интерфейс, который позволит пользователям загружать данные, взаимодействовать с моделью и просматривать прогнозы в режиме реального времени. Одним из ключевых преимуществ Streamlit является его простота: для создания полнофункциональных приложений вам не нужны глубокие знания в области веб‑разработки. Вместо этого вы можете сосредоточиться на интеграции моделей машинного обучения и получении аналитических данных, а Streamlit позаботится о пользовательском интерфейсе и представлении:
import streamlit as st import pandas as pd import numpy as np # Пример загрузки обученной модели (замените своей моделью) # from joblib import load # model = load('path_to_your_model.joblib') # Функция для предсказания (замените логикой предсказания вашей модели) def predict(data): # Пример: замените логикой предсказания вашей модели # predictions = model.predict(data) return {"result": "Prediction result based on input data"} # Streamlit-приложение с пользовательским интерфейсом st.title('Real-time Model Scoring with Streamlit') st.header('Input Data') uploaded_file = st.file_uploader("Upload your CSV file", type=['csv']) if uploaded_file is not None: # Чтение загруженного CSV-файла input_data = pd.read_csv(uploaded_file) st.write("Input data preview:") st.dataframe(input_data.head()) # Обработка входных данных и осуществление предсказаний моделью if st.button("Make Predictions"): predictions = predict(input_data) st.write("Prediction Results:") st.json(predictions) # Ввод данных для предсказания в режиме реального времени st.header('Real-Time Prediction') user_input = st.text_input("Enter input data for real-time prediction") if st.button("Predict"): # Преобразуем введенные данные в подходящий формат # Пример предполагает одиночный ввод; измените его в соответствии # с требованиями вашей модели data_for_prediction = np.array([user_input]) prediction_result = predict(data_for_prediction) st.write("Prediction Result:") st.json(prediction_result)
Пользователи могут загрузить CSV‑файл, а приложение прочитает и выведет данные. При нажатии кнопки Make Predictions обрабатываются входные данные и выводится прогноз модели.
Пользователи могут вводить данные непосредственно в текстовое поле для получения прогнозов в режиме реального времени. Если нажать кнопку Predict, приложение возвращает результат работы модели.
Простота Streamlit в сочетании с возможностью бесшовной интеграции с моделями машинного обучения делает его практичным решением для бизнесаналитиков или специалистов по обработке данных, которые хотят внедрять свои модели в интерактивном режиме. Независимо от того, оцениваете ли вы данные в пакетном режиме или генерируете прогнозы в реальном времени, Streamlit предоставляет простую в использовании платформу для создания эффективных приложений на основе машинного обучения.
Мониторинг моделей
Мониторинг моделей — важнейший компонент ModelOps, который предполагает непрерывную оценку производительности и поведения развернутых моделей машинного обучения в производственных средах. Важно помнить, что модели создаются на основе статических обучающих данных, которые представляют собой срез на определенный момент времени. По мере развития организации данные меняются. Например, с появлением новых товаров и услуг, предлагаемых клиентам, структура данных изменяется, в результате чего модели могут перестать давать точные прогнозы или работать так же эффективно, как раньше.
Мониторинг моделей помогает обеспечить их надежность, позволяет выявлять проблемы на ранней стадии, снижает риски и оптимизирует производительность. Это также помогает выявлять отклонения в работе модели, гарантируя, что она будет продолжать выдавать точные и надежные прогнозы с течением времени. Мониторинг включает в себя анализ показателей для раннего выявления таких проблем, как дрейф данных, концептуальный дрейф или ухудшение производительности модели. Это позволяет своевременно принимать меры и обслуживать модели. Эффективный мониторинг снижает риск принятия ошибочных решений или действий на основе неточных прогнозов, тем самым защищая от потенциальных финансовых, репутационных или нормативных рисков. Непрерывный мониторинг дает представление о том, в каких областях модель можно улучшить или оптимизировать, что позволяет организациям повышать общую производительность и эффективность внедренных моделей.
Ключевые метрики и индикаторы для мониторинга производительности моделей
Эффективный мониторинг моделей основан на отслеживании и анализе различных метрик и индикаторов, отражающих производительность, поведение и работоспособность развернутых решений. Хотя ключевые метрики могут различаться в зависимости от модели, к популярным индикаторам для мониторинга производительности моделей относятся следующие.
Метрики точности и ошибок
Такие показатели, как точность, достоверность, полнота, F1-мера и среднеквадратическая ошибка, дают представление о точности прогнозирования и частоте ошибок модели.
Дрейф данных
Отслеживание изменений в распределении или характеристиках входных данных по сравнению с обучающими указывает на потенциальные сдвиги в базовом процессе генерации данных.
Дрейф концепций
Оценка изменений во взаимосвязи между входными признаками и целевыми переменными с течением времени может указывать на снижение актуальности или применимости модели.
Деградация модели
Обнаружение снижения производительности модели или ее прогностической силы с течением времени (возможно, из‑за изменений в среде данных или устаревания модели).
Методы автоматического мониторинга моделей
Когда модели запущены в эксплуатацию, важно автоматизировать их мониторинг. Автоматизация процессов мониторинга моделей упрощает обнаружение и анализ аномалий в работе, обеспечивая своевременное реагирование и вмешательство. Для уведомления заинтересованных сторон о проблемах с производительностью, которые могут потребовать внимания, используются различные методы: оповещения на основе пороговых значений, статистический анализ, применение разнообразных моделей и других подходов к разработке.
Оповещения на основе пороговых значений предусматривают установку заранее определенных пороговых значений для ключевых показателей и отправку уведомлений в случае их превышения, что говорит о потенциальных проблемах или отклонениях.
Статистический анализ подразумевает использование различных методов для выявления существенных изменений или аномалий в показателях эффективности модели, таких как контрольные графики или анализ временных рядов. Можно также обучить дополнительные модели машинного обучения для обнаружения аномалий или отклонений в прогнозах с помощью алгоритмов выявления выбросов. Кроме того, рекомендуется интегрировать мониторинг модели в конвейеры непрерывной интеграции и развертывания (CI/CD), чтобы автоматизировать процесс в рамках жизненного цикла модели.
Все эти методы предполагают использование визуальной панели управления для отслеживания и визуализации эффективности модели. Рассмотрим, как это можно сделать на R и Python.
Реализация на R: создание дашбордов с помощью shinydashboard
В R есть фреймворк Shiny Dashboard, который позволяет пользователям создавать интерактивные дашборды для визуализации и мониторинга показателей эффективности моделей на веб‑страницах. Чтобы создать дашборд для мониторинга, необходимо выполнить следующие ключевые операции: сбор данных, разработку дашборда, определение показателей и настройку механизмов оповещения. Вот шаги по созданию дашборда для мониторинга моделей.
Сбор данных
Сбор показателей эффективности модели и соответствующих источников данных, таких как результаты прогнозирования, распределение входных данных и результаты обнаружения отклонений.
Дизайн дашборда
Разработка интерфейса дашборда с использованием компонентов Shiny Dashboard, включая виджеты, графики и таблицы, для визуализации ключевых показателей и индикаторов.
Отслеживание показателей
Реализация функции динамического обновления компонентов дашборда с помощью показателей эффективности модели в реальном времени или при периодическом обновлении.
Механизмы оповещения
Интеграция механизмов оповещения в дашборд для уведомления заинтересованных сторон о критических событиях или отклонениях в работе модели.
В следующем примере кода показана простая настройка Shiny Dashboard, включая сбор данных, динамические обновления, визуализацию и механизмы оповещения. Предполагается, что у вас есть сохраненные показатели эффективности модели, которые, возможно, регулярно обновляются с помощью периодически запускаемых скриптов или потоков данных в реальном времени.
Вот базовая настройка в R:
# Устанавливаем Shiny и shinydashboard, если они еще не установлены if (!require("shiny")) install.packages("shiny") if (!require("shinydashboard")) install.packages("shinydashboard") if (!require("dplyr")) install.packages("dplyr")
Далее разработаем серверную логику и пользовательский интерфейс, используя shinydashboard:
library(shiny) library(shinydashboard) library(dplyr) # Генерируем искусственные данные generate_data <- function() { data.frame( Time = Sys.time(), Accuracy = runif(1, 0.8, 1), Loss = runif(1, 0, 0.2) ) } # Пользовательский интерфейс ui <- dashboardPage( dashboardHeader(title = "Model Performance Dashboard"), dashboardSidebar(disable = TRUE), dashboardBody( fluidRow( box( title = "Accuracy", status = "primary", solidHeader = TRUE, plotOutput("accuracyPlot") ), box( title = "Loss", status = "warning", solidHeader = TRUE, plotOutput("lossPlot") ) ) ) ) # Серверная логика server <- function(input, output, session) { # Добавлен обязательный аргумент 'session' # Реактивное выражение для генерации новых данных каждые 5 секунд new_data <- reactive({ invalidateLater(5000, session) # Обновление каждые 5 секунд generate_data() }) # График точности модели output$accuracyPlot <- renderPlot({ df <- new_data() # Вызываем реактивное выражение plot(df$Time, df$Accuracy, type = 'o', col = 'blue', ylim = c(0.8, 1), xlab = "Time", ylab = "Accuracy", main = "Model Accuracy Over Time") }) # График потерь модели output$lossPlot <- renderPlot({ df <- new_data() # Вызываем реактивное выражение plot(df$Time, df$Loss, type = 'o', col = 'red', ylim = c(0, 0.2), xlab = "Time", ylab = "Loss", main = "Model Loss Over Time") }) } # Запускаем приложение shinyApp(ui, server)
Этот скрипт имитирует сбор данных, генерируя случайные значения для показателей Accuracy и Loss. В реальном сценарии вы бы заменили generate_data() функцией, которая извлекает обновленные показатели производительности из вашей модели или базы данных.
На панели управления есть два блока с графиками для показателей Accuracy и Loss. Вы можете расширить панель, добавив больше показателей или визуальных компонентов.
Функция reactive() с invalidateLater() используется для обновления панели управления каждые пять секунд, имитируя мониторинг данных в реальном времени.
Хотя базовый скрипт не содержит явных оповещений, вы можете интегрировать условную логику в серверную функцию, чтобы отправлять уведомления (например, по электронной почте или через другой канал связи), когда показатели выходят за пределы допустимых значений.
Рисунок 8.4 показывает пример Shiny Dashboard для мониторинга модели.

Этот код представляет собой базовую структуру. В зависимости от ваших конкретных потребностей и сложности данных вам может потребоваться значительно расширить или изменить его. Для более сложных систем рассмотрите вариант использования продвинутых концепций реактивного программирования и, возможно, подключения дашборда к потокам данных в реальном времени или базам данных.