2016-12-22 18 views
2

Я прочитал об использовании RPCA, чтобы найти выбросы в данных временных рядов. У меня есть идея об основах того, что такое RPCA, и теории. Я получил библиотеку Python, которая делает RPCA и в значительной степени получает две матрицы в качестве выходных (L и S), низкое ранжирование входных данных и разреженной матрицы.Выбросы с использованием RPCA

Входные данные: (строки будучи в день и 10 функции, как столбцы.)

DAY 1 - 100,300,345,126,289,387,278,433,189,153 
DAY 2 - 300,647,245,426,889,987,278,133,295,153 
DAY 3 - 200,747,145,226,489,287,378,1033,295,453 

Выход получен:

L 
[[ 125.20560531 292.91525518 92.76132814 141.33797061 282.93586313 
    185.71134917 199.48789246 96.04089205 192.11501055 118.68811072] 
[ 174.72737183 408.77013914 129.45061871 197.24046765 394.84366245 
    259.16456278 278.39005349 134.0273274 268.1010231 165.63205458] 
[ 194.38951303 454.76920678 144.01774873 219.43601655 439.27557808 
    288.32845493 309.71739782 149.10947628 298.27053871 184.27069609]] 

S 
[[ -25.20560531 0.   252.23867186 -0.   0. 
    201.28865083 78.51210754 336.95910795 -0.   34.31188928] 
[ 125.27262817 238.22986086 115.54938129 228.75953235 494.15633755 
    727.83543722 -0.   -0.   26.8989769 -0.  ] 
[ 0.   292.23079322 -0.   0.   49.72442192 
    -0.   68.28260218 883.89052372 0.   268.72930391]] 

Inference: (Мой вопрос)

Теперь, как я могу сделать вывод, d классифицируются как выбросы. Напр. глядя на данные, мы можем сказать, что 1033 выглядит как выброс. Соответствующая запись в S-матрице равна 883.89052372, которая больше по сравнению с другими элементами в S. Можно ли использовать понятие фиксированного порога для поиска отклонений записей матрицы S от соответствующего исходного значения во входной матрице, чтобы определить, что точка является выбросом? Или я полностью понимаю концепцию RPCA? TIA за вашу помощь.

+0

Какую библиотеку Python вы использовали для RPCA, и вы порекомендовали бы ее? –

+0

Я закончил тем, что портировал java, который я нашел для python самостоятельно. Протестировало это также, сравнивая его с выходом java-версии. Могла бы переслать его, если хотите. – Aragorn

ответ

2

Вы правильно поняли концепцию надежного PCA (RPCA): разреженная матрица S содержит выбросы. Однако S часто будет содержать множество наблюдений (ненулевые значения), которые вы не можете классифицировать как аномалии самостоятельно. Поэтому, как вы полагаете, рекомендуется отфильтровать эти моменты.

Применение фиксированного порога для определения релевантных выбросов может потенциально работать для одного набора данных. Однако использование порога для многих наборов данных может дать плохие результаты, если есть изменения в среднем и дисперсии лежащего в основе распределения.

В идеале вы вычисляете оценку аномалии, а затем классифицируете выбросы на основе этой оценки. Простой метод (и часто используемый при обнаружении outlier) заключается в том, чтобы увидеть, находится ли ваша точка данных (потенциальный выброс) в хвосте вашего предполагаемого распределения. Например, если предположить, что ваш дистрибутив Gaussian можно вычислить Z-счет (г):

г = (x- μ)/σ,

где μ является средним и σ является стандартом отклонение.

Затем вы можете применить порог к вычисленному Z-баллу, чтобы идентифицировать выброс. Например: если для данного наблюдения z> 3, точка данных является выбросом. Это означает, что ваше наблюдение превышает 3 стандартных отклонения от среднего значения и находится в 0,1% -ном хвосте распределения Гаусса. Этот подход более устойчив к изменениям данных, чем использование порогового значения для нестандартизированных значений. Кроме того, настройка значения z, при котором вы классифицируете выброс, проще, чем найти реальное значение шкалы (883.89052372 в вашем случае) для каждого набора данных.

+0

Спасибо, что нашли время. Быстрый вопрос: Итак, теперь я буду вычислять среднее и стандартное отклонение записей в матрице S? И затем найдите записи в S, которые являются 3 стандартными отклонениями от среднего (для выбросов). – Aragorn

+1

Да, я бы сказал, что это хорошая отправная точка.Обнаружение отбросов всегда немного субъективно (например, вы знаете, что представляет собой выброс через знания вашего домена), поэтому вы хотите настроить свой метод таким образом, чтобы его результат совпал с вашим представлением об уровнях выбросов. Выбор этой стратегии с 3 или 4 сигма поверх RPCA для меня до сих пор хорошо работал. –