2015-01-12 4 views
1

Какие статистические методы там будут оценивать плотность вероятности данных по мере ее поступления на время?Оценка плотности потока данных

Мне нужно оценить pdf многомерного набора данных; однако новые данные поступают со временем и по мере поступления данных оценка плотности должна обновляться.

То, что я использовал до сих пор, - это оценки ядра, сохраняя буфер данных и вычисляя новую оценку плотности ядра при каждом обновлении новых данных; однако я больше не могу идти в ногу с объемом данных, которые необходимо сохранить. Поэтому мне нужен метод, который будет отслеживать общую оценку pdf/плотности, а не отдельную датум. Любые предложения будут действительно полезными. Я работаю на Python, но так как это затянуто, любые предложения алгоритма также будут полезны.

ответ

2

Scipy's implementation of KDE включает в себя функциональность для увеличения KDE каждой базой данных, а не для каждой точки. Это вложено внутри цикла «если больше точек, чем данных», но вы, вероятно, могли бы повторно использовать его для своих нужд.

if m >= self.n: 
    # there are more points than data, so loop over data 
    for i in range(self.n): 
     diff = self.dataset[:, i, newaxis] - points 
     tdiff = dot(self.inv_cov, diff) 
     energy = sum(diff*tdiff,axis=0)/2.0 
     result = result + exp(-energy) 

В этом случае, вы можете сохранить результат вашего KDE в качестве result, и каждый раз, когда вы получаете новую точку можно просто вычислить новый Gaussian и добавить его в ваш результат. При необходимости данные можно отбрасывать, вы только сохраняете KDE.

Смежные вопросы