The present disclosure relates generally to computing. More specifically, and without limitation, the present disclosure relates to systems and methods for adaptive cost estimation.
Online marketers are interested in placing marketing messages on websites to promote their products or services (also known as “impressions”). Influenced by a marketing message, a user may perform a “click” based on a marketing message or take another “action” such as completing an online form to request additional information with regard to the associated product or service. If the user later purchases the product or service, the purchase is referred to as a “conversion” of the impression. In general, online marketers pay based on, for example, impressions, clicks, or conversions over the course of a marketing campaign, hereinafter merely referred to as a “campaign.” Therefore, cost estimation of events during the campaign is important to properly manage the campaign, e.g., for budgeting purpose.
The background description provided herein is for the purpose of generally presenting the context of the disclosure. Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art, or suggestions of the prior art, by inclusion in this section.
Reference will now be made in detail to illustrative embodiments of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
Average cost per event estimation with a fixed estimator gain tend for objects with a low event rate to be responsive but volatile, and tend for objects with a high event rate to be non-volatile but sluggish.
At a high level, aspects of the embodiments disclosed herein relate an estimator gain to the temporal volatility of the average cost per event estimate, hereinafter merely referred to as cost estimate. Basically, a desired relative volatility may be translated to a specific estimator gain. Hence, the gain can be selected adaptively to ensure the relative volatility remains at, or about, a certain level, or remains no larger than at a certain level. The estimator gain may be updated adaptively based on an estimated revenue rate and an estimated events per revenue. An estimated events per revenue refers to a number of events that is expected for a certain unit of revenue (e.g., 100 clicks/$100). The adaptive cost estimation can also be complemented with a constraint on maximum or minimum responsiveness, e.g., by maintaining the estimator gain between a minimum and maximum value.
By adjusting the estimator gain based on the expected temporal variance of a cost estimate, robustness and response time of such cost estimation may be balanced. In particular, various embodiments disclosed herein can make volatile cost estimates less volatile (e.g., at the expense of response time) and non-volatile cost estimates more responsive. Additionally, such adaptive cost estimation can also make all cost estimates have the same relative volatility, e.g., making some of them more responsive and some less responsive.
Marketer 102 represent computing components associated with entities having online advertisements (e.g., banner ads, pop-ups, etc.) that the entities desire to deliver to online consumers. Marketer 102 may interact with publishers 104, marketing servers 106, and/or campaign control systems 108 through the Internet 110. Thus, marketer 102 may be able to communicate marketing information, such as ad information, targeting information, consumer information, budget information, bidding information, etc., to other entities in system 100.
Publishers 104 represent computing components associated with entities having inventories of available online marketing space. For example, publishers 104 may include computing components associated with online content providers, search engines, e-mail programs, web-based applications, or any computing component or program having online user traffic. Publishers 104 may interact with marketers 102, marketing servers 106, and/or controllers 108 via the Internet 110. Thus, publishers 104 may be able to communicate inventory information, such as site information, demographic information, cost information, etc., to other computing components in system 100.
Marketing servers 106 may include servers or clusters of servers configured to process marketing information from marketer 102 and/or inventory information from publishers 104, either directly or indirectly. In certain embodiments, marketing servers 106 may be remote web servers that receive marketing information from marketer 102 and serve ads to be placed by publishers 104. Marketing servers 106 may be configured to serve ads across various domains of publishers 104, for example, based on marketing information provided by marketers 102. Marketing servers 106 may also be configured to serve ads based on contextual targeting of web sites, search results, and/or user profile information. In some embodiments, marketing servers 106 may be configured to serve ads based on control signals generated by campaign control systems 108.
Campaign control system 108 may include computing systems configured to receive information from computing components in system 100, process the information, and generate marketing control signals to be sent to other computing components in system 100, according to the illustrative methods described herein. Campaign control systems 108 may include any type or combination of computing systems, such as clustered computing machines and/or servers, including virtual computing machines and/or virtual servers. Campaign control systems 108 may include, for example, implementations of Adlearn Open Platforms (AOP) control systems offered by America Online (AOL) of New York, N.Y. In some embodiments, campaign control systems 108 may include an assembly of hardware, including a memory 112, a central processing unit (“CPU”), and/or a user interface 116. Memory 112 may include any type of RAM or ROM embodied in a physical, computer-readable storage medium, such as magnetic storage including floppy disk, hard disk, or magnetic tape; semiconductor storage such as solid state disk (SSD) or flash memory; optical disc storage; or magneto-optical disc storage. In addition, memory may include executable instructions that, when executed by CPU 114, can implement a cost estimator 118 (e.g., cost estimator 350 of
Any number or type of marketing campaigns 202 may be operated within marketing network 204, across various marketing servers and domains associated with the Internet. Online marketing environment 200 may be implemented by one or more of the marketers 102, publishers 104, marketing servers 106, and/or campaign control systems 108 described in
In one embodiment, online marketing environment 200 may include one or more instances of campaign control system 108. Campaign control system 108 may comprise computers or servers connected to the Internet. Such computers or servers may be configured as described with respect to campaign control system 108, as depicted by
Campaign control system 108 may be provided with a set of delivery requirements 210, which may be adjustable design parameters set by a user. For instance, the set of delivery requirements may include cost requirements (e.g., the maximum cost discussed in reference
Cost estimator 350 is configured to take as input an observed event volume, nE; and observed revenue, or pacing, r. The observed event volume and the observed revenue can be determined from actual event volume and revenue observed in market 330. The observed event volume and/or the observed revenue may be a moving average calculated over a period of time. This period of time can be any duration of time that may be selected based upon certain campaign characteristics. For example, a shorter period of time can enable quicker reflection of changes in market 330, however the results could be noisier than those of a moving average calculated over a longer period of time. A moving average calculated over a longer period of time, on the other hand, can be less noisy than a moving average calculated over a shorter period of time, but is slow to react to changes in market 330. As a result, the time period for such a moving average may be dependent on the campaign and/or volatility of market 330. The above discussed moving average may be calculated by a moving average filter that could be located in-line between market 330 and cost estimator 350. Discrete observed event volume and observed revenue in market 330 may be monitored, for example, via an event volume sensor and a revenue sensor configured to obtain real-time data about the campaign to which campaign control system 300 is assigned. Cost estimator 350 may produce an estimated cost, ĉ, based, at least in part on, the observed event volume, nE, and the observed revenue, r. Cost estimator 350 can be configured to produce the cost estimate with a controlled volatility and/or responsiveness. This could be accomplished by translating a desired relative volatility to a specific estimator gain, as described in detail herein. The desired relative volatility may be, for example, a user (e.g., marketer) defined value.
Campaign controller 310 is configured to take as input a max cost reference signal, Tmax, hereinafter merely referred to as max cost. Max cost may be a user (e.g., marketer) defined maximum cost that the user is willing to pay for an event. As used herein, event refers to any action taken with an advertisement (e.g., impression, click, or conversion). In embodiments, max cost may represent the maximum average cost the user is willing to pay for each event, the maximum discrete cost the user is willing to pay for each event, or any other suitable cost restriction.
Campaign controller 310 is also configured to take as input a desired pacing reference signal, Brev. Desired pacing may be user defined and may also be referred to as a maximum desired revenue or a maximum budget. As used herein, revenue may refer to actual dollars spent or actual events delivered. As such, desired pacing may be expressed as monetary units (e.g., dollars) or as a number of events. For example, if a marketing campaign has a daily budget of $900 and has spent $800 in a given day, observed pacing for the campaign on that given day is $800. Campaign controller 310 is also configured to take as input the observed pacing, r, and the cost estimate, ĉ, which was produced by cost estimator 350.
Campaign controller 310 is configured to determine a price control signal, up. The price control signal, up, can be calculated based, at least in part, on the max cost, desired pacing, observed pacing, and cost estimate. This function may be configured to attempt to facilitate obtaining the desired pacing within the limits of max cost and/or inventory available in market 330. In some embodiments, an allocation control signal, ua, can also be calculated by campaign controller 310. Such an allocation control signal represents the percentage or ratio (e.g., point value from 0 to 1) of inventory the ad campaign is willing to purchase at the bid price discussed below.
In some embodiments, campaign controller 310 is configured to periodically update the price control signal, up, as well as allocation control signal, ua, if utilized. These periodic updates may take place at predefined time intervals (e.g., every 15 minutes), based on a specific occurrence (e.g., based on a magnitude of change to observed pacing), or any other suitable period. In other embodiments, campaign controller 310 may update the price control signal, up, in real time as the above discussed signals change.
Segment performance rate estimators 360 are configured to take as input an observed impression volume for a segment, nI,i, and an observed event volume for the segment, nE,i. The ‘i’ refers to the segment in which the observed impression volume and the observed event volume were observed. As used herein a segment refers to a defined portion of market 330. Such a segment may be, for example, a website, a group of individuals identified by demographic analysis (e.g., males between the age of 25 and 35 in California), a distinct individual, etc. A segment may also e.g. be referred to in the art, and herein, as a cell or unit. The observed impression volume, nI,i, and the observed event volume, nE,i for each segment can be determined from actual observations in market 330 pertaining to the respective segment. Discrete observed impression volumes for the segments and discrete observed event volumes for the segments may be monitored in market 330, for example, via segment impression sensors (not depicted) and segment event sensors (not depicted), respectively, configured to obtain real-time data about the segment to which these components are assigned. Segment performance rate estimator 360 can output a performance prediction, {circumflex over (p)}i, for each segment (‘i’).
Cost actuator 320 takes the price control signal, up, and allocation control signal, ua, as input. In addition, cost actuator 320 can take the one or more segment performance predictions, {circumflex over (p)}i, as input. Again, the ‘i’ refers to the segment to which the segment performance prediction belongs. Cost actuator may utilize the combination of the price control signal, up, the allocation signal, ua, and the segment performance predictions, {circumflex over (p)}i, to calculate a bid price, bi, and an allocation at that bid price, ai, for the respective segment. In some embodiments, the bid price, bi, is calculated by taking the product of up and {circumflex over (p)}i, for each i. These bids are depicted by the individual arrows flowing from cost actuator 320 to market 330. In other embodiments, the bid price may be a capped segment bid price calculated, for example, using the equation bi=min(maxCPI, up{circumflex over (p)}i), where maxCPI is max cost per impression, or, as another example, equation bi=min(maxCPIi, up{circumflex over (p)}i), where maxCPIi is max cost per impression for segment i. It will be appreciated by someone of ordinary skill in the art that these examples are merely meant to illustrative and are not intended to limit the scope of this disclosure. For example, min can be replaced by max and/or the min (max) operation may be conditional based on user, ad, or impression specific information. In addition, the capping may apply only for a certain type of user, a certain time of the day, in a certain geographic region, etc.
Market 330 represents a bidding environment in which advertisers place ad requests for marketing space that is offered by publishers. The above discussed components facilitate a marketer in obtaining the desired pacing within the limits of max cost Tmax and/or inventory available in marketing market 330.
Referring now to
In embodiments, observation module 410 can observe an event volume, represented herein by nE(k), and revenue, represented herein by r(k), of a campaign, where ‘k’ refers to a current logical interval, or state, of the campaign. In operation, a campaign may be logically or arbitrarily divided into various logical intervals. Logical intervals may be uniformly divided time intervals, such as based on second, minute, hour, day, week, month, or so on. In addition, logical intervals may be logically tied with certain units or milestones in a campaign. Such units may relate to orders of a product or services after launching the campaign, e.g., every thousand orders. Such units may also, or alternatively, include a unit of budget spend on the campaign, e.g., every thousand dollars. In these cases, where the logical intervals are logically tied with certain units or milestone in a campaign, the logical intervals may be considered heterogeneous time intervals.
In some embodiments, observation module 410 may receive the observed event volume and observed revenue, from another computing device, or via input from a user (e.g., as an initialization setting where a previous logical interval has yet to occur). The observed event volume can include, for instance, impressions, clicks, and/or conversions.
As depicted, observation module 410 is coupled with tracking module 420. Tracking module 420 can track state information of multiple state variables, such as those discussed below, from previous logical intervals. This state information from a previous logical interval can be used by estimation module 430 to provide cost estimates for a present logical interval. For example, tracking module 420, can track state variables for estimating a revenue rate (e.g., αr(k) and βr(k)) hereinafter referred to as revenue state variables, and state variables for estimating events per revenue (e.g., αρ(k) and βρ(k)), hereinafter referred to as events per revenue state variables. In some embodiments, as the campaign evolves, tracking module 420 may only need to keep the state information from the immediately preceding logical interval (i.e., the last state).
In embodiments, estimation module 430 can take as input observed event volume and revenue for a current state, which can be received from observation module 410, and state variables from a previous state from tracking module 420. From these inputs, estimation module 430 can provide cost estimates for the present logical interval (i.e., the present state). In various embodiments, such estimation may be based at least in part on the state information, e.g., tracked by tracking module 420; and the observed event volume and observed revenue in the current logical interval, (e.g., nE(k) and r(k) respectively), observed by observation module 410. Such estimation may be further based at least in part on a revenue forgetting factor (λr) and an events per revenue forgetting factor (λρ), discussed in greater detail below. Additionally, such estimation may be further based at least in part on a relative volatility reference parameter (σref), also discussed in greater detail below.
In operation, estimation module 430 may store, receive, or otherwise have access to various configuration parameters for providing cost estimates. For instance, estimation module 430 may access the initialization values for the revenue forgetting factor (λr), which could, for example, be user defined; the relative volatility reference parameter (σref), which again could be user defined; and the initialization values for various state variables which, yet again, could be user defined. For example, for revenue rate estimation, estimation module 430 may access initialization values αr,0 and βr,0, and can assign these initialization values to initial states αr(0) and βr(0), respectively. In addition, for events per revenue estimation, estimation module 430 may access initialization values αρ,0 and βρ,0, and can assign these initialization value to initial states αρ(0) and βρ(0), respectively.
The revenue forgetting factor (λr) may be utilized to discount the importance of revenue state variables associated with the previous logical interval in updating values of these revenue related state variables for a present logical interval. As an example, consider the following equation:
αr(k)=Δrhαr(k−1)+r(k) Eq. 1
where αr(k) represents a first revenue state variable at a current state, k; λrh represents a revenue forgetting factor; αr(k−1) represents the first revenue state variable at a previous state, k−1; and r(k) represents the observed revenue in the current state. The variable ‘h’ in Eq. 1 is an indicator of the length of time of the logical interval. For example, if the logical interval is ten minutes, then ‘h’ would be ten. As such, as the logical interval increases, the effect of the revenue forgetting factor would be increased. In contrast, as the logical interval decreases, the effect of the revenue forgetting factor would be reduced. It will be appreciated that the variable ‘h’ can be omitted from some embodiments, without departing from the scope of this disclosure. From Eq. 1, it can be seen that a forgetting factor λr that is between than 0 and 1 would act to reduce the impact of the previous state, αr(k−1), on the current state, αr(k). In addition, it would follow that a λr that is closer to 0 would more greatly discount the impact of the previous state on the current state than a λr that is closer to 1. As such, adjusting λr between 0 and 1 can affect the volatility of the first revenue state variable from one state to the next.
Similarly, consider the following equation:
βr(k)=λrhβr(k−1)+1 Eq. 2
where βr(k) represents a second revenue state variable at a current state, k; λrh again represents a revenue forgetting factor, where ‘h’ again is dependent on the length of time of the logical interval; and βr(k−1) represents the second revenue state variables at a previous state, k−1. From this equation, it can also be seen that a forgetting factor λr that is between than 0 and 1 would act to reduce the impact of the previous state, βr(k−1), on the current state, βr(k). In addition, as above, it would follow that a λr that is closer to 0 would more greatly discount the impact of the previous state on the current state than a λr that is closer to 1. As such, adjusting λr between 0 and 1 can affect the volatility of the second revenue state variable from one state to the next.
Estimation module 430 may calculate values for the revenue state variables (αr(1) & βr(1)) based on an initial revenue state (αr(0) and βr(0)). Estimation module 430 can then recursively update the revenue state variables based at least in part on the observed revenue (r(k)) and the revenue forgetting parameter (λr). As shown in Eq. 1 and Eq. 2, revenue state variables αr(k) and βr(k), in a current state, k, can be updated based on their values in a previous state, k−1, and the observed revenue, r(k). Estimation module 430 may then determine an estimated revenue rate ({circumflex over (v)}(k)) for the present state based on the revenue related state variables, αr(k) and βr(k). An example of such a determination is represented by Eq. 3
where {circumflex over (v)}(k) represents the estimated revenue rate at a current state, k.
Estimation module 430 may determine an event per revenue estimate of the current state (k). Such a calculation can be based on the events per revenue state variables of the previous state (k−1). An example of such a calculation is depicted in Eq. 4.
The calculations of, αρ(k−1) and βρ(k−1) beyond the initialization state are discussed in greater detail below, in reference to Eq. 7 and Eq. 8.
Estimation module 430 may also calculate a tentative events per revenue forgetting factor for the current state. An example equation for calculating such a tentative events per revenue forgetting factor is presented by Eq. 5
λ′ρ(k)=1−2σref2{circumflex over (v)}(k){circumflex over (ρ)}old(k) Eq. 5
where λ′(k) refers to the tentative events per revenue forgetting factor at state k; σref represents the aforementioned volatility reference parameter; {circumflex over (v)}(k) represents the previously calculated estimated revenue rate; and {circumflex over (ρ)}old(k) represents the previously calculated events per revenue estimate.
The above calculated tentative events per revenue forgetting factor can be utilized by estimation module 430 to determine an actual events per revenue forgetting factor, λρ(k), hereinafter merely referred to as an events per revenue forgetting factor. In some embodiments, estimation module 430 may set, or receive user inputs setting, a minimum value (λρ_min) and a maximum value (λρ_max) as bounds for the events per revenue forgetting factor, λρ(k), at the current state, k. Estimation module 430 may then be configured to maintain the events per revenue forgetting factor, λρ(k), between the minimum value (λρ_min) and the maximum value (λρ_max). An example equation for maintaining the actual events per revenue forgetting factor is depicted by Eq. 6.
From the equation above, it can be seen that the events per revenue forgetting factor, λρ(k), can be set equal to the previously calculated tentative events per revenue forgetting factor, λ′ρ(k), if the tentative events per revenue forgetting factor is between the above mentioned bounds, λρ_min and λρ_max, or equal to either of these bounds. If, on the other hand, the tentative events per revenue forgetting factor, λ′ρ(k), falls below λρ_min or exceeds λρ_max, then the actual events per revenue forgetting factor, λρ(k), is set to the bound that the tentative events per revenue forgetting factor, λ′ρ(k), fell below or exceeded.
Similar to how the revenue related state variables are updated above, the events per revenue state variables, αρ(k) and βρ(k), in current state (k), can also be updated recursively based on the events per revenue state variable values from the previous state, (k−1). To accomplish this, as mentioned previously, estimation module 430 may set values for initial states of the events per revenue state variables, αρ(0) and βρ(0), to initialization values αρ,0 and βρ,0, respectively. The events per revenue state variables, αρ(0) and βρ(0), may be referred to herein, respectively, as first and second events per revenue state variables. Initialization values αρ,0 and βρ,0 can be based, for example, on some default or initial values set by a user. The events per revenue state variables, αρ(k) and βρ(k), can then be recursively updated based on the events per revenue forgetting factor, λρ(k). Additionally, in some embodiments, the observed event volume, nE(k), and the observed revenue, r(k), in the current state, may also be used as the basis to update events per revenue state variables αρ(k) and βρ(k). Example equations for recursively updating the events per revenue related state variables are depicted by Eq. 7 and Eq. 8.
αρ(k)=γhλρ(k)αρ(k−1)+(1−γh)αρ,0+nE(k) Eq. 7
βρ(k)=γhλρ(k)ρρ(k−1)+(1−γh)βρ,0+r(k) Eq. 8
where γ represents a drift/bias term towards the previous state; λρ represents the events per revenue forgetting factor; αρ(k−1) and βρ(k−1) represent the events per revenue state variables from the previous state, k−1; αρ,0 and βρ,0 represent the initialization values of the events per revenue state variables; nE(k) represents the observed event volume observed in the current state; and r(k) represents the observed revenue observed in the current state. In some specific embodiments, γ can be set smaller than, but very close to 1. In a specific embodiment, γ can be chosen so that it is larger than any anticipated λρ (e.g. larger than λρ_max). Such a γ can aid in avoiding numerical instability (e.g., by preventing division by zero in Eq. 9, discussed below) in the corner case where nE=r=0 over a period of time.
From equations 7 and 8, it can be seen that a forgetting factor λρ that is between 0 and 1 would act to reduce the impact of the previous state, αρ(k−1) and βρ(k−1), on the current state, αρ(k) and βρ(k), respectively. In addition, it would follow that a λρ that is closer to 0 would more greatly discount the impact of a previous state on a calculation of the current state than a λρ that is closer to 1. As such, adjusting λρ between 0 and 1 can affect the volatility of the events per revenue state variables from one state to the next. As an example, as λρ(k) approaches λρ_min, αρ(k) and βρ(k) will depend less on the previous state and more on the observed event volume, nE(k), rather than the previous state variable value of αρ(k−1).
Similarly, in this case, βρ(k) will depend more on the observed revenue, r(k), rather than the previous state variable value of βρ(k−1). On the other hand, when λρ(k) approaches λρ_maxαρ(k) and βρ(k) will depend more on the values in the previous state, namely αρ(k−1) and p (k−1) respectively.
Because ‘ρ’ represents the number of events per unit of revenue, e.g., number of events per cost, and can be estimated in accordance with equation 4, it would follow that the estimated cost per event could be calculated by taking the inverse of ρ. As such, the cost per event estimate (ĉ(k)), hereinafter referred to merely as cost, may be obtained, for example, according to Eq. 9.
Recall that σref, as used in Eq. 5, can be used by estimation module 430 to keep a volatility of the cost estimation at a predefined desired relative volatility. In various embodiments, a value can be set for σref, and update the events per revenue forgetting factor (λρ) based at least in part on the relative volatility reference parameter σref to keep the volatility of the cost estimation at the level associated with σref. Generally, setting higher value for σref will introduce lower value for λρ, thus causing the cost estimation to be more responsive to recently observed event volume and revenue. On the contrary, setting lower value for σref will introduce higher value for λρ, thus causing the cost estimation to be less volatile or less susceptible to recently observed event volume and revenue.
In various embodiments, estimation module 430 may relate the estimator gain (i.e., the events per revenue forgetting factor λρ) to the temporal volatility of the cost estimate. As used herein, temporal volatility can refer to the standard deviation of the cost estimate divided by the true cost over a period of time. In such embodiments, each set of values for estimated revenue rate, estimated events per revenue, and estimator gain correspond to a unique steady state relative volatility, or relative temporal volatility, of the cost estimate. As such, if reasonably good estimates (e.g., within a certain level of error) are made for estimated revenue rate and estimated events per revenue, there is a unique mapping between estimator gain and (steady-state) relative volatility of the cost estimate. In other words, each value of estimator gain corresponds to a unique value of (steady-state) relative volatility, or standard deviation, of the cost estimate. Generally, a desired relative volatility may be translated into a specific events per revenue forgetting factor (λρ). Hence, the gain can be selected adaptively to ensure the relative volatility remains at a certain level, or remains no larger than at a certain level. The gain can be updated adaptively based on the estimated revenue rate ({circumflex over (v)}(k)) and the estimated events per revenue ({circumflex over (ρ)}old(k)). As an example, if the estimated revenue rate and the estimated events per revenue are good estimates (e.g., within a certain margin of error) the estimator gain can be set to a specific value in order to obtain a relative temporal volatility equal to σref.
In the meantime, estimation module 430 also maintains the λρ(k) between the minimum value (λρ_min) and the maximum value (λρ_max), (e.g., in accordance with Eq. 6). Therefore, estimation module 430 can adjust the aggressiveness (e.g., update λρ(k)) based on the estimated revenue rate ({circumflex over (v)}(k)) and previous cost estimate (ĉ(k−1)) to trade volatility for response time. In particular, utilizing λρ(k), estimation module 430 may make the cost estimate (ĉ(k)) less volatile (at the expense of response time) and non-volatile cost estimates more responsive. In a particular embodiment, by setting λρ_min=0 and λρ_max=1, all cost estimates will have the same relative volatility at a steady state.
In various embodiments, the process begins at block 510, where a revenue rate estimate and a prior events per revenue estimate may be calculated, e.g., by estimation module 430 of
At block 520, an event per revenue forgetting factor (e.g., λρ) may be generated, (e.g., by estimation module 430 of
According to Eq. 5 and Eq. 6, the forgetting factor (λρ(k)) is correlated with the revenue rate estimation ({circumflex over (v)}(k)) and the prior events per revenue rate estimation ({circumflex over (ρ)}old(k)). As can be seen in Eq. 5 and Eq. 6, the forgetting factor (λρ(k)) will increase in the current state compared to the previous state when the revenue rate estimation ({circumflex over (v)}(k)) or the prior events per revenue rate estimate ({circumflex over (ρ)}old(k)) decreases from the previous state. Similarly, the forgetting factor (λρ(k)) will decrease in the current state compared to the previous state when the revenue rate estimation ({circumflex over (v)}(k)) or the prior events per revenue rate estimate ({circumflex over (ρ)}old(k)) increases from the previous state.
At block 530, the events per revenue state variables, e.g., αρ(k) and βρ(k), may be recursively updated. In embodiments, a first events per revenue state variable, αρ(k), can be recursively updated based at least in part on the observed event volume observed in the current state (nE(k) and the events per revenue forgetting factor (λρ(k)), e.g., based on Eq. 7. Similarly, a second events per revenue state variable, ρρ(k), may be updated based at least in part on the observed revenue observed in the current state βp(k)) and the events per revenue forgetting factor (λp(k)), e.g., based on Eq. 8.
At block 540, the cost estimate for the current state (e.g., ĉ(k)) may be determined (e.g., by estimation module 430 of
In various embodiments, the events per revenue forgetting factor (λρ(k)) may be updated based further on a volatility reference parameter, e.g., σref, as used in Eq. 5. The volatility reference parameter may be set in a way to keep the volatility of the cost estimation at a prescribed volatility level.
In various embodiments, the process may begin at block 610, where the events per revenue forgetting factor (λρ) may be maintained between a minimum value (Δρ_min) and a maximum value (λρ_max), e.g., by estimation module 430 of
Next, at block 620, where the events per revenue forgetting factor (λρ) may be adjusted to reduce the volatility of the cost estimate (e.g., by estimation module 430 of
In some embodiments, the minimum value (λρ_min) and/or the maximum value (λρ_max) may be adjusted to potentially reduce the volatility of the cost estimate, e.g., reducing drastic change from the cost estimate for the current state from the prior cost estimate. As the values of the minimum value (λρ_min) or the maximum value (λρ_max) are increased, it would follow that the events per revenue forgetting factor (λρ) may also be increased in some instances. Thus, the cost estimation may be less susceptible to recent observation of event rates or revenue.
Next, at block 630, where the events per revenue forgetting factor (λρ) may be adjusted to increase the responsiveness of the cost estimation, e.g., by estimation module 430 of
Having described embodiments of the present invention, an example operating environment in which embodiments of the present invention may be implemented is described below in order to provide a general context for various aspects of the present invention. Referring to
The invention may be described in the general context of computer code or machine-useable instructions, including computer-executable instructions such as program modules, being executed by a computer or other machine, such as a personal data assistant or other handheld device. Generally, program modules including routines, programs, objects, components, data structures, etc., refer to code that perform particular tasks or implement particular abstract data types. The invention may be practiced in a variety of system configurations, including hand-held devices, consumer electronics, general-purpose computers, more specialized computing devices, etc. The invention may also be practiced in distributed computing environments where tasks are performed by remote-processing devices that are linked through a communications network.
With reference to
Computing device 700 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by computing device 700 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computing device 700. Computer storage media does not comprise signals per se. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.
Memory 720 includes computer-storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, non-removable, or a combination thereof. Typical hardware devices may include, for example, solid-state memory, hard drives, optical-disc drives, etc. Computing device 700 includes one or more processors 730 that read data from various entities such as memory 720 or I/O components 760. Presentation component(s) 740 present data indications to a user or other device. Illustrative presentation components include a display device, speaker, printing component, vibrating component, etc.
In various embodiments, memory 720 includes, in particular, temporal and persistent copies of cost estimation logic 722. Cost estimation logic 722 includes instructions that, when executed by one or more processors 730, result in computing device 700 to adaptively estimate an average cost per event, such as, but not limited to, process 500 or process 600. In various embodiments, cost estimation logic 722 includes instructions that, when executed by processor 730, result in computing device 700 performing various functions associated with, but not limited to, observation module 410, tracking module 420, or estimation module 430 in connection with
In some embodiments, one or more processors 730 may be packaged together with cost estimation logic 722. In some embodiments, one or more processors 730 may be packaged together with cost estimation logic 722 to form a System in Package (SiP). In some embodiments, one or more processors 730 can be integrated on the same die with cost estimation logic 722. In some embodiments, processor 730 can be integrated on the same die with cost estimation logic 722 to form a System on Chip (SoC).
In the preceding detailed description, reference is made to the accompanying drawings which form a part hereof wherein like numerals designate like parts throughout, and in which is shown, by way of illustration, embodiments that may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. Therefore, the preceding detailed description is not to be taken in a limiting sense, and the scope of embodiments is defined by the appended claims and their equivalents.
Various aspects of the illustrative embodiments have been described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art. However, it will be apparent to those skilled in the art that alternate embodiments may be practiced with only some of the described aspects. For purposes of explanation, specific numbers, materials, and configurations are set forth in order to provide a thorough understanding of the illustrative embodiments. However, it will be apparent to one skilled in the art that alternate embodiments may be practiced without the specific details. In other instances, well-known features have been omitted or simplified in order not to obscure the illustrative embodiments.
Various operations have been described as multiple discrete operations, in turn, in a manner that is most helpful in understanding the illustrative embodiments; however, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations need not be performed in the order of presentation. Further, descriptions of operations as separate operations should not be construed as requiring that the operations be necessarily performed independently and/or by separate entities. Descriptions of entities and/or modules as separate modules should likewise not be construed as requiring that the modules be separate and/or perform separate operations. In various embodiments, illustrated and/or described operations, entities, data, and/or modules may be merged, broken into further sub-parts, and/or omitted.
The phrase “in one embodiment” or “in an embodiment” is used repeatedly. The phrase generally does not refer to the same embodiment; however, it may. The terms “comprising,” “having,” and “including” are synonymous, unless the context dictates otherwise. The phrase “A/B” means “A or B.” The phrase “A and/or B” means “(A), (B), or (A and B).” The phrase “at least one of A, B and C” means “(A), (B), (C), (A and B), (A and C), (B and C) or (A, B and C).”
Number | Name | Date | Kind |
---|---|---|---|
20040088241 | Rebane | May 2004 | A1 |
20110035276 | Ghosh | Feb 2011 | A1 |