{"title": "A Bayesian Nonparametric View on Count-Min Sketch", "book": "Advances in Neural Information Processing Systems", "page_first": 8768, "page_last": 8777, "abstract": "The count-min sketch is a time- and memory-efficient randomized data structure that provides a point estimate of the number of times an item has appeared in a data stream. The count-min sketch and related hash-based data structures are ubiquitous in systems that must track frequencies of data such as URLs, IP addresses, and language n-grams. We present a Bayesian view on the count-min sketch, using the same data structure, but providing a posterior distribution over the frequencies that characterizes the uncertainty arising from the hash-based approximation. In particular, we take a nonparametric approach and consider tokens generated from a Dirichlet process (DP) random measure, which allows for an unbounded number of unique tokens. Using properties of the DP, we show that it is possible to straightforwardly compute posterior marginals of the unknown true counts and that the modes of these marginals recover the count-min sketch estimator, inheriting the associated probabilistic guarantees. Using simulated data with known ground truth, we investigate the properties of these estimators. Lastly, we also study a modified problem in which the observation stream consists of collections of tokens (i.e., documents) arising from a random measure drawn from a stable beta process, which allows for power law scaling behavior in the number of unique tokens.", "full_text": "A Bayesian Nonparametric View\n\non Count-Min Sketch\n\nDiana Cai\n\nPrinceton University\n\ndcai@cs.princeton.edu\n\nMichael Mitzenmacher\n\nHarvard University\n\nmichaelm@eecs.harvard.edu\n\nRyan P. Adams\n\nPrinceton University\nrpa@princeton.edu\n\nAbstract\n\nThe count-min sketch is a time- and memory-ef\ufb01cient randomized data structure\nthat provides a point estimate of the number of times an item has appeared in a data\nstream. The count-min sketch and related hash-based data structures are ubiquitous\nin systems that must track frequencies of data such as URLs, IP addresses, and\nlanguage n-grams. We present a Bayesian view on the count-min sketch, using\nthe same data structure, but providing a posterior distribution over the frequencies\nthat characterizes the uncertainty arising from the hash-based approximation. In\nparticular, we take a nonparametric approach and consider tokens generated from a\nDirichlet process (DP) random measure, which allows for an unbounded number\nof unique tokens. Using properties of the DP, we show that it is possible to\nstraightforwardly compute posterior marginals of the unknown true counts and that\nthe modes of these marginals recover the count-min sketch estimator, inheriting\nthe associated probabilistic guarantees. Using simulated data and text data, we\ninvestigate the properties of these estimators. Lastly, we also study a modi\ufb01ed\nproblem in which the observation stream consists of collections of tokens (i.e.,\ndocuments) arising from a random measure drawn from a stable beta process,\nwhich allows for power law scaling behavior in the number of unique tokens.\n\n1\n\nIntroduction\n\nModern software systems often involve large data streams [20] such as text queries, real-time network\ntraf\ufb01c, \ufb01nancial data, and social media activity. These systems are often required to detect anomalous\ndata or report the frequencies of events and patterns in the stream. When processing these high-\nvolume data streams, it is critical to compactly represent the data so that these analyses can be\nef\ufb01ciently extracted. Ideally, it would be possible to estimate useful properties of the data stream in\nonly a single pass using an amount of memory that is of constant size.\nThese practical desiderata for large-scale, real-time data analysis have led to the idea of constructing\na sketch: a randomized data structure that can be easily updated and queried for approximate statistics\nof the stream. Variants of sketching ideas have found applications in many areas, including machine\nlearning [1], security [10], and natural language processing [15]. Of particular interest has been the\nproblem of estimating the frequency of tokens in a data stream (e.g., Misra and Gries [19], Charikar\net al. [4], Cohen and Matias [6], Cormode and Muthukrishnan [8]), and a notable approach to this\nproblem is the count-min sketch [8] (and its cousins such as the counting Bloom \ufb01lter [13]), which\nuses random hash families to approximate these counts.\nThe count-min sketch is appealing because it successfully achieves the goal of using a compressed\nrepresentation to save space in storing approximate frequency statistics of the data stream, with\nprovable performance guarantees on the answers returned by those queries. Nevertheless, there are\nseveral aspects of the count-min sketch that might be improved upon by taking a different probabilistic\nview. First, the count-min sketch provides only point estimates of the statistics of interest, even\n\n32nd Conference on Neural Information Processing Systems (NeurIPS 2018), Montr\u00e9al, Canada.\n\n\fthough the hashing procedure may induce substantial uncertainty. This uncertainty is particularly\nsalient when estimating infrequent events. Second, the guarantees associated with hash-based data\nstructures typically assume a \ufb01nite universe of possible tokens in the stream. We would expect real\ndata streams to have an unbounded number of unique tokens, as, e.g., people invent new hashtags and\nconstruct new web pages. Third, we often have a priori knowledge of the statistics of the data stream,\nand it is desirable to incorporate this knowledge into the estimates.\nHere we instead take a Bayesian nonparametric view on the estimates arising from the count-min\nsketch data structure. We assume that the tokens in the stream are drawn from an unknown discrete\ndistribution, and that this distribution has a Dirichlet process prior. The unique projective properties\nof the Dirichlet process interact elegantly with the partitioning induced by the random hashes. This,\ncombined with the simple form of the resulting predictive distribution, makes it possible to reason\nstraightforwardly about the posterior over the unknown true number of counts of a token, given the\ncounts stored in the data structure. Notably, the maximum a posteriori estimate arising from this\nprocedure recovers the count-min sketch estimator for some regimes of the Dirichlet process prior,\nand other posterior-derived point estimates can be viewed as \u201ccount-min sketch with shrinkage.\u201d The\nBayesian nonparametric view also leads to useful alternative data structures with strong similarities\nto count-min sketch; we examine one such example in which the stream is composed of \u201cdocuments\u201d\nfrom a random measure induced by a stable beta-Bernoulli process.\nThe paper is structured as follows. We \ufb01rst review count-min sketch and the resulting frequentist\nguarantees on the point estimates. Next, we review the Dirichlet process, revisiting the assumptions\nabout the sketched data stream, leading to a form for the posterior marginals over the counts. We then\nexamine the properties of these posterior marginals, relating them to the classical count-min sketch\nestimators in theory and simulation. Finally, we propose an alternative nonparametric approach based\non the stable beta process, which enables the modeling of power law behavior in the stream.\n\n2 The Count-Min Sketch\n\nThe count-min (CM) sketch [8] is a randomized data structure that uses random hashing to approxi-\nmate count statistics of a data stream of tokens. Let x1, x2, . . . , xM be an arbitrary stream of tokens\ntaking values in a set V, e.g., language n-grams, IP addresses, hashtags, or URLs. A point query\nestimates \u03b7v, the number of times the token of type v \u2208 V has appeared in the stream. The goal of a\nsketch is to estimate such quantities without explicitly storing the elements or the counts.\nIn the classical count-min sketch, N hash functions hn : V \u2192 [J], where [J] := {1, . . . , J} and\n|V| (cid:29) J, are chosen uniformly at random from a pairwise independent hash family H. That is,\na random h \u2208 H has the property that for all v1, v2 \u2208 V, such that v1 (cid:54)= v2, the probability that v1\nand v2 hash to values j1, j2 \u2208 [J] is\nPr\nh\u2208H(h(v1) = j1, h(v2) = j2) =\n\n1\nJ 2 .\n\nThe sketch data structure C = [cn,j]n\u2208[N ],j\u2208[J] is an array of counts of size N \u00d7 J. When an\nobservation of type v arrives, the sketch is updated: for all n \u2208 [N ], the counter associated with v\nvia hn is incremented via cn,hn(v) \u2190 cn,hn(v) + 1. Then the point query of a new token x returns\nthe minimum count over all of the hash functions: \u02c6\u03b7CM\nx = minn\u2208[N ] cn,hn(x). That is, it returns the\ncount associated with the fewest collisions. This provides an upper bound on the true count. For an\narbitrary data stream with M tokens, the CM sketch satis\ufb01es the following probabilistic guarantee.\nTheorem 1 (Cormode and Muthukrishnan [8], Theorem 1). Let J = (cid:100) e\n\u0001(cid:101) and N = (cid:100)log 1\n\u03b4(cid:101),\nx \u2265 \u03b7x and with probability\nwith \u0001 > 0, \u03b4 > 0. Then the estimate of the count \u02c6\u03b7CM\nat least 1 \u2212 \u03b4, the estimate satis\ufb01es \u02c6\u03b7CM\nThe count-min sketch can also be used to compute other queries, such range and inner product\nqueries; though we focus on the point query in this work, analogous Bayesian reasoning can also\nbe applied to these other types of queries. Count-min sketches have been considered in the context\nof speci\ufb01c token distributions but without Bayesian reasoning; for example, one can derive better\nprobabilistic bounds when the distribution is known to come from a \u201cpower law\u201d distribution [7].\nAn extension of the classical CM sketch that works well in practice is conservative updates [11]; in\nour setting, we observe one token at a time, and so the conservative update is equivalent to simply\nincrementing the minimum counter(s). For more background on the count-min sketch, extensions,\nand variants, see Cormode et al. [9, Sec. 5] and references therein.\n\nx \u2264 \u03b7x + \u0001M.\n\nsatis\ufb01es \u02c6\u03b7CM\n\nx\n\n2\n\n\f3 Bayesian Estimates from the Count-Min Sketch\n\nThe count-min sketch offers a remarkable balance between ef\ufb01ciency and accuracy, but it nevertheless\nachieves its computational performance by throwing information away. This loss of information\noccurs via hash collisions. Although we do not know when these collisions have occurred and\ndamaged our estimates, it is possible to reason about the uncertainty arising from the possibility of\ncollision. Taking a Bayesian view, for a given token x, the values in the data structure {cn,hn(x)}N\nn=1\nare the observations, and we wish to induce a posterior distribution over the true count \u03b7x by\nconditioning upon them. To compute this posterior distribution, we must identify a prior over the\ncounts, and we must also reason about the count-min sketch as a likelihood function. In this section,\nwe describe how to compute the posterior count under a Dirichlet process (DP) prior, marginalizing\nout the random measure. We do not alter the underlying count-min sketch data structure. The proofs\nfor this section are presented in Appendix D and Appendix E.\n\n3.1 The Dirichlet Process\nAs before, we assume the tokens are from a set V. Let G be a continuous probability base measure\non the measurable space (V,F), and let \u03b1 > 0 be the concentration parameter. The base measure is\nthe mean of the prior on the unknown token generating distribution, and \u03b1 can be thought of as an\n\u201cinverse variance\u201d that determines how similar the random measures are to G. The Dirichlet process\n[14] is de\ufb01ned by the property that for all \ufb01nite partitions of V, the distribution over the measures\nof those partitions is Dirichlet. That is, for all \ufb01nite, measurable partitions A1, . . . , AN \u2282 V, the\nrandom measure H \u223c DP(G, \u03b1) has the property\n\nH(A1), . . . , H(AN )| G, \u03b1,{An}N\n\nn=1 \u223c Dirichlet(\u03b1G(A1), . . . , \u03b1G(AN )) .\n\n(1)\n\nThis implies for the present construction that renormalized restrictions of the random measure\nare also Dirichlet process distributed. That is, if A \u2282 V and HA is the marginal renormalized\nrandom measure on A induced by the DP on V with concentration parameter \u03b1 and base measure G,\nthen HA \u223c DP(GA/G(A), \u03b1G(A)), where GA is the base measure restricted to A. This property\ncan also be derived by observing that the Dirichlet process is a normalized gamma process, which\nhas a Poisson process representation admitting the Poisson coloring theorem [17] (see Appendix C).\nThe Dirichlet process produces random measures that are discrete with probability one. This\ndiscreteness implies that observations drawn from a DP random measure have positive probability\nof having repeated values. If we take data with the same value to be part of the same group, then\nthis provides a random partition of M data points. Integrating out the random measure H results in\nan object called the Chinese restaurant process (CRP) [2], which induces an exchangeable random\npartition of a \ufb01nite data set. The CRP is most commonly discussed via its predictive distribution,\nwhich we describe in the language of our token stream: if xm is the mth token in the stream, \u03b7v is\nthe number of previous tokens taking that value, then xm is distributed according to\n\nPr(xm = v | x1, x2, . . . , xm\u22121, \u03b1) =\n\nif v is a previously seen token\nif v is a novel token\n\n.\n\n(2)\n\n(cid:40) \u03b7v\n\n\u03b1+m\u22121\n\u03b1+m\u22121\n\n\u03b1\n\n3.2 Bayesian Point Query: a Distribution Over the Count of a Token\n\nIn the classical CM sketch setting, the point query for a token returns the minimum value in the\nassociated counters. In a Bayesian setting, the point query induces instead a posterior distribution\nover the unknown true counts of a token, conditioned on the observed counts in the counter array C.\nReturning a distribution over possible counts allows us to quantify the uncertainty in the count of\na token. While our goal is not to compute a point estimate for the count, such an estimate can\nbe obtained from the posterior count distribution by considering, for instance, the posterior mean,\nmedian, or mode (MAP), the properties of which we describe in Section 3.4.\nThe posterior of the count summarized in Theorem 2 relies on two results: (1) the distribution of\ntokens in each bucket is a Chinese restaurant process with parameter \u03b1/J, and (2) the posterior of\na single hash can be obtained from the CRP(\u03b1/J) distribution (Proposition 1). A key assumption\ninforming these results is that the point queries are drawn from the same distribution as the stream,\n\n3\n\n\fFigure 1: Top: Tokens are generated from a CRP(\u03b1) distribution, where the large circles represent\ntables from the Chinese Restaurant analogy, each labeled by the token type, and small circles denote\nthe tokens in the data stream x1, x2, . . .. Bottom left: The update operation hashes tokens and\nincrements the associated counters, and information regarding the type of the token (denoted by\nthe colored circles) is therefore lost when making a query. Each bucket in the hash now follows a\nCRP(\u03b1/J) distribution. Bottom right: The Bayesian point query for each token uses the respective\ncounters (denoted by the colored rectangles) as observations for the posterior count distribution.\n\ni.e., we make queries about tokens as they come in on the stream. This assumption makes it possible\nto reason about the queries via the predictive distribution induced by the Chinese restaurant process.\nThe count-min sketch data structure can be thought of as creating N collections of J \u201cbuckets,\u201d each\nof which aggregates the counts for all x where hn(x) = j. The posterior distribution of interest essen-\ntially tries to undo the collisions that caused this aggregation. Assume that H is a truly random hash\nfamily, i.e., for h : V \u2192 [J] drawn uniformly at random from H, the random variables (h(x))x\u2208V\nare i.i.d. uniform over [J]. Note that the count-min sketch bounds from Theorem 1 only depend on\npairwise-independent hash families. We discuss this further in Section 3.5.\nUniformity of h \u223c H implies that each hn induces a J-partition of V, and the measure with respect\nto H of each class of the J-partition is 1/J. Thus, using the restriction property of the Dirichlet\nprocess, the hash function turns a global DP governing the distribution over tokens in the stream\ninto a collection of J bucket-speci\ufb01c DPs that govern only the tokens that hashed there. Moreover,\nwithin each of these buckets, the unknown random measure can be marginalized out, and the structure\ncan be manipulated as the simpler Chinese restaurant process. The CRP has precisely the structure\nthat we seek to reason about in our point query: some \ufb01nite number of objects have hashed into\nthis bucket, and we need to construct a posterior on how those might be partitioned into groups of\nidentical tokens. In the parlance of the Chinese restaurant metaphor, we know how many people have\ncome into the restaurant, but we have lost the information about who is sitting at which table; a new\ncustomer comes in (the query) and wants to know how many people should be sitting at their table\ngiven the total number of customers.\nLet \u03b1 be the global Dirichlet process concentration parameter. Then, the bucket-speci\ufb01c DP parameter\nis \u03b1(cid:48) := \u03b1/J. The posterior distribution of interest is\n\nN(cid:89)\n\nn=1\n\nPr(\u03b7x = k |{cn,hn(x)}N\n\nn=1, \u03b1) \u221d Pr(\u03b7x = k | \u03b1)\n\nPr(cn,hn(x) | \u03b7x = k, \u03b1) .\n\n(3)\n\nHowever, there is a simpler interpretation for each of the terms in the likelihood function. Consider\nthe random partitioning of c items according to a CRP. For a \ufb01xed such partition, the predictive\ndistribution of Equation (2) induces a distribution over which subset a new item will join, and so the\nexisting size of that subset is also a random variable. That existing size is precisely the quantity \u03b7x\nwe seek to estimate. For a \ufb01xed (integer) partition \u03c0, let \u03c0k be the number of subsets of size k,\n\n4\n\nExample stream: #cat, #dog, #cat, #fox, #bear, #cat, #fox \u2026 ~ CRP(alpha)#cat#fox#dog#bear#lion#zebra\u2026\u21e0CRP(\u21b5)AAACEXicbZDLSgMxGIUzXmu9jbpw4SZYhLopMyLostCN4KaKvUBnKJk004YmM0Pyj1iGAd/BR3CrD+BO3PoErn0R08tCWw8EDuf84U++IBFcg+N8WUvLK6tr64WN4ubW9s6uvbff1HGqKGvQWMSqHRDNBI9YAzgI1k4UIzIQrBUMa+O+dc+U5nF0B6OE+ZL0Ix5ySsBEXfvQ01xiD9gDZLXbel72iEgG5LRrl5yKMxFeNO7MlNBM9a797fVimkoWARVE647rJOBnRAGnguVFL9UsIXRI+qxjbEQk0342+UCOT0zSw2GszIkAT9LfNzIitR7JwExKAgM9343Df7sgkHOrIbz0Mx4lKbCITjeHqcAQ4zEe3OOKURAjYwhV3Dwe0wFRhIKBWDRU3HkGi6Z5VnGdintzXqpeP075FNAROkZl5KILVEVXqI4aiKIcPaMX9Go9WW/Wu/UxHV2yZkwP0B9Znz+rJp2eAAACEXicbZDLSgMxGIUzXmu9jbpw4SZYhLopMyLostCN4KaKvUBnKJk004YmM0Pyj1iGAd/BR3CrD+BO3PoErn0R08tCWw8EDuf84U++IBFcg+N8WUvLK6tr64WN4ubW9s6uvbff1HGqKGvQWMSqHRDNBI9YAzgI1k4UIzIQrBUMa+O+dc+U5nF0B6OE+ZL0Ix5ySsBEXfvQ01xiD9gDZLXbel72iEgG5LRrl5yKMxFeNO7MlNBM9a797fVimkoWARVE647rJOBnRAGnguVFL9UsIXRI+qxjbEQk0342+UCOT0zSw2GszIkAT9LfNzIitR7JwExKAgM9343Df7sgkHOrIbz0Mx4lKbCITjeHqcAQ4zEe3OOKURAjYwhV3Dwe0wFRhIKBWDRU3HkGi6Z5VnGdintzXqpeP075FNAROkZl5KILVEVXqI4aiKIcPaMX9Go9WW/Wu/UxHV2yZkwP0B9Znz+rJp2eAAACEXicbZDLSgMxGIUzXmu9jbpw4SZYhLopMyLostCN4KaKvUBnKJk004YmM0Pyj1iGAd/BR3CrD+BO3PoErn0R08tCWw8EDuf84U++IBFcg+N8WUvLK6tr64WN4ubW9s6uvbff1HGqKGvQWMSqHRDNBI9YAzgI1k4UIzIQrBUMa+O+dc+U5nF0B6OE+ZL0Ix5ySsBEXfvQ01xiD9gDZLXbel72iEgG5LRrl5yKMxFeNO7MlNBM9a797fVimkoWARVE647rJOBnRAGnguVFL9UsIXRI+qxjbEQk0342+UCOT0zSw2GszIkAT9LfNzIitR7JwExKAgM9343Df7sgkHOrIbz0Mx4lKbCITjeHqcAQ4zEe3OOKURAjYwhV3Dwe0wFRhIKBWDRU3HkGi6Z5VnGdintzXqpeP075FNAROkZl5KILVEVXqI4aiKIcPaMX9Go9WW/Wu/UxHV2yZkwP0B9Znz+rJp2eAAACEXicbZDLSgMxGIUzXmu9jbpw4SZYhLopMyLostCN4KaKvUBnKJk004YmM0Pyj1iGAd/BR3CrD+BO3PoErn0R08tCWw8EDuf84U++IBFcg+N8WUvLK6tr64WN4ubW9s6uvbff1HGqKGvQWMSqHRDNBI9YAzgI1k4UIzIQrBUMa+O+dc+U5nF0B6OE+ZL0Ix5ySsBEXfvQ01xiD9gDZLXbel72iEgG5LRrl5yKMxFeNO7MlNBM9a797fVimkoWARVE647rJOBnRAGnguVFL9UsIXRI+qxjbEQk0342+UCOT0zSw2GszIkAT9LfNzIitR7JwExKAgM9343Df7sgkHOrIbz0Mx4lKbCITjeHqcAQ4zEe3OOKURAjYwhV3Dwe0wFRhIKBWDRU3HkGi6Z5VnGdintzXqpeP075FNAROkZl5KILVEVXqI4aiKIcPaMX9Go9WW/Wu/UxHV2yZkwP0B9Znz+rJp2eUpdate: hash token and increment counters Query: how many times did I see \u201c#cat\u201d?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c12=5AAACAnicbVC7SgNBFL0bXzG+opY2g0GwCrtB0UYI2GgXwTwwWcLsZDYZMjO7zMwKYUnnJ9jqB9iJrT9i7Y842WyhiQcuHM65l3M5QcyZNq775RRWVtfWN4qbpa3tnd298v5BS0eJIrRJIh6pToA15UzSpmGG006sKBYBp+1gfD3z249UaRbJezOJqS/wULKQEWys9ED6qVeboit03i9X3KqbAS0TLycVyNHol797g4gkgkpDONa667mx8VOsDCOcTku9RNMYkzEe0q6lEguq/TT7eIpOrDJAYaTsSIMy9fdFioXWExHYTYHNSC96M/FfLwjEQrQJL/2UyTgxVJJ5cphwZCI06wMNmKLE8IklmChmn0dkhBUmxrZWsq14ix0sk1at6rlV7+6sUr/N+ynCERzDKXhwAXW4gQY0gYCEZ3iBV+fJeXPenY/5asHJbw7hD5zPH+VMlsI=AAACAnicbVC7SgNBFL0bXzG+opY2g0GwCrtB0UYI2GgXwTwwWcLsZDYZMjO7zMwKYUnnJ9jqB9iJrT9i7Y842WyhiQcuHM65l3M5QcyZNq775RRWVtfWN4qbpa3tnd298v5BS0eJIrRJIh6pToA15UzSpmGG006sKBYBp+1gfD3z249UaRbJezOJqS/wULKQEWys9ED6qVeboit03i9X3KqbAS0TLycVyNHol797g4gkgkpDONa667mx8VOsDCOcTku9RNMYkzEe0q6lEguq/TT7eIpOrDJAYaTsSIMy9fdFioXWExHYTYHNSC96M/FfLwjEQrQJL/2UyTgxVJJ5cphwZCI06wMNmKLE8IklmChmn0dkhBUmxrZWsq14ix0sk1at6rlV7+6sUr/N+ynCERzDKXhwAXW4gQY0gYCEZ3iBV+fJeXPenY/5asHJbw7hD5zPH+VMlsI=AAACAnicbVC7SgNBFL0bXzG+opY2g0GwCrtB0UYI2GgXwTwwWcLsZDYZMjO7zMwKYUnnJ9jqB9iJrT9i7Y842WyhiQcuHM65l3M5QcyZNq775RRWVtfWN4qbpa3tnd298v5BS0eJIrRJIh6pToA15UzSpmGG006sKBYBp+1gfD3z249UaRbJezOJqS/wULKQEWys9ED6qVeboit03i9X3KqbAS0TLycVyNHol797g4gkgkpDONa667mx8VOsDCOcTku9RNMYkzEe0q6lEguq/TT7eIpOrDJAYaTsSIMy9fdFioXWExHYTYHNSC96M/FfLwjEQrQJL/2UyTgxVJJ5cphwZCI06wMNmKLE8IklmChmn0dkhBUmxrZWsq14ix0sk1at6rlV7+6sUr/N+ynCERzDKXhwAXW4gQY0gYCEZ3iBV+fJeXPenY/5asHJbw7hD5zPH+VMlsI=AAACAnicbVC7SgNBFL0bXzG+opY2g0GwCrtB0UYI2GgXwTwwWcLsZDYZMjO7zMwKYUnnJ9jqB9iJrT9i7Y842WyhiQcuHM65l3M5QcyZNq775RRWVtfWN4qbpa3tnd298v5BS0eJIrRJIh6pToA15UzSpmGG006sKBYBp+1gfD3z249UaRbJezOJqS/wULKQEWys9ED6qVeboit03i9X3KqbAS0TLycVyNHol797g4gkgkpDONa667mx8VOsDCOcTku9RNMYkzEe0q6lEguq/TT7eIpOrDJAYaTsSIMy9fdFioXWExHYTYHNSC96M/FfLwjEQrQJL/2UyTgxVJJ5cphwZCI06wMNmKLE8IklmChmn0dkhBUmxrZWsq14ix0sk1at6rlV7+6sUr/N+ynCERzDKXhwAXW4gQY0gYCEZ3iBV+fJeXPenY/5asHJbw7hD5zPH+VMlsI=c13=0AAACAnicbVC7SgNBFL3rM8ZX1NJmMAhWYVcFbYSAjXYRzAOTJcxOZpMh81hmZoWwpPMTbPUD7MTWH7H2R5wkW2jigQuHc+7lXE6UcGas7395S8srq2vrhY3i5tb2zm5pb79hVKoJrRPFlW5F2FDOJK1bZjltJZpiEXHajIbXE7/5SLVhSt7bUUJDgfuSxYxg66QH0s2CszG6Qn63VPYr/hRokQQ5KUOOWrf03ekpkgoqLeHYmHbgJzbMsLaMcDoudlJDE0yGuE/bjkosqAmz6cdjdOyUHoqVdiMtmqq/LzIsjBmJyG0KbAdm3puI/3pRJOaibXwZZkwmqaWSzJLjlCOr0KQP1GOaEstHjmCimXsekQHWmFjXWtG1Esx3sEgap5XArwR35+Xqbd5PAQ7hCE4ggAuowg3UoA4EJDzDC7x6T96b9+59zFaXvPzmAP7A+/wB3v2Wvg==AAACAnicbVC7SgNBFL3rM8ZX1NJmMAhWYVcFbYSAjXYRzAOTJcxOZpMh81hmZoWwpPMTbPUD7MTWH7H2R5wkW2jigQuHc+7lXE6UcGas7395S8srq2vrhY3i5tb2zm5pb79hVKoJrRPFlW5F2FDOJK1bZjltJZpiEXHajIbXE7/5SLVhSt7bUUJDgfuSxYxg66QH0s2CszG6Qn63VPYr/hRokQQ5KUOOWrf03ekpkgoqLeHYmHbgJzbMsLaMcDoudlJDE0yGuE/bjkosqAmz6cdjdOyUHoqVdiMtmqq/LzIsjBmJyG0KbAdm3puI/3pRJOaibXwZZkwmqaWSzJLjlCOr0KQP1GOaEstHjmCimXsekQHWmFjXWtG1Esx3sEgap5XArwR35+Xqbd5PAQ7hCE4ggAuowg3UoA4EJDzDC7x6T96b9+59zFaXvPzmAP7A+/wB3v2Wvg==AAACAnicbVC7SgNBFL3rM8ZX1NJmMAhWYVcFbYSAjXYRzAOTJcxOZpMh81hmZoWwpPMTbPUD7MTWH7H2R5wkW2jigQuHc+7lXE6UcGas7395S8srq2vrhY3i5tb2zm5pb79hVKoJrRPFlW5F2FDOJK1bZjltJZpiEXHajIbXE7/5SLVhSt7bUUJDgfuSxYxg66QH0s2CszG6Qn63VPYr/hRokQQ5KUOOWrf03ekpkgoqLeHYmHbgJzbMsLaMcDoudlJDE0yGuE/bjkosqAmz6cdjdOyUHoqVdiMtmqq/LzIsjBmJyG0KbAdm3puI/3pRJOaibXwZZkwmqaWSzJLjlCOr0KQP1GOaEstHjmCimXsekQHWmFjXWtG1Esx3sEgap5XArwR35+Xqbd5PAQ7hCE4ggAuowg3UoA4EJDzDC7x6T96b9+59zFaXvPzmAP7A+/wB3v2Wvg==AAACAnicbVC7SgNBFL3rM8ZX1NJmMAhWYVcFbYSAjXYRzAOTJcxOZpMh81hmZoWwpPMTbPUD7MTWH7H2R5wkW2jigQuHc+7lXE6UcGas7395S8srq2vrhY3i5tb2zm5pb79hVKoJrRPFlW5F2FDOJK1bZjltJZpiEXHajIbXE7/5SLVhSt7bUUJDgfuSxYxg66QH0s2CszG6Qn63VPYr/hRokQQ5KUOOWrf03ekpkgoqLeHYmHbgJzbMsLaMcDoudlJDE0yGuE/bjkosqAmz6cdjdOyUHoqVdiMtmqq/LzIsjBmJyG0KbAdm3puI/3pRJOaibXwZZkwmqaWSzJLjlCOr0KQP1GOaEstHjmCimXsekQHWmFjXWtG1Esx3sEgap5XArwR35+Xqbd5PAQ7hCE4ggAuowg3UoA4EJDzDC7x6T96b9+59zFaXvPzmAP7A+/wB3v2Wvg==c14=1AAACAnicbVDLSgMxFL1TX7W+qi7dBIvgqkxE0I1QcKO7CvaB7VAyaaYNTTJDkhHK0J2f4FY/wJ249Udc+yOm7Sy09cCFwzn3ci4nTAQ31ve/vMLK6tr6RnGztLW9s7tX3j9omjjVlDVoLGLdDolhgivWsNwK1k40IzIUrBWOrqd+65Fpw2N1b8cJCyQZKB5xSqyTHmgvw+cTdIVwr1zxq/4MaJngnFQgR71X/u72Y5pKpiwVxJgO9hMbZERbTgWblLqpYQmhIzJgHUcVkcwE2ezjCTpxSh9FsXajLJqpvy8yIo0Zy9BtSmKHZtGbiv96YSgXom10GWRcJallis6To1QgG6NpH6jPNaNWjB0hVHP3PKJDogm1rrWSawUvdrBMmmdV7Ffx3Xmldpv3U4QjOIZTwHABNbiBOjSAgoJneIFX78l78969j/lqwctvDuEPvM8f4iyWwA==AAACAnicbVDLSgMxFL1TX7W+qi7dBIvgqkxE0I1QcKO7CvaB7VAyaaYNTTJDkhHK0J2f4FY/wJ249Udc+yOm7Sy09cCFwzn3ci4nTAQ31ve/vMLK6tr6RnGztLW9s7tX3j9omjjVlDVoLGLdDolhgivWsNwK1k40IzIUrBWOrqd+65Fpw2N1b8cJCyQZKB5xSqyTHmgvw+cTdIVwr1zxq/4MaJngnFQgR71X/u72Y5pKpiwVxJgO9hMbZERbTgWblLqpYQmhIzJgHUcVkcwE2ezjCTpxSh9FsXajLJqpvy8yIo0Zy9BtSmKHZtGbiv96YSgXom10GWRcJallis6To1QgG6NpH6jPNaNWjB0hVHP3PKJDogm1rrWSawUvdrBMmmdV7Ffx3Xmldpv3U4QjOIZTwHABNbiBOjSAgoJneIFX78l78969j/lqwctvDuEPvM8f4iyWwA==AAACAnicbVDLSgMxFL1TX7W+qi7dBIvgqkxE0I1QcKO7CvaB7VAyaaYNTTJDkhHK0J2f4FY/wJ249Udc+yOm7Sy09cCFwzn3ci4nTAQ31ve/vMLK6tr6RnGztLW9s7tX3j9omjjVlDVoLGLdDolhgivWsNwK1k40IzIUrBWOrqd+65Fpw2N1b8cJCyQZKB5xSqyTHmgvw+cTdIVwr1zxq/4MaJngnFQgR71X/u72Y5pKpiwVxJgO9hMbZERbTgWblLqpYQmhIzJgHUcVkcwE2ezjCTpxSh9FsXajLJqpvy8yIo0Zy9BtSmKHZtGbiv96YSgXom10GWRcJallis6To1QgG6NpH6jPNaNWjB0hVHP3PKJDogm1rrWSawUvdrBMmmdV7Ffx3Xmldpv3U4QjOIZTwHABNbiBOjSAgoJneIFX78l78969j/lqwctvDuEPvM8f4iyWwA==AAACAnicbVDLSgMxFL1TX7W+qi7dBIvgqkxE0I1QcKO7CvaB7VAyaaYNTTJDkhHK0J2f4FY/wJ249Udc+yOm7Sy09cCFwzn3ci4nTAQ31ve/vMLK6tr6RnGztLW9s7tX3j9omjjVlDVoLGLdDolhgivWsNwK1k40IzIUrBWOrqd+65Fpw2N1b8cJCyQZKB5xSqyTHmgvw+cTdIVwr1zxq/4MaJngnFQgR71X/u72Y5pKpiwVxJgO9hMbZERbTgWblLqpYQmhIzJgHUcVkcwE2ezjCTpxSh9FsXajLJqpvy8yIo0Zy9BtSmKHZtGbiv96YSgXom10GWRcJallis6To1QgG6NpH6jPNaNWjB0hVHP3PKJDogm1rrWSawUvdrBMmmdV7Ffx3Xmldpv3U4QjOIZTwHABNbiBOjSAgoJneIFX78l78969j/lqwctvDuEPvM8f4iyWwA==c21=4AAACAnicbVC7SgNBFL0bXzG+opY2g0GwCrshoI0QsNEugnlgsoTZyWwyZGZ2mZkVwpLOT7DVD7ATW3/E2h9xstlCEw9cOJxzL+dygpgzbVz3yymsrW9sbhW3Szu7e/sH5cOjto4SRWiLRDxS3QBrypmkLcMMp91YUSwCTjvB5Hrudx6p0iyS92YaU1/gkWQhI9hY6YEM0po3Q1eoPihX3KqbAa0SLycVyNEclL/7w4gkgkpDONa657mx8VOsDCOczkr9RNMYkwke0Z6lEguq/TT7eIbOrDJEYaTsSIMy9fdFioXWUxHYTYHNWC97c/FfLwjEUrQJL/2UyTgxVJJFcphwZCI07wMNmaLE8KklmChmn0dkjBUmxrZWsq14yx2sknat6rlV765eadzm/RThBE7hHDy4gAbcQBNaQEDCM7zAq/PkvDnvzsditeDkN8fwB87nD+O4lsE=AAACAnicbVC7SgNBFL0bXzG+opY2g0GwCrshoI0QsNEugnlgsoTZyWwyZGZ2mZkVwpLOT7DVD7ATW3/E2h9xstlCEw9cOJxzL+dygpgzbVz3yymsrW9sbhW3Szu7e/sH5cOjto4SRWiLRDxS3QBrypmkLcMMp91YUSwCTjvB5Hrudx6p0iyS92YaU1/gkWQhI9hY6YEM0po3Q1eoPihX3KqbAa0SLycVyNEclL/7w4gkgkpDONa657mx8VOsDCOczkr9RNMYkwke0Z6lEguq/TT7eIbOrDJEYaTsSIMy9fdFioXWUxHYTYHNWC97c/FfLwjEUrQJL/2UyTgxVJJFcphwZCI07wMNmaLE8KklmChmn0dkjBUmxrZWsq14yx2sknat6rlV765eadzm/RThBE7hHDy4gAbcQBNaQEDCM7zAq/PkvDnvzsditeDkN8fwB87nD+O4lsE=AAACAnicbVC7SgNBFL0bXzG+opY2g0GwCrshoI0QsNEugnlgsoTZyWwyZGZ2mZkVwpLOT7DVD7ATW3/E2h9xstlCEw9cOJxzL+dygpgzbVz3yymsrW9sbhW3Szu7e/sH5cOjto4SRWiLRDxS3QBrypmkLcMMp91YUSwCTjvB5Hrudx6p0iyS92YaU1/gkWQhI9hY6YEM0po3Q1eoPihX3KqbAa0SLycVyNEclL/7w4gkgkpDONa657mx8VOsDCOczkr9RNMYkwke0Z6lEguq/TT7eIbOrDJEYaTsSIMy9fdFioXWUxHYTYHNWC97c/FfLwjEUrQJL/2UyTgxVJJFcphwZCI07wMNmaLE8KklmChmn0dkjBUmxrZWsq14yx2sknat6rlV765eadzm/RThBE7hHDy4gAbcQBNaQEDCM7zAq/PkvDnvzsditeDkN8fwB87nD+O4lsE=AAACAnicbVC7SgNBFL0bXzG+opY2g0GwCrshoI0QsNEugnlgsoTZyWwyZGZ2mZkVwpLOT7DVD7ATW3/E2h9xstlCEw9cOJxzL+dygpgzbVz3yymsrW9sbhW3Szu7e/sH5cOjto4SRWiLRDxS3QBrypmkLcMMp91YUSwCTjvB5Hrudx6p0iyS92YaU1/gkWQhI9hY6YEM0po3Q1eoPihX3KqbAa0SLycVyNEclL/7w4gkgkpDONa657mx8VOsDCOczkr9RNMYkwke0Z6lEguq/TT7eIbOrDJEYaTsSIMy9fdFioXWUxHYTYHNWC97c/FfLwjEUrQJL/2UyTgxVJJFcphwZCI07wMNmaLE8KklmChmn0dkjBUmxrZWsq14yx2sknat6rlV765eadzm/RThBE7hHDy4gAbcQBNaQEDCM7zAq/PkvDnvzsditeDkN8fwB87nD+O4lsE=c22=0AAACAnicbVDLSgMxFL3js9ZX1aWbYBFclUwRdCMU3Oiugn1gO5RMmmlDk8yQZIQydOcnuNUPcCdu/RHX/ohpOwttPXDhcM69nMsJE8GNxfjLW1ldW9/YLGwVt3d29/ZLB4dNE6easgaNRazbITFMcMUallvB2olmRIaCtcLR9dRvPTJteKzu7ThhgSQDxSNOiXXSA+1l1eoEXSHcK5VxBc+AlomfkzLkqPdK391+TFPJlKWCGNPxcWKDjGjLqWCTYjc1LCF0RAas46gikpkgm308QadO6aMo1m6URTP190VGpDFjGbpNSezQLHpT8V8vDOVCtI0ug4yrJLVM0XlylApkYzTtA/W5ZtSKsSOEau6eR3RINKHWtVZ0rfiLHSyTZrXi44p/d16u3eb9FOAYTuAMfLiAGtxAHRpAQcEzvMCr9+S9ee/ex3x1xctvjuAPvM8f3v6Wvg==AAACAnicbVDLSgMxFL3js9ZX1aWbYBFclUwRdCMU3Oiugn1gO5RMmmlDk8yQZIQydOcnuNUPcCdu/RHX/ohpOwttPXDhcM69nMsJE8GNxfjLW1ldW9/YLGwVt3d29/ZLB4dNE6easgaNRazbITFMcMUallvB2olmRIaCtcLR9dRvPTJteKzu7ThhgSQDxSNOiXXSA+1l1eoEXSHcK5VxBc+AlomfkzLkqPdK391+TFPJlKWCGNPxcWKDjGjLqWCTYjc1LCF0RAas46gikpkgm308QadO6aMo1m6URTP190VGpDFjGbpNSezQLHpT8V8vDOVCtI0ug4yrJLVM0XlylApkYzTtA/W5ZtSKsSOEau6eR3RINKHWtVZ0rfiLHSyTZrXi44p/d16u3eb9FOAYTuAMfLiAGtxAHRpAQcEzvMCr9+S9ee/ex3x1xctvjuAPvM8f3v6Wvg==AAACAnicbVDLSgMxFL3js9ZX1aWbYBFclUwRdCMU3Oiugn1gO5RMmmlDk8yQZIQydOcnuNUPcCdu/RHX/ohpOwttPXDhcM69nMsJE8GNxfjLW1ldW9/YLGwVt3d29/ZLB4dNE6easgaNRazbITFMcMUallvB2olmRIaCtcLR9dRvPTJteKzu7ThhgSQDxSNOiXXSA+1l1eoEXSHcK5VxBc+AlomfkzLkqPdK391+TFPJlKWCGNPxcWKDjGjLqWCTYjc1LCF0RAas46gikpkgm308QadO6aMo1m6URTP190VGpDFjGbpNSezQLHpT8V8vDOVCtI0ug4yrJLVM0XlylApkYzTtA/W5ZtSKsSOEau6eR3RINKHWtVZ0rfiLHSyTZrXi44p/d16u3eb9FOAYTuAMfLiAGtxAHRpAQcEzvMCr9+S9ee/ex3x1xctvjuAPvM8f3v6Wvg==AAACAnicbVDLSgMxFL3js9ZX1aWbYBFclUwRdCMU3Oiugn1gO5RMmmlDk8yQZIQydOcnuNUPcCdu/RHX/ohpOwttPXDhcM69nMsJE8GNxfjLW1ldW9/YLGwVt3d29/ZLB4dNE6easgaNRazbITFMcMUallvB2olmRIaCtcLR9dRvPTJteKzu7ThhgSQDxSNOiXXSA+1l1eoEXSHcK5VxBc+AlomfkzLkqPdK391+TFPJlKWCGNPxcWKDjGjLqWCTYjc1LCF0RAas46gikpkgm308QadO6aMo1m6URTP190VGpDFjGbpNSezQLHpT8V8vDOVCtI0ug4yrJLVM0XlylApkYzTtA/W5ZtSKsSOEau6eR3RINKHWtVZ0rfiLHSyTZrXi44p/d16u3eb9FOAYTuAMfLiAGtxAHRpAQcEzvMCr9+S9ee/ex3x1xctvjuAPvM8f3v6Wvg==c23=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\fwhere(cid:80)c\n\n(cid:40) \u03b1\n\nk=1 k\u03c0k = c. The distribution over the size of the subset a new item joins is then\n\nPr(\u03b7x = k | \u03c0, c, \u03b1) =\n\n\u03b1+c\n\u03c0k\n\nk\n\n\u03b1+c\n\nif k = 0\nif k > 0\n\n[creates new size-one subset]\n[\u03c0k opportunities for CRP predictive] .\n\n(4)\n\nThe additional complication however is that, unlike the typical CRP situation, the partitioning itself is\nunknown, and so we must marginalize over it under the prior when computing the distribution on \u03b7x.\nHowever, we can recognize this as simply using the expected number of subsets of a particular size:\nif k = 0\nif k > 0\n\nPr(\u03b7x = k | \u03c0, c, \u03b1) Pr(\u03c0 | c, \u03b1) =\n\nPr(\u03b7x = k | c, \u03b1) =\n\n(cid:40) \u03b1\n\n(cid:88)\n\n(cid:80)\n\n\u03b1+c\n\n1\n\n\u03b1+c\n\n\u03c0 k\u03c0k Pr(\u03c0 | c, \u03b1)\n\nwhere \u03c0k := E[\u03c0k] =\n\n\u03c0k Pr(\u03c0 | c, \u03b1).\n\n(cid:80)c\n\nThe probability of the partition \u03c0 is the EPPF [21] multiplied by the unordered multinomial coef\ufb01cient:\n\nPr(\u03c0 | c, \u03b1) =\n\nc! \u0393(\u03b1)\n\u0393(c + \u03b1)\n\n\u03b1\u03c0k\n\nk\u03c0k \u03c0k!\n\nc! \u03b1\n\n=\n\nk=1 \u03c0k \u0393(\u03b1)\n\n1\n\n\u0393(c + \u03b1)\n\nk\u03c0k \u03c0k!\n\nk=1\n\n,\n\n(5)\n\nwhere \u0393(\u00b7) is the gamma function. For the Dirichlet process, this is also known as the Ewens\u2019s\nsampling formula. The following lemma gives the required expectation \u03c0k.\nLemma 1. Let \u03c0 be a CRP(\u03b1)-distributed random partition of c items and \u03c0k be the number of\nsubsets in that partition of size k. The expected number of size-k subsets is\n\n\u03c0k := E[\u03c0k] =\n\n\u03b1\nk\n\n\u0393(c + \u03b1 \u2212 k)\u0393(c + 1)\n\u0393(c + \u03b1)\u0393(c + 1 \u2212 k)\n\n.\n\nProof. Applying Proposition B.1 to the rate measure \u03bd(dp) = \u03b1p\u22121(1 \u2212 p)\u03b1\u22121dp, results in\n\u0393(c + 1)\u0393(c \u2212 k + \u03b1)\n\u0393(c \u2212 k + 1)\u0393(c + \u03b1)\n\npk\u22121(1 \u2212 p)c\u2212k+\u03b1\u22121 dp =\n\n\u0393(c \u2212 k + 1)\u0393(k + 1)\n\nE[\u03c0k] = \u03b1\n\n\u0393(c + 1)\n\n\u03b1\nk\n\n0\n\n(cid:90) 1\n\n(6)\n\n.\n\nThis result matches the expectation given in Watterson [23, Eq. 2.22], which computes the expectation\nas a special case of the factorial moments for the Ewens\u2019s sampling process [12]. We can now reframe\nthe derivation in terms of the partitions induced in a Dirichlet process by a hash function.\nProposition 1. Let h : V \u2192 [J] be a hash function drawn uniformly from a truly random hash\nfamily H. Suppose that a stream of symbols is drawn from a random Dirichlet process measure with\ncontinuous base measure on V and concentration parameter \u03b1. When the Mth item xM arrives, let\nits hashed value be h(xM ) = j. De\ufb01ne cj to be the number of previous items in the stream that have\n1[h(xm) = j]. Given cj, the posterior distribution over the true\n\nalso hashed to j, i.e., cj =(cid:80)M\u22121\n\nm=1\n\nnumber of previous occurrences of items with the same type as xM is\n\nPr(\u03b7xM = k | cj, \u03b1) =\n\n1\n\n\u03b1/J + cj\n\nJ\n\u03b1/J\n\n\u0393(cj +1)\u0393(cj\u2212k+\u03b1/J)\n\u0393(cj\u2212k+1)\u0393(cj +\u03b1/J)\n\nif k > 0\nif k = 0\n\n.\n\n(7)\n\n(cid:40) \u03b1\n\nDue to the independence assumption on the hash family H, the full posterior count is proportional to\nthe product of the individual hash function posteriors from Proposition 1, as summarized below.\nTheorem 2. Let there be N hash functions h1, . . . , hN each drawn uniformly at random from a truly\nrandom hash family H. De\ufb01ne a Dirichlet process stream of tokens as in Proposition 1. When the Mth\nitem xM arrives, let its nth hashed value be hn(xM ) = jn. De\ufb01ne cn,jn to be the number of previous\n1[hn(xm) = jn].\nGiven the counts c1,j1, . . . , cN,jN , the posterior distribution over the true number of previous occur-\nrences of items with the same type as xM is\n\nitems in the stream that the nth hash has also hashed to jn, i.e., cn,jn =(cid:80)M\u22121\n(cid:26)k \u03c0k,cn,jn\n\nN(cid:89)\n\nm=1\n\n1\n\nPr(\u03b7xM = k | c1,j1, . . . , cN,jN , \u03b1) \u221d\n\n\u03b1/J + cn,jn\n\n\u03b1/J\n\nn=1\n\nif k > 0\nif k = 0,\n\nwhere\n\n(8)\n\n(9)\n\n(cid:26)\u03b1\n\n\u03c0\n\n1\n\n=\n\n\u03b1 + c\n\nk\u03c0k\n\nif k = 0\nif k > 0,\n\nc(cid:89)\n\nk=1\n\n(cid:88)\nc(cid:89)\n\n\u03c0\n\n\u03c0k,cn,jn :=\n\n\u03b1\nJk\n\n\u0393(cn,jn + 1)\u0393(cn,jn \u2212 k + \u03b1/J)\n\u0393(cn,jn \u2212 k + 1)\u0393(cn,jn + \u03b1/J)\n\n.\n\n5\n\n\fFigure 2: Left: The posterior probability of a single hash function conditioned on c = 10 and varying \u03b1(cid:48).\nRight: The posterior of 3 hash functions with observed counts of 10, 12, 15, denoted by the red dotted curves,\nand with \u03b1(cid:48) = 0.5. The solid black curve denotes the normalized product of the individual hashes\u2019 posteriors.\nVertical lines denote the posterior mean, median, and MAP.\n\n3.3 Estimating \u03b1 via Empirical Bayes\n\nIn practice, \u03b1 is unknown and must be estimated from the data. Although information is lost due to\nhash collisions, it is nevertheless possible to construct a marginal likelihood that exactly accounts for\nthis censoring: the \ufb01nite projection property of the Dirichlet process speci\ufb01es what the distribution\nshould be of the hashed counts in each of the buckets. That is, the hash function forms a partition of V,\nand Equation (1) speci\ufb01es the resulting marginal Dirichlet distribution. For a single hash, we can\nintegrate that \ufb01nite-dimensional distribution against the multinomial counts cn,1, . . . , cn,J, resulting\nin a Dirichlet-multinomial distribution with symmetric parameters \u03b1/J. With a fully random hash\nfamily, N hashes lead to a factorial marginal likelihood after seeing M items in the stream:\n\nPr({{cn,j}J\n\nj=1}N\n\nn=1 | \u03b1) =\n\nM ! \u0393(\u03b1)\n\u0393(M + \u03b1)\n\n\u0393(cn,j + \u03b1/J)\ncn,j! \u0393(\u03b1/J)\n\n.\n\n(10)\n\nN(cid:89)\n\nn=1\n\nJ(cid:89)\n\nj=1\n\nMaximizing the marginal likelihood can be done ef\ufb01ciently using a variety of techniques such as\nNewton-Raphson, as it is one-dimensional and log-concave in log(\u03b1) [18].\n\n3.4 Bayesian CM Sketch Point Estimates\n\nx\n\nx\n\n, median \u02c6\u03b7(med)\n\n, and MAP \u02c6\u03b7(MAP)\n\nPoint estimates such as the mean \u02c6\u03b7(mean)\ncan be derived from\nthe posterior Pr(\u03b7k = k|C, \u03b1) over the true item frequencies. The following lemma is useful for\nunderstanding the behavior of these point estimators and the effect of \u03b1 relative to the size of the data\nstructure as determined by J.\nLemma 2. For \u03b1 < J, the function Pr(\u03b7x = k|cn,jn , \u03b1/J) is strictly increasing on k = 0, . . . , cn,jn.\nMonotonicity of the posterior ensures the following key result that equates the classical CM sketch\nestimator with the MAP estimator.\nProposition 2. For \u03b1 < J, we have \u02c6\u03b7MAP\n\n, and \u02c6\u03b7mean\n\n= \u02c6\u03b7CM\n\nx\n\nx\n\nx\n\nx\n\n\u2264 \u02c6\u03b7med\n\nx \u2264 \u02c6\u03b7MAP\n\nx\n\n.\n\nCrucially, this equality result provides an alternative view of the classical count-min sketch estimator\nas the maximum a posteriori estimate when \u03b1 < J. The ordering of point estimates also induces an\ninterpretation on \u03b1 as a shrinkage parameter for the count-min sketch.\nIn Figure 2, we plot the posterior as a function of the count to provide additional intuition about the\nstructure of the estimate. The left plot shows the posterior varying \u03b1(cid:48) = \u03b1/J. The right plot shows for\na \ufb01xed \u03b1(cid:48) = 0.5, the individual hash posteriors and the full posterior for hypothetical observed counts\nof 10, 12, and 15. We can see that the posterior functions for \u03b1(cid:48) < 1 are monotonically increasing,\nand that the MAP estimator is equal to the minimum count, i.e., the CM sketch estimator.\n\n6\n\n\f3.5 Discussion\nProbabilistic interpretation of the CM Sketch.\nIn this paper we have reinterpreted a successful\nand widely-deployed randomized algorithm in a Bayesian probabilistic light. A particularly salient\napplication of the Bayesian estimates of the CM sketch is scalable Bayesian inference via approximate\nsuf\ufb01cient statistics. In many Bayesian applications for discrete streaming data, the suf\ufb01cient statistics\nfor the likelihood are count statistics of the stream, which are too large to be stored in memory. One\ncould directly approximate the suf\ufb01cient statistics with, e.g., the CM point estimator, but this does not\ntake into account the uncertainty of the count arising from hash collisions. Instead, using the posterior\noutput of our method, one can build the uncertainty of the count into the model by integrating out the\nunobserved true count.\nPractical considerations for random hash families. Thus far, we have used the mathematically\nconvenient setting where all hash functions are perfectly random. In practice, real-world hash\nfunctions generally perform as if they were random. In a data stream of M of tokens, consider the\nunique tokens v1, . . . , vk that appear in the stream. We would like the h(vi) to behave as though h\nwere a random function. The collection of h(vi) values will be \u0001-close to uniform random values,\neven for hash functions h chosen from a pairwise independent family (which are natural to use in\npractice), as long as the token types vi have suf\ufb01cient entropy [5]. That is, we require much less\nrandomness from the hash function, as long as the unique tokens have suf\ufb01cient randomness. The\nrelationship between \u0001 and the entropy for pairwise and 4-wise independent hash functions are given\nin detail in Chung et al. [5]; here, the main point is that practical hash functions yield only small\nperturbations in our analysis from perfect hash functions.\nParallel sketching algorithms. Our method inherits the key property of a linear sketch from the\nCM sketch: that is, we can divide up the stream, compute a sketch posterior on each subset of the\nstream, and convolve the marginals to get back properties of the original stream. This leads to natural\nparallel algorithms for computing posterior estimates for large-scale streaming applications.\n\n4 Sketching Beta-Bernoulli Process Counts\n\niid\n\nAlthough we have focused on the case where the stream consists of individual tokens, the CM sketch\nalso allows for a vector of tokens to arrive at each step in the stream. We consider the case where\nat each step of the stream, a set of tokens arrives. It is natural to think of these sets as documents\nand the tokens as unique words, e.g., a stream of tweets each containing a small set of hashtags. The\nquery of interest is then to determine how many documents a particular token appeared in. Bayesian\nnonparametric feature models, such as the Indian buffet (beta-Bernoulli) process, provide natural\ndocument-centered generalizations of the Dirichlet process sketch. Appendix F contains the detailed\nderivations for this section.\nSuppose we have a model given by a stable beta-Bernoulli process random measure [22, 3]\nB \u223c BP(\u03b1, \u03b3, d), where \u03b1 > 0 is the concentration parameter, \u03b3 > 0 is the mass parameter, and\nd \u2208 [0, 1) is the discount parameter satisfying d > \u2212\u03b1. At each step in the stream, a sparse binary\n\u223c BeP(B) arrives, where xm is an in\ufb01nite-dimensional binary vector, with xmi = 1\nvector xm | B\nif the ith token is present in observation xm and 0 otherwise.\nThe data structure is essentially the same as the count-min sketch on the \ufb02attened stream. For\neach observation xm, we hash the token and then increment the associated count that the token is\nhashed to. The goal of the estimator is, for a token appearing in a new observation xM +1 from the\nstream, we want to return an estimate for how many documents that token has previously appeared\nin. Similar to the Dirichlet process, we can again treat the distribution of each hash function as its\nown beta-Bernoulli process, as a beta process can be represented by a Poisson point process, and\ntherefore we can apply the Poisson coloring theorem to get J independent beta-Bernoulli processes\nwith mass parameter \u03b3(cid:48) = \u03b3/J. Asymptotically, the number of unique tokens is \u03b3\n\u0393(\u03b1+d) M d in\nthe size of the stream M. One of the appealing properties of this construction is that this allows\nfor power-law behavior in the number of unique tokens, as determined by the parameter d [22].\nAnalogous to the Chinese restaurant process construction for the Dirichlet process in the partition\ncase, the 3-parameter Indian buffet process (IBP) gives the probability of seeing an existing token i\nM +\u03b1, and then Pois(\u03b3 \u0393(1+\u03b1)\u0393(M +\u03b1+d)\n\u0393(M +1+\u03b1)\u0393(\u03b1+d) )\n\nin the next document as Pr(xM +1,i = 1|x1,i, . . . , xM,i) = \u03b7i\u2212d\n\n\u0393(1+\u03b1)\n\nd\n\nnovel tokens are drawn.\n\n7\n\n\fFor a single hash h and new observed token v \u2208 V, the conditional probability of the count \u03b7v being k\ngiven both 1) the total the number of tokens that hashed into the same bucket ch(v), and 2) the number\nof tokens hashed into that bucket with count k (as before, denoted \u03c0k) is:\n\nPr(\u03b7v = k | \u03c0k, ch(v)) =\n\n\u0393(1+\u03b1)\u0393(ch(v)+\u03b1+d)\n\u0393(ch(v)+1+\u03b1)\u0393(\u03b1+d)\n\nk\u2212d\n\nch(v)+\u03b1\n\nif k > 0\nif k = 0\n\n.\n\nif k > 0\n\nif k = 0\n\n,\n\n(11)\n\n(cid:40)\u03c0k\n\uf8f1\uf8f2\uf8f3\u00af\u03c0k\n\nThe individual hash posterior is therefore\n\nPr(\u03b7v = k | ch(v)) =\n\nk\u2212d\n\nch(v)+\u03b1\n\n\u0393(1+\u03b1)\u0393(ch(v)+\u03b1+d)\n\u0393(ch(v)+1+\u03b1)\u0393(\u03b1+d)\n\nwhere [\u00af\u03c0k = E[\u03c0k]] is the expected number of tokens that have been seen k previous times under\nthe IBP prior, constrained to there being ch(v) total tokens. In the Indian buffet process metaphor,\nthis asks for the expected number of dishes that have been tasted k times, given the total number of\ndish tastings. Unfortunately, this additional constraint makes this expectation challenging to compute.\nHowever, if we assume that the expected number of tokens per document is much smaller than J,\nthen the probability of a single document having a collision between its tokens is small. We therefore\nmake the following approximation for c total tokens:\n\n\u00af\u03c0k := E[\u00af\u03c0k] \u2248 \u03b3\n\n\u0393(c + 1)\u0393(1 + \u03b1)\u0393(k \u2212 d)\u0393(c \u2212 k + \u03b1 + d)\n\n\u0393(c \u2212 k + 1)\u0393(k + 1)\u0393(1 \u2212 d)\u0393(\u03b1 + d)\u0393(c + \u03b1)\n\n.\n\nLike in the Dirichlet process case, the full posterior count \u03b7v conditioned on all N hash data structures\nis proportional to the product of the individual hash posteriors. Note that when the discount d = 0,\nand we recover the 2-parameter IBP [16], the query is very similar to that of the CRP case, except\nwith the extra mass parameter \u03b3. We can infer the parameters \u03b1, \u03b3, d by maximizing the marginal\nlikelihood [22].\n\n5 Experiments\n\nWe now examine the Bayesian posterior query and point estimates obtained using the CM sketch\napplied to several data streams. In Appendix G, we present synthetic data results on data generated\nfrom a Dirichlet process random measure and a stable beta process random measure, and we also\nprovide comparisons to a few count-min sketch extensions. In all experiments, we use a 2-universal\nhash family. We constructed a stream of tokens using the 20 Newsgroups data set, where the sketch\nwas updated using the training data set (M = 1467345), and evaluated queries on the set of unique\ntokens in the test set, which had 53975 elements. For each task, we examined several hash parameter\nsettings of N = 4, 5, 6, with J = 8000, 10000, 12000. For the posterior distribution of the count, we\nused the Dirichlet process sketching model, inferring \u03b1 via empirical Bayes.\n\nPosterior query examples.\nIn Figure 3, we present a few posterior distributions returned by\nquerying a few low, medium, and high frequency tokens. In each plot, we show the posterior\ndistribution computed from N = 4 hash functions and J = 12000, and the true count is denoted\nalongside the posterior mean, median, and MAP (CM). In these examples, the MAP (CM) performs\npoorly for the low frequency example, and the shrinkage estimators (mean and median) provide better\nestimates than the MAP (CM) estimator. In the medium frequency example, the mean underestimates\nsigni\ufb01cantly, but the median, which provides a more modest amount of shrinkage, is a better estimator\nthan the MAP (CM). In the high frequency example, the MAP (CM) estimator performs well, and\nso the shrinkage estimators underestimate the true count. More examples of posterior queries are\navailable in the appendix.\n\nPoint estimation results. Though our primary goal was to compute a posterior distribution, rather\nthan a point estimator, we wanted to understand the behavior of posterior point estimates relative\nto the frequency of the tokens. For each estimator, we the measured the relative error, de\ufb01ned\nby |\u02c6\u03b7v\u2212\u03b7v|\nby the true counts \u03b7v for all tokens in the test set. In Figure 4, we plot the mean relative\nerror, which is the average over the relative errors for each true count. Here we plot the mean relative\nerror against the true count to get a sense of the performance of the various estimators on low and\n\n\u03b7v\n\n8\n\n\fFigure 3: Posterior query for low, medium, and high frequency tokens The dashed black curve\nrepresents the posterior distribution returned by the query. The vertical blue line is the true count, and\nthe vertical red counts denote the posterior mean, median, and MAP (CM estimator).\n\nFigure 4: Mean relative error for point estimators of the posterior, constructed with hash parameters\nJ = 8000 (left) and J = 12000 (right). Here we use N = 4 hash functions.\n\nhigh frequency tokens. In this \ufb01gure, we only show the N = 4 case, but additional results are in the\nappendix.\nWe can see that the mean is often a better estimator than the MAP (CM) and median for lower\nfrequency events, especially when using less space. However, for medium frequency tokens, the\nposterior mean tends to underestimate the value of the count; instead, the posterior median provides a\nbetter estimate of the count. For very large frequencies, the MAP (CM) estimator generally performs\nwell, as expected.\n\n6 Conclusions and Future Work\n\nWe have introduced a Bayesian probabilistic view on the count-min sketch by taking the classical\ncount-min sketch data structure and computing a posterior distribution over the counts. We show\nthat, under the Dirichlet process, the MAP estimator recovers the count-min sketch estimator. We\nalso demonstrate how similar Bayesian reasoning can be used to provide a posterior over the number\nof times a word appeared in a document generated from a beta-Bernoulli process. Many fruitful\ndirections remain. On the theoretical side, extending this work to accommodate other token generating\ndistributions for random partitions, such as the Pitman-Yor process, would be of interest for power\nlaw applications, as well as further exploration of the beta process sketch. Another direction of\ninterest is using the posterior estimates of the counts and the linear sketch properties of the CM sketch\nfor large-scale streaming algorithms, e.g., for large text or streaming graphs applications. Lastly, one\nmay be interested in extending this method to accommodate different update operations, such as the\nconservative update, as well as different types of queries, such as range and inner product queries.\n\nAcknowledgments\n\nMichael Mitzenmacher was supported in part by NSF grants CCF-1563710, CCF-1535795, CCF-\n1320231, and CNS-1228598. Ryan Adams was supported in part by NSF IIS-1421780 and the Alfred\nP. Sloan Foundation.\n\n9\n\n\fReferences\n[1] C. C. Aggarwal and P. S. Yu. On classi\ufb01cation of high-cardinality data streams. In Proceedings of the\n\n2010 SIAM International Conference on Data Mining, pages 802\u2013813. SIAM, 2010.\n\n[2] D. J. Aldous. Exchangeability and related topics. In \u00c9cole d\u2019\u00c9t\u00e9 de Probabilit\u00e9s de Saint-Flour XIII\u20141983,\n\npages 1\u2013198. Springer, 1985.\n\n[3] T. Broderick, M. I. Jordan, and J. Pitman. Beta processes, stick-breaking and power laws. Bayesian\n\nAnalysis, 7(2):439\u2013476, 2012.\n\n[4] M. Charikar, K. Chen, and M. Farach-Colton. Finding frequent items in data streams. In International\n\nColloquium on Automata, Languages, and Programming, pages 693\u2013703. Springer, 2002.\n\n[5] K.-M. Chung, M. Mitzenmacher, and S. P. Vadhan. Why simple hash functions work: Exploiting the\n\nentropy in a data stream. Theory of Computing, 9(30):897\u2013945, 2013.\n\n[6] S. Cohen and Y. Matias. Spectral bloom \ufb01lters. In Proceedings of the 2003 ACM SIGMOD International\n\nConference on Management of Data, pages 241\u2013252. ACM, 2003.\n\n[7] G. Cormode and S. Muthukrishnan. Summarizing and mining skewed data streams. In Proceedings of the\n\n2005 SIAM International Conference on Data Mining, pages 44\u201355. SIAM, 2005.\n\n[8] G. Cormode and S. Muthukrishnan. An improved data stream summary: the count-min sketch and its\n\napplications. Journal of Algorithms, 55(1):58\u201375, 2005.\n\n[9] G. Cormode, M. Garofalakis, P. J. Haas, and C. Jermaine. Synopses for massive data: Samples, histograms,\n\nwavelets, sketches. Foundations and Trends in Databases, 4(1\u20133):1\u2013294, 2012.\n\n[10] C. Dwork, M. Naor, T. Pitassi, G. N. Rothblum, and S. Yekhanin. Panprivate streaming algorithms. In\n\nProceedings of The First Symposium on Innovations in Computer Science (ICS 2010), 2010.\n\n[11] C. Estan and G. Varghese. New directions in traf\ufb01c measurement and accounting: Focusing on the\n\nelephants, ignoring the mice. ACM Transactions on Computer Systems (TOCS), 21(3):270\u2013313, 2003.\n\n[12] W. J. Ewens. The sampling theory of selectively neutral alleles. Theoretical Population Biology, 3(1):\n\n87\u2013112, 1972.\n\n[13] L. Fan, P. Cao, J. Almeida, and A. Z. Broder. Summary cache: a scalable wide-area web cache sharing\n\nprotocol. IEEE/ACM Transactions on Networking, 8(3):281\u2013293, 2000.\n\n[14] T. S. Ferguson. A Bayesian analysis of some nonparametric problems. The Annals of Statistics, pages\n\n209\u2013230, 1973.\n\n[15] A. Goyal, H. Daum\u00e9 III, and S. Venkatasubramanian. Streaming for large scale NLP: Language modeling.\n\nIn Proceedings of NAACL, pages 512\u2013520. Association for Computational Linguistics, 2009.\n\n[16] T. L. Grif\ufb01ths and Z. Ghahramani. The Indian buffet process: An introduction and review. Journal of\n\nMachine Learning Research, 12(Apr):1185\u20131224, 2011.\n\n[17] J. F. C. Kingman. Poisson processes. Clarendon Press, 1992.\n\n[18] T. Minka. Estimating a Dirichlet distribution. Technical report, 2000.\n\n[19] J. Misra and D. Gries. Finding repeated elements. Science of Computer Programming, 2(2):143\u2013152,\n\n1982.\n\n[20] S. Muthukrishnan. Data streams: Algorithms and applications. Foundations and Trends R(cid:13) in Theoretical\n\nComputer Science, 1(2):117\u2013236, 2005.\n\n[21] J. Pitman. Combinatorial Stochastic Processes: Ecole d\u2019Et\u00e9 de Probabilit\u00e9s de Saint-Flour XXXII - 2002.\n\nLecture Notes in Mathematics. Springer Berlin Heidelberg, 2006.\n\n[22] Y. W. Teh and D. G\u00f6r\u00fcr.\n\nIndian buffet processes with power-law behavior.\n\nInformation Processing Systems, pages 1838\u20131846, 2009.\n\nIn Advances in Neural\n\n[23] G. A. Watterson. The sampling theory of selectively neutral alleles. Advances in Applied Probability, 6(3):\n\n463\u2013488, 1974.\n\n10\n\n\f", "award": [], "sourceid": 5284, "authors": [{"given_name": "Diana", "family_name": "Cai", "institution": "Princeton University"}, {"given_name": "Michael", "family_name": "Mitzenmacher", "institution": "Harvard University"}, {"given_name": "Ryan", "family_name": "Adams", "institution": "Google Brain and Princeton University"}]}