Calcular quantis aproximados para um fluxo de números inteiros usando momentos?

20

migrado de math.stackexchange .

Estou processando um longo fluxo de números inteiros e estou pensando em rastrear alguns momentos para poder calcular aproximadamente vários percentis para o fluxo sem armazenar muitos dados. Qual é a maneira mais simples de calcular percentis a partir de alguns momentos. Existe uma abordagem melhor que envolva apenas o armazenamento de uma pequena quantidade de dados?

jonderry
fonte
2
Você conhece algo específico sobre as propriedades distributivas do seu fluxo? Por exemplo, eles são, digamos, positivos? Limite? Quaisquer outros detalhes que você possa fornecer serão úteis. Momentos são muito fáceis de calcular e armazenar para um fluxo. Também há perguntas anteriores aqui sobre a estimativa direta de quantis de um fluxo, que soa como o que você realmente está tentando fazer. Você pode procurar e examinar esses.
cardeal
Eles representam os tempos de processamento e, portanto, são positivos, e na maioria das vezes fortemente agrupados, a menos que haja algum tipo de problema técnico ou sobrecarga no sistema. Vou procurar as perguntas quantílicas; Eles podem ser bons o suficiente. Ainda estou curioso em como passar de momentos para calcular o valor associado a um percentil arbitrário. Sei que armazenar momentos é fácil, é como usá-los que não conheço.
Jonderry #
Você viu esta pergunta ?
cardeal

Respostas:

15

Você não declara isso explicitamente, mas, a partir da descrição do problema, parece provável que você esteja buscando um conjunto de quantis com alto viés (por exemplo, percentis 50, 90, 95 e 99).

Se for esse o caso, tive muito sucesso com o método descrito em "Computação eficaz de modais enviesados ​​sobre fluxos de dados", de Cormode et al. É um algoritmo rápido que requer pouca memória e é fácil de implementar.

O método é baseado em um algoritmo anterior de Greenwald e Khanna que mantém uma pequena amostra do fluxo de entrada junto com os limites superior e inferior na classificação dos valores na amostra. Requer mais espaço do que uma coleção de poucos momentos, mas será muito melhor para descrever com precisão a região interessante da cauda da distribuição.

NPE
fonte
1
Sim, este é realmente o caminho a percorrer. na verdade, é um pouco mais fácil obter estimativas dos quantis altos, especialmente se você deseja tolerar erros na classificação do formulário que é o número total de itens e \ epsilon> 0 $ é algum usuário termo de erro definidoϵnn
Suresh Venkatasubramanian
2

Existe um algoritmo mais recente e muito mais simples para isso, que fornece estimativas muito boas dos quantis extremos.

A idéia básica é que compartimentos menores sejam usados ​​nos extremos de uma maneira que limite o tamanho da estrutura de dados e garanta maior precisão para pequeno ou grande . O algoritmo está disponível em vários idiomas e em muitos pacotes. A versão MergingDigest não requer alocação dinâmica ... uma vez que o MergingDigest é instanciado, nenhuma alocação de heap adicional é necessária.q

Consulte https://github.com/tdunning/t-digest

Ted Dunning
fonte