Various statistics may be obtained for action performances that are related to web resources. For example, advertisers may obtain statistics on how many unique entities have viewed an advertisement that is placed on web pages.
The subject disclosure relates generally to calculating statistics for web resources, and more particularly to calculating statistics for web resources in a scalable manner.
The subject disclosure relates to a computer-implemented method for scalably calculating statistics associated with action performances that includes obtaining action performance data for one or more entities, where the action performance data comprises at least a number of times each of the one or more entities performed an action during one or more time segments, wherein the action satisfies a user specified criteria. The method also includes generating, based on the obtained action performance data, a data structure for calculating statistics associated with the actions performed by the one or more entities. The data structure includes one or more values corresponding to numbers of actions performed by the one or more entities. The one or more values are organized into the one or more time segments during which actions corresponding to the one or more values were performed. The one or more values are further organized into one or more time segment intervals, the time segment intervals corresponding to intervals between the performed actions corresponding to the one or more values and previous action performances for the performed actions. A previous action performance for a performed action is a most recent action performance in a sequence of actions that precedes the performed action, the sequence of actions and the performed action being performed by the same entity.
The present disclosure also relates to a system for scalably calculating statistics associated with action performances that includes an action performance data obtaining module configured to obtain action performance data for one or more entities, where the action performance data comprises at least a number of times each of the one or more entities performed an action during one or more time segments, wherein the action satisfies a user specified criteria. The system also includes a data structure generation module configured to generate, based on the obtained action performance data, a first data structure for calculating statistics associated with the actions performed by the one or more entities. The first data structure includes one or more values corresponding to numbers of actions performed by the one or more entities. The one or more values are organized into the one or more time segments during which actions corresponding to the one or more values were performed. The one or more values are further organized into one or more time segment intervals, the time segment intervals corresponding to intervals between the performed actions corresponding to the one or more values and previous action performances for the performed actions. A previous action performance for a performed action is a most recent action performance in a sequence of actions that precedes the performed action, the sequence of actions and the performed action being performed by the same entity. The system further includes a user request receiving module configured to receive a user request for statistics associated with the obtained action performance data for a time interval including at least one of the one or more time segments, and a statistics calculation module configured to calculate the requested statistics based on the generated first data structure.
The present disclosure further relates to a machine-readable medium comprising instructions stored therein, which when executed by processors, cause the processors to perform operations that include obtaining one or more action performance records for one or more entities, where each of the one or more action performance records comprises at least a time at which each of the action performance records was created, a number of action performances by each of the one or more entities, and a time at which each of the action performances occurred, wherein the action performances satisfy a user specified criteria. The operations also include determining, based on the obtained one or more action performance records, whether each action performance of each entity has a corresponding previous action performance, where the previous action performance is a most recent action performance in a sequence of action performances that precedes each action performance. The operations further include identifying a time at which the previous action performance occurred, based on the obtained one or more action performance records, in a case an action performance has a corresponding previous action performance, otherwise identifying, based on the obtained one or more action performance records, a time at which an action performance record corresponding to the action performance was created. The operations yet further include organizing the number of action performances according to one or more time segments during which the action performances occurred, based on the identified time at which the previous action performance has occurred or the identified time at which the action performance record was created.
It is understood that other configurations of the subject technology will become readily apparent from the following detailed description, where various configurations of the subject technology are shown and described by way of illustration. As will be realized, the subject technology is capable of other and different configurations and its several details are capable of modification in various other respects, all without departing from the scope of the subject technology. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.
Certain features of the subject technology are set forth in the appended claims. However, for purposes of explanation, several implementations of the subject technology are set forth in the following figures.
In the following detailed description, numerous specific details are set forth to provide a full understanding of the present disclosure. It will be apparent, however, that the implementations of the present disclosure may be practiced without some of these specific details. In other instances, structures and techniques have not been shown in detail so as not to obscure the disclosure.
Companies that place advertisements on the internet may want to keep track of how their advertisements are viewed, and receive various statistics on the number and demographics of the advertisement views. The companies may wish to break down the statistics by various criteria. For example, the companies may wish to calculate how many unique entities (e.g., people or IP addresses) have viewed a certain advertisement at a certain website during a certain time interval. The companies may also wish to calculate how many times each unique entity viewed the advertisement on the website during the time interval. Performing calculations for such statistics using Overcount Matrices and/or expanded Overcount Matrices as discussed in more detail below, companies can be provided with such statistics in a scalable, accurate and efficient manner.
Currently, to calculate such statistics, records are kept for storing data on how many times each entity has viewed an advertisement in a given time interval. The number of unique entities who have viewed the advertisement during the time interval, and the number of times each entity has viewed the advertisement during the time interval, may both be calculated from such records. However, this approach requires keeping a separate record for each activity for each entity, which requires significant data storage capacity, as the size of the stored data increases proportionally to an increase in the number of entities that are tracked. Further, because of the amount of the data stored, significant amount of processing is also required when calculating the statistics.
To describe the various aspects of the subject technology, terms of art such as “reach” and “frequency” are used. “Reach” refers to the number of entities who have performed an action that satisfies certain criteria during a time interval. For example, if “John” viewed an advertisement three times during the month of February and Mary viewed the advertisement once, reach would have a value of “2” because two entities, “John” and “Mary,” viewed the advertisement during February. “Frequency” refers to the number of times each entity has performed an action. Frequency may also be expressed in the context of reach, such as “reach by frequency,” or “reach segmented by frequency.” In the foregoing example of John and Mary, reach, that is segmented according to frequency (reach by frequency), shows that reach with a frequency of 3 is equal to 1 (one entity, John, viewed the advertisement 3 times during the time interval), and reach with a frequency of 1 is equal to 1 (one entity, Mary, saw the advertisement once during the time interval). The term entity, as used herein, refers to an entity or machine performing the action.
Methods and systems for scalably calculating statistics associated with performance of an action (e.g., viewing an advertisement) are provided herein. Such statistics may include, for example, reach and frequency (reach segmented by frequency). Reach and frequency are calculated in a way that is scalable (e.g., in terms of number of entities for whom action performance information is provided, and in terms of the total number of action performances), incremental (e.g., processing action performance information about entities as it comes in), and that supports querying across arbitrary time intervals.
To calculate reach, an “Overcount Matrix” may be generated to help calculate reach more efficiently over arbitrary date ranges. In an Overcount Matrix, each cell contains a value representing the number of entities that perform actions that satisfy a predetermined criteria that are performed during a time segment. For example, each cell value may represent the number of entities that have viewed an advertisement for a given day. The rows of the Overcount Matrix represent the time segments (e.g., dates). The columns of the Overcount Matrix represent the number of time segments that have elapsed between the actions corresponding to the values represented in each cell, and a “previous action.” A “previous action” as used herein refers to a most recent action in a sequence of actions performed by the same entity which precedes the action corresponding to the value represented in the cell. For example, the columns of the Overcount Matrix may represent the number of days that have passed since an entity last viewed the advertisement.
Therefore, the values in each of the cells represent the number of entities who have performed “previous actions” (e.g., previous views of an advertisement by an entity) ‘n’ days ago, where ‘n’ refers to the different number of days represented by each of the columns in the matrix. The Overcount Matrix also includes a “Total” column representing the total number of entities that have performed an action during each time segment.
Data on the action performances may be stored in action performance records such as, for example, web browser cookies. An action performance record may be created for each entity to store data on the action performance (e.g., viewing an advertisement) performed by each entity and the time of each action performance. The action performance record may also store information on when the action performance record was created.
The calculation of reach and reach by frequency may be adjusted to account for “maturity” of the action performance records on which the calculations are based. The term “maturity” as used herein encompasses its plain and ordinary meaning, including, but not limited to, suitability of an action performance record for use in statistics calculation in relation to a desired time interval. For example, action performance data obtained from an action performance record that was created too recently (“immature” record) may not contain sufficient amount of data to provide accurate statistics for a desired time interval. Therefore, adjustments can be made such that only data from action performance records that were created sufficiently long ago (“mature” records) are reflected in the calculation of reach and reach by frequency.
An example Overcount Matrix is described with reference to
Still referring to
The example Overcount Matrix of
In an aspect of the disclosed technology, two or more “expanded” Overcount Matrices may be used to calculate not only reach, but also frequency (reach segmented by frequency). In a first expanded Overcount Matrix, an Overcount Matrix such as the one discussed above with reference to
In the first expanded Overcount Matrix, for example, if an entity viewed the advertisement for the very first time on Monday and viewed the same advertisement four more times during the same day, a value of 1 is added to the “Infinity” column for Monday (because the entity saw the advertisement for the very first time, and an infinite number of days has passed from when the user last saw the advertisement), and a value of 4 is added to the “0 day” column for Monday (because, beginning with the second view, the “previous view” would have occurred on the same day).
While calculating reach using the Overcount Matrix and the first expanded Overcount Matrix provides identical results, the addition of the “0 day” column in the first expanded Overcount Matrix allows interpreting the calculated reach value in a new perspective, thereby providing a scalable method of calculating frequencies of various degrees, by performing similar calculations using additional expanded Overcount Matrices, as will be described in more detail below. Specifically, reach calculated based on the Overcount Matrix or the first expanded Overcount Matrix corresponds to the number of entities who have viewed the advertisement at least once during a time interval. However, the addition of the “0 day” column in the first expanded Overcount Matrix allows interpretation of the same reach value as the number of first action performances performed for all the entities during the time interval.
The interpretation of the reach value as the number of the first action performances, as opposed to the number of entities who have viewed the advertisement at least once, has increased significance when calculating frequencies, in addition to reach. Specifically frequencies of varying degrees (e.g., frequency of 1, frequency of 2, etc.) may be calculated in a scalable manner when values representing a number of first or second action performances, a number of first, second or third action performances and so forth, are calculated using second and third expanded Overcount Matrices, as described in the following paragraphs. In other words, the addition of the “0 day” column in the expanded Overcount Matrices allows calculation of the number of first or second action performances (using a second expanded Overcount Matrix), the number of first, second or third action performances (using a third expanded Overcount Matrix), and so forth for calculating frequencies of various degrees in a scalable manner.
Details of calculating frequencies of various degrees using the expanded Overcount Matrices follows. Frequency of 1 (number of entities who have performed the action exactly once) may be calculated using the first expanded Overcount Matrix and a second expanded Overcount Matrix (not shown). The second expanded Overcount Matrix is identical to the first expanded Overcount Matrix, with the exception that the values in each of the cells of the second expanded Overcount Matrix counts the number of actions whose “second previous actions” (second most recent action in a sequence of action performances preceding the action corresponding to the value represented in the cell; two views ago by an entity) occurred ‘n’ days ago. Performing the same calculation as discussed above for the first expanded Overcount Matrix (an expanded Triangle Sum value is subtracted from a Total Sum value) using the second expanded Overcount Matrix, the calculation would yield a value representing the number of first or second action performances.
Subtracting the number of first action performances calculated using the first expanded Overcount Matrix (e.g., matrix 150 of
To calculate the number of entities who have viewed the advertisement exactly twice (frequency of 2), a third expanded Overcount Matrix (not shown) may be used in addition to the first and second expanded Overcount Matrices discussed above. The third expanded Overcount Matrix is similar to the first and second expanded Overcount Matrices, except that values in each of the cells of the third expanded Overcount Matrix counts the number of actions whose “third previous actions” (third most recent action in a sequence of actions preceding the action corresponding to the value represented in the cell; two views ago by an entity) occurred ‘n’ days ago.
The third expanded Overcount Matrix is used to calculate a value representing the number of first, second or third action performances, based on the same formula for calculating reach using the first and second expanded Overcount Matrices: Total Sum value (sum of the cells in the Total column for the time interval) minus the expanded Triangle Sum value (sum of the cells in the expanded Overcount Triangle). The number of third action performances (number of entities who have viewed the advertisement at least three times) is calculated by subtracting the value representing the number of first or second action performances from the value representing the number of first or second or third action performances. From this number, the number of entities who have viewed the advertisement exactly twice may be calculated (frequency of 2).
Subtracting E1 171 from E1-2 172 yields E2 175, representing the number of second action performances. The number of entities who have performed an action exactly twice is represented by R1 178, calculated by subtracting E1 171 from E2 175. Similarly, E3 176 represents the number of third action performances, and is calculated by subtracting E1-2 172 from E1-3 173. The number of entities who have exactly performed an action two times, R3 179, is calculated by subtracting E2 175 from E3 176. Subtracting E1-3 173 from E1-4 174 yields E4 177, representing the number of fourth action performances. The number of entities who have performed an action exactly three times is calculated by subtracting E3 176 from E4 177.
By following the foregoing methodology, frequency of any natural number ‘k’ (e.g., the number of entities who have viewed the advertisement exactly ‘k’ times) may be calculated. For example, a frequency of 3 may be calculated using first to 4th expanded Overcount Matrices, or a frequency of 10 may be calculated using first to 11th expanded Overcount Matrices.
In an aspect of the subject technology, as action performance data (e.g., information on number of advertisement views sorted according to dates and unique entities) for different entities becomes available, the expanded Overcount Matrices may be generated such that frequency is calculated on demand for up to a predetermined value of frequency. For example, first to 16th expanded Overcount Matrices may be generated and kept up to date with the latest action performance data such that frequency may be calculated on demand for up to frequency of 15.
The action performance data may be stored in action performance records such as, for example, web browser cookies, at each entity's client terminal (e.g., mobile computing device, laptop computer, or desktop computer). The action performance records may be created and stored upon authorization from the entity. The system according to the subject technology may obtain the stored action performance data, upon authorization from the entity, for use as input for the various expanded Overcount Matrices for calculating reach and frequency.
The action performance records may not have been in existence long enough to store sufficient amount of action performance data for calculating accurate reach or frequency for a time interval desired by a user. For example, a web browser cookie (an action performance record) may have been created in the middle a desired time interval such that data stored in the action performance record does not reflect accurate counts of each entity's action performance for the entire duration of the desired time interval.
Specifically, action performance records such as web browser cookies may be deleted every 24 hours, for privacy concerns. In such case, at any point in time, the web browser cookies would have been in existence for, at most, 24 hours. Therefore, the cookies may, at most, contain data on action performances for only the preceding 24 hours. If a user requests statistics for a time interval which spans for more than the preceding 24 hour period, the cookies would be “immature” for the desired time interval, and would not provide accurate statistics. If statistics for only the preceding 24 hour period are desired, the cookies would be “mature” and would provide accurate statistics.
Therefore, in order to improve the accuracy of the calculated statistics, the calculations of the various statistics (e.g., reach or frequency) described above with reference to
To account for the maturity of the action performance records from which action performance data is obtained (e.g., ensure that only the view counts from mature web browser cookies are included in the calculation), the creation of the action performance record (e.g., creation of a web browser cookie) may also be considered as an “action performance” for all purposes of calculating reach and frequency that is discussed with reference to
If the creation of the action performance record is considered an action performance when populating the expanded Overcount matrix, applying the same formula as the one used in the calculation discussed with reference to
The foregoing description discusses calculating reach and frequency associated with occurrence of a specific type of action that an entity may perform—“an entity viewing an advertisement.” However, the subject technology may also be used to calculate the number of action performances of other types of actions, such as entities accessing a web site, or cars passing through a point on the road.
Data store 214 may store information pertaining to, for example, action performance records storing the action performance data and/or the first data structure. Server 210 may host an application within which some of the processes discussed herein are implemented. In some example aspects, electronic devices or client devices, as used interchangeably herein, 202, 204 and 206 can be computing devices such as smartphones, PDAs, portable media players, tablet computers, televisions or other displays with one or more processors coupled thereto or embedded therein, or other appropriate computing devices that can be used for running a mobile application.
Electronic devices 202, 204 and 206 may have one or more processors embedded therein or attached thereto, or other appropriate computing devices that can be used for accessing a host, such as server 210. In the example of
The system (e.g., hosted at any of electronic devices 202, 204, 206 or server 210), obtains action performance data for one or more entities, wherein the action performance data comprises at least a number of times each of the one or more entities performed an action during one or more time segments, wherein the action satisfies a user specified criteria. The action satisfying the user specific criteria may include, for example, a person accessing or otherwise interacting with user-specified web resource within a user-specified time frame. The user-specified web resource may be an advertisement that is embedded in a web page. The system also generates, based on the obtained action performance data, a first data structure. The first data structure may represent, for example, a matrix or a table.
The first data structure includes one or more values corresponding to a number of actions performed by the one or more entities during each of the one or more time segments, wherein the one or more values are organized according to a plurality of categories corresponding to a number of time segments that have elapsed between the performed action corresponding to the one or more values and a most recent action in a sequence of actions preceding the performed action corresponding to the one or more values. The performed action corresponding to the one or more values and the preceding actions satisfy the user specified criteria, and are performed by the same entity.
The system may also receive a user request for statistics associated with the obtained action performance data for a time interval including at least one of the one or more time segments and calculate the requested statistics based on the generated first data structure. The users may interact with the system with any of the electronic devices 202, 204 or 206. Data pertaining to the action performance data and/or the first data structure may be stored, for example, in data store 214.
Each electronic device 202, 204 and 206 may be a client device or a host device. In some example aspects, server 210 can be a single computing device such as a computer server. In other implementations, server 210 can represent more than one computing device working together to perform the actions of a server computer (e.g., cloud computing). The server 210 may host the web server communicationally coupled to the browser at the client device (e.g., electronic devices 202, 204 or 206) via network 208.
The network 208 can include, for example, any one or more of a personal area network (PAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a broadband network (BBN), the Internet, and the like. Further, the network 208 can include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, tree or hierarchical network, and the like.
The action performance data may be stored in action performance records (e.g., action performance record 192) at electronic devices (e.g., electronic devices 202, 204 or 206) of entities performing the actions. The action performance record for an entity may store a log of each action performance by the entity and information on the time and date of the action performance. The action performance record may also store the creation date of the action performance record. The action performance record may be, for example, a web browser cookie. For example, when a person uses a mobile web browser on a smart phone to view an advertisement that may be included in a web page, a web browser cookie may be created or updated to reflect the person's view of the advertisement.
At block 304, the system generates a first data structure based on the action performance data for the one or more entities obtained at block 302. The first data structure includes one or more values corresponding to a number of actions performed by the one or more entities during each of the one or more time segments. For example, the first data structure may be a table or a matrix where each row represents different time segments (e.g., dates) and each cell represents number of actions performances of all entities for which action performance data is obtained at block 302 during the time segment corresponding to the row of the cell.
The values of the first data structure are also organized according to a plurality of columns corresponding to a number of time segments that have elapsed between an action performed by an entity and a “previous action” performed by the same entity, where both the action and the previous action performed by the entity both satisfies a user specified criteria. A previous action is the most recent action that was performed in a sequence of actions that precede an action performance. For example, if a person viewed an advertisement for the very first time on Monday, once on Tuesday, and once on Wednesday, the “previous action” for the advertisement view on Tuesday would be the advertisement view on Monday, and the previous action for the view on Wednesday would be the view on Tuesday. Accordingly, for the view on Wednesday, one day would have passed since a previous action. The advertisement view on Monday would not have a corresponding previous view, because it is the very first view for the person. An action satisfying a user specified criteria may be, for example, a person viewing an advertisement during a user specified time frame.
In generating the first data structure at block 304, the system determines when an action was performed and whether a corresponding previous action exists, for each of the action performances represented in the action performance data obtained at block 302. If a previous action exists, the system also identifies the time at which the previous action was performed. Based on such determination, the values of the first data structure are populated into the appropriate row and column as described above.
In the example above, each column of the table represents the number of days that have passed since a “previous action.” Different columns may be provided that represent different number of days that have passed since a previous action. A column representing that 0 days have passed may also be provided. Therefore, the different rows of the table represent different time segments during which actions are performed by the different entities, and the different columns represent the number of days that have passed since a previous action was performed for an action performance. Accordingly, if an example cell at row “January 1” and column “2 days ago” has a value of 5, the value of 5 represents that 5 persons performed an action that satisfies a user specified criteria on January 1, where the same 5 persons each performed a previous action 2 days ago.
An example of the first data structure that is generated at block 304 may be the first expanded Overcount Matrix that is discussed above with reference to
At block 306, the system generates a second data structure based on the action performance data for the one or more entities obtained at block 302. The second data structure is similar to the first data structure generated at block 304. As with the first data structure, the second data structure includes one or more values corresponding to a number of actions performed by the one or more entities during each of the one or more time segments used for the first data structure. For example, the second data structure may be a table or a matrix in which the rows represent the same time segments as the rows of the first data structure discussed above. Each cell represents number of actions performances of all entities for which action performance data is obtained at block 302 during the time segment corresponding to the row of the cell.
The values of the second data structure are also organized according to a plurality of categories corresponding to a number of time segments that have elapsed between an action performed by an entity and a “second previous action” performed by the same entity, where both the action and the previous action performed by the entity both satisfies a user specified criteria. A second previous action is the second most recent action that was performed in a sequence of actions that precede an action performance. For example, if a person viewed an advertisement once on Monday, once on Tuesday, and once on Wednesday, the “second previous action” for the advertisement view on Wednesday would be the advertisement view on Monday. Accordingly, for the view on Wednesday, two days would have passed since a second previous action. An action satisfying a user specified criteria may be, for example, a person viewing an advertisement during a user specified time frame.
An example of the second data structure that is generated at block 306 may be the second expanded Overcount Matrix that is discussed above with reference to
At block 308, the system monitors for user inputs that are received at the system, and at block 310 determines whether the received user input is a user request for statistics associated with the action performance data. The request for the statistics may be for a time interval including at least one of the one or more time segments for which the action performance data obtained at block 302 is available. The requested statistics may be, for example, a number of unique entities that have performed an action performance that satisfies the user specified criteria at least once (e.g., number of unique entities that have viewed an advertisement; reach), or a number of unique entities that have performed the user criteria-satisfying action performance exactly for a certain number of times (e.g., number of unique entities that have viewed the advertisement for exactly ‘k’ number of times, where ‘k’ is a natural number; frequency of ‘k’).
If the user request for statistics associated with the action performance data is received, at block 312, the system calculates the requested statistics based on the first data structure generated at block 304, or the first data structure and the second data structure generated at block 306. If the user-requested statistics include reach (e.g., the number of unique entities that have performed that user criteria-satisfying action performance at least once), reach may be calculated using the first data structure. The details for calculating reach is discussed above with reference to
If the user-requested statistics include frequency of 2 (e.g., the number of unique entities that have performed the user criteria-satisfying action performance for exactly twice), frequency of 2 is calculating using both the first and second data structures. The details for calculating frequency of 2 is also discussed above with reference to
In an aspect of the subject technology, the system may also generate one or more additional data structures such that first to ‘k+1’th data structures (k is a natural number and is greater than or equal to 1) are generated for calculating a frequency of k. The first to ‘k+1’th data structures are generated following the methodology discussed above for the first and second data structures. The values of the ‘k+1’th data structure are organized according to a plurality of categories corresponding to a number of time segments that have elapsed between an action performed by an entity and a ‘k+1’th previous action performed by the same entity, where ‘k+1’th previous action is the ‘k+1’th most recent action that was performed in a sequence of actions that precede an action performance. Using the first to ‘k+1’th data structures, the system may calculate a frequency of k. The details for calculating a frequency of k is discussed above with reference to
If, at block 310, determination is made that a user request for statistics associated with the action performance data is not received, process 300 reverts back to block 308. Alternatively, process 300 may end.
Process 300 described above with reference to
For example, referring to
Block 306 may be similarly adjusted to generate a second data structure, the values of which are organized as discussed above for block 306 while considering the creation of action performance records as action performances. The remainder of process 300 may be performed without further adjustments. However, by the virtue of the above-described adjustments made for blocks 304 and 306 (considering creation of action performance records as an action performance), as discussed in detail with reference to
Many of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.
In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor. Also, in some implementations, multiple software aspects of the subject disclosure can be implemented as sub-parts of a larger program while remaining distinct software aspects of the subject disclosure. In some implementations, multiple software aspects can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software aspect described here is within the scope of the subject disclosure. In some implementations, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing display. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The action performance data obtaining module 402 is configured to obtain action performance data for one or more entities. The action performance data includes at least a number of times each of the one or more entities performed an action during one or more time segments, where the action satisfies a user specified criteria. The data structure generation module 404 is configured to generate a first data structure based on the action performance data obtained by the action performance data obtaining module 402. The first data structure includes one or more values corresponding to a number of actions performed by the one or more entities during each of the one or more time segments. In the first data structure generated by the data structure generation module 404, the one or more values are organized according to a plurality of categories. The categories correspond to a number of time segments that have elapsed between the performed action corresponding to the one or more values and a previous action. The previous action is the most recent action in a sequence of actions preceding the performed action corresponding to the one or more values. The performed action corresponds to the one or more values and the preceding actions satisfy the user specified criteria, and are performed by the same entity.
The data structure generation module 404 may also be configured to generate additional data structures such that first to ‘k+1’th data structures are generated (k is greater than or equal to 1). The values of the ‘k+1’th data structure are organized according to a plurality of categories corresponding to a number of time segments that have elapsed between an action performed by an entity and a ‘k+1’th previous action performed by the same entity, where ‘k+1’th previous action is the ‘k+1’th most recent action that was performed in a sequence of actions that precede an action performance.
The user request receiving module 406 may be configured to receive a user request for statistics associated with the action performance data obtained by the action performance obtaining module 402, for a time interval including at least one of the one or more time segments for which the action performance data is available. The statistics calculation module 408 may be configured to calculate the statistics for which the user request is received by the user request receiving module 406.
These modules may be in communication with one another. In some aspects, the modules may be implemented in software (e.g., subroutines and code). In some aspects, some or all of the modules may be implemented in hardware (e.g., an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Programmable Logic Device (PLD), a controller, a state machine, gated logic, discrete hardware components, or any other suitable devices) and/or a combination of both. Additional features and functions of these modules according to various aspects of the subject technology are further described in the present disclosure.
Bus 508 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of electronic system 500. For instance, bus 508 communicatively connects processing unit(s) 512 with ROM 510, system memory 504, and permanent storage device 502.
From these various memory units, processing unit(s) 512 retrieves instructions to execute and data to process in order to execute the processes of the subject disclosure. The processing unit(s) can be a single processor or a multi-core processor in different implementations.
ROM 510 stores static data and instructions that are needed by processing unit(s) 512 and other modules of the electronic system. Permanent storage device 502, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when electronic system 500 is off. Some implementations of the subject disclosure use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as permanent storage device 502.
Other implementations use a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) as permanent storage device 502. Like permanent storage device 502, system memory 504 is a read-and-write memory device. However, unlike storage device 502, system memory 504 is a volatile read-and-write memory, such a random access memory. System memory 504 stores some of the instructions and data that the processor needs at runtime. In some implementations, the processes of the subject disclosure are stored in system memory 504, permanent storage device 502, and/or ROM 510. From these various memory units, processing unit(s) 512 retrieves instructions to execute and data to process in order to execute the processes of some implementations.
Bus 508 also connects to input and output device interfaces 514 and 506. Input device interface 514 enables the user to communicate information and select commands to the electronic system. Input devices used with input device interface 514 include, for example, alphanumeric keyboards and pointing devices (also called “cursor control devices”). Output device interfaces 506 enables, for example, the display of images generated by the electronic system 500. Output devices used with output device interface 506 include, for example, printers and display devices, such as televisions or other displays with one or more processors coupled thereto or embedded therein, or other appropriate computing devices that can be used for running an application. Some implementations include devices such as a touch screen that functions as both input and output devices.
Finally, as shown in
These functions described above can be implemented in digital electronic circuitry, in computer software, firmware or hardware. The techniques can be implemented using one or more computer program products. Programmable processors and computers can be included in or packaged as mobile devices. The processes and logic flows can be performed by one or more programmable processors and by one or more programmable logic circuitry. General and special purpose computing devices and storage devices can be interconnected through communication networks.
Some implementations include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media can store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.
While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some implementations are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some implementations, such integrated circuits execute instructions that are stored on the circuit itself.
As used in this specification and any claims of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification and any claims of this application, the terms “computer readable medium” and “computer readable media” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals.
To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a device having a display device, e.g., televisions or other displays with one or more processors coupled thereto or embedded therein, or other appropriate computing devices that can be used for running an application, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
Implementations of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. 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. In some implementations, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server.
It is understood that any specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged, or that some illustrated steps may not be performed. Some of the steps may be performed simultaneously. For example, in certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
For situations in which the methods or systems discussed above collect personal information about entities (e.g., action performance data for one or more entities), may make use of personal information and/or may store personal information (e.g., store action performance data in a action performance record such as, for example, web browser cookies), the entities may be provided with an opportunity to control whether programs or features that may collect personal information (e.g., information about an entity's action performances such as, for example, viewing an advertisement), or to control whether and/or how to receive content from the content server that may be more relevant to the entity. In addition, certain data may be anonymized in one or more ways before it is stored or used, so that personal information is removed when generating parameters (e.g., demographic parameters or statistics related to action performance data such as, for example, reach or frequency of action performances). For example, an entity's identity may be anonymized so that no personally identifiable information can be determined for the entity, or an entity's geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of an entity cannot be determined. Thus, the entity may have control over how information is collected about the entity and used by a content server.
The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the subject disclosure.
A phrase such as an “aspect” does not imply that such aspect is essential to the subject technology or that such aspect applies to all configurations of the subject technology. A disclosure relating to an aspect may apply to all configurations, or one or more configurations. A phrase such as an aspect may refer to one or more aspects and vice versa. A phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology. A disclosure relating to a configuration may apply to all configurations, or one or more configurations. A phrase such as a configuration may refer to one or more configurations and vice versa.
The word “example” is used herein to mean “serving as an example or illustration.” Any aspect or design described herein as “example” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims.
The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the subject disclosure.