様々な図面における同様の参照番号および参照指示は、同様の要素を示す。
コンテンツプロバイダは、定期的に多数のコンテンツ要求を受信し、それらのコンテンツ要求に応答する。これらの要求を処理し、これらの要求に応答することは、多大な量のコンピューティングリソースを必要とする可能性がある。いくつかの筋書きにおいて、コンテンツプロバイダは、多大な量のコンピューティングリソースを必要とするが、コンテンツプロバイダにとって肯定的な結果をもたらさないコンテンツ要求を受信する。本明細書において低優先度の要求とも呼ばれるそのような要求は、そうでなければ高優先度の要求、つまり、コンテンツプロバイダにとって肯定的な結果をもたらす要求によって利用され得る可能性があるコンピューティングリソースを消費する。肯定的な結果は、ユーザがコンテンツプロバイダによって提供されるコンテンツとインタラクションすることなどのコンテンツプロバイダにとって好ましい結果をもたらす要求への任意の応答であり得る。
本明細書において説明されるように、コンピューティングリソースは、高優先度の要求に応答するために必要とされるコンピューティングリソースへのアクセスを提供しながら、低優先度の要求に応答するために必要とされるコンピューティングリソースへのアクセスを絞ることによって効率的に使用され得る。コンテンツ要求に応答するために必要とされるコンピューティングリソースへのアクセスを絞るかどうかを判定する際、コンテンツプロバイダは、コンテンツ要求が低優先度の要求であるかどうかをまず判定する。この判定を容易にするために、コンテンツプロバイダは、コンテンツ要求から特徴を抽出し、これらの特徴を優先順位付けモデルに入力する。
コンテンツの以前の要求の組に関するデータを使用することによって訓練される優先順位付けモデルが、優先順位付けモデルに入力されるコンテンツ要求の特徴に基づいて受信されたコンテンツ要求に関する優先度の値を決定する。そして今度は、優先順位付けモデルは、以下でより詳細に検討されるように、たとえば、要求が高優先度の要求であるのかまたは低優先度の要求であるのかを判定するために使用され得るコンテンツ要求に関する優先度の値を出力する。
また、コンテンツプロバイダは、コンピューティングリソースへのアクセスの絞りを制御するコンテンツプロバイダにとって最大の許容可能な否定的な結果を表す指定された閾値を決定する。指定された閾値は、本明細書全体を通じて詳細に説明されるように、予め決定された目標損失割合によってスケーリングされた以前のコンテンツ要求の組の実際の結果に基づいて決定され得る。
コンテンツプロバイダは、コンテンツ要求に関する優先度の値を指定された閾値と比較する。コンテンツ要求に関する優先度の値が指定された閾値を満たさない場合、要求は、低優先度の要求と見なされる。一方、コンテンツ要求に関する優先度の値が指定された閾値を満たす場合、要求は、高優先度の要求と見なされる。
また、コンテンツプロバイダは、コンテンツ要求に応答するために必要とされるコンピューティングリソースへのアクセスを提供すべきかどうか(またはそれらのコンピューティングリソースを割り当てるべきかどうか)を判定する。コンテンツプロバイダが要求が低優先度の要求であると判定した場合、コンテンツプロバイダは、要求に応答するために必要とされるコンピューティングリソースへのアクセスを絞る。一方、コンテンツプロバイダが要求が高優先度の要求であると判定した場合、コンテンツプロバイダは、要求に応答するために必要とされるコンピューティングリソースへのアクセスを提供する。
コンテンツプロバイダが時間の経過とともに受信するコンテンツ要求に関する正確な予測を優先順位付けモデルが提供し続けることを保証するために、コンテンツプロバイダは、新しいコンテンツ要求の組の中の要求のすべてが処理されるように、上で検討された絞りをされない新しいコンテンツ要求の組を使用して優先順位付けモデルを定期的に更新する可能性がある。特に、コンテンツプロバイダは、コンテンツ要求のこの新しい組の実際の結果および優先度の値を評価し、実際の結果と優先度の値との間の違いを使用して優先順位付けモデルを更新する可能性がある。
これらの特徴および追加的な特徴が、図1~図5を参照して以下でより詳細に説明される。
図1は、提示するためにコンテンツが配信される例示的な環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、またはこれらの組合せなどのネットワーク108を含む。ネットワーク108は、コンテンツプロバイダ130およびクライアントデバイス102を接続する。例示的な環境100は、多くの異なるコンテンツプロバイダ130およびクライアントデバイス102を含む可能性がある。
クライアントデバイス102は、ネットワーク108を介してコンテンツおよびリソースを要求し、受け取ることができる電子デバイスである。例示的なクライアントデバイス102は、パーソナルコンピュータ、モバイル通信デバイス、デジタルアシスタントデバイス、およびネットワーク108を介してデータを送受信することができるその他のデバイスを含む。クライアントデバイス102は、概して、ネットワーク108を介したデータの送受信を容易にするためのウェブブラウザなどのユーザアプリケーションを含むが、クライアントデバイス102によって実行されるネイティブアプリケーションも、ネットワーク108を介したコンテンツの送受信を容易にし得る。
クライアントデバイス102において提示されるコンテンツの例は、ウェブページ、文書処理ドキュメント、ポータブルドキュメントフォーマット(PDF)ドキュメント、画像、動画、および検索結果ページを含む。コンテンツは、コンテンツプロバイダ130によってクライアントデバイス102に提供され得る。たとえば、一部の実装において、コンテンツプロバイダ130は、コンテンツ要求に応答して提供されるコンテンツをホストするコンテンツサーバ126を含む。この例において、クライアントデバイス102は、コンテンツ要求104を開始することができる。コンテンツ要求104は、クライアントデバイス102によってネットワーク108(たとえば、電気通信ネットワーク)を介してコンテンツプロバイダ130に送信される。
一部の実装において、コンテンツプロバイダ130は、要求アナライザ110、データストア116、優先順位付けモデル122、絞りエンジン124、および1つまたは複数のコンテンツサーバ126を含む。コンテンツプロバイダ130は、図5を参照して説明されるデータ処理装置もしくはコンピュータシステム、または任意のその他の適切な処理システムとして実装される可能性がある。
図1のブロック図に示されるように、コンテンツプロバイダ130は、様々な下位ブロックを有する単一のブロックとして示される。しかし、コンテンツプロバイダは単一のデバイスまたはデバイスの単一の組である可能性があるが、本明細書は、コンテンツプロバイダがデバイスのグループである可能性があり、またはクライアントデバイスにコンテンツを提供するために通信する複数の異なるシステムである可能性さえあると考える。たとえば、コンテンツプロバイダは、検索システム、ビデオストリーミングサービス、オーディオストリーミングサービス、ナビゲーションサービス、または任意のその他のサービスのうちの1つまたは複数を包含する可能性がある。コンテンツプロバイダは、コンテンツの発行者を包含する可能性があり、または発行者とは異なる主体である可能性がある。
コンテンツプロバイダ130の上述の構成要素は、コンテンツ要求が低優先度の要求であるかどうか、およびコンテンツ要求に応答するために必要とされるコンピューティングリソースへのアクセスを提供すべきかどうかを判定する。これらの構成要素の動作が、コンテンツ要求に応答するために必要とされるコンピューティングリソースへのアクセスを提供すべきかどうかを判定するためにコンテンツプロバイダによって実施される例示的なプロセス200の流れ図である図2を参照して説明される。プロセス200の動作は、例示のみを目的として下で説明される。プロセス200の動作は、任意の適切なデバイスまたはシステム、たとえば、任意の適切なデータ処理装置によって実行され得る。プロセス200の動作は、1つまたは複数のデータ処理装置によって実行されるときに1つまたは複数のデータ処理装置にプロセス200の動作を実行させる、コンピュータ可読媒体に記憶される命令としても実装され得る。
(202において)コンテンツプロバイダ130は、クライアントデバイスからコンテンツ要求104を受信する。たとえば、コンテンツ要求104は、ユーザのモバイルデバイスのブラウザを通じてユーザによって送信され、コンテンツプロバイダ130によって受信される、「安い税務書類作成会社」という言葉を含むクエリである可能性がある。たとえば、コンテンツプロバイダ130は、クライアントデバイス102にコンテンツを送信することによってコンテンツ要求104に応答するように構成される検索エンジンまたは任意のその他の種類のサービス(たとえば、ウェブサーバ)である可能性がある。
(204において)コンテンツプロバイダ130は、コンテンツ要求104から特徴を抽出する。コンテンツ要求104を受信すると、この要求は、コンテンツプロバイダ130の要求アナライザ110構成要素に送信される。一部の実装において、要求アナライザ110は、2つの下位構成要素、すなわち、特徴エクストラクタ112および優先度アナライザ114を含む。特徴エクストラクタ112は、コンテンツ要求104から1つまたは複数の特徴を抽出する。本明細書において使用される用語「特徴」は、要求に応答して提供する適切なコンテンツを選択するためにコンテンツプロバイダ130によって使用され得るコンテンツ要求104の任意の特性を指す可能性がある。たとえば、特徴エクストラクタ112は、特徴の中でもとりわけ、要求によって言及されたキーワード、要求によって言及された主体(たとえば、人、場所、物)、地理情報(たとえば、要求が送られた地域、ネットワークロケーション)、要求元デバイス(たとえば、クライアントデバイス102)の名前(またはネットワークロケーション)、ユーザがアドブロッカを使用しているかどうか、ユーザが使用しているデバイスの種類(デスクトップのブラウザ、モバイルデバイスのブラウザ)、ブラウザの種類(たとえば、Chrome、Safari、Firefox)、要求の時間、および要求の日にちを含む特徴をコンテンツ要求104から抽出する可能性がある。本明細書において使用されるとき、特徴を抽出することは、コンテンツ要求から特徴を取り出すことと、コンテンツ要求内の特徴を特定することとを含む。
上記の例において、コンテンツプロバイダは、ユーザのモバイルデバイスのブラウザを通じてユーザによって送信される「安い税務書類作成会社」という言葉を含むクエリから特徴を抽出する。この例において抽出される特徴は、クエリ内に存在する言葉(「安い税務書類作成会社」)、クエリがカリフォルニア州San Mateoから生じ、ユーザがそのユーザのモバイルデバイス上でブランドXのブラウザを使用していると判定するために使用される可能性があるクライアントデバイス102のIPアドレスを含む可能性がある。
(206において)コンテンツプロバイダは、それから、抽出された特徴の一部またはすべてを優先順位付けモデルに入力する。優先順位付けモデルは、優先度の値と呼ばれる数値を生成するように構成される。優先度の値は、個々のコンテンツ要求が要求に応答するためのコンピューティングリソースへのアクセスを許されるかどうかを判定するためにコンテンツ要求を優先順位付けするために使用され得る。特徴エクストラクタ112は、コンテンツ要求104から特徴を抽出すると、それらの特徴を優先順位付けモデル122に入力する。上記の例において、「安い税務書類作成会社」という言葉、カリフォルニア州San Mateo、モバイルデバイス、およびブランドXのブラウザが、優先順位付けモデルに特徴として入力される。
(208において)特徴エクストラクタ112が優先順位付けモデル122に入力する特徴に基づいて、優先順位付けモデル122は、コンテンツ要求104に関する優先度の値を出力する。一部の実装において、優先順位付けモデル122は、以前のコンテンツ要求の組からのデータを使用して生成される可能性がある。特に、優先順位付けモデル122は、以前のコンテンツ要求から抽出された特徴および以前のコンテンツ要求の実際の結果を使用してコンテンツ要求に関する優先度の値を決定する可能性がある。
優先順位付けモデル122は、2つの下位モデル、すなわち、SM1 118およびSM2 120を含む可能性がある。SM1 118は、要求が肯定的な結果を生む確率を決定し、SM2 120は、肯定的な結果を有するコンテンツ要求に関する条件付きの期待される結果(conditional expected outcome)を決定する。SM1 118およびSM2 120の出力は、優先度の値を生成するために組み合わされる可能性がある。
(214において)優先順位付けモデル122の第1の下位モデルSM1 118は、以前のコンテンツ要求の組によって生成された結果に基づいて、コンテンツ要求が肯定的な結果を生む確率を予測する。特徴エクストラクタ112は、以前のコンテンツ要求から特徴を抽出し、優先度アナライザ114は、これらの要求の各々に関する結果を得る。以前のコンテンツ要求に関するこれらの抽出された特徴および結果は、データストア116に記憶される。SM1 118は、データストア116の以前のコンテンツ要求に関するこれらの特徴および結果を指定するデータにアクセスする。一部の実装において、第1の下位モデルは、特徴レベルXを有するコンテンツ要求CRに関して、モデルが次の仮定に従って肯定的な結果を生じるCRの確率を予測するポアソン回帰モデルを使用する。
NX|OX~Poisson(OXλX),
Log(λX)=ΘTX
式中、OXは、特徴レベルXを有するコンテンツ要求が見られた回数(オフセット)であり、NXは、期待される肯定的な結果を有するコンテンツ要求の数であり、Θは、モデルのパラメータベクトルを表す。
たとえば、SM1 118は、以前のクエリに関する(肯定的な結果と否定的な結果との両方を有するクエリを含む)すべての結果データに基づいて、クエリが肯定的な結果を生む(たとえば、ユーザがクエリに応答して提供されたコンテンツとインタラクションする)確率を決定する可能性がある。したがって、上記の例においては、クエリがユーザがインタラクションすることができるコンテンツの提供につながるかどうかである、コンテンツ要求CRが肯定的な結果をもたらす確率は、次のように推定される。
(216において)優先順位付けモデル122の第2の下位モデルSM2 120は、肯定的な結果を生んだ以前のコンテンツ要求の組の中の要求に基づいてコンテンツ要求の条件付きの期待される結果を予測する。条件付きの期待される結果は、コンテンツ要求の肯定的な結果の大きさを表す数値である。SM2 120は、データストア116に記憶される以前のコンテンツ要求に関する特徴および結果を指定するデータを使用する。このモデルは、対数ガウス回帰モデル(Log-Gaussian regression model)を使用して実装される可能性がある。一部の実装においては、特徴レベルXを有する各コンテンツ要求CRに関して、対数ガウスモデルは、次の仮定に従って(クエリに応答して提供されるコンテンツとのユーザのインタラクションを定量化する可能性がある)CRの期待される結果を予測する。
log(Rev+ε) ~ Gaussian(ΓTX,σ2)
式中、Γは、モデルのパラメータベクトルであり、εは、非常に小さなlogの独立変数を防ぐために小さな正の数に設定される(ε~10-6)。
優先順位付けモデル122は、優先度の値を生成するためにSM1 118およびSM2 120の出力を組み合わせる。(218において)特に、優先順位付けモデル122は、SM1 118によって決定された肯定的な結果の確率をSM2 120によって決定された条件付きの期待される結果と組み合わせることによって優先度の値を決定する。これは、次の式を使用して表される可能性がある。
E[Interaction] = P(Interaction > 0) x E[Interaction | Interaction > 0]
ユーザがモバイルデバイスのブラウザを通じて「安い税務書類作成会社」という言葉を含むクエリを送る上記の例において、優先順位付けモデルは、コンテンツ要求の入力された特徴に基づいて、コンテンツ要求が優先度の値65を有すると決定する可能性がある。説明を容易にするために、優先度の値は本明細書においては整数として示されるが、優先度の値が任意の好適な尺度(たとえば、貨幣、時間など)で測られ得ることは理解されるであろう。
モデルの特定の実装が例の目的のために上で検討されているが、たとえば、線形回帰モデルおよびニューラルネットワークモデルなどのその他の適切なモデルが使用され得ることに留意されたい。
(210において)コンテンツプロバイダ130は、以前の要求の組に関する目標損失割合および結果に基づいて指定された閾値を決定する。コンテンツプロバイダが指定された閾値を決定するプロセスの詳細が、指定された閾値を決定するためにコンテンツプロバイダ130によって実施される例示的なプロセス400の流れ図である図4を参照して説明される。
図4を参照して説明されるように、(402において)コンテンツプロバイダは、以前のコンテンツ要求の組の中の各要求に関する結果を得る。例として、コンテンツプロバイダは、データストア116に記憶された以前のコンテンツ要求の組に関する実際の結果(たとえば、広告収入などの収入、行われたユーザの行為、またはその他の結果)にアクセスする可能性がある。たとえば、例の目的で、以下の広告収入(米ドル)、すなわち、100、150、200、50、30、10、25、400、15、20を有する10個の以前のコンテンツ要求が存在すると仮定する。収入が、以前のコンテンツ要求の実際の結果が定量化され得る1つの可能な方法であるに過ぎないことは理解されるであろう。以前のコンテンツ要求の結果が定量化され得るその他の方法は、コンテンツのユーザの閲覧時間またはインタラクション時間を含む。
(404において)コンテンツプロバイダ130は、集約された結果を生成するために以前のコンテンツ要求に関する結果を集約する。上記の例において、コンテンツプロバイダ130は、集計(たとえば、100+150+200+50+30+10+25+400+15+20)に基づいて以前のコンテンツ要求に関する総収入が$1000であると決定する。実際の結果がユーザの閲覧時間を使用して定量化される場合、コンテンツプロバイダ130は、各要求に関する閲覧時間を集約する(合計する)ことによって以前のコンテンツ要求に関する総閲覧時間を決定する。
(406において)コンテンツプロバイダは、指定された閾値を生成するために、集約された結果を目標損失割合によってスケーリングする。予め決定される可能性がある目標損失割合は、コンピューティングリソースへのアクセスを拒否されるコンテンツ要求の割合を指定する。したがって、コンテンツプロバイダ130は、コンテンツ要求のある割合までサービスが拒否される結果となる目標損失割合を指定することによってシステムの性能を調整することができる。上記の例において、コンテンツプロバイダ130は、目標損失割合を10%に設定する可能性がある。したがって、コンテンツプロバイダは、指定された閾値100を生成するために、$1000の総収入をこの10%の目標損失割合によってスケーリングする。実際の結果がユーザの閲覧時間を使用して定量化される場合、コンテンツプロバイダ130は、以前のコンテンツ要求に関する総閲覧時間を10%の目標損失割合によってスケーリングする。
指定された閾値の計算は、その他の方法で実行される可能性もある。一部の実装において、コンテンツプロバイダは、以前のコンテンツ要求に関する予測されたおよび実際の結果を得る可能性がある。コンテンツプロバイダは、以前のコンテンツ要求に関する実際の結果を集約する。上の例を使用すると、実際の集約された結果は、10個の以前のコンテンツ要求に関して1000である。そのとき、コンテンツプロバイダは、実際の結果の合計を10%の予め決められた目標の損失閾値によってスケーリングすることによって初期閾値を計算する。上記の例において、コンテンツプロバイダは、実際の集約された結果1000を5%の予め決められた目標の損失閾値によってスケーリングして初期閾値50を得る(つまり、5/100*1000)。
コンテンツプロバイダは、予測された結果を昇順にソートし、それから、この順序を使用して実際の結果の対応する組を得る。そのとき、実際の結果のリストの最初のコンテンツ要求から始まって、コンテンツプロバイダは、分析された要求の実際の結果の合計が初期閾値を超えるまで各要求の実際の結果を足す。その時点で、コンテンツプロバイダは、予測された結果の合計が初期閾値を超えなかった最後の実際の結果に対応する予測された結果を指定された閾値として選択する。
上記の例において、コンテンツプロバイダは、10個の以前のコンテンツ要求の各々に関する実際の収入[100, 150, 200, 50, 30, 10, 25, 400, 15, 20]および対応する予測された収入[100, 150, 200, 50, 30, 10, 20, 400, 15, 22]を得る。コンテンツプロバイダは、予測された収入を昇順にソートして以下のデータセット、すなわち、10、15、20、22、30、50、100、150、200、400を得る。それから、コンテンツプロバイダは、この順序を使用して、以下の通り、すなわち、10、15、25、20、30、50、100、150、200、400である実際のデータセットに対応する実際の収入のデータセットを得る。そして、実際の収入のデータセットの中の最初の結果から始まって、コンテンツプロバイダは、実際の収入の合計が初期閾値50を超えるまで、各要求の実際の収入を足す。最初の3つの要求の後の実際の収入の合計(つまり、10+15+25)は、50である。実際の収入の合計は、4つ目の実際の収入20が実際の収入の合計に足されるときに初期閾値50を超える(つまり、10+15+25+20=70であり、これは50を超える)。したがって、コンテンツプロバイダは、20が実際の収入の合計が初期閾値50を超えなかった最後の実際の収入(25)に対応する予測された収入であるので、20を指定された閾値として選択する。上の分析は、コンテンツ要求の結果が収入の代わりにコンテンツのユーザの閲覧時間もしくはインタラクション時間を使用して(または任意のその他の適切な方法で)定量化され得る場合、同一である。
指定された閾値は、(本明細書においてはホールドアウト要求(holdout request)と呼ばれる)コンテンツ要求の新しい組およびそれらの要求の対応する結果に基づいて上述のプロセスを使用して定期的に更新される可能性がある。
パーセンテージが上の例の目的で使用されるが、目標の損失は、損失の総計、指定された期間の損失の合計、または損失の何らかのその他の尺度などのその他の方法で表され得ることに留意されたい。閾値は、与えられるコンテンツ、コンテンツプロバイダ、および/またはコンテンツが与えられる国に基づいて変わる可能性があることにも留意されたい。
図1および図2を参照すると、(212において)コンテンツプロバイダ130は、優先度の値が指定された閾値を満たすかどうかを判定する。コンテンツプロバイダ130は、優先順位付けモデル122によって生成された優先度の値および指定された閾値を絞りエンジン124に入力する。優先度の値および指定された閾値に基づいて、絞りエンジン124は、コンテンツ要求104に応答するために必要とされるコンピューティングリソースへのアクセスを提供すべきかどうかを評価する。上記の例において、絞りエンジン124は、(優先順位付けモデル122によって生成された)優先度の値65を指定された閾値100と比較する。
優先度の値が指定された閾値を満たさないと絞りエンジン124が判定する場合、(222において)絞りエンジンは、要求に応答するために必要とされるコンピューティングリソースへのアクセスを拒否する。上記の例において、優先度の値65は指定された閾値100を満たさないので、絞りエンジンは、コンテンツ要求に関する広告リスティング(ad listing)を特定するために必要とされるコンピューティングリソースへのアクセスを拒否する。
優先度の値が指定された閾値を満たさないと判定すると、絞りエンジン124は、コンテンツ要求104を処理しないようにコンテンツサーバ126に知らせる可能性がある。一部の実装において、絞りエンジン124は、コンテンツ要求104、抽出された特徴、およびコンテンツ要求に応答するためのコンピューティングリソースへのアクセスを提供すべきかどうかに関する「No」インジケータを含むメッセージをコンテンツサーバ126に送信する可能性がある。このメッセージを受信すると、コンテンツサーバ126は、コンテンツ要求104を無視し、応答106において「アクセス拒否」によってクライアントデバイス102に応答する可能性がある。結果として、クライアントデバイス102は、単にいかなるコンテンツも表示しない可能性がある。コンテンツ要求を処理しないようにコンテンツサーバに知らせるその他の方法は、コンテンツサーバがコンテンツ要求を処理することを防止するデータフラグを設定すること、または(たとえば、コンテンツサーバの既定の設定が、明示的にそのようにするように命令されない限りコンテンツ要求を処理しないことである場合)単純にコンテンツ要求を処理するようにコンテンツサーバに命令しないことを含む。
一方、優先度の値が指定された閾値を満たすと絞りエンジン124が判定する場合、(220において)絞りエンジン124は、要求に応答するために必要とされるコンピューティングリソースへのアクセスを提供する。上記の例において、優先度の値が指定された閾値100を満たしたかまたは指定された閾値100を超えていた場合、絞りエンジンは、コンテンツ要求に応答してコンテンツを提供するために必要とされるコンピューティングリソースへのアクセスを提供する。
一部の実装においては、優先度の値が指定された閾値を満たすと判定すると、絞りエンジン124は、コンテンツ要求104を処理するようにコンテンツサーバ126に知らせる可能性がある。絞りエンジン124は、コンテンツ要求104、抽出された特徴、およびこの要求に応答するためのコンピューティングリソースへのアクセスを提供すべきかどうかに関する「Yes」インジケータを含むメッセージをコンテンツサーバ126に送信する可能性がある。このメッセージを受信すると、コンテンツサーバ126は、コンテンツ要求104に応答するための適切なコンテンツ(たとえば、検索結果)を特定するためにコンピューティングリソースを利用する。そして、コンテンツサーバ126は、応答106においてクライアントデバイス102にこのコンテンツを提供する。結果として、検索エンジンの検索結果の場合、クライアントデバイス102は、取り出された検索結果を表示する。コンテンツ要求を処理するようにコンテンツサーバに知らせるその他の方法は、コンテンツ要求を処理するようにコンテンツサーバをトリガするデータフラグを設定すること、または(たとえば、コンテンツサーバの既定の設定が、明示的にそのようにするように命令されない限りコンテンツ要求を処理することである場合)単純にコンテンツサーバにいかなる命令も送信しないことを含む。
図1および図2を参照して上で説明されたように、優先順位付けモデルは、以前のコンテンツ要求の組を使用して訓練され、以前のコンテンツ要求の組に基づいて特定のコンテンツ要求に関する優先度の値を生成する。一部の実装において、優先順位付けモデルは、図3を参照して説明されるように、コンテンツ要求の新しい組を使用して一定の間隔で更新される。
図3は、優先順位付けモデル122を更新するためにコンテンツプロバイダ130によって実施される例示的なプロセス300の流れ図である。
(処理が図2を参照して説明される)クライアントデバイス102から特定のコンテンツ要求を受信した後またはいつでも、(302において)コンテンツプロバイダ130は、複数のクライアントデバイスから受信されたコンテンツ要求の新しい組をホールドアウト要求として特定する可能性がある。
(304において)これらのホールドアウト要求に関して、コンテンツプロバイダ130は、ホールドアウト要求に関するいかなる優先度の値とも関係なく、必要とされるコンピューティングリソースへのアクセスを提供する。一部の実装においては、特徴エクストラクタ112構成要素がホールドアウト要求から特徴を抽出した後、特徴エクストラクタは、抽出された特徴および対応するホールドアウト要求をコンテンツサーバ126、優先順位付けモデル122、およびデータストア116に並列に送信する。
優先順位付けモデル122に送信されるホールドアウト要求に関して、優先順位付けモデルは、(図1および2を参照して上で説明されたように)優先度の値を決定し、これらの優先度の値をデータストア116に記憶する。
特徴エクストラクタ112がコンテンツサーバ126に直接送信するホールドアウト要求に関して、コンテンツサーバ126は、ホールドアウト要求の抽出された特徴のためのコンテンツを特定するためにコンピューティングリソースを費やす。ホールドアウト要求の場合、コンテンツサーバ126は、コンテンツ要求を処理すべきかまたは処理すべきでないかに関して絞りエンジン124からいかなるメッセージも必要としない。たとえば、特徴エクストラクタ112が抽出された特徴をコンテンツサーバに直接送信するとき、特徴エクストラクタ112は、絞りエンジン124からいかなる命令も受信することなくコンテンツサーバ126が動作することを可能にする可能性がある「ホールドアウト」のタグ識別子も含める可能性がある。
(306において)コンテンツプロバイダ130は、ホールドアウト要求に応答して提供されたコンテンツに関する実際の結果を監視する。一部の実装において、優先度アナライザ114は、コンテンツサーバ126によって処理されたホールドアウト要求の各々の実際の結果を監視する。たとえば、ホールドアウト要求が処理されているとき、優先度アナライザ114は、コンテンツサーバ126によって提供されるコンテンツがクライアントデバイス102に送信される前に通過する、コンテンツサーバ126において実行されるエージェントを有する可能性がある。優先度アナライザ114は、コンテンツとともに含められたメタデータからコンテンツのソース(たとえば、コンテンツ要求に応答して提供されるコンテンツをホストする可能性があるサーバ)およびセッション識別子(すなわち、コンテンツが提供された特定のコンテンツ要求104に関する識別子)を抽出する。それから、優先度アナライザ114のエージェントは、特定のセッション識別子に対応する実際の結果データを得るためにコンテンツのソースに問い合わせる可能性がある。コンテンツのソースから実際の結果データを受け取ると、優先度アナライザ114は、ホールドアウト要求の各々に関するこのデータをデータストア116に記憶する。
(308において)コンテンツプロバイダ130は、実際の結果に基づいて優先順位付けモデルを更新する。これは、3つのステップで達成される可能性がある。(310において)まず、コンテンツプロバイダ130は、ホールドアウト要求に応答して提供されたコンテンツに関する優先度の値を取得する。一部の実装において、優先度アナライザ114は、データストア116に記憶されているホールドアウト要求に関する優先度の値を取得する。たとえば、優先度アナライザ114は、ホールドアウト要求の優先度の値に関してデータストア116に問い合わせる可能性がある。優先度アナライザは、異なるコンテンツ要求に関する識別子およびこれらの要求の各々に関する対応するデータを記憶する可能性があるデータストア116にホールドアウト要求の各々に関する一意識別子を送信する可能性がある。したがって、優先度アナライザ114からクエリを受信すると、データストア116は、識別子を使用して、データストア116に記憶された対応する優先度の値のデータの場所を特定する。
コンテンツプロバイダ130は、(312において)優先度の値を実際の結果と比較し、(314において)優先度の値と実際の結果との間の違いに基づいて優先順位付けモデルを調整する。一部の実装において、優先度アナライザ114は、データストア116からホールドアウト要求の各々に関する実際の結果を取得する。そして、優先度アナライザ114は、ホールドアウト要求に関する優先度の値と実際の結果とを比較する。たとえば、優先度アナライザ114は、ホールドアウト要求の各々に関する実際の結果と優先度の値との間の違いを決定する。実際の結果および/または優先度の値は、それらの比較を可能にするためにスケーリングされる(たとえば、数値を乗算される)可能性がある。一部の実装において、優先度アナライザ114は、優先度の値と実際の結果との間の違いに基づいて平均的な違いを生成し、それから、この平均的な違いを使用して優先順位付けモデルを更新する可能性がある。たとえば、優先度アナライザ114は、優先度の値と実際の結果との間の平均的な違いを-50であると決定する可能性がある。言い換えると、優先度アナライザ114は、実際の結果が優先度の値よりも平均して50小さかったと判定する可能性がある。コンテンツプロバイダ130が優先順位付けモデル122を更新することができる1つの方法は、50によって出力をスケーリングすることによる。たとえば、コンテンツプロバイダ130は、現在の優先順位付けモデルの最終的な決定された出力から50を差し引く可能性がある。したがって、現在のモデルが優先度の値100を生じたであろう場合、更新されたモデルは、優先度の値50(つまり、100引く50)を生じる。
コンテンツプロバイダ130は、目標損失割合とコンピューティングリソースへのアクセスを拒否される破棄される要求の数との間の関係に基づいて優先順位付けモデルをさらに調整する可能性がある(316)。たとえば、経時的にコンテンツプロバイダ130によって受信されたコンテンツ要求に基づいて、コンテンツプロバイダ130は、特定の目標損失割合においてコンピューティングリソースへのアクセスを拒否される破棄される要求の数の分布を維持する可能性がある。
たとえば、現在の要求の破棄率が50%である可能性があるが、コンテンツプロバイダ130は、分布に基づいて、10%の目標損失割合に関して、破棄される要求の所望の数がその代わりに70%であるべきであると決定する可能性がある。コンテンツプロバイダ130は、優先順位付けモデルを調整することによってこの最適な要求の破棄率を達成する可能性がある。これが、10%の目標損失割合と、優先順位付けモデルによって決定された以下の優先度の値、すなわち、15、20、25、30、35、40、45、50、55、および60を有する10個のコンテンツ要求のサンプルデータとに基づく指定された閾値37.5を使用して示される。指定された閾値37.5を使用すると、優先度の値が37.5未満である最初の5つの要求が破棄される。
この例において、10%の目標損失割合は、50%の要求の破棄率(つまり、合計10個のクエリ中5個の破棄されるクエリ)をもたらすだけである。同じ目標の損失閾値において要求の破棄率を50%から70%に上げることは、優先順位付けモデルの出力を10によってスケーリングすることによって達成される可能性がある。結果として、10個のコンテンツ要求のサンプルデータは、今や、以下の更新された優先度の値、すなわち、5、10、15、20、25、30、35、40、45、および50を有する。このとき、指定された閾値37.5を適用すると、70%の要求の破棄率が達成される。これは、優先度の値が37.5未満である最初の7個の要求が破棄されるからである。
図5は、上述の動作を実行するために使用され得る例示的なコンピュータシステム500のブロック図である。システム500は、プロセッサ510、メモリ520、ストレージデバイス530、および入力/出力デバイス540を含む。構成要素510、520、530、および540のそれぞれは、たとえば、システムバス550を使用して相互接続され得る。プロセッサ510は、システム500内で実行するための命令を処理することができる。一部の実装において、プロセッサ510は、シングルスレッドプロセッサである。別の実装において、プロセッサ510は、マルチスレッドプロセッサである。プロセッサ510は、メモリ520またはストレージデバイス530に記憶された命令を処理することができる。
メモリ520は、システム500内で情報を記憶する。1つの実装において、メモリ520は、コンピュータ可読媒体である。一部の実装において、メモリ520は、揮発性メモリユニットである。別の実装において、メモリ520は、不揮発性メモリユニットである。
ストレージデバイス530は、システム500に大容量ストレージを提供することができる。一部の実装において、ストレージデバイス530は、コンピュータ可読媒体である。様々な異なる実装において、ストレージデバイス530は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイスによってネットワークを介して共有されるストレージデバイス(たとえば、クラウドストレージデバイス)、または何らかのその他の大容量ストレージデバイスを含み得る。
入力/出力デバイス540は、システム500のための入力/出力動作を提供する。一部の実装において、入力/出力デバイス540は、ネットワークインターフェースデバイス、たとえば、イーサネットカード、シリアル通信デバイス、たとえば、RS-232ポート、および/または無線インターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装において、入力/出力デバイスは、入力データを受信し、その他の入力/出力デバイス、たとえば、キーボード、プリンタ、およびディスプレイデバイス560に出力データを送信するように構成されたドライバデバイスを含み得る。しかし、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなどのその他の実装も、使用され得る。
例示的な処理システムが図5に示されたが、本明細書に記載の主題の実装および機能的動作は、本明細書で開示された構造およびそれらの構造的均等物を含む、その他の種類のデジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装され得る。
本明細書に記載の主題の実施形態および動作は、本明細書において開示された構造およびそれらの構造的均等物を含む、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはこれらのうちの1つもしくは複数の組合せで実装され得る。本明細書に記載の主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために複数のコンピュータストレージ媒体(または1つのコンピュータストレージ媒体)上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替的にまたは追加的に、プログラム命令は、データ処理装置による実行のために好適な受信装置に送信するために情報を符号化するように生成される人為的に生成された伝播信号、たとえば、機械によって生成された電気的信号、光学的信号、または電磁的信号上に符号化され得る。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはこれらのうちの1つもしくは複数の組合せであるか、あるいはこれらに含まれることが可能である。さらに、コンピュータストレージ媒体は、伝播信号ではないが、人為的に生成された伝播信号に符号化されたコンピュータプログラム命令の送信元または送信先であることが可能である。また、コンピュータストレージ媒体は、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、もしくはその他のストレージデバイス)であるか、またはこれらに含まれることが可能である。
本明細書に記載の動作は、1つもしくは複数のコンピュータ可読ストレージデバイスに記憶された、またはその他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
用語「データ処理装置」は、例として、1つのプログラミング可能なプロセッサ、1台のコンピュータ、1つのシステムオンチップ、またはこれらの複数もしくは組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえば、FPGA (フィールドプログラマブルゲートアレイ)またはASIC (特定用途向け集積回路)を含み得る。装置は、ハードウェアに加えて、問題にしているコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはこれらのうちの1つもしくは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービスインフラストラクチャ、分散コンピューティングインフラストラクチャ、およびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語もしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述されることが可能であり、独立型プログラムとしての形態、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境での使用に適したその他のユニットとしての形態を含む任意の形態で展開されることが可能である。コンピュータプログラムは、ファイルシステム内のファイルに対応する可能性があるが、必ずそうであるとは限らない。プログラムは、その他のプログラムもしくはデータを保持するファイルの一部(たとえば、マークアップ言語のドキュメントに記憶された1つもしくは複数のスクリプト)、問題にしているプログラムに専用の単一のファイル、または複数の連携されたファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイル)に記憶されることが可能である。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に置かれるか、もしくは複数の場所に分散され、通信ネットワークによって相互に接続される複数のコンピュータ上で実行されるように展開され得る。
本明細書に記載のプロセスおよび論理フローは、入力データに対して演算を行い、出力を生成することによって行為を行うために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラミング可能なプロセッサが実行することによって実行され得る。また、プロセスおよび論理フローは、専用の論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行されることが可能であり、さらに、装置は、それらの専用の論理回路として実装されることが可能である。
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサとの両方を含む。概して、プロセッサは、読み出し専用メモリ、またはランダムアクセスメモリ、またはこれらの両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令に従って行為を実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。また、概してコンピュータは、データを記憶するための1つもしくは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはそれらの大容量ストレージデバイスからデータを受信するか、もしくはそれらの大容量ストレージデバイスにデータを転送するか、もしくはその両方を行うために動作可能なように結合される。しかし、コンピュータは、そのようなデバイスを有していなくてもよい。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつか例を挙げるとすれば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレイヤー、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込まれることが可能である。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完され得るか、または専用論理回路に組み込まれ得る。
ユーザとのインタラクションを提供するために、本明細書に記載の主題の実施形態は、ユーザに対して情報を表示するためのディスプレイデバイス、たとえば、CRT(ブラウン管)またはLCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有するコンピュータ上に実装されることが可能である。その他の種類のデバイスが、ユーザとのインタラクションを提供するためにやはり使用されることが可能であり、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることが可能であり、ユーザからの入力は、音響、発話、または触覚による入力を含む任意の形態で受け取られることが可能である。加えて、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信し、そのデバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによってユーザとインタラクションすることができる。
本明細書に記載の主題の実施形態は、バックエンド構成要素を、たとえば、データサーバとして含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザが本明細書に記載の主題の実装とインタラクションすることができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実装されることが可能である。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互に接続されることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、概して互いに離れており、通常は通信ネットワークを通じてインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されており、互いにクライアント-サーバの関係にあるコンピュータプログラムによって生じる。一部の実施形態において、サーバは、(たとえば、クライアントデバイスとインタラクションするユーザに対してデータを表示し、そのようなユーザからユーザ入力を受け取る目的で)クライアントデバイスにデータ(たとえば、HTMLページ)を送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザのインタラクションの結果)が、サーバにおいてクライアントデバイスから受信され得る。
本明細書は多くの特定の実装の詳細を含むが、これらは、いかなる発明の範囲または特許請求される可能性があるものの範囲に対する限定とも見なされるべきでなく、むしろ、特定の発明の特定の実施形態に固有の特徴の説明と見なされるべきである。別々の実施形態の文脈で本明細書において説明されている特定の特徴が、単一の実施形態において組み合わせて実装されることも可能である。反対に、単一の実施形態の文脈で説明されている様々な特徴が、複数の実施形態に別々にまたは任意の好適な部分的組合せで実装されることも可能である。さらに、特徴は、特定の組合せで動作するものとして上で説明されている可能性があり、最初にそのように主張されてさえいる可能性があるが、主張された組合せの1つまたは複数の特徴は、場合によっては組合せから削除されことが可能であり、主張された組合せは、部分的組合せ、または部分的組合せの変形を対象とする可能性がある。
同様に、動作が図中に特定の順序で示されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。特定の状況においては、マルチタスクおよび並列処理が有利である可能性がある。さらに、上述の実施形態における様々なシステム構成要素の分割は、すべての実施形態においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラムコンポーネントおよびシステムは、概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされることが可能であると理解されるべきである。
このように、主題の特定の実施形態が説明された。その他の実施形態は、添付の特許請求の範囲内にある。場合によっては、特許請求の範囲に挙げられた行為は、異なる順序で実行され、それでも所望の結果を達成することができる。加えて、添付の図面に示されたプロセスは、所望の結果を達成するために、必ずしも、示された特定の順序または逐次的順序である必要はない。特定の実装においては、マルチタスクおよび並列処理が有利である可能性がある。