Во всех тех техниках, о которых вы упоминаете, мало магии. Я полагаю, что вы должны сначала попытаться сузить типичные отклонения, с которыми вы можете столкнуться, это помогает упростить ситуацию.
Затем вы можете вычислить производные величины, относящиеся к этим функциям. Например: «Я хочу обнаружить, что числа резко меняют направление» => вычислить u_ {n + 1} - u_n и ожидать, что он будет иметь постоянный знак или попадать в некоторый диапазон. Возможно, вы захотите сохранить эту гибкость и позволить своему дизайну кода быть расширяемым (шаблон стратегии, возможно, стоит рассмотреть, если вы выполните ООП)
Затем, когда у вас есть интересующие вас производные величины, вы выполняете их статистический анализ. Например, для производной величины A вы предполагаете, что она должна иметь некоторое распределение P (a, b) (равномерное ([a, b]) или Beta (a, b), возможно, более сложное), вы ставите априорные законы на а, б и вы настраиваете их на основе последовательной информации. Затем последующая вероятность информации, предоставленной последним добавленным пунктом, должна дать вам некоторое представление о том, нормально это или нет. Относительная энтропия между задним и предшествующим законом на каждом шаге - это тоже хорошая вещь для мониторинга. Обратитесь к книге о байесовских методах для получения дополнительной информации.
Я не вижу смысла в сложных традиционных материалах машинного обучения (слои персептрона или SVM, чтобы цитировать только их), если вы хотите обнаруживать выбросы. Эти методы прекрасно работают при классификации данных, которые, как известно, являются достаточно чистыми.