Робот анализирует данные, сортируя аномалии в категории: исправить, оставить, флаг.

Создание агента искусственного интеллекта для обнаружения и обработки аномалий во временных рядах данных.

Содержание

Сочетание статистического обнаружения с агентным принятием решений.

Делиться

1bb692badf6ffd0b54804b88727d0712

Введение

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

Обработка аномалий обычно представляет собой серую зону, редко бывает однозначной, но указывает на более глубокие проблемы. Некоторые аномалии являются реальными сигналами, такими как праздники, погодные явления, рекламные акции или вирусные тренды; другие — просто сбои в данных, но на первый взгляд они выглядят одинаково. Чем быстрее мы обнаружим аномалии в данных, тем быстрее сможем принять меры для предотвращения снижения производительности и ущерба.

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

Большинство детекторов на основе машинного обучения выявляют всплески активности, используя Z-баллы, пороговые значения межквартильного размаха или другие статические методы без учета контекста. Благодаря недавним достижениям в области искусственного интеллекта у нас появился лучший вариант для разработки агента обработки аномалий, который анализирует каждый случай. Агент, который обнаруживает необычное поведение, проверяет контекст и решает, следует ли исправить данные, оставить их как реальный сигнал или пометить для проверки.

В этой статье мы шаг за шагом создаём такого агента, который сочетает в себе простое статистическое обнаружение с агентом искусственного интеллекта, выступающим в качестве первой линии защиты данных временных рядов, сокращая ручное вмешательство и сохраняя при этом наиболее важные сигналы. Мы будем обнаруживать и обрабатывать аномалии в данных по COVID-19 с помощью автономного принятия решений, основанного на степени серьёзности аномалии, используя:

  1. Оперативные эпидемиологические данные из API disease.sh.
  2. Статистическое обнаружение аномалий.
  3. Классификация степени тяжести.
  4. Агент искусственного интеллекта на базе GroqCloud, который принимает автономные решения о том, следует ли:
    • Устранить аномалию
    • Сохраните аномалию
    • Отметить аномалию для проверки человеком

Это агентная аналитика принятия решений, а не просто обнаружение аномалий.

Рисунок 1: Реализация агента ИИ для обнаружения аномалий — Изображение предоставлено автором.

Почему одного лишь традиционного метода обнаружения аномалий недостаточно?

Существуют традиционные методы машинного обучения, такие как изолированные леса, предназначенные для обнаружения аномалий, но им не хватает сквозной координации принятия решений. Они не способны достаточно быстро реагировать на них в производственных средах. Мы внедряем агента ИИ, чтобы восполнить этот пробел, преобразуя исходные оценки аномалий в автономные, сквозные решения, динамически принимаемые на основе данных в реальном времени.

Традиционное обнаружение аномалий

Традиционный метод обнаружения аномалий использует конвейерный подход, представленный ниже:

da8a39bb065d723d3c321d326411e4cf

Ограничения традиционного метода обнаружения аномалий

  • Работает со статическими правилами и позволяет вручную устанавливать пороговые значения.
  • Она одномерна и обрабатывает простые данные.
  • Отсутствует контекстное обоснование.
  • Принятие решений, определяемое человеком.
  • Действие, управляемое вручную.

Обнаружение и устранение аномалий с помощью агента искусственного интеллекта.

Обнаружение аномалий агентом ИИ осуществляется в соответствии с конвейерным подходом, представленным ниже:

2d3a19c5a4c7b146353fe0f3ae29ae5c

Почему на практике это работает лучше?

  • Работает с данными в реальном времени.
  • Она многомерна и способна обрабатывать сложные данные.
  • Работает на основе контекстного мышления.
  • Адаптивное и самообучающееся принятие решений.
  • Предпринимайте самостоятельные действия.

Выбор реалистичного набора данных для нашего примера.

Мы используем реальные данные о COVID-19 для выявления аномалий, поскольку они содержат много шума, показывают всплески, а полученные результаты помогают улучшить общественное здравоохранение.

Что мы хотим, чтобы решил ИИ-агент?

Цель состоит в том, чтобы непрерывно отслеживать данные по COVID-19, выявлять аномалии, определять степень их серьезности, а также принимать автономные решения и определять необходимые действия:

  • Отметить аномалию для проверки человеком
  • Устранить аномалию
  • Сохраните аномалию

Источник данных

Для получения данных мы используем бесплатные данные disease.sh в режиме реального времени через API. Этот API предоставляет данные о ежедневном количестве подтвержденных случаев, смертей и выздоровлений. При реализации ИИ-агента мы сосредоточимся на ежедневном количестве случаев, которое идеально подходит для обнаружения аномалий.

Лицензия на данные: В этом руководстве используются исторические данные о количестве случаев COVID-19, полученные через API disease.sh. Базовый набор данных (репозиторий данных по COVID-19 факультета компьютерных наук Университета Джонса Хопкинса) распространяется по лицензии CC BY 4.0, которая разрешает коммерческое использование с указанием авторства. (Дата обращения: 22 января 2026 г.)

Как все эти части складываются воедино?

Архитектура системы обнаружения аномалий в данных по COVID-19 с использованием агента искусственного интеллекта выглядит следующим образом:

d93c9ede0bc2ad44ed46aab6b10c56fe

Пошаговое создание ИИ-агента

Давайте шаг за шагом разберемся, как загрузить данные с помощью disease.sh, обнаружить аномалии, классифицировать их и реализовать агента ИИ, который будет рассуждать и предпринимать соответствующие действия в зависимости от серьезности аномалий.

Шаг 1: Установите необходимые библиотеки.

Первым шагом является установка необходимых библиотек, таких как phidata, groq, python-dotenv, tabulate и streamlit.

pip install phidata pip install groq pip install python-dotenv #библиотека для загрузки файла .env pip install tabulate pip install streamlit

Шаг 2: Настройка файла среды

Откройте свою IDE и создайте папку проекта, а внутри этой папки создайте файл среды «.env» для хранения GROQ_API_KEY.

GROQ_API_KEY=»ваш_ключ_groq_api_здесь»

Шаг 3: Загрузка данных

Прежде чем создавать какого-либо агента, нам нужен источник данных, достаточно зашумленный, чтобы выявлять реальные аномалии, но достаточно структурированный для анализа. Ежедневные данные о количестве случаев COVID-19 хорошо подходят, поскольку они содержат задержки в отчетности, внезапные всплески и изменения режима. Для простоты мы намеренно ограничиваемся одним одномерным временным рядом.

Загрузите данные из скрипта disease.sh, используя URL-адрес запроса, и извлеките дату и количество случаев заболевания за день на основе выбранной страны и количества дней, за которые вы хотите получить данные. Данные преобразуются в структурированный датафрейм путем анализа JSON, форматирования даты и хронологической сортировки.

# ————————————— # ЗАГРУЗКА ДАННЫХ (disease.sh) # ————————————— def load_live_covid_data(country: str , days:int): url = f»https://disease.sh/v3/covid-19/historical/{country}?lastdays={days}» response = requests.get(url) data = response.json()[«timeline»][«cases»] df = ( pd.DataFrame(list(data.items()), columns=[«Date», «Cases»]) .assign(Date=lambda d: pd.to_datetime(d[«Date»], format=»%m/%d/%y»)) .sort_values(«Date») .reset_index(drop=True) ) return df

Шаг 4: Выявление аномалий

Теперь мы будем выявлять аномальное поведение в данных временных рядов COVID-19, обнаруживая внезапные всплески и тенденции быстрого роста. Количество случаев в целом стабильно, а большие отклонения или резкие увеличения указывают на значимые аномалии. Теперь мы будем выявлять аномалии с помощью статистических методов и бинарной маркировки для детерминированного и воспроизводимого обнаружения аномалий. Для обнаружения аномалий рассчитываются два параметра.

  1. Обнаружение всплесков
    • Внезапный всплеск данных выявляется с помощью Z-показателя; если какая-либо точка данных выходит за пределы диапазона Z-показателя, это должно быть аномалией.
  2. Выявление темпов роста
    • Рассчитывается темп роста в сравнении с предыдущим днем; если он превышает 40%, это отмечается как подозрительное событие.

# ————————————— # ОБНАРУЖЕНИЕ АНОМАЛИЙ # ————————————— def detect_anomalies(df): values = df[«Cases»].values mean, std = values.mean(), values.std() spike_idx = [ i for i, v in enumerate(values) if abs(v — mean) > 3 * std ] growth = np.diff(values) / np.maximum(values[:-1], 1) growth_idx = [i + 1 for i, g in enumerate(growth) if g > 0.4] anomalies = set(spike_idx + growth_idx) df[«Anomaly»] = [«YES» if i in anomalies else «NO» for i in range(len(df))] return df

Если обнаружена аномалия по одному из параметров — пику или росту, или по обоим параметрам, — значение параметра «Аномалия» устанавливается в «ДА»; в противном случае — в «НЕТ».

Шаг 5: Классификация степени тяжести

Не все аномалии одинаковы; мы будем классифицировать их как « КРИТИЧНЫЕ », « ПРЕДУПРЕЖДЕНИЕ » или « НЕЗНАЧИТЕЛЬНЫЕ », чтобы направлять решения ИИ-агента. Для классификации серьезности используются фиксированные скользящие окна и пороговые значения на основе правил. Серьезность классифицируется только при наличии аномалии; в противном случае параметры «Серьезность», «Решение агента» и «Действие» в датафрейме устанавливаются в значение «пусто».

# ————————————— # КОНФИГУРАЦИЯ # ————————————— ROLLING_WINDOW = 7 MIN_ABS_INCREASE = 500 # ————————————— # КЛАССИФИКАЦИЯ СТЕПЕНИ ТЯЖЕСТИ # ————————————— def compute_severity(df): df = df.sort_values(«Date»).reset_index(drop=True) df[«Severity»] = «» df[«Agent Decision»] = «» df[«Action»] = «» for i in range(len(df)): if df.loc[i, «Anomaly»] == «YES»: if i < ROLLING_WINDOW: df.loc[i, "Severity"] = "" curr = df.loc[i, "Cases"] baseline = df.loc[i - ROLLING_WINDOW:i- 1, "Cases"].mean() abs_inc = curr - baseline growth = abs_inc / max(baseline, 1) if abs_inc < MIN_ABS_INCREASE: df.loc[i, "Severity"] = "" if growth >= 1.0: df.loc[i, «Severity»] = «CRITICAL» elif growth >= 0.4: df.loc[i, «Severity»] = «WARNING» else: df.loc[i, «Severity»] = «MINOR» return df

В приведенном выше коде для классификации степени серьезности аномалии каждая аномалия сравнивается с 7-дневными историческими данными ( ROLLING_WINDOW = 7), и рассчитываются абсолютный и относительный рост.

  1. Абсолютный рост

Параметр конфигурации MIN_ABS_INCREASE = 500 определяет изменения ниже этого значения как очень незначительные, пренебрежимо малые. Если абсолютный рост меньше MIN_ABS_INCREASE, то его следует игнорировать, а параметр серьезности оставить пустым. Абсолютный рост позволяет обнаружить значимое влияние в реальных условиях, не реагирует на шум или незначительные колебания и предотвращает ложные срабатывания при высоком проценте роста.

  1. Относительный рост:

Относительный рост помогает выявлять взрывные тенденции. Если рост превышает или равен 100% по сравнению с базовым уровнем, это означает внезапный всплеск и обозначается как « КРИТИЧНЫЙ »; если рост превышает 40%, это означает устойчивое ускорение и требует мониторинга, и обозначается как « ПРЕДУПРЕЖДЕНИЕ »; в противном случае обозначается как « НЕЗНАЧИТЕЛЬНЫЙ ».

После классификации степени тяжести, система готова к автономному принятию решений и действиям со стороны ИИ-агента.

Шаг 6: Создайте запрос для агента ИИ.

Ниже приведено описание того, как ИИ-агент рассуждает и принимает решения на основе структурированного контекста и предопределенной степени серьезности при обнаружении аномалии. Агент ограничен тремя явно выраженными действиями и должен возвращать один детерминированный ответ для безопасной автоматизации.

def build_agent_prompt(obs): return f»»» Вы — агент мониторинга данных о COVID-19 на основе ИИ. Наблюдаемая аномалия: Дата: {obs['date']} Случаи: {obs['cases']} Тяжесть: {obs['severity']} Правила принятия решений: — FIX_ANOMALY: шум, колебания в отчетах — KEEP_ANOMALY: реальный сигнал вспышки — FLAG_FOR_REVIEW: серьезная или неоднозначная аномалия Ответьте ТОЛЬКО одним из следующих способов: FIX_ANOMALY KEEP_ANOMALY FLAG_FOR_REVIEW «»»

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

Шаг 7: Создайте своего агента в GroqCloud.

В настоящее время мы создаём автономного агента ИИ с использованием GroqCloud, который принимает интеллектуальные контекстные решения на основе обнаруженных аномалий и степени их серьёзности, а также предпринимает соответствующие действия. Три предопределённых действия для агента ИИ обеспечивают использование только проверенных результатов.

# ————————————— # СОЗДАНИЕ АГЕНТА ИИ # ————————————— agent = Agent( name=»CovidAnomalyAgent», model=Groq(id=»openai/gpt-oss-120b»), instructions=»»» Вы — агент ИИ, отслеживающий данные временных рядов COVID-19 в режиме реального времени. Выявите аномалии и примите решение в соответствии с аномалией: «FIX_ANOMALY», «KEEP_ANOMALY», «FLAG_FOR_REVIEW».»»» ) for i in range(len(df)): if df.loc[i, «Anomaly»] == «YES»: obs = build_observation(df, i) prompt = build_agent_prompt(obs) response = agent.run(prompt) decision = response.messages[-1].content.strip() decision = decision if decision in VALID_ACTIONS else «FLAG_FOR_REVIEW» df = agent_action(df, i, decision)

Создан ИИ-агент под названием « CovidAnomalyAgent », который использует модель LLM, размещенную на платформе GroqCloud, для быстрого и низкозадержечного анализа. ИИ-агент выполняет четко определенную подсказку, анализирует данные, проводит контекстный анализ, принимает автономное решение и предпринимает действия в рамках безопасных ограничений.

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

# ————————————— # Решатель действий агента # ————————————— def agent_action(df, idx, action): df.loc[idx, «Решение агента»] = action if action == «FIX_ANOMALY»: fix_anomaly(df, idx) elif action == «KEEP_ANOMALY»: df.loc[idx, «Действие»] = «Принято как реальный сигнал вспышки» elif action == «FLAG_FOR_REVIEW»: df.loc[idx, «Действие»] = «Отмечено для проверки человеком» return df

ИИ-агент игнорирует нормальные точки данных без аномалий и рассматривает только точки данных со значением « АНОМАЛИЯ = ДА ». ИИ-агент ограничен тремя допустимыми решениями: « ИСПРАВИТЬ_АНОМАЛИЯ », « СОХРАНИТЬ_АНОМАЛИЯ » и « ФЛАГ ДЛЯ ПРОВЕРКИ », и, соответственно, предпринимаются действия, определенные в таблице ниже:

Решение агента Действие
ИСПРАВЛЕНИЕ АНОМАЛИИ Автоматическая коррекция, выполненная агентом искусственного интеллекта.
KEEP_ANOMALY Принято за реальный сигнал о вспышке заболевания.
FLAG_FOR_REVIEW Помечено для проверки человеком.

В случае незначительных аномалий агент ИИ автоматически исправляет данные, сохраняет допустимые аномалии в неизменном виде и помечает критические случаи для проверки человеком.

Шаг 8: Устранение аномалии

Незначительные аномалии вызваны шумом в отчетах и корректируются с помощью локального сглаживания скользящим средним по недавним историческим значениям.

# ————————————— # ИСПРАВЛЕНИЕ АНОМАЛИИ # ————————————— def fix_anomaly(df, idx): window = df.loc[max(0, idx — 3):idx — 1, «Cases»] if len(window) > 0: df.loc[idx, «Cases»] = int(window.mean()) df.loc[idx, «Severity»] = «» df.loc[idx, «Action»] = «Автоматически исправлено агентом ИИ»

Программа берет данные за последние 3 дня, вычисляет их среднее значение и сглаживает аномалию, заменяя полученное значение этим средним. Метод локального скользящего среднего позволяет обрабатывать временные всплески и сбои в данных.

После устранения аномалии точка данных перестает считаться опасной, а уровень серьезности намеренно снижается во избежание путаницы. Показатель «Действие» обновляется до «Автоматически исправлено агентом ИИ».

Полный код

Пожалуйста, ознакомьтесь с полным кодом статистического обнаружения аномалий и реализацией агента ИИ для обработки аномалий.

https://github.com/rautmadhura4/anomaly_detection_agent/tree/main

Результаты

Давайте сравним результаты для страны «Индия» с различными уровнями выявленной серьезности и тем, как ИИ-агент с ними справляется.

Сценарий 1: Нативная реализация

Первая попытка — это нативная реализация, в которой мы обнаруживаем незначительные аномалии, а агент ИИ автоматически их исправляет. Ниже представлен снимок таблицы данных по COVID-19 в Индии с указанием степени тяжести заболевания.

835a3ec190f6ae66277356761a520d47

Мы также внедрили панель мониторинга Streamlit для анализа решений и действий ИИ-агента. На приведенном ниже снимке результатов видно, что ИИ-агент исправил различные мелкие аномалии.

fb1691c7b00df261fc0c992744bad5d1

Этот метод наиболее эффективен, когда аномалии представляют собой локализованный шум, а не изменения режима.

Сценарий 2: Граничное условие

Здесь обнаруживаются критические аномалии, и агент ИИ помечает их для проверки, как показано на снимке таблицы данных по COVID-19 в Индии с указанием степени тяжести.

176e3e012c208e8bf447f34405ca5291

На панели управления Streamlit в виде снимка результатов отображаются решения и действия ИИ-агента. Вы можете видеть, что все критические аномалии были отмечены для проверки человеком ИИ-агентом.

ffdb422753104c72952a49457a7b655d

Ограничение по степени тяжести предотвращает разрушительные автокоррекции при аномалиях с высоким уровнем воздействия.

Сценарий 3: Ограничение

В рамках сценария с ограничениями были выявлены предупреждающие и критические аномалии, как показано на снимке таблицы данных по COVID-19 в Индии с указанием степени тяжести.

0e70b98e6fa56e7bdd25eff8a4255dfa

На панели управления Streamlit решения и действия ИИ-агента отображаются ниже в виде снимка результатов. Вы можете видеть, что критическая аномалия помечена для проверки человеком ИИ-агентом, но аномалия уровня WARNING автоматически исправляется. Во многих реальных условиях аномалию уровня WARNING следует сохранять и отслеживать, а не исправлять.

62567e2dd3c109d3f7d6370c05428c54

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

Используйте полный код и попробуйте выполнить обнаружение аномалий в наборе данных COVID-19 с различными параметрами.

Перспективы развития и усовершенствования

Мы использовали очень ограниченный набор данных и реализовали обнаружение аномалий на основе правил, но в будущем можно внести некоторые улучшения в реализацию ИИ-агента:

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

Итоговые выводы

Более интеллектуальные агенты ИИ позволяют создавать оперативные системы искусственного интеллекта, которые принимают решения, используя контекстное мышление, предпринимают действия для устранения аномалий и при необходимости передают задачу человеку. При создании агента ИИ для обнаружения аномалий следует учитывать несколько практических моментов:

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

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

Источник: towardsdatascience.com

✅ Найденные теги: Агент, Аномалии, Временные Ряды, искусственный интеллект, новости, Обнаружение, Создание

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.
Спутник исследует черную дыру в космосе, испускающий световой луч.
Пикачу использует электрический разряд на фоне неба.
Черный углеродное волокно с текстурой плетения, отражающий свет.
Круглый экран с изображением замка и горы, рядом электронная плата.
Код на экране компьютера, программирование, интерфейс разработчика.
Статистика использования видеокарт NVIDIA RTX, показывающая изменения за октябрь-февраль.
Макросъемка клетки под микроскопом, текстура и форма на голубом фоне.
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых