К содержанию

Гайд · 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. Аномалия: блок и ручной разбор, без автооплаты.

Доказательством сговора это не считается. Для СБ это очередь, куда смотреть первым.

Позвонить