`
jays1235
  • 浏览: 8471 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

(Excerpt) Reservoir Sampling

阅读更多
Problem Statement

Reservoir Sampling is an algorithm for sampling elements from a stream of data. Imagine you are given a really large stream of data elements (queries on google searches in May, products bought at Walmart during the Christmas season, names in a phone book, whatever). Your goal is to efficiently return a random sample of 1,000 elements evenly distributed from the original stream. How would you do it?

The right answer is generating random integers between 0 and N-1, then retrieving the elements at those indices and you have your answer. (Update: reader Martin astutely points out that this is sampling with replacement. To make this sampling without replacement, one simply needs to note whether or not your sample already pulled that random number and if so, choose a new random number. This can make the algorithm pretty expensive if the sample size is very close to N though).

So, let me make the problem harder. You don't know N (the size of the stream) in advance and you can't index directly into it. You can count it, but that requires making 2 passes of the data. You can do better. There are some heuristics you might try: for example to guess the length and hope to undershoot. It will either not work in one pass or will not be evenly distributed.

Simple Solution

A relatively easy and correct solution is to assign a random number to every element as you see them in the stream, and then always keep the top 1,000 numbered elements(descendent) at all times. This is similar to how mysql does "ORDER BY RAND()" calls. This strategy works well, and only requires additionally storing the randomly generated number for each element.
分享到:
评论

相关推荐

    advanced-excerpt.4.2.3

    《深入理解高级摘要:advanced-excerpt 4.2.3 版本解析》 在IT领域,内容管理和呈现是至关重要的。"advanced-excerpt"是一个专门针对内容摘要处理的插件或工具,其4.2.3版本为用户提供了一套更加强大和精细的摘要...

    excerpt-solomon_excerpt_pdf_windows_

    windows solomon excerpt documentation

    mysql-cluster-excerpt-5.1-en.a4.pdf

    根据给定文件的信息,我们可以深入探讨关于MySQL Cluster的知识点,特别是在MySQL 5.1版本中的应用与特性。MySQL Cluster是MySQL数据库系统的一个组件,它提供了一种数据存储和处理的分布式解决方案,旨在提高数据...

    wordpress摘要插件wp-utf8-excerpt

    **WordPress 摘要插件 WP-UTF8-Excerpt 深度解析** 在 WordPress 的世界里,创建和管理文章摘要是一项常见的需求,尤其对于博客和新闻网站来说,一个吸引人的摘要能有效提高读者的点击率。WP-UTF8-Excerpt 插件就是...

    excerpt-html:解析给定的html文本以获得良好的摘录

    $ npm i excerpt-html --save API使用 var htmlCode = '<p>Hello world</p>' ; var excerptHtml = require ( 'excerpt-html' ) ; var excerpt = excerptHtml ( htmlCode ) ; 它将使用找到的第一个段落或不超过一个...

    hexo-excerpt:Hexo的自动摘录生成器

    $ npm install hexo-excerpt --save 此插件使用es6语法,请确保您的节点支持它。 特征 仍然有效! 如果您像我一样懒惰,则该插件会为您生成摘录,而不会破坏您的句子或代码! 如果未指定标签,则该帖子将使用节选...

    Excerpt_GB7

    本文将基于提供的文件摘要“Excerpt_GB7”深入探讨 DLMS/Green Book 的核心概念和技术细节。 #### 二、DLMS/COSEM 概念框架 1. **客户机/服务器型操作**(第 4.1 节): - 定义了客户端与服务器之间的交互模型,...

    Practical JXTA - Excerpt

    很长很长的英文p2p教材,包括原理,各方面的技术处理等等

    exceRpt:用于对smallRNA-seq数据集进行预处理,过滤,比对和报告的软件

    exceRpt_smallRNA-此编排设计了单个smallRNA-seq样品的处理,过滤和比对。 该脚本是一个makefile, mergePipelineRuns.R-此脚本将包含一个或多个包含上述管道输出的子目录或zipfile的目录作为输入。 通过这种方式...

    摘要编辑插件Excerpt Editor1.4汉化包 for WordPress.zip

    WordPress摘要编辑插件Excerpt Editor1.4汉化包 插件简介:由于wordpress博客不支持摘要编辑,造成博客的体积庞大,下了一个摘要编辑插件Excerpt Editor,为博客减减负瘦下身! 使用方法: 下载中文包解压后...

    Risk IT Framework Excerpt

    在信息时代,信息安全与风险治理是企业IT管理中最为重要的议题之一。ISACA(信息系统审计与控制协会)是一个在全球范围内拥有超过86,000名成员的机构,它在160多个国家提供关于信息系统保证、安全、企业IT治理、IT...

    Green_Book_Ed8.3_EXCERPT-2017_DLMS_

    "Green_Book_Ed8.3_EXCERPT-2017_DLMS" 提到的是2017年版本的一个摘录,重点关注DLMS(Distributed Local Management System,分布式局部管理系统)协议。DLMS是一种广泛应用的通信协议,主要用于电力系统中的智能...

    Hadoop in Action excerpt_index

    ### Hadoop in Action:深入解析Hadoop关键技术与应用 #### 核心概念与技术要点 在探讨《Hadoop in Action》一书时,我们聚焦于Hadoop生态系统中的关键技术和概念,这些技术对于理解和掌握大数据处理至关重要。...

    Green_Book_Edition_9-Excerpt_DLMSbook_greenbookdlms_green_dlmsgr

    本压缩包包含了《绿皮书》第九版的摘录,名为"Green_Book_Edition_9-Excerpt.pdf",对深入理解和应用DLMS协议具有极高价值。 1. DLMS协议概述:DLMS协议,全称Distributed Language Management System,设计目标是...

    Flex on Java book excerpt: Securing your Flex application

    《Flex on Java book excerpt: Securing your Flex application》是一篇关于如何在Java环境中确保Flex应用程序安全性的文章。Flex是Adobe开发的一种富互联网应用程序(RIA)框架,它允许开发者创建交互性强、用户...

    Zend_PHP_Certification_Guide_Excerpt

    ... ...### 关键术语理解 ...- **表达式**:由操作符连接的变量或常量组成的单元,用于计算值。...- **运算与运算符优先级**:涉及算术、比较、逻辑等多种运算符及其执行顺序。...- **条件结构**:根据不同的条件执行不同的代码块...

    Green_Book_Ed5_EXCERPT-2005_DLMS_

    《绿皮书》是国际电工委员会(IEC)发布的一系列技术标准,其中"Green_Book_Ed5_EXCERPT-2005_DLMS"指的是第五版《绿皮书》的一个摘录,主要关注2005年版本中的DLMS(Data-Link Management Service)协议。...

    mysql-tutorial-excerpt-5.1-en

    ### MySQL教程摘录5.1版 - 知识点详解 #### 一、文档概述 本文档为MySQL 5.1版本的教程摘录,主要针对MySQL数据库管理系统的基础操作及高级功能进行了详细介绍。该文档版权归属于1997-2008年的MySQL AB以及2009年...

    WinDbg reference excerpt

    WinDbg是微软公司提供的一款强大的Windows平台调试工具,是Windows调试专家参考手册中的主要内容,是Windows调试技术领域中的重要参考资源。该工具是微软官方提供的用于帮助开发者进行系统级调试的工具,对于Windows...

Global site tag (gtag.js) - Google Analytics