Как заставить Isolation Forest обнаруживать аномалию на пике разницы, а не на первом увиденном значенииPython

Программы на Python
Anonymous
Как заставить Isolation Forest обнаруживать аномалию на пике разницы, а не на первом увиденном значении

Сообщение Anonymous »

Я использую Isolation Forest для выявления аномалий в очень большом фрейме данных. Данные зашумлены, поэтому я провел множество операций фильтрации, чтобы сгладить шум и выделить истинные аномалии, присутствующие в данных. Затем я использовал .diff() для этого набора данных, чтобы создать прямую линию, которая резко возрастает при возникновении аномалии. Затем для выявления этих аномалий используется Isolation Forest.
Моя проблема в том, что Isolation Forest идентифицирует аномалию на самом раннем этапе, когда он может обнаружить аномалию, но мне нужно, чтобы она ее обнаружила. на пике разницы.

Код: Выделить всё

df["Ref Wt. Denoised"] = denoise(df["Ref Wt."].values, level=2)
df["Ref Wt. Savgol"] = apply_savgol_filter(df["Ref Wt. Denoised"], window_length=101, polyorder=3)
df["Ref Wt. Smoothed"] = df["Ref Wt. Savgol"].rolling(window=indexer).mean()
df["Ref Wt. Diff"] = df["Ref Wt. Smoothed"].diff(periods=300).fillna(0)

df["WOB Anomaly"] = detect_wob.predict(df["Ref Wt. Diff"].values.reshape(-1, 1))

df["WOB Zero Event"] = df["WOB Anomaly"] == -1
Я попробовал использовать .shift(), чтобы исправить это, но это ручное изменение работает для некоторых значений, но не для всех. Я действительно хочу избежать изменения размера окна, которое я использую для сглаживания данных, поскольку это серьезно влияет на точность.
Изображение проблемы и исправления, которое я ищу

Подробнее здесь: https://stackoverflow.com/questions/788 ... ence-inste

Вернуться в «Python»