様々な図面における同じ参照番号および名称は、同じ要素を示す。
概して、本書は、ユーザ経験を改善するために、ユーザデータを分析するときにユーザプライバシーを保護することに関する。これは、さもなければ、ユーザをメンバーとして含まないユーザグループに対するデジタルコンポーネントを評価することをプラットフォームに課すことになる計算負担を低減すると同時に、ユーザの匿名性を維持する差分プライバシー技法を使用してコンテンツプラットフォームに対して機密情報を共有することを可能にする。
図1は、コンテンツがクライアントデバイス110に配信される環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどの、データ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、需要側プラットフォーム(DSP)150、供給側プラットフォーム(SSP)170、発行者140、およびウェブサイト142を接続する。例示的な環境100は、多くの異なるクライアントデバイス110、DSP150、SSP170、発行者140、およびウェブサイト142を含み得る。
クライアントデバイス110は、ネットワーク105を介して通信することが可能な電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送信し、受信することができる他のデバイスを含む。クライアントデバイスはまた、マイクロフォンを介してオーディオ入力を受け入れ、スピーカを介してオーディオ出力を出力するデジタルアシスタントデバイスも含み得る。デジタルアシスタントは、オーディオ入力を受け入れるためにマイクロフォンを起動する「ホットワード」または「ホットフレーズ」を検出すると、聴取モードになり得る(たとえば、オーディオ入力を受け入れる準備ができている)。デジタルアシスタントデバイスはまた、画像をキャプチャし、情報を視覚的に提示するためのカメラおよび/またはディスプレイも含み得る。デジタルアシスタントは、ウェアラブルデバイス(たとえば、腕時計または眼鏡)、スマートフォン、スピーカデバイス、タブレットデバイス、または別のハードウェアデバイスを含む、異なる形態のハードウェアデバイスにおいて実装され得る。クライアントデバイスはまた、デジタルメディアデバイス、たとえば、テレビにビデオをストリーミングするためにテレビまたは他のディスプレイに差し込まれるストリーミングデバイスを含み得る。
クライアントデバイス110は、典型的に、ネットワーク105を介してデータを送信すること、および受信することを円滑にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイス(たとえば、特定のオペレーティングシステムを有するモバイルデバイス)のために開発されたアプリケーションである。発行者140は、ネイティブアプリケーションを開発し、クライアントデバイス110に提供する、たとえばダウンロード可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザによる、ウェブブラウザのアドレスバーへのリソース145のリソースアドレスの入力、またはリソースアドレスを参照するリンクの選択に応答して、発行者140のウェブサイト142をホストするウェブサーバからのリソース145を要求することができる。同様に、ネイティブアプリケーションは、発行者のリモートサーバからのアプリケーションコンテンツを要求することができる。
いくつかのリソース、アプリケーションページ、または他のアプリケーションコンテンツは、デジタルコンポーネントにリソース145またはアプリケーションページを提示するためのデジタルコンポーネントスロットを含み得る。デジタルコンポーネントスロットは、リソース内に埋め込まれた、デジタルコンポーネントを要求するためのコンピュータ可読コードを含む、デジタルコンポーネントタグであり得る。本明細書全体にわたって使用される、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の別個の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合体として物理メモリデバイスに電子的に記憶されてもよく、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとり、広告情報を含んでもよく、したがって、広告は、デジタルコンポーネントの1つのタイプである。たとえば、デジタルコンポーネントは、アプリケーション112によって提示されるウェブページまたは他のリソースのコンテンツを補足することが意図されるコンテンツであってもよい。より具体的には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンテンツを含み得る(たとえば、デジタルコンポーネントは、ウェブページコンテンツと同じトピック、または関連するトピックに関連し得る)。したがって、デジタルコンポーネントのプロビジョニングは、ウェブページまたはアプリケーションコンテンツを補足し、一般に強化することができる。
アプリケーション112が、1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードすると、アプリケーション112は、各スロットのデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112にクライアントデバイス110のユーザに提示するためのデジタルコンポーネントを要求させるコード(たとえば、スクリプト)を含み得る。
一部の発行者140は、SSP170を使用して、そのリソースおよび/またはアプリケーションのデジタルコンポーネントスロットに対するデジタルコンポーネントを取得するプロセスを管理する。SSP170は、リソースおよび/またはアプリケーションに対するデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。SSP170は、1つまたは複数のDSP150と対話して、デジタルコンポーネントスロットに対するデジタルコンポーネントを選択するために使用され得る情報を取得することができる。以下でより詳しく説明するように、この情報は、デジタルコンポーネント提供者160がデジタルコンポーネント提供者160のデジタルコンポーネントの提示のために発行者140に提供する意思のある量を表す選択パラメータを含み得る。各発行者140は、対応するSSP170または複数のSSP170を有し得る。複数の発行者140は、同じSSP170を使用し得る。
デジタルコンポーネント提供者160は、発行者のリソースおよびアプリケーションのデジタルコンポーネントスロット内に提示されるデジタルコンポーネントを作成(または別様に発行)することができる。デジタルコンポーネント提供者160は、DSP150を使用して、デジタルコンポーネントスロット内に提示するために、そのデジタルコンポーネントのプロビジョニングを管理することができる。DSP150は、リソースおよび/またはアプリケーションで提示するためのデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。DSP150は、デジタルコンポーネント提供者160に代わって複数のSSP170と対話して、複数の異なる発行者140のリソースおよび/またはアプリケーションで提示するためのデジタルコンポーネントを提供することができる。一般に、DSP150は、デジタルコンポーネントに対する要求を(たとえば、SSP170から直接、または交換によって)受信し、要求に基づいて1つまたは複数のデジタルコンポーネント提供者によって作成された1つまたは複数のデジタルコンポーネントに対する選択パラメータを生成(または選択)し、デジタルコンポーネントに関するデータ(たとえば、デジタルコンポーネント自体)および選択パラメータをSSP170に提供することができる。
場合によっては、ウェブページ、アプリケーションページ、または、以前にユーザが訪れた、および/もしくはユーザと対話した他の電子リソースに関連する、デジタルコンポーネントをユーザが受信することが有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザが特定のリソースを訪れるときまたはリソースにおいて特定のアクションを実行する(たとえば、ウェブページ上に提示された特定のアイテムと対話する、またはアイテムを仮想カートに追加する)ときに、ユーザがユーザグループに割り当てられ得る。たとえば、デバイスのユーザが靴を検索し、異なる靴製造会社の複数のウェブページを訪れる場合、ブラウザは、「靴」などのユーザグループにユーザを追加し、ユーザグループ「靴」の対応するユーザグループ識別子をクライアントデバイス上に記憶することができる。したがって、ユーザグループは、ユーザの関心を表し得る。ユーザグループは、デジタルコンポーネント提供者160によって生成され得、ユーザグループ識別子によって識別される。すなわち、各デジタルコンポーネント提供者160は、ユーザがデジタルコンポーネント提供者160の電子リソースを訪れるとき、ユーザを自分のユーザグループに割り当てることができる。たとえば、ユーザがオンライン小売業者の買い物かごに靴を追加する場合、小売業者はユーザを靴のユーザグループに追加し得る。ユーザは、複数の異なるデジタルコンポーネント提供者に対する複数のユーザグループに割り当てられ得る。
ユーザのプライバシーを保護するために、ユーザのグループメンバーシップは、デジタルコンポーネント提供者160によって、もしくはコンテンツプラットフォームによって、または別の当事者によってではなく、たとえばアプリケーション112のうちの1つ、またはクライアントデバイス110のオペレーティングシステムによって、ユーザのクライアントデバイス110において維持され得る。特定の例では、アプリケーション112は、ユーザに対するユーザグループ識別子のリスト(「ユーザグループリスト」)114を維持し得る。ユーザグループリスト114は、ユーザが追加されている各ユーザグループに対するグループ識別子を含み得る。ユーザグループを作成するデジタルコンポーネント提供者160は、それらのユーザグループに対するユーザグループ識別子を指定することができる。ユーザグループに対するユーザグループ識別子は、グループを記述するもの(たとえば、ガーデニンググループ)またはグループを表すコード(たとえば、記述的ではない英数字シーケンス)であり得る。ユーザのためのユーザグループリスト114は、クライアントデバイス110において安全なストレージに記憶されてもよく、および/または記憶されるときに暗号化されてもよい。
ユーザが実際に割り当てられるユーザグループ識別子は、真正のユーザグループ識別子と呼ばれる。いくつかの実装形態では、各ユーザグループ識別子は、(i)ユーザグループ識別子によって識別されたユーザグループを作成したかつ/または管理するエンティティ(たとえば、デジタルコンポーネント提供者160またはDSP150)のリソースロケータ(たとえば、ドメイン、URL、またはeTLD+1)と(ii)ユーザグループ識別子によって識別されたユーザグループに対する一意の識別子の組合せに基づく。たとえば、デジタルコンポーネント提供者は、example.comにおけるウェブサイト、および識別子「靴」を有する靴に対するユーザグループを有し得る。この例では、たとえば、アプリケーション112、SSP170、およびDSP150によって環境100において使用されるユーザグループ識別子は、「example.com」と「靴」の組合せであってよいか、またはこの組合せに基づいてよい。
上述のように、エンティティに対するリソースロケータは、ユーザグループを作成したまたは管理するエンティティのドメインに対してeTLD+1であり得る。eTLD+1は、有効なトップレベルドメイン(eTLD)に、パブリックサフィックスよりも1つ多いレベルを加えたものである。例示的なeTLD+1は、「example.com」であり、「.com」は、トップレベルドメインである。
複数のデジタルコンポーネント提供者160を有する環境において、各デジタルコンポーネント提供者160は、複数のユーザグループに対するアクセスを有し得るか、または複数のユーザグループを維持し得、各ユーザは、複数のユーザグループのメンバーであり得る。たとえば、衣類卸売業者は、各タイプの衣類に対するユーザグループを有し得、ユーザは、衣類卸売業者の1つまたは複数の衣類グループおよびホームインプルーブメント団体のガーデニンググループのメンバーであり得る。いくつかの実装形態では、ハッシュ関数を使用して、(i)ユーザグループを作成したエンティティ(たとえば、デジタルコンポーネント提供者)のリソースロケータ、および(ii)エンティティによって識別されたユーザグループに対する一意の識別子に対してハッシュ化出力を生成することができる。このハッシュ関数の結果は、環境100内で使用されるグループに対するユーザグループ識別子であり得る。他の例では、ユーザグループを作成したエンティティに固有の他の情報がリソースロケータの代わりに使用され得る。
たとえば「example.com」がデジタルコンポーネント提供者のドメインであり、UG_IDが、デジタルコンポーネント提供者160によって識別された特定のユーザグループに対する一意のグループ識別子であると仮定する。アプリケーション112は、暗号関数を使用して、リソースロケータおよび一意のグループ識別子に基づいて、ユーザグループ識別子を生成し得る。関数は、ハッシュ化256ビット(32バイト)出力を生成するために256ビットのダイジェスト長(digest length)を有する暗号学的ハッシュ関数であるセキュアハッシュアルゴリズム(SHA256)を使用して実装された鍵付きハッシュメッセージ認証コード(HMAC:hash message authentication code)など、疑似関数であり得る。そのような例では、HMAC(UG_ID、examle.com)は、ユーザグループ識別子として、ユーザグループの256ビットの一意の識別子を生成する。
追加の情報なしに、ハッシュ関数を使用して、ユーザグループ識別子を決定することによって、ユーザグループ識別子の受信者がユーザグループを作成した/管理するエンティティの識別子またはユーザグループに対する一意の識別子を見出すことは計算的に不可能である。したがって、ハッシュ関数手法は、別のエンティティがユーザに対するユーザグループ識別子を受信する場合、エンティティの機密情報(たとえば、開始した、終了した、進行中のデジタルコンポーネントキャンペーンの数など)を保護する。ハッシュ関数はまた、そのようなエンティティがユーザの完全なグループメンバーシップを決定することを防ぐことによって、ユーザプライバシーを保護する。
アプリケーション112がデジタルコンポーネント提供者160に関するリソースもしくはアプリケーションコンテンツ、またはウェブサイト142上のウェブページを提示するとき、リソースは、アプリケーション112が1つまたは複数のユーザグループ識別子をユーザのユーザグループリストに追加することを要求することができる。それに応答して、アプリケーション112は、1つまたは複数のユーザグループ識別子をユーザグループリスト114に追加し、ユーザグループリストを安全に記憶することができる。これは、図2を参照しながらさらに説明される。
発行者140の電子リソースで、たとえば、デジタルコンポーネントスロット内に提示するためのデジタルコンポーネントを取得するために、アプリケーション112は、発行者140に対する要求をSSP170に提出し得る。この要求は、ユーザに対するユーザグループ識別子、たとえば、ユーザグループリスト114内に含まれたユーザグループ識別子を含み得る。いくつかの実装形態では、アプリケーション112は、ユーザグループ識別子の平文値を送信することができる。しかしながら、これは、リストの受信者にユーザのユーザグループメンバーシップ全体を提供することになり、受信者が、ユーザに対する複数の要求に基づいてユーザを追跡することを可能にする。
ユーザプライバシーを保護するために、アプリケーション112は、ユーザグループ識別子をSSP170に提供する前に、雑音、たとえば、差分プライバシー雑音をユーザに対するユーザグループ識別子に適用し得る。以下で説明するように、これは、ユーザが実際にメンバーであるユーザグループに対する真正のユーザグループ識別子のうちの1つまたは複数を除去することを含み得る。これはまた、いずれの実際のユーザグループも表さない(たとえば、単なるランダム識別子)か、またはユーザがメンバーではない実際のユーザグループに対する識別子であるかのいずれかであり得る、1つまたは複数の偽のユーザグループ識別子を追加することを含み得る。これは、受信者がユーザのグループメンバーシップデータ全体を知ることを防ぐことによって、ユーザプライバシーを保護し、SSP170に提供されるリストに追加されたまたはそこから除去されるユーザグループ識別子が異なる要求に対して異なる場合、受信者が受信するリストは異なることになるため、受信者がユーザのグループメンバーシップに基づいてユーザを追跡することを防ぐことができる。
さらに、アプリケーション112は、ユーザグループリスト114内のユーザグループ識別子に基づいて、確率的データ構造、たとえば、BloomフィルタまたはCuckooフィルタを生成し得る。たとえば、アプリケーション112は、差分プライバシー技法がユーザグループリスト114に適用された後、ユーザ識別子のリストに基づいて、確率的データ構造を生成し得る。これは、上記で説明したように、受信者がユーザのグループメンバーシップデータ全体を取得することを防ぐことによって、ユーザプライバシーを保護し、ユーザグループデータのデータサイズを削減し、性能優位性を与える。
SSP170は、要求を受信し、要求を1つまたは複数のDSP150に提出し得る。DSP150に送信されるこれらの要求はまた、ユーザに対するユーザグループ識別子を含み得る。DSP150は、ユーザに対する1つまたは複数のユーザグループに基づいてユーザに対する1つまたは複数のデジタルコンポーネントを選択し、デジタルコンポーネントに対する選択パラメータをSSP170に提供し得る。選択パラメータは、デジタルコンポーネント提供者160がデジタルコンポーネント提供者160のデジタルコンポーネントの提示のために発行者140に提供する意思のある量を表す。SSP170は、発行者140の代わりにいくつかの排除を加え、選択パラメータに基づいて、デジタルコンポーネントのリストをアプリケーション112に提供することができる。アプリケーション112は、デジタルコンポーネントをリストから選択し、発行者140の電子リソースでデジタルコンポーネントを提示し得る。デジタルコンポーネントを取得するための例示的なプロセスについては、図3に示し、以下で説明する。
いくつかの実装形態では、アプリケーション112は、ユーザが、ユーザが割り当てられたユーザグループを管理することを可能にするユーザインターフェースを提供し得る。たとえば、ユーザインターフェースは、ユーザが、ユーザグループ識別子を除去することを可能にし、すべてのまたは特定のリソース145、発行者140、デジタルコンポーネント提供者160、デジタルコンポーネント交換、および/またはDSP150がユーザをユーザグループに追加することを防ぐこと(たとえば、エンティティが、アプリケーション112によって維持されるユーザグループ識別子のリストにユーザグループ識別子を追加することを防ぐこと)ができる。これは、ユーザにより良い透明性および制御を提供する。
本明細書全体にわたる説明に加えて、本明細書で説明するシステム、プログラム、または特徴がユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくはアクティビティ、職業、ユーザの選好、またはユーザの現在の位置についての情報)の収集を可能にし得るかどうかと、いつ可能にし得るかの両方、およびサーバからのコンテンツまたは通信がユーザに送信されるかどうかに関して、ユーザが選択を行うことを可能にする制御が提供され得る。加えて、いくつかのデータは、個人を識別できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で扱われ得る。たとえば、ユーザの識別情報は、個人を識別できる情報がユーザについて決定できないように扱われてもよく、またはユーザの地理的位置は、ユーザの具体的な位置を決定できないように、位置情報が取得される場合に(都市、ZIPコード、もしくは州のレベルなどに)一般化されてもよい。したがって、ユーザは、ユーザについてのどの情報が収集されるか、その情報がどのように使用されるか、およびどの情報がユーザに提供されるかを制御することができる。
図2は、1つまたは複数のユーザグループ識別子をユーザに対するユーザグループリスト114に追加するための例示的なプロセス200を示すスイムレーン図である。プロセス200の動作は、たとえば、クライアントデバイス110によって実装され得る。プロセス200の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス200の動作を実行させ得る。このプロセス200は、ウェブページをダウンロードするウェブブラウザに関して説明するが、同様のプロセスにおいてネイティブアプリケーションが使用され得る。
この例では、クライアントデバイス110のユーザは、ウェブブラウザなどのアプリケーション112を使用して、ウェブサーバ上でホストされるデジタルコンポーネント提供者160のウェブサイト142にアクセスする。ウェブサイト142にアクセスするために、クライアントデバイス110は、ウェブサイト142に対する要求を開始することができ、ウェブサイト142をホストするウェブサーバは、クライアントデバイス110におけるウェブページ(または、他の電子リソース)の提示を開始するコンピュータ実行可能命令および/またはデータを送信することによって要求に応答し得る。
ウェブページは、所与のユーザグループ、たとえば、ウェブページのコンテンツに関するユーザグループ、またはウェブページまたはウェブサイト142とのユーザの対話に参加する要求でクライアントデバイス110のウェブブラウザに催促するコンピュータ実行可能コード、たとえば、スクリプトを含み得る。たとえば、ウェブサイト142が靴に関するeコマースウェブサイトであると仮定する。ウェブサイト142にナビゲートした後、ウェブサイト142からダウンロードされたウェブページは、ユーザグループ「靴」に参加する要求でクライアントデバイス110のユーザに催促し得る。ウェブブラウザのユーザインターフェースは、ユーザが催促に応答することをさらに可能にし、ユーザがユーザグループ「靴」に参加する要求を受け入れるかまたは拒否するかのいずれかを可能にし得る。クライアントデバイス110のユーザがユーザグループに参加する要求を受け入れるときのシナリオでは、ウェブブラウザは、対応するユーザグループ識別子をクライアントデバイス110上に記憶する。別の例では、ウェブブラウザは、たとえば、ユーザがそのような機能を可能にする場合、ユーザに催促せずに、ユーザをユーザグループに追加し得る。例示的なプロセス200について、以下でさらに説明する。
この例では、ユーザグループメンバーシップに基づいて他の発行者のリソースで提示するためにデジタルコンポーネントを提供するデジタルコンポーネント提供者160もウェブサイトの発行者である。たとえば、デジタルコンポーネント提供者160は、その製品またはサービスに関するコンテンツを含むウェブサイトを有し得、その製品またはサービスに関するデジタルコンポーネントを他のコンテンツを含むウェブサイト、たとえば、ニュースウェブサイト上に提示することをやはり希望する。
クライアントデバイス110のユーザは、デジタルコンポーネント提供者160のウェブサイト142にナビゲートする(202)。たとえば、クライアントデバイス110のユーザは、ブラウザを使用して、レファレンス(たとえば、URL)を指定することによって、ウェブサイト142を訪れることができる。別の例では、クライアントデバイス110のユーザは、ウェブブラウザを使用して、(たとえば、ウェブサイトのクロールされたコンテンツに基づいて索引付けされた)ウェブサイトをクロールまたは索引付けすることによって、ウェブサイトを識別する検索システムに検索クエリを提出する。それに応答して、検索システムは、検索結果の形態でウェブサイトを識別し、検索結果を検索結果ページ内でクライアントデバイス110に返す。検索結果は、特定の検索クエリに応答する(たとえば、関連する)ウェブサイトを識別する検索システムによって生成されたデータであり、検索結果とのユーザ対話に応答して、ウェブサーバなど、指定された位置からデータを要求することをクライアントデバイス110に行わせるアクティブリンク(たとえば、ハイパーテキストリンク)を含む。例示的な検索結果は、ウェブサイトタイトル、ウェブサイトから抽出されたテキストの断片または画像の一部、およびウェブサイトのURLを含むことができる。検索結果を閲覧した後、クライアントデバイス110のユーザは、ウェブサイト142に対応する検索結果を選択および/またはクリックすることができる。
クライアントデバイス110は、ウェブサイト142に関するコンテンツに対する要求を生成し、ネットワーク105を介してその要求をウェブサーバに送信する(204)。たとえば、クライアントデバイス110のユーザが、ウェブサイト142に対応する検索結果をクリックおよび/または選択した後、またはレファレンス(たとえば、URL)を使用することによってウェブサイト142を直接指定した後、クライアントデバイス110上で実行しているウェブブラウザは、デジタルコンテンツ(たとえば、ウェブサイト142のウェブページ)に対する要求を生成し、ネットワーク105を介してそれをウェブサーバに送信する。
デジタルコンテンツに対する要求は、たとえば、パケット化ネットワークを介して送信され得、コンテンツ要求自体は、ヘッダおよびペイロードデータを有するパケット化データとしてフォーマットされ得る。ヘッダは、パケットの宛先を指定することができ、ペイロードデータは、上記で論じた情報のいずれかを含むことができる。
ウェブサーバは、ウェブサイト142のコンテンツ(たとえば、ウェブページ)で応答する(206)。たとえば、デジタルコンテンツ(すなわち、ウェブサイト142)に対する要求をクライアントデバイス110から受信した後、ウェブサイト142をホストしているウェブサーバは、機械実行可能命令を送信することによって応答し、それは、クライアントデバイス110におけるウェブページの提示を起動する。この応答は、たとえば、パケット化ネットワークを介して送信されたウェブページに関するデータを含んでよく、コンテンツ自体がパケット化データとしてフォーマットされ得る。
クライアントデバイス110は、ユーザに提示するためのコンテンツをレンダリングする(208)。ウェブサーバからデジタルコンテンツ(たとえば、ウェブページ)を受信した後、ウェブブラウザはユーザに提示するためのコンテンツをレンダリングする。たとえば、ウェブブラウザは、クライアントデバイス110のディスプレイを使用して、ウェブページをユーザに提示し得る。
デジタルコンテンツ提供者160は、ユーザをユーザグループに追加するようにクライアントデバイス110のウェブブラウザに要求する(210)。たとえば、デジタルコンポーネント提供者160(たとえば、デジタルコンポーネント提供者160のウェブサーバ)は、ウェブサイト142に関するデータの提示を起動するコンピュータ実行可能命令を送信した後、ユーザグループに参加するようにクライアントデバイス110のユーザに催促し得る。別の例では、ウェブページは、ウェブブラウザがユーザをユーザグループに追加することを要求するために、ウェブブラウザのアプリケーションプログラミングインターフェース(API)を呼び出すコンピュータ実行可能コード、たとえば、スクリプトを含み得る。
いくつかの実装形態では、ユーザグループは、デジタルコンポーネント提供者160によって知られているかつ/または管理されている複数の利用可能なユーザグループの中からデジタルコンポーネント提供者160によって選択される。現在の例では、ウェブサイト142は靴を購入するためのeコマースウェブサイトである。ウェブサイト142をホストしているウェブサーバは、ユーザグループ「靴」に参加する要求でクライアントデバイス110のユーザに催促し得る。ウェブブラウザのユーザインターフェースは、ユーザが催促に応答することをさらに可能にし、ユーザがユーザグループ「靴」に参加する要求を受け入れるかまたは拒否するかのいずれかを可能にし得る。
いくつかの実装形態では、アプリケーション112(たとえば、ウェブブラウザ)は、ユーザグループの受入れおよび拒否が、ユーザの介入なしに、自律的に処理され得るように、構成可能なオプションをクライアントデバイス110のユーザに提供し得る。たとえば、クライアントデバイス110のユーザは、アプリケーション112が発行者140によって催促されるとき、ユーザグループを自動的に受け入れることができるように、いくつかのオプションを構成し得る。
ユーザグループ識別子をクライアントデバイス110上に記憶する(212)。前に述べたように、各ユーザグループは、発行者140によって決定されるユーザグループ識別子によって識別される。特定のユーザグループに参加するための要求を受け入れた後、ウェブブラウザは、その特定のユーザグループに対応するユーザグループ識別子をクライアントデバイス110上に記憶する。たとえば、クライアントデバイス110のユーザがユーザグループ「靴」に参加するための要求を受け入れた場合、コンテンツプロバイダによって催促された後、ウェブブラウザは、ユーザグループ「靴」のユーザグループ識別子をクライアントデバイス110上に記憶する。上記で説明したように、ユーザグループ識別子は、クライアントデバイス110においてセキュアな記憶装置内に記憶され得る。
アプリケーション112が、1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードする状況において、アプリケーション112は、各スロットのデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112に、デジタルコンポーネントを選択しクライアントデバイス110のユーザへの提示のためにデジタルコンポーネントをアプリケーション112に提供するデジタルコンポーネント配信システムからデジタルコンポーネントを要求させるコード(たとえば、スクリプト)を含み得る。
図3は、デジタルコンポーネントを要求および受信するための例示的なプロセス300を示すスイムレーン図である。プロセス300の動作は、たとえば、クライアントデバイス110、SSP170、1つまたは複数のDSP150、および発行者140によって実装され得る。プロセス300の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。
この例では、クライアントデバイス110のユーザは、ウェブブラウザまたはネイティブアプリケーションなどのアプリケーション112を使用して、デジタルコンポーネントスロットを含む電子リソース(たとえば、ウェブページまたはアプリケーションページ)にアクセスする。
アプリケーション112は、デジタルコンポーネントスロットを含むウェブページをロードした後、クライアントデバイス110のユーザが割り当てられる1つまたは複数のユーザグループに基づいて、デジタルコンポーネントに対する要求をデジタルコンポーネント提供者に送信する。いくつかの実装形態では、デジタルコンポーネントに対する要求が供給側プラットフォーム(SSP)170に送信され、供給側プラットフォーム(SSP)170は、アプリケーションに対するデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアである。
デジタルコンポーネントに対する要求は、クライアントデバイス110内に記憶されるユーザグループ識別子の第1のセットを使用して、アプリケーション112、またはクライアントデバイスのオペレーティングシステムによって生成される、BloomフィルタまたはCuckooフィルタなど、確率的データ構造を含む。たとえば、ユーザグループ識別子の第1のセットは、クライアントデバイス110上に記憶されたユーザグループリスト114内のユーザグループ識別子であり得る。いくつかの実装形態では、確率的データ構造は、1つまたは複数の真正のグループ識別子をグループ識別子の第1のセットから除去し、グループ識別子の第1のセットの中にない、1つまたは複数の偽のグループ識別子を追加することによってグループ識別子の第1のセットから生成されたグループ識別子の第2のセットに基づく。確率的データ構造は、ハッシュ化出力がすべてのユーザグループ識別子にわたって一様分布を有するように、各ユーザグループ識別子のハッシュ化出力を生成するランダムハッシュ関数に基づき得る。
デジタルコンポーネントに対する要求を受信するとすぐ、SSP170は、1つまたは複数のデジタルコンポーネント提供者、および/またはアプリケーションを用いて提示するためのデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装されるタイプの技術プラットフォームである、1つまたは複数のDSP150と対話し得る。いくつかの実装形態では、SSP170は、確率的データ構造をDSP150に送信し得る。
DSP150は、確率的データ構造によって表されるユーザグループ識別子のうちの1つにマッチする、対応するユーザグループ識別子を有さないデジタルコンポーネントをフィルタで除去することによって、利用可能なデジタルコンポーネントのセットから1つまたは複数のデジタルコンポーネントを選択する。いくつかの実装形態では、DSP150は、各利用可能なデジタルコンポーネントに対する各ユーザグループ識別子に対するアプリケーション112と同じハッシュ関数を使用して、ハッシュ化出力を生成し得る。そのような実装形態では、ハッシュ化出力は、確率的データ構造内で検索され、ユーザグループ識別子の対応するハッシュ化値を有さないデジタルコンポーネントは選択プロセスからフィルタで除去される。
DSP150は、1つまたは複数の選択されたデジタルコンポーネントの各々を分析してスコアリングすることによってデジタルコンポーネント(たとえば、上位N個のデジタルコンポーネント)をさらに選択し得る。DSP150は、次いで、選択されたデジタルコンポーネントをSSPに送信する。選択されたデジタルコンポーネントをDSP150から受信した後、SSP170は、デジタルコンポーネントが発行者140によって設定された基準および/または条件に基づいてクライアントデバイス上に提示するために提供されることを可能にするのに先立って、デジタルコンポーネント(たとえば、上位K個のデジタルコンポーネント)のセットを検討し選択し得る。たとえば、SSP170は、デジタルコンポーネントが様々な基準を満たすこと、たとえば、特定のタイプのコンテンツを含まないこと、データおよび/または表示サイズ要件を満たすことなどを確実にするために、デジタルコンポーネントのコンテンツおよびフォーマットを検討し得る。デジタルコンポーネントのセットは、クライアントデバイス110上で実行しているアプリケーション112に送信される。
クライアントデバイス110上で実行しているアプリケーション112は、デジタルコンポーネントのセットを受信した後、ユーザグループ識別子の第1のセット内の真正のユーザ識別子、たとえば、ユーザグループリスト114内のユーザグループ識別子のうちの1つにマッチする、対応するユーザグループ識別子を有さない、1つまたは複数のデジタルコンポーネントをデジタルコンポーネントのセットからフィルタで除去することによって、デジタルコンポーネントのフィルタリングされたサブセットを選択し得る。1つまたは複数のデジタルコンポーネントをデジタルコンポーネントのセットからフィルタで除去するために、アプリケーション112は、デジタルコンポーネントのセット内、たとえば、デジタルコンポーネントに対するメタデータ内の各デジタルコンポーネントに対する、1つまたは複数の対応するユーザグループ識別子を識別する。識別後、アプリケーション112は、各デジタルコンポーネントに対する各ユーザグループ識別子をユーザグループ識別子の第1のセット内の真正のユーザグループ識別子と比較して、ユーザグループ識別子の第1のセット内の真正のユーザグループ識別子のうちの1つにマッチする、対応するユーザグループ識別子を有さないデジタルコンポーネントを除去する。
最終的に、所与のデジタルコンポーネントを選択するために、デジタルコンポーネントのフィルタリングされたサブセット内のデジタルコンポーネントが分析される。選択後、所与のデジタルコンポーネントがクライアントデバイス上に提示される(たとえば、デジタルコンポーネントスロット内にレンダリングされる)。
アプリケーション112を使用するクライアントデバイス110のユーザは、電子リソースにナビゲートする(302)。たとえば、クライアントデバイス110のユーザは、ブラウザを使用して、レファレンス(たとえば、URL)を指定することによって、ウェブサイト142を訪れることができる。別の例では、クライアントデバイス110のユーザは、ウェブブラウザを使用して、(たとえば、ウェブサイトのクロールされたコンテンツに基づいて索引付けされた)ウェブサイトをクロールして索引付けすることによって、ウェブサイトを識別する検索システムに検索クエリを提出し得る。それに応答して、検索システムは、検索結果の形態でウェブサイトを識別し、検索結果を検索結果ページ内でクライアントデバイス110に返す。検索結果を閲覧した後、クライアントデバイス110のユーザは、ウェブサイト142に対応する検索結果を選択および/またはクリックすることができる。さらに別の例では、ユーザは、アプリケーションの発行者140からコンテンツを要求するネイティブアプリケーションをローンチし得る。
クライアントデバイス110は、コンテンツに対する要求を生成し、ネットワーク105を介してその要求をウェブサーバに送信する(304)。たとえば、クライアントデバイス110のユーザが、ウェブサイト142に対応する検索結果をクリックおよび/または選択した、またはレファレンス(たとえば、URL)を使用することによってウェブサイト142を直接指定した後、アプリケーション112、すなわち、クライアントデバイス110上で実行しているウェブブラウザは、デジタルコンテンツ(すなわち、ウェブサイト142)に対する要求を生成し、ネットワーク105を介してそれをウェブサーバに送信する。
デジタルコンテンツに対する要求は、たとえば、パケット化ネットワーク105を介して送信され得、コンテンツ要求自体は、ヘッダおよびペイロードデータを有するパケット化データとしてフォーマットされ得る。ヘッダは、パケットの宛先を指定することができ、ペイロードデータは、上記で論じた情報のいずれかを含むことができる。
発行者140、たとえば、発行者140のウェブサーバまたはコンテンツサーバはコンテンツで応答する(306)。たとえば、コンテンツ(すなわち、ウェブサイト142に対する要求)をクライアントデバイス110から受信した後、サーバは、クライアントデバイス110におけるウェブページの提示を起動するコンピュータ実行可能命令およびデータを送信することによって応答し得る。この応答は、たとえば、パケット化ネットワーク105を介して送信されたウェブページに関するデータを含んでよく、コンテンツ自体がパケット化データとしてフォーマットされ得る。
クライアントデバイス110は、電子リソース内のデジタルコンポーネントに対するタグを識別する(308)。電子リソースまたは電子リソースに対するコンテンツを発行者140から受信した後、アプリケーション112は、1つまたは複数のタグ、たとえば、電子リソースのデジタルコンポーネントスロットに対する1つまたは複数のタグを識別し得る。たとえば、ウェブブラウザは、ウェブページ内の1つまたは複数のデジタルコンポーネントスロットを識別し得る。
クライアントデバイス110は、確率的データ構造を生成する(310)。前に述べたように、確率的データ構造は、ユーザグループ識別子の第1のセットから真正のグループ識別子をランダムに(または疑似ランダムに)除去することによって、かつユーザグループ識別子の第1のセットの真正のユーザグループ識別子の中にない偽のグループ識別子をランダムに(または疑似ランダムに)追加することによって、グループ識別子の第1のセットから生成されたグループ識別子の第2のセットに基づき得る。確率的データ構造は、ハッシュ化出力がすべてのユーザグループ識別子にわたって一様分布を有するように、各ユーザグループ識別子のハッシュ化出力を生成するランダムハッシュ関数に基づく。例示的な確率的データ構造には、BloomフィルタおよびCuckooフィルタが含まれる。確率的データ構造を生成するための例示的なプロセスについて、図4を参照しながら以下で説明する。
クライアントデバイス110は、デジタルコンポーネントに対する要求をSSP170に送信する(312)。クライアントデバイス110は、受信者コンピューティングシステムと呼ばれることもある、SSP170のコンピューティングシステムに要求を送信することができる。たとえば、アプリケーション112は、1つまたは複数のデジタルコンポーネントスロットに基づいて、デジタルコンポーネントに対する1つまたは複数の要求を生成し得る。特定の例では、ウェブブラウザは、タグに基づいてデジタルコンポーネントに対する要求を生成し、ネットワーク105を介して要求をSSP170に送信し得る。
いくつかの実装形態では、デジタルコンポーネントに対する要求は、クライアントデバイス110によって生成された確率的データ構造を含み得る(図4を参照して説明する)。たとえば、ウェブブラウザアプリケーション112は、確率的データ構造を含むデジタルコンポーネントに対する要求を生成する。確率的データ構造は、クライアントデバイス110のユーザが関連付けられるユーザグループリスト114内のユーザグループ識別子に基づくユーザグループ識別子の第2のセットを表し、デジタルコンポーネントに対する要求をSSP170に送信する。
いくつかの実装形態では、デジタルコンポーネントに対する要求はまた、コンテキストデータなど、追加データを含み得る。コンテキストデータは、たとえば、リソースに対するリソースロケータ、たとえば、ウェブページに対するユニバーサルリソースロケータ(URL)またはアプリケーションコンテンツに対するユニバーサルリソース識別子(URI)、言語(たとえば、コンテンツがコンテンツをレンダリングするアプリケーションによって提示される言語)および/またはクライアントデバイス110の粗い位置を示す粗い地理的位置情報を含み得る。
デジタルコンポーネントに対する要求は、たとえば、パケット化ネットワーク105を介して送信され得、コンポーネント要求自体は、ヘッダおよびペイロードデータを有するパケット化データとしてフォーマットされ得る。ヘッダは、パケットの宛先を指定することができ、ペイロードデータは、上記で論じた情報のいずれかを含むことができる。
SSP170は、デジタルコンポーネントに対する要求を1つまたは複数のDSP150に送信する(314)。前に述べたように、デジタルコンポーネント提供者160は、1つまたは複数のDSP150を使用して、アプリケーションで提示するためのデジタルコンポーネントを配信するプロセスを自動化し得る。要求を受信した後、SSP170は、1つまたは複数のDSPと対話し、確率的データ構造および随意にコンテキストデータを含むデジタルコンポーネントに対する対応する要求を送信し得る。
DSP150は、確率的データ構造に基づいてデジタルコンポーネントをフィルタリングする(316)。いくつかの実装形態では、DSP150は、確率的データ構造内のユーザグループ識別子のうちの1つにマッチする、対応するユーザグループ識別子を有さないデジタルコンポーネントをフィルタで除去することによって、デジタルコンポーネントのセットから1つまたは複数のデジタルコンポーネントを選択する。そのような実装形態では、DSP150は、DSP150に知られている各ユーザグループ識別子に対するクライアントデバイス110と同じハッシュ関数を使用して、ハッシュ化出力を生成し得る。そのような実装形態では、DSP150は、DSP150によって知られているかまたは管理される各ユーザグループ識別子に対する確率的データ構造内のハッシュ化出力を検索し得る。DSP150は、要求に応答して提供するための候補デジタルコンポーネントのセットから、そのハッシュ化出力が確率的データ構造内に見出されない、対応するユーザグループ識別子を有さない各デジタルコンポーネントをフィルタリングし得る。たとえば、DSP150によって配信されるデジタルコンポーネントの少なくとも一部分は、デジタルコンポーネントに関するユーザグループに対する1つまたは複数のユーザグループ識別子を有し得る。特定の例では、特定の対の靴に関するコンテンツを有するデジタルコンポーネントは、対応するユーザグループ識別子として、「靴」グループ、「衣類」グループ、および「履物」グループに対する識別子を有し得る。
そのような実装形態は、確率的データ構造内の偽陽性率を利用し得る。本書を通して使用される「偽陽性率」という語句は、確率的データ構造に関連する偽陽性の予想される率または数を識別する値を指す。偽陽性率は、たとえば、確率的データ構造および確率的データ構造のサイズに対して選択されたアルゴリズムの関数およびパラメータであってよい。したがって、パラメータは、偽陽性率を調整するために調整され得る。
たとえば、確率的データ構造が1%の偽陽性率を有するBloomフィルタであると仮定する。DSP150が、100万個のユーザグループに対するデジタルコンポーネントのプロビジョニングに気付いており、それを管理すると仮定する。また、ユーザが数十のこれらのユーザグループのメンバーであると仮定する。そのような偽陽性率は、DSP150に知られているすべてのユーザグループ識別子のプールをおよそ1%のユーザグループ識別子に縮小し、それに対応して、フィルタリング後に選択プロセスに残る候補デジタルコンポーネントの数を低減させ得る。たとえば、1万個の偽陽性のユーザグループ識別子および10個の真の陽性ユーザグループ識別子が存在し得る。これは結果として、DSP150は100万個のユーザグループに対するデジタルコンポーネントを評価する時間リソースおよび計算リソースを無駄にしないため、DSP150に対するより良い計算性能、およびユーザ経験を改善するより高速の応答時間をもたらす。
DSP150は、確率的データ構造に基づいてデジタルコンポーネントをフィルタで除去した後、1つまたは複数のデジタルコンポーネントを選択する(318)。いくつかの実装形態では、DSP150は、1つまたは複数の選択されたデジタルコンポーネントの各々を分析してスコアリングすることによってデジタルコンポーネント(たとえば、上位N個のデジタルコンポーネント)をさらに選択し得る。このスコアリングは、たとえば、コンテキストデータ、デジタルコンポーネントの予想される性能、および/または追加情報に基づき得る。
DSP150は、1つまたは複数の選択されたデジタルコンポーネントに関するデータをSSP170に送信する(320)。たとえば、DSP150は、1つまたは複数の選択されたデジタルコンポーネントまたはデジタルコンポーネントを識別するデータ(たとえば、デジタルコンポーネントを提示するための命令を含むクリエイティブな要素)を送信することによって、SSP170のデジタルコンポーネントに対する要求に応答し得る。各デジタルコンポーネントに対して、DSP150はまた、デジタルコンポーネントに対する選択パラメータを生成または選択し得る。DSP150は、次いで、デジタルコンポーネントに対する選択パラメータおよびデータをSSP170に送信し得る。各デジタルコンポーネント(またはそのデータ)は、追加データ、たとえば、デジタルコンポーネントに対応するユーザグループ識別子を示すメタデータを含み得る。
いくつかの実装形態では、DSP150はまた、確率的データ構造とは無関係に、したがって、ユーザのグループメンバーシップとは無関係に、コンテキストデータに基づいて、1つまたは複数のデジタルコンポーネントを選択し得る。これらのデジタルコンポーネントは、コンテキストデジタルコンポーネントと呼ばれることもある。
SSP170は、デジタルコンポーネントのセットを選択する(322)。たとえば、1つまたは複数の選択されたデジタルコンポーネントに関するデータをDSP150から受信した後、SSP170はデジタルコンポーネント(たとえば、上位K個のデジタルコンポーネント)のセットを検討し選択し得る。たとえば、SSP170は、デジタルコンポーネントが様々な基準を満たすこと、たとえば、特定のタイプのコンテンツを含まないこと、データおよび/または表示サイズ要件を満たすことなどを確実にするために、デジタルコンポーネントのコンテンツおよびフォーマットを検討し得る。
いくつかの実装形態では、SSP170は、DSP150から受信された選択パラメータに少なくとも部分的に基づいて、デジタルコンポーネントを選択する。そのような実装形態では、SSP170は、DSP150から受信された選択パラメータの中から最高の選択パラメータを有するデジタルコンポーネントを選択し得る。
SSP170は、デジタルコンポーネントのセットをクライアントデバイス110に送信する(324)。たとえば、SSP170は、デジタルコンポーネント(たとえば、上位K個のデジタルコンポーネント)のセットを選択した後、ネットワーク105を介して、デジタルコンポーネント(またはデジタルコンポーネントに関するデータ)のセットを、クライアントデバイス110上で実行しているアプリケーション112に送信する。いくつかの実装形態では、SSP170は、デジタルコンポーネントのセットとともに、選択パラメータのセットを送信し得る。
いくつかの実装形態では、SSP170によって送信されるデジタルコンポーネントのリストは、選択パラメータに基づいて順序付けされ得る。これは、アプリケーション112が、実際の選択パラメータを知ることなく、デジタルコンポーネントを選択することを可能にする。デジタルコンポーネントのリストはまた、各デジタルコンポーネントに関して、デジタルコンポーネントに対応するユーザグループ識別子を示すデータを含み得る。これは、アプリケーション112が、ユーザがメンバーではないユーザグループに対するデジタルコンポーネントをフィルタで除去することを可能にする。
いくつかの実装形態では、このリストは、確率的データ構造および少なくとも1つのコンテキストデジタルコンポーネントに基づいて選択されたデジタルコンポーネントを含む。特定の実装形態では、このリストは、選択パラメータに基づいて、たとえば、最高から最低への順序の確率的データ構造に基づいて選択されたデジタルコンポーネント、および1つのコンテキストデジタルコンポーネント(たとえば、DSP150から受信されたすべてのコンテキストデジタルコンポーネントの中から最高の選択パラメータを有する1つのコンテキストデジタルコンポーネント)をリストの最後に含み得る。このようにして、確率的データ構造に基づいて選択されたデジタルコンポーネンのいずれもユーザの真正のユーザグループ識別子にマッチするユーザグループ識別子を有さない場合、アプリケーション112によってコンテキストデジタルコンポーネントが選択および提示され得る。
クライアントデバイス110上で実行しているアプリケーション112は、デジタルコンポーネントのフィルタリングされたサブセットを選択する(326)。クライアントデバイス上で実行しているアプリケーション112は、SSP170からデジタルコンポーネントのセットを受信した後、ユーザグループ識別子の第1のセット内の真正のユーザ識別子のうちの1つにマッチする、対応するユーザグループ識別子を有さない、1つまたは複数のデジタルコンポーネントをデジタルコンポーネントのセットからフィルタで除去することによって、デジタルコンポーネントのフィルタリングされたサブセットを選択し得る。たとえば、デジタルコンポーネントのセットから1つまたは複数のデジタルコンポーネントをフィルタで除去するために、アプリケーション112は、デジタルコンポーネントに対するユーザグループ識別子の各々を、たとえば、クライアントデバイス110内に記憶されたユーザグループリスト114内のユーザの真正のユーザグループ識別子と比較する。
各デジタルコンポーネントに対して、アプリケーション112は、デジタルコンポーネントに対する1つまたは複数のユーザグループ識別子をユーザに対する真正のユーザグループ識別子と比較し得る。ユーザグループ識別子のいずれもマッチしない場合、アプリケーション112は、デジタルコンポーネントのセットからデジタルコンポーネントをフィルタリングし得る。少なくとも1つのユーザグループ識別子がマッチする場合、アプリケーション112は、デジタルコンポーネントのセット内にそのデジタルコンポーネントを保持し得る。このフィルタリングは、真正のユーザグループ識別子のうちの1つにマッチする、対応するユーザグループ識別子を有さないデジタルコンポーネントのセット内の1つまたは複数のデジタルコンポーネントの識別につながり得る。次いで、識別された1つまたは複数のデジタルコンポーネントをデジタルコンポーネントのセットから除去することによって、デジタルコンポーネントのフィルタリングされたサブセットがアプリケーション112によって生成される。
クライアントデバイス110は、デジタルコンポーネントのフィルタリングされたサブセットから所与のデジタルコンポーネントを選択する(328)。いくつかの実装形態では、アプリケーション112は、選択パラメータに基づいて、デジタルコンポーネントスロット内に提示するために所与のデジタルコンポーネントを選択し得る。たとえば、ウェブサイト142は1つのデジタルコンポーネントスロットを有する。選択プロセスは、最高の選択パラメータを有するデジタルコンポーネントを選択するステップを含み得る。いくつかの実装形態では、アプリケーション112は、共有されないユーザ選好に基づいて、所与のデジタルコンポーネントを選択することができる。たとえば、ウェブブラウザアプリケーション112のユーザは、ユーザがキュレートしたトピックリストをアプリケーション112に提供し得る。そのような状況において、アプリケーション112は、選択パラメータとキュレートされたリスト内のトピックの組合せに基づいて、所与のデジタルコンポーネントを選択する。いくつかの実装形態では、順序付けされたリストが使用されるとき、アプリケーション112はリスト内でフィルタリングを克服した残りの上位デジタルコンポーネントを選択する。
アプリケーション112は、所与のデジタルコンポーネントを提示する(330)。たとえば、アプリケーション112は、発行者140の電子リソースで所与のデジタルコンポーネントを提示し得る。
図4は、クライアントデバイスのユーザが関連付けられた1つまたは複数のユーザグループに基づいて、確率的データ構造を生成するプロセス400を示す流れ図である。プロセス400の動作は、たとえば、クライアントデバイス110によって実装され得る。プロセス400の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。
ユーザがメンバーであるユーザグループを識別する真正のユーザグループ識別子の第1のセットを取得する(410)。図2を参照しながら前に述べたように、クライアントデバイス110のユーザは、1つまたは複数のユーザグループに関連付けられ得る。言い換えれば、クライアントデバイス110のユーザは、1つまたは複数のユーザグループのメンバーであり得る。各ユーザグループは、ユーザのプライバシーを維持するためにクライアントデバイス110上に記憶されたユーザグループ識別子によって識別される。たとえば、ウェブブラウザなどのアプリケーション112は、1つまたは複数のユーザグループ識別子を含むユーザグループリスト114を維持し、それをクライアントデバイス上に記憶し得る。これらの1つまたは複数のユーザグループ識別子は、ユーザが実際にメンバーである真正のユーザグループ識別子の第1のセットを形成する。
ユーザグループ識別子の第2のセットを生成するために、0個以上の真正のユーザグループ識別子をユーザグループ識別子の第1のセットから除去する(420)。いくつかの実装形態では、アプリケーションは、ユーザグループ識別子の第1のセットから除去されるべき、真正のユーザグループ識別子のうちの1つまたは複数をランダムにまたは疑似ランダムに選択する。たとえば、アプリケーション112によって維持されるユーザグループリスト114が5個のユーザグループ識別子S1、S2、S3、S4、およびS5を含むと仮定する。また、S2およびS5がランダムに選択および除去されると仮定する。そのようなシナリオでは、ユーザグループ識別子の第2のセットは、S1、S3およびS4を含む。いくつかの実装形態では、アプリケーション112は、たとえば、ターゲットプライバシーレベルに応じて、任意の真正のユーザグループ識別子を除去しなくてよい。
ユーザがメンバーではないユーザグループに対する1つまたは複数の偽のユーザグループ識別子をユーザグループ識別子の第2のセットに追加する(430)。いくつかの実装形態では、アプリケーション112は、ユーザグループ識別子の第2のセットに追加すべき、1つまたは複数の偽のユーザグループをランダムにまたは疑似ランダムに選択する。偽のユーザグループ識別子は、ユーザがメンバーではないユーザグループに対する。たとえば、選択された2つ以上の偽のユーザグループ識別子がS23およびS27を含み、ユーザがこれらのユーザグループ識別子に対応するグループのメンバーではないと仮定する。そのようなシナリオでは、ユーザグループ識別子の第2のセットは、S1、S3、S4、S23およびS27を含むことになる。
いくつかの実装形態では、偽のユーザグループ識別子は、実際にユーザグループをまったく表さない。たとえば、アプリケーション112は、DSP150によって管理されるすべてのユーザグループに気付かない可能性があることになる。ユーザがメンバーではないユーザグループから選択するのではなく、アプリケーション112は、単なるランダム英数字シーケンスであり得る偽のユーザグループ識別子を生成し得る。ユーザグループ識別子をこのように追加または除去することによって、アプリケーション112は各ユーザに対して差分プライバシーを達成し得る。
ユーザグループ識別子の第2のセット内の各ユーザグループ識別子に対してハッシュ化出力を生成する(440)。ハッシュは、ハッシュ化出力がすべてのユーザグループ識別子にわたって一様分布を有するように生成され得る。前に述べたように、ハッシュ関数は、ユーザグループ識別子の第2のセット内の各ユーザグループ識別子に対するハッシュ化出力を生成するために使用され得る。たとえば、アプリケーション112は、256ビットのダイジェスト長を有する暗号学的ハッシュ関数であるセキュアハッシュアルゴリズム(SHA256)を使用して実装された鍵付きハッシュメッセージ認証コード(HMAC)を使用して、ユーザグループ識別子の第2のセット内の各ユーザグループ識別子のハッシュ化256ビット(32バイト)出力を生成し得る。
グループ識別子の第2のセット内の各ユーザグループ識別子のハッシュ化出力を含む確率的データ構造を生成する(450)。いくつかの実装形態では、BloomフィルタまたはCuckooフィルタなどの確率的データ構造は、ユーザグループ識別子に関する情報をクライアントデバイス110からSSP170に送信するために使用され得る空間的に効率的なデータを生成するために使用される。たとえば、アプリケーション112によって維持されるユーザグループリスト114が200個のユーザグループ識別子を含むと仮定する。HMAC-SHA256を使用した単一のユーザグループ識別子に対するハッシュ化出力のサイズは、256ビットになる。そのような場合、ユーザグループリスト114内のすべての200個のユーザグループ識別子のハッシュ化出力の合計サイズは51,200ビット(すなわち、6.4kB)になる。1%の偽陽性確率を有するBloomフィルタを使用するとき、各ユーザグループ識別子は10ビット未満で表され得る。そのような場合、ユーザグループリスト114内の200個のユーザグループ識別子は、2000ビット(すなわち、250バイト)を使用して表され得る。
いくつかの実装形態では、アプリケーション112は、アプリケーション112によって送信されたデジタルコンポーネントに対する各要求に対して新しい確率的データ構造を生成する。このようにして、データ構造は、ランダムにまたは疑似ランダムに追加および除去されたユーザグループ識別子に基づいて、各要求に対して異なる。これは、DSP150がユーザグループメンバーシップに基づいてユーザを追跡することを防ぐ。DSP150のユーザグループ識別子は、場合によっては、確率的データ構造を変更することによって除去され得るため、DSP150のユーザグループ識別子は少なくとも1つの確率的データ構造で表されることになる可能性がある。いくつかの実装形態では、アプリケーション112は、アプリケーション112が訪れる各ドメインに対して新しい確率的データ構造を生成するが、同じドメインからの複数の要求に対して同じ確率的データ構造を使用する。
図5は、上記で説明した動作を実行するために使用され得る例示的なコンピュータシステム500のブロック図である。システム500は、プロセッサ510、メモリ520、記憶デバイス530、および入出力デバイス540を含む。構成要素510、520、530、および540の各々は、たとえば、システムバス550を使用して相互接続され得る。プロセッサ510は、システム500内で実行するための命令を処理することが可能である。いくつかの実装形態では、プロセッサ510は、シングルスレッドプロセッサである。別の実装形態では、プロセッサ510は、マルチスレッドプロセッサである。プロセッサ510は、メモリ520内または記憶デバイス530上に記憶された命令を処理することが可能である。
メモリ520は、情報をシステム500内に記憶する。一実装形態では、メモリ520は、コンピュータ可読媒体である。いくつかの実装形態では、メモリ520は、揮発性メモリユニットである。別の実装形態では、メモリ520は、不揮発性メモリユニットである。
記憶デバイス530は、システム500に対する大容量記憶装置を提供することが可能である。いくつかの実装形態では、記憶デバイス530は、コンピュータ可読媒体である。様々な異なる実装形態では、記憶デバイス530は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワーク上で共有される記憶デバイス、または何らかの他の大容量記憶デバイスを含み得る。
入出力デバイス540は、システム500のための入出力動作を提供する。いくつかの実装形態では、入出力デバイス540は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入出力デバイスは、入力データを受信し、出力データを外部デバイス560、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成された、ドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなど、他の実装形態が使われてもよい。
例示的な処理システムが図5で説明されているが、本明細書で説明した主題および機能的動作の実装形態は、他のタイプのデジタル電子回路において、もしくは本明細書で開示する構造およびそれらの構造等価物を含む、コンピュータソフトウェア、ファームウェア、または、ハードウェアにおいて、またはそれらのうちの1つまたは複数の組合せにおいて実装され得る。
主題の実施形態および本明細書で説明する動作は、デジタル電子回路で、または本明細書で開示する構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。本明細書で説明する題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、(1つまたは複数の)コンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替的に、または追加として、プログラム命令は、データ処理装置によって実行するための適切な受信機装置への送信のために情報を符号化するために生成された、人工的に生成された伝搬信号、たとえば、機械生成電気、光学、または電磁信号上で符号化することができる。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。さらに、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号において符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
本明細書で説明する動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたまたは他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは組合せを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つもしくは複数の組合せを構成するコードも含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティングインフラストラクチャおよびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む任意の形態のプログラミング言語で書かれ得、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとして、を含む任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムにおけるファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書に記憶された1つもしくは複数のスクリプト)を保持するファイルの一部に、当該のプログラムに専用の単一のファイルに、または、複数のコーディネートされたファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイル)に、記憶することができる。コンピュータプログラムは、1つのコンピュータ上で、または、1つのサイトに配置されるかもしくは複数のサイトにわたって分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
本明細書で説明するプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによってアクションを実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローは、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行され得、装置は、それらとしても実装され得る。
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から命令およびデータを受信する。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、たとえば磁気、光磁気ディスク、もしくは光ディスクなど、データを記憶するための1つもしくは複数の大容量記憶デバイスも含み、あるいは、1つもしくは複数の大容量記憶デバイスからデータを受信する、それにデータを転送する、またはその両方のために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、ほんの数例を挙げると、別のデバイス、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補足され得るか、または専用論理回路内に組み込まれ得る。
ユーザとの対話を提供するために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するための、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびに、キーボード、および、ユーザがコンピュータに入力を提供することができる、たとえば、マウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られてもよい。加えて、コンピュータは、文書をユーザによって使用されるデバイスに送信し、文書をそのデバイスから受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブページをそのウェブブラウザに送信することによって、ユーザと対話することができる。
本明細書で説明する主題の実施形態は、バックエンド構成要素、たとえば、データサーバを含む、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含む、またはフロントエンド構成要素、たとえば、それを通じてユーザが本明細書で説明する主題の一実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含む、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、たとえば、通信ネットワークなど、任意の形態または媒体のデジタルデータ通信によって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバとは、一般に、互いに離れており、典型的には、通信ネットワークを通して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアントサーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示し、そのユーザからユーザ入力を受信する目的で)データ(たとえば、HTMLページ)をクライアントデバイスに送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
本明細書は多くの特定の実装形態の詳細を含んでいるが、これらは発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明するいくつかの特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈で説明する様々な特徴はまた、複数の実施形態において別々にまたは任意の好適な部分組合せにおいて実装され得る。さらに、特徴はいくつかの組合せにおいて働くものとして上記で説明され、そのようなものとして最初に特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから除去される場合があり、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象とし得る。
同様に、動作は、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、そのような動作が図示された特定の順序でもしくは順番に実行されること、またはすべての例示された動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムは一般に、単一のソフトウェア製品に一緒に組み込まれるか、または複数のソフトウェア製品にパッケージ化されることがあると理解されたい。
以上、本主題の特定の実施形態について記載した。他の実施形態は、以下の特許請求の範囲の範囲内にある。場合によっては、特許請求の範囲に列挙されるアクションは、異なる順序で行われ、それでも望ましい結果を達成し得る。加えて、添付の図面に示されるプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または順番を必要としない。いくつかの実装形態では、マルチタスキングおよび平行処理が有利であり得る。