Алгоритм отклонений - PullRequest
       4

Алгоритм отклонений

1 голос
/ 19 февраля 2010

Я должен отслеживать, если в течение недели, полной целых чисел данных (40, 30, 25, 55, 5, 40 и т. Д.), Выдается предупреждение при отклонении от нормы (в указанном выше случае - «5») , Еще одна приятная вещь - это узнать, является ли 5 ​​нормальным событием для этого дня недели.

Знаете ли вы реализацию в ruby, предназначенную для этой проблемы? Если это классическая проблема, как называется проблема / алгоритм?

Ответы [ 4 ]

3 голосов
/ 19 февраля 2010

Это очень легко вычислить, но вам нужно будет настроить один параметр. Вы хотите знать, является ли любое заданное значение X стандартным отклонением от среднего значения. Чтобы понять это, рассчитайте стандартное отклонение (см. Википедия ), затем сравните отклонение каждого значения abs(mean - value) от среднего значения до этого значения. Если отклонение значения, скажем, более двух стандартных отклонений от среднего, отметьте его.

Edit:

Чтобы отслеживать отклонения по дням недели, сохраняйте массив целых чисел, по одному на каждый день. Каждый раз, когда вы сталкиваетесь с отклонением, увеличивайте счетчик этого дня на единицу. Вы также можете использовать удвоения и вместо этого поддерживать процент отклонений для этого дня, например (num_friday_deviations/num_fridays).

2 голосов
/ 06 декабря 2011

Это часто называют «обнаружением аномалий», и есть много работы, если вы поищите это в Google. Документ Mining Deviants в потоках данных временных рядов может помочь вам с вашими конкретными потребностями.

Из аннотации:

Мы представляем первые известные алгоритмы идентификации отклонений в больших потоках данных. Наши алгоритмы мониторинга потоки, использующие очень маленькое пространство (полилогарифмические в данных размер) и способны быстро найти отклонения в любой момент, как поток данных развивается с течением времени.

1 голос
/ 19 февраля 2010

http://en.wikipedia.org/wiki/Control_chart описывает классические способы делать подобные вещи. Как отметил Джонатан Фейнберг, существуют разные подходы.

0 голосов
/ 19 февраля 2010

Название алгоритма может быть таким простым, как «вычислить стандартное отклонение».

http://en.wikipedia.org/wiki/Standard_deviation

Однако любой анализ, который вы проводите, должен быть специфичным для набора данных. Вы должны проверить исторические данные, чтобы получить правильный алгоритм. Стандартное отклонение не будет хорошей мерой, если только ваши данные не распространяются нормально. Ваши данные могут даже быть такими, что вы просто хотите искать числа выше определенного максимального значения ... это действительно зависит.

Итак, мой вам совет:

1) Google для обзор статистики и чтение основной статистики.

2) Проверьте все имеющиеся у вас исторические данные.

3) Придумайте разумную меру нечетного числа.

4) Проверьте свою меру в сравнении с вашими историческими данными и посмотрите, выделяет ли она цифры, которые, по вашему мнению, должны.

5) При необходимости повторите шаги 2-4 для уточнения алгоритма.

...