特許第6989628号(P6989628)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許6989628将来のアクションのためのユーザインターフェースデータキャッシングの最適化
<>
  • 特許6989628-将来のアクションのためのユーザインターフェースデータキャッシングの最適化 図000002
  • 特許6989628-将来のアクションのためのユーザインターフェースデータキャッシングの最適化 図000003
  • 特許6989628-将来のアクションのためのユーザインターフェースデータキャッシングの最適化 図000004
  • 特許6989628-将来のアクションのためのユーザインターフェースデータキャッシングの最適化 図000005
  • 特許6989628-将来のアクションのためのユーザインターフェースデータキャッシングの最適化 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6989628
(24)【登録日】2021年12月6日
(45)【発行日】2022年1月5日
(54)【発明の名称】将来のアクションのためのユーザインターフェースデータキャッシングの最適化
(51)【国際特許分類】
   G06F 13/00 20060101AFI20211220BHJP
【FI】
   G06F13/00 530A
   G06F13/00 540B
【請求項の数】20
【外国語出願】
【全頁数】27
(21)【出願番号】特願2020-3688(P2020-3688)
(22)【出願日】2020年1月14日
(62)【分割の表示】特願2018-542767(P2018-542767)の分割
【原出願日】2017年6月7日
(65)【公開番号】特開2020-74154(P2020-74154A)
(43)【公開日】2020年5月14日
【審査請求日】2020年2月10日
(31)【優先権主張番号】15/392,894
(32)【優先日】2016年12月28日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ファン・ジャン
(72)【発明者】
【氏名】ペン・ジュアン
(72)【発明者】
【氏名】イ・メン
【審査官】 木村 雅也
(56)【参考文献】
【文献】 特開2016−212595(JP,A)
【文献】 特開2015−064715(JP,A)
【文献】 特表2015−531925(JP,A)
【文献】 米国特許出願公開第2015/0200994(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
クライアントデバイスであって、
1つまたは複数のモバイルアプリケーションのためのユーザインターフェースを提示するディスプレイと、
前記1つまたは複数のモバイルアプリケーションのためのデータ通信ネットワークを介して受信されたデータを記憶するキャッシュを有するデータストレージデバイスと、
前記データストレージデバイスおよび前記ディスプレイと通信するデータ処理装置と
を備え、前記データ処理装置が、
前記ディスプレイによって提示される所与のユーザインターフェースにおいて前記クライアントデバイスのユーザが実行すると予測される次のアクションを、前記所与のユーザインターフェースに提示されているデータのユーザインターフェースコンテキストに基づき決定する動作であって、前記ユーザインターフェースコンテキストは、前記所与のユーザインターフェースに提示されているデータが属するグループおよび前記所与のユーザインターフェースに提示されているデータのタイプのうちの少なくとも1つを含む、動作と、
前記予測される次のアクションが、前記予測される次のアクションの発生に応答して、アプリケーションのためのコンピュータ可読コードを用いて前記ディスプレイにおいてコンテンツを提示すると決定する動作と、
前記予測される次のアクションを検出する前に、前記アプリケーションのための前記コンピュータ可読コードを取得する動作と、
前記データストレージデバイスに前記コンピュータ可読コードを記憶する動作と
を含む複数の動作を実行する、クライアントデバイス。
【請求項2】
前記予測される次のアクションを決定する動作が、
前記予測される次のアクションを含む複数のアクションの各々に対して、前記アクションが実行される確率を決定する動作と、
前記予測される次のアクションに対する前記確率がしきい値よりも高いと決定する動作と
を含む、請求項1に記載のクライアントデバイス。
【請求項3】
前記複数の動作が、
前記しきい値よりも高い確率を有する各アクションのためのそれぞれのコンピュータ可読コードを取得する動作を含む、請求項2に記載のクライアントデバイス。
【請求項4】
前記予測される次のアクションに対する前記確率が、前記ユーザインターフェースコンテキストに基づく、請求項2に記載のクライアントデバイス。
【請求項5】
前記予測される次のアクションに対する前記確率が、1つまたは複数の機械学習モデルを用いて決定される、請求項2に記載のクライアントデバイス。
【請求項6】
前記1つまたは複数の機械学習モデルが、前記1つまたは複数のユーザインターフェースにおいてユーザによって実行されるアクションを指定する履歴アクションデータを用いて訓練される、請求項5に記載のクライアントデバイス。
【請求項7】
前記複数の動作が、
前記予測される次のアクションの検出に応答して前記ユーザインターフェースにより提示されることになるデータを、前記予測される次のアクションを検出する前に取得する動作と、
前記データを前記データストレージデバイスに記憶する動作と
を含む、請求項1に記載のクライアントデバイス。
【請求項8】
前記予測される次のアクションが、コンテンツを要求することを含み、
前記アプリケーションのための前記コンピュータ可読コードが、前記コンテンツを提示するためのコードを含む、請求項1に記載のクライアントデバイス。
【請求項9】
前記アプリケーションのための前記コンピュータ可読コードが1つまたは複数のスクリプトを含む、請求項1に記載のクライアントデバイス。
【請求項10】
1つまたは複数のデータ処理装置によって実行される方法であって、
クライアントデバイスのディスプレイによって提示される所与のユーザインターフェースにおいて前記クライアントデバイスのユーザが実行すると予測される次のアクションを、前記所与のユーザインターフェースに提示されているデータのユーザインターフェースコンテキストに基づき決定するステップであって、前記ユーザインターフェースコンテキストは、前記所与のユーザインターフェースに提示されているデータが属するグループおよび前記所与のユーザインターフェースに提示されているデータのタイプのうちの少なくとも1つを含む、ステップと、
前記予測される次のアクションが、前記予測される次のアクションの発生に応答して、アプリケーションのためのコンピュータ可読コードを用いて前記ディスプレイにおいてコンテンツを提示すると決定するステップと、
前記予測される次のアクションを検出する前に、前記アプリケーションのための前記コンピュータ可読コードを取得するステップと、
前記クライアントデバイスのデータストレージデバイスに前記コンピュータ可読コードを記憶するステップと
を含む、方法。
【請求項11】
前記予測される次のアクションを決定するステップが、
前記予測される次のアクションを含む複数のアクションの各々に対して、前記アクションが実行される確率を決定するステップと、
前記予測される次のアクションに対する前記確率がしきい値よりも高いと決定するステップと
を含む、請求項10に記載の方法。
【請求項12】
前記しきい値を満たす確率を有する各アクションのためのそれぞれのコンピュータ可読コードを取得するステップをさらに含む、請求項11に記載の方法。
【請求項13】
前記予測される次のアクションに対する前記確率が、前記所与のユーザインターフェースに対する前記ユーザインターフェースコンテキストに基づく、請求項11に記載の方法。
【請求項14】
前記予測される次のアクションに対する前記確率が、1つまたは複数の機械学習モデルを用いて決定される、請求項11に記載の方法。
【請求項15】
前記1つまたは複数の機械学習モデルが、前記1つまたは複数のユーザインターフェースにおいてユーザによって実行されるアクションを指定する履歴アクションデータを用いて訓練される、請求項14に記載の方法。
【請求項16】
前記予測される次のアクションの検出に応答して前記ユーザインターフェースにより提示されることになるデータを、前記予測される次のアクションを検出する前に取得するステップと、
前記データを前記データストレージデバイスに記憶するステップと
をさらに含む、請求項10に記載の方法。
【請求項17】
前記予測される次のアクションが、電子リソースを要求することを含み、
前記アプリケーションのための前記コンピュータ可読コードが、前記電子リソースのコンテンツを提示するためのコードを含む、請求項10に記載の方法。
【請求項18】
前記アプリケーションのための前記コンピュータ可読コードが1つまたは複数のスクリプトを含む、請求項10に記載の方法。
【請求項19】
命令を含む非一時的コンピュータ可読記録媒体であって、
前記命令は、データ処理装置により実行されたときに、前記データ処理装置に複数の動作を実行させ、前記複数の動作が、
クライアントデバイスのディスプレイによって提示される所与のユーザインターフェースにおいて前記クライアントデバイスのユーザが実行すると予測される次のアクションを、前記所与のユーザインターフェースに提示されているデータのユーザインターフェースコンテキストに基づき決定する動作であって、前記ユーザインターフェースコンテキストは、前記所与のユーザインターフェースに提示されているデータが属するグループおよび前記所与のユーザインターフェースに提示されているデータのタイプのうちの少なくとも1つを含む、動作と、
前記予測される次のアクションが、前記予測される次のアクションの発生に応答して、アプリケーションのためのコンピュータ可読コードを用いて前記ディスプレイにおいてコンテンツを提示すると決定する動作と、
前記予測される次のアクションを検出する前に、前記アプリケーションのための前記コンピュータ可読コードを取得する動作と、
前記クライアントデバイスのデータストレージデバイスに前記コンピュータ可読コードを記憶する動作と
を含む、非一時的コンピュータ可読記録媒体。
【請求項20】
前記予測される次のアクションを決定する動作が、
前記予測される次のアクションを含む複数のアクションの各々に対して、前記アクションが実行される確率を決定する動作と、
前記予測される次のアクションに対する前記確率がしきい値よりも高いと決定する動作と
を含む、請求項19に記載の非一時的コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、将来のアクションのためのユーザインターフェースデータキャッシングの最適化に関する。
【背景技術】
【0002】
インターネットは、世界中でユーザ間のデータおよび取引の交換を容易にする。このデータの交換により、データプロバイダは様々な種類のコンテンツを様々なユーザに提供できる。データは、電子文書(たとえば、ウェブページ)上、およびアプリケーション(たとえば、モバイルアプリ)内にデータを公開することを含む様々な方法で提供することが可能である。データは、一般にユーザ要求に応答して、たとえばユーザがウェブページへのリンクを選択することに応答して、クライアントデバイスに提供される。各要求は、データプロバイダが適切なデータを識別し、かつインターネットを介してクライアントデバイスにデータを送信するために時間がかかる場合がある。
【発明の概要】
【課題を解決するための手段】
【0003】
本明細書は、ユーザが実行すると決定した、たとえば実行すると予測された、次のアクションに基づいて、クライアントデバイスにおいてデータをプリキャッシングするためのシステム、方法、デバイス、および他の技法を説明する。
【0004】
一般に、本明細書に記載される主題の1つの革新的な態様は、1つまたは複数のモバイルアプリケーションのためのユーザインターフェースを提示するディスプレイを含むクライアントデバイスにおいて実装することが可能である。クライアントデバイスはまた、1つまたは複数のモバイルアプリケーションのためのデータ通信ネットワークを介して受信されたデータを記憶するキャッシュを有するデータストレージデバイスを含むことが可能である。クライアントデバイスはまた、データストレージデバイスおよびディスプレイと通信するデータ処理装置を含むことが可能である。データ処理装置は、所与のアプリケーションに関するディスプレイによって提示されている所与のユーザインターフェースのユーザインターフェースコンテキストを決定することが可能である。所与のユーザインターフェースのユーザインターフェースコンテキストは、(i)所与のユーザインターフェースに提示されているデータが属するグループ、または(ii)所与のユーザインターフェースに提示されているデータのタイプのうちの少なくとも1つを指定することが可能である。データ処理装置は、ユーザインターフェースコンテキストに基づいて、クライアントデバイスのユーザが所与のユーザインターフェースにおいて実行する予測された次のアクションを決定することが可能である。データ処理装置は、データ通信ネットワークを介して、および予測された次のアクションを検出する前に、ユーザが予測された次のアクションを実行することに応答して提示される次のアクションデータの要求を送信することが可能である。データ処理装置は、データ通信ネットワークを介して次のアクションデータを受信し、次のアクションデータをキャッシュに記憶することが可能である。この態様の他の実装形態は、コンピュータストレージデバイス上で符号化された、方法のアクションを実行するように構成される、対応する装置、方法、システム、およびコンピュータプログラムを含む。
【0005】
これらおよび他の実装形態は、以下の特徴のうちの1つまたは複数を任意選択で含むことが可能である。いくつかの態様では、クライアントデバイスのデータ処理装置は、所与のユーザインターフェースにおいて予測されたアクションの発生を検出し、キャッシュから次のアクションデータを取得し、次のアクションデータを提示するためにユーザインターフェースを更新することが可能である。
【0006】
いくつかの態様では、ユーザインターフェースコンテキストは、所与のユーザインターフェースに提示されているデータのロールアップレベルを指定する。ロールアップレベルは、データが集約される階層レベルを指定することが可能である。
【0007】
いくつかの態様では、予測されたアクションの次のアクションは、所与のユーザインターフェースにおいて実行できる可能なアクションのセットの各アクションが、所与のユーザインターフェースが、決定されたユーザインターフェースコンテキストと一致するコンテキストを有した場合のユーザを含む1人または複数のユーザによって実行された回数に基づいて決定される。
【0008】
いくつかの態様では、クライアントデバイスのデータ処理装置は、予測された次のアクションを決定するためのトリガイベントを検出することが可能である。予測された次のアクションは、トリガイベントの検出に応答して決定することが可能である。
【0009】
いくつかの態様では、クライアントデバイスのデータ処理装置は、ユーザインターフェースコンテキストに基づいて予測された次のアクションを決定する予測モデルを取得し、予測モデルを予測された次のアクションと確率との間のマッピングに変換することが可能である。各マッピングは、それぞれの予測された次のアクションと、所与のユーザインターフェースコンテキストに対して発生するそれぞれの予測された次のアクションの確率との間のマッピングとすることが可能である。
【0010】
いくつかの態様では、クライアントデバイスのデータ処理装置は、(i)予測モデルごとの予測精度、(ii)予測モデルごとのキャッシュヒット率、(iii)各予測モデルによって提供されるレイテンシの低減、または(iv)所与のユーザインターフェースにおいてユーザによって実行された履歴ユーザインタラクションの数のうちの少なくとも1つに基づいて予測モデルのセットから予測モデルを選択することが可能である。
【0011】
いくつかの態様では、クライアントデバイスのデータ処理装置は、次のアクションデータが所与のアプリケーションとは異なる第2のアプリケーションによって提示されることを決定することが可能である。予測された次のアクションを検出する前に、データ処理装置は、第2のアプリケーションを実行するためのコードを取得し、そのコードをキャッシュに記憶することが可能である。
【0012】
本明細書に記載される主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実装することが可能である。データを取得し、ユーザに提示する際のレイテンシは、ユーザの次のアクション、たとえばアプリケーションとのユーザの次のユーザインタラクションに応答して要求される可能性が高いデータをプリキャッシュすることによって低減することが可能である。ウェブアプリケーションをロードする際のレイテンシは、ユーザの次のアクションに応答して要求されたデータを提示するために使用されるウェブアプリケーションを識別し、ウェブアプリケーションをロードするために使用されるコード、たとえばスクリプトを取得することによって低減することが可能である。同様に、モバイルアプリケーションをロードする際のレイテンシは、ユーザの次のアクションに応答して要求されたデータを提示するために使用されるモバイルアプリケーションを識別し、ユーザのクライアントデバイスのバックグラウンドにアプリケーションをロードすることによって低減することが可能である。クライアントデバイスは、要求がネットワークを横切ること、サーバが要求されたデータを識別すること、および要求されたデータがクライアントデバイスに向かうことを待つ必要がないため、データをプレキャッシングすることによってデータをより速く提示することが可能になる。
【0013】
本明細書に記載された技法は、アプリケーション(または別の異なるアプリケーション)内で実行される今後のアクションを予測するためにアプリケーションとのユーザインタラクションのクライアント側評価を可能にする。その予測により、データが必要とされるときにクライアントデバイスにすでに記憶されているように必要とされる前にクライアントデバイスが今後のアクションをサポートするために必要なデータをサーバに要求することが可能になる。したがって、この技法は、異なるユーザインターフェースへの遷移が、通常であればリアルタイム遷移をサポートするために十分に速くダウンロードできない量のデータを必要とする場合があっても、第1のユーザインターフェースから異なるユーザインターフェースへのリアルタイム遷移を可能にする。データの評価はまた、(たとえば、第1のユーザインターフェースの使用を中断することなしに)クライアントデバイスのバックグラウンドにおいて実行され、その結果、第1のアプリケーションのユーザ体験は低下しない。さらに、本明細書に記載された技法は、コンピューティングデバイスの使用なしには利用できないリアルタイムデータ(たとえば、モバイルデバイスとのユーザインタラクション)を利用する。
【0014】
本明細書に記載された技法はまた、ユーザインタラクションに応答して更新される(たとえば、新しいデータで、フィルタリングされたデータで、または変更されたデータで)ユーザインターフェース間の遷移を改善するためにモバイルデバイスの限定されたキャッシュを効果的かつ効率的に使用する。本明細書に記載された次のアクションモデルを使用すると、キャッシュに記憶されたデータが実際に要求される可能性が高まる。これにより、ユーザが次のユーザインターフェースを要求した時点でユーザインターフェースとのユーザインタラクションをサポートするためにモバイルデバイスがデータをダウンロードしなければならない可能性が低減される。
【0015】
モバイルデバイスのプロセッサ、Wi-Fiまたはモバイルネットワークトランシーバ、あるいは他の構成要素へのアクセスを取得することを含むモバイルデータのダウンロードを実行することに関連するかなりの量のセットアップおよび分解アクティビティがあってよいので、データを受信し、そのデータを適切な場所に記憶し、データのダウンロードを事前に実行することによってモバイルデバイスが異なるユーザインターフェースに遷移しているときに、時間を節約し、モバイルデバイスに課される要求を低減する。本明細書に記載された技法は、モバイルデバイスが、データがダウンロードされる回数を減らすために他のデータと同時に将来のデータをダウンロードすることを可能にし、したがってモバイルデバイスがセットアップおよび分解アクティビティを複数回実行する必要がある場合に発生するモバイルデバイスに課される要求を低減する。
【0016】
一部のネイティブアプリケーションは、アプリケーションの一部であり、したがってモバイルデバイスに記憶されてもよいデータを使用して、初期ユーザインターフェースを生成する。しかしながら、初期ユーザインターフェースと後続のユーザインターフェースの重要な部分は、ネットワークサーバからダウンロードされたデータに基づいて動的に作成される。したがって、ユーザインターフェースの流体使用は、モバイルデバイスへのデータの効率的な転送を必要とする。ハードウェアおよびネットワークの制約により、データが使用されるユーザインターフェースがまだ要求されていないときに、データのすべて(または実質的な部分)が転送されると、ユーザインターフェースの更新が遅れる場合がある。
【0017】
前述の主題の様々な特徴および利点を図面に関して以下に説明する。さらなる特徴および利点は、本明細書および特許請求の範囲に記載される主題から明らかである。
【図面の簡単な説明】
【0018】
図1】データ配信システムがクライアントデバイスにデータを配信する例示的な環境を示す図である。
図2】データが提示される例示的なユーザインターフェースを示す図である。
図3】予測された次のアクションを決定し、予測された次のアクションに対する次のアクションデータをプリキャッシュするための例示的なプロセスのフローチャートである。
図4】予測された次のアクションを決定し、予測された次のアクションに対する次のアクションデータをプリキャッシュするための例示的なプロセスのフローチャートである。
図5】予測された次のアクションを決定するために使用される予測モデルのパフォーマンスメトリックを維持するための例示的なプロセスのフローチャートである。
【発明を実施するための形態】
【0019】
一般に、本明細書に記載されたシステムおよび技法は、ユーザがデータを要求する前にデータをプリキャッシュすることによってデータを取得および提示する際のレイテンシを低減させることが可能である。システムは、ユーザがアプリケーションのユーザインターフェース、たとえばモバイルデバイス上で実行するモバイルアプリケーションまたはウェブブラウザにおいて実行するウェブアプリケーションにおいて実行する可能性のある1つまたは複数の予測された次のアクション(たとえば、将来のアクション)を決定することが可能である。予測された次のアクションをユーザが実際に実行し、ユーザがアクションを実行する前にユーザのクライアントデバイスにおいてデータをプリキャッシュする場合、本システムは、ユーザインターフェース(または、アプリケーションがデータを提示するために遷移する別のユーザインターフェース)に提示されるデータを識別することが可能である。
【0020】
本システムは、ユーザインターフェースのコンテキストに基づいて予測された次のアクションを決定することが可能である。たとえば、ユーザは、特定のタイプのデータがユーザインターフェースに提示されているとき、特定のアクションを実行する可能性がより高くてもよい。予測された次のアクションを決定するために使用されるユーザインターフェースコンテキストデータは、たとえば提示されているデータのタイプ、データが属するグループ、データのロールアップレベル、現在提示されているアプリケーションのタブ、ユーザインターフェースのステータス、および/または他の適切なコンテキストデータを含むことが可能である。
【0021】
本システムは、ユーザがユーザインターフェースを閲覧しているアクション、および/または他のユーザが過去に実行したアクションに基づいて、予測された次のアクションを決定することが可能である。たとえば、本システムは、所与のユーザインターフェースにおいて実行することが可能であるアクションのセット(たとえば、ユーザインタラクション)に対して、そのアクションがユーザによって実行された回数を維持することが可能である。本システムはまた、1つまたは複数のユーザインターフェースコンテキストに対して、ユーザインターフェースがユーザインターフェースコンテキストに一致するコンテキストを有する場合に、各アクションが実行された回数を維持することが可能である。たとえば、1つのユーザインターフェースコンテキストは、特定のデータタイプを有する特定のデータのグループの提示によって定義されてもよい。このユーザインターフェースコンテキストでは、本システムは、ユーザインターフェースが特定のデータタイプを有する特定のデータのグループを提示していたときに、各アクションが実行された回数のカウントを維持することが可能である。いくつかの実装形態では、本システムは、予測された次のアクションとして、ユーザインターフェースが特定のデータタイプを有する特定のデータのグループを提示していたときに過去に最も実行されたアクションのうちの1つまたは複数を選択してもよい。
【0022】
いくつかの実装形態では、予測された次のアクションは、現在ユーザインターフェースを提示しているアプリケーションとは異なるアプリケーションを使用してデータを提示することを含んでもよい。この例では、本システムは、予測された次のアクションが実際に実行された場合、アプリケーションをロードする際のレイテンシを低減させるためにクライアントデバイスにおいて異なるアプリケーションをロードするためのコードをプリキャッシュしてもよい。たとえば、本システムは、予測された次のアクションによって必要とされるデータを提示するために他のウェブアプリケーションが使用される場合、クライアントデバイスによって現在提示されているウェブページにおいて別のウェブアプリケーションをロードするために使用されるスクリプトをプリキャッシュしてもよい。これにより、クライアントデバイスは、同じウェブページ内(または、異なるウェブページ内)のウェブアプリケーション間を流動的にかつ不必要な遅延なしに遷移できる。本システムはまた、データを取得するためにクライアントデバイスに課される遅延および不必要な要求を回避するために他のウェブアプリケーションにおいて提示されるデータをプリキャッシュすることが可能である。
【0023】
いくつかの実装形態では、本明細書に記載された技法は、第1のデバイスとは異なる第2のデバイスのユーザインターフェースのコンテキストに基づいて、またはより一般的には、第2のデバイスとのユーザインタラクションに基づいて、第1のデバイスのアプリケーションについてのデータをプリキャッシュするために使用することが可能である。たとえば、ユーザが別のデバイスにおいて実行する可能性のあるアクションを識別し、他のデバイスにおいて識別されたアクションのデータをプリキャッシュするために人工知能(AI)アシスタントとのユーザインタラクション(たとえば、人工知能アシスタントに聞かれる質問、またそれはそれに提供される要求)を使用することが可能である。特定の例では、ユーザは、AIアシスタントに特定の場所の近くの道を走るように頼んでもよい。それに応答して、システムは、ユーザがウェアラブルデバイス(たとえば、スマートウォッチ)またはスマートフォン上のアクティビティ監視アプリケーションにアクセスし、ウェアラブルデバイスまたはスマートフォンにおいてアクティビティ監視アプリケーションのデータをプリキャッシュする可能性が高いと決定することが可能である。
【0024】
デバイス間のアクション予測はまた、スマートカー(たとえば、車載コンピューティング機能を有する自動車)、自律走行車、スマートテレビ、スマート機器、および/または他の適切なスマートデバイスなどの他のデバイスに適用することが可能である。たとえば、本システムは、ユーザが特定のレストランについてAIアシスタントに車載コンピューティングデバイス、車のナビゲーションシステム、または自律走行車のナビゲーションシステムのアプリケーション用の特定のレストランへのナビゲーション命令をプリキャッシュするように頼んだことを指定するデータを使用してもよい。
【0025】
図1は、データ配信システム110がクライアントデバイス150にデータを配信する例示的な環境100である。データ配信システム110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどのデータ通信ネットワーク130を介してクライアントデバイス150にデータを送信することが可能である。クライアントデバイス150は、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、スマートウォッチ、ならびに/または他のタイプのモバイルおよび非モバイルコンピューティングデバイスを含んでもよい。
【0026】
クライアントデバイス150は、1つまたは複数のアプリケーション154を含むことが可能である。たとえば、クライアントデバイスは、1つまたは複数のモバイルアプリケーション(たとえば、モバイルアプリ)を含むことが可能である。モバイルアプリケーションは、特定のタイプのデバイスまたは特定のプラットフォーム用に開発されたネイティブアプリケーションであってよい。アプリケーション154は、ウェブブラウザ内で実行するウェブアプリケーションを含むことが可能である。ウェブアプリケーションは、クライアントデバイス150にダウンロードされ、ウェブアプリケーションを含むウェブページがウェブブラウザにおいて開かれたときにウェブブラウザにおいて実行されるコード、たとえばスクリプトを含んでもよい。
【0027】
各アプリケーション154は、クライアントデバイス150のディスプレイによって提示される1つまたは複数のユーザインターフェース152を生成することが可能である。ユーザインターフェース152は、画像ビデオ、グラフなどのデータおよび他のコンテンツを提示することが可能である。ユーザインターフェース152はまた、ユーザがアプリケーション内(またはアプリケーション外)をナビゲートすること、データを修正すること、データをソートすること、データをフィルタリングすることなど、追加データまたは異なるデータを要求することと、および/あるいは他の適切なアクションを実行することとを可能にするユーザインターフェース要素を含むことが可能である。たとえば、ユーザインターフェース152は、ユーザが表示画面の間をナビゲートすることと、データを修正することと、データをソートすることと、データをフィルタリングすることとを可能にするボタン、アイコン、スライダバー、および他の要素を含んでもよい。ユーザインターフェース152は、異なるデータまたは異なるタイプのデータを提示する複数のタブを含んでもよい。ユーザは、所望のタブを選択することによってタブ間をナビゲートすることが可能である。別の例では、ユーザインターフェースは、ユーザが特定の日付および時間範囲にデータをフィルタリングすることを可能にする日付および時間範囲セレクタを含んでもよい。例示的なユーザインターフェースが図2に示され、以下で説明される。本明細書の目的のためにユーザインターフェースが一般的に説明される。しかしながら、これらの技法は、クライアントデバイスの状態および/またはクライアントデバイスとの以前のインタラクションなどのクライアントデバイスに関する他のデータに適用することが可能である。さらに、本明細書を通じて使用されるようにユーザインターフェースという用語は、グラフィカルユーザインターフェースに限定されず、可聴ユーザインターフェースおよび他のユーザインターフェースを含むことが可能である。
【0028】
アプリケーション154は、データ配信システム110から受信したデータをユーザインターフェース152に提示することが可能である。データ配信システム110は、1つまたは複数のアプリケーション154のデータを維持し、クライアントデバイス150から受信した要求に応じてアプリケーション154にデータを提供することが可能である。たとえば、クライアントデバイス150がアプリケーション154をロードする場合、アプリケーション154は、ネットワーク130を介してデータ配信システム110に要求を送信することが可能である。要求は、アプリケーション154によって提示されるデータを指定することが可能である。さらに、ユーザは、追加データまたは異なるデータを要求するためにアプリケーション154によって生成され提示されたユーザインターフェース152を使用することが可能である。次に、アプリケーション154は、データ配信システム110にデータを要求することが可能である。
【0029】
クライアントデバイス150はまた、高速キャッシュ156を含む。高速キャッシュ156は、クライアントデバイス150にインストールされた1つまたは複数の高速メモリデバイスを含むことが可能である。たとえば、高速キャッシュ156は、スタティックランダムアクセスメモリ(SRAM)および/またはソリッドステートメモリデバイスを含むことが可能である。クライアントデバイス150はまた、ハードドライブ、フラッシュメモリなどの他のメモリストレージデバイスを含むことが可能である。
【0030】
高速キャッシュ156は、クライアントデバイス150のユーザによってまだ要求されていないデータを含むアプリケーション154のためのデータを記憶することが可能である。たとえば、アプリケーション154(または、別の専用アプリケーション)は、ユーザが実行する可能性のある1つまたは複数の予測された次のアクションを決定することが可能である。予測された次のアクションは、ユーザによって実行される少なくとも1つのしきい値確率を有するアクションであってもよい。アプリケーション154はまた、ユーザが予測された次のアクションを実行する場合に提示されるデータをデータ配信システム110に要求することが可能である。アプリケーション154は、ユーザが予測された次のアクションを実行する前に、また人間の介入なしにこの要求を送信することが可能である。たとえば、アプリケーション154は、トリガイベント(たとえば、日付および時間範囲セレクタの選択)に応答して予測された次のアクションを自動的に決定し、予測された次のアクションの決定に応じてデータを要求することが可能である。アプリケーション154がデータを受信すると、アプリケーション154は、ユーザが予測された次のアクションを後で実行する場合、データが迅速に提示されるように受信したデータを高速キャッシュ156に記憶することが可能である。
【0031】
いくつかの実装形態では、予測された次のアクションのために受信されたデータは、ハードドライブ、フラッシュメモリ、または高速キャッシュ156とは異なる他のメモリストレージデバイスに記憶されてもよい。そのようなメモリを使用することは、高速キャッシュ156を使用する場合ほど高速ではない場合があるが、ユーザが予測された次のアクションを実行した後にネットワーク130を介してデータを要求する際のレイテンシは、依然として排除または低減される。
【0032】
アプリケーション154は、ユーザに対する予測された次のアクションを決定するために次のアクションモデル158を使用することが可能である。いくつかの実装形態では、次のアクションモデル158はアプリケーション特有である。たとえば、アプリケーション154は、アプリケーション154のユーザインターフェース152が提示されているユーザに対する予測された次のアクションを決定する、対応する次のアクションモデル158を有してもよい。別の例では、アプリケーション154は、ユーザインターフェース152ごとの、またはアプリケーション154によって生成され提示されたユーザインターフェース152のセットに対する、それぞれの次のアクションモデル158を有してもよい。この例では、次のアクションモデルのそれぞれのユーザインターフェースが提示されるユーザに対する予測された次のアクションを決定するために次のアクションモデル154が使用されてもよい。
【0033】
いくつかの実装形態では、アプリケーション154は、ユーザ特有の次のアクションモデル158を有することが可能である。アプリケーション154のユーザ特有の次のアクションモデルは、特定のユーザがアプリケーション154の1つまたは複数のユーザインターフェースにおいて実行する可能性のある予測された次のアクションを決定するために使用することが可能である。アプリケーション154はまた、複数のユーザに対する予測された次のアクションを決定するために使用される一般的な次のアクションモデルを有してもよい。以下でより詳細に説明されるようにアプリケーション154は、ユーザがアプリケーション154のユーザインターフェースにおいて実行したアクションの数に基づいて、特定のユーザのユーザ特有モデルと一般モデルとの間で選択してもよい。
【0034】
アプリケーション154に対する次のアクションモデル158は、アプリケーション154のユーザインターフェース152において実行することが可能であるアクションのセット内のアクションごとにアクションが実行される確率を指定することが可能である。たとえば、次のアクションモデル158は、第1のアクションがユーザインターフェース152において実行される確率が50%であり、第2のアクションがユーザインターフェース152において実行される確率が45%であることを指定してもよい。この例では、アプリケーション154は、予測された次のアクションとして最も高い確率を有する次のアクションのうちの1つまたは複数を選択してもよい。以下でより詳細に説明されるようにアプリケーション154に対する次のアクションモデル158によって指定される確率は、アプリケーション154のユーザインターフェースにおいて実行された以前のアクションに基づいてもよい。
【0035】
アプリケーションのための次のアクションモデル158は、ユーザに提示されているユーザインターフェースのコンテキストに基づいて、予測された次のアクションを決定するために使用することが可能である。ユーザインターフェースコンテキストは、ユーザインターフェースの1つまたは複数の属性のセットによって定義することが可能である。たとえば、ユーザインターフェースコンテキストは、提示されているデータのタイプ(たとえば、パフォーマンスデータ、履歴データ、アカウントデータ、コンテンツアイテム配信基準)、データが属するグループ(たとえば、データが属するアカウント)、データの特徴(たとえば、データが属するアカウントのサイズ)、データのロールアップレベル、現在提示されているアプリケーションのタブ、ユーザインターフェースのステータスなどの属性、および/あるいはユーザインターフェースによって提示されているユーザインターフェースまたはデータの他の適切な属性によって定義されてもよい。データのロールアップレベルは、データが集約される階層レベルを指定することが可能である。たとえば、イベントの反復ごとにパフォーマンスデータを取得することが可能である。このパフォーマンスデータは、1日ごとの合計、週ごとの合計、月ごとの合計などで集計することが可能である。この例では、月ごとの合計は週ごとの合計よりも高いロールアップレベルになり、週ごとの合計は1日ごとの合計よりも高いロールアップレベルになる。
【0036】
別の例では、複数の異なる階層レベルで統計を集約することが可能である。たとえば、サッカー選手の統計は、試合レベル、シーズンレベル、およびキャリアレベルで集計することが可能である。この例では、キャリアレベルはシーズンレベルよりも高いロールアップレベルになり、シーズンレベルは試合レベルよりも高いロールアップレベルになる。
【0037】
アプリケーション154のための次のアクションモデル158は、ユーザインターフェースコンテキスト(たとえば、ユーザインターフェースの1つまたは複数の属性の各セット)ごとに、アクションのセットの各々が実行される確率を指定することが可能である。アプリケーション154が予測された次のアクションを決定するために次のアクションモデルを使用するとき、アプリケーション154は、ユーザに現在提示されているユーザインターフェースの属性と、適切な次のアクションモデル158(たとえば、ユーザおよび/またはユーザインターフェースの次のアクションモデル、あるいは複数のユーザおよび/またはユーザインターフェースのための一般的な次のアクションモデル)のユーザインターフェースコンテキストの属性とを比較することが可能である。アプリケーション154は、次のアクションモデル154によって指定されるアクションの確率を評価し、その確率に基づいて予測された次のアクションとしてアクションのうちの1つまたは複数(たとえば、最も高い確率を有する上位N個のアクション)を選択することが可能である。次いで、アプリケーション154は、ユーザが予測された次のアクションを実行する場合、アプリケーション154(または、別のアプリケーション)によって提示されるデータをデータ配信システム110に要求することが可能である。データがデータ配信システム110から受信されると、アプリケーション154は高速キャッシュ156にデータを記憶することが可能である。
【0038】
現在のユーザインターフェースの属性が次のアクションモデル158のユーザインターフェースコンテキストの属性と一致しない場合、アプリケーション154は、現在のユーザインターフェースに最も類似するユーザインターフェースコンテキストを選択してもよい。たとえば、アプリケーション154は、現在のユーザインターフェースとユーザインターフェースコンテキストとの間で一致する属性の数が最も多いユーザインターフェースコンテキストを選択してもよい。
【0039】
いくつかの実装形態では、アプリケーション154の次のアクションモデル158は、機械学習技法を使用して訓練された予測モデルを含んでもよい。たとえば、次のアクションモデル158は、ユーザインターフェースの特徴(たとえば、属性)と、ユーザインターフェースが特定のコンテキストを有していたときにユーザによって実行されたアクションを指定する履歴アクションデータとを使用して訓練されてもよい。ユーザに提示されているユーザインターフェースの属性は、予測モデルに適用することが可能であり、予測モデルは、アクションのセットごとに確率を出力することが可能である。次いで、アプリケーション154は、確率に基づいて予測された次のアクションを選択することが可能である。
【0040】
いくつかの実装形態では、予測モデルは、クライアントデバイス150において予測された次のアクションと確率との間のマッピングに変換されてもよい。各マッピングは、それぞれの予測された次のアクションと、所与のユーザインターフェースコンテキストに対して発生するそれぞれの予測された次のアクションの確率との間のマッピングとすることが可能である。このようにして、アプリケーション154は、アプリケーション154がユーザインターフェースの属性を予測モデルに適用しなければならない場合よりも、マッピングにおける確率をより迅速に調べることが可能である。
【0041】
いくつかの実装形態では、次のアクションモデル158は、ユーザによって実行された場合、アクションが実行されるアプリケーションとは異なる別のアプリケーションをクライアントデバイス150にロードさせる次のアクションを決定してもよい。たとえば、ユーザは、ウェブブラウザにおいて実行している第1のウェブアプリケーション内のアカウントデータの要約を閲覧していてもよい。第2のウェブアプリケーションを使用して提示されるより詳細なデータを閲覧するためにユーザは、ウェブブラウザに第2のウェブアプリケーションが実行される異なるウェブページにナビゲートさせるナビゲーションボタンを選択してもよい。別の例では、ユーザインターフェースの選択は、ウェブブラウザに同じウェブページ内に異なるウェブアプリケーションをロードさせてもよい。
【0042】
次のアクションモデル158を使用して決定された次のアクションがクライアントデバイス150に別のアプリケーションをロードさせる場合、アプリケーション154は、他のアプリケーションのコードを要求してもよく、クライアントデバイス150にクライアントデバイスのバックグラウンドに他のアプリケーションをロードさせてもよい。たとえば、他のアプリケーションがウェブアプリケーションである場合、ウェブアプリケーションのコードを取得し、高速キャッシュ156に記憶することが可能である。他のアプリケーションがモバイルアプリケーションである場合、モバイルアプリケーションをクライアントデバイス150のバックグラウンドにロードすることが可能である。アプリケーション154はまた、予測された次のアクションが実行された場合に提示されるデータを要求することが可能である。このデータも高速キャッシュ156に記憶することが可能である。ユーザが予測された次のアクションを実行する前にアプリケーションをロードし(または、アプリケーションをロードするためのコードを取得し)かつデータを取得することによってアプリケーションをロード(または、提示)することが可能であり、予測された次のアクションが実行されるまでクライアントデバイス150が待機した場合よりも速くデータを提示することが可能である。
【0043】
いくつかの実装形態では、アプリケーション154は、ユーザインターフェース152において実行することが可能であるアクションのタイプごとに別個の次のアクションモデル158を含むことが可能である。たとえば、アプリケーション154は、アプリケーション154に新しいタブまたはページにナビゲートさせる場所変更アクションのための次のアクションモデルと、ユーザインターフェースにおいて提示されているデータの範囲を変更する範囲変更アクション(たとえば、フィルタリングまたはロールアップのレベル変更)のための別の次のアクションモデルとを含むことが可能である。適切な次のアクションモデルをアクションのタイプのトリガイベントに基づいて選択することが可能である。たとえば、アプリケーション154は、ユーザの日付および時間範囲セレクタユーザインターフェース要素の選択に応答してユーザが選択する可能性が高い日付および時間の範囲を予測するために範囲変更モデルを使用してもよい。いくつかの実装形態では、アプリケーション154は、複数の予測された次のアクションを決定し、ユーザがアクションを実行する前に、複数の予測された次のアクションごとにデータを取得して高速キャッシュ156に記憶するために複数の次のアクションモデルを使用してもよい。たとえば、アプリケーション154は、予測された次の場所変更アクションを決定するために場所変更の次のアクションモデルを使用してもよく、予測された次の範囲変更アクションを決定するために範囲変更の次のアクションモデルを使用してもよい。次いで、アプリケーション154は、予測された次のアクションの両方のデータを取得して高速キャッシュ156に記憶することが可能である。
【0044】
データ配信システム110は、データの要求を受信し、その要求に応じてデータを提供するフロントエンドサーバ112を含む。たとえば、フロントエンドサーバ112は、クライアントデバイス150のアプリケーション154からデータの要求を受信してもよい。要求は、次のアクションモデル158を使用して決定された予測された次のアクションに基づいて、次のアクションデータの要求を含むことが可能である。
【0045】
フロントエンドサーバ112は、要求をデータ管理サーバ116に提供することが可能である。データ管理サーバ116は、アプリケーションデータストレージデバイス124(たとえば、ハードドライブ、フラッシュメモリなど)から適切なデータを取得し、そのデータをフロントエンドサーバ112に提供することが可能である。次に、フロントエンドサーバ112は、データ通信ネットワーク130を介して要求を受信したクライアントデバイス150にデータを送信することが可能である。
【0046】
データ管理サーバ116は、クライアントデバイス150のアプリケーション154などのアプリケーション用のデータを管理することが可能である。データ管理サーバ116は、アプリケーション開発者から、アプリケーションによって表示されるデータを集約するサーバから、または他のソースからデータを受信し、そのデータをアプリケーションデータストレージデバイス124に記憶してもよい。
【0047】
データ配信システム110は、次のアクション予測サーバ114も含む。次のアクション予測サーバ114は、次のアクションモデル158を生成することと、次のアクションモデル158を更新することと、次のアクションモデル158のパフォーマンスを監視することと、および/またはアプリケーション154に対する予測された次のアクションを決定することとを行うことが可能である。
【0048】
次のアクション予測サーバ114は、アクションデータストレージデバイス120に記憶されたアクションデータに基づいて次のアクションモデルを生成することが可能である。アクションデータは、アプリケーション154の特定のユーザインターフェース152について、ユーザインターフェース152において実行されたアクションを指定することが可能である。アクションデータはまた、アクションが発生したときにユーザインターフェース152のコンテキスト指定することが可能である。たとえば、アクションデータは、アプリケーション154のユーザインターフェース152において実行される(潜在的なアクションのセットの)アクションごとに、アクションが実行されたときに提示されたユーザインターフェースを識別するデータと、アクションが実行されたときのユーザインターフェースの1つまたは複数の属性とを含むことが可能である。上述したように属性は、提示されているデータのタイプ、データが属するグループ、データの特徴、データのロールアップレベル、現在提示されているアプリケーションのタブ、ユーザインターフェースのステータス、および/またはユーザインターフェースによって提示されているユーザインターフェースまたはデータの他の適切な属性を含むことが可能である。アクションデータはまた、アプリケーションのユーザインターフェース152において実行されるアクションごとに、アクションが実行された時刻および/またはアクションを実行したユーザの一意の匿名の識別子を含むことが可能である。
【0049】
アプリケーション154は、アプリケーション154のユーザインターフェース152において実行されるアクションの検出に応答して、アクションデータをフロントエンドサーバ112に送信するように構成することが可能である。たとえば、特定のデータのセットを特定の日付および時間範囲にフィルタリングするためにユーザがアプリケーションのユーザインターフェース152のフィルタリング要素を使用する場合、アプリケーション154は、ユーザに対するフィルタリングを実行し、フィルタリングされたデータをユーザインターフェース152に提示することが可能である。アプリケーション154はまた、たとえば日付および時間範囲、特定のデータのセットの属性(たとえば、データが属するグループ、データのタイプ、データが属するアカウントなど)、アクションが実行されたユーザインターフェース152の属性、アクションが実行された時刻、およびユーザまたはユーザデバイス150の一意の識別子を指定するアクションデータをフロントエンドサーバ112に送信することが可能である。フロントエンドサーバ112は、アクションデータを次のアクション予測サーバ114に送信することが可能であり、次のアクション予測サーバ114は、アクションデータストレージデバイス120にアクションデータを記憶することが可能である。アプリケーション154は、アクションが実行された後に、および/または定期的に、アクションごとのアクションデータを送信することが可能である。
【0050】
次のアクション予測サーバ114は、アプリケーション154に対する1つまたは複数の次のアクションモデル158を生成し、次のアプリケーションモデルを次のアクションモデルのデータストレージデバイス118に記憶することが可能である。アプリケーション154は、アプリケーション154がクライアントデバイス150における予測された次のアクションを決定することが可能であるようにその次のアクションモデル158も含むことが可能である。以下でより詳細に説明されるように次のアクション予測サーバ114は、アプリケーション154の予測された次のアクションを決定するために次のアクションモデル158を使用してもよい。
【0051】
次のアクション予測サーバ114は、アクションデータストレージデバイス120に記憶されたアプリケーション154のアクションデータに基づいて、アプリケーション154の次のアクションモデル158を生成することが可能である。上述したように次のアクションモデル158は、ユーザインターフェースのユーザインターフェースコンテキストに基づいて実行されるアクションの確率を指定することが可能である。この例では、次のアクション予測サーバ114は、ユーザインターフェースコンテキストごとに各アクションが発生した回数に基づいて、アクションの確率を決定することが可能である。たとえば、アプリケーション154のユーザインターフェースが特定のユーザインターフェースコンテキストを有し、ユーザインターフェースが特定のユーザインターフェースコンテキストを有する場合に合計100のアクションがユーザインターフェースにおいて実行されたときに、特定のアクションが10回発生した場合、特定のアクションの確率は10%(10/100)になる場合がある。
【0052】
いくつかの実装形態では、より最近のアクションは、アクションの確率を決定する際により高い重みを与えられる。たとえば、アクションの重みは時間の経過とともに減衰する場合がある。このようにして、より普及しているより最近のアクション(たとえば、特定の期間内により頻繁に発生したアクション)は、アクションが予想される次のアクションである可能性のある高い確率を有することが可能である。いくつかの実装形態では、特定のアクションの確率は、次の関係を使用して受信されている新しいアクションのデータに基づいて更新される。
関係(1) ρ=(1-α)ρ+α
関係(2) ρ=(1-α)ρ
【0053】
この例の場合、(ρ)は特定のアクションが実行される確率であり、(α)は重みの減少の程度である。この例では、特定のアクションが実行された場合、関係(1)を使用して特定のアクションが発生する確率が更新される。特定のアクションが実行されなかった場合、確率は関係(2)を使用して更新される。これらの関係を使用すると、n番目の最新のアクションは(1-α)nの重みを持つ。
【0054】
上述したようにアプリケーション154は、ユーザ特有の次のアクションモデル158と、複数のユーザに対する一般的な次のアクションモデルとを有することが可能である。特定のユーザのユーザ特有の次のアクションモデルは、特定のユーザのアクションデータを使用して生成および更新されてもよい。一般的な次のアクションモデルは、複数の異なるユーザのアクションデータを使用して生成および更新されてもよい。
【0055】
いくつかの実装形態では、次のアクション予測サーバ114は、次のアクションモデル158に影響を及ぼす新しいアクションデータが受信されるたびに次のアクションモデル158を更新する。次いで、次のアクション予測サーバ114は、更新された次のアクションモデル158をクライアントデバイス150においてアプリケーション154に送信することが可能である。
【0056】
いくつかの実装形態では、次のアクション予測サーバ114は、異なるタイプのアクションに対する次のアクションモデル158を生成する。たとえば、上述したようにアプリケーション154は、異なるタイプのアクションに対する別個の次のアクションモデルを有することが可能である。この例では、次のアクション予測サーバ114は、それらのタイプのアクションに対するアクションデータを使用して、特定のタイプのアクションに対する次のアクションモデルを生成することが可能である。たとえば、次のアクション予測サーバ114は、ユーザインターフェースが特定のコンテキストを有する場合に特定のアクションが実行された回数と、およびユーザインターフェースが特定のコンテキストを有する場合に実行された特定のタイプのアクションの総数とに基づいて、特定のタイプの特定のアクションの確率を決定してもよい。
【0057】
次のアクション予測サーバ114はまた、アクションデータストレージデバイス120に記憶されたアクションデータを使用する機械学習技法を使用して予測モデルを訓練することが可能である。たとえば、次のアクション予測サーバ114は、現在のユーザインターフェースコンテキストに基づいて次のユーザアクションを予測するためにマルコフ連鎖を生成してもよい。マルコフ連鎖は、各アクションの確率が現在のユーザインターフェースの状態(たとえば、コンテキスト)に依存する、可能性のあるアクションのシーケンスを使用するモデルである。
【0058】
いくつかの実装形態では、次のアクション予測サーバ114は、アプリケーションのユーザの予測された次のアクションを決定するために次のアクションモデル158を使用する。たとえば、アプリケーション154は、ユーザインターフェースコンテキストを決定し(たとえば、ユーザインターフェース152の1つまたは複数の属性を識別し)、次のアクションデータの要求をフロントエンドサーバ112に送信してもよい。要求は、ユーザインターフェースコンテキストの1つまたは複数の属性を含むことが可能である。次のアクション予測サーバ114は、ユーザインターフェースコンテキストに基づいて1つまたは複数の予測された次のアクションを決定するために次のアクションモデルデータストレージデバイス118から適切な次のアクションモデル158を識別し、次のアクションモデル158を使用することが可能である。たとえば、次のアクション予測サーバ114は、アプリケーション154に対する次のアクションモデル158を識別することが可能である。アプリケーション154がユーザ特有の次のアクションモデルを有する場合、次のアクション予測サーバ114は、要求が受信されたクライアントデバイス150のアプリケーションおよびユーザに対する次のアクションモデルを識別することが可能である。
【0059】
次のアクション予測サーバ114は、予測された次のアクションを指定するデータをデータ管理サーバ116に提供することが可能である。データ管理サーバ116は、ユーザが予測された次のアクションを実行し、そのデータをフロントエンドサーバ112に提供する場合、クライアントデバイス150において提示されるデータを識別することが可能である。次に、フロントエンドサーバ112は、クライアントデバイス150にデータを提供することが可能であり、クライアントデバイス150は、高速キャッシュ156にデータを記憶することが可能である。
【0060】
次のアクション予測サーバ114はまた、次のアクションモデルのパフォーマンスメトリックを維持し、パフォーマンスメトリックをパフォーマンスデータストレージデバイス122に記憶することが可能である。次のアクションモデルのメトリックは、次のアクションモデルの予測精度、次のアクションモデルのキャッシュヒット率、および/または次のアクションモデルのユーザアクションレイテンシを含むことが可能である。次のアクションモデルの予測精度は、次のアクションモデルが、ユーザがその後に実行したアクションを予測した回数と、次のアクションモデルによって行われた予測の総数との比に基づくことが可能である。次のアクションモデルのキャッシュヒット率は、予測された次のアクションを決定するために次のアクションモデルが使用されたユーザアクションに応答するために必要なデータが高速キャッシュ158内で見つかった回数と、予測された次のアクションを決定するために次のアクションモデルが使用されたユーザアクションに応答してデータが要求された総回数との間の比に基づくことが可能である。ユーザアクションレイテンシは、ユーザによって知覚されたアクションのレイテンシを示すことが可能である。たとえば、ユーザアクションレイテンシは、ユーザがアクションを実行する(たとえば、タブを選択するか、またはフィルタリング基準を提出する)時間から、新しいまたは更新されたデータがクライアントデバイス150においてレンダリングされる時間までのレイテンシを示すことが可能である。この時間は、次のアクションモデルの総ユーザアクションレイテンシを決定するために次のアクションモデルの複数の使用のために測定および集約(たとえば、平均化)することが可能である。
【0061】
図2は、データが提示される例示的なユーザインターフェース200を示す。例示的なユーザインターフェース200は、ウェブブラウザに提示されているものとして示される。ユーザインターフェース200はまた、モバイルアプリケーションに提示することが可能である。
【0062】
ユーザインターフェース200は、ユーザが、提示のためのデータのグループ、たとえば特定のキャンペーンまたはアカウントを選択することを可能にするグループメニュー210を含む。たとえば、ユーザは、マウスを使用してグループをクリックするか、グループの場所においてタッチスクリーンデバイスをタッチすることによってグループを選択することが可能である。グループの選択は、ユーザインターフェース200を生成し提示するアプリケーションのための次のアクションモデルによって予測される次のアクションとすることが可能である。さらに、データが提示されるグループは、ユーザインターフェース200のユーザインターフェースコンテキストを定義する属性とすることが可能である。たとえば、グループ2のデータを閲覧するユーザは通常、特定のタイプのデータを閲覧してもよい。この例では、グループ2のデータが提示されているとき、予測された次のアクションが特定のタイプのデータの選択であることを決定するために次のアクションモデルが使用されてもよく、アプリケーションは、グループ2の特定のタイプのデータをプリキャッシュしてもよい。
【0063】
ユーザインターフェース200はまた、ユーザが提示されるグループのデータのタイプを選択することを可能にするデータタイプメニュー215を含む。選択されたデータタイプのデータおよび選択されたグループのデータは表示領域205に提示される。上述したようにデータタイプの選択は、次のアクションモデルを使用して予測される次のアクションであってもよい。提示されるデータのタイプはまた、ユーザインターフェース200のユーザインターフェースコンテキストを定義する属性とすることが可能である。
【0064】
ユーザインターフェース200はまた、ユーザが、表示領域205に提示されるデータの日付および時間範囲を選択することを可能にする日付および時間範囲セレクタ220を含む。この例では、選択した日付および時間範囲は2016年11月1日〜2016年11月30日である。表示領域205に提示されるデータは、選択された日付および時間範囲に関連するデータのみが提示されるようにフィルタリングされてもよい。ユーザインターフェース200は、データの値または他のフィルタリング基準に基づいてフィルタリングするためのフィルタリング要素などの他のフィルタリング要素を含むことが可能である。
【0065】
特定の(または関連のある)日付および時間範囲の選択は、次のアクションモデルによって決定される次のアクションであってもよい。たとえば、ユーザはしばしば、特定のタイプのデータを閲覧するときに、前月のデータを閲覧する場合がある。この例では、特定のタイプのデータは、次のアクションは前月のデータの選択であることを次のアクションモデルが予測することを可能にするユーザインターフェースコンテキストの属性である。それに応答して、アプリケーションは、たとえば選択されたグループのために特定のデータタイプの前月のデータをプリキャッシュすることが可能である。さらに、日付および時間範囲セレクタ220の選択は、アプリケーションに予測された次のアクションを決定させるトリガイベントであってもよい。たとえば、アプリケーションは、日付および時間範囲セレクタ220が選択された時点で提示されているデータのグループおよびデータタイプを考慮して、どの次のアクションが最も高い確率を有するかを決定するために次のアクションモデルにアクセスし、次のアクションモデルを使用してもよい。このようにして、ユーザが日付および時間範囲セレクタ220を使用して所望の日付および時間範囲を指定している間にデータをプリキャッシュすることが可能である。
【0066】
別のトリガイベントは、ユーザによって入力されたカスタム日付および時間であってもよい。たとえば、ユーザインターフェース要素は、ユーザが、カスタム日付および時間を指定し、カスタム日付および時間に基づいてデータをフィルタリングするために何らかのボタンを選択することを可能にしてもよい。この例では、アプリケーションは、予測された次のアクションは、ユーザが、データをフィルタリングするためにボタンを選択することであると決定することが可能である。それに応答して、アプリケーションは、ユーザがボタンを選択する前に、入力された日付および時間のデータの要求を送信することが可能である。
【0067】
ユーザインターフェース200はまた、ユーザが、表示領域205に提示されたデータの時間ベースのロールアップレベルを選択することを可能にするロールアップレベルセレクタ225を含む。たとえば、ロールアップレベルセレクタ225は、1日ごとのデータ、月ごとのデータ、または年ごとのデータが表示領域205に提示されることを可能にしてもよい。特定のロールアップレベルの選択は、次のアクションモデルを使用して決定される予測された次のアクションであってもよい。たとえば、ユーザは通常、日付および時間範囲が少なくとも1カ月であるが3カ月未満である場合、1日ごとのデータを閲覧してもよい。この例では、選択された日付および時間範囲は、ユーザが実行する可能性が高い予測されたアクションが1日ごとのロールアップレベルの選択であることを決定するために次のアクションモデルが使用されることを可能にするユーザインターフェースコンテキストの属性である。
【0068】
アプリケーションは、選択されたグループ、選択されたデータタイプ、選択された日付および時間範囲、ならびに選択されたロールアップレベルのうちの1つまたは複数に基づいて、予測された次のアクションを決定するために次のアクションモデルを使用してもよい。ユーザがユーザインターフェースにおいて異なる選択を行うと、ユーザが予測された次のアクションを実行する前にユーザが予測された次のアクションを実行する場合、後続の予測される次のアクションを決定し、ユーザがユーザインターフェース200に提示されるデータをプリキャッシュするためにアプリケーションは、更新されたユーザインターフェースコンテキストおよび次のアクションモデルを使用することが可能である。
【0069】
図3は、予測された次のアクションを決定し、予測された次のアクションに対する次のアクションデータをプリキャッシュするための例示的なプロセス300のフローチャートである。プロセス300の動作は、たとえば図1のクライアントデバイス150などの1つまたは複数のデータ処理装置を含むシステムによって実装することが可能である。プロセス300はまた、コンピュータ記憶媒体に記憶された命令によって実装することが可能であり、データ処理装置を含むシステムによる命令の実行は、データ処理装置にプロセス300の動作を実行させる。
【0070】
本システムは、提示されているユーザインターフェースのユーザインターフェースコンテキストを決定する(302)。たとえば、ユーザインターフェースは、アプリケーション(たとえば、ウェブアプリケーションまたはモバイルアプリケーション)によって生成され提示されてもよい。ユーザインターフェースコンテキストは、提示されているデータのタイプ、データが属するグループ、データの特徴、データのロールアップレベル、現在提示されているアプリケーションのタブ、ユーザインターフェースのステータスなどのユーザインターフェースの1つまたは複数の属性、および/あるいはユーザインターフェースによって提示されるユーザインターフェースまたはデータの他の適切な属性によって定義されてもよい。
【0071】
本システムは、ユーザインターフェースコンテキストに基づいて予測されたユーザアクションを決定する(304)。予測されたユーザアクションは、アプリケーションのユーザがユーザインターフェースコンテキストに基づいてユーザインターフェースにおいて実行する可能性のあるアクションであってもよい。たとえば、予測されたユーザアクションは、ユーザによって実行される少なくとも1つのしきい値確率を有するアクションであってもよい。別の例では、予測されたユーザアクションは、ユーザインターフェースにおいて実行することが可能である複数の可能なユーザアクションの中で最も高い確率を有するユーザアクションであってもよい。
【0072】
いくつかの実装形態では、本システムは、予測された次のアクションを決定するために次のアクションモデルを使用する。たとえば、次のアクションモデルは、アクションセットのアクションごとに、ユーザインターフェースコンテキストに基づいてアクションが実行される確率を指定してもよい。特定の例では、次のアクションモデルは、ユーザインターフェースが特定のタブとは異なる第2のタブの提示を含み、また特定のデータのグループを含むコンテキストを有する場合、特定のタブにナビゲートするユーザアクションは10%の確率を有すると指定してもよい。次のアクションモデルはまた、ユーザインターフェースが、異なるデータのグループを含む第3のタブの提示を含むコンテキストを有する場合、特定のタブにナビゲートするユーザアクションが20%の確率を有すると指定してもよい。
【0073】
いくつかの実装形態では、本システムは、データをプリキャッシュするための複数の予測された次のアクションを選択してもよい。たとえば、複数の予測された次のアクションは、ユーザによって実行される少なくとも1つのしきい値確率を有してもよい。別の例では、本システムは、最も高い確率を有する指定された数のアクションを選択してもよい。このように本システムは、ユーザがアクションを実行する前に、ユーザのためにデータを取得し、プリキャッシュする可能性がより高い。
【0074】
本システムは、データ通信ネットワークを介して、ユーザが予測された次のアクションを実行することに応答して提示される次のアクションデータの要求を送信する(306)。本システムは、図1のデータ配信システム110などのデータ配信システムに要求を送信してもよい。たとえば、本システムは、ユーザが予測された次のアクションを実際に実行した場合にシステムが要求するデータを指定する要求を送信してもよい。別の例では、本システムは、ユーザが予測された次のアクションを実行することに応答して提示されるデータではなく、またはそれに加えてアクションを指定する要求を送信してもよい。この例では、データ配信システム110は、予測された次のアクションに基づいて適切なデータを識別することが可能である。
【0075】
本システムは、データ通信ネットワークを介して次のアクションデータを受信する(308)。たとえば、本システムは、図1のデータ配信システム110からデータを受信してもよい。
【0076】
本システムは、次のアクションデータをシステムのキャッシュに記憶する(310)。たとえば、本システムは、本システムが次のアクションデータを記憶する高速キャッシュ、または本システムにとってローカルな他のメモリストレージを含んでもよい。ローカルメモリに次のアクションデータを記憶することによってシステムがネットワークを横切る要求、および次のアクションデータが到着することを待つ必要がないので、ユーザが予測された次のアクションを実際に実行する場合、次のアクションデータをより迅速に提示することが可能である。
【0077】
本システムは、ユーザインターフェースにおいて予測された次のアクションの発生を検出する(312)。たとえば、ユーザインターフェースは、システムによって実行されているアプリケーションによって提示されてもよい。アプリケーションは、ユーザインタラクションの検出に応答して、ユーザインターフェースとのユーザインタラクションを監視し、たとえばデータを更新する、異なるタブにナビゲートするなどのアクションを実行することが可能である。
【0078】
本システムは、予測された次のアクションの発生を検出することに応答して、キャッシュから次のアクションデータを取得する(314)。たとえば、本システムは、ネットワークを介して別の要求を送信することなしにシステムのキャッシュから次のアクションデータを取得してもよい。
【0079】
本システムは、次のアクションデータを提示するためにユーザインターフェースを更新する(316)。たとえば、予測された次のアクションが異なるタブにナビゲートすることであり、ユーザが異なるタブを選択した場合、本システムは、ユーザインターフェースを異なるタブにナビゲートし、異なるタブ内の次のアクションデータを提示してもよい。別の例では、予測された次のアクションが特定の日付および時間範囲にデータをフィルタリングすることである場合、本システムは、フィルタリングされたデータをユーザインターフェースに提示してもよい。
【0080】
図4は、予測された次のアクションを決定し、予測された次のアクションに対する次のアクションデータをプリキャッシュするための例示的なプロセス400のフローチャートである。プロセス400の動作は、たとえば図1のデータ配信システム110などの1つまたは複数のデータ処理装置を含むシステムによって実装することが可能である。プロセス400はまた、コンピュータ記憶媒体に記憶された命令によって実装することが可能であり、データ処理装置を含むシステムによる命令の実行は、データ処理装置にプロセス400の動作を実行させる。
【0081】
本システムは、クライアントデバイスに次のアクションデータの要求を受信する(402)。たとえば、本システムは、クライアントデバイス上で実行中のアプリケーションによって生成されたユーザインターフェースを提示しているクライアントデバイスから要求を受信してもよい。クライアントデバイスは、たとえばトリガイベントの検出に応答して、データ通信ネットワークを介してシステムに要求を送信してもよい。トリガイベントは、フィルタユーザインターフェース要素(たとえば、日付および時間範囲セレクタ)、ロールアップレベルのユーザインターフェース要素、アドレスバーを選択すること、データ上のポインタ(たとえば、カーソル)をホバリングすること、または別の適切なイベントを含んでもよい。
【0082】
別の例では、クライアントデバイスは、トリガイベントを検出することなしに要求を送信してもよい。たとえば、クライアントデバイスは、ユーザインターフェースが更新されるたびに要求を送信してもよい。この例では、クライアントデバイスは、ユーザが閲覧するユーザインターフェースごとに予測された次のアクションを決定することによってユーザの一歩先にとどまることを試みることが可能である。
【0083】
要求は、ユーザインターフェースコンテキストを定義するユーザインターフェースコンテキストデータを含むことが可能である。たとえば、要求は、ユーザに提示されているユーザインターフェースの1つまたは複数の属性を指定するデータを含むことが可能である。
【0084】
本システムは、ユーザインターフェースコンテキストデータに基づいて、クライアントデバイスのユーザがユーザインターフェースにおいて実行する予測された次のアクションを決定する(404)。たとえば、上述したように本システムは、ユーザインターフェースコンテキストデータに基づいてユーザのための1つまたは複数の予測された次のアクションを決定するために次のアクションモデルを使用することが可能である。
【0085】
本システムは、予測された次のアクションの次のアクションデータを識別する(406)。予測された次のアクションのための次のアクションデータは、ユーザが予測された次のアクションを実際に実行した場合にクライアントデバイスによって提示されるデータを含む。
【0086】
本システムは、次のアクションデータをクライアントデバイスに提供して、クライアントデバイスのキャッシュに記憶する(408)。クライアントデバイスは、次のアクションデータをキャッシュに記憶することが可能である。クライアントデバイスが、予測された次のアクションが実行されたことを検出した場合、クライアントデバイスは、キャッシュからデータを取得し、そのデータをユーザに提示することが可能である。
【0087】
図5は、予測された次のアクションを決定するために使用される予測モデルのパフォーマンスメトリックを維持するための例示的なプロセス500のフローチャートである。プロセス500の動作は、たとえば図1のデータ配信システム110などの1つまたは複数のデータ処理装置を含むシステムによって実装することが可能である。プロセス500はまた、コンピュータ記憶媒体に記憶された命令によって実装することが可能であり、データ処理装置を含むシステムによる命令の実行は、データ処理装置にプロセス500の動作を実行させる。
【0088】
本システムは、ユーザに対する予測された次のアクションを決定するための予測されたモデルを選択する(502)。いくつかの実装形態では、本システムは、アプリケーションによって生成され提示されたユーザインターフェースにおいてユーザによって実行されるアクションの数に基づいて次のアクションモデルを選択する。たとえば、ユーザがしきい値数未満のアクションを実行した場合、ユーザがアプリケーションのためのユーザ特有の次のアクションモデルを生成するために十分なデータを本システムが有していない可能性があるので、本システムは、複数のユーザによって実行されるアクションに基づいて生成される一般的な次のアクションモデルを選択してもよい。
【0089】
いくつかの実装形態では、本システムは、次のアクションモデルのための1つまたは複数のパフォーマンスメトリックに基づいて次のアクションモデルを選択する。たとえば、本システムは、最も高い予測精度、最も高いキャッシュヒット率、および/または最も低いユーザアクションレイテンシを有する次のアクションモデルを選択してもよい。
【0090】
本システムは、予測された次のユーザアクションを決定し、予測された次のユーザアクションに基づいてデータを取得するために選択された次のアクションモデルを使用する(504)。たとえば、本システムは、予測された次のアクションのためのデータをサーバから取得し、そのデータをクライアントデバイスのキャッシュに記憶してもよい。
【0091】
本システムは、予測された次のアクションがユーザによって実行されたかどうかを判定する(506)。たとえば、本システムは、次のユーザアクションが実行されたかどうかを示すユーザインターフェースが提示されているクライアントデバイスからデータを受信してもよい。本システムはまた、ユーザが実行したアクションのデータがクライアントデバイスのキャッシュ内で見つかったかどうかを示すデータ、および/またはユーザの実行されたアクションに応答してデータを提示する際のレイテンシを示すデータを受信してもよい。
【0092】
本システムは、選択された次のアクションモデルのパフォーマンスメトリックを更新する(508)。たとえば、本システムは、受信したデータに基づいて、次のアクションモデルのパフォーマンス精度、キャッシュヒット率、および/またはユーザアクションレイテンシを更新してもよい。
【0093】
本明細書に記載される主題および動作の実施形態は、本明細書に開示された構造およびそれらの構造的均等物を含むデジタル電子回路、あるいはコンピュータソフトウェア、ファームウェア、またはハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することが可能である。本明細書に記載される主題の実施形態は、データ処理装置によって実行されるか、またはデータ処理装置の動作を制御するためにコンピュータ記憶媒体上に符号化された1つまたは複数のコンピュータプログラム、すなわちコンピュータプログラム命令の1つまたは複数のモジュールとして実装することが可能である。代替的または追加的に、プログラム命令は、データ処理装置による実行のための適切なレシーバ装置への送信のために情報を符号化するために生成された、人工的に生成された伝搬信号、たとえば機械生成電気信号、光学信号、または電磁信号上で符号化することが可能である。コンピュータ記憶媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、あるいはそれらの1つまたは複数の組合せであってもよく、あるいはそれらに含まれてもよい。さらに、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号において符号化されたコンピュータプログラム命令のソースまたは宛先とすることが可能である。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)とすることが可能であり、またはそれらに含まれることが可能である。
【0094】
本明細書に記載される動作は、1つまたは複数のコンピュータ可読ストレージデバイスに記憶されたデータ、または他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装することが可能である。
【0095】
「データ処理装置」という用語は、例としてプログラム可能なプロセッサ、コンピュータ、チップ上のシステム、または前述のものの複数のもの、あるいはそれらの組合せを含むデータを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。本装置は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路を含むことが可能である。本装置はまた、ハードウェアに加えて、問題のコンピュータプログラムの実行環境を生成するコード、たとえばプロセッサファームウェアを構成するコード、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、あるいはそれらのうちの1つまたは複数の組合せを含むことが可能である。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することが可能である。
【0096】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含むあらゆる形式のプログラミング言語で記述することが可能であり、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクトとして、またはコンピューティング環境における使用に適した他のユニットを含むあらゆる形式で展開することが可能である。コンピュータプログラムは、ファイルシステム内のファイルに対応してもよいが、必ずしも対応する必要はない。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書に記憶された1つまたは複数のスクリプト)を保持するファイルの一部、問題のプログラム専用の1つのファイル、あるいは複数のコーディネートされたファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶することが可能である。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるか、または複数のサイトに分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開することが可能である。
【0097】
本明細書に記載されるプロセスおよび論理フローは、入力データを操作して出力を生成することによってアクションを実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行することが可能である。プロセスおよび論理フローはまた、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によって実行することが可能であり、装置を専用論理回路として実装することも可能である。
【0098】
コンピュータプログラムの実行に適したプロセッサは、例として汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読出し専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。一般に、コンピュータはまた、たとえば磁気ディスク、光磁気ディスク、または光ディスクなどのデータを記憶するための1つまたは複数の大容量ストレージデバイスを含むか、それらからデータを受信する、それらにデータを転送する、またはその両方のために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、いくつか例を挙げると、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、あるいはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)などの別のデバイスに埋め込むことが可能である。コンピュータプログラム命令およびデータを記憶するために適したデバイスはまた、例としてEPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、たとえば内部ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含むすべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリはまた、専用論理回路によって補完することが可能であり、それに組み込むことが可能である。
【0099】
ユーザとのインタラクションを提供するために、本明細書に記載される主題の実施形態は、情報をユーザに表示するためのCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびにユーザがコンピュータに入力を提供することが可能であるキーボード、およびマウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装することが可能である。ユーザとのインタラクションを提供するために他の種類のデバイスを使用することもまた可能であり、たとえばユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックなどの任意の形態の感覚フィードバックとすることが可能であり、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することが可能である。さらに、コンピュータは、ユーザによって使用されるデバイスとの間で文書を送受信することによって、たとえばウェブブラウザから受信した要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによってユーザと対話することが可能である。
【0100】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてのバックエンド構成要素を含むコンピューティングシステム、あるいはアプリケーションサーバなどのミドルウェア構成要素を含むコンピューティングシステム、あるいは、たとえばグラフィカルユーザインターフェースを有するクライアントコンピュータ、またはユーザが本明細書に記載される主題の実装形態と対話することが可能であるウェブブラウザなどのフロントエンド構成要素を含むコンピューティングシステム、あるいはそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の1つまたは複数の任意の組合せに実装することが可能である。本システムの構成要素は、任意の形式または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続することが可能である。通信ネットワークの例は、ローカルエリアネットワーク("LAN")およびワイドエリアネットワーク("WAN")、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0101】
コンピューティングシステムは、クライアントとサーバを含むことが可能である。クライアントとサーバは、一般に互いに遠隔であり、典型的には通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、相互にクライアント-サーバ関係を有するコンピュータプログラムにより生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受信する目的で)データ(たとえば、HTMLページ)をクライアントデバイスに送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信することが可能である。
【0102】
本明細書は、多くの具体的な実装形態の詳細を含むが、これらは発明の範囲または請求可能な範囲の限定として解釈されるべきものではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明される特定の特徴はまた、単一の実施形態において組み合わせて実装することが可能である。逆に、単一の実施形態の文脈において記載されている様々な特徴はまた、複数の実施形態において別々に、または任意の適切なサブコンビネーションにおいて実装することが可能である。さらに、特徴は、特定の組合せにおいて作用するものとして上述されており、当初はそのように主張されているものであっても、場合によっては請求された組合せからの1つまたは複数の特徴を組合せから切り出すことが可能であり、請求された組合せをサブコンビネーションまたはサブコンビネーションのバリエーションに導くことが可能である。
【0103】
同様に、図面において動作は特定の順序で示されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序どおりに、または逐次的な順序で実行されること、または図示されたすべての動作が実行されることを必要とするものとして理解されるべきではない。特定の状況では、マルチタスク処理と並列処理が有利な場合がある。さらに、上述の実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、記載されたプログラム構成要素およびシステムは、一般に単一のソフトウェア製品に一緒に統合することが可能であるか、または複数のソフトウェア製品にパッケージ化することが可能であることが理解されるべきである。このように主題の特定の実施形態について説明した。他の実施形態は、添付の特許請求の範囲内にある。場合によっては、請求項に列挙されたアクションは異なる順序で実行され、依然として望ましい結果を達成することが可能である。さらに、添付の図面に示されるプロセスは、望ましい結果を達成するために示された特定の順序または逐次的な順序を必ずしも必要としない。特定の実装形態では、マルチタスク処理と並列処理が有利な場合がある。
【符号の説明】
【0104】
100 例示的な環境
110 データ配信システム
112 フロントエンドサーバ
114 次のアクション予測サーバ
116 データ管理サーバ
118 次のアクションモデルのデータストレージデバイス
120 アクションデータストレージデバイス
122 パフォーマンスデータストレージデバイス
124 アプリケーションデータストレージデバイス
130 データ通信ネットワーク
150 クライアントデバイス
152 ユーザインターフェース
154 アプリケーション
156 高速キャッシュ
158 次のアクションモデル
200 ユーザインターフェース
205 表示領域
210 グループメニュー
215 データタイプメニュー
220 日付および時間範囲セレクタ
225 ロールアップレベルセレクタ
300 例示的なプロセス
400 例示的なプロセス
500 例示的なプロセス
図1
図2
図3
図4
図5