Гайд · 2 июня 2026 г. · 9 мин
Где поставщик закладывает лишнее? Ловим аномалии в прайсах
Сговор и завышение бьют мимо средней. Isolation Forest на цене, тоннаже и плече. ONNX локально, 1С блокирует счёт.
Аксенов Юрий Васильевич
Руководитель ГК «ФОРОНЕЙ»
Коротко
Сверка с «базой» ломается о сезон и доставку. Ищем выброс без учителя: аномальной точке нужно меньше разбиений, чтобы отделиться от облака.
Признаки: цена за тонну, объём, плечо доставки. contamination=0.03.
Обучение
import pandas as pd
import numpy as np
from sklearn.ensemble import IsolationForest
data = pd.read_csv("procurement_prices.csv")
X = data[["price_per_ton", "volume_tons", "delivery_distance_km"]].values
clf = IsolationForest(n_estimators=150, contamination=0.03, random_state=42)
clf.fit(X)
data["is_anomaly"] = clf.predict(X) == -1
print("подозрительных позиций:", int(data["is_anomaly"].sum()))
Куда втыкаем
Модель в ONNX на сервере завода. Согласование счёта в 1С:ERP бьёт в API. Аномалия: блок и ручной разбор, без автооплаты.
Доказательством сговора это не считается. Для СБ это очередь, куда смотреть первым.