Я пытаюсь найти метод для последовательности тестовых номеров регрессии.
Моя тестируемая система производит большое количество номеров для каждой версии системы (например, высота, ширина, глубина и т.д.). Эти номера варьируются от версии к версии неизвестным образом. Учитывая последовательность "хороших" версий и одну "новую" версию, я бы хотел найти последовательности, которые являются наиболее аномальными.
Пример:
"Хорошая" версия:
version width height depth
1 123 43 302
2 122 44 304
3 120 46 300
4 124 45 301
"Новая" версия:
5 121 60 305
В этом случае я, очевидно, хотел бы найти последовательность высот, потому что значение 60 выделяется больше, чем ширина или глубина.
Мой текущий подход вычисляет среднее и стандартное отклонение каждой последовательности хороших случаев, а для нового номера версии он вычисляет вероятность того, что это число является частью этой последовательности (на основе известного среднего и стандартного отклонения). Это работает... вроде.
Числа в моих последовательностях не обязательно являются гауссовыми, распределенными по среднему значению, но часто довольно постоянными и лишь иногда порождают значение выброса, которое также представляется довольно постоянным, e. г. 10, 10, 10, 10, 10, 5, 10, 10, 10, 5, 10, 10, 10. В этом случае только на основе среднего и стандартного отклонения значение 10 не будет на 100% вероятнее всего в последовательность, а значение 5 было бы маловероятным.
Я рассматривал использование подхода с гистограммой и колебался там, чтобы спросить здесь сначала. Проблема с гистограммой заключалась бы в том, что мне нужно было бы хранить довольно много информации для каждой последовательности (в отличие от среднего и стандартного отклонения).
Следующий аспект, о котором я думал, состоял в том, что я уверен, что эта задача не нова и что, вероятно, уже есть решения, которые хорошо подходят для моей ситуации; но в моих исследованиях я не нашел ничего.
Я нашел библиотеку типа PyBrain, которая, на первый взгляд, обрабатывает числовые последовательности, а затем, по-видимому, пытается проанализировать их с помощью имитируемой нейронной сети. Я не уверен, что это будет для меня подход (и снова кажется, что мне нужно было хранить большой объем данных для каждой последовательности чисел, например, в полной нейронной сети).
Итак, мой вопрос таков:
Есть ли методика, алгоритм или научная дисциплина, которая поможет мне анализировать числовые последовательности, чтобы найти аномалии (в последнем значении)? Предпочтительно, при сохранении только небольших количеств данных на последовательность; -)
Для конкретных реализаций я бы предпочел Python, но подсказки на других языках также приветствуются.