Ad inventory management system

Estimating ad inventory in an online video streaming system accurately handles interdependencies among targeted attributes. The estimating includes determining a probability distribution of samples taken from electronic data records of ad impressions in an interactive online video streaming service, among a population comprising each different combination of targeted attributes recorded for each of the samples. In addition, the estimating may include populating an electronic data structure with data relating the each different combination of the targeted attributes to corresponding forecasted number of available impressions in a defined time period, based on the probability distribution and a forecasted total number of available impressions in the time period. Then, estimating the ad inventory is based on the electronic data structure and targeting attributes for an ad campaign, optionally including summing forecasted impressions for combinations of the targeted attributes that include all of the defined set of targeted attributes.

FIELD

The present application relates generally to input/output processing using a computer, and more particularly management of ad inventory in an online video system.

BACKGROUND

Advertising-supported distribution of audio-video data may be implemented from a content server to remote client devices over computer networks, telecommunications networks, and combinations of such networks, using various methods, for example progressive downloading or streaming. Platforms for such distribution may include sites that offer a great variety of different programming, including both newly released episodes of serial programs, major features, documentaries, special events, archives of past episodes and classic serial programs, of different types targeted to users having various different demographic profiles or located in different area, and in various formats for use on different kinds of player devices. One or more video ads may be inserted into each video program and sold to advertisers who are charged based on how many times each advertisement is played on a client device; i.e., for each video ad impression.

Prospectively, it may be desirable to provide estimates to advertisers concerning how many ad impressions are available for purchase in a particular future time period for a defined target, which target may be defined by various attributes, for example, demographic, geographic, program format, program genre, or time-of-day. Such information, sometimes referred to as “ad inventory” may be useful for planning advertising costs/revenues and generally facilitating commerce. However, because of the complexities of sophisticated video content platforms, prior methods of estimating ad inventory in a streaming video system may be inaccurate. For example, prior methods may assume that targeted attributes can be handled independently for estimating purposes, and may become inaccurate when the targeted attribute exhibits a degree of interdependence. Consequently, management of ad inventory based on prior estimation methods may be prone to problems such as unanticipated surpluses or shortages of ad inventory, or high uncertainty. These and other limitations of prior methods for estimating and managing ad inventory in a streaming video system may be overcome by the novel methods and apparatus disclosed herein.

SUMMARY

Methods, apparatus and systems for estimating and managing ad inventory in an online video distribution system are described in detail in the detailed description, and certain aspects are summarized below. This summary and the following detailed description should be interpreted as complementary parts of an integrated disclosure, which parts may include redundant subject matter and/or supplemental subject matter. An omission in either section does not indicate priority or relative importance of any element described in the integrated application. Differences between the sections may include supplemental disclosures of alternative embodiments, additional details, or alternative descriptions of identical embodiments using different terminology, as should be apparent from the respective disclosures.

In an aspect, a method for estimating ad inventory in an online video distribution system may include determining a probability distribution of samples taken from electronic data records of ad impressions in an interactive online video streaming service, among a population comprising each different combination of targeted attributes recorded for each of the samples, using a computer analyzing the electronic data records. The method may further include populating an electronic data structure in a computer memory relating the each different combination of the targeted attributes to a forecasted number of available impressions in a defined time period, based on the probability distribution and a forecasted total number of available impressions in the time period. The method may further include estimating an inventory number of impressions in a program collection in the defined time period available for targeting ads to be included in streamed ones of the program collection providing ad impressions having a defined set of targeted attributes, based on the electronic data structure.

The method may include decrementing the forecasted number of available impressions in the time period related to the each different combination of the targeted attributes in the electronic data structure, based on ad impressions sold. The method may further include receiving user input defining the defined set of targeted attributes and the time period via a user interface device, and outputting the inventory number to an output device in response to the user input.

Further aspects of the method for estimating ad inventory in an online video distribution system may include identifying a combination set of the each different combination of the targeted attributes in the electronic data structure, wherein each member of the combination set includes all of the defined set of targeted attributes. Estimating the inventory may include aggregating the forecasted number of available impressions in the time period over the combination set.

In another aspect, the method may include translating the defined set of targeted attributes targeted by an ad campaign into a bit mask. In such case, identifying the combination set may be performed at least in part by applying the bit mask to the electronic data structure. The method may also include organizing the forecasted number of impressions for the each different combination of the targeted attributes in the electronic data structure into a state table based on impressions per ad of multiple ad pods defined for each program.

Aspects of the method may further include forecasting individual programs of the program collection at least with respect to a time schedule of new episodes to be released during the time period. For example, the method may include defining a time-dependent projected viewership function for each program. The time-dependent projected viewership function for each program may be defined at least in part by summing a series of time-dependent projected viewership functions for individual episodes forecasted for each program. For example, each of the time-dependent projected viewership functions for the individual episodes may be defined as a linear function in 1/N, wherein ‘N’ represents time since initial release of a respective corresponding one of the individual episodes. In such embodiments, the method may include defining the linear function in 1/N characterized by C+B/N, wherein ‘C’ and ‘B’ are constants, and determining a value for the constants ‘C’ and ‘B’ by analyzing viewership records for the individual episodes of each program. In addition, the method may include determining the total projected viewership for each program in the time period as electronic data stored in a computer memory, by integrating the time-dependent projected viewership function for each program over the time period.

In related aspects, a computing apparatus may be provided for performing any of the methods and aspects of the methods summarized above. An apparatus may include, for example, a processor coupled to a memory, wherein the memory holds instructions for execution by the processor to cause the apparatus to perform operations as described above. Certain aspects of such apparatus (e.g., hardware aspects) may be exemplified by equipment such as computer servers, personal computers, smart phones, notepad or palm computers, laptop computers, and other computing devices of various types used for providing or accessing information over a computer network. Similarly, an article of manufacture may be provided, including a non-transitory computer-readable medium holding encoded instructions, which when executed by a processor, may cause a client-side or server-side computing apparatus to perform the methods and aspects of the methods as summarized above.

Further embodiments, aspects and details of methods, apparatus and systems for estimating and managing ad inventory in an online video distribution system are presented in the detailed description that follows.

DETAILED DESCRIPTION

In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more embodiments. It may be evident, however, that such embodiments may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing one or more embodiments.

Features and aspects as disclosed herein may be implemented within a system including a video streaming system100in communication with multiple client devices via one or more communication networks.

In streaming, a server streams audio-video data continuously to a media player component operating at least partly on the client device, which may play the audio-video data concurrently with receiving the streaming data from the server. The media player component may initiate play of the video data immediately after receiving an initial portion of the data from the content provider. Traditional streaming techniques use a single provider delivering a stream of data to a set of end users. Unlike progressive downloading, streaming media can be delivered on-demand or live. Progressive downloading may require downloading the entire file or downloading enough of the entire file to start playback at the beginning. In contrast, streaming may enable immediate playback at any point within the file. End-users may skip through the media file to start playback or change playback to any point in the media file. Hence, the end-user does not need to wait for the file to progressively download. Typically, streaming media is delivered from a few dedicated servers having high bandwidth capabilities.

A streaming media server100may be defined as a specialized device that accepts requests for video files, and based on information about the format, bandwidth and structure of those files, serves an amount of data necessary to play the video, at the rate needed to play it. Streaming media servers may also account for the transmission bandwidth and capabilities of the media player on the destination client. Unlike the web server, the streaming media server communicates with the client device using control messages and data messages to adjust to changing network conditions as the video is played. These control messages may include commands for enabling control functions such as fast forward, fast reverse, pausing, or seeking to a particular part of the file at the client. Since a streaming media server may transmit video data only as needed and at the rate that is needed, precise control over the number of streams served can be maintained. Unlike the case with progressive downloading, the viewer will not be able to view high data rate videos over a lower data rate transmission medium. However, streaming media servers (1) provide users random access to the video file, (2) allows monitoring of who is viewing what video programs and how long they are watched (3) use transmission bandwidth more efficiently, since only the amount of data required to support the viewing experience is transmitted, and (4) the video file is not stored in the viewer's computer, but discarded by the media player, thus allowing more control over the content.

Streaming media servers may use HTTP and TCP to deliver video streams, but generally use RSTP (real time streaming protocol) and UDP (user datagram protocol). These protocols permit control messages and save bandwidth by reducing overhead. Unlike TCP, when data is dropped during transmission, UDP does not transmit resent requests. Instead, the server continues to send data. Streaming media servers can also deliver live webcasts and can multicast, which allows more than one client to tune into a single stream, thus saving bandwidth.

Typically, progressively downloaded media is transmitted to the user device at a rate that is faster than playback. The media program player buffers this data, and may indicate how much of the media program has been buffered by providing an indicator, usually as a part of a “progress bar.” A control is often provided that allows the user to go to any point in the program that has already been buffered by selecting the control and moving it to a different location along the progress bar. This allows the user to randomly access any buffered portion of the media program. Streaming media players at the client do not rely on buffering to provide random access to any point in the media program. Instead, this is accomplished through the use of control messages transmitted from the media player to the streaming media server.

The delivery of video content by streaming or progressive download may be accomplished under a variety of models. In one model, the user pays for the viewing of each video program, for example, using a pay-per-view service. In another model widely adopted by broadcast television shortly after its inception, sponsors pay for the presentation of the media program in exchange for the right to present advertisements during or adjacent to the presentation of the program. In some models, advertisements are inserted at predetermined times in a video program, which times may be referred to as “ad slots” or “ad breaks.” An ad break reserved for one or more video ads to be played in uninterrupted sequence may also be referred to as an “ad pod.” With streaming video, the media player may be configured so that the client device cannot play the video without also playing predetermined advertisements during the designated ad slots.

For example, the video streaming system100may include one or more computer servers or modules102,104,106,108and/or110distributed over one or more computers. Each server102,104,110may include, or may be operatively coupled to, one or more data stores, for example database105, indexes, files, or other data structures. A video content server102may access a data store of various video segments; for example, newly released and archived television episodes, motion pictures, and other content produced as primary content of interest to consumers. The video content server102may serve the video segments as directed by a user interface controller module108.

A video advertising server104may access a data store of relatively short video segments (e.g., 10 second, 30 second, or 60 second video advertisements) configured as advertising for a particular advertiser or message. The advertising may be provided for an advertiser in exchange for payment of same kind, or may comprise a promotional message for the system100, a public service message, or some other information. The ad server104may serve the video advertising segments as directed by the user interface controller108.

An advertising tracking server110may keep track of program and advertising views for video content streamed from the system100to client devices. Client devices may be configured to transmit a first signal, sometimes referred to as a “start beacon” to the system100(e.g., to ad tracker110) at the onset of each video segment playing on the client. Similarly, the client may transmit a second signal, sometime called an “end beacon” to the system when a video segment has finished playing on the client device. The ad tracking server110may process start and end beacons for video ads received by the system100, together with information concerning the program and user profiles which with each beacon is associated, to develop records regarding video advertising views related to program type, program identifier, user demographic, location of client device or user account, player device type, and other associated information. The ad tracking server110may store these records in a data structure, for example in a relational database105.

The video streaming system100may include, or be communicatively coupled to, an ad inventory management server130. The ad inventory management server may be communicatively coupled to one or more network nodes132for prospective ad buyers via WAN112or other connection. The ad buyer node132may operate a terminal interface or message system for communicating with an ad inventory module operating in the server130. A person wishing to purchase distribution of a particular video ad or set of video ads for an ad campaign may send an inquiry to the ad inventory management server130, based on parameters as more particularly described herein. The ad inventory management server130may receive and process such queries to determine available ad inventory and provide estimates in response to such queries. During such processing, the inventory management server130may communicate with the ad tracker110and/or the database105to obtain access to historical data concerning video advertising views in relation to specific programs, user demographics or other targeted attributes. The inventory management server may use the historical data to provide a basis for estimating ad inventory for some defined future time period.

As used herein, “ad inventory” does not refer to a definite, countable quantity of already-produced items such as might be stored in a warehouse. Each ad impression made by a streaming video ad is consumed the instant it is produced, so there can no store of inventory. Instead, as understood in the art and as used herein, “ad inventory” refers to a quantity of future ad impressions estimated to be available in a streaming video system during some defined future time period. Estimations may be based on a current state of the system, historical data regarding ad impressions, and/or other parameters. Ad inventory may be restricted to and thereby partly defined by a targeted audience based on selected demographic, geographic, or other targeted parameters. For example, ad inventory may be estimated for video programs targeted to a particular geographic region, user demographic, program genre, program assumed viewer profile, data format, client type, time-of-day, or any other attribute useful for targeting advertising.

The video streaming system100may further include an integrator component106that integrates video content and video advertising into a streaming video segment as directed by the controller108. The controller108may determine the selection or configuration of advertising in the streaming video based on any suitable algorithm or process, and provide ad tracking data to the ad tracker110. The video streaming system100may include other modules or units not depicted inFIG. 1, for example administrative servers, commerce servers, network infrastructure, advertising selection engines, and so forth.

The video streaming system100may connect to a data communication network112. A data communication network112may comprise a local area network (LAN), a wide area network (WAN), for example, the Internet, a telephone network, a wireless cellular telecommunications network114, or some combination of these or similar networks.

One or more client devices may be in communication with the video streaming system100, via the data communication network112and/or other network114. Such client devices may include, for example, one or more laptop computers122, desktop computers120, “smart” mobile phones126, notepad devices124, network-enabled televisions128, or combinations thereof. Each of the client devices may be communicatively coupled to the video streaming system100via a router118for a LAN, via a base station116for a wireless telephony network114, or via some other connection or combination of connections. In operation, such client devices120,122,124,126,128may send and receive data or instructions to the system100, in response to user input received from user input devices or other input. In response, the system100may serve video program segments and selected video advertising content to the client devices120,122,124,126,128. The devices120,122,124,126,128may output video content from the streaming video programs and video advertising segments using a display screen, projector, or other video output device. In certain embodiments, the system100configured in accordance with the features and aspects disclosed herein may be configured to operate within or support a cloud computing environment. For example, a portion of, or all of, the servers102,104or110may reside in a cloud server.

Referring toFIG. 2, a diagrammatic view of an example ad inventory management server200is illustrated. For example, the server130or system100shown inFIG. 1may be configured as or include such ad inventory management server200, which may also be referred to as a computer, server, or computer server. In selected embodiments, the ad inventory management server200may include a processor202operatively coupled to a processor memory204, which holds binary-coded functional modules for execution by the processor202. Such functional modules may include an operating system206for handling system functions such as input/output and memory access, a client interface208for communicating with one or more ad buyer clients (e.g., ad buyer132as shown inFIG. 1), and an ad inventory estimator module210for determining estimates of available ad inventories based on a current system state including future program schedules and libraries, historical ad viewing data, and queries received via the client interface module208.

A bus214or other communication component may support communication of information within the computer200. The processor202may be a specialized or dedicated microprocessor configured to perform particular tasks in accordance with the features and aspects disclosed herein by executing machine-readable software code defining the particular tasks. Processor memory204(e.g., random access memory (RAM) or other dynamic storage device) may be connected to the bus214or directly to the processor202, and store information and instructions to be executed by a processor202. The memory204may also store temporary variables or other intermediate information during execution of such instructions.

A computer-readable medium in a storage device224may be connected to the bus214and store static information and instructions for the processor202; for example, the storage device224may store the modules206,208, and210when the ad inventory management server200is powered off, from which the modules may be loaded into the processor memory204when the client200is powered up. The storage device224may include a non-transitory computer-readable medium holding information, instructions, or some combination thereof, for example instructions that when executed by the processor202, cause the ad inventory management server200to perform one or more operations of a method as described herein.

A communication interface216may also be connected to the bus214. The communication interface216may provide or support two-way data communication between the ad inventory management server200and one or more external devices, e.g., the streaming system100or ad buyer node132, optionally via a router/modem226or other connection. In the alternative, or in addition, the ad inventory management server200may include a Local Area Network (LAN) interface218communicatively coupled to a database server228, from which the server200may obtain information regarding system content libraries and schedules and historical ad view data categorized by any useful targeted attribute, for processing to provide ad inventory estimates.

The ad inventory management server200may be connected (e.g., via the bus214and graphics processing unit220) to a display component228. A display component228may include any suitable configuration for displaying information to a user of the ad inventory management server200. For example, a display component228may include or utilize a liquid crystal display (LCD), touchscreen LCD (e.g., capacitive display), light emitting diode (LED) display, projector, cathode ray tube (CRT), or other display device to present information to a user of the ad inventory management server200in a visual display.

One or more input devices230(e.g., an alphanumeric keyboard, microphone, keypad, remote controller, touchscreen, camera or camera array) may be connected to the bus214via a user input port222to communicate information and commands to the server200. In selected embodiments, an input device230may provide or support control over user selection input, for example, control of a cursor or highlight. Such a selection indicator control device, for example a pointing device, may be configured as a mouse, a trackball, a track pad, touchscreen, cursor direction keys or other device for receiving or tracking physical movement and translating the movement into electrical signals indicating movement of a user selection indicator. The selection indicator control device may be incorporated into the display unit228, for example using a touch sensitive screen. A selection indicator control device may communicate direction information and command selections to the processor202and control selection indicator movement on the display228. A selection indicator control device may have two or more degrees of freedom, for example allowing the device to specify selection indicator positions in a plane or three-dimensional space.

Execution of sequences of instructions contained in main memory204may cause a processor202to perform one or more of the procedures or steps described herein. In selected embodiments, one or more processors202in a multi-processing arrangement may also be employed to execute sequences of instructions contained in main memory204. Alternatively, or in addition thereto, firmware may be used in place of, or in combination with, software instructions to implement procedures or steps in accordance with the features and aspects disclosed herein. Thus, embodiments in accordance with the features and aspects disclosed herein may not be limited to any specific combination of hardware circuitry and software.

Referring toFIG. 3, general aspects of an ad inventory management process300used for providing estimates of ad inventory for future video ads expected to be viewed by users of a streaming video system are illustrated as a state diagram. The initial state308represents a current state of available programs, content libraries, and historical ad view data for a particular video streaming service at a particular point in time, plus an ad query for a defined future time and specified targeted attributes, which may include, for example, user demographic, program type, player device type, or player device location. The initial state308may be represented in a computer memory in various ways, for example by a database of library content characterized by type, schedule of expected future new releases, historical ad views broken down by program and targeted attribute, and a structured query form. It should be appreciated that the server system state is constantly changing as users continue to access the streaming system, new content is added, and old content deleted, and the initial state308may therefore represent a system state as it exists at a particular instant of time, for example at the time that a query requesting an estimate of ad inventory is submitted to the system. It should be appreciated that the initial state308represents a particular physical state based on video content representative of physical display output, records of past events defined by physical interactions with client devices, and a record defining a query inferred from physical inputs to a query client machine.

The inventory management process300is (or includes) an input-output computation process performed by a computer processor, which operates on the initial state308to output at least one final state310. The final state310represents a particular ad inventory estimate determined from the state data308, i.e., from a defined physical state. The ad estimate represents an amount of a physical resource, for example “end beacon” events for video ads predicted to occur on physical client machines in a defined future time period, computed in a deterministic manner from the initial physical state308. In that sense, the inventory management process300determines an estimate of the amount of a physical resource (ad inventory) that will be contained in a physical medium (a defined targeted ad space) based on physical measurement data (historical data). The process300may therefore operate as a state machine that accepts the initial state308representing a physical state of a streaming video system and transforms it into a final state310representing a related physical quantity. Subsequently, the final output state310being an estimate of a future physical state can be fulfilled in physical outputs from clients connected to a video streaming service, for example by inserting particular video advertisements into selected content streamed from the system at a managed rate determined by the estimate.

The ad inventory management process300may include several interactive modules, for example, a historical ad tracking module302, a query processing module304and an inventory estimation module306. The module300may include other modules, for example, a user interface module, commerce module, graphics module, etc., which for illustrative simplicity are not shown.

The ad tracking module302may record ad viewing events based on signals received from client devices, for example start beacons and end beacons, and gather information regarding program and user parameters. Such parameters may include, for example, program type or genre, program length, physical location or estimated physical location of the client device; or demographic factors such as age, gender, education level; and interest or preference data. The module302may determine location parameters by network address, GPS or cellular triangulation, user self reporting via a questionnaire, or other method. The module302may determine demographic or interest parameters by user self reporting via a questionnaire, user profile, analyzing past browsing, video viewing, or ad selection history, or other method. The module302may further gather program parameters for programs in which video ads are viewed, and record viewing data in a relational database. In addition, the ad tracker module302may, through an administrative interface, participate in configuring or maintaining the relational database or data structure.

The query processing module304may receive and process a query requesting a particular ad inventory estimate. This module304may serve a data collection form to gather structured query parameters, and/or process query strings using a predefined syntax. Query parameters may include, for example, definition of a future period for a prospective ad campaign, number of impressions desired, and one or more targeted attributes for an ad campaign.

The inventory estimation module306may receive inputs from the ad tracking module302and the query module304, and use those inputs for determining an ad inventory estimate based on a time model of future ad impressions determined from a current system state. The inventory estimation module306may operate an algorithm operating on the inputs based on the time model to produce the estimate. Examples of suitable algorithms are provided in the detailed description below. The inventory estimation module306may output a data signal indicating a value of the resulting estimated ad inventory, which may be stored in a computer memory and/or displayed using a computer display device.

Ad inventory estimation may be related to patterns such as video streaming systems adopt for inserting video ads in program content.FIG. 4is a line diagram illustrating aspects of a video segment timeline400including an example of a pattern including ad slots406,408and410, sometimes referred to as “ad pods.” A video segment includes video data characterized by a sequence of video frames that are output in order at a defined frame rate to generate video output. As such, a video segment includes an initial or first frame at inception time “t0”402of video output, and each subsequent frame is output at a defined time “t” after inception until a terminal or end time “te”404. Thus, each frame defines a particular time or “temporal point” in the streaming video segment, typically measured from the time of inception. For example, for a video configured for 30 frames per second, the 300thframe defines a temporal point 10 seconds after inception. A temporal point in a streaming video segment may sometime be referred to herein as a “location” in relation to a progress bar, time line or other time indicator.

Any non-negative, integral number of ad slots406,408and410may be configured in the video time line. Each ad slot may be defined by a location and duration. For example, the first ad slot406is located at “t0” and has a duration of “t1−t0”; the second ad slot408is located at “t2” and has a duration of “t3−t2”; and the third ad slot410is located at “t4” and has a duration of “t5−t4”. The inter-slot portions412,414and416are used for playing requesting video content, and the ad slots are used for playing video advertisements. A streaming media player operating on the client device may cause the video content to play in the defined inter-slot portions412,414,416and stream advertising videos of appropriate duration in all of the ad slots406,408,410.

FIG. 5illustrates an example of a call flow500between an ad buyer node501, an inventory management server502, and a database server506for estimating and managing ad inventory based on a current state of a video streaming system. The servers501,502and504may each be, or may include, a computing device including one or more processors coupled to a memory and other components as described in more detail herein, or as known in the art. As prelude to the call flow500, an example of call flow for video streaming provided by a video streaming server through a web page interface and streaming media players installed at numerous client devices is first described without reference to a figure. The inventive concepts herein are not limited to such environments.

If a web page environment is used, a call flow may initiate with the client devices (not shown) displaying a web (e.g., World Wide Web) page received from a video streaming system (also not shown) including links for requesting one or more video segments. For example, the web page may comprise a “home” or personalized page including a list of selected video segments of general interest, or selected as likely to be of interest to a specific user based on a user profile. The client device may receive user input selecting one of the links, for example, a “point and click” input from a pointing device, a touch input on a touchscreen device, or a spoken command. In response to the input, the client device may request a specific video segment by transmitting a Hypertext Transfer Protocol (HTTP) “get” request, or other suitable request message, to the video streaming system.

In response to receiving the request message, the video streaming system may determine a selection of advertising videos and ad slots for the video segment requested by the request message. In so doing, the server system may access a record pertaining to user preferences or past activity by a user identified, for example by a user account, as making the request for the video segment. Any suitable method may be used to select the video advertisements, which may include consideration of user input and related communication between each client and the video streaming server. An output of the determining process may include video ad identifiers included in streaming data.

The streaming video system may stream the video segment configured with video advertising. The client device may play the streaming video segment configured with video advertising at designated ad slots using a media player component. Video advertisements may be selected by the streaming video system just prior to each ad slot being encountered at the client, or in advance of initiation of a streaming session. Each client device may play each streaming video until reaching one or more designated ad slots. In some embodiments clients may request a video ad in response to detecting the beginning of a designated ad slot, such as, for example, about five seconds before reaching the ad slot during play of a streaming video. An ad server of the video streaming system may serve the video ad to clients in response to each request. In alternative embodiments, an ad server may automatically select and include a streaming video ad in the content streamed to the client device, without responding to a request from the client for a video ad. When each client has finished playing an ad, it may transmit an end beacon to an ad server. Upon receiving each such end beacon, the ad server may create a record including at least an identifier for the program and video ad, and time the end beacon was received. In addition, the record may include a user or session identifier and other information. The ad server may continually provide such records to the database server504operating an ad tracking process506. Using a relational data structure, each end beacon event record may thereby be related, via included program, user, or session identifiers to one or more targeted attributes, for example, demographic or geographic parameters, device type, or program genre. The database server504may maintain all such records in a data structure, or compress the records using a counting process to keep a more limited set of counting data of ad impressions for each targeted attribute and program, in particular time increments.

Periodically, or in response to defined events, the inventory management server may update a time model used for forecasting ad inventory. As part of an update, the server502may perform historical querying508and obtain requested historical ad viewing data510from the database server504. The inventory management server502may test a current forecasted model against historical data, and adjust (update) parameters of the forecasted model512, so that the model better matches historical measured results for recent comparable time periods. This model adjustment process512may therefore adjust for dependencies that may exist between different targeted attributes in the historical data, assuming such dependencies are likely to be repeated in future episodes of the same or similar shows. For example, dependencies between a viewer's gender and the identity of a program in which an advertisement viewing event occurs can be accounted for using a targeting cut table as described in the specification below.

From time to time an ad buying node501may receive user input516generating a query or ad campaign request518, which is transmitted to inventory server502. In response, the server502may process the request520using campaign parameters (e.g., attributes of targeted viewers, geographic area, and time period) using the most current forecasted model to obtain a resulting inventory estimate, which it may display522to a system administrator. A system administrator may compare the requested ad buy to the estimated inventory524, and if sufficient inventory exists, reserve the requested inventory for the ad buy. Conversely, if insufficient inventory exists in the specified time frame for the ad campaign, the administrator may contact the ad buyer to define alternative campaign parameters for a second estimate. In either case, the inventory management server502may transmit526an inventory estimate to the ad buyer node501. The ad buyer node501may display details of the inventory estimate, which if necessary may guide the ad buyer into redefining ad campaign details to ensure that sufficient inventory is available to carry out the contemplated campaign. Thus, an inventory estimation process at the server502may be used manage allocation of ad inventory of the streaming video system for one or more ad campaigns.

Referring toFIG. 6, an example of a form600for defining an ad campaign and displaying results of an ad inventory analysis illustrates examples of possible inputs and outputs of the present technical methods. A first text box602may be included in the form600enabling user input specifying a start date for a prospective video ad campaign, with a second text box604enabling user input specifying an end date. A third text box606may be included enabling user entry of a total number of ad impressions (views) to be achieved by the prospective ad campaign. A selection object608(e.g., drop-down list) may also be included in the form600, enabling user input specifying one or more programs, program types, or groups of video programs that are to be included in the video ad campaign. A fourth text box610may be included enabling user entry of a frequency cap, specifying a maximum frequency for campaign ads appearing in the same video program. By activating an interactive object such as the compute button624, an ad buyer may cause an application providing the form600to transmit a signal to an ad inventory estimation module, thereby initiating an estimation process based on the entered parameters.

Results612may be displayed in another portion of the form600, or in a separate window, after the ad estimation module has completed operation. Examples of estimation results are provided for purposes of illustration inFIG. 6. A first result, “Reach”614indicates an estimated number of unique viewers who will view at least one of the video ads in the specified campaign. In the illustrated example, a reach of approximately 1.2 million users is estimated at614for an ad campaign of 1.5 million impressions as specified in box606. A second result, “Total Uniques”616indicates a total number of unique users estimated to be reachable in the time period defined by the dates indicated in boxes602,604and by the programs selected at608. A third result, “Saturation”618is the ratio of Reach614to Total Uniques616. A fourth result, “Efficiency” is the ratio of Reach614to the total impressions indicated in box606. A number of days622counted in the defined campaign period is indicated for convenience at the bottom of the results612.

Referring toFIG. 7, a window700including a mixed textual and graphical display of ad inventory analysis results is illustrated, as an example showing capabilities of the present technology. A first column702includes a breakdown total inventory (both committed and uncommitted) for a particular ad campaign such as may be defined using the form600previously described. The column702may list, for example, total ad inventory in the specified time period for different classifications or types of ad inventory. Examples of different types of ad inventory may include, for example, types based on position of the inventory in the ad pod, program clip, or ad slate. A second column704may list, for example, available (uncommitted) inventory for each of the ad types. A third column706may list, for example, reserved (committed) inventory for each of the ad types and overbooked inventory (if any). The column706may also include a breakdown of the committed inventory in terms of Ads-Per-Pod (APP), for example 1 APP, 2 APP and 3 APP. A fourth column708may list parameters and statistics pertinent to share of voice for the defined ad campaign, for example total impressions, requested impressions per day, pod share of voice, and impression share of voice.

The window700may also include a chart718or similar object showing inventory estimates broken down per time period, such as daily or hourly. For example, the line chart718includes a first line710representing total inventory per day, a second line712representing reserved inventory per day, an third line714representing available inventory per day, and a fourth line716representing the requested current ad campaign in impressions per day.

A user interface provided for defining ad campaigns may include additional features enabling an ad buyer to define an ad campaign in a more detailed way. For example,FIG. 8illustrates an example of an input form800for defining more detailed parameters of an ad campaign. The form800may include text blocks or other interactive features802enabling the user to specify a date range, number of impressions, maximum ads per pod, and optionally ad slate parameters for an ad campaign.

In addition, the form800may include a parameter definition window or frame824for receiving user input specifying the scope of an ad campaign by limiting the campaign to selected programs, program types, client device types, geographic areas, distribution, user demographic, or other attributes. For example, a content tab804may link to a set of sub-tabs categorically organizing video content attributes. In the illustrated example, the content tab804links to a site channel sub-tab806, an ad model sub-tab808, a content rating sub-tab810, a program series sub-tab812, a content partner sub-tab814and a content language sub-tab816. A list of selectable attributes pertinent to each sub-tab may be listed when the sub-tab is highlighted. For example, with the site channel sub-tab806selected, a listing of all the available content channels on the video streaming system is presented. By selecting one or more of the listed channels, the submitted ad campaign and related ad inventory estimation process may be limited to the selected channels. Similarly, corresponding sub-tabs and parameter lists may be linked to other tabs for different attribute categories, for example a geography tab818for attributes related to places where program content is distributed, a distribution tab820for attributes related to channels or media through which content is distributed, and a demographics tab822for attributes related to targeted user demographics.

The selectable attributes may be the same, or may correlate to, attributes tracked for historical ad impressions. For example, in some embodiments, each ad impression may be tagged with six different demographic attribute types, such as gender, profile age (user's stated age), recommendation age (apparent age based on types of programs watched), program demographic, predicted demographic, combination of age and gender, or combinations of these or other demographic attributes. Other attributes may also be used. For example, a “location” attribute type may have values of marketing area (DMA), city, state, zip code, or other geographic region. A “content” attribute type may have the value of genre, content partner, or rating. A “time” attribute type may have the value of episode or clip length, or time of day. A “platform” attribute type may have the value of mobile or full. A “profile” attribute type may have the value of subscription type or language. An “ad type” attribute type may have the value of full screen or pop out. It should be appreciated that the foregoing attribute values and types are merely examples, and additional or different attribute values and types may be used for tagging ad impressions and characterizing ad campaigns in a streaming video system.

A query definition window825may list selected attributes and logic defining the query and ad campaign. A sequence of attributes related by logical (e.g., Boolean) operators may be used, with the parameters specified at802, to define an ad campaign and hence the query used for estimating ad inventory pertinent to a defined campaign. For example, a category column826may list categories of selected attributes. The categories listed in the columns826may correspond to the tabs (e.g., tabs804and818) presented in the superior window824. A type column828may list types of selected attributes, corresponding to the sub-tabs presented above. A value column830may list the values of the selected attributes.

A first logical operator column832may enable activation of one or more set operators, for example “union” indicating that the presence of the attribute is sufficient (logical “OR”) to qualify or disqualify inventory for use in the ad campaign depending on the value of the restriction operator in column834. Specifically, if the restriction operator834is set to “inclusion” and the set operator832to “union,” then the presence of the attribute will qualify the inventory for use. Conversely if the restriction operator834is set to “exclusion” and the set operator832to “union,” then the presence of the attribute will be sufficient to disqualify the inventory for use.

On the other hand, if the set operator832is set to “not union” (e.g., if “union is not selected”) the presence of the attribute is necessary but not sufficient (logical “AND”) to qualify or disqualify inventory for use in the ad campaign depending on the value of the restriction operator in column834. Specifically, if the restriction operator834is set to “inclusion” and the set operator832to “not union,” then the presence of the attribute will qualify the inventory for use only if the other listed attributes set for inclusion are also present. Conversely if the restriction operator834is set to “exclusion” and the set operator832to “not union,” then the presence of the attribute will disqualify the inventory for use only if the other listed attributes set for exclusion are also present. In the alternative, or in addition, other methods for expressing relationships between attributes and logical operators may be used, for example traditional Boolean expressions.

Results of an ad inventory analysis may be presented in a lower window836, which contains example values similar to those described in the priorFIGS. 6-7. In addition, the results may include a link838to a detailed results window as shown inFIG. 7. The results may also include a link840to a display window showing a breakdown of competing video ads for the inventory during the ad campaign, which may be useful for avoiding undesirable overlaps between competing campaigns.

Viewership of certain types of video programming may be highly time-dependent. For example, viewership often peaks shortly after first release of content, and decays linearly with time after the release. In an aspect, an ad inventory analysis module may build, maintain and use a time-dependent model for estimating ad inventory to account for time-dependent viewership.FIG. 9is a diagram900illustrating an example of a model of program views as a function of time for a program comprising serial episodes. The dashed lines902,904,906and908represent viewership decay as a function of time, for episodes of a program respectively released at times1,2,3,4shown on the horizontal axis.

Each decay curve902,904,906and908may be defined by a function of time that is linear in 1/N, wherein ‘N’ represents days since first release of the respective episodes. For example, each decay curve may be approximated by the expression C+B/N, where ‘C’ and ‘B’ are empirically determined constants and ‘N’ is as previously described. The constants ‘B’ and ‘C’ may differ between different programs, demographics, day of week, or other targeted attributes. Other viewership curves may not be linear in 1/N; for example, viewership of promotional clips typically increases up to the release date of the primary program being promoted and decays rapidly thereafter. The solid line910represents total number of views as a function of time for a particular program or inventory category, given by a summation of the individual episode curves902,904,906and908. Episode schedules may be used to determine the date and time at which new episodes are released, and expected decay curves for each new release may be extrapolated based on historical decay curves for the program or other inventory category (e.g., program limited by demographic attribute or other qualifier). For example, a future decay curve for an episode may be based on a historical curve for a most recent episode, or a rolling average of recent episodes.

For each program or other inventory category, a model-building module may determine a value for the constants ‘B’ and ‘C’ based on historical data, or other empirical values if a different viewership curve is used. An inventory estimation method based on such time-dependent models may aggregate selected time curves in any way consistent with the scope of a specified ad campaign to estimate the number of viewers that may be expected during the campaign period.

Results of such extrapolation and aggregation of time-dependent viewership curves may be displayed as system output in window1000of a graphical user interface, as shown inFIG. 10. The window1000may include a list1002of selected series for which the future time-dependent viewership curves are aggregated to obtain aggregate data1004, wherein each data bar represents an aggregate estimated total viewership for respective ones of the dates from Apr. 2, 2012 to Apr. 30, 2012. As shown in the legend1006, historical and extrapolated viewership estimates are included and aggregated in the total historical record or estimated viewership for each date. In the illustrated example, historical data and prior estimates are available for the dates Apr. 2, 2012 to Apr. 8, 2012, and estimates only are available for dates after Apr. 8, 2012. The curve1008represents historical data for Apr. 2, 2012 through Apr. 8, 2012, and the curve1010represents historical data for the prior year period Apr. 2, 2011 through Apr. 30, 2011.

A method for estimating ad inventory may also account for interdependencies between different attributes.FIG. 11shows a simplified data structure1100(e.g., data table) relating combinations of targeted attributes in columns1102,1104and1106to inventory estimates (impression counts) in column1108. By way of example, column1102lists gender values, column1104lists age range values, and column1106lists marketing area values. Each combination of attributes may sometime be referred to as a targeting cut; the number of targeting cuts tracked by the system should be less than or equal to the number of impressions. The use of combinations of attributes in each tracked targeting cut enables the interdependencies between different attributes to be accounted for. In summary, probabilities of an ad impression occurring may be tracked for representative combinations of attributes (tracked targeting cuts), extrapolated to a future ad campaign based on a probability distribution and an estimated total number of impressions for the targeted period, and then extracted over some subset of the targeted attributes defined by an inventory query to provide an estimate of impressions for the subset. Tables as shown inFIG. 11may be used for tracking and for forecasting, wherein a tracking table holds modeled data based on sampling past ad impressions including a probability distribution for extrapolating a forecast distribution for a future time period. Forecasted data may be obtained from a tracking table by arithmetic operations based an estimated total future number of impressions for a time period, for example, an estimated number of future impressions from a time-dependent viewership model. More detailed description and examples of this method are provided in the discussion below.

In comparison to tracking and forecasting interdependent attributes, if each attribute is assumed to have an independent influence on the probability that an ad impression will occur for a particular combination of attributes, future ad impressions for the combination may be computed simply by multiplying the probabilities for each independent attribute. For example, the probability that a viewer will be male may be multiplied by a probability that an ad will be viewed during a science fiction program, to obtain a combined probability that an ad will be viewed by a male during a science fiction program. Although computationally efficient, this approach based on an assumed independence of attributes may often cause inaccurate forecasting, because many attributes may in fact exhibit interdependent behavior. For example, the probability that a viewer of an ad impression played during a science fiction program is male may be higher than the probability that viewers of all ad impressions during a time period will be male. This example illustrates a simple interdependency between a viewer gender attribute and program genre attribute. Many more complex interdependencies may be observed in real-world video streaming systems, which may be accounted for by the methods disclosed herein.

The table inFIG. 11shows an example using only three attributes, wherein the first attribute (gender) has two possible values (male or female), the second attribute (age range) may have several values, for example five or six non-overlapping age ranges although any non-zero number of age ranges may be used, and the third attribute (market area) may have a very large number of different values. The simple example ofFIG. 11(wherein three attributes are combined to provide six targeting cuts) may be extended to a general case of ‘A’ attributes, wherein each ithattribute has ‘A,’ number of possible values. In this general case, the number of possible different targeting cuts may be expressed by the product of the attribute counts (Ai), which may be written as ΠAi, wherein each value of Airepresents a count of possible values for a corresponding one of the attributes.

The number ΠAimay be very large, depending on the number of attributes to be considered. For example, assuming twenty different attributes wherein a median value of the number of different values per attribute is about ten, the number ΠAimay be of an order of magnitude about equal to 1020. A complete table including every possible different targeting cut for twenty such attributes would require about 1020rows. Such a large data table would be very inefficient and may require impracticably immense computing resources. Moreover, such a table would detail many more targeting cuts than can possibly be fulfilled by a typical ad campaign. For example, the total number of ad impressions available in an ad campaign period may be on the order of about 106to 108. Thus, depending on the number and possible values of attributes used for targeting, the number of relevant ad impressions may be many orders of magnitude smaller than the total possible number of targeting cuts. Were tables likeFIG. 11to be constructed for every possible targeting cut, which are orders of magnitude greater in number than the number of possible ad impressions, most rows of such tables would record zero impressions. Such a table would not provide an efficient solution to the problem of forecasting ad inventory for interdependent targeting attributes.

It would be desirable, therefore, to be able to accurately forecast ad impressions for a large number of different attributes in a way that accounts for interdependencies between attributes, without constructing overly large data tables or data structures. In one approach, such a table may be constructed by sampling actual impressions, and only recording an impression with a corresponding targeting cut for actual samples. Thus, each row of the table—corresponding to a multi-attribute targeting cut—will be related to a corresponding recorded count of one or more ad impressions.

Although it is possible to sample every ad impression during a time period, efficiency may be improved without introducing significant errors by randomly sampling a relatively small percentage of total ad impressions during a period. As a general rule, sampling error is inversely proportional to the square root of the number of samples taken, and directly proportional to the standard deviation of the probability distribution for the population from which the samples are taken. The situation is more complex for multi-variable distributions which may generally exhibit different distributions over different variables. However, the general principle of sampling a relatively small number of a large population to obtain a representative sample within an acceptable error level also applies to multi-variable samples. In the case of ad inventory forecasting with about twenty different tracking attributes, for a population on the order of 107impressions, a sample size on the order of 104samples may be expected to provide a reasonably accurate picture of a population distribution. Because many samples are likely to correspond to identical targeting cuts, the number of tracked targeting cuts may be substantially less than the number of samples. Samples may be taken by random selection from a total population of ad impressions for a tracked period. A resulting data table, which may be organized like the table ofFIG. 11, represents an estimated or “modeled” probability distribution for a sampled population. The probability of each different combination of attributes (e.g., as represented by the first three rows of the table) may be determined by dividing each respective count (e.g., as shown in column four1108of the table) by the total number of samples taken (e.g., the total of all rows in column four).

For each targeting cut (i.e., each unique combination of attributes represented by first three columns of the table), a count of estimated inventory may be maintained in column1108based on a time-dependent viewership model for the ad campaign. For example, a probability distribution number modeled by a sample count of past impressions may be multiplied by a total number of estimated impressions for a defined future time period from the time-dependent viewership model, and divided by the total number of samples underlying the probability distribution, to obtain an estimated inventory for each targeting cut.

The count in1108may comprise more detailed information concerning types of available inventory, for example ad pod state. It should be appreciated that the data table1100is simplified for illustrative purposes, including simplified labels, identifiers and data structure, to better illustrate fundamental concepts of a data structure for use with the technology described herein. A similar but more sophisticated data structure may be used by an inventory estimation server to estimate ad inventory for a particular prospective ad campaign.

To improve efficiency of aggregating inventory for different subsets of the targeting cuts, each subset of a targeting cut may be represented by a corresponding unique value of a bit mask. The length of the bit mask in bits may equal the number of rows in the table. For example, the table1100has six rows, so a six-bit mask may be used. The bit mask may be used to quickly identify the subset of targeting cuts specified by an ad campaign using a logical comparison. For example, with reference toFIG. 11, an ad campaign directed specifically at females aged 18-29 in the New York metro area may use a bit mask applied via a logical AND to quickly locate the second row of the table, where an inventory of 50 units is indicated. That inventory may be further analyzed as consisting of different ad pod states as discussed below in connection withFIG. 12. It should be appreciated that in practice, thousands of different targeting cuts may be defined for calculating separate estimated ad inventories, and a typical ad campaign may be designed to direct video ads to a significant number (for example, hundreds) of the targeting cuts.

FIG. 12is a state diagram1200illustrating inventory counting for a streaming video system that configures video ads in multi-ad pods of up to three ads per pod. Therefore, the state diagram includes seven nodes, which downstream of the root node1202are each characterized by a coordinate pair. The root node1202represents an ad pod to which no ads are allocated. For the remaining nodes, the first value in the coordinate pair represents a number of ads allocated to the pod. The second value in the pair represents a number of total ads that are allowed to be allocated to the pod, as determined from one or more ads already allocated to the pod. For example, the pair 1,1 indicates an ad pod that is allocated one ad that must run by itself without any other ads in the pod. The pair 1,2 indicates that the pod is allocated one ad that must run with one additional ad, the pair 2,3 indicates that the pod is allocated two ads that must run with one additional ad, and so forth. When estimating ad inventory based on a defined ad campaign, the ad estimator may characterize the inventory allocated to the different ad pod states shown inFIG. 12. This may be useful, for example, to prevent over-estimating ad inventory by counting too many ad opportunities in the same ad pod, when placement in the same pod is prohibited. An example of a report of ad inventory allocated to different ad pod states is illustrated in column706ofFIG. 7.

The foregoing examples may be embodied in one or more methodologies performed by a computer, for example a client device, server, or some combination of a client device and server. Methodologies that may be implemented in accordance with the disclosed subject matter will be better appreciated with reference to various flow charts. Although methodologies are shown and described as a series of acts/blocks for simplicity of illustration, it is to be understood and appreciated that the claimed subject matter is not limited by the number or order of blocks, as some blocks may occur in different orders and/or at substantially the same time with other blocks from what is depicted and described herein. Moreover, not all illustrated blocks may be required to implement methodologies described herein. It is to be appreciated that functionality associated with blocks may be implemented by software, hardware, a combination thereof or any other suitable means (e.g., device, system, process, or component). Additionally, it should be further appreciated that methodologies disclosed throughout this specification are capable of being stored as encoded instructions and/or data on an article of manufacture, for example, a non-transitory computer-readable medium, to facilitate storing, transporting and transferring such methodologies to various devices. Those skilled in the art will understand and appreciate that a method could alternatively be represented as a series of interrelated states or events, such as in a state diagram.

Example Methodologies and Apparatus

As shown inFIG. 13, a computer server system may perform a method1300for ad inventory estimation in a video streaming system. The method1300may include, at1310, determining a probability distribution of samples taken from electronic data records of ad impressions in an interactive online video streaming service, among a population comprising each different combination of targeted attributes recorded for each of the samples, using a computer analyzing the electronic data records. For example, a computer system may randomly sample a population of ad impressions to obtain an estimated probability distribution for targeting cuts corresponding to the samples taken. The probability distribution may be expressed as a count of samples taken corresponding to each different combination of attributes, for example as shown inFIG. 11. The count for each different combination of attributes may be normalized to express a probability, by dividing each count by the total number of samples taken.

The method1300may further include, at1320, populating an electronic data structure in a computer memory relating the each different combination of the targeted attributes to a forecasted number of available impressions in a defined time period, based on the probability distribution and a forecasted number of available impressions in the time period. For example, extrapolated future ad views may be allocated to a data table as shown inFIG. 11, by multiplying each count in the respective rows of the table by a ratio of total number of projected ad views in the defined time period to the number of samples taken for the probability distribution. The total number of projected ad views in the time period may be based on the time-dependent viewership model. For example, total forecast ad impressions may be determined from forecast total viewership during the period based on historical or assumed ad impressions per viewer, and/or per program, for a defined time period and targeted program collection.

The method1300may further include, at1330, estimating an inventory number of impressions in a program collection in the defined time period available for targeting ads to be included in streamed ones of the program collection providing ad impressions having a defined set of targeted attributes, based on the electronic data structure. For example, the server may use a bit masking logical comparison operation to identify targeting cuts in an ad campaign, and then sum inventory tabulated for the identified targeting cuts. The defined set of targeted attributes may consist of a subset of the total number of attributes included in the each different combination of targeted attributes, because specifying all attributes would result in a very narrowly focused campaign likely of minimal value or effect. For example, if the system tracks about twenty different attributes, an inventory query for an ad campaign might be likely to specify between one to ten attributes specifically targeted by the ad campaign (i.e., the “defined set of targeted attributes”), and more likely between one and about five. The method1300operations should provide an inventory estimate that accounts for the effects of interdependence between different targeted attributes on available ad impressions, for ad campaigns wherein the number of targeted attributes is greater than one.

With reference toFIGS. 14-17, several additional operations1400,1500,1600and1700are depicted for estimating ad inventory for an ad campaign, which may be performed by a computer server, alone or in combination with a client device and/or another server. One or more of operations1400,1500,1600and1700may optionally be performed as part of method1300. The elements1400,1500,1600and1700may be performed in any operative order, or may be encompassed by a development algorithm without requiring a particular chronological order of performance. Operations can be independently performed and are not mutually exclusive. Therefore any one of such operations may be performed regardless of whether another downstream or upstream operation is performed. For example, if the method1300includes at least one of the operations1400,1500,1600and1700, then the method1300may terminate after the at least one operation, without necessarily having to include any subsequent downstream operation(s) that may be illustrated.

In an aspect, with reference toFIG. 14, the method1300may further include additional operations1400for estimating ad inventory. The additional operations may include, at1410, identifying a combination set of the each different combination of the targeted attributes in the electronic data structure, wherein each member of the combination set includes all of the defined set of targeted attributes. For example, if the set of targeted attributes defined by a query consists of four attributes, the combination set will consist of those members of all of the each different combination of the targeted attributes (e.g., each row of a table like that inFIG. 11, but with additional attribute columns) that includes all four of the set of targeted attributes. The method1300may further include, at1420, estimating the inventory at least in part by aggregating the forecasted number of available impressions in the time period over the combination set. For example, the system may sum all of the forecasted available impressions for ones of the different combinations of the targeted attributes (e.g., each targeting cut) that is included in combination set. The method1300may further include, at1430, translating the defined set of targeted attributes targeted by an ad campaign into a bit mask. The method1300may further include, at1440, identifying the combination set at least in part by applying the bit mask to the electronic data structure.

In other aspects, with reference toFIG. 15, the method1300may further include additional operations1500for estimating ad inventory. The additional operations may include, at1510, organizing the forecasted number of impressions for the each different combination of the targeted attributes in the electronic data structure into a state table based on impressions per ad of multiple ad pods defined for each program. Further details are discussed above in connection withFIG. 12. In an aspect, the method1300may further include, at1520, decrementing the forecasted number of available impressions in the time period related to the each of different combinations of the targeted attributes in the electronic data structure, based on ad impressions sold. In addition, the method1300may further include, at1530, including in the each different combination of the targeted attributes at least two different attributes selected from the group consisting of: viewer profile gender, viewer profile age, program recommendation age, viewer predicted age, viewer predicted gender, location of player device, user profile location, genre of video program, and type of player device.

With reference toFIG. 16, the method1300may further include additional operation1600for input and output. The method1300may include, at1610, receiving user input defining the defined set of targeted attributes and the time period via a user interface device. The method1300may further include, at1620, outputting the inventory number to an output device, in response to the user input.

In aspects, with reference toFIG. 17, the method1300may further include additional operations1700for modeling future time-dependent viewership. The additional operations may include, at1710, forecasting individual programs of the program collection at least with respect to a time schedule of new episodes to be released during the time period. In such case, the method1300may further include, at1720, defining a time-dependent projected viewership function for each program, for example by summing time-dependent curves for individual episodes of the program based on a schedule of expected episode release dates.

In addition, the method1300may further include, at1730, defining the time-dependent projected viewership function for each program at least in part by summing a series of time-dependent projected viewership functions for individual episodes forecasted for each program. In such case, the method1300may further include, at1740, defining each of the time-dependent projected viewership functions for the individual episodes as a linear function in 1/N, wherein ‘N’ represents time since initial release of a respective corresponding one of the individual episodes. For further example, the method1300may include, at1750, defining the linear function in 1/N characterized by C+B/N, wherein ‘C’ and ‘B’ are constants determined from historical data. In such case, the method1300may further include, at1760, determining a value for the constants ‘C’ and ‘B’ by analyzing viewership records for the individual episodes of each program. The linear function may be determined and defined separately for each attribute.

In another aspect, the method1300may further include, at1770, determining the total projected viewership for each program in the time period as electronic data stored in a computer memory, by integrating the time-dependent projected viewership function for each program over the time period.

With reference toFIG. 18, there is provided an exemplary apparatus1800that may be configured as computer server, client device, or combination of client and server, for ad inventory management. The apparatus1800may include functional blocks that can represent functions implemented by a processor, software, or combination thereof (e.g., firmware).

As illustrated, in one embodiment, the apparatus1800may include an electrical component or means1802for determining a probability distribution of samples taken from electronic data records of ad impressions in an interactive online video streaming service, among a population comprising each different combination of targeted attributes recorded for each of the samples. For example, the electrical component or means1802may include at least one control processor1810coupled to a memory component1816. The control processor may operate an algorithm, which may be held as program instructions in the memory component. The algorithm may include, for example, selecting samples from records of ad impressions in an interactive online video streaming service, determining a combination of targeted attributes recorded for each of the samples, and determining a probability distribution of the samples among a population comprising each different combination of the targeted attributes, for example by allocating sample counts to a data structure as shown inFIG. 11. The number of samples taken may be equal to or less than the number of ad impressions in a sampled set.

The apparatus1800may further include an electrical component or module1804for populating an electronic data structure in a computer memory relating the each different combination of the targeted attributes to a forecasted total number of available impressions in a defined time period, based on the probability distribution and a forecasted total number of available impressions in the time period. For example, the electrical component or means1804may include at least one control processor1810coupled to a memory component1816. The control processor may operate an algorithm, which may be held as program instructions in the memory component. The algorithm may include, for example, allocating extrapolated future ad views to corresponding rows of a data table as shown inFIG. 11, or equivalent data structure by multiplying a forecast total number of impression for the defined time period by each respective probability for each row (or different combination of attributes) of the historical probability distribution determined by the component1802.

The apparatus1800may further include an electrical component or module1806for estimating an inventory number of impressions in a program collection in the defined time period available for targeting ads to be included in streamed ones of the program collection providing ad impressions having a defined set of targeted attributes, based on the electronic data structure. For example, the electrical component or means1806may include at least one control processor1810coupled to a memory component1816. The control processor may operate an algorithm, which may be held as program instructions in the memory component. The algorithm may include, for example, applying a bit masking logical comparison operation to identify specific targeting cuts defined for an ad campaign in a data structure in which estimated inventories are allocated to specific targeting cuts, and then summing inventory tabulated for the identified targeting cuts.

The apparatus1800may include similar electrical components for performing any or all of the additional operations1400,1500,1600and1700described in connection withFIGS. 14-17, which for illustrative simplicity are not shown inFIG. 18.

In related aspects, the apparatus1800may optionally include a processor component1810having at least one processor, in the case of the apparatus1800configured as a network entity. The processor1810, in such case may be in operative communication with the components1802-1806or similar components via a bus1812or similar communication coupling. The processor1810may effect initiation and scheduling of the processes or functions performed by electrical components1802-1806.

In further related aspects, the apparatus1800may include a network interface component1814enabling communication between a client and a server. The apparatus1800may optionally include a component for storing information, such as, for example, a memory device/component1816. The computer readable medium or the memory component1816may be operatively coupled to the other components of the apparatus1800via the bus1812or the like. The memory component1816may be adapted to store computer readable instructions and data for implementing the processes and behavior of the components1802-1806, and subcomponents thereof, or the processor1810, or the methods disclosed herein. The memory component1816may retain instructions for executing functions associated with the components1802-1806. While shown as being external to the memory1816, it is to be understood that the components1802-1806can exist within the memory1816.

It should be understood that the specific order or hierarchy of steps in the processes disclosed are merely examples. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged while remaining within the scope of the present disclosure. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.

The term “non-transitory computer-readable medium” as used herein may refer to any medium that participates in holding instructions for execution by a processor202, or that stores data for processing by a computer. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and temporary storage media (e.g., cache memory). Non-volatile media may include optical discs or magnetic disks, such as used in a data storage device or medium. Volatile media may include dynamic memory, such as a main or cache memory for a computer processor. Common forms of non-transitory computer-readable media may include, for example, a hard (magnetic media) disk, magnetic tape, or any other magnetic medium, a CD-ROM, DVD, Blu-ray or other optical disc or medium, RAM, PROM, EPROM, FLASH-EPROM, solid-state drive (SSD), or any other memory card, chip, or cartridge, or any other memory medium from which a computer can read.