CROSS-REFERENCE TO RELATED APPLICATIONSThis application claims priority to U.S. Application Ser. No. 61/012,634, filed on Dec. 10, 2007, and entitled “Estimating TV Ad Impressions,” the contents of which are hereby incorporated in its entirety by reference.
TECHNICAL FIELDThis instant specification relates to information presentation.
BACKGROUNDAn advertiser, such as a business entity, can purchase airtime during, for example, a television broadcast to air television advertisements (“ads”). Example television advertisements include commercials that are aired during a program break, transparent overlays that are aired during a program, and text banners that are aired during a program.
The cost of the airtime purchased by the advertiser varies according to both the amount of time purchased and other parameters such as the audience size and audience composition expected to be watching during the purchased airtime or closely related to the purchased airtime. The audience size and audience composition, for example, can be measured by a ratings system. Data for television ratings can, for example, be collected by viewer surveys in which viewers provide a diary of viewing habits; or by set meters that automatically collect viewing habit data and transmit the data over a wired or wireless connection, e.g., a phone line or cable line; or by digital video recorder service logs, for example. Such rating systems, however, may be inaccurate for niche programming, and typically provide only an estimate of the actual audience numbers and audience composition.
Based on the ratings estimate, airtime is offered to advertisers for a fee. Typically the advertiser must purchase the airtime well in advance of the airtime. Additionally, the advertiser and/or the media provider may not realize the true value of the airtime purchased if the ratings estimate is inaccurate, or if the commercial that is aired is not relevant in the context of the program and/or audience.
SUMMARYIn general, this document describes estimating the number of times an ad is displayed to viewers (e.g., television (TV) viewers).
In a first general aspect, a computer-implemented method is described. The method includes receiving cluster information comprising categories and total numbers of media receivers (e.g., television (TV) viewers) associated with the categories and receiving sample data comprising numbers of advertisements (ads) displayed to sampled receivers (e.g., TV viewers) that are classified within the categories. The method also includes calculating probabilities for numbers of ads displayed to the total numbers of receivers associated with the categories, wherein the calculation is based on the cluster information and the sample data, merging the calculated probabilities associated with two or more of the categories, and outputting an estimated number of ads displayed based on the merged probabilities.
In a second general aspect, a computer-implemented method is described that includes receiving, from a sample of television (TV) viewers, measurement data comprising information associated with one or more TV advertisements (ads) displayed to the TV viewers. The method also includes associating the sample of TV viewers with one or more clusters. Each cluster has geographic attributes and a total number of TV viewers within the cluster. The method includes determining multiple ad viewing estimates for a number of times an ad was viewed by the total number of TV viewers of the cluster. The ad viewing estimates are associated with probabilities of occurrence. Additionally, the method includes merging the probabilities associated with two or more clusters and outputting an estimated number of ads displayed for the one or more clusters based on the merged probabilities.
In another general aspect, a system is described that includes an interface to receive measurement data comprising numbers of advertisements (ads) displayed to sampled television (TV) viewers and cluster information comprising groupings defined by commonly shared attributes of TV viewers and a total number of TV viewers associated within each grouping. The system also includes means for calculating probabilities for a number of ads displayed to the total number of TV viewers for each cluster. The calculation is based on the cluster information and the measurement data. The system includes means for merging the calculated probabilities associated with the clusters and outputting an estimated number of ads displayed for the one or more clusters based on the merged probabilities.
The details of one or more embodiments feature are set forth in the accompanying drawings and the description below. Other features and advantages will be apparent from the description and drawings, and from the claims.
DESCRIPTION OF DRAWINGSFIG. 1 is a schematic diagram for anexample system100 that estimates, for example, TV ads displayed to TV viewers.
FIG. 2 is a block diagram of anexample system200 for generating ad impression estimates.
FIG. 3 is a flow chart of an example method300 for generating ad impression estimates.
FIG. 4 is a schematic400 that depicts an example method for merging cluster information according to one implementation.
FIG. 5 is a schematic of a general computing system, which can implement the described systems and methods according to one implementation.
Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTIONThis document describes systems, techniques and computer program products for estimating a number of times an advertisement is presented (e.g., displayed) to a viewer. In some implementations, a system can collect sample data from a selected group of television viewers. For example, the viewers may have set top boxes attached to their televisions that record what is watched. While reference is made to television, other forms of media distribution are possible. The systems, methods and computer program products proposed can be used to gather information about content (e.g., ads) that is presented to media receivers (e.g., viewers, listeners).
The sample data can be transmitted to the system and analyzed by associating the sample viewers with categories, or clusters that define a larger group to which the sampled viewers belong. For example, a cluster can be defined as all the television viewers in the Chicago area (of course the clusters can have a finer segmentation such as male, Chicago viewers that are 18-15, have a certain income, etc.). The system can use viewing habits of the sampled viewers that fall within the Chicago cluster to extrapolate (or otherwise derive) the viewing habits of the total population of the cluster (i.e., all the viewers in the Chicago area).
Specifically, the system can determine estimates associated with how many times a particular television ad is viewed by the population of the cluster. The system can use the estimates to bill advertisers based on how many times the advertisers' ads were displayed.
In some implementations, the system can merge the estimates of viewed ads from several clusters to determine an estimate for a larger viewing population. For example, a system can merge (e.g., as opposed to sum) estimates from a San Francisco cluster, a Berkeley cluster, a San Pablo cluster, a Emeryville cluster, and an El Cerrito cluster to determine estimated ad viewers for the Bay Area of California. In some implementations, the merging may enable a more holistic approach to ad viewing estimation when compared to summing up the individual estimates for each cluster. Various merging techniques are described in more detail below.
In some implementations, the sampled data is aggregated so that individually identifying information is anonymized while still maintaining the attributes or characteristics associated with a particular cluster. In other implementations, the sample data is anonymized (so that the originating set top box is unidentifiable) before transmission to the system that analyzes the sample data. In this way, the viewing habits of individual viewers can be obscured or unobservable while still permitting the determination of viewing habits for clusters or groups of viewers.
FIG. 1 is a schematic diagram for anexample system100 that estimates TV ads displayed to TV viewers. Ads displayed to viewers are also referred to as ad impressions. In the depicted implementation, thesystem100 includesTVs102 and settop boxes104 that capture information from theTVs102. Thesystem100 can include adata center106 having one or more servers and abilling system108.
The settop boxes104 can transmit information to thedata center106, which uses the information to generate estimates about how many TV viewers have watched a particular advertisement. Thedata center106 can forward the estimate of ad impressions to thebilling system108, which uses the estimate to bill advertisers, such as anadvertiser110, for an ad displayed to TV viewers. For example, theadvertiser110 may have agreed to pay $5 per ad impression. If the estimated number of ad impressions is 10, thebilling system108 can bill the advertiser for $50 ($50×10).
More specifically, the settop boxes104 can transmit viewing information, ormeasurement results112, from a sample of TV viewers. The measurement results112 can include information used to derive how many particular viewers are in the sample set and which viewers have viewed a particular ad (where viewing an ad and having an ad display to a TV viewer are treated as synonymous). Additionally, the measurement results112 can include (or can be used to derive) demographic information about the viewers such as geographical location and household size (which refers to the number of televisions within a household, such as 1, 2, 3, 4 or more TVs for a single household).
In some implementations, the settop boxes104 interface with theTVs102 to record what is currently playing. The results or a summary of the results are transmitted by the settop box104 using, for example, a telephone connection to the data center146 (where the connection can be direct or through a network such as the Internet).
Thedata center106 can store the measurement results112 in adatabase114. Thedatabase114 also can include other information such aspredefined cluster information116. In some implementations, the predefined cluster information can include clusters (also referred to here as groups or classifications) such as designated market areas (DMA). For example, a DMA can include a geographic location such as Chicago. The clusters can also be segmented based on other information such as household size information. Thecluster information116 can include a total number of TV viewers associated with each cluster. For example, one predefined cluster may be a cluster having the DMA equal to Chicago in the household size equal to 3 and a total TV viewership of 980,000. Clusters can be used to divide, or segment, an area such as the United States into groups that can be analyzed.
Thedata center106 can also include aprojection module118 hosted a on a server. The projection module can use the measurement results112 and thepredefined clusters116 to generate, or project, estimates about how many viewers in one or more clusters are viewing a particular advertisement.
More specifically the projection module can include a probable density function (PDF)estimator120 and aPDF merger122 that generate estimates for a number of ads viewed by people associated with one or more clusters. For a given cluster, thePDF estimator122 can estimate a probability distribution associated with estimated ad impressions (e.g., the probabilities associated with a range of possible estimates for ad impressions). For example, assume that a first cluster is for the Chicago area. ThePDF estimator120 can use the measurement results112 for Chicago and thepredefined cluster information116 for Chicago to estimate that there is a 0.5 probability that 20,000 viewers within Chicago watched an ad, a 0.3 probability that 30,000 viewers within Chicago watch the ad, and a 0.2 probability that 50,000 viewers within Chicago watch the ad. These three estimates represent the probability distribution for the ad impressions. An example calculation process is described in more detail below.
In some implementations, the PDF merger can merge the probabilities generated for one or more clusters to produce a holistic look at the probability distribution. For instance, the PDF merger can generate a single estimate of ad impressions for several clusters based on characteristics of several clusters instead of generating ad impression estimates for each of the clusters and then summing the estimates together for a total estimate.
For example, given the following three clusters and the associated measurement information
CHICAGO: 14 viewers out of 28 possible viewers in sample: 555 total potential viewers
NYC: 25 viewers out of 55 possible viewers in sample: 634 total potential viewers
LA: 33 viewers out of 54 possible viewers in sample: 45992 total potential viewers
one approach would be to determine an ad impression estimate for each cluster that satisfies a probability threshold (also referred to as a confidence value). For example, assuming a confidence value is 0.9, then an ad impression estimate can be selected from the probability distribution that satisfies this value. The PDF merger could sum the ad impression estimates corresponding to the confidence values to generate a total impression estimate number.
In a second more holistic approach mentioned above, the PDF merger uses the characteristics directly to determine an ad impression estimate that satisfies a given confidence value. In this case, the PDF merger does not treat ad impression estimates for each cluster as independent, but instead the PDF merger constructs an overall most likely estimate of ad impressions. An example merging calculation for this second approach is discussed in more detail below.
Theoutput124 of theprojection module118 can include one or more estimates for a number of ad impressions, where each estimate is associated with one or more confidence values previously mentioned above. For example, a user can specify that theprojection module118 should output estimates that correspond to confidence values 90%, 50%, and 25%. A confidence value of 90% (i.e., 0.9) can indicate that the actual number of ad impressions will be equal to or lower than the estimated number of ad impressions 9 out of 10 times. Conversely, a confidence value of 90% indicates that the actual number of ad impressions will likely be higher than the estimated number ofad impressions 1 out of every 10 times.
In some implementations, one or more of the ad impression estimates is transmitted to thebilling system108. For example, the estimate associated with a 90% confidence value can be transmitted to thebilling system108. Thebilling system108 can use the estimated number of ad impressions to bill an advertiser that is responsible for the ad displayed to the television viewers. For example, theadvertiser110 may have agreed to pay $10 per 1,000 impressions. If the estimated number at a 90% confidence value is 70,000 impressions, thebilling system108 can calculate abill130 of $700 ($10×(70,000/1,000)) for displaying the ad. In one implementation, thebilling system108 can transmit thebill130 to theadvertiser110 for payment. In another implementation, abilling system108 can withdraw the billed amount automatically from a financial institution based on prior authorization by theadvertiser110.
FIG. 2 is a block diagram of anexample system200 for generating ad impression estimates. Thesystem200 includes aprojection module202 that acceptscluster information204 and measurement results206 and outputs estimates208 of ad impressions associated with one or more confidence values. In theexample system200, theprojection module202 includes aPDF estimator208, aPDF merger210, and animpression calculator212.
Theprojection module202 can receive thecluster information204 and the measurement results206 through aninterface214. A database (not shown) can transmit thecluster information204 to theprojection module202. A third party may transmit thecluster information204 for storage in the database before the transmission of the information to theprojection module202. For example, the cluster information can include DMAs216 that are defined by the Nielsen Company. A DMA can include information about a region where the population receives similar TV offerings. Thecluster information204 can also include information used to further segment a DMA such ashousehold size218, age groups, genders, ethnic backgrounds, income levels, other demographic data, etc.
In one implementation, theprojection module202 uses the cluster information to generate clusters, or groups, of viewers that have distinct characteristics. For example, a Chicago male cluster can contain viewers from the Chicago area, that have a household size of two, an income level of over $100,000, a gender of male, and age range between 18 and 45. In another implementation, the clusters are predefined before transmission to theprojection module202 from the database.
The measurement results206 include measured information gathered from TV viewers within a sample. In some implementations, each of the TV viewers can fall within one of the clusters described above, which is indicated inFIG. 2 by the placement of the measurement result206 within aparticular cluster220. For example, 2,400 sample viewers may fall within the Chicago male cluster described in the previous paragraph. The measurement results206 can indicate what sampled TV viewers watched including which ads were displayed to the viewers.
ThePDF estimator208 can use a probability density function to determine probabilities associated with various ad impression estimates for a particular cluster of viewers. The PDF estimator can use the measurement results206 obtained from sample viewers associated with the cluster to derive these estimates.
For example, measurement results206 may indicate that 260 of a possible 580 sampled TV viewers associated with a particular cluster were shown a particular ad (e.g., 260 were watching a network that displayed the ads and 320 were watching a network that did not display the ads). In some implementations, thePDF estimator208 can use Bayesian statistical analysis to derive ad impression estimates for all viewers within the particular cluster using the measurement results246 gathered from the sample viewers. For example, thePDF estimator208 can generate a PDF table220 that includes a range of estimates for the number of ad impressions and a probability of associated with each estimate indicating the likelihood that the estimate is correct.
In the exemplary table220, for a particular cluster, three estimates for ad impressions are given:1000,1001, and1002. The probability is 0.002 that the actual number of ad impressions for the total viewership of the cluster matches theestimate1000. Similarly, the likelihood that the estimate1001 is correct is 0.004, and the likelihood that theestimate1002 is correct is 0.005. In this example, the likelihood that the actual number of ad impressions is at or below the estimate of1002 is the sum of the probabilities associated with theestimates1002 and below. For example, the probability that the actual number of ad impressions is1002 or below is the sum 0.009 (0.005+0.004+0.002).
In some implementations, the projection module's probability density function is derived using Bayesian inference given hypergeometric distribution as a likelihood function and given uninformed distribution of prior probability (e.g., uniform distribution). In some implementations, the hypergeometric distribution described at http://en.wikipedia.org/wiki/Hypergeometric_distribution (visited Nov. 16, 2007 and incorporated here) is used. In some implementations, the likelihood function described at http://en.wikipedia.org/wiki/Likelihood_function (visited Nov. 16, 2007 incorporated here) is used.
Additionally, in some implementations, thePDF estimator208 uses the following probability function
to determine the probability associated with each ad impression estimate in a single cluster (where M denotes the estimate for the total number of impressions, n the sample size, m number of impressions in the sample and N the size of the total population).
In some implementations, instead of sampling the whole range of possible values for M, the lower and upper bounds for the total number of impressions can be estimated by requiring that between those values the probability density function is large enough. In some implementations, the lower and upper bounds for the total number of impressions (xlow,xupp) can be found by solving the following equations in xlow,xupp
(xlow−mlo)P(xlow)=ε
(N−n+m−xupp)P(xupp)=ε
where ε is a fixed error bound that determines the precision with which the requested confidence should be met. The lower the required precision, the lower the computable width of the probability distribution (xupp−xlow), and the less computations required, which in turn increases performance. In some implementations, a constraint can be set so that ε=10−4, which results in the confidence being met with 0.01% precision.
In some implementations, theprojection module202 uses a logarithmic scale in dealing with combinatorial quantities. For example, the following pseudo code can be used, where LogGamma( ) is a natural logarithm of a Gamma function (and, for all positive integer n, Gamma(n+1)=n!) and LogChoose( ) is a logarithm of a binomial coefficient.
LogProjectorPDF=
LogChoose(total_size−sample_size,
total_impressions−sample_impressions)+
LogGamma(total_impressions+1)−
LogGamma(sample_impressions+1)+
LogGamma(total_size−total_impressions+1)−
LogGamma(sample_size−sample_impressions+1)+
LogGamma(sample_size+2)−
LogGamma(total_size+2);
In some implementations, thePDF merger210 can merge information associated with two or more clusters to produce a single merged PDF table222 for the merged clusters. For instance, thePDF merger210 can merge two or more of the PDF tables generated for each cluster to produce the merged PDF table222. For example, the PDF merger can merge PDF tables for a New York cluster and a Chicago cluster as depicted inFIG. 2.
In some implementations, viewers within one cluster are assumed to be independent from viewers in a different cluster for statistical purposes. Furthermore, in some implementations, viewers within a single cluster as also assumed to be independent of other viewers within the same cluster. Given these assumptions, thePDF merger210 uses the following formula to merge L PDF tables
In someimplementations PDF merger210 may use a Fast Fourier Transform algorithm to perform a merge of L PDF tables
pmerged=F−1[F[p1]F[p2] . . . F[pL]]
where F denotes a forward Fourier transform and F−1its inverse.
According to some implementations, thePDF merger210 only merges a subset of the total set of clusters. For example, thePDF merger210 can access information226 to identify particular clusters to merge. In some implementations, the identifying information226 can be generated based on an advertiser's selection of advertising campaign parameters such as a geographical area to show an ad, a broadcasting network on which to display the ad, demographic information for viewers, etc.
For example, an advertiser can specify that an ad should run nationally on the ESPN broadcasting network. The advertiser's specification can be used to identify clusters that are associated with the ESPN broadcasting network, and more specifically, clusters associated with the ESPN broadcasting network that are located in several geographical areas (e.g., Chicago, New York, San Francisco, Los Angeles, etc.) that together make up a national market. ThePDF merger210 can then use the identifying information226 to identify the appropriate clusters to merge.
As previously mentioned, the merged PDF table222 can include a range of estimated ad impressions and corresponding probabilities of occurrence for each estimate. For example, the merged PDF table222 includes three estimates and three corresponding probabilities for each estimate. The estimates are 10,000 having a probability of 0.5; 10,500 having a probability of 0.4; and 11,000 having a probability of 0.1.
In some implementations, theimpression calculator212 can select one or more of the ad impression estimates based on confidence target values213. For example, an estimate can be selected based on a confidence value of 0.90, and the estimate can be transmitted to a billing system for use in billing an advertiser.
In some implementations, the impression calculator can determine the ad impression estimate that is associated with a confidence value by summing the probabilities of estimates (starting with probabilities associated with the lowest estimate and summing the next lowest estimate, and so forth) until the sum of the probabilities are substantially equal to the desired confidence value.
For example, if the confidence value is 0.90, theimpression calculator212 can sum the probability 0.5 (associated with the lowest ad impression estimate) with the probability 0.4 (associate with the next lowest ad impression estimate) for a total of 0.9. Because the summed total (e.g., 0.9) equals the desired confidence probability 0.9, the impression calculator can select the ad impression estimate associated with the last summed probability, which in this example is 10,500. Practically, selection of the ad impression estimate 10,500 indicates that there is 90% chance (i.e., 0.9 chance) that the actual number of ad impression is equal to or less than the selected ad impression estimate.
In some implementations, theimpression calculator212 specifies more than one confidence value. Consequently, more than one corresponding ad impression estimate is identified by theimpression calculator212. Theprojection module202 can transmit one or more of the calculated ad impression estimates208 corresponding to the confidence target values213 to another system for further processing (e.g., a billing system for use in calculation of an amount to charge an advertiser for display of the ad).
FIG. 3 is a flow chart of an example method300 for generating ad impression estimates. The method300 may be performed, for example, by a system such as thesystems100 and200; however, another system, or combination of systems, may be used to perform the method300.
The method300 begins withstep302, where measurement data (including sampled ad impression data) is received from sampled TV viewers. For example,measurement data304 can include information from sampled TV viewers such the depicted geographic indicator “Perry, Okla.”; Household size: “1”; Total Sampled Viewers “500” for a group matching the geography and household size characteristics; and an indication of how many of the total sampled viewers watched the ad, which in this case is “100.”
Instep306, cluster and associated category information is received. For example, clusters can be generated using the cluster and associated category information. A database can store pre-segmented groups, or clusters, such as the DMA groups. In some implementations, the clusters can be further segmented based on information such as demographic information and household size as indicated by acluster308. Thecluster308 indicates that 2,000 possible viewers having a household size of “1” are associated with the geographic area Perry, Ok.
Instep310—for a selected cluster—probabilities (e.g., Bayesian) associated with a set of estimated ad impressions are determined. For example, thePDF estimator208 can generate a PDF table312, which includes ad impression estimates and probabilities associated with those estimates.
Instep314, it is determined if some clusters have not been processed. If there are additional clusters for which probabilities have not been calculated,step310 is repeated. If there are no more additional clusters to process, step316 is performed.
Instep316, probabilities calculated for clusters instep310 are identified for merging. For example, an advertiser can select campaign parameters that are associated with particular clusters as indicated by theinformation318. These particular clusters are identified for merging.
Instep320, the identified clusters are merged. For example, two PDF tables312 associated with clusters for the geographic regions Perry, Okla. and Norman, Okla. can be merged using aformula324. The output is the merged table326 that includes ad impression estimates and associated probabilities derived from the PDF tables312.
Instep328, a desired confidence value for a final estimate of ad impressions is identified. For example, thead impression calculator312 can specify that a desiredconfidence value330 is 90%. In some implementations, this value is previously set by a user or software developer of theprojection module202.
Instep332, the probabilities associated with the two least ad impression estimates are summed. Instep334, it is determined whether the sum substantially equals the desired confidence value. If the sum is not substantially equal,step336 is performed. Instep336, the previous sum is added to the probability associated with the next lowest ad impression estimate and the determination ofstep334 is repeated.
For example, the probabilities associated with the ad impression estimates Xn-Xn+3are summed starting with the probabilities (0.1 and 0.2) associated with the lowest ad impression estimates (e.g., Xnand Xn+1). Because the sum 0.3 (i.e., 0.1+0.2) is less than the desired confidence value of 0.9,step336 is repeated and the next probability 0.6 associated with the next lowest ad impression estimate Xn+2is added to the previous sum of 0.3. This brings the new total to 0.9, which is equal to the desired confidence value. If it is determined instep334 that the sum is substantially equal to the desired confidence value,step340 is performed.
Instep340, the estimated ad impression associated with the last probability added to the sum is output. For example, the estimated ad impression Xn+2would be output because the sum of probabilities for the Xn+2and lower estimates is equal to 0.9, which is the desired confidence value. This is indicated by the circled values in the PDF table342. Afterstep340, the method300 can end.
FIG. 4 is a schematic400 that depicts an example method for merging cluster information according to one implementation. In some implementations an N-way merge includes the following two properties. First, an N-way merge via a Fast Fourier Transform (FFT) algorithm described above requires O(N) memory and O(N log(N)) time. Second, an N-way merge can result in loss of precision.
The first property indicates that an FFT algorithm cannot directly merge a large number of PDFs at once. Thus, a multi-stage merge can be used to mitigate consequences the first property. For example, in some implementations, a multi-stage merge forms a merge tree using N-way FFT based merge as a building block.
In some implementations a balanced height merge can reduce the number of times an original PDF participates in a FFT, thus mitigating the effect of the second property. In this example, a balanced height merge means that for every node all sub trees have the same height (±1) as indicated inFIG. 4.
More specifically,FIG. 4 shows a 2-way balanced merge for 5 PDFs. The balance merge algorithm runs as follows. In step one, the input to the merge algorithm is split evenly in two bins (1,2,3 goes to the first bin and 4,5 to the second bin). In step two, since the first bin has more than two items, it is split again evenly into two bins (1,2 goes to the first bin, 3 goes into the second bin). In step three, theinput 1 and 2 are merged into the result “1,2”. In step four, the inputs “1,2” and 3 are merged into the result “1,2,3”)
In step five, returning to the second bin of step one,inputs 4 and 5 are merged into the result “4,5”. In step six, the inputs “1,2,3” and “4,5” are merged into the result “1,2,3,4,5”. In step seven, the final result “1,2,3,4,5” is output.
In some implementations, a 4-way merge may perform better than either 2,3 or 5,6 and 7 way merges with a number of sampling points fixed to be 3125 (55).
FIG. 5 is a schematic diagram of acomputer system500. Thesystem500 can be used for the operations described in association with any of the computer-implement methods described previously, according to one implementation. Thesystem500 is intended to include various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. Thesystem500 can also include mobile devices, such as personal digital assistants, cellular telephones, smartphones, and other similar computing devices. Additionally the system can include portable storage media, such as, Universal Serial Bus (USB) flash drives. For example, the USB flash drives may store operating systems and other applications. The USB flash drives can include input/output components, such as a wireless transmitter or USB connector that may be inserted into a USB port of another computing device.
Thesystem500 includes aprocessor510, amemory520, astorage device530, and an input/output device540. Each of thecomponents510,520,530, and540 are interconnected using asystem bus550. Theprocessor510 is capable of processing instructions for execution within thesystem500. The processor may be designed using any of a number of architectures. For example, theprocessor510 may be a CISC (Complex Instruction Set Computers) processor, a RISC (Reduced Instruction Set Computer) processor, or a MISC (Minimal Instruction Set Computer) processor.
In one implementation, theprocessor510 is a single-threaded processor. In another implementation, theprocessor510 is a multi-threaded processor. Theprocessor510 is capable of processing instructions stored in thememory520 or on thestorage device530 to display graphical information for a user interface on the input/output device540.
Thememory520 stores information within thesystem500. In one implementation, thememory520 is a computer-readable medium. In one implementation, thememory520 is a volatile memory unit. In another implementation, thememory520 is a non-volatile memory unit.
Thestorage device530 is capable of providing mass storage for thesystem500. In one implementation, thestorage device530 is a computer-readable medium. In various different implementations, thestorage device530 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device.
The input/output device540 provides input/output operations for thesystem500. In one implementation, the input/output device540 includes a keyboard and/or pointing device. In another implementation, the input/output device540 includes a display unit for displaying graphical user interfaces.
The features described can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The apparatus can be implemented in a computer program product tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by a programmable processor; and method steps can be performed by a programmable processor executing a program of instructions to perform functions of the described implementations by operating on input data and generating output. The described features can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
To provide for interaction with a user, the features can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
The features can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), peer-to-peer networks (having ad-hoc or static members), grid computing infrastructures, and the Internet.
The computer system can include clients and servers. A client and server are generally remote from each other and typically interact through a network, such as the described one. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
Although a few implementations have been described in detail above, other modifications are possible. For example, although described in the context of estimating a number of TV viewers, other implementations may be used to estimate a number of other types of media receivers. For example, some implementations may estimate a number of radio listeners, a number of viewers watching ads embedded in video (e.g., YOUTUBE videos), a number of readers of print ads, etc.
Additionally, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.