Hitung perkiraan kuantil untuk aliran bilangan bulat menggunakan momen?

20

bermigrasi dari math.stackexchange .

Saya sedang memproses aliran bilangan bulat yang panjang dan saya sedang mempertimbangkan untuk melacak beberapa saat agar dapat menghitung kira-kira berbagai persentil untuk aliran tanpa menyimpan banyak data. Apa cara paling sederhana untuk menghitung persentil dari beberapa saat. Apakah ada pendekatan yang lebih baik yang melibatkan hanya menyimpan sejumlah kecil data?

jonderry
sumber
2
Apakah Anda tahu sesuatu yang spesifik tentang properti distribusi aliran Anda? Misalnya, apakah mereka, katakanlah, positif? Terikat? Setiap detail lain yang dapat Anda berikan akan sangat membantu. Momen cukup mudah untuk dihitung dan disimpan untuk streaming. Ada juga pertanyaan sebelumnya di sini tentang memperkirakan secara langsung kuantil dari aliran, yang terdengar seperti apa yang sebenarnya Anda coba lakukan. Anda mungkin mencari, dan melihat, itu.
kardinal
Mereka mewakili waktu pemrosesan, sehingga mereka positif, dan sebagian besar terkelompok erat kecuali ada semacam masalah teknis atau kelebihan dalam sistem. Saya akan mencari pertanyaan kuantil; mereka mungkin cukup baik. Namun saya masih penasaran bagaimana beralih dari momen ke menghitung nilai yang terkait dengan persentil sewenang-wenang. Saya tahu menyimpan momen itu mudah, itu cara menggunakannya yang saya tidak tahu.
jonderry
Apakah Anda melihat pertanyaan ini ?
kardinal

Jawaban:

15

Anda tidak menyatakan ini secara eksplisit, tetapi dari uraian masalah Anda, sepertinya Anda mencari kumpulan kuantil yang bias tinggi (mis. Persentil ke-50, ke-90, ke-95, dan ke-99).

Jika itu masalahnya, saya sudah banyak sukses dengan metode yang dijelaskan dalam "Perhitungan Efektif dari Bias Kuantitas atas Aliran Data" oleh Cormode et al. Ini adalah algoritma cepat yang membutuhkan sedikit memori dan itu mudah diimplementasikan.

Metode ini didasarkan pada algoritma sebelumnya oleh Greenwald dan Khanna yang mempertahankan sampel kecil dari aliran input bersama dengan batas atas dan bawah pada peringkat nilai-nilai dalam sampel. Ini membutuhkan lebih banyak ruang daripada kumpulan beberapa momen, tetapi akan jauh lebih baik dalam menggambarkan wilayah ekor yang menarik dari distribusi secara akurat.

NPE
sumber
1
Ya, ini memang jalan yang harus ditempuh. sebenarnya itu sedikit lebih mudah untuk mendapatkan perkiraan dari kuantil tinggi, terutama jika Anda bersedia mentolerir kesalahan dalam peringkat bentuk mana adalah jumlah total item, dan \ epsilon> 0 $ adalah beberapa pengguna didefinisikan istilah kesalahanϵnn
Suresh Venkatasubramanian
2

Ada algoritma yang lebih baru dan lebih sederhana untuk ini yang memberikan perkiraan yang sangat baik dari quantiles ekstrim.

Ide dasarnya adalah bahwa nampan yang lebih kecil digunakan pada ekstrem dengan cara yang membatasi ukuran struktur data dan menjamin akurasi yang lebih tinggi untuk kecil atau besar . Algoritma ini tersedia dalam beberapa bahasa dan banyak paket. Versi MergingDigest tidak memerlukan alokasi dinamis ... setelah MergingDigest dibuat, tidak ada alokasi heap lebih lanjut yang diperlukan.q

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

Ted Dunning
sumber