Зачем это нужно?
Аномальные транзакции могут быть вызваны различными факторами:
- Мошенничество: Несанкционированные переводы, фиктивные счета.
- Ошибки: Ошибки ввода данных, сбои в системах.
- Специфические события: Необычные бизнес-операции, изменения в законодательстве.
Своевременное выявление аномалий помогает предотвратить финансовые потери и улучшить контроль над финансовыми операциями.
В мире финансов и бухгалтерии, обнаружение аномальных транзакций является критически важной задачей. Аномальные транзакции могут указывать на мошенничество, ошибки или другие проблемы, которые могут привести к финансовым потерям. В этой статье мы рассмотрим, как можно реализовать простой, но эффективный подход к обнаружению аномальных транзакций в системе 1С.
Подход к обнаружению аномалий
Мы рассмотрим простой подход, основанный на анализе трех основных критериев:
- Сумма транзакции: Необычно большие или малые суммы могут указывать на аномалии.
- Дата транзакции: Транзакции, совершенные в необычное время (например, в выходные дни или ночью), могут быть подозрительными.
- Описание транзакции: Описания, содержащие подозрительные ключевые слова (например, "обналичивание", "неизвестный платеж"), могут указывать на аномалии.
Что такое аномалии?
Аномалии (или выбросы) - это наблюдения (или данные), которые значительно отличаются от большинства других наблюдений в наборе данных. Они не соответствуют ожидаемому поведению или закономерностям и выделяются на общем фоне.
Аномалии могут встречаться в самых разных областях, где собираются и анализируются данные:
- Бухгалтерия и финансы: Необычные транзакции, мошеннические операции, ошибки в учете.
- Производство: Дефекты продукции, сбои оборудования, отклонения от технологических процессов.
- Здравоохранение: Редкие заболевания, необычные показатели здоровья пациентов.
- Информационная безопасность: Кибератаки, вторжения в системы, вирусная активность.
- Метеорология: Экстремальные погодные явления (ураганы, наводнения, засухи).
- Транспорт: Аварии, задержки рейсов, поломки техники.
Алгоритмы вычисления аномалий:
Существует множество алгоритмов для выявления аномалий, которые можно разделить на несколько категорий:
- Статистические методы:
- Метод стандартных отклонений: Основан на предположении, что данные имеют нормальное распределение. Аномалиями считаются значения, отклоняющиеся от среднего значения на заданное количество стандартных отклонений.
- Z-оценка: Вычисляет, насколько далеко от среднего значения находится конкретная точка данных, в единицах стандартного отклонения.
- Метод межквартильного размаха (IQR): Аномалиями считаются значения, выходящие за пределы определенного диапазона, рассчитанного на основе IQR.
- Методы машинного обучения:
- Метод опорных векторов (SVM): Строит гиперплоскость, отделяющую нормальные данные от аномалий.
- Изолирующий лес (Isolation Forest): Строит случайные деревья для выделения аномалий, которые требуют меньше разделений.
- Автокодировщики (Autoencoders): Нейронные сети, которые обучаются восстанавливать обычные данные и выявляют те, которые плохо восстанавливаются.
- Кластерный анализ: Группирует схожие данные вместе и определяет точки, которые не принадлежат ни к одному кластеру.
- Методы на основе плотности:
- DBSCAN (Density-Based Spatial Clustering of Applications with Noise): Выявляет кластеры на основе плотности данных и помечает как аномалии точки, которые находятся в областях с низкой плотностью.
- Методы временных рядов:
- ARIMA (Autoregressive Integrated Moving Average): Прогнозирует будущие значения на основе исторических данных и выявляет отклонения от прогноза.
- Экспоненциальное сглаживание: Применяет веса к историческим данным для прогнозирования будущих значений и выявляет отклонения.
Применение поиска аномалий очень широко:
- Выявление мошенничества: Обнаружение подозрительных транзакций в банковских системах, страховых компаниях и т.д.
- Обнаружение вторжений: Выявление несанкционированного доступа к компьютерным системам и сетям.
- Контроль качества: Обнаружение дефектов продукции на производственных линиях.
- Мониторинг состояния оборудования: Предсказание поломок оборудования на основе анализа данных с датчиков.
- Диагностика заболеваний: Выявление необычных показателей здоровья пациентов.
- Обнаружение аномалий в социальных сетях: Выявление фейковых аккаунтов, ботов и распространения дезинформации.
- Анализ данных о клиентах: Сегментация клиентов и выявление тех, кто ведет себя необычно (например, внезапно прекращает покупки).
Ответственность за выявление аномалий зависит от конкретной области применения:
- В бухгалтерии и финансах: Бухгалтеры, аудиторы, финансовые аналитики, специалисты по безопасности.
- В производстве: Инженеры, техники, специалисты по контролю качества.
- В здравоохранении: Врачи, медсестры, лаборанты.
- В информационной безопасности: Специалисты по информационной безопасности, аналитики угроз.
- В анализе данных: Аналитики данных, специалисты по машинному обучению.
Как избежать аномалий:
- Полностью избежать аномалий невозможно, но можно снизить их вероятность и минимизировать их последствия:
- Тщательный сбор данных: Обеспечение точности и полноты данных, исключение ошибок при вводе.
- Стандартизация процессов: Внедрение четких процедур и правил для всех операций.
- Обучение персонала: Повышение квалификации сотрудников, чтобы они могли распознавать и предотвращать аномалии.
- Автоматизация: Использование автоматизированных систем для мониторинга данных и выявления отклонений.
- Аудит: Регулярная проверка данных и процессов для выявления проблем и слабых мест.
Математические функции для поиска аномалий
В зависимости от выбранного алгоритма, используются различные математические функции:
- Среднее значение (Mean): ΣxK22; / n (сумма всех значений, деленная на количество значений)
- Медиана (Median): Значение, находящееся в середине отсортированного набора данных.
- Стандартное отклонение (Standard Deviation): √[Σ(xK22; - μ)² / (n-1)] (квадратный корень из дисперсии)
- Дисперсия (Variance): Σ(xK22; - μ)² / (n-1) (мера разброса значений относительно среднего)
- Межквартильный размах (Interquartile Range, IQR): Разница между 75-м и 25-м процентилями.
- Z-оценка: (xK22; - μ) / σ (где xK22; - значение, μ - среднее, σ - стандартное отклонение)
- Евклидово расстояние: √[Σ(aK22; - bK22;)²] (расстояние между двумя точками в многомерном пространстве)
- Функции плотности вероятности (Probability Density Functions, PDF): Используются для оценки вероятности того, что значение принадлежит к определенному распределению.
Применим и разберем нашу обработку анализа аномалий.
Мы использовали комбинированный метод на основе статистического анализа и правил.
Статистический анализ:
- Расчет среднего значения и стандартного отклонения суммы транзакций.
- Анализ частоты совершения транзакций по дням недели.
Правила: Анализ ключевых слов в описании транзакций.
Комбинация: Мы объединили эти методы, используя веса для разных критериев (сумма, дата, описание) для расчета общей оценки аномальности.
Первоначальные данные:
Мы создали "Таблицу значений" с колонками "Дата", "Сумма" и "Описание", которые можно получить из таких документов, как Платежное поручение, счет, заявка на оплату, заявка на расходование средств, реализация товаров и услуг и т.д.
Добавили (настраиваемые) параметры для алгоритма обработки:
- ПорогАномалий: Значение, определяющее, какую общую оценку считать аномальной (в нашем примере, 1.2).
- ВесСуммы, ВесДаты, ВесОписания : Веса, определяющие важность каждого критерия при расчете общей оценки.
- ПодозрительныеСлова: Список ключевых слов, которые указывают на подозрительные транзакции.
Работа обработки:
- Получение данных: Обработка получает данные из таблицы значений Транзакции.
- Расчет статистики:
- Рассчитывается средняя сумма транзакций и стандартное отклонение.
- Рассчитывается количество транзакций, совершенных в каждый день недели.
- Анализ по критериям:
- Сумма: Вычисляется оценка аномальности для каждой транзакции на основе отклонения суммы от среднего значения (Z-оценка).
- Дата: Вычисляется оценка аномальности по дню недели (чем реже день недели, тем выше оценка).
- Описание: Выявляется наличие подозрительных ключевых слов в описании транзакции, присваивается оценка.
- Комбинированная оценка: Оценка по каждому критерию объединяется в общую оценку аномальности, с учетом заданных весов.
- Выявление аномалий: Транзакции, у которых общая оценка превышает заданный ПорогАномалии, считаются аномальными.
- Вывод результатов: Отображается список аномальных транзакций с указанием даты, суммы, описания и общей оценки.
Ожидаемый результат:
Обработка должна выявить и отобразить транзакции, которые отличаются от нормальных по сумме, дате и/или описанию.
Для таблицы:
N | Дата | Сумма | Описание | |
1 | 02.10.2023 | 551,00 | Оплата поставщику | |
2 | 03.10.2023 | 803,00 | Оплата поставщику | |
3 | 04.10.2023 | 701,00 | Оплата поставщику | |
4 | 05.10.2023 | 984,00 | Оплата поставщику | |
5 | 06.10.2023 | 542,00 | Оплата поставщику | |
6 | 07.10.2023 | 720,00 | Оплата поставщику | |
7 | 08.10.2023 | 537,00 | Оплата поставщику | |
8 | 09.10.2023 | 874,00 | Оплата поставщику | |
9 | 10.10.2023 | 775,00 | Оплата поставщику | |
10 | 11.10.2023 | 778,00 | Оплата поставщику | |
11 | 12.10.2023 | 965,00 | Оплата поставщику | |
12 | 13.10.2023 | 811,00 | Оплата поставщику | |
13 | 14.10.2023 | 664,00 | Оплата поставщику | |
14 | 15.10.2023 | 724,00 | Оплата поставщику | |
15 | 16.10.2023 | 934,00 | Оплата поставщику | |
16 | 17.10.2023 | 736,00 | Оплата поставщику | |
17 | 18.10.2023 | 832,00 | Оплата поставщику | |
18 | 19.10.2023 | 678,00 | Оплата поставщику | |
19 | 20.10.2023 | 674,00 | Оплата поставщику | |
20 | 21.10.2023 | 561,00 | Оплата поставщику | |
21 | 22.10.2023 | 727,00 | Оплата поставщику | |
22 | 23.10.2023 | 535,00 | Оплата поставщику | |
23 | 24.10.2023 | 858,00 | Оплата поставщику | |
24 | 25.10.2023 | 969,00 | Оплата поставщику | |
25 | 26.10.2023 | 926,00 | Оплата поставщику | |
26 | 27.10.2023 | 851,00 | Оплата поставщику | |
27 | 28.10.2023 | 862,00 | Оплата поставщику | |
28 | 29.10.2023 | 662,00 | Оплата поставщику | |
29 | 30.10.2023 | 545,00 | Оплата поставщику | |
30 | 31.10.2023 | 916,00 | Оплата поставщику | |
31 | 15.10.2023 | 12 000,00 | Неизвестный платеж | |
32 | 22.10.2023 | 15 000,00 | Перевод на карту | |
33 | 31.10.2023 | 800,00 | Оплата поставщику | |
34 | 05.11.2023 | 9 500,00 | Оплата поставщику | |
35 | 10.10.2023 | 700,00 | Обналичивание | |
36 | 18.10.2023 | 11 000,00 |
Оплата поставщику |
Аномальные транзакции:
Дата: 15.10.2023 0:00:00, Сумма: 12 000, Описание: Неизвестный платеж, Общая оценка: 1,82
Дата: 22.10.2023 0:00:00, Сумма: 15 000, Описание: Перевод на карту, Общая оценка: 2,32
Дата: 05.11.2023 0:00:00, Сумма: 9 500, Описание: Оплата поставщику, Общая оценка: 1,41
Дата: 18.10.2023 0:00:00, Сумма: 11 000, Описание: Оплата поставщику, Общая оценка: 1,67
- 15.10.2023, 12 000, Неизвестный платеж: Большая сумма + подозрительное описание = высокая оценка аномальности.
- 22.10.2023, 15 000, Перевод на карту: Большая сумма + подозрительное описание (ключевое слово "перевод на карту") = высокая оценка аномальности.
- 05.11.2023, 9 500, Оплата поставщику: Выходной день (редкая дата) + большая сумма = умеренная оценка (может быть аномалией, в зависимости от настроек весов и порога).
- 18.10.2023, 11 000, Оплата поставщику: Большая сумма, в сочетании с нормальным днем = умеренная оценка (может быть аномалией).
Размышления улучшения обработки:
- Более сложные методы анализа:
- Более сложный анализ описания: Использовать методы обработки естественного языка (NLP) для выявления семантики описаний и обнаружения подозрительных паттернов.
- Анализ временных рядов: Использовать методы анализа временных рядов (например, ARIMA) для прогнозирования будущих значений и выявления отклонений.
- Машинное обучение: Попробовать реализовать более сложные методы, такие как Isolation Forest (но это потребует внешней интеграции).
- Более гибкая настройка:
- Динамическая настройка весов: Предоставить возможность пользователю настраивать веса для различных критериев.
- Настройка порога: Предоставить пользователю возможность изменять порог аномальности.
- Более информативные результаты:
- Добавить больше информации в результаты анализа (например, Z-оценку по сумме, частоту дня недели).
- Визуализировать результаты (например, графики распределения сумм, графики временных рядов).
- Интеграция с данными 1С:
- Реализовать возможность получения данных из документов, справочников, регистров накопления 1С.
- Сохранять результаты анализа в 1С.
- Интеграция с оповещениями:
- Отправлять уведомления о выявленных аномалиях пользователям.
Вот так можно применить эту обработку в реальной системе 1С. Это простая обработка, где пользователю надо лишь нажать кнопку, и где вместо начальных данных более опытный пользователь может добавить привязку начальных данных к реальным документам 1С. Еще один момент: обработка универсальная, и должна работать во всех 1С на управляемых формах для тестирования. Примеры работы на скриншотах.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.13.82