7 ms·
Related to this, one of my favourite articles [1] suggests that it’s sufficient to only use one or two pieces of memory to get good estimates. Here’s a pretty a
by tadkar 6y ago
Related to this, one of my favourite articles [1] suggests that it’s sufficient to only use one or two pieces of memory to get good estimates. Here’s a pretty amazing result from the paper. To estimate the median (loosely) on a stream, first set the median estimate m to 0 prior to seeing any data. Then as you observe the stream, increase the median estimate m by 1 if the current element s is bigger than m. Do nothing if the current element is the same as m. Decrease the estimate by 1 if the element is less than m. Then (given the right conditions) this process converges to the median. You can even extend this to quantiles by flipping a biased coin and then updating based on the result of the flip as well as the element comparison.
The unfortunately now deceased neustar research blog had an interactive widget as well an outstanding write up[2]
[1]https://arxiv.org/abs/1407.1121 https://arxiv.org/abs/1407.1121
[2] http://content.research.neustar.biz/blog/frugal.html http://content.research.neustar.biz/blog/frugal.html
- stellalo 6y agoThat is essentially an online subgradient descent, with fixed stepsize 1, for minimizing the L1 loss.
- tadkar 6y agoAnd would the 2 memory algorithm be equivalent to a gradient descent with momentum? I used to know what a sub gradient was, but I think there must be something more to the ideas in the paper because I’m struggling to see the analogy between gradient descent where you take steps probabilistically and the algorithm described. Perhaps I need to think about how you could potentially recast the quantile estimation problem as an optimisation problem and then apply what is effectively the machinery developed the train neural nets. Very interesting connection!
- stellalo 6y agoRecasting quantile estimation as an optimization problem is trivial: the q-quantile minimizes the “pinball” loss (see first eqn in http://statweb.stanford.edu/~owen/courses/305a/lec18.pdf http://statweb.stanford.edu/~owen/courses/305a/lec18.pdf) with parameter q. What they do in the paper is to take subgradient steps with respect to the latest observation (just think about subgradients as gradients, since the loss function is everywhere differentiable except for one point)
- zaroth 6y agoI hate it when the complexity of the lingo dramatically exceeds the complexity of the algorithm. Language shouldn’t be the barrier to understanding. This seems to be particularly true in computer learning. We’re taking about a conditional step function here, right?
- eru 6y agoThe lingo is complex here, because it's general enough to be used for much more complicated cases. Think of it as a 'hello world' program. The typically 'hello world' program in eg Java teaches you more about the lingo of Java than about solving the problem of putting 'hello world' on the screen. (Of course, there are still plenty of bad reasons to describe simple things in complex lingo. But the above is one good reason.)
- stellalo 6y agoActually, it looks like in the paper something else is going on other than subgradient steps: there is some more randomization going on, that can prevent some steps from being taken. So yeah, there is a connection with online subgradient, but also more to it :-)
- tadkar 6y agoThanks for the loss function reference! I wonder if there’s something waiting to be discovered here about doing gradient descent but only taking steps with some probability. Definitely something to think about, I can’t imagine this idea hasn’t been explored before. Thanks a lot for the insightful comments, I’ve definitely seen that work in a very new light after knowing about it for years!!
- ppereira 6y agoSee quantile regression and hinge loss functions.
- srean 6y agoYes indeed. I was quite startled when I saw that article published as I had been using this very method for years. Once you make the connection that quantiles (and not just a median) are the minimum of a suitably chosen loss function the rest is very straightforward. Then there is expectiles too.
- bollu 6y agoCan you offer an ELIUndergrad of what an expectile is and where I can read more about them?
- DavidSJ 6y agoThe introduction here appears to explain: https://projecteuclid.org/download/pdfview_1/euclid.ejs/1473187646 https://projecteuclid.org/download/pdfview_1/euclid.ejs/1473... Starting from the observation that the expectation of X is the constant c which minimizes the squared loss E[(X - c)^2], we can now generalize expectation by generalizing the loss function we aim to minimize. They do this by asymmetrically weighting over- or under-estimates, unlike the squared loss which is symmetric. This apparently has nice properties which the paper goes into.
- srean 6y agoI think everyone has left the building. Just in case you are still here let me try. BTW am a fan of your popular math stuff. TLDR expectiles are to mean what quantiles are to median. A longer explanation follows. Mean can be looked upon as a location that minimizes a scheme of penalizing your 'prediction' of (many instances of) a random quantity. You can assume that the instances will be revealed after you have made the prediction. If your prediction is over/larger by e you will be penalized by e^2. If your prediction is lower by e then also the penalty is e^2. This makes mean symmetric. It punishes overestimates the same way as underestimates. Now if you were to be punished by absolute value |e| as opposed to e^2 then median would be your best prediction. Lets denote the error by e+ if the error is an over-estimate and -e- if its under. Both e+ and e- are non-negative. Now if the penalties were to be * e+ + a e- * that would have led to the different quantiles depending on the values of a > 0. Note a \neq 1 introduces the asymmetry. If you were to do introduce a similar asymmetric treatment of e+^2 and e-^2 that would have given rise to expectiles.
- zorgmonkey 6y agoWayback Machine to the rescue yet again https://web.archive.org/web/20140327021232/http://blog.aggregateknowledge.com/2013/09/16/sketch-of-the-day-frugal-streaming/ https://web.archive.org/web/20140327021232/http://blog.aggre...
- hnracer 6y agoThis is cool. What if the median is something like 0.03 and we know the order of magnitude. Would it be better to increment/decrement by 0.01 instead of 1? Also, can we initiate the filter to a sensible nonzero value instead of zero to speed up convergence and start off with a sensible estimate? I'm guessing the answer to both questions is yes.
- mehrdadn 6y agoThis is a horrible algorithm... just imagine trying to find the median of {100, 101, 102, 103, 104}... your estimate would be 5 which is ridiculous. At the very least, you probably don't want your estimate to be in {-1, 0, +1} after seeing one element -- you want it to be that element instead. The conditions required for this to converge are incredibly strict - it's cool from a theoretical standpoint regarding the memory usage, but I wouldn't use it as anything in practice.
- fwip 6y agoIf you're trying to reduce the memory usage of calculating the median, you're not motivated by 5 element streams. Further, I don't think "number of items > k*median" is a particularly grueling criterion for this algorithm (where k is some constant based on the delta). Here is the first paragraph of the Introduction, for your reference: > Modern applications require processing streams of data for estimating statistical quantities such as quantiles with small amount of memory. A typical application is in IP packet analysis systems such as Gigascope [8] where an example of a query is to find the median packet (or flow) size for IP streams from some given IP address. Since IP addresses send millions of packets in reasonable time windows, it is prohibitive to store all packet or flow sizes and estimate the median size. Another application is in social networking sites such as Facebook or Twitter where there are rapid updates from users, and one is interested in median time between successive updates from a user. In yet another example, search engines can model their search traffic and for each search term, want to estimate the median time between successive instances of that search. You can also read the paper to see how they implement Frugal-2U, which has better convergence characteristics for twice the memory. They even address your specific complaint: "Note that Frugal-1U and Frugal-2U algorithms are initialized by 0, but in practice they can be initialized by the first stream item to reduce the time needed to converge to true quantiles."
- p1necone 6y agoI think the intent is to calculate medians on longer running streams of data than that. Why would you even use this algorithm for 5 values?
- 6y ago
- diroussel 6y agoYou can compute a sliding window average with the same amount of storage, and greater accuracy.
- nitrogen 6y agoThis is definitely not my field, but a sliding window requires N values to be stored (the window size, so you can subtract each element that ages out of the window from the running sum), while this appears to require only 1 value to be stored.