KR20200130523A - 미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화 - Google Patents

미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화 Download PDF

Info

Publication number
KR20200130523A
KR20200130523A KR1020207032736A KR20207032736A KR20200130523A KR 20200130523 A KR20200130523 A KR 20200130523A KR 1020207032736 A KR1020207032736 A KR 1020207032736A KR 20207032736 A KR20207032736 A KR 20207032736A KR 20200130523 A KR20200130523 A KR 20200130523A
Authority
KR
South Korea
Prior art keywords
action
data
predicted
user interface
user
Prior art date
Application number
KR1020207032736A
Other languages
English (en)
Other versions
KR102300077B1 (ko
Inventor
팬 장
펭 좡
이 멍
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20200130523A publication Critical patent/KR20200130523A/ko
Application granted granted Critical
Publication of KR102300077B1 publication Critical patent/KR102300077B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 명세서의 요지는 일반적으로 예측된 미래 액션에 대한 데이터를 사전 캐싱하는 것에 관한 것이다. 일부 구현예들에서, 클라이언트 장치는 하나 이상의 모바일 애플리케이션들에 대해 수신된 데이터를 저장하는 캐시를 갖는 데이터 저장 장치 및 상기 데이터 저장 장치 및 디스플레이와 통신하는 데이터 처리 장치를 포함한다. 소정의 애플리케이션에 대해 제시되는 소정의 사용자 인터페이스에 대한 사용자 인터페이스 컨텍스트가 결정될 수 있다. 클라이언트 장치의 사용자가 상기 소정의 사용자 인터페이스에서 수행할 예측된 다음 액션은 상기 사용자 인터페이스 컨텍스트에 기초하여 결정될 수 있다. 상기 예측된 다음 액션을 검출하기 전에, 사용자가 상기 예측된 다음 액션을 수행하는 것에 응답하여 제시될 다음 액션 데이터에 대한 요청이 네트워크를 통해 전송될 수 있다. 상기 다음 액션 데이터는 수신되어 상기 캐시에 저장될 수 있다.

Description

미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화{OPTIMIZING USER INTERFACE DATA CACHING FOR FUTURE ACTIONS}
본 명세서는 미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화에 관한 것이다.
인터넷은 전 세계 사용자들 간의 데이터 및 트랜잭션 교환을 용이하게 한다. 이러한 데이터 교환을 통해 데이터 제공자는 다양한 유형의 콘텐츠를 다양한 사용자에게 제공할 수 있다. 상기 데이터는 전자 문서(예를 들어, 웹 페이지들) 및 애플리케이션(예를 들어, 모바일 앱들)에 데이터를 게시하는 것을 포함하여 다양한 방법으로 제공될 수 있다. 상기 데이터는 사용자 요청에 응답하여, 예를 들어, 웹 페이지에 대한 링크를 사용자가 선택하는 것에 응답하여, 클라이언트 장치에 일반적으로 제공된다. 각 요청은 데이터 제공자가 적절한 데이터를 식별하고 인터넷을 통해 클라이언트 장치로 데이터를 전송하는 데 시간이 걸릴 수 있다.
본 명세서는 사용자가 수행하기로 결정된(예를 들어, 예측된) 다음 액션에 기초하여 클라이언트 장치에서 데이터를 사전 캐싱(pre-caching)하기 위한 시스템들, 방법들, 장치들 및 다른 기술들을 설명한다.
일반적으로, 본 명세서에 기술된 요지의 하나의 혁신적인 양태는 하나 이상의 모바일 애플리케이션에 대한 사용자 인터페이스를 나타내는 디스플레이를 포함하는 클라이언트 장치에서 구현될 수 있다. 상기 클라이언트 장치는 또한 하나 이상의 모바일 애플리케이션에 대한 데이터 통신 네트워크를 통해 수신된 데이터를 저장하는 캐시를 갖는 데이터 저장 장치 포함할 수 있다. 상기 클라이언트 장치는 또한 데이터 저장 장치 및 디스플레이와 통신하는 데이터 처리 장치를 포함할 수 있다. 상기 데이터 처리 장치는 소정의 애플리케이션을 위한 디스플레이에 의해 제시되는 소정의 사용자 인터페이스에 대한 사용자 인터페이스 컨텍스트를 결정할 수있다. 상기 소정의 사용자 인터페이스에 대한 사용자 인터페이스 컨텍스트는 (i) 소정의 사용자 인터페이스에서 제시되는 데이터가 속하는 그룹 또는 (ii) 소정의 사용자 인터페이스에서 제시되는 데이터의 유형 중 적어도 하나를 지정할 수 있다. 상기 데이터 처리 장치는 사용자 인터페이스 컨텍스트에 기초하여, 클라이언트 장치의 사용자가 소정의 사용자 인터페이스에서 수행할 예측된 다음 액션을 결정할 수 있다. 상기 데이터 처리 장치는, 데이터 통신 네트워크를 통해 그리고 상기 예측된 다음 액션을 검출하기 전에, 사용자가 예측된 다음 액션을 수행하는 것에 응답하여 제시될 다음 액션 데이터에 대한 요청을 송신할 수 있다. 상기 데이터 처리 장치는 데이터 통신 네트워크를 통해 상기 다음 액션 데이터를 수신하고, 상기 다음 액션 데이터를 캐시에 저장할 수 있다. 이 양태의 다른 구현예들은 컴퓨터 저장 장치들 상에 인코딩된 방법들의 액션들을 수행하도록 구성된 해당 장치, 방법들, 시스템들 및 컴퓨터 프로그램들을 포함한다.
이들 및 다른 구현예들은 선택적으로 하나 이상의 다음 특징들을 포함할 수 있다. 일부 양태들에서, 상기 클라이언트 장치의 데이터 처리 장치는 소정의 사용자 인터페이스에서 예측된 액션의 발생을 검출하고, 상기 캐시로부터 다음 액션 데이터를 획득하고, 상기 다음 액션 데이터를 제시하도록 상기 사용자 인터페이스를 업데이트할 수 있다.
일부 양태들에서, 상기 사용자 인터페이스 컨텍스트는 소정의 사용자 인터페이스에서 제시되는 데이터의 롤업 레벨(rollup level)을 지정한다. 상기 롤업 레벨은 데이터가 집계되는 계층 레벨(hierarchical level)을 지정할 수 있다.
일부 양태들에서, 상기 예측된 다음 액션은 소정의 사용자 인터페이스에서 수행될 수 있는 가능한 액션들의 세트의 각 액션이 상기 소정의 사용자 인터페이스가 상기 결정된 사용자 인터페이스 컨텍스트와 매칭하는 컨텍스트를 가질 때 사용자를 포함하는 하나 이상의 사용자들에 의해 수행된 횟수에 기초하여 결정된다.
일부 양태들에서, 상기 클라이언트 장치의 데이터 처리 장치는 상기 예측된 다음 액션을 결정하기 위한 트리거 이벤트를 검출할 수 있다. 상기 예측된 다음 액션은 상기 트리거 이벤트를 검출하는 것에 응답하여 결정될 수 있다.
일부 양태들에서, 상기 클라이언트 장치의 데이터 처리 장치는 사용자 인터페이스 컨텍스트에 기초하여 상기 예측된 다음 액션을 결정하는 예측 모델을 획득할 수 있고, 그 예측 모델을 예측된 다음 액션들 및 확률들 사이의 매핑들로 변환할 수 있다. 각각의 매핑은 소정의 사용자 인터페이스 컨텍스트에 대해 발생하는 각각의 예측된 다음 액션 확률과 각각의 예측된 다음 액션 사이의 매핑일 수 있다.
일부 양태들에서, 상기 클라이언트 장치의 데이터 처리 장치는 (ⅰ) 각각의 예측 모델에 대한 예측 정확도, (ⅱ) 각각의 예측 모델에 대한 캐시 히트율, (ⅲ) 각각의 예측 모델에 의해 제공되는 대기시간의 감소, 또는 (ⅳ) 소정의 사용자 인터페이스에서 사용자에 의해 수행된 복수의 과거 사용자 상호작용 중 적어도 하나에 기초하여 예측 모델들의 세트로부터 상기 예측 모델을 선택할 수 있다.
일부 양태들에서, 상기 클라이언트 장치의 데이터 처리 장치는 상기 다음 액션 데이터가 소정의 애플리케이션과 다른 제2 애플리케이션에 의해 제시될 것이라고 결정할 수 있다. 상기 예측된 다음 액션을 검출하기 전에, 상기 데이터 처리 장치는 상기 제2 애플리케이션을 실행하기 위한 코드를 획득하고, 그 코드를 상기 캐시에 저장할 수 있다.
본 명세서에 기술된 요지의 특정 실시예들은 다음의 장점들 중 하나 이상을 실현하도록 구현될 수 있다. 데이터를 획득하여 사용자에게 제시하는 지연시간은 사용자의 다음 액션(예를 들어, 애플리케이션과의 사용자의 다음 상호 작용)에 응답하여 요청될 가능성이 있는 데이터를 사전 캐싱함으로써 감소될 수 있다. 웹 애플리케이션을 로딩하는 데 걸리는 지연시간은 사용자의 다음 액션에 응답하여 요청된 데이터를 제시하는 데 사용될 웹 애플리케이션을 식별하고, 그 웹 애플리케이션을 로딩하는 데 사용되는 코드(예를 들어, 스크립트들)를 획득함으로써 단축될 수 있다. 마찬가지로, 모바일 애플리케이션을 로딩하는 데 걸리는 지연시간은 사용자의 다음 액션에 대해 응답하여 요청된 데이터를 제시하는 데 사용될 모바일 애플리케이션을 식별하고, 사용자의 클라이언트 장치의 백그라운드에서 상기 애플리케이션을 로딩함으로써 단축될 수 있다. 데이터를 사전 캐싱(pre-caching)하면 상기 클라이언트 장치가 네트워크 탐색 요청을 기다리고, 서버가 요청된 데이터를 식별하기 위해 기다리고, 그 요청된 데이터를 클라이언트 장치에 전달하는 것을 기다릴 필요가 없기 때문에 상기 클라이언트 장치가 데이터를 보다 신속하게 제시할 수 있다.
이 문서에 설명된 기술들을 사용하면 애플리케이션과의 사용자 상호 작용을 클라이언트 측에서 평가하여 애플리케이션(또는 다른 상이한 애플리케이션) 내에서 수행될 예정된 액션을 예측할 수 있다. 이 예측은 데이터가 필요할 때 클라이언트 장치에 데이터가 미리 저장될 수 있도록, 클라이언트 장치가 데이터가 필요하기 전에 서버에서 예정될 액션을 지원하는 데 필요한 데이터를 요청할 수 있게 한다. 이와 같이, 다른 사용자 인터페이스로의 전환이 실시간 전환을 지원하기에 충분히 빨리 다운로드할 수 없는 양의 데이터를 요구할지라도, 상기 기술들은 제1 사용자 인터페이스로부터 상기 다른 사용자 인터페이스로의 실시간 전환들을 가능하게 한다. 또한, 제1 애플리케이션의 사용자 경험이 저하되지 않도록, 상기 데이터의 평가는 클라이언트 장치의 백그라운드에서 수행된다(예를 들어, 제1 사용자 인터페이스의 사용을 방해하지 않고). 또한, 이 문서에서 설명된 기술들은 컴퓨팅 장치를 사용하지 않고는 이용할 수 없는 실시간 데이터(예를 들어, 모바일 장치와의 사용자 상호 작용)를 활용한다.
이 문서에서 설명된 기술들은 또한 모바일 장치의 제한된 캐시를 효과적이고 효율적으로 사용하여 사용자 상호 작용에 응답하여 업데이트된(예를 들어, 새롭거나, 필터링된 또는 수정된 데이터) 사용자 인터페이스들 간의 전환을 향상시킨다. 이 문서에서 설명된 다음 액션 모델들을 사용하면 캐시에 저장된 데이터가 실제로 요청될 우도(likelihood)를 향상시킨다. 이로 인해 사용자가 다음 사용자 인터페이스를 요청하는 시점에서 모바일 장치가 사용자 인터페이스와의 사용자의 상호 작용을 지원하기 위해 데이터를 다운로드해야하는 우도를 줄일 수 있다.
모바일 장치의 프로세서, Wi-Fi 또는 모바일 네트워크 송수신기 및 기타 컴포넌트들에 대한 액세스를 획득하고, 데이터를 수신하고, 그리고 적절한 위치에 그 데이터를 저장하는 것을 포함하여 모바일 데이터 다운로드를 수행하는 데 상당한 양의 설정 및 테어다운(teardown) 활동이 있을 수 있으므로, 상기 데이터 다운로드를 미리 수행하는 것은 시간을 절약하고, 모바일 장치가 다른 사용자 인터페이스로 전환할 때 상기 모바일 장치에 요구되는 것을 감소시킨다. 여기에 기술된 기술들은 상기 모바일 장치가 다른 데이터와 동시에 미래 데이터를 다운로드하여 데이터 다운로드 횟수를 줄이고, 따라서 모바일 장치가 설정 및 테어다운 활동을 여러 번 수행해야 하는 경우 발생할 수 있는 모바일 장치에 대한 요구를 감소시킨다.
일부 네이티브 애플리케이션들은 그 애플리케이션의 일부인 데이터와 모바일 장치에 저장될 수 있는 데이터를 사용하여 초기 사용자 인터페이스를 생성한다. 그러나, 초기 사용자 인터페이스 및 후속 사용자 인터페이스의 상당 부분은 네트워크로 연결된 서버에서 다운로드한 데이터를 기반으로 동적으로 생성된다. 따라서, 사용자 인터페이스들의 원활한 사용은 모바일 장치로의 효율적인 데이터 전송을 요구한다. 하드웨어 및 네트워크 제약으로 인해, 데이터가 사용되는 사용자 인터페이스가 아직 요청되지 않은 경우 모든 데이터 또는 데이터의 상당 부분이 전송되면 사용자 인터페이스의 업데이트가 지연될 수 있다.
전술한 요지의 다양한 특징들 및 장점들이 도면들과 관련하여 하기에 설명된다. 추가 특징들 및 장점들은 본 명세서 및 청구 범위에 기재된 요지로부터 명백하다.
도 1은 데이터 분산 시스템이 클라이언트 장치들에 데이터를 분산하는 예시적인 환경이다.
도 2는 데이터가 제시되는 예시적인 사용자 인터페이스를 나타낸다.
도 3은 예측된 다음 액션을 결정하고, 그 예측된 다음 액션에 대한 다음 액션을 데이터를 사전 캐싱하는 예시적인 프로세스의 흐름도이다.
도 4는 예측된 다음 액션을 결정하고, 그 예측된 다음 액션에 대한 다음 액션 데이터를 사전 캐싱하는 예시적인 프로세스의 흐름도이다.
도 5는 예측된 다음 액션들을 결정하는데 사용되는 예측 모델들에 대한 성능 메트릭(performance metrics)을 유지하기 위한 예시적인 프로세스의 흐름도이다.
일반적으로, 본 명세서에 설명된 시스템들 및 기술들은 사용자가 데이터를 요청하기 전에 그 데이터를 사전 캐싱함으로써 그 데이터를 획득하고 제시할 때의 지연시간을 단축시킬 수 있다. 시스템은 사용자가 애플리케이션의 사용자 인터페이스에서, 예를 들어, 모바일 장치에서 실행하는 모바일 애플리케이션 또는 웹 브라우저에서 실행하는 웹 애플리케이션에서 수행할 가능성이 있는 하나 이상의 예측된 다음 액션들(예를 들어, 미래 액션들)을 결정할 수 있다. 상기 시스템은 사용자가 실제로 예측된 다음 액션을 수행하면 사용자 인터페이스(또는 애플리케이션이 데이터를 제공하기 위해 전환하는 다른 사용자 인터페이스)에서 제시될 데이터를 식별하고, 사용자가 그 액션을 수행하기 전에 사용자의 클라이언트 장치에서 그 데이터를 사전 캐싱할 수 있다.
상기 시스템은 사용자 인터페이스의 컨텍스트를 기반으로 예측된 다음 액션을 결정할 수 있다. 예를 들어, 사용자는 특정 유형의 데이터가 그 사용자 인터페이스에 제시될 때 특정 액션을 수행할 가능성이 더 높을 수 있다. 상기 예측된 다음 액션을 결정하기 위해 사용되는 사용자 인터페이스 컨텍스트 데이터는 예를 들어, 제시되는 데이터의 유형, 그 데이터가 속하는 그룹, 그 데이터의 롤업 레벨, 현재 제시되는 애플리케이션의 탭, 상기 사용자 인터페이스의 상태 및/또는 기타 적절한 컨텍스트 데이터를 포함할 수 있다.
상기 시스템은 사용자가 과거에 수행한 다른 사용자들 및/또는 상기 사용자 인터페이스를 보는 액션들에 기초하여 상기 예측된 다음 액션을 결정할 수 있다. 예를 들어, 상기 시스템은 소정의 사용자 인터페이스에서 수행될 수 있는 일련의 액션들(예컨대, 사용자 상호작용들)에 대해, 상기 액션이 상기 사용자(들)에 의해 수행된 횟수를 유지할 수 있다. 상기 시스템은 또한 하나 이상의 사용자 인터페이스 컨텍스트에 대해, 상기 사용자 인터페이스가 상기 사용자 인터페이스 컨텍스트와 매칭하는 컨텍스트를 가질 때 각 액션이 수행된 횟수를 유지할 수 있다. 예를 들어, 하나의 사용자 인터페이스 컨텍스트는 특정 데이터 유형을 갖는 특정 데이터 그룹의 프레젠테이션에 의해 정의될 수 있다. 이 사용자 인터페이스 컨텍스트의 경우, 상기 시스템은 상기 사용자 인터페이스가 상기 특정 데이터 유형을 갖는 특정 데이터 그룹을 나타낼 때 각 액션이 수행된 횟수의 카운트를 유지할 수 있다. 일부 구현예들에서, 상기 시스템은 상기 사용자 인터페이스가 상기 특정 데이터 유형을 갖는 특정 데이터 그룹을 제시할 때 과거에 가장 많이 수행된 액션들 중 하나 이상을 상기 예측된 다음 액션(들)으로서 선택할 수 있다.
일부 구현예들에서, 상기 예측된 다음 액션은 현재 상기 사용자 인터페이스를 제시하고 있는 상기 애플리케이션과는 다른 애플리케이션을 사용하여 데이터를 제세하는 것을 포함할 수 있다. 이 예에서, 상기 시스템은 상기 예측된 다음 액션이 실제로 수행되는 경우에 상기 애플리케이션을 로딩할 때의 지연시간을 줄이기 위해, 상기 클라이언트 장치에서 상기 다른 애플리케이션을 로딩하기 위한 코드를 사전 캐싱할 수 있다. 예를 들어, 상기 시스템은 상기 다른 웹 애플리케이션이 상기 예측된 다음 액션에 의해 요구되는 데이터를 제시하는데 사용될 경우, 상기 클라이언트 장치에 의해 현재 제시된 웹 페이지에서 다른 웹 애플리케이션을 로딩하는데 사용되는 스크립트들을 사전 캐싱할 수 있다. 이를 통해 상기 클라이언트 장치는 불필요한 지연없이 동일한 웹 페이지(또는 다른 웹 페이지들 내의) 내의 웹 애플리케이션들 간에 유동적으로 전환할 수 있다. 또한, 상기 시스템은 그 데이터를 획득하기 위해 상기 클라이언트 장치에 불필요한 요구와 지연을 회피하기 위해 다른 웹 애플리케이션에 제시될 데이터를 미리 캐싱할 수 있다.
일부 구현예들에서, 이 문서에서 설명된 기술들은 제1 장치와는 다른 제2 장치의 사용자 인터페이스의 컨텍스트 또는 보다 일반적으로는 상기 제2 장치와의 사용자 상호 작용에 기초하여 상기 제1 장치의 애플리케이션에 대한 데이터를 사전 캐싱하는데 사용될 수 있다. 예를 들어, 인공 지능(AI) 어시스턴트(assistant)(예를 들어, 인공 지능 어시스턴트에 제공된 요청들 또는 요청된 질문들)와의 사용자 상호 작용은 사용자가 다른 장치에서 수행할 가능성이 있는 액션들을 식별하고, 상기 다른 장치에서 상기 식별된 액션들에 대한 데이터를 사전 캐싱하는 데 사용될 수 있다. 특정 예에서, 사용자는 AI 어시스턴트에게 특정 위치 근처에서 러닝 트레일(running trails)을 요청할 수 있다. 이에 응답으로, 시스템은 사용자가 웨어러블 장치(예를 들어, 스마트 워치) 또는 스마트폰 상의 활동 모니터링 애플리케이션에 액세스할 가능성이 있음을 결정할 수 있고, 그 웨어러블 장치 또는 스마트폰에서 그 활동 모니터링 애플리케이션에 대한 데이터를 사전 캐싱할 수 있다.
CDAP(Cross-device action prediction)들은 또한 스마트 차량들(예를 들어, 차량 내 컴퓨팅 기능이 있는 자동차들), 자율 차량들, 스마트 TV들, 스마트 가전기기들 및/또는 기타 적절한 스마트 기기들과 같은 다른 기기들에도 적용될 수 있다. 예를 들어, 상기 시스템은 사용자가 AI 어시스턴트에게 차량 내 컴퓨팅 장치, 차량의 내비게이션 시스템 또는 자율주행 차량의 내비게이션 시스템의 애플리케이션의 특정 레스토랑에 대해 내비게이션 명령어들을 사전 캐싱하도록 그 특정 레스토랑에 대해 요청한 데이터를 사용할 수 있다.
도 1은 데이터 분산 시스템(110)이 클라이언트 장치들(150)에 데이터를 분산하는 예시적인 환경(100)이다. 데이터 분산 시스템(110)은 근거리 통신망(LAN), 광역 통신망(WAN), 인터넷, 모바일 네트워크, 또는 이들의 조합과 같은 데이터 통신 네트워크(130)를 통해 클라이언트 장치들(150)에 데이터를 전송할 수 있다. 클라이언트 장치들(150)은 스마트폰들, 태블릿 컴퓨터들, 랩탑 컴퓨터들, 데스크톱 컴퓨터들, 스마트 워치들, 및/또는 다른 유형의 모바일 및 비-모바일 컴퓨팅 장치를 포함할 수 있다.
클라이언트 장치(150)는 하나 이상의 애플리케이션들(154)을 포함할 수 있다. 예를 들어, 상기 클라이언트 장치는 하나 이상의 모바일 애플리케이션들(예컨대, 모바일 애플리케이션들)을 포함할 수 있다. 모바일 애플리케이션은 특정 유형의 장치 또는 특정 플랫폼용으로 개발된 네이티브 애플리케이션이 될 수 있다. 애플리케이션들(154)은 웹 브라우저에서 실행되는 웹 애플리케이션들을 포함할 수 있다. 웹 애플리케이션들은 클라이언트 장치(150)에 다운로드되고 그리고 웹 애플리케이션을 포함하는 웹 페이지가 웹 브라우저에서 열릴 때 그 웹 브라우저에서 실행되는 코드, 예를 들어 스크립트들을 포함할 수 있다.
각각의 애플리케이션(154)은 클라이언트 장치(150)의 디스플레이에 의해 제시되는 하나 이상의 사용자 인터페이스(152)를 생성할 수 있다. 사용자 인터페이스(152)는 이미지들, 비디오들, 그래프들 등과 같은 데이터 및 다른 콘텐츠를 나타낼 수 있다. 사용자 인터페이스(152)는 또한 사용자가 애플리케이션 내(또는 애플리케이션 외부)에서 탐색하고, 데이터를 수정하고, 데이터를 분류하고, 데이터를 필터링하고, 추가 또는 다른 데이터를 요청하고 및/또는 다른 적절한 액션들을 수행할 수 있게 하는 사용자 인터페이스 구성요소들을 포함할 수 있다. 예를 들어, 사용자 인터페이스(152)는 사용자가 디스플레이 스크린들 사이를 탐색하고, 데이터를 수정하고, 데이터를 분류하고, 데이터를 필터링할 수 있게 하는 버튼들, 아이콘들, 슬라이더 바들 및 다른 구성요소들을 포함할 수 있다. 사용자 인터페이스(152)는 상이한 데이터 또는 상이한 유형의 데이터를 나타내는 다수의 탭들을 포함할 수 있다. 사용자는 원하는 탭을 선택하여 그 탭들 사이를 탐색 할 수 있다. 다른 예에서, 사용자 인터페이스는 사용자가 특정 날짜 및 시간 범위로 데이터를 필터링할 수 있게 하는 날짜 및 시간 범위 선택기를 포함할 수 있다. 예시적인 사용자 인터페이스는 도 2에 도시되며, 아래에 설명된다. 이 문서의 목적상 사용자 인터페이스들은 일반적으로 설명된다. 그러나, 상기 기술들은 클라이언트 장치의 상태 및/또는 클라이언트 장치와의 이전 상호 작용과 같은 클라이언트 장치에 관한 다른 데이터에 적용될 수 있다. 또한, 이 문서 전반에 걸쳐 사용된 바와 같이, 용어 사용자 인터페이스는 그래픽 사용자 인터페이스에 제한되지 않고, 가청 사용자 인터페이스들 및 다른 사용자 인터페이스들을 포함할 수 있다.
애플리케이션들(154)은 데이터 분산 시스템(110)으로부터 수신된 데이터를 사용자 인터페이스(152)에 제시할 수 있다. 데이터 분산 시스템(110)은 하나 이상의 애플리케이션(154)에 대한 데이터를 유지하고, 클라이언트 장치(150)로부터 수신된 요청들에 응답하여 애플리케이션(들)(154)에 데이터를 제공할 수 있다. 예를 들어, 클라이언트 장치(150)가 애플리케이션(154)을 로딩할 때, 애플리케이션(154)은 네트워크(130)를 통해 데이터 분산 시스템(110)에 요청을 전송할 수 있다. 상기 요청은 애플리케이션(154)에 의해 제시될 데이터를 지정할 수 있다. 또한, 사용자는 추가 또는 상이한 데이터를 요청하기 위해 애플리케이션(154)에 의해 생성되고 제시된 사용자 인터페이스(들)(152)를 사용할 수 있다. 그 다음, 애플리케이션(154)은 데이터 분산 시스템(110)에 그 데이터를 요청할 수 있다.
클라이언트 장치(150)는 또한 고속 캐시(156)를 포함한다. 고속 캐시(156)는 클라이언트 장치(150)에 설치된 하나 이상의 고속 메모리 장치들을 포함할 수 있다. 예를 들어, 고속 캐시(156)는 SRAM(static random-access memory) 및/또는 SSD(solid state memory) 장치들을 포함할 수 있다. 클라이언트 장치(150)는 또한 하드 드라이브, 플래시 메모리 등과 같은 다른 메모리 저장 장치를 포함할 수 있다.
고속 캐시(156)는 클라이언트 장치(150)의 사용자에 의해 아직 요청되지 않은 데이터를 포함하여 상기 애플리케이션(154)에 대한 데이터를 저장할 수 있다. 예를 들어, 애플리케이션(154)(또는 다른 전용 애플리케이션)은 사용자가 수행할 가능성이 있는 하나 이상의 예측된 다음 액션들을 결정할 수 있다. 상기 예측된 다음 액션(들)은 적어도 사용자에 의해 수행되는 임계 확률을 갖는 액션들일 수 있다. 애플리케이션(154)은 또한 사용자가 상기 예측된 다음 액션을 수행하는 경우에 제시될 데이터를 데이터 분배 시스템(110)에 요청할 수 있다. 애플리케이션(154)은 사용자가 상기 예측된 다음 액션을 수행하기 전에 그리고 사람의 개입없이 상기 요청을 송신할 수 있다. 예를 들어, 애플리케이션(154)은 트리거 이벤트(예를 들어, 데이터 및 시간 범위 선택기의 선택)에 응답하여 상기 예측된 다음 액션을 자동으로 결정하고, 상기 예측된 다음 액션을 결정하는 것에 응답하여 상기 데이터를 요청할 수 있다. 애플리케이션(154)이 데이터를 수신할 때, 애플리케이션(154)은 고속 캐시(156)에 상기 수신된 데이터를 저장할 수 있으므로 사용자가 상기 예측된 다음 액션을 후속적으로 수행하는 경우에 상기 데이터를 신속하게 제시할 수 있다.
일부 구현예들에서, 상기 예측된 다음 액션을 위해 수신된 데이터는 하드 드라이브, 플래시 메모리, 또는 고속 캐시(156)와는 상이한 다른 메모리 저장 장치에 저장될 수 있다. 이러한 메모리를 사용하는 것은 고속 캐시(156)를 사용하는 것만 큼 빠르지 않을 수 있지만, 사용자가 상기 예측된 다음 액션을 수행한 후에 네트워크(130)를 통해 그 데이터를 요청할 때 걸리는 지연시간은 여전히 제거되거나 감소된다.
애플리케이션(154)은 다음 액션 모델(158)을 사용하여 사용자에 대한 예측된 다음 액션을 결정할 수 있다. 일부 구현예들에서, 다음 액션 모델(158)은 애플리케이션에 따라 다르다. 예를 들어, 애플리케이션(154)은 애플리케이션(154)의 사용자 인터페이스(152)가 제시되는 사용자에 대한 예측된 다음 액션을 결정하는 해당 다음 액션 모델(158)을 가질 수 있다. 다른 예에서, 애플리케이션(154)은 각각의 사용자 인터페이스(152) 또는 애플리케이션(154)에 의해 생성되고 제시되는 사용자 인터페이스(152)의 세트에 대한 각각의 다음 액션 모델(158)을 가질 수 있다. 이 예에서, 다음 액션 모델(154)은 다음 액션 모델의 각각의 사용자 인터페이스(들)가 제시되는 사용자들에 대한 예측된 다음 액션을 결정하는데 사용될 수 있다.
일부 구현예들에서, 애플리케이션(154)은 사용자별 다음 액션 모델들(158)을 가질 수 있다. 애플리케이션(154)에 대한 사용자별 다음 액션 모델은 특정 사용자가 애플리케이션(154)의 하나 이상의 사용자 인터페이스에서 수행할 가능성이 있는 예측된 다음 액션을 결정하는 데 사용될 수 있다. 애플리케이션(154)은 또한 복수의 사용자에 대한 예측된 다음 액션을 결정하는데 사용되는 일반적인 다음 액션 모델을 가질 수 있다. 아래에서보다 상세히 설명되는 바와 같이, 애플리케이션(154)은 사용자가 애플리케이션(154)의 사용자 인터페이스들에서 수행한 액션들의 수에 기초하여 특정 사용자에 대한 일반 모델과 사용자별 모델 중 하나를 선택할 수 있다.
애플리케이션(154)에 대한 다음 액션 모델(158)은 애플리케이션(154)의 사용자 인터페이스(152)에서 수행될 수 있는 액션들의 세트 내의 각각의 액션에 대해 그 액션이 수행될 확률을 지정할 수 있다. 예를 들어, 다음 액션 모델(158)은 제1 액션이 사용자 인터페이스(152)에서 수행되는 50% 확률을 갖는 반면 제2 액션은 사용자 인터페이스(152)에서 수행되는 45% 확률을 갖는 것으로 지정할 수 있다. 이 예에서, 애플리케이션(154)은 가장 높은 확률을 갖는 다음 액션들 중 하나 이상을 상기 예측된 다음 액션(들)으로서 선택할 수 있다. 아래에서보다 상세하게 설명되는 바와 같이, 애플리케이션(154)에 대한 다음 액션 모델(158)에 의해 지정된 확률은 애플리케이션(154)의 사용자 인터페이스들에서 수행된 이전 액션들에 기초할 수 있다.
애플리케이션에 대한 다음 액션 모델(들)(158)은 사용자에게 제시되는 사용자 인터페이스의 컨텍스트에 기초하여 상기 예측된 다음 액션을 결정하는데 사용될 수 있다. 사용자 인터페이스 컨텍스트는 사용자 인터페이스의 하나 이상의 속성들의 세트에 의해 정의될 수 있다. 예를 들어, 상기 사용자 인터페이스 컨텍스트는 제시되는 데이터의 유형(예를 들어, 성능 데이터, 이력 데이터, 계정 데이터, 콘텐츠 아이템 배포 기준), 데이터가 속하는 그룹(예를 들어, 데이터가 속하는 계정), 데이터의 특성(예를 들어, 데이터가 속하는 계정의 크기), 데이터의 롤업 레벨, 현재 제시되고 있는 애플리케이션의 탭, 사용자 인터페이스의 상태, 및/또는 사용자 인터페이스에 의해 제시되는 사용자 인터페이스 또는 데이터의 다른 적절한 속성들과 같은 속성들에 의해 정의될 수 있다. 상기 데이터의 롤업 레벨은 데이터가 집계되는 계층 레벨을 지정할 수 있다. 예를 들어, 이벤트의 각 반복마다 성능 데이터를 획득할 수 있다. 이 성능 데이터는 일별 합계, 주간 합계, 월별 합계 등에 대해 집계될 수 있다. 이 예에서, 월간 합계는 주간 합계보다 롤업 레벨이 높고, 주간 합계는 일일 합계보다 롤업 레벨이 높다.
다른 예에서, 복수의 상이한 계층 레벨들에서 통계를 집계할 수 있다. 예를 들어, 축구 선수의 통계는 게임 레벨, 시즌 레벨 및 경력 레벨에서 집계될 수 있다. 이 예에서, 경력 레벨은 시즌 레벨보다 롤업 레벨이 높고, 시즌 레벨은 게임 레벨보다 롤업 레벨이 높다.
애플리케이션(154)에 대한 다음 액션 모델(들)(158)은 각각의 사용자 인터페이스 컨텍스트(예컨대, 사용자 인터페이스의 하나 이상의 속성들의 각각의 세트)에 대해, 액션들의 세트 각각이 수행될 확률을 지정할 수 있다. 애플리케이션(154)이 예측된 다음 액션을 결정하도록 다음 액션 모델(들)을 사용할 때,
애플리케이션(154)은 사용자에게 현재 제시되고 있는 사용자 인터페이스의 속성들을 적절한 다음 액션 모델(158)의 사용자 인터페이스 컨텍스트들의 속성들과 비교할 수 있다(예를 들어, 사용자 및/또는 사용자 인터페이스에 대한 다음 액션 모델 또는 복수의 사용자 및/또는 사용자 인터페이스에 대한 일반적 다음 액션 모델). 애플리케이션(154)은 다음 액션 모델(154)에 의해 지정된 액션들의 확률들을 평가하고, 그 확률들에 기초하여 상기 액션들중 하나 이상(예를 들어, 가장 높은 확률들을 갖는 상위 N개 액션들)을 예측된 다음 액션들로서 선택한다. 그 다음, 애플리케이션(154)은 사용자가 상기 예측된 다음 액션(들)을 수행하는 경우 애플리케이션(154) (또는 다른 애플리케이션)에 의해 제시될 데이터를 데이터 분산 시스템(110)에 요청할 수 있다. 상기 데이터가 데이터 분산 시스템(110)으로부터 수신되면, 애플리케이션(154)은 상기 데이터를 고속 캐시(156)에 저장할 수 있다.
현재 사용자 인터페이스의 속성(들)이 다음 액션 모델(158)에 대한 사용자 인터페이스 컨텍스트의 속성(들)과 매칭하지 않으면, 애플리케이션(154)은 현재 사용자 인터페이스와 가장 유사한 사용자 인터페이스 컨텍스트를 선택할 수 있다. 예를 들어, 애플리케이션(154)은 상기 현재 사용자 인터페이스와 사용자 인터페이스 컨텍스트 사이에서 매칭하는 속성의 수가 가장 많은 사용자 인터페이스 컨텍스트를 선택할 수 있다.
일부 구현예들에서, 애플리케이션(154)에 대한 다음 액션 모델(들)(158)은 기계 학습 기술들을 사용하여 훈련된 예측 모델을 포함할 수 있다. 예를 들어, 상기 다음 액션 모델(들)(158)은 사용자 인터페이스들의 특징들(예를 들어, 속성들) 및 사용자 인터페이스가 특정 컨텍스트를 가질 때 사용자들에 의해 수행되는 액션들을 특정하는 과거 액션 데이터를 사용하여 훈련될 수 있다. 사용자에게 제시되는 사용자 인터페이스의 속성들은 상기 예측 모델에 적용될 수 있고, 그 예측 모델은 액션들 세트 각각에 대한 확률들을 출력할 수 있다. 그 다음, 애플리케이션(154)은 상기 확률들에 기초하여 상기 예측된 다음 액션(들)을 선택할 수 있다.
일부 구현예들에서, 예측 모델은 클라이언트 장치(150)에서 예측된 다음 액션들과 확률들 사이의 매핑으로 변환될 수 있다. 각각의 매핑은 각각의 예측된 다음 액션과 소정의 사용자 인터페이스 컨텍스트에 대해 발생하는 각각의 예측된 다음 액션의 확률 사이의 매핑일 수 있다. 이러한 방식으로, 애플리케이션(154)은 애플리케이션(154)이 사용자 인터페이스의 속성들을 상기 예측 모델에 적용해야 하는 경우보다 상기 맵핑에서 상기 확률들을 보다 빠르게 검색할 수 있다.
일부 구현예들에서, 다음 액션 모델(158)은 사용자에 의해 수행되는 경우 클라이언트 장치(150)가 상기 액션이 수행되는 애플리케이션과 상이한 다른 애플리케이션을 로딩하게 하는 다음 액션을 결정할 수 있다. 예를 들어, 사용자는 웹 브라우저에서 실행하는 제1 웹 애플리케이션에서 계정 데이터의 요약을 볼 수 있다. 제2 웹 애플리케이션을 사용하여 제시되는 보다 상세한 데이터를 보기 위해, 사용자는 상기 웹 브라우저가 제2 웹 애플리케이션이 실행되는 다른 웹 페이지로 네비게이팅하게 하는 네비게이션 버튼을 선택할 수 있다. 다른 예에서, 사용자 인터페이스의 선택은 웹 브라우저가 동일한 웹 페이지 내에서 다른 웹 애플리케이션을 로딩하게 할 수 있다.
다음 액션 모델(158)을 사용하여 결정된 다음 액션이 클라이언트 장치(150)로 하여금 다른 애플리케이션을 로딩하게 되면, 애플리케이션(154)은 상기 다른 애플리케이션에 대한 코드를 요청하거나 클라이언트 장치(150)가 그 클라이언트 장치의 백그라운드에서 상기 다른 애플리케이션을 로딩하게 할 수 있다. 예를 들어, 상기 다른 애플리케이션이 웹 애플리케이션이라면, 상기 웹 애플리케이션에 대한 코드가 획득되어 고속 캐시(156)에 저장될 수 있다. 상기 다른 애플리케이션이 모바일 애플리케이션이라면, 상기 모바일 애플리케이션은 클라이언트 장치(150)의 백그라운드에 로딩될 수 있다. 또한, 애플리케이션(154)은 상기 예측된 다음 액션이 수행되면 제시될 데이터를 요청할 수 있다. 이 데이터는 또한 고속 캐시(156)에 저장 될 수 있다. 사용자가 상기 예측된 다음 액션을 수행하기 전에 상기 애플리케이션을 로딩하고(또는 애플리케이션을 로딩하기 위한 코드를 획득) 상기 데이터를 획득함으로써, 상기 애플리케이션은 로딩(또는 제시)될 수 있고, 상기 데이터는 클라이언트 장치(150)가 상기 예측된 다음 액션이 수행될 때까지 대기하는 경우보다 빠르게 제시될 수 있다.
일부 구현예들에서, 애플리케이션(154)은 사용자 인터페이스(152)에서 수행될 수 있는 각 유형의 액션을 위한 개별 다음 액션 모델(158)을 포함할 수 있다. 예를 들어, 애플리케이션(154)은 애플리케이션(154)이 새로운 탭 또는 페이지로 네비게이팅하게 하는 장소 변경 액션들에 대한 다음 액션 모델과 상기 사용자 인터페이스에서 제시되는 데이터의 범위를 변경(예를 들어, 필터링 또는 롤업 레벨 변경)하는 범위 변경 액션들에 대한 또 다른 다음 액션 모델을 포함할 수 있다. 상기 적절한 다음 액션 모델은 액션 유형에 대한 트리거 이벤트를 기반으로 선택될 수 있다. 예를 들어, 애플리케이션(154)은 범위 변경 모델을 사용하여 사용자가 날짜 및 시간 범위 선택자 사용자 인터페이스 구성요소를 선택하는 사용자에 응답하여 그 사용자가 선택할 가능성이 높은 날짜 및 시간의 범위를 예측할 수 있다. 일부 구현예들에서, 애플리케이션(154)은 복수의 다음 액션 모델을 사용하여 복수의 예측된 다음 액션들을 결정하고, 사용자가 상기 액션들을 수행하기 전에 복수의 예측된 다음 액션들의 각각에 대한 데이터를 획득하여 고속 캐시(156)에 저장할 수 있다. 예를 들어, 애플리케이션(154)은 예측된 다음 장소 변경 액션을 결정하기 위한 장소 변경 다음 액션 모델 및 예측된 다음 범위 변경 액션을 결정하기 위한 범위 변경 다음 액션 모델을 사용할 수 있다. 그 다음, 애플리케이션(154)은 상기 예측된 다음 액션들 모두에 대한 데이터를 획득하여 고속 캐시(156)에 저장할 수 있다.
데이터 분산 시스템(110)은 데이터에 대한 요청들을 수신하고, 그 요청들에 응답하여 상기 데이터를 제공하는 프론트-엔드 서버(112)를 포함한다. 예를 들어, 프론트-엔드 서버(112)는 클라이언트 장치(150)의 애플리케이션들(154)으로부터 데이터에 대한 요청들을 수신할 수 있다. 상기 요청들은 다음 액션 모델(들)(158)을 사용하여 결정된 예측된 다음 액션들에 기초한 다음 액션 데이터에 대한 요청들을 포함할 수 있다.
프런트-엔드 서버(112)는 데이터 관리 서버(116)에 상기 요청들을 제공할 수 있다. 데이터 관리 서버(116)는 애플리케이션 데이터 저장 장치(124)(예를 들어, 하드 드라이브(들), 플래시 메모리 등)로부터 적절한 데이터를 획득하고, 그 데이터를 프론트-엔드 서버(112)에 제공할 수 있다. 그 다음, 프론트-엔드 서버(112)는 데이터 통신 네트워크(130)를 통해 상기 요청이 수신된 클라이언트 장치(150)로 상기 데이터를 송신할 수 있다.
데이터 관리 서버(116)는 클라이언트 장치(150)의 애플리케이션들(154)과 같은 애플리케이션들에 대한 데이터를 관리할 수 있다. 데이터 관리 서버(116)는 애플리케이션 개발자들로부터, 애플리케이션들에 의해 디스플레이된 데이터를 집계하는 서버들 또는 다른 소스들로부터 데이터를 수신할 수 있고, 애플리케이션 데이터 저장 장치(124)에 그 데이터를 저장할 수 있다.
데이터 분산 시스템(110)은 또한 다음 액션 예측 서버(114)를 포함한다. 다음 액션 예측 서버(114)는 다음 액션 모델들(158)을 생성하고, 다음 액션 모델들(158)을 업데이트하고, 다음 액션 모델(158)의 성능을 모니터링하고, 및/또는 애플리케이션(154)에 대한 예측된 다음 액션을 결정할 수 있다.
다음 액션 예측 서버(114)는 액션 데이터 저장 장치(120)에 저장된 액션 데이터에 기초하여 다음 액션 모델들을 생성할 수 있다. 상기 액션 데이터는 애플리케이션(154)의 특정 사용자 인터페이스(152)에 대해 사용자 인터페이스(152)에서 수행된 액션들을 지정할 수 있다. 상기 액션 데이터는 또한 액션들이 발생할 때의 사용자 인터페이스(152)의 컨텍스트를 지정할 수 있다. 예를 들어, 상기 액션 데이터는 애플리케이션(154)의 사용자 인터페이스(152)에서 수행되는 (잠재적 액션들의 세트의) 각각의 액션에 대해, 상기 액션이 수행되었을 때 제시된 사용자 인터페이스를 식별하는 데이터 및 상기 액션이 수행되었을 때 사용자 인터페이스의 하나 이상의 속성들을 포함할 수 있다. 상술한 바와 같이, 상기 속성들은 상기 데이터가 속하는 그룹에 제시되는 데이터의 유형, 상기 데이터의 특성, 상기 데이터의 롤업 레벨, 현재 제시되고 있는 애플리케이션의 탭, 사용자 인터페이스의 상태, 및/또는 사용자 인터페이스에 의해 제시되는 사용자 인터페이스 또는 데이터의 다른 적절한 속성들을 포함할 수 있다. 또한, 상기 액션 데이터는 애플리케이션의 사용자 인터페이스(152)에서 수행되는 각각의 액션에 대해, 상기 액션이 수행된 시간 및/또는 상기 액션을 수행한 사용자에 대한 고유 익명 식별자를 포함할 수 있다.
애플리케이션(154)은 애플리케이션(154)의 사용자 인터페이스(152)에서 수행된 액션들을 검출하는 것에 응답하여 프론트-엔드 서버(112)에 액션 데이터를 전송하도록 구성될 수 있다. 예를 들어, 사용자가 특정 데이터 세트를 특정 날짜 및 시간 범위로 필터링하도록 애플리케이션의 사용자 인터페이스(152)의 필터링 구성요소를 사용하는 경우, 애플리케이션(154)은 사용자에 대한 필터링을 수행하여 그 필터링된 데이터를 사용자 인터페이스(152)에 제시할 수 있다. 애플리케이션(154)은 또한 예를 들어 날짜 및 시간 범위, 특정 데이터 세트의 속성들(예를 들어, 데이터가 속하는 그룹, 데이터의 유형, 데이터가 속하는 계정 등), 상기 액션이 수행된 사용자 인터페이스(152)의 속성들, 상기 액션이 수행된 시간 및 사용자 또는 사용자 장치(150)에 대한 고유 식별자를 지정하는 액션 데이터를 프론트-엔드 서버(112)에 전송할 수 있다. 프론트-엔드 서버(112)는 상기 액션 데이터를 다음 액션 예측 서버(114)에 전송할 수 있고, 다음 액션 예측 서버(114)는 액션 데이터 저장 장치(120)에 상기 액션 데이터를 저장할 수 있다. 애플리케이션(154)은 상기 액션이 수행된 후 및/또는 주기적으로 각 액션에 대한 액션 데이터를 전송할 수 있다.
다음 액션 예측 서버(114)는 애플리케이션(154)에 대한 하나 이상의 다음 액션 모델들(158)을 생성하고, 그 다음 액션 모델 데이터 저장 장치(118)에 상기 다음 애플리케이션 모델(들)을 저장할 수 있다. 애플리케이션(154)은 또한 애플리케이션(154)이 클라이언트 장치(150)에서 예측된 다음 액션들을 결정할 수 있도록 다음 액션 모델들(158)을 포함할 수 있다. 아래에서보다 상세하게 설명되는 바와 같이, 다음 액션 예측 서버(114)는 애플리케이션(154)에 대한 상기 예측된 다음 액션들을 결정하도록 상기 다음 액션 모델들(158)을 사용할 수 있다.
다음 액션 예측 서버(114)는 액션 데이터 저장 장치(120)에 저장된 애플리케이션(154)에 대한 액션 데이터에 기초하여 애플리케이션(154)에 대한 다음 액션 모델(들)(158)을 생성할 수 있다. 상기한 바와 같이, 다음 액션 모델(158)은 사용자 인터페이스의 사용자 인터페이스 컨텍스트에 기초하여 수행되는 액션의 확률들을 지정할 수 있다. 이 예에서, 다음 액션 예측 서버(114)는 각각의 액션이 각 사용자 인터페이스 컨텍스트에 대해 발생한 횟수에 기초하여 상기 액션들에 대한 확률들을 결정할 수 있다. 예를 들어, 애플리케이션(154)에 대한 상기 사용자 인터페이스가 특정 사용자 인터페이스 컨텍스트를 가질 때 특정 액션이 10회 발생하고, 상기 사용자 인터페이스가 상기 특정 사용자 인터페이스 컨텍스트를 가질 때 총 100회의 액션이 상기 사용자 인터페이스에서 수행될 때, 그 특정 액션의 확률은 10%(10/100)일 수 있다.
일부 구현예들에서, 더 최근의 액션들은 그 액션들에 대한 확률들을 결정할 때 더 높은 가중치를 부여받는다. 예를 들어, 액션의 가중치는 시간이 지남에 따라 감소할 수 있다. 이러한 방식으로, 더 대중적인(예를 들어, 특정 기간 내에 더 자주 발생하는) 최근의 액션들은 더 높은 확률을 가질 수 있으며, 그 결과 상기 액션은 예측된 다음 액션이 될 수 있다. 일부 구현예들에서, 특정 액션에 대한 확률은 다음 수학식 1의 관계(Relationship)를 사용하여 수신되는 새로운 액션에 대한 데이터를 기반으로 업데이트된다.
[수학식 1]
관계(1) ρ=(1-α)ρ+α
관계(2) ρ=(1-α)ρ
이 예인 경우, (ρ)는 상기 특정 액션이 수행될 확률이고, (α)는 가중치 감소 정도이다. 이 예에서, 상기 특정 액션이 수행하면 관계(1)를 사용하여 상기 특정 액션이 발생할 확률이 업데이트된다. 상기 특정 액션이 수행되지 않으면, 관계(2)를 사용하여 상기 확률이 업데이트된다. 이러한 관계들을 사용하면 n 번째 가장 최근의 액션은 (1-α)n의 가중치를 갖게 될 것이다.
상기한 바와 같이, 애플리케이션(154)은 사용자별 다음 액션 모델들(158) 및 복수의 사용자에 대한 일반적인 다음 액션 모델들을 가질 수 있다. 특정 사용자에 대한 사용자별 액션 모델은 상기 특정 사용자에 대한 액션 데이터를 사용하여 생성및 업데이트될 수 있다. 일반적인 다음 액션 모델들은 복수의 다른 사용자들에 대한 액션 데이터를 사용하여 생성 및 업데이트될 수 있다.
일부 구현예들에서, 다음 액션 예측 서버(114)는 다음 액션 모델(158)에 영향을 주는 새로운 액션 데이터가 수신될 때마다 다음 액션 모델(158)을 업데이트한다. 그 다음, 다음 액션 예측 서버(114)는 상기 업데이트된 다음 액션 모델(158)을 클라이언트 장치들(150)에서 애플리케이션들(154)로 전송할 수 있다.
일부 구현예들에서, 다음 액션 예측 서버(114)는 상이한 유형의 액션들에 대한 다음 액션 모델(158)을 생성한다. 예를 들어, 전술한 바와 같이, 애플리케이션(154)은 상이한 유형의 액션들에 대해 별도의 다음 액션 모델을 가질 수 있다. 이 예에서, 다음 액션 예측 서버(114)는 이러한 유형의 액션들에 대한 액션 데이터를 사용하여 특정 유형의 액션에 대한 다음 액션 모델을 생성할 수 있다. 예를 들어, 다음 액션 예측 서버(114)는 사용자 인터페이스가 특정 컨텍스트를 가질 때 특정 액션이 수행된 횟수 및 상기 사용자 인터페이스가 상기 특정 컨텍스트를 가질 때 상기 특정 유형의 액션들의 총 횟수에 기초하여 상기 특정 유형의 특정 액션에 대한 확률을 결정할 수 있다.
다음 액션 예측 서버(114)는 또한 액션 데이터 저장 장치(120)에 저장된 액션 데이터를 사용한 기계 학습 기술들을 사용하여 예측 모델들을 훈련시킬 수 있다. 예를 들어, 다음 액션 예측 서버(114)는 현재 사용자 인터페이스 컨텍스트에 기초하여 다음 사용자 액션들을 예측하도록 마르코프 체인들(Markov chains)을 생성할 수 있다. 마르코프 체인은 각 액션의 확률이 현재 사용자 인터페이스의 상태(예를 들어, 컨텍스트)에 따라 달라지는 가능한 액션 시퀀스를 사용하는 모델이다.
일부 구현예들에서, 다음 액션 예측 서버(114)는 다음 액션 모델들(158)을 사용하여 애플리케이션의 사용자에 대한 예측된 다음 액션들을 결정한다. 예를 들어, 애플리케이션(154)은 사용자 인터페이스 컨텍스트를 결정하고(예를 들어, 사용자 인터페이스(152)의 하나 이상의 속성들을 식별), 다음 액션 데이터에 대한 요청을 프론트-엔드 서버(112)에 전송할 수 있다. 상기 요청은 상기 사용자 인터페이스 컨텍스트의 하나 이상의 속성들을 포함할 수 있다. 다음 액션 예측 서버(114)는 다음 액션 모델 데이터 저장 장치(118)로부터 적절한 다음 액션 모델(158)을 식별하고, 사용자 인터페이스 컨텍스트에 기초하여 하나 이상의 예측된 다음 액션들을 결정하도록 다음 액션 모델(158)을 사용한다. 예를 들어, 다음 액션 예측 서버(114)는 애플리케이션(154)에 대한 다음 액션 모델(158)을 식별할 수 있다. 애플리케이션(154)이 사용자별 다음 액션 모델들을 갖는다면, 다음 액션 예측 서버(114)는 상기 요청이 수신된 클라이언트 장치(150)의 사용자 및 애플리케이션에 대한 다음 액션 모델을 식별할 수 있다.
다음 액션 예측 서버(114)는 데이터 관리 서버(116)에 상기 예측된 다음 액션(들)을 지정하는 데이터를 제공할 수 있다. 데이터 관리 서버(116)는 사용자가 상기 예측된 다음 액션(들)을 수행하고 프론트-엔드 서버(112)에 그 데이터를 제공하면 클라이언트 장치(150)에 제시될 그 데이터를 식별할 수 있다. 그 다음, 프론트-엔드 서버(112)는 클라이언트 장치(150)에 상기 데이터를 제공할 수 있고, 클라이언트 장치(150)는 고속 캐시(156)에 그 데이터를 저장할 수 있다.
다음 액션 예측 서버(114)는 또한 다음 액션 모델들에 대한 성능 메트릭을 유지하고, 그 성능 메트릭을 성능 데이터 저장 장치(122)에 저장할 수 있다. 다음 액션 모델에 대한 메트릭은 다음 액션 모델에 대한 예측 정확도, 다음 액션 모델에 대한 캐시 히트율 및/또는 다음 액션 모델에 대한 사용자 액션 대기시간을 포함할 수 있다. 다음 액션 모델에 대한 예측 정확도는 다음 액션 모델이 사용자가 다음에 수행한 액션을 예측한 횟수와 다음 액션 모델에 의해 만들어진 예측 총 횟수 사이의 비율에 기반될 수 있다. 다음 액션 모델에 대한 캐시 히트율은 다음 액션 모델이 예측된 다음 액션을 결정하기 위해 사용된 사용자 액션에 응답하는데 필요한 데이터가 고속 캐시(158)에서 발견된 횟수와 그리고 예측된 다음 액션을 결정하기 위해 다음 액션 모델이 사용된 사용자 액션에 응답하여 데이터가 요구된 총 횟수 간의 비율에 기반될 수 있다. 사용자 액션 대기시간은 사용자에 의해 감지된 액션의 대기시간을 나타낼 수 있다. 예를 들어, 사용자 액션 대기시간은 사용자가 액션을 수행하는 시간(예를 들어, 탭을 선택하거나 필터링 기준을 제출하는 시간)부터 새로운 또는 업데이트된 데이터가 클라이언트 장치(150)에서 렌더링되는 시간까지의 대기시간을 나타낼 수 있다. 이 시간은 다음 액션 모델에 대한 총 사용자 액션 대기시간을 결정하기 위해 다음 액션 모델의 다중 사용에 대해 측정되고 집계(예를 들어, 평균화)될 수 있다.
도 2는 데이터가 제시되는 예시적인 사용자 인터페이스(200)를 도시한다. 예시적인 사용자 인터페이스(200)는 웹 브라우저에 제시되는 것으로 도시된다. 사용자 인터페이스(200)는 또한 모바일 애플리케이션에 제시될 수 있다.
사용자 인터페이스(200)는 사용자가 프레젠테이션을 위한 데이터 그룹, 예를 들어 특정 캠페인 또는 계정을 선택할 수 있게 하는 그룹 메뉴(Group Menu)(210)를 포함한다. 예를 들어, 사용자는 마우스를 사용하여 그 그룹을 클릭하거나 그 그룹의 위치에서 터치 스크린 장치를 터치하여 그 그룹을 선택할 수 있다. 상기 그룹의 선택은 사용자 인터페이스(200)를 생성 및 제시하는 애플리케이션에 대한 다음 액션 모델에 의해 예측되는 다음 액션일 수 있다. 또한, 데이터가 제시되는 그룹은 사용자 인터페이스(200)에 대한 사용자 인터페이스 컨텍스트를 정의하는 속성들일 수 있다. 예를 들어, 그룹 2에 대한 데이터를 보는 사용자는 일반적으로 특정 유형의 데이터를 볼 수 있다. 이 예에서, 그룹 2에 대한 데이터가 제시될 때, 다음 액션 모델은 예측된 다음 액션이 특정 유형의 데이터의 선택이고, 상기 애플리케이션이 그룹 2에 대한 특정 유형의 데이터를 사전 캐싱할 수 있는지를 결정하는데 사용될 수 있다.
사용자 인터페이스(200)는 또한 사용자가 제시될 그룹에 대한 데이터 유형을 선택할 수 있게 하는 데이터 유형 메뉴(Data Type Menu)(215)를 포함한다. 상기 선택된 데이터 유형의 데이터 및 상기 선택된 그룹에 대한 데이터는 디스플레이 영역(205)에 제시된다. 전술한 바와 같이, 상기 데이터 유형의 선택은 다음 액션 모델을 사용하여 예측되는 다음 액션일 수 있다. 또한, 제시된 데이터의 유형은 사용자 인터페이스(200)에 대한 사용자 인터페이스 컨텍스트를 정의하는 속성들일 수 있다.
사용자 인터페이스(200)는 또한 사용자가 디스플레이 영역(205)에 제시된 데이터에 대한 날짜 및 시간 범위를 선택할 수 있게 하는 날짜 및 시간 범위 선택기(220)를 포함한다. 이 예에서, 상기 선택한 날짜 및 시간 범위는 11/1/2016 - 11/30/2016이다. 디스플레이 영역(205)에 제시된 데이터는 상기 선택된 날짜 및 시간 범위와 관련된 데이터만 제시되도록 필터링될 수 있다. 사용자 인터페이스(200)는 다른 필터링 기준 또는 데이터의 값들에 기초한 필터링과 같은 다른 필터링 구성요소들을 포함할 수 있다.
특정(또는 관련) 날짜 및 시간 범위의 선택은 다음 액션 모델에 의해 결정되는 다음 액션일 수 있다. 예를 들어, 사용자들은 종종 특정 유형의 데이터를 볼 때 지난 달의 데이터를 볼 수 있다. 이 예에서, 특정 유형의 데이터는 다음 액션 모델이 상기 데이터에 대한 지난달의 선택이 될 다음 액션을 예측할 수 있게 하는 사용자 인터페이스 컨텍스트의 속성이다. 이에 응답하여, 상기 애플리케이션은 예를 들어 상기 선택된 그룹과 같은 특정 데이터 유형의 지난달 데이터를 사전 캐싱할 수 있다. 또한, 날짜 및 시간 범위 선택기(220)의 선택은 상기 애플리케이션이 예측된 다음 액션을 결정하게 하는 트리거 이벤트일 수 있다. 예를 들어, 상기 애플리케이션은 날짜 및 시간 범위 선택기(220)가 선택된 시간에 제시되는 데이터에 대한 그룹 및 데이터 유형이 주어지면 가장 높은 확률을 갖는 다음 액션을 결정하도록 다음 액션 모델을 액세스하고 그 다음 액션 모델을 사용할 수 있다. 이런 방식으로, 상기 데이터는 사용자가 날짜 및 시간 범위 선택기(220)를 사용하여 원하는 날짜 및 시간 범위를 지정하는 동안 사전 캐싱될 수 있다. 다른 트리거 이벤트는 사용자에 의해 입력된 사용자 지정 날짜 및 시간일 수 있다. 예를 들어, 사용자 인터페이스 구성요소는 사용자가 사용자 지정 날짜 및 시간을 지정하고 그리고 그 사용자 지정 날짜 및 시간에 기초하여 상기 데이터를 필터링하도록 소정의 버튼을 선택할 수 있게 할 수 있다. 이 예에서, 상기 애플리케이션은 상기 예측된 다음 액션이 사용자가 상기 데이터를 필터링하기 위해 상기 버튼을 선택하는 것으로 결정할 수 있다. 이에 응답하여, 상기 애플리케이션은 사용자가 상기 버튼을 선택하기 전에 입력된 데이터 및 시간에 대한 데이터 요청을 보낼수 있다.
사용자 인터페이스(200)는 또한 사용자가 디스플레이 영역(205)에 제시된 데이터에 대한 시간 기반 롤업 레벨을 선택할 수 있게 하는 롤업 레벨 선택기(225)를 포함한다. 예를 들어, 롤업 레벨 선택기(225)는 일일 데이터, 월간 데이터 또는 연간 데이터가 디스플레이 영역(205)에 제시되게 할 수 있다. 특정 롤업 레벨의 선택은 다음 액션 모델을 사용하여 결정된 예측된 다음 액션일 수 있다. 예를 들어, 사용자들은 일반적으로 날짜 및 시간 범위가 최소 1개월에서 3개월 미만인 경우 일일 데이터를 볼 수 있다. 이 예에서, 상기 선택된 날짜 및 시간 범위는 다음 액션 모델이 사용자가 수행할 것으로 예상되는 액션이 일일 롤업 레벨의 선택인지를 결정하는 데 사용되게 하는 사용자 인터페이스 컨텍스트의 속성이다.
애플리케이션은 다음 액션 모델을 사용하여 상기 선택한 그룹, 상기 선택한 데이터 형식, 상기 선택한 날짜 및 시간 범위 및 상기 선택한 롤업 수준 중 하나 이상을 기반으로 예측된 다음 액션을 결정할 수 있다. 사용자가 사용자 인터페이스에서 다른 선택을 하면, 상기 애플리케이션은 상기 업데이트된 사용자 인터페이스 컨텍스트 및 다음 액션 모델을 사용하여 후속하는 예측된 다음 액션을 결정하고, 사용자가 상기 예측된 다음 액션들을 수행하기 전에 사용자가 상기 예측된 다음 액션들을 수행하면 사용자 인터페이스 200)에 제시될 데이터를 사전 캐싱할 수 있다.
도 3은 예측된 다음 액션을 결정하고 그리고 예측된 다음 액션에 대한 다음 액션 데이터를 사전 캐싱하는 예시적인 프로세스(300)의 흐름도이다. 프로세스(300)의 동작들은 예를 들어 도 1의 클라이언트 장치(150)와 같은 하나 이상의 데이터 처리 장치를 포함하는 시스템에 의해 구현될 수 있다. 프로세스(300)는 컴퓨터 저장 매체에 저장된 명령어들에 의해 구현될 수 있으며, 데이터 처리 장치를 포함하는 시스템에 의한 명령어들의 실행은 데이터 처리 장치로 하여금 프로세스(300)의 동작들을 수행하게 한다.
시스템은 제시되고 있는 사용자 인터페이스에 대한 사용자 인터페이스 컨텍스트를 결정한다(302). 예를 들어, 상기 사용자 인터페이스는 애플리케이션(예를 들어, 웹 애플리케이션 또는 모바일 애플리케이션)에 의해 생성되고 제시될 수 있다. 상기 사용자 인터페이스 컨텍스트는 예를 들어 제시되는 데이터 유형, 데이터가 속하는 그룹, 데이터의 특성, 데이터의 롤업 레벨, 현재 제시되고 있는 애플리케이션의 탭, 사용자 인터페이스의 상태 및/또는 사용자 인터페이스의 다른 적절한 속성들 또는 사용자 인터페이스에 의해 제시되는 데이터와 같은 사용자 인터페이스의 하나 이상의 속성들에 의해 정의될 수 있다.
상기 시스템은 사용자 인터페이스 컨텍스트에 기초하여 예측된 사용자 액션을 결정한다(304). 상기 예측된 사용자 액션은 상기 사용자 인터페이스 컨텍스트에 기초하여 상기 사용자 인터페이스에서 상기 애플리케이션의 사용자가 수행할 가능성이 있는 액션일 수 있다. 예를 들어, 상기 예측된 사용자 액션은 적어도 사용자에 의해 수행되는 임계 확률을 갖는 액션일 수 있다. 다른 예에서, 상기 예측된 사용자 액션은 사용자 인터페이스에서 수행될 수 있는 다수의 가능한 사용자 액션들 중에서 가장 높은 확률을 갖는 사용자 액션일 수 있다.
일부 구현예들에서, 상기 시스템은 다음 액션 모델을 사용하여 상기 예측된 다음 액션을 결정한다. 예를 들어, 다음 액션 모델은 액션들 세트의 각각의 액션에 대해, 사용자 인터페이스 컨텍스트에 기초하여 수행되는 액션의 확률을 지정할 수 있다. 특정 예에서, 다음 액션 모델은 사용자 인터페이스가 특정 탭과는 다른 제2 탭의 프레젠테이션을 포함하고 특정 데이터 그룹을 포함하는 컨텍스트를 가질 때 특정 탭으로 이동(navigate)하는 사용자 액션이 10%의 확률을 가지도록 지정할 수 있다. 상기 다음 액션 모델은 상기 사용자 인터페이스가 다른 데이터 그룹을 포함하는 제2 탭의 프레젠테이션을 포함하는 컨텍스트를 가질 때 특정 탭으로 이동하는 사용자 액션이 20%의 확률을 가지도록 지정할 수 있다.
일부 구현예들에서, 상기 시스템은 데이터를 사전 캐싱하기 위한 복수의 예측된 다음 액션들을 선택할 수 있다. 예를 들어, 복수의 예측된 다음 액션들은 적어도 사용자에 의해 수행되는 임계 확률을 가질 수 있다. 다른 예에서, 상기 시스템은 가장 높은 확률을 갖는 지정된 수의 액션들을 선택할 수 있다. 이런 방식으로, 상기 시스템은 사용자가 상기 액션을 수행하기 전에 사용자에 대한 데이터를 획득하고 사전 캐싱할 확률이 더 높다.
상기 시스템은 데이터 통신 네트워크를 통해 사용자가 상기 예측된 다음 액션을 수행하는 것에 응답하여 제시될 다음 액션 데이터에 대한 요청을 전송한다(306). 상기 시스템은 도 1의 데이터 분산 시스템(110)과 같은 데이터 분산 시스템에 상기 요청을 전송할 수 있다. 예를 들어, 상기 시스템은 사용자가 실제로 상기 예측된 다음 액션을 수행한 경우 시스템이 요구할 데이터를 지정하는 요청을 전송할 수 있다. 다른 예에서, 상기 시스템은 사용자가 상기 예측된 다음 액션을 수행하는 것에 응답하여 제시될 데이터가 아닌, 또는 그 데이터에 추가하여 상기 액션을 지정하는 요청을 전송할 수 있다. 이 예에서, 데이터 분산 시스템(110)은 상기 예측된 다음 액션에 기초하여 적절한 데이터를 식별할 수 있다.
상기 시스템은 데이터 통신 네트워크를 통해 다음 액션 데이터를 수신한다(308). 예를 들어, 상기 시스템은 도 1의 데이터 분산 시스템(110)으로부터 상기 데이터를 수신할 수 있다.
상기 시스템은 다음 액션 데이터를 상기 시스템의 캐시에 저장한다(310). 예를 들어, 상기 시스템은 고속 캐시 또는 상기 시스템의 국부인 다른 메모리 저장 장치를 포함할 수 있으며, 이 시스템은 상기 다음 액션 데이터를 저장한다. 상기 다음 액션 데이터를 로컬 메모리에 저장함으로써, 상기 시스템이 네트워크를 트래버스하는 요청 및 도착할 다음 액션 데이터를 기다릴 필요가 없으므로 사용자가 실제로 예측된 다음 액션을 수행하는 경우 상기 다음 액션 데이터가 더 빨리 제시될 수 있다.
상기 시스템은 사용자 인터페이스에서 상기 예측된 다음 액션의 발생을 검출한다(312). 예를 들어, 상기 사용자 인터페이스는 상기 시스템에 의해 실행되는 애플리케이션에 의해 제시될 수 있다. 상기 애플리케이션은 상기 사용자 인터페이스와의 사용자 상호 작용을 모니터링하고, 사용자 상호 작용을 감지하는 것에 응답하여 액션들을 수행할 수 있다(예를 들어 데이터를 업데이트하고 다른 탭으로 이동).
상기 시스템은 상기 예측된 다음 액션의 발생을 검출하는 것에 응답하여 상기 캐시로부터 다음 액션 데이터를 획득한다(314). 예를 들어, 상기 시스템은 네트워크를 통해 또 다른 요청을 보내지 않고 상기 시스템의 캐시에서 상기 다음 액션 데이터를 획득할 수 있다.
상기 시스템은 사용자 인터페이스를 업데이트하여 다음 액션 데이터를 제시한다(316). 예를 들어, 상기 예측된 다음 액션이 다른 탭으로 이동하고 사용자가 그 다른 탭을 선택한 경우, 상기 시스템은 사용자 인터페이스를 다른 탭으로 이동시키고 상기 다음 액션 데이터를 다른 탭에 제시할 수 있다. 다른 예에서, 상기 예측된 다음 액션이 데이터를 특정 날짜 및 시간 범위로 필터링하는 것이라면, 상기 시스템은 그 필터링된 데이터를 상기 사용자 인터페이스에 제시할 수 있다.
도 4는 예측된 다음 액션을 결정하고 그리고 예측된 다음 액션에 대한 다음 액션 데이터를 사전 캐싱하는 예시적인 프로세스(400)의 흐름도이다. 프로세스(400)의 동작들은 예를 들어 도 1의 데이터 분산 시스템(110)과 같은 하나 이상의 데이터 처리 장치를 포함하는 시스템에 의해 구현될 수 있다. 또한, 프로세스(400)는 컴퓨터 저장 매체에 저장된 명령어들에 의해 구현될 수 있으며, 데이터 처리 장치를 포함하는 시스템에 의한 명령어들의 실행이 데이터 처리 장치로 하여금 프로세스(400)의 동작들을 수행하게 한다.
상기 시스템은 클라이언트 장치로부터 다음 액션 데이터에 대한 요청을 수신한다(402). 예를 들어, 상기 시스템은 클라이언트 장치에서 실행되는 애플리케이션에 의해 생성된 사용자 인터페이스를 제시하는 그 클라이언트 장치로부터 상기 요청을 수신할 수 있다. 상기 클라이언트 장치는 예를 들어 트리거 이벤트의 검출에 응답하여 데이터 통신 네트워크를 통해 상기 시스템에 상기 요청을 전송할 수 있다. 상기 트리거 이벤트는 필터 사용자 인터페이스 구성요소(예를 들어, 날짜 및 시간 범위 선택기), 롤업 레벨 사용자 인터페이스 구성요소, 어드레스 바, 데이터 위에 포인터(예를 들어, 커서)를 가리키거나 또는 다른 적절한 이벤트를 선택하는 것을 포함할 수 있다.
다른 예에서, 상기 클라이언트 장치는 트리거 이벤트를 검출하지 않고 상기 요청을 전송할 수 있다. 예를 들어, 상기 클라이언트 장치는 사용자 인터페이스가 업데이트될 때마다 요청을 전송할 수 있다. 이 예에서, 상기 클라이언트 장치는 사용자가 보는 각 사용자 인터페이스에 대해 예측된 다음 액션을 결정함으로써 사용자보다 한 걸음 더 앞서 있을 수 있다.
상기 요청은 사용자 인터페이스 컨텍스트를 정의하는 사용자 인터페이스 컨텍스트 데이터를 포함할 수 있다. 예를 들어, 상기 요청은 사용자에게 제시되는 사용자 인터페이스의 하나 이상의 속성들을 지정하는 데이터를 포함할 수 있다.
상기 시스템은 사용자 인터페이스 컨텍스트 데이터에 기초하여, 클라이언트 장치의 사용자가 사용자 인터페이스에서 수행할 예측된 다음 액션을 결정한다(404). 예를 들어, 전술한 바와 같이, 상기 시스템은 다음 액션 모델을 이용하여 사용자 인터페이스 컨텍스트 데이터에 기초하여 사용자에 대한 하나 이상의 예측된 다음 액션들을 결정할 수 있다.
상기 시스템은 상기 예측된 다음 액션에 대한 다음 액션 데이터를 식별한다(406). 상기 예측된 다음 액션에 대한 다음 액션 데이터는 사용자가 실제로 상기 예측된 다음 액션을 수행하는 경우에 상기 클라이언트 장치에 의해 제시될 데이터를 포함한다.
상기 시스템은 상기 클라이언트 장치의 캐시에 저장하기 위해 상기 다음 액션 데이터를 상기 클라이언트 장치에 제공한다(408). 상기 클라이언트 장치는 다음 액션 데이터를 상기 캐시에 저장할 수 있다. 상기 클라이언트 장치가 상기 예측된 다음 액션이 수행되었음을 검출하면, 상기 클라이언트 장치는 상기 캐시로부터 상기 데이터를 획득하여 그 데이터를 사용자에게 제시할 수 있다.
도 5는 예측된 다음 액션들을 결정하는데 사용되는 예측 모델들에 대한 성능 메트릭을 유지하기 위한 예시적인 프로세스(500)의 흐름도이다. 프로세스(500)의 동작들은 예를 들어 도 1의 데이터 분산 시스템(110)과 같은 하나 이상의 데이터 처리 장치를 포함하는 시스템에 의해 구현될 수 있다. 프로세스(500)는 또한 데이터 처리 장치를 포함하는 시스템에 의한 명령어들의 실행이 데이터 처리 장치로 하여금 프로세스(500)의 동작들을 수행하게 하는 컴퓨터 저장 매체에 저장된 명령어들에 의해 구현될 수 있다.
상기 시스템은 사용자에 대한 예측된 다음 액션을 결정하기 위한 예측 모델을 선택한다(502). 일부 구현예들에서, 상기 시스템은 애플리케이션에 의해 생성되고 제시되는 사용자 인터페이스에서 사용자에 의해 수행되는 복수의 액션들에 기초하여 다음 액션 모델을 선택한다. 예를 들어, 사용자가 임계 수보다 적은 수의 액션을 수행한 경우, 상기 시스템은 애플리케이션에 대한 사용자별 다음 액션 모델을 생성하도록 사용자에 대한 충분한 데이터를 갖지 않을 수 있으므로, 복수의 사용자들에 의해 수행되는 액션들에 기초하여 생성된 일반적인 다음 액션 모델을 선택할 수도 있다.
일부 구현예들에서, 상기 시스템은 상기 다음 액션 모델들에 대한 하나 이상의 성능 메트릭에 기초하여 다음 액션 모델을 선택한다. 예를 들어, 상기 시스템은 가장 높은 예측 정확도, 가장 높은 캐시 히트율 및/또는 가장 낮은 사용자 액션 대기시간을 갖는 다음 액션 모델을 선택할 수 있다.
상기 시스템은 상기 선택된 다음 액션 모델을 사용하여 예측된 다음 사용자 액션을 결정하고 그리고 그 예측된 다음 사용자 액션에 기초하여 데이터를 획득한다(504). 예를 들어, 상기 시스템은 서버로부터 상기 예측된 다음 액션에 대한 데이터를 획득하고 그리고 클라이언트 장치의 캐시에 그 데이터를 저장할 수 있다.
상기 시스템은 상기 예측된 다음 액션이 사용자에 의해 수행되었는지 여부를 결정한다(506). 예를 들어, 상기 시스템은 다음 사용자 액션이 수행되었는지 여부를 나타내는 사용자 인터페이스가 제시되는 클라이언트 장치로부터 데이터를 수신할 수 있다. 상기 시스템은 또한 사용자의 수행된 액션에 응답하여 데이터를 제시할 때의 대기시간을 나타내는 데이터 및/또는 사용자가 수행한 액션에 대한 데이터가 클라이언트 장치의 캐시에서 발견되었는지 여부를 나타내는 데이터를 수신할 수 있다.
상기 시스템은 상기 선택된 다음 액션 모델에 대한 성능 메트릭을 업데이트한다(508). 예를 들어, 상기 시스템은 상기 수신된 데이터에 기초하여 다음 액션 모델에 대한 성능 정확도, 캐시 히트율 및/또는 사용자 액션 대기시간을 업데이트할 수 있다.
본 요지 및 본 명세서에서 설명된 동작들의 실시예들은 본 명세서에 설명된 구조들 및 그 구조적 등가물을 포함하는 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 기술된 요지의 실시예들은 하나 이상의 컴퓨터 프로그램, 즉 데이터 처리 장치에 의한 실행을 위해 또는 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 저장 매체상에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 대안으로 또는 부가적으로, 상기 프로그램 명령어들은 인위적으로 생성된 전파된 신호, 예를 들어, 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하기 위해 생성된 기계-생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 장치, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 장치, 또는 이들 중 하나 이상의 조합일 수 있거나 이들이 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 대상일 수 있다. 또한, 상기 컴퓨터 저장 매체는 하나 이상의 개별 물리적 컴포넌트들 또는 매체(예를 들어, 복수의 CD, 디스크 또는 다른 저장 장치)일 수 있거나 이들에 포함될 수 있다.
본 명세서에서 설명된 동작들은 하나 이상의 컴퓨터 판독 가능 저장 장치에 저장되거나 다른 소스로부터 수신된 데이터에 대해 데이터 처리 장치에 의해 수행되는 동작들로서 구현될 수 있다.
"데이터 처리 장치"라는 용어는 예를 들어 프로그램 가능 프로세서, 컴퓨터, 칩의 시스템, 또는 복수의 것들, 또는 전술한 것들의 조합을 포함하는, 데이터를 처리하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 포함한다. 상기 장치는 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC (application specific integrated circuit)을 포함할 수 있다. 또한, 상기 장치는 하드웨어 이외에 해당 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어를 구성하는 코드, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 환경, 가상 머신 또는 이들 중 하나 이상의 조합으로 구성되는 코드를 포함할 수 있다. 상기 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 다른 컴퓨팅 모델 인프라들을 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일된 또는 해석된 언어, 선언적 또는 절차적 언어를 비롯한 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램 또는 모듈, 컴포넌트, 서브 루틴, 객체 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 유닛을 포함한 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있지만 반드시 그런 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하고 있는 파일의 일부분, 해당 프로그램 전용 파일 또는 여러 개의 조정 파일(예를 들어, 하나 이상의 모듈들, 하위 프로그램들 또는 코드의 부분들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 한 사이트에 있거나 여러 사이트에 분산되어 있으며 통신 네트워크로 상호 연결된 여러 대의 컴퓨터 또는 하나의 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에서 설명되는 프로세스들 및 로직 흐름은 입력 데이터를 조작하고 출력을 생성함으로써 액션들을 수행하도록 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 컴퓨터에 의해 수행될 수 있다. 상기 프로세스들 및 로직 흐름은 또한 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 장치는 또한 상기 특수 목적 논리 회로로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터는 예를 들어 범용 또는 특수 목적 마이크로프로세서 또는 둘 모두, 또는 임의의 종류의 하나 이상의 프로세서를 포함할 수 있다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 구성요소들은 명령어들에 따라 액션들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 장치이다. 일반적으로, 컴퓨터는 데이터(예를 들어, 자기, 광 자기 디스크 또는 광 디스크)를 저장하기 위한 하나 이상의 대용량 저장 장치를 포함하거나, 그 하나 이상의 대용량 저장 장치로부터 데이터를 수신하거나 전송하기 위해 동작 가능하게 결합될 것이다. 그러나, 컴퓨터는 그러한 장치들을 가질 필요는 없다. 또한, 컴퓨터는 다른 장치, 예를 들어, 이동 전화기, 개인 휴대 정보 단말기(PDA), 이동 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 장치(예를 들어, 범용 직렬 버스(USB) 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 장치들은 예를 들어 EPROM, EEPROM 및 플래시 메모리 장치와 같은 반도체 메모리 장치, 내부 하드 디스크 또는 이동식 디스크와 같은 자기 디스크, 광 자기 디스크, 및 CD ROM 및 DVD-ROM 디스크를 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 장치를 포함한다. 상기 프로세서 및 메모리는 특수 목적 논리 회로가 부가되거나 그 안에 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에서 설명된 요지의 실시예들은 사용자에게 정보를 제공하기 위한 CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터와 같은 디스플레이 장치, 사용자가 입력을 컴퓨터에 제공할 수 있는 마우스 또는 트랙볼과 같은 키보드 및 포인팅 장치를 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 장치들은 사용자와의 상호 작용을 제공하는 데 사용될 수 있으며, 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자가 사용하는 장치로 문서를 보내고 문서를 수신하여 사용자와 상호 작용할 수 있으며, 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 사용자의 클라이언트 장치상의 웹 브라우저에 웹 페이지를 전송함으로써 수행될 수 있다.
본 명세서에서 설명된 요지의 실시예들은 데이터 서버와 같은 백 엔드 컴포넌트; 애플리케이션 서버와 같은 미들웨어 컴포넌트; 예를 들어 관계 그래픽 사용자 인터페이스 또는 사용자가 본 명세서에 설명된 요지의 구현예와 상호 작용할 수 있는 웹 브라우저를 갖는 클라이언트 컴퓨터와 같은 프론트 엔트 컴포넌트; 또는 하나 이상의 백 엔드, 미들웨어, 프론트 엔트 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 상기 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호 접속될 수 있다. 예시적인 통신 네트워크는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터넷 간 네트워크(예를 들어, 인터넷) 및 P2P 네트워크(예를 들어, 애드혹 P2P 네트워크를 포함한다.
상기 컴퓨팅 시스템은 클라이언트들과 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며, 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들로 인해 발생한다. 일부 실시예들에서, 서버는 클라이언트 장치에 데이터(예를 들어, HTML 페이지)를 송신한다(예를 들어, 클라이언트 장치와 상호 작용하는 사용자에게 데이터를 표시하고 사용자 입력을 수신하기 위한 목적으로). 클라이언트 장치에서 생성된 데이터(예를 들어, 사용자 상호 작용의 결과)는 서버의 클라이언트 장치로부터 수신될 수 있다.
본 명세서는 다수의 특정 구현 세부 사항을 포함하지만, 이들은 임의의 발명 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정 발명의 특정 실시예에 특정될 수 있는 특징에 대한 설명으로 해석되어야 한다. 별도의 실시예들과 관련하여 본 명세서에서 설명되는 특정 특징들은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 콘텍스트에서 설명된 다양한 특징들은 또한 다수의 실시예에서 개별적으로 또는 임의의 적합한 서브조합으로 구현될 수 있다. 더욱이, 특징들은 소정의 조합으로 작용하고 상술한 바와 같이 초기에 청구된 것으로서 설명될 수 있지만, 청구된 조합의 하나 이상의 특징이 어떤 경우 그 조합으로부터 제거될 수 있고, 그 청구된 조합은 서브조합 또는 그 서브조합의 변형을 지향할 수 있다.
유사하게, 동작들이 특정 순서로 도면들에 도시되어 있지만, 이는 바람직한 동작들을 달성하기 위해, 그러한 동작들이 도시된 순서 또는 순차적인 순서로 수행되거나, 도시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 또한, 상술한 실시 예에서 다양한 시스템 모듈 및 컴포넌트의 분리는 모든 실시예에서 그러한 분리를 필요로 하는 것으로 이해되어서는 안되며, 서술된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다중 소프트웨어 제품들로 패키징될 수 있다는 것을 이해해야 한다. 따라서, 본 요지의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 예를 들어, 청구 범위에 열거된 동작들은 상이한 순서로 수행될 수 있으며 여전히 바람직한 결과를 달성한다. 하나의 예로서, 첨부된 도면에 도시된 프로세스는 바람직한 결과를 얻기 위해 도시된 특정 순서 또는 순차적 순서를 반드시 필요로 하지는 않는다. 특정 구현예들에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (20)

  1. 클라이언트 장치로서,
    하나 이상의 모바일 애플리케이션들에 대한 사용자 인터페이스들을 제시하는 디스플레이;
    하나 이상의 모바일 애플리케이션들에 대한 데이터 통신 네트워크를 통해 수신된 데이터를 저장하는 캐시를 갖는 데이터 저장 장치;
    데이터 저장 장치 및 디스플레이와 통신하고 그리고 동작들을 수행하는 데이터 처리 장치를 포함하며, 상기 동작들은,
    클라이언트 장치의 사용자가 디스플레이에 의해 제시되는 소정의 사용자 인터페이스에서 수행할 것으로 예측되는 예측된 다음 액션을 결정하는 동작;
    예측된 다음 액션의 발생에 응답하여, 예측된 다음 액션이 디스플레이에 콘텐츠를 제시하기 위해 애플리케이션에 대한 컴퓨터 판독 가능 코드를 사용할 것이라고 결정하는 동작;
    예측된 다음 액션을 검출하기 전에, 애플리케이션에 대한 컴퓨터 판독 가능 코드를 획득하는 동작; 그리고
    데이터 저장 장치에 컴퓨터 판독 가능 코드를 저장하는 동작을 포함하는 것을 특징으로 하는 클라이언트 장치.
  2. 제1항에 있어서, 예측된 다음 액션을 결정하는 동작은,
    예측된 다음 액션을 포함하는 복수의 액션들 각각에 대해, 액션이 수행될 확률을 결정하는 동작; 그리고
    예측된 다음 액션에 대한 확률이 임계치 확률을 만족하는지를 결정하는 동작을 포함하는 것을 특징으로 하는 클라이언트 장치.
  3. 제2항에 있어서, 상기 동작들은 임계치를 만족하는 확률을 갖는 각각의 액션에 대한 각각의 컴퓨터 판독 가능 코드를 획득하는 동작을 포함하는 것을 특징으로 하는 클라이언트 장치.
  4. 제2항에 있어서, 예측된 다음 액션에 대한 확률은 소정의 사용자 인터페이스에 대한 사용자 인터페이스 컨텍스트에 기초하는 것을 특징으로 하는 클라이언트 장치.
  5. 제2항에 있어서, 예측된 다음 액션에 대한 확률은 하나 이상의 기계 학습 모델들을 사용하여 결정되는 것을 특징으로 하는 클라이언트 장치.
  6. 제5항에 있어서, 상기 하나 이상의 기계 학습 모델들은 상기 하나 이상의 사용자 인터페이스들에서 사용자에 의해 수행되는 액션들을 지정하는 과거(historical) 액션 데이터를 사용하여 학습되는 것을 특징으로 하는 클라이언트 장치.
  7. 제1항에 있어서, 상기 동작들은,
    예측된 다음 액션을 검출하기 전에, 예측된 다음 액션을 검출하는 것에 응답하기 전에 사용자 인터페이스에 의해 제시될 사전 액션 데이터를 획득하는 동작; 그리고
    데이터 저장 장치에 다음 액션 데이터를 저장하는 동작을 포함하는 것을 특징으로 하는 클라이언트 장치.
  8. 제1항에 있어서,
    예측된 다음 액션은 전자 자원(electronic resource)을 요청하는 것을 포함하고; 그리고
    애플리케이션에 대한 컴퓨터 판독 가능 코드는 전자 자원의 콘텐츠를 제시 하기 위한 코드를 포함하는 것을 특징으로 하는 클라이언트 장치.
  9. 제1항에 있어서, 상기 애플리케이션에 대한 컴퓨터 판독 가능 코드는 하나 이상의 스크립트들을 포함하는 것을 특징으로 하는 클라이언트 장치.
  10. 하나 이상의 데이터 처리 장치에 의해 수행되는 방법으로서,
    클라이언트 장치의 사용자가 클라이언트 장치의 디스플레이에 의해 제시되는 소정의 사용자 인터페이스에서 수행할 것으로 예측되는 예측된 다음 액션을 결정하는 단계;
    예측된 다음 액션의 발생에 응답하여, 예측된 다음 액션이 디스플레이에 콘텐츠를 제시하기 위해 애플리케이션에 대한 컴퓨터 판독 가능 코드를 사용할 것이라고 결정하는 단계;
    예측된 다음 액션을 검출하기 전에, 애플리케이션에 대한 컴퓨터 판독 가능 코드를 획득하는 단계; 그리고
    클라이언트 장치의 데이터 저장 장치에 컴퓨터 판독 가능 코드를 저장하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 데이터 처리 장치에 의해 수행되는 방법.
  11. 제10항에 있어서, 예측된 다음 액션을 결정하는 단계는,
    예측된 다음 액션을 포함하는 복수의 액션들 각각에 대해, 액션이 수행될 확률을 결정하는 단계; 그리고
    예측된 다음 액션에 대한 확률이 임계치 확률을 만족하는지를 결정하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 데이터 처리 장치에 의해 수행되는 방법.
  12. 제11항에 있어서, 상기 방법은,
    임계치를 만족하는 확률을 갖는 각각의 액션에 대한 각각의 컴퓨터 판독 가능 코드를 획득하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 데이터 처리 장치에 의해 수행되는 방법.
  13. 제11항에 있어서, 예측된 다음 액션에 대한 확률은 소정의 사용자 인터페이스에 대한 사용자 인터페이스 컨텍스트에 기초하는 것을 특징으로 하는 하나 이상의 데이터 처리 장치에 의해 수행되는 방법.
  14. 제11항에 있어서, 예측된 다음 액션에 대한 확률은 하나 이상의 기계 학습 모델들을 사용하여 결정되는 것을 특징으로 하는 하나 이상의 데이터 처리 장치에 의해 수행되는 방법.
  15. 제14항에 있어서, 상기 하나 이상의 기계 학습 모델들은 상기 하나 이상의 사용자 인터페이스들에서 사용자에 의해 수행되는 액션들을 지정하는 과거(historical) 액션 데이터를 사용하여 학습되는 것을 특징으로 하는 하나 이상의 데이터 처리 장치에 의해 수행되는 방법.
  16. 제10항에 있어서, 상기 방법은,
    예측된 다음 액션을 검출하기 전에, 예측된 다음 액션을 검출하는 것에 응답하기 전에 사용자 인터페이스에 의해 제시될 사전 액션 데이터를 획득하는 단계; 그리고
    데이터 저장 장치에 다음 액션 데이터를 저장하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 데이터 처리 장치에 의해 수행되는 방법.
  17. 제10항에 있어서,
    예측된 다음 액션은 전자 자원(electronic resource)을 요청하는 것을 포함하고; 그리고
    애플리케이션에 대한 컴퓨터 판독 가능 코드는 전자 자원의 콘텐츠를 제시 하기 위한 코드를 포함하는 것을 특징으로 하는 하나 이상의 데이터 처리 장치에 의해 수행되는 방법.
  18. 제10항에 있어서, 상기 애플리케이션에 대한 컴퓨터 판독 가능 코드는 하나 이상의 스크립트들을 포함하는 것을 특징으로 하는 하나 이상의 데이터 처리 장치에 의해 수행되는 방법.
  19. 데이터 처리 장치에 의해 실행될 때 데이터 처리 장치로 하여금 동작들을 수행하게 하는 명령어를 포함하는 비-일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은,
    클라이언트 장치의 사용자가 클라이언트 장치의 디스플레이에 의해 제시되는 소정의 사용자 인터페이스에서 수행할 것으로 예측되는 예측된 다음 액션을 결정하는 동작;
    예측된 다음 액션의 발생에 응답하여, 예측된 다음 액션이 디스플레이에 콘텐츠를 제시하기 위해 애플리케이션에 대한 컴퓨터 판독 가능 코드를 사용할 것이라고 결정하는 동작;
    예측된 다음 액션을 검출하기 전에, 애플리케이션에 대한 컴퓨터 판독 가능 코드를 획득하는 동작; 그리고
    클라이언트 장치의 데이터 저장 장치에 컴퓨터 판독 가능 코드를 저장하는 동작을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  20. 제19항에 있어서, 예측된 다음 액션을 결정하는 동작은,
    예측된 다음 액션을 포함하는 복수의 액션들 각각에 대해, 액션이 수행될 확률을 결정하는 동작; 그리고
    예측된 다음 액션에 대한 확률이 임계치 확률을 만족하는지를 결정하는 동작을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
KR1020207032736A 2016-12-28 2017-06-07 미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화 KR102300077B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/392,894 2016-12-28
US15/392,894 US10356200B2 (en) 2016-12-28 2016-12-28 Optimizing user interface data caching for future actions
PCT/US2017/036294 WO2018125276A1 (en) 2016-12-28 2017-06-07 Optimizing user interface data caching for future actions
KR1020187023036A KR102180995B1 (ko) 2016-12-28 2017-06-07 미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020187023036A Division KR102180995B1 (ko) 2016-12-28 2017-06-07 미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화

Publications (2)

Publication Number Publication Date
KR20200130523A true KR20200130523A (ko) 2020-11-18
KR102300077B1 KR102300077B1 (ko) 2021-09-08

Family

ID=59078214

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187023036A KR102180995B1 (ko) 2016-12-28 2017-06-07 미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화
KR1020207032736A KR102300077B1 (ko) 2016-12-28 2017-06-07 미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020187023036A KR102180995B1 (ko) 2016-12-28 2017-06-07 미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화

Country Status (6)

Country Link
US (3) US10356200B2 (ko)
EP (2) EP3482553B1 (ko)
JP (2) JP6648292B2 (ko)
KR (2) KR102180995B1 (ko)
CN (2) CN113259433B (ko)
WO (1) WO2018125276A1 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10841425B1 (en) 2014-09-16 2020-11-17 United Services Automobile Association Systems and methods for electronically predicting future customer interactions
US10623514B2 (en) 2015-10-13 2020-04-14 Home Box Office, Inc. Resource response expansion
US10656935B2 (en) 2015-10-13 2020-05-19 Home Box Office, Inc. Maintaining and updating software versions via hierarchy
US10356200B2 (en) 2016-12-28 2019-07-16 Google Llc Optimizing user interface data caching for future actions
US10706433B2 (en) * 2017-01-25 2020-07-07 Mastercard International Incorporated Individual level learning mechanism
US10698740B2 (en) 2017-05-02 2020-06-30 Home Box Office, Inc. Virtual graph nodes
US11366872B1 (en) * 2017-07-19 2022-06-21 Amazon Technologies, Inc. Digital navigation menus with dynamic content placement
US10346304B2 (en) * 2017-07-25 2019-07-09 Microsoft Technology Licensing, Llc Cache management for multi-node databases
US10511681B2 (en) * 2018-03-02 2019-12-17 Adobe Inc. Establishing and utilizing behavioral data thresholds for deep learning and other models to identify users across digital space
US11640429B2 (en) * 2018-10-11 2023-05-02 Home Box Office, Inc. Graph views to improve user interface responsiveness
US11301780B2 (en) 2019-02-15 2022-04-12 Samsung Electronics Co., Ltd. Method and electronic device for machine learning based prediction of subsequent user interface layouts
KR20200100958A (ko) 2019-02-19 2020-08-27 삼성전자주식회사 어플리케이션을 프리페치하는 전자 장치 및 방법
US11144179B2 (en) 2019-04-12 2021-10-12 Sap Se Next user interaction prediction
GB2583718A (en) * 2019-05-01 2020-11-11 Samsung Electronics Co Ltd Method, apparatus and computer program for updating a cluster probability model
WO2020226667A1 (en) * 2019-05-06 2020-11-12 Google Llc Performing subtask(s) for a predicted action in response to a separate user interaction with an automated assistant prior to performance of the predicted action
EP3942550A1 (en) * 2019-05-06 2022-01-26 Google LLC Performing subtask(s) for a predicted action in response to a separate user interaction with an automated assistant prior to performance of the predicted action
KR102283779B1 (ko) * 2019-07-18 2021-07-29 건국대학교 산학협력단 질의 응답 방법 및 이를 수행하는 장치들
US11146656B2 (en) * 2019-12-20 2021-10-12 Tealium Inc. Feature activation control and data prefetching with network-connected mobile devices
WO2021141399A1 (en) * 2020-01-10 2021-07-15 Samsung Electronics Co., Ltd. Method and electronic device for accelerating asset execution
US11481111B2 (en) 2020-04-24 2022-10-25 Microsoft Technology Licensing, Llc Utilization of predictive gesture analysis for preloading and executing application components
US11681466B2 (en) * 2020-06-30 2023-06-20 Western Digital Technologies, Inc. Proactive storage operation management
US11915047B2 (en) 2020-06-30 2024-02-27 Western Digital Technologies, Inc. Managing storage device compute operations
CN111563106A (zh) * 2020-07-14 2020-08-21 成都市映潮科技股份有限公司 一种数据缓存方法、装置、系统及可读存储介质
JP7223164B2 (ja) * 2020-08-21 2023-02-15 グーグル エルエルシー データインテグリティの最適化
WO2022108019A1 (en) 2020-11-23 2022-05-27 Samsung Electronics Co., Ltd. Electronic device and method for optimizing user interface of application
US11977485B2 (en) 2021-05-13 2024-05-07 Samsung Electronics Co., Ltd. Method of cache management based on file attributes, and cache management device operating based on file attributes
US11886891B2 (en) * 2021-09-10 2024-01-30 Sap Se Context-based multiexperience element dynamically generated using natural language processing
CN113849532A (zh) * 2021-09-24 2021-12-28 中国第一汽车股份有限公司 缓存预热方法、装置、计算机设备和存储介质
US20230244361A1 (en) * 2022-02-01 2023-08-03 Servicenow, Inc. Progressive Refresh of User Interface Screens

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110100236A (ko) * 2008-11-25 2011-09-09 구글 인코포레이티드 예상된 사용자 거동에 기초한 디지털 콘텐츠 제공
KR20120016333A (ko) * 2010-08-16 2012-02-24 에스케이플래닛 주식회사 웹 어플리케이션을 위한 사전 캐싱 방법 및 이를 적용한 단말 장치
KR20120052260A (ko) * 2009-07-31 2012-05-23 마이크로소프트 코포레이션 예측성 배경에 기초한 푸시된 컨텐츠 전달의 구성
WO2016191737A2 (en) * 2015-05-27 2016-12-01 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-senstitive device

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305389A (en) * 1991-08-30 1994-04-19 Digital Equipment Corporation Predictive cache system
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US6182122B1 (en) * 1997-03-26 2001-01-30 International Business Machines Corporation Precaching data at an intermediate server based on historical data requests by users of the intermediate server
US6154767A (en) * 1998-01-15 2000-11-28 Microsoft Corporation Methods and apparatus for using attribute transition probability models for pre-fetching resources
US6055569A (en) 1998-01-27 2000-04-25 Go Ahead Software Inc. Accelerating web access by predicting user action
US6463509B1 (en) * 1999-01-26 2002-10-08 Motive Power, Inc. Preloading data in a cache memory according to user-specified preload criteria
US7966078B2 (en) * 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US20050055426A1 (en) 2000-06-12 2005-03-10 Kim Smith System, method and computer program product that pre-caches content to provide timely information to a user
US8516114B2 (en) * 2002-03-29 2013-08-20 International Business Machines Corporation Method and apparatus for content pre-fetching and preparation
JP4497944B2 (ja) * 2003-02-05 2010-07-07 キヤノン株式会社 受信装置及び受信装置の制御方法
JP4248529B2 (ja) * 2003-02-25 2009-04-02 パナソニック株式会社 移動体端末
FI116168B (fi) * 2003-03-03 2005-09-30 Flextronics Odm Luxembourg Sa Datan syöttö
US8112605B2 (en) * 2005-05-02 2012-02-07 Commvault Systems, Inc. System and method for allocation of organizational resources
US20080301300A1 (en) 2007-06-01 2008-12-04 Microsoft Corporation Predictive asynchronous web pre-fetch
JP5487969B2 (ja) * 2007-11-02 2014-05-14 日本電気株式会社 情報端末装置及び機能利用方法
IL197196A0 (en) 2009-02-23 2009-12-24 Univ Ben Gurion Intention prediction using hidden markov models and user profile
US8364611B2 (en) * 2009-08-13 2013-01-29 Yahoo! Inc. System and method for precaching information on a mobile device
US8561208B2 (en) * 2011-05-20 2013-10-15 Adobe Systems Incorporated Secure user interface content
CN103782294B (zh) * 2011-06-30 2020-06-23 亚马逊技术有限公司 远程浏览会话管理
US20130187753A1 (en) * 2012-01-20 2013-07-25 Research In Motion Limited Predictive Context-Aware Dynamic Lock Screen
US9582603B1 (en) * 2012-02-27 2017-02-28 Amazon Technologies, Inc. Managing preloading of data on client systems
US20130222329A1 (en) 2012-02-29 2013-08-29 Lars-Johan Olof LARSBY Graphical user interface interaction on a touch-sensitive device
US9756108B2 (en) 2012-05-29 2017-09-05 Google Inc. Preloading resources of a web page
US9239794B1 (en) * 2012-06-11 2016-01-19 Google Inc. Managing a prefetch buffer with probabilistic access predictions
US8990143B2 (en) * 2012-06-29 2015-03-24 Intel Corporation Application-provided context for potential action prediction
US9836213B2 (en) * 2012-07-27 2017-12-05 Symbol Technologies, Llc Enhanced user interface for pressure sensitive touch screen
US20140053056A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
US9058324B2 (en) * 2012-09-28 2015-06-16 Intel Corporation Predictive precaching of data based on context
CN103049163B (zh) * 2012-12-28 2016-12-28 华为技术有限公司 用户界面智能显示控制方法和装置
US9542423B2 (en) * 2012-12-31 2017-01-10 Apple Inc. Backup user interface
US9117179B2 (en) 2013-03-11 2015-08-25 International Business Machines Corporation Predicting user activity in social media applications
US10949894B1 (en) * 2013-06-07 2021-03-16 Groupon, Inc. Method, apparatus, and computer program product for facilitating dynamic pricing
US20140373032A1 (en) * 2013-06-12 2014-12-18 Microsoft Corporation Prefetching content for service-connected applications
JP6183099B2 (ja) 2013-09-25 2017-08-23 日本電気株式会社 入力支援装置、入力支援方法及び入力支援プログラム
US20150163258A1 (en) * 2013-12-05 2015-06-11 Facebook, Inc. Indicating User Availability for Communication
US20150188981A1 (en) * 2013-12-31 2015-07-02 Huawei Technologies Co., Ltd. Page processing method, apparatus, and system
US9519408B2 (en) * 2013-12-31 2016-12-13 Google Inc. Systems and methods for guided user actions
US9032321B1 (en) * 2014-06-16 2015-05-12 Google Inc. Context-based presentation of a user interface
US10452992B2 (en) * 2014-06-30 2019-10-22 Amazon Technologies, Inc. Interactive interfaces for machine learning model evaluations
US10963810B2 (en) * 2014-06-30 2021-03-30 Amazon Technologies, Inc. Efficient duplicate detection for machine learning data sets
US9621650B2 (en) * 2014-09-30 2017-04-11 Google Inc Mobile application state identifier framework
CN105577707B (zh) * 2014-10-08 2019-01-11 阿里巴巴集团控股有限公司 一种远程调用方法与设备
US10547711B2 (en) * 2015-03-25 2020-01-28 Vmware, Inc. Using off-screen user interface data during remote sessions
JP2016212595A (ja) 2015-05-07 2016-12-15 Mist Technologies株式会社 サーバ装置、プログラム及び情報処理システム
US10097973B2 (en) * 2015-05-27 2018-10-09 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US20160357774A1 (en) * 2015-06-05 2016-12-08 Apple Inc. Segmentation techniques for learning user patterns to suggest applications responsive to an event on a device
US10264319B2 (en) * 2015-06-07 2019-04-16 Apple Inc. Priming media applications and presenting primed media application data
EP3106973A1 (en) * 2015-06-16 2016-12-21 Huawei Technologies Co., Ltd. Context-driven adaptive application launcher grid user interface based on random index predictor for mobile devices
US10949822B2 (en) * 2016-03-25 2021-03-16 Stripe Inc. Methods and systems for providing payment interface services using a payment platform
CN105955650A (zh) * 2016-04-29 2016-09-21 努比亚技术有限公司 一种人机交互操作的方法和装置
US10540739B2 (en) * 2016-11-23 2020-01-21 Roku, Inc. Predictive application caching
US10356200B2 (en) 2016-12-28 2019-07-16 Google Llc Optimizing user interface data caching for future actions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110100236A (ko) * 2008-11-25 2011-09-09 구글 인코포레이티드 예상된 사용자 거동에 기초한 디지털 콘텐츠 제공
KR20120052260A (ko) * 2009-07-31 2012-05-23 마이크로소프트 코포레이션 예측성 배경에 기초한 푸시된 컨텐츠 전달의 구성
KR20120016333A (ko) * 2010-08-16 2012-02-24 에스케이플래닛 주식회사 웹 어플리케이션을 위한 사전 캐싱 방법 및 이를 적용한 단말 장치
WO2016191737A2 (en) * 2015-05-27 2016-12-01 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-senstitive device

Also Published As

Publication number Publication date
KR102300077B1 (ko) 2021-09-08
EP3482553A1 (en) 2019-05-15
EP3482553B1 (en) 2020-12-23
WO2018125276A1 (en) 2018-07-05
CN108605053A (zh) 2018-09-28
JP6989628B2 (ja) 2022-01-05
CN113259433B (zh) 2024-01-09
CN108605053B (zh) 2021-05-25
US20200128097A1 (en) 2020-04-23
US11310331B2 (en) 2022-04-19
US10560546B2 (en) 2020-02-11
JP6648292B2 (ja) 2020-02-14
US10356200B2 (en) 2019-07-16
KR20180102625A (ko) 2018-09-17
JP2020074154A (ja) 2020-05-14
CN113259433A (zh) 2021-08-13
US20190281128A1 (en) 2019-09-12
US20180183891A1 (en) 2018-06-28
JP2019514091A (ja) 2019-05-30
KR102180995B1 (ko) 2020-11-19
EP3731499A1 (en) 2020-10-28

Similar Documents

Publication Publication Date Title
KR102180995B1 (ko) 미래 액션들을 위한 사용자 인터페이스 데이터 캐싱 최적화
US20200125586A1 (en) Systems and methods for predicting actionable tasks using contextual models
US10242082B2 (en) Context-driven multi-user communication
US20220350588A1 (en) Intelligent generation and management of estimates for application of updates to a computing device
US11836222B2 (en) Method and apparatus for optimizing recommendation system, device and computer storage medium
US20170097743A1 (en) Recommending Applications
US8977723B2 (en) Cloud based application fragmentation
CN109690534B (zh) 使用动态用户模型进行预取以减少等待时间
WO2018154100A1 (en) Neural episodic control
US9717985B2 (en) Fragment-based mobile device application streaming utilizing crowd-sourcing
US11620173B2 (en) Optimizing application performance with machine learning
WO2016191053A1 (en) Predictive peer determination for peer-to-peer digital content download
CN112836117B (zh) 从内容项集合中选择内容项的方法和系统,以及介质
CN110622135B (zh) 在涉及欠佳网络条件的情形下提供内容项的系统和方法
KR102614813B1 (ko) 정보 업데이트를 위한 적응적 타이밍 예측
US20230205754A1 (en) Data integrity optimization
WO2022231810A1 (en) Intelligent generation and management of estimates for application of updates to a computing device

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant