WO2015047640A1 - System and method for providing recommendations for applications to a user - Google Patents

System and method for providing recommendations for applications to a user Download PDF

Info

Publication number
WO2015047640A1
WO2015047640A1 PCT/US2014/053012 US2014053012W WO2015047640A1 WO 2015047640 A1 WO2015047640 A1 WO 2015047640A1 US 2014053012 W US2014053012 W US 2014053012W WO 2015047640 A1 WO2015047640 A1 WO 2015047640A1
Authority
WO
WIPO (PCT)
Prior art keywords
applications
independent
scored list
composite
user
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/US2014/053012
Other languages
French (fr)
Inventor
Michael Jeffrey PROCOPIO
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of WO2015047640A1 publication Critical patent/WO2015047640A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Definitions

  • Cloud computing services provide users with the ability to store, access, edit, and share electronic files using any electronic device capable of connecting to the cloud computing service over a remote network, such as the Internet.
  • the files are stored on the cloud computing service rather than the user's electronic devices.
  • the cloud computing service provides a user interface, for example through a web browser, for users to access and view the files.
  • the files stored on cloud computing services may include word processing documents, spreadsheet files, presentation files, picture files, audio files, video files, and a number of other open or proprietary file formats.
  • a cloud computing service may be able to open many of the files that it stores through its user interface.
  • cloud computing services may not be configured to open, display, or edit certain types of files, especially for some proprietary or less common file types.
  • Cloud computing services may instead offer third-party applications to the user, where the third -party applications may be used to open certain files stored on the cloud computing service, as well as perform other functions.
  • Third-party developers work with the cloud computing service to make the applications available to the user. Users may select and install an application to use in conjunction with, or separately from the cloud computing service.
  • Cloud computing services may offer a large number of applications to users. Users may be overwhelmed with choices and may not be aware of certain applications that they may find useful. In addition, users may find it difficult to select between several similar applications, and also may not have the time to install many applications and test each one to find applications that they like. Summary
  • the systems and methods described herein provide ways to recommend applications offered by a cloud computing service to a user, where the recommendation is based on a composite score generated for each application provided by the cloud computing service.
  • the composite score is built from a number of independent scorers which assign a score to each application based on a number of criteria. For example, one scorer may base the score on the application installation behavior of users of the cloud computing service. Another scorer may base the score on the application usage behavior of the users.
  • the composite scorer receives input data that each independent scorer uses to calculate its score and passes the input data to each independent scorer. Each independent scorer has a weighting value.
  • the composite score for an application is a function of the score for that application from each independent scorer, weighted by the weighting value of that scorer.
  • the composite scored list of application is used to recommend applications to the user.
  • One aspect described herein discloses a method for providing a scored list of applications for use in recommending applications to a user, which includes receiving at a cloud computing service a request to provide a composite scored list of applications for a user, where the cloud computing service provides a set of available applications to each user of the cloud computing service, and receiving input data for determining the composite scored list of applications.
  • the method further includes initializing a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications, and normalizing the scored list of applications outputted by each independent scorer.
  • the method further includes constructing the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and outputting the composite scored list of applications.
  • Another aspect described herein discloses an apparatus for providing
  • the apparatus including a server configured to communicate with the plurality of client computers and receive from a first client computer in the plurality of client computers a request to provide a composite scored list of applications for a user, where the server provides a set of available applications to each user of the server.
  • the server is further configured to receive input data for determining the composite scored list of applications, and initialize a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications.
  • the server is further configured to normalize the scored list of applications outputted by each independent scorer, construct the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and output the composite scored list of applications.
  • Non-transitory computer readable medium storing computer-executable instructions, which, when executed by a processor, cause the processor to carry out a method for providing a scored list of applications for use in recommending applications to a user.
  • the non-transitory computer readable medium includes instructions to receive at a cloud computing service a request to provide a composite scored list of applications for a user, where the cloud computing service provides a set of available applications to each user of the cloud computing service, and instructions to receive input data for determining the composite scored list of applications.
  • the non-transitory computer readable medium further includes instructions to initialize a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications, and instructions to normalize the scored list of applications outputted by each independent scorer.
  • the non- transitory computer readable medium further includes instructions to construct the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and instructions to output the composite scored list of applications.
  • Another aspect described herein discloses a system for providing recommendations for applications to a user, the system including a plurality of client computers and a server.
  • the server is configured to communicate with the plurality of client computers and receive from a first client computer in the plurality of client computers a request to provide a composite scored list of applications for a user, where the server provides a set of available applications to each user of the server.
  • the server is further configured to receive input data for determining the composite scored list of applications, and initialize a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications.
  • the server is further configured to normalize the scored list of applications outputted by each independent scorer, construct the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and output the composite scored list of applications.
  • FIG. 1 shows a number of client computers in communication with a cloud computing service in accordance with an implementation as described herein;
  • FIG. 2 shows the components of a cloud computing service in communication with a client computer in accordance with an implementation as described herein;
  • FIG. 3 shows an example of a plurality of scored list of applications outputted by independent scorers in accordance with an implementation as described herein;
  • FIG. 4 shows an example of a plurality of normalized scored list of applications in accordance with an implementation as described herein;
  • FIG. 5 shows an example of a scorer weight table in accordance with an
  • FIG. 6 shows an example of a composite scored list of applications in accordance with an implementation as described herein;
  • FIG. 7 shows a scorer unit for generating a scored list of applications in accordance with an implementation as described herein;
  • FIG. 8 shows a method for providing recommendations for applications to a user in accordance with an implementation as described herein.
  • a server, service, or system as used in this description may be a single computing device or multiple computing devices working collectively and in which the storage of data and the execution of functions are spread out among the various computing devices.
  • aspects of the systems and methods described herein relate to providing a way to recommend applications to a user, where the recommendation is based on a composite score generated for each application provided by the cloud computing service.
  • the composite score is built from a number of independent scorers which assign a score to each application based on a number of criteria. For example, one scorer may base the score on the application installation behavior of users of the cloud computing service. Another scorer may base the score on the application usage behavior of the users.
  • the composite scorer receives input data that each independent scorer uses to calculate its score and passes the input data to each independent scorer. Each independent scorer has a weighting value.
  • the composite score for an application is a function of the score for that application from each independent scorer, weighted by the weighting value of that scorer.
  • the composite scored list of application is used to recommend applications to the user.
  • FIG. 1 shows a network system 100 that includes cloud computing service 102 and a number of client computers 104a through 104d.
  • Cloud computing service 102 may include one or more servers that collectively provide cloud computing services for a number of client computers.
  • Cloud computing service 102 stores a number of files accessible by client computers 104a-104d, such as files 106.
  • Files 106 may include word processing documents, spreadsheets, presentations, images, audio files, video files, or any other files of various open or proprietary file types. Users may create, edit, copy, share, and delete files stored on cloud computing service 102.
  • Client computers 104a-104d may include desktop computers, laptop computers, tablets, smart phones, mobile electronic devices, or any other device that may connect to cloud computing service 102 to view files 106.
  • System 100 may include many additional client computers not pictured in FIG. 1.
  • the network connection between the client computers 104a-104d and cloud computing service 102 in network system 100 may be facilitated through a local area network, wide area network, Ethernet, fiber optic network, or any other wired or wireless connection.
  • System 200 in FIG. 2 includes a cloud computing service 202 in communication with a client computer 216.
  • Cloud computing service 202 includes a central processing unit (CPU) 204, read-only memory (ROM) 206, random access memory (RAM) 208, communications unit 210, data store 212, and bus 214.
  • Cloud computing service 202 may have additional components that are not illustrated in FIG. 2.
  • Bus 214 allows the various components of cloud computing service 202 to communicate with each other.
  • Communications unit 210 allows cloud computing service 202 to communicate with other devices, such as client computer 216 and other client computers.
  • Data store 212 is used to store files accessible by a user on client computer 216.
  • cloud computing service 202 Users log on to the cloud computing service using a username and password, and cloud computing service 202 provides a user interface for the display of files through the web browsers executing on the client computers.
  • Data store 212 may also store a number of applications that are made available to users for installation.
  • Data store 212 may also store metadata regarding files and users, and may store tables, matrices, files and other data structures based on the file and user metadata.
  • the data structures may be used by cloud computing service 202 as input data to create scored list of applications for use in making application recommendations to users.
  • the data structures may be updated or recalculated on a periodic basis by a data process scheduler executed by CPU 204.
  • File and user metadata may be changed by recent user actions, so data structures based on the metadata are recalculated to account for those recent actions.
  • CPU 204 may load some data structures to RAM 208, e.g. a data cache, while CPU 204 processes requests to provide a scored list of applications.
  • the data cache allows CPU 204 to reference recently used data and is periodically refreshed.
  • Client computer 216 includes a CPU 224, ROM 220, RAM 222, input/output interface 218, and bus 226. Client computer 216 may have additional components that are not illustrated in FIG. 2. Bus 226 allows the various components of client computer 216 to communicate with each other. Input/output interface 218 allows client computer 216 to communicate with other devices, such as cloud computing service 202. Input/output interface 218 also includes devices for taking in user inputs and displaying outputs to a user, such as a keyboard, mouse, and display screen.
  • CPU 224 executes various programs stored in memory on client computer 216, such as a web browser. Web browsers are used, among other things, to display a user interface provided by cloud computing service 202 for viewing and editing files. Web browsers receive web page documents encoded in HTML, CSS, or other web-compatible languages and interpret the language to properly display the web page.
  • Data store 212 for storing files, applications, and data structures on cloud computing service 202, a web browser executing on client computer 216, and other data structures and software programs in system 200 may be implemented using non-transitory computer- readable media.
  • suitable non-transitory computer-readable media include all forms of non- volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and readonly, once-writable, or rewriteable optical disks (such as, e.g., CDROM, CDR, CD+R, CDRW, CD+RW, DVDROM, DVDR, DVD+R, DVDRW, and DVD+RW).
  • semiconductor memory devices e.g., EPROM, EEPROM, and flash memory devices
  • magnetic disks e.g., internal hard disks or removable disks
  • a cloud computing service has a large base of users and available applications, and is capable of collecting aggregate data concerning the installation and usage of applications by users. This data are statistically significant and may be harnessed to generate application recommendations for a particular user.
  • recommendations may be based on the most frequently downloaded applications by all users, or the most frequently downloaded applications given a set of applications that the user has currently installed.
  • recommendations for applications to open a target file may be based on which applications have most frequently been used to open the file type of the target file.
  • recommendations may be based on which applications can open files that are of importance to a user.
  • users that have similar application usage characteristics to the target user may be identified, and applications that similar users frequently use may be recommended to the target user.
  • Recommendations may also be based on a combination of one or more of the above- identified methods as well as other methods for recommending applications.
  • a cloud computing service may have multiple independent scorer units, each of which implement one of the recommendation methods described above or other known recommendation methods.
  • the independent scorers each output a scored list of applications from the set of available applications provided by the cloud computing service.
  • Table 300 in FIG. 3 shows an example of the output of three independent scorers evaluating five applications.
  • the score of an application is a measure of the likely relevance of the application to the user.
  • a higher score means that the application should be more strongly recommended to the user according to the scoring methodology used by the independent scorer.
  • independent Scorer 1 would recommend App C the most
  • independent Scorer 2 would recommend App E the most
  • independent Scorer 3 would recommend App E the most.
  • Each scorer takes as input various data stored by the cloud computing service in order to generate the score.
  • This data may come from file metadata, application metadata, information about users of the cloud computing service, or special data structures derived from the file metadata, application metadata, and user information.
  • an application configuration database accessible by the cloud computing service stores the file types that each application provided by the cloud computing service can open. This information may be used by one or more independent scorers to calculate scores.
  • the file metadata may contain the file type of the file and how many times each user has used each application to open the file. This information may be used by one or more independent scorers to calculate scores. Specialized data structures may be created from this metadata as well.
  • the cloud computing service may use the file metadata to create an application signature for each user which describes the application usage behavior for each user. The application signature may be used by one or more independent scorers to calculate scores.
  • the client computing service may rely solely on a particular independent scorer to recommend applications to a user. However, in some cases more accurate recommendations may be made by combining the results of multiple independent scorers in order to make recommendations based on a variety of data.
  • a composite scored list of applications may be created from the scored list of applications outputted by each independent scorer. However, as seen from table 300, the scores from each independent scorer may have different scales. For example, the non-zero scores for Scorer 1 range from 38 to 1,423 while the non-zero scores for Scorer 2 range from 0.1 to 0.4. If a composite score is calculated by simply adding the scores from each scorer, Scorer 1 would have a disproportionally high amount of influence over the composite score because of its higher numerical range.
  • a way to mitigate inequitable scoring scales is to normalize the scores for each scored list of applications outputted by the independent scorers. Normalization forces the scores to be on the same scale.
  • One way to normalize a scored list of applications is to divide each score by the sum of the scores. The result is normalized scores ranging between 0 and 1 , where the sum of the normalized scores is also 1.
  • Another way to normalize the scored list is to divide each score by the highest score in the list, which results in scores that range between 0 and 1 but do not sum to 1. Normalization still preserves the relative difference between the scores.
  • Table 400 in FIG. 4 shows the normalized version of the scored list of applications found in FIG. 3. All the scored lists of applications range from 0 to 1. The scores from different independent scorers may now be compared directly to each other.
  • a composite score for an application may simply be the sum of the normalized scores of the application from each independent scorer.
  • the cloud computing service may want to weight certain independent scorers more strongly than other independent scorers, i.e. have certain independent scorers influence the composite score to a greater degree.
  • the cloud computing service may assign a weight to each scorer.
  • FIG. 5 shows a scorer weight table 500 that is stored by the cloud computing service. Scorer weight table 500 assigns a weighting value to each scorer.
  • the weighting values may be normalized such that the sum of the weighting values adds to 1.
  • the weighting values may be subject to a feedback loop from the cloud computing service. Information about which applications a user selects from the applications recommended to the user may be used to adjust or optimize the weighting values. This feedback loop is discussed in more detail further herein.
  • FIG. 6 shows a composite scored list of applications 600 derived from the normalized scored list of applications in FIG. 4 and the scorer weighting table in FIG. 5.
  • Composite scored list 600 may be a table with the application IDs of each application provided by the cloud computing service and its corresponding composite score.
  • the composite score for an application may be expressed as
  • N is the number of independent scorers
  • IS n is the normalized score of the application from the n-th independent scorer
  • W n is the weighting value assigned to the n-th independent scorer.
  • the composite scored list of applications may be used by the cloud computing service to recommend applications to a user.
  • the composite scored list of applications may be unsorted or may be sorted based on composite score, application ID, or some other sorting basis.
  • the cloud computing service has a composite scorer unit that creates a composite scored list of applications from the output of one or more independent scorers. This composite list may be used by the cloud computing service to recommend one or more applications to a user.
  • FIG. 7 shows an example flow chart 700 of a composite scorer unit operated by the cloud computing service. The process flow for the scorer unit illustrated in FIG. 7 may be summarized below:
  • the composite scorer unit is part of the cloud computing service and executes the above process flow each time a request is received to score applications.
  • the process flow above is an example and additional tasks may be done by the composite scorer unit.
  • the composite scorer unit may sort the composite scored list of applications before outputting it.
  • the composite scorer unit is initiated when an application scoring request is received, shown at 702.
  • the scoring request may be triggered by a user action on the cloud computing user interface.
  • the scoring request may be initiated when a user logs into the cloud computing service or when the user navigates to an application selection or application browsing screen.
  • the scoring request may also be initiated when a user selects a target file and seeks an application to open the target file, such as with an "Open With" or "Preview” command.
  • the composite scorer unit also receives input data 704 along with application scoring request 702. Each independent scorer may use a portion of input data 704 to generate scores for each application.
  • Input data 704 may include file metadata, application metadata from an application configuration database, data about users, and specially created data structures based on the file, application, and user data.
  • the composite scorer unit initiates a composite scoring routine, shown at 706.
  • the composite scoring routine initiates one or more independent scorers, shown in FIG. 7 as scorers 708a through 708c.
  • Composite scoring routine 706 passes portions of input data 704 to each independent scorer as necessary for the independent scorer to calculate its score.
  • input data 704 may include the file type of each file accessible to the user.
  • Independent scorer 708a may require the file types of files accessible by the user to generate scores, and the composite scoring routine 706 passes this information to independent scorer 708a. There may be a number of independent scorers available and composite scoring routine 706 may initiate only a subset of them. The independent scorers that composite scoring routine 706 initiates may be determined from the application scoring request, or may be determined by which data is received in data input 704, or may be set by default.
  • each independent scorer is a scored list of applications, which are passed on combiner module 710.
  • Combiner module 710 combines the individual scored lists into one composite scored list of applications.
  • the composite scored list of applications is then a table of application IDs and the composite score for each application.
  • the scored list of applications is the output of the composite scorer unit, shown at 714.
  • the scored list of applications may be sorted by score, by application ID, or by any other sorting method, or may be unsorted.
  • the cloud computing service uses the outputted list to generate application recommendations for the user.
  • the composite scorer unit may also have a scorer weight feedback loop 716.
  • Scorer weight feedback loop 716 stores any actions taken by the user given a set of recommended applications provided by the composite scorer unit. For example, a result score may be assigned to a user's choice of recommended applications. If the user selects the top ranked recommended application, the result score may be 1. If the user selects the third ranked recommended application, the result score may be 3.
  • the result scores of every user of the cloud computing service over a period of time may be averaged together to form a composite result score. A lower score indicates that users are selecting applications that are highly recommended by the cloud computing service, while a higher score indicates that users are selecting applications that are not highly recommended. Information regarding whether users disregard the application recommendations may also be stored.
  • the composite result score calculated by scorer weight feedback loop 716 may be used to change the weighting values of each scorer in scorer weight table 712.
  • the weighting value of each scorer may be perturbed randomly or in a principled search scheme and the composite result score for different weighting combinations are compared. Weighting combinations with lower composite result scores indicate a more effective balance of the influence of each independent scorer on the composite score. This allows the composite scorer unit to optimize the weighting values so that the composite scored list of applications more closely aligns with users' actual preferred applications. Other methods of incorporating feedback loops to the scorer weights may also be used by composite scorer unit 700.
  • Method 800 illustrated in FIG. 8 shows a method for providing a scored list of applications for use in recommending applications to a user, which includes receiving at a cloud computing service a request to provide a composite scored list of applications for a user, where the cloud computing service provides a set of available applications to each user of the cloud computing service, and receiving input data for determining the composite scored list of applications.
  • the method further includes initializing a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications, and normalizing the scored list of applications outputted by each independent scorer.
  • the method further includes constructing the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and outputting the composite scored list of applications.
  • Method 800 may be performed on one or more servers that provide a cloud computing service, such as cloud computing service 102 in FIG. 1 or cloud computing service 202 in FIG. 2. Specifically, a composite scorer unit within the cloud computing service, such as shown in FIG. 7, may perform all or a portion of method 800.
  • Method 800 begins when the cloud computing service receives a request to provide a composite scored list of applications to a user, shown at 802. The composite scored list of applications may be used to generate a set of recommended applications to show the user.
  • the request may be triggered by certain user actions on the user interface provided by the cloud computing service. For example, the request may be triggered when the user logs into the cloud computing service on the user's client computer, or when the user navigates to an application selection or application browsing page on the user interface.
  • the scoring request may also be initiated when a user selects a target file and seeks an application to open the target file, such as with an "Open With" or "Preview” command.
  • the cloud computing service also receives input data along with the request to provide a composite scored list of applications, shown at 804. The input data is used to determine the composite scored list of applications.
  • the input data may include file metadata for each file stored on the cloud computing service, application metadata for each application in the set of available applications, information about each user of the cloud computing service, and one or more data structures based on data about the files, applications, and users.
  • each independent scorer takes as input a portion of the input data.
  • one independent scorer may take as input file metadata for each file stored on the cloud computing service while another independent score takes as input information about each user of the cloud computing service and application metadata for each application in the set of available applications.
  • Each independent scorer outputs a scored list of applications, where the score is calculated using a variety of mechanisms. For example, one independent scorer outputs a scored list of applications based on application installation characteristics of each user of the cloud computing service. Another independent scorer outputs a scored list of applications based on application usage characteristics of each user of the cloud computing service. Yet another independent scorer outputs a scored list of applications based on the file types of files stored on the cloud computing service and accessible to the user. Yet another independent scorer outputs a scored list of applications based on the importance of files accessible to the user.
  • the cloud computing service normalizes each scored list, shown at 808.
  • the scores of each scored list may be normalized to range from 0 to 1 by dividing each score by the sum of the scores in the list, or by dividing each score by the highest score in the list. Normalization of the scores allows the scored list of applications to be combined directly without any one independent scorer having inordinate and unintentional influence over the composite scored list of applications.
  • the normalized scored lists of applications are then compiled into a composite scored list of applications, shown at 810.
  • the cloud computing service stores a scorer weight table that associates each independent scorer with a weighting value. The weighting value balances the relative influence each independent scorer has over the composite scored list of applications.
  • One way of calculating a composite score for an application may be expressed as
  • N is the number of independent scorers
  • IS n is the normalized score of the application from the n-th independent scorer
  • W n is the weighting value assigned to the n-th independent scorer.
  • the weighting values may be adjusted using a feedback loop.
  • the cloud computing service recommends applications to its users, and the feedback loop is a function of the applications that the users selected from the recommended applications.
  • a result score is assigned to the choice.
  • the result scores of many user choices are averaged into a composite result score.
  • the cloud computing service may vary the weighting combinations and compare the composite result score of each to determine which weighting combinations are more effective at recommending applications that users actually select.
  • the composite scored list of applications may be unsorted or sorted by score, application ID, or some other sorting basis.
  • the composite scored list of applications is then outputted, shown at 812.
  • the outputted list is used by the cloud computing service to recommend one or more applications to the user.
  • a cloud computing service provides a composite scored list of applications for use in recommending applications to a user.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

A method for providing a scored list of applications for use in recommending applications to a user includes receiving at a cloud computing service a request to provide a composite scored list of applications for a user, where the cloud computing service provides a set of available applications to each user and receives input data for determining the composite scored list of applications. The cloud computing service initializes a plurality of independent scorers, which each take as input a portion of the input data and outputs a scored list of applications, and normalizes the scored list of applications outputted by each independent scorer. The cloud computing service constructs the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications and a weighting value assigned to each independent scorer, and outputs the composite scored list of applications.

Description

SYSTEM AND METHOD FOR PROVIDING RECOMMENDATIONS FOR
APPLICATIONS TO A USER
Cross-Reference to Related Application
[0001] This application claims priority to U.S. Patent Application Serial No. 14/040,782, filed on September 30, 2013, entitled "Systems and Methods for Determining Application Installation Likelihood Based on Probabilistic Combination of Subordinate Methods," the entire contents of which are hereby incorporated by reference.
Background
[0002] Cloud computing services provide users with the ability to store, access, edit, and share electronic files using any electronic device capable of connecting to the cloud computing service over a remote network, such as the Internet. The files are stored on the cloud computing service rather than the user's electronic devices. The cloud computing service provides a user interface, for example through a web browser, for users to access and view the files. The files stored on cloud computing services may include word processing documents, spreadsheet files, presentation files, picture files, audio files, video files, and a number of other open or proprietary file formats.
[0003] A cloud computing service may be able to open many of the files that it stores through its user interface. However, cloud computing services may not be configured to open, display, or edit certain types of files, especially for some proprietary or less common file types. Cloud computing services may instead offer third-party applications to the user, where the third -party applications may be used to open certain files stored on the cloud computing service, as well as perform other functions. Third-party developers work with the cloud computing service to make the applications available to the user. Users may select and install an application to use in conjunction with, or separately from the cloud computing service. Cloud computing services may offer a large number of applications to users. Users may be overwhelmed with choices and may not be aware of certain applications that they may find useful. In addition, users may find it difficult to select between several similar applications, and also may not have the time to install many applications and test each one to find applications that they like. Summary
[0004] The systems and methods described herein provide ways to recommend applications offered by a cloud computing service to a user, where the recommendation is based on a composite score generated for each application provided by the cloud computing service. The composite score is built from a number of independent scorers which assign a score to each application based on a number of criteria. For example, one scorer may base the score on the application installation behavior of users of the cloud computing service. Another scorer may base the score on the application usage behavior of the users. The composite scorer receives input data that each independent scorer uses to calculate its score and passes the input data to each independent scorer. Each independent scorer has a weighting value. The composite score for an application is a function of the score for that application from each independent scorer, weighted by the weighting value of that scorer. The composite scored list of application is used to recommend applications to the user.
[0005] One aspect described herein discloses a method for providing a scored list of applications for use in recommending applications to a user, which includes receiving at a cloud computing service a request to provide a composite scored list of applications for a user, where the cloud computing service provides a set of available applications to each user of the cloud computing service, and receiving input data for determining the composite scored list of applications. The method further includes initializing a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications, and normalizing the scored list of applications outputted by each independent scorer. The method further includes constructing the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and outputting the composite scored list of applications.
[0006] Another aspect described herein discloses an apparatus for providing
recommendations for applications to a user, the apparatus including a server configured to communicate with the plurality of client computers and receive from a first client computer in the plurality of client computers a request to provide a composite scored list of applications for a user, where the server provides a set of available applications to each user of the server. The server is further configured to receive input data for determining the composite scored list of applications, and initialize a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications. The server is further configured to normalize the scored list of applications outputted by each independent scorer, construct the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and output the composite scored list of applications.
[0007] Another aspect described herein discloses a non-transitory computer readable medium storing computer-executable instructions, which, when executed by a processor, cause the processor to carry out a method for providing a scored list of applications for use in recommending applications to a user. The non-transitory computer readable medium includes instructions to receive at a cloud computing service a request to provide a composite scored list of applications for a user, where the cloud computing service provides a set of available applications to each user of the cloud computing service, and instructions to receive input data for determining the composite scored list of applications. The non-transitory computer readable medium further includes instructions to initialize a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications, and instructions to normalize the scored list of applications outputted by each independent scorer. The non- transitory computer readable medium further includes instructions to construct the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and instructions to output the composite scored list of applications.
[0008] Another aspect described herein discloses a system for providing recommendations for applications to a user, the system including a plurality of client computers and a server. The server is configured to communicate with the plurality of client computers and receive from a first client computer in the plurality of client computers a request to provide a composite scored list of applications for a user, where the server provides a set of available applications to each user of the server. The server is further configured to receive input data for determining the composite scored list of applications, and initialize a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications. The server is further configured to normalize the scored list of applications outputted by each independent scorer, construct the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and output the composite scored list of applications.
Brief Description of the Drawings
[0009] The methods and systems may be better understood from the following illustrative description with reference to the following drawings in which:
[0010] FIG. 1 shows a number of client computers in communication with a cloud computing service in accordance with an implementation as described herein;
[0011] FIG. 2 shows the components of a cloud computing service in communication with a client computer in accordance with an implementation as described herein;
[0012] FIG. 3 shows an example of a plurality of scored list of applications outputted by independent scorers in accordance with an implementation as described herein;
[0013] FIG. 4 shows an example of a plurality of normalized scored list of applications in accordance with an implementation as described herein;
[0014] FIG. 5 shows an example of a scorer weight table in accordance with an
implementation as described herein;
[0015] FIG. 6 shows an example of a composite scored list of applications in accordance with an implementation as described herein;
[0016] FIG. 7 shows a scorer unit for generating a scored list of applications in accordance with an implementation as described herein; and
[0017] FIG. 8 shows a method for providing recommendations for applications to a user in accordance with an implementation as described herein.
Detailed Description
[0018] To provide an overall understanding of the systems and methods described herein, certain illustrative embodiments will now be described. However, it will be understood that the systems and methods described herein may be adapted and modified as is appropriate for the application being addressed and that the systems and methods described herein may be employed in other suitable applications, and that such other additions and modifications will not depart from the scope thereof. In particular, a server, service, or system as used in this description may be a single computing device or multiple computing devices working collectively and in which the storage of data and the execution of functions are spread out among the various computing devices. [0019] Aspects of the systems and methods described herein relate to providing a way to recommend applications to a user, where the recommendation is based on a composite score generated for each application provided by the cloud computing service. The composite score is built from a number of independent scorers which assign a score to each application based on a number of criteria. For example, one scorer may base the score on the application installation behavior of users of the cloud computing service. Another scorer may base the score on the application usage behavior of the users. The composite scorer receives input data that each independent scorer uses to calculate its score and passes the input data to each independent scorer. Each independent scorer has a weighting value. The composite score for an application is a function of the score for that application from each independent scorer, weighted by the weighting value of that scorer. The composite scored list of application is used to recommend applications to the user.
[0020] First, a network system in which a number of client computers may connect to a cloud computing service is described. FIG. 1 shows a network system 100 that includes cloud computing service 102 and a number of client computers 104a through 104d. Cloud computing service 102 may include one or more servers that collectively provide cloud computing services for a number of client computers. Cloud computing service 102 stores a number of files accessible by client computers 104a-104d, such as files 106. Files 106 may include word processing documents, spreadsheets, presentations, images, audio files, video files, or any other files of various open or proprietary file types. Users may create, edit, copy, share, and delete files stored on cloud computing service 102. Client computers 104a-104d may include desktop computers, laptop computers, tablets, smart phones, mobile electronic devices, or any other device that may connect to cloud computing service 102 to view files 106. System 100 may include many additional client computers not pictured in FIG. 1. The network connection between the client computers 104a-104d and cloud computing service 102 in network system 100 may be facilitated through a local area network, wide area network, Ethernet, fiber optic network, or any other wired or wireless connection.
[0021] The components of a client computer and a cloud computing service in
communication with each other are now described in more detail. System 200 in FIG. 2 includes a cloud computing service 202 in communication with a client computer 216. Cloud computing service 202 includes a central processing unit (CPU) 204, read-only memory (ROM) 206, random access memory (RAM) 208, communications unit 210, data store 212, and bus 214. Cloud computing service 202 may have additional components that are not illustrated in FIG. 2. Bus 214 allows the various components of cloud computing service 202 to communicate with each other. Communications unit 210 allows cloud computing service 202 to communicate with other devices, such as client computer 216 and other client computers. Data store 212 is used to store files accessible by a user on client computer 216. Users log on to the cloud computing service using a username and password, and cloud computing service 202 provides a user interface for the display of files through the web browsers executing on the client computers. Data store 212 may also store a number of applications that are made available to users for installation.
[0022] Data store 212 may also store metadata regarding files and users, and may store tables, matrices, files and other data structures based on the file and user metadata. The data structures may be used by cloud computing service 202 as input data to create scored list of applications for use in making application recommendations to users. The data structures may be updated or recalculated on a periodic basis by a data process scheduler executed by CPU 204. File and user metadata may be changed by recent user actions, so data structures based on the metadata are recalculated to account for those recent actions. CPU 204 may load some data structures to RAM 208, e.g. a data cache, while CPU 204 processes requests to provide a scored list of applications. The data cache allows CPU 204 to reference recently used data and is periodically refreshed.
[0023] Client computer 216 includes a CPU 224, ROM 220, RAM 222, input/output interface 218, and bus 226. Client computer 216 may have additional components that are not illustrated in FIG. 2. Bus 226 allows the various components of client computer 216 to communicate with each other. Input/output interface 218 allows client computer 216 to communicate with other devices, such as cloud computing service 202. Input/output interface 218 also includes devices for taking in user inputs and displaying outputs to a user, such as a keyboard, mouse, and display screen. CPU 224 executes various programs stored in memory on client computer 216, such as a web browser. Web browsers are used, among other things, to display a user interface provided by cloud computing service 202 for viewing and editing files. Web browsers receive web page documents encoded in HTML, CSS, or other web-compatible languages and interpret the language to properly display the web page.
[0024] Data store 212 for storing files, applications, and data structures on cloud computing service 202, a web browser executing on client computer 216, and other data structures and software programs in system 200 may be implemented using non-transitory computer- readable media. Examples of suitable non-transitory computer-readable media include all forms of non- volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and readonly, once-writable, or rewriteable optical disks (such as, e.g., CDROM, CDR, CD+R, CDRW, CD+RW, DVDROM, DVDR, DVD+R, DVDRW, and DVD+RW).
[0025] A cloud computing service has a large base of users and available applications, and is capable of collecting aggregate data concerning the installation and usage of applications by users. This data are statistically significant and may be harnessed to generate application recommendations for a particular user. There are many ways the combination of data about users, files, and applications may be used in an application recommendation scheme. For example, recommendations may be based on the most frequently downloaded applications by all users, or the most frequently downloaded applications given a set of applications that the user has currently installed. In another example, recommendations for applications to open a target file may be based on which applications have most frequently been used to open the file type of the target file. In another example, recommendations may be based on which applications can open files that are of importance to a user. In another example, users that have similar application usage characteristics to the target user may be identified, and applications that similar users frequently use may be recommended to the target user.
Recommendations may also be based on a combination of one or more of the above- identified methods as well as other methods for recommending applications.
[0026] Various methods of generating scored lists of applications for recommendation to a user are further described in the following co-pending applications: U.S. Patent Application number 14/040,772, entitled "SYSTEMS AND METHODS FOR DETERMINING
APPLICATION INSTALLATION LIKELIHOOD BASED ON INSTALLATION CHARACTERISTICS," which is hereby incorporated by reference herein in its entirety; U.S. Patent Application number 14/040,775, entitled "SYSTEMS AND METHODS FOR
DETERMINING APPLICATION INSTALLATION LIKELIHOOD BASED ON FILE TYPE CHARACTERISTICS," which is hereby incorporated by reference herein in its entirety; U.S. Patent Application number 14/040,779, entitled "SYSTEMS AND METHODS FOR DETERMINING APPLICATION INSTALLATION LIKELIHOOD BASED ON USER FILE TYPE DISTRIBUTION," which is hereby incorporated by reference herein in its entirety; and U.S. Patent Application number 14/040,780, entitled "SYSTEMS AND METHODS FOR DETERMINING APPLICATION INSTALLATION LIKELIHOOD BASED ON USER NETWORK CHARACTERISTICS," which is hereby incorporated by reference herein in its entirety. [0027] A cloud computing service may have multiple independent scorer units, each of which implement one of the recommendation methods described above or other known recommendation methods. The independent scorers each output a scored list of applications from the set of available applications provided by the cloud computing service. Table 300 in FIG. 3 shows an example of the output of three independent scorers evaluating five applications. The score of an application is a measure of the likely relevance of the application to the user. A higher score means that the application should be more strongly recommended to the user according to the scoring methodology used by the independent scorer. Thus in table 300, independent Scorer 1 would recommend App C the most, independent Scorer 2 would recommend App E the most, and independent Scorer 3 would recommend App E the most.
[0028] Each scorer takes as input various data stored by the cloud computing service in order to generate the score. This data may come from file metadata, application metadata, information about users of the cloud computing service, or special data structures derived from the file metadata, application metadata, and user information. For example, an application configuration database accessible by the cloud computing service stores the file types that each application provided by the cloud computing service can open. This information may be used by one or more independent scorers to calculate scores. In another example, the file metadata may contain the file type of the file and how many times each user has used each application to open the file. This information may be used by one or more independent scorers to calculate scores. Specialized data structures may be created from this metadata as well. For example, the cloud computing service may use the file metadata to create an application signature for each user which describes the application usage behavior for each user. The application signature may be used by one or more independent scorers to calculate scores.
[0029] The client computing service may rely solely on a particular independent scorer to recommend applications to a user. However, in some cases more accurate recommendations may be made by combining the results of multiple independent scorers in order to make recommendations based on a variety of data. A composite scored list of applications may be created from the scored list of applications outputted by each independent scorer. However, as seen from table 300, the scores from each independent scorer may have different scales. For example, the non-zero scores for Scorer 1 range from 38 to 1,423 while the non-zero scores for Scorer 2 range from 0.1 to 0.4. If a composite score is calculated by simply adding the scores from each scorer, Scorer 1 would have a disproportionally high amount of influence over the composite score because of its higher numerical range.
[0030] A way to mitigate inequitable scoring scales is to normalize the scores for each scored list of applications outputted by the independent scorers. Normalization forces the scores to be on the same scale. One way to normalize a scored list of applications is to divide each score by the sum of the scores. The result is normalized scores ranging between 0 and 1 , where the sum of the normalized scores is also 1. Another way to normalize the scored list is to divide each score by the highest score in the list, which results in scores that range between 0 and 1 but do not sum to 1. Normalization still preserves the relative difference between the scores. Table 400 in FIG. 4 shows the normalized version of the scored list of applications found in FIG. 3. All the scored lists of applications range from 0 to 1. The scores from different independent scorers may now be compared directly to each other.
[0031] A composite score for an application may simply be the sum of the normalized scores of the application from each independent scorer. However, the cloud computing service may want to weight certain independent scorers more strongly than other independent scorers, i.e. have certain independent scorers influence the composite score to a greater degree. Thus the cloud computing service may assign a weight to each scorer. FIG. 5 shows a scorer weight table 500 that is stored by the cloud computing service. Scorer weight table 500 assigns a weighting value to each scorer. The weighting values may be normalized such that the sum of the weighting values adds to 1. The weighting values may be subject to a feedback loop from the cloud computing service. Information about which applications a user selects from the applications recommended to the user may be used to adjust or optimize the weighting values. This feedback loop is discussed in more detail further herein.
[0032] A composite score for an application may now be generated using the normalized scores from each independent scorer and the weighting values for each scorer. FIG. 6 shows a composite scored list of applications 600 derived from the normalized scored list of applications in FIG. 4 and the scorer weighting table in FIG. 5. Composite scored list 600 may be a table with the application IDs of each application provided by the cloud computing service and its corresponding composite score. The composite score for an application may be expressed as
score = (ISi*Wi + IS2*W2 + . .. + ISN*WN)/( Wi + W2 + . .. + WN)
where N is the number of independent scorers, ISn is the normalized score of the application from the n-th independent scorer, and Wn is the weighting value assigned to the n-th independent scorer. However, there may be other methods to calculate a composite score from the independent scorers and the weighting values. If every scored list of applications has been normalized and the weighting values have also been normalized, the composite scored list is also normalized so that the sum of all the composite scores is 1. The composite scored list of applications may be used by the cloud computing service to recommend applications to a user. The composite scored list of applications may be unsorted or may be sorted based on composite score, application ID, or some other sorting basis.
[0033] The cloud computing service has a composite scorer unit that creates a composite scored list of applications from the output of one or more independent scorers. This composite list may be used by the cloud computing service to recommend one or more applications to a user. FIG. 7 shows an example flow chart 700 of a composite scorer unit operated by the cloud computing service. The process flow for the scorer unit illustrated in FIG. 7 may be summarized below:
1 . Receive request to score applications and a set of input data.
2. Initiate one or more independent scorers to calculate a scored list of applications, and send each independent scorer any required data from the set of input data.
3. Normalize the outputted scored list of applications from each independent scorer.
4. Construct the composite scored list of applications from the normalized scored lists of applications and the scorer weight table.
5. Output scored list of applications.
6. (Optional) Use a feedback loop to adjust the scorer weight table based on the user choices.
[0034] The composite scorer unit is part of the cloud computing service and executes the above process flow each time a request is received to score applications. The process flow above is an example and additional tasks may be done by the composite scorer unit. For example, the composite scorer unit may sort the composite scored list of applications before outputting it. The composite scorer unit is initiated when an application scoring request is received, shown at 702. The scoring request may be triggered by a user action on the cloud computing user interface. For example, the scoring request may be initiated when a user logs into the cloud computing service or when the user navigates to an application selection or application browsing screen. The scoring request may also be initiated when a user selects a target file and seeks an application to open the target file, such as with an "Open With" or "Preview" command. These actions provide opportunities for the cloud computing service to display recommended applications to a user.
[0035] The composite scorer unit also receives input data 704 along with application scoring request 702. Each independent scorer may use a portion of input data 704 to generate scores for each application. Input data 704 may include file metadata, application metadata from an application configuration database, data about users, and specially created data structures based on the file, application, and user data. Once the application scoring request and input data are received, the composite scorer unit initiates a composite scoring routine, shown at 706. The composite scoring routine initiates one or more independent scorers, shown in FIG. 7 as scorers 708a through 708c. Composite scoring routine 706 passes portions of input data 704 to each independent scorer as necessary for the independent scorer to calculate its score. For example, input data 704 may include the file type of each file accessible to the user. Independent scorer 708a may require the file types of files accessible by the user to generate scores, and the composite scoring routine 706 passes this information to independent scorer 708a. There may be a number of independent scorers available and composite scoring routine 706 may initiate only a subset of them. The independent scorers that composite scoring routine 706 initiates may be determined from the application scoring request, or may be determined by which data is received in data input 704, or may be set by default.
[0036] The output of each independent scorer is a scored list of applications, which are passed on combiner module 710. Combiner module 710 combines the individual scored lists into one composite scored list of applications. Combiner module 710 normalizes each scored list before combining them, and may also apply weighting values to each list based on scorer weight table 712. For example, the composite score for an application may be expressed as score = (ISi*Wi + IS2*W2 + . .. + ISN*WN)/( Wi + W2 + . .. + WN)
where N is the number of independent scorers, ISn is the normalized score of the application from the n-th independent scorer, and Wn is the weighting value assigned to the n-th independent scorer. The composite scored list of applications is then a table of application IDs and the composite score for each application. The scored list of applications is the output of the composite scorer unit, shown at 714. The scored list of applications may be sorted by score, by application ID, or by any other sorting method, or may be unsorted. The cloud computing service uses the outputted list to generate application recommendations for the user.
[0037] The composite scorer unit may also have a scorer weight feedback loop 716. Scorer weight feedback loop 716 stores any actions taken by the user given a set of recommended applications provided by the composite scorer unit. For example, a result score may be assigned to a user's choice of recommended applications. If the user selects the top ranked recommended application, the result score may be 1. If the user selects the third ranked recommended application, the result score may be 3. The result scores of every user of the cloud computing service over a period of time may be averaged together to form a composite result score. A lower score indicates that users are selecting applications that are highly recommended by the cloud computing service, while a higher score indicates that users are selecting applications that are not highly recommended. Information regarding whether users disregard the application recommendations may also be stored.
[0038] The composite result score calculated by scorer weight feedback loop 716 may be used to change the weighting values of each scorer in scorer weight table 712. For example, the weighting value of each scorer may be perturbed randomly or in a principled search scheme and the composite result score for different weighting combinations are compared. Weighting combinations with lower composite result scores indicate a more effective balance of the influence of each independent scorer on the composite score. This allows the composite scorer unit to optimize the weighting values so that the composite scored list of applications more closely aligns with users' actual preferred applications. Other methods of incorporating feedback loops to the scorer weights may also be used by composite scorer unit 700.
[0039] Methods for providing recommendations for applications to a user are now described. Method 800 illustrated in FIG. 8 shows a method for providing a scored list of applications for use in recommending applications to a user, which includes receiving at a cloud computing service a request to provide a composite scored list of applications for a user, where the cloud computing service provides a set of available applications to each user of the cloud computing service, and receiving input data for determining the composite scored list of applications. The method further includes initializing a plurality of independent scorers, where each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications, and normalizing the scored list of applications outputted by each independent scorer. The method further includes constructing the composite scored list of applications, where the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer, and outputting the composite scored list of applications. Method 800 may be performed on one or more servers that provide a cloud computing service, such as cloud computing service 102 in FIG. 1 or cloud computing service 202 in FIG. 2. Specifically, a composite scorer unit within the cloud computing service, such as shown in FIG. 7, may perform all or a portion of method 800. [0040] Method 800 begins when the cloud computing service receives a request to provide a composite scored list of applications to a user, shown at 802. The composite scored list of applications may be used to generate a set of recommended applications to show the user. The request may be triggered by certain user actions on the user interface provided by the cloud computing service. For example, the request may be triggered when the user logs into the cloud computing service on the user's client computer, or when the user navigates to an application selection or application browsing page on the user interface. The scoring request may also be initiated when a user selects a target file and seeks an application to open the target file, such as with an "Open With" or "Preview" command. The cloud computing service also receives input data along with the request to provide a composite scored list of applications, shown at 804. The input data is used to determine the composite scored list of applications. The input data may include file metadata for each file stored on the cloud computing service, application metadata for each application in the set of available applications, information about each user of the cloud computing service, and one or more data structures based on data about the files, applications, and users.
[0041] After the cloud computing service receives the request and the input data, the cloud computing service initiates a plurality of independent scorers, shown at 806. Each independent scorer takes as input a portion of the input data. For example, one independent scorer may take as input file metadata for each file stored on the cloud computing service while another independent score takes as input information about each user of the cloud computing service and application metadata for each application in the set of available applications. Each independent scorer outputs a scored list of applications, where the score is calculated using a variety of mechanisms. For example, one independent scorer outputs a scored list of applications based on application installation characteristics of each user of the cloud computing service. Another independent scorer outputs a scored list of applications based on application usage characteristics of each user of the cloud computing service. Yet another independent scorer outputs a scored list of applications based on the file types of files stored on the cloud computing service and accessible to the user. Yet another independent scorer outputs a scored list of applications based on the importance of files accessible to the user.
[0042] After the plurality of independent scorers each output a scored list of applications, the cloud computing service normalizes each scored list, shown at 808. For example, the scores of each scored list may be normalized to range from 0 to 1 by dividing each score by the sum of the scores in the list, or by dividing each score by the highest score in the list. Normalization of the scores allows the scored list of applications to be combined directly without any one independent scorer having inordinate and unintentional influence over the composite scored list of applications. The normalized scored lists of applications are then compiled into a composite scored list of applications, shown at 810. The cloud computing service stores a scorer weight table that associates each independent scorer with a weighting value. The weighting value balances the relative influence each independent scorer has over the composite scored list of applications. One way of calculating a composite score for an application may be expressed as
score = (ISi*Wi + IS2*W2 + ... + ISN*WN)/( Wi + W2 + ... + WN)
where N is the number of independent scorers, ISn is the normalized score of the application from the n-th independent scorer, and Wn is the weighting value assigned to the n-th independent scorer.
[0043] The weighting values may be adjusted using a feedback loop. The cloud computing service recommends applications to its users, and the feedback loop is a function of the applications that the users selected from the recommended applications. Each time a user selects an application from a set of recommended applications provided by the cloud computing service, a result score is assigned to the choice. The result scores of many user choices are averaged into a composite result score. The cloud computing service may vary the weighting combinations and compare the composite result score of each to determine which weighting combinations are more effective at recommending applications that users actually select.
[0044] The composite scored list of applications may be unsorted or sorted by score, application ID, or some other sorting basis. The composite scored list of applications is then outputted, shown at 812. The outputted list is used by the cloud computing service to recommend one or more applications to the user. In this manner, a cloud computing service provides a composite scored list of applications for use in recommending applications to a user.
[0045] It will be apparent that aspects of the systems and methods described herein may be implemented in many different forms of software, firmware, and hardware in the
implementations illustrated in the drawings. The actual software code or specialized control hardware used to implement aspects consistent with the principles of the systems and method described herein is not limiting. Thus, the operation and behavior of the aspects of the systems and methods were described without reference to the specific software code - it being understood that one of ordinary skill in the art would be able to design software and control hardware to implement the aspects based on the description herein.
[0046] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous.

Claims

What is claimed is:
1. A method for providing recommendations for applications to a user, the method comprising:
receiving at a cloud computing service a request to provide a composite scored list of applications for a user, wherein the cloud computing service provides a set of available applications to each user of the cloud computing service;
receiving input data for determining the composite scored list of applications;
initializing a plurality of independent scorers, wherein each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications;
normalizing the scored list of applications outputted by each independent scorer; constructing the composite scored list of applications, wherein the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer; and outputting the composite scored list of applications.
2. The method of claim 1, wherein the composite scored list of applications is sorted by the score of each application.
3. The method of claim 1, wherein each application in the composite scored list of applications is identified by an application ID.
4. The method of claim 1, wherein the weighting values assigned to each independent scorer are normalized.
5. The method of claim 1, the method further comprising adjusting the weighting value assigned to each independent scorer based on a feedback loop from the users of the cloud computing service.
6. The method of claim 5, wherein the cloud computing service recommends applications to users and the feedback loop is a function of the applications that the users selects from the recommended applications.
7. The method of claim 1, wherein the input data comprises at least one of file metadata for each file stored on the cloud computing service, application metadata for each application in the set of available applications, and information about each user of the cloud computing service.
8. The method of claim 1, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on application installation
characteristics of each user of the cloud computing service.
9. The method of claim 1, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on application usage characteristics of each user of the cloud computing service.
10. The method of claim 1, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on the file types of files stored on the cloud computing service and accessible to the user.
11. The method of claim 1 , wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on the importance of files accessible to the user.
12. The method of claim 1, wherein a composite score for a first application in the set of available applications is calculated as:
(ISi*Wi + IS2*W2 + . . . + ISN*Wn)/( Wi + W2 + ... + WN)
where N is the number of independent scorers, ISn is a normalized score of the first application from the n-th independent scorer, and Wn is the weighting value assigned to the n- th independent scorer.
13. An apparatus for providing recommendations for applications to a user, the apparatus comprising:
a server configured to:
communicate with the plurality of client computers; receive from a first client computer in the plurality of client computers a request to provide a composite scored list of applications for a user, wherein the server provides a set of available applications to each user of the server;
receive input data for determining the composite scored list of applications; initialize a plurality of independent scorers, wherein each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications;
normalize the scored list of applications outputted by each independent scorer; construct the composite scored list of applications, wherein the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer; and output the composite scored list of applications.
14. The apparatus of claim 13, wherein the composite scored list of applications is sorted by the score of each application.
15. The apparatus of claim 13, wherein each application in the composite scored list of applications is identified by an application ID.
16. The apparatus of claim 13, wherein the server is further configured to normalize the weighting values assigned to each independent scorer.
17. The apparatus of claim 13, the wherein the server is further configured to:
provide each user with a set of recommended applications;
assign a result score when each user selects an application from the set of
recommended applications; and
adjust the weighting value assigned to each independent scorer based on the average of the result scores from each user.
18. The apparatus of claim 13, wherein the input data comprises at least one of file metadata for each file stored on the server, application metadata for each application in the set of available applications, and information about each user of the server.
19. The apparatus of claim 13, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on application installation characteristics of each user of the server.
20. The apparatus of claim 13, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on application usage characteristics of each user of the server.
21. The apparatus of claim 13, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on the file types of files stored on the server and accessible to the user.
22. The apparatus of claim 13, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on the importance of files to the user.
23. The apparatus of claim 13, wherein a composite score for a first application in the set of available applications is calculated as:
(ISi*Wi + IS2*W2 + . . . + ISN*WN)/( WI + W2 + . . . + WN)
where N is the number of independent scorers, ISn is a normalized score of the first application from the n-th independent scorer, and Wn is the weighting value assigned to the n- th independent scorer.
24. A non-transitory computer readable medium storing computer-executable instructions, which, when executed by a processor, cause the processor to carry out a method for providing a scored list of applications for use in recommending applications to a user, wherein the instructions comprise:
instructions to receive at a cloud computing service a request to provide a composite scored list of applications for a user, wherein the cloud computing service provides a set of available applications to each user of the cloud computing service;
instructions to receive input data for determining the composite scored list of applications; instructions to initialize a plurality of independent scorers, wherein each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications;
instructions to normalize the scored list of applications outputted by each independent scorer;
instructions to construct the composite scored list of applications, wherein the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer; and
instructions to output the composite scored list of applications.
25. The non-transitory computer readable medium of claim 24, wherein the instructions further includes instructions to sort the composite scored list of applications by the score of each application.
26. The non-transitory computer readable medium of claim 24, wherein the instructions further includes instructions to normalize the weighting values assigned to each independent scorer.
27. The non-transitory computer readable medium of claim 24, wherein the instructions further includes instructions to adjust the weighting value assigned to each independent scorer based on a feedback loop from the users of the cloud computing service.
28. The non-transitory computer readable medium of claim 27, wherein the cloud computing service recommends applications to users and the feedback loop is a function of the applications that the users selects from the recommended applications.
29. The non-transitory computer readable medium of claim 24, wherein the input data comprises at least one of file metadata for each file stored on the cloud computing service, application metadata for each application in the set of available applications, and information about each user of the cloud computing service.
30. The non-transitory computer readable medium of claim 24, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on application installation characteristics of each user of the cloud computing service.
31. The non-transitory computer readable medium of claim 24, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on application usage characteristics of each user of the cloud computing service.
32. The non-transitory computer readable medium of claim 24, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on the file types of files stored on the cloud computing service and accessible to the user.
33. The non-transitory computer readable medium of claim 24, wherein a first independent scorer in the plurality of independent scorers outputs a first scored list of applications based on the importance of files to the user.
34. The non-transitory computer readable medium of claim 24, wherein a composite score for a first application in the set of available applications is calculated as:
(ISi*Wi + IS2*W2 + . . . + ISN*WN)/( WI + W2 + . . . + WN)
where N is the number of independent scorers, ISn is a normalized score of the first application from the n-th independent scorer, and Wn is the weighting value assigned to the n- th independent scorer.
35. A system for providing recommendations for applications to a user, the system
comprising:
a plurality of client computers; and
a server configured to:
communicate with the plurality of client computers;
receive from a first client computer in the plurality of client computers a request to provide a composite scored list of applications for a user, wherein the server provides a set of available applications to each user of the server;
receive input data for determining the composite scored list of applications; initialize a plurality of independent scorers, wherein each independent scorer takes as input a portion of the input data and outputs a scored list of applications for the set of available applications;
normalize the scored list of applications outputted by each independent scorer; construct the composite scored list of applications, wherein the composite scored list of applications is a function of the normalized scored list of applications outputted by each independent scorer and a weighting value assigned to each independent scorer; and output the composite scored list of applications.
PCT/US2014/053012 2013-09-30 2014-08-27 System and method for providing recommendations for applications to a user Ceased WO2015047640A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/040,782 US9390141B2 (en) 2013-09-30 2013-09-30 Systems and methods for determining application installation likelihood based on probabilistic combination of subordinate methods
US14/040,782 2013-09-30

Publications (1)

Publication Number Publication Date
WO2015047640A1 true WO2015047640A1 (en) 2015-04-02

Family

ID=51541315

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2014/053012 Ceased WO2015047640A1 (en) 2013-09-30 2014-08-27 System and method for providing recommendations for applications to a user

Country Status (2)

Country Link
US (1) US9390141B2 (en)
WO (1) WO2015047640A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107735766A (en) * 2015-06-05 2018-02-23 苹果公司 Systems and methods for proactively providing recommendations to users of computing devices

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9536199B1 (en) * 2014-06-09 2017-01-03 Google Inc. Recommendations based on device usage
WO2017007488A1 (en) * 2015-07-09 2017-01-12 Hewlett Packard Enterprise Development Lp Staged application rollout
US10540158B2 (en) * 2016-07-18 2020-01-21 Google Llc Post-install application interaction
US10824412B2 (en) * 2018-04-27 2020-11-03 Nutanix, Inc. Method and apparatus for data driven and cluster specific version/update control
US10579370B2 (en) * 2018-08-03 2020-03-03 EMC IP Company LLC Method to disintegrate a monolith service to microservices
US11271882B2 (en) * 2019-12-02 2022-03-08 Sap Se Message normalization engine for multi-cloud messaging systems
US12242864B2 (en) * 2022-06-24 2025-03-04 Microsoft Technology Licensing, Llc File opening optimization

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090106314A1 (en) * 2007-10-22 2009-04-23 Samsung Electronics Co., Ltd. Situation-aware recommendation using correlation
US20090259998A1 (en) * 2008-04-11 2009-10-15 International Business Machines Corporation Method, system and computer program for identifying and reusing component aggregates

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100433242B1 (en) 2001-08-20 2004-05-24 이상기 Goods recommendation system and method using artificial intelligence reasoning engine, a storage medea
US7617519B2 (en) 2004-03-18 2009-11-10 Microsoft Corporation System and method for intelligent recommendation with experts for user trust decisions
US20060136389A1 (en) 2004-12-22 2006-06-22 Cover Clay H System and method for invocation of streaming application
US7660581B2 (en) 2005-09-14 2010-02-09 Jumptap, Inc. Managing sponsored content based on usage history
US8364540B2 (en) 2005-09-14 2013-01-29 Jumptap, Inc. Contextual targeting of content using a monetization platform
US8260787B2 (en) * 2007-06-29 2012-09-04 Amazon Technologies, Inc. Recommendation system with multiple integrated recommenders
US7991757B2 (en) * 2008-08-12 2011-08-02 Amazon Technologies, Inc. System for obtaining recommendations from multiple recommenders
US10984397B2 (en) 2009-03-31 2021-04-20 Ebay Inc. Application recommendation engine
US8370510B2 (en) 2009-12-18 2013-02-05 Microsoft Corporation Remote application presentation over a public network connection
US8977642B2 (en) 2010-03-19 2015-03-10 Intuit Inc. Recommending relevant and personalized content accessing keywords for users of a text messaging service based global textsite platform
US20110307354A1 (en) * 2010-06-09 2011-12-15 Bilgehan Erman Method and apparatus for recommending applications to mobile users
US9405848B2 (en) 2010-09-15 2016-08-02 Vcvc Iii Llc Recommending mobile device activities
US20120072283A1 (en) * 2010-09-16 2012-03-22 Mobilmeme, Inc. Mobile application recommendation system and method
US20120215816A1 (en) 2010-09-28 2012-08-23 Adam Kidron Content management platform apparatuses, methods and systems
US20120096435A1 (en) 2010-10-18 2012-04-19 Microsoft Corporation Capability-based application recommendation
US8595626B2 (en) * 2010-11-01 2013-11-26 International Business Machines Corporation Application recommendation
JP5962926B2 (en) 2011-03-03 2016-08-03 日本電気株式会社 Recommender system, recommendation method, and program
US8468164B1 (en) 2011-03-09 2013-06-18 Amazon Technologies, Inc. Personalized recommendations based on related users
US8452797B1 (en) * 2011-03-09 2013-05-28 Amazon Technologies, Inc. Personalized recommendations based on item usage
US9058612B2 (en) 2011-05-27 2015-06-16 AVG Netherlands B.V. Systems and methods for recommending software applications
US8832655B2 (en) 2011-09-29 2014-09-09 Accenture Global Services Limited Systems and methods for finding project-related information by clustering applications into related concept categories
US20130103758A1 (en) 2011-10-19 2013-04-25 c/o Facebook, Inc. Filtering and ranking recommended users on a social networking system
WO2013062546A1 (en) 2011-10-27 2013-05-02 Hewlett-Packard Development Company, L.P. Application store interface for remote management of client devices
KR101812657B1 (en) 2011-11-22 2018-01-31 삼성전자주식회사 A method and apparatus for recommending applications based on context information
KR20130065802A (en) 2011-11-30 2013-06-20 삼성전자주식회사 System and method for recommending application by using keword
US20130166357A1 (en) 2011-12-21 2013-06-27 Holger Eggs Recommender engine
KR101895536B1 (en) 2011-12-29 2018-10-25 삼성전자주식회사 Server and terminal for recommending application according to use of application, and recommending application method
US9213729B2 (en) 2012-01-04 2015-12-15 Trustgo Mobile, Inc. Application recommendation system
US8799635B2 (en) 2012-01-26 2014-08-05 International Business Machines Corporation Intelligent application recommendation feature
US20130198029A1 (en) 2012-01-26 2013-08-01 Microsoft Corporation Application recommendation and substitution
US9483344B2 (en) 2012-04-05 2016-11-01 Assurant, Inc. System, method, apparatus, and computer program product for providing mobile device support services
CN103677863B (en) 2012-09-04 2018-02-27 腾讯科技(深圳)有限公司 The method and device of software migration recommendation
US8612470B1 (en) * 2012-12-28 2013-12-17 Dropbox, Inc. Application recommendation using stored files
US9130942B2 (en) 2013-02-05 2015-09-08 Qualcomm Incorporated Optimizing recipient application selection in a multiple application environment using equivalence classes for applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090106314A1 (en) * 2007-10-22 2009-04-23 Samsung Electronics Co., Ltd. Situation-aware recommendation using correlation
US20090259998A1 (en) * 2008-04-11 2009-10-15 International Business Machines Corporation Method, system and computer program for identifying and reusing component aggregates

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107735766A (en) * 2015-06-05 2018-02-23 苹果公司 Systems and methods for proactively providing recommendations to users of computing devices
US10922094B2 (en) 2015-06-05 2021-02-16 Apple Inc. Systems and methods for proactively providing recommendations to a user of a computing device
US12360782B2 (en) 2015-06-05 2025-07-15 Apple Inc. Systems and methods for proactively providing recommendations to a user of a computing device

Also Published As

Publication number Publication date
US9390141B2 (en) 2016-07-12
US20150095321A1 (en) 2015-04-02

Similar Documents

Publication Publication Date Title
US9390141B2 (en) Systems and methods for determining application installation likelihood based on probabilistic combination of subordinate methods
US11526653B1 (en) System and method for optimizing electronic document layouts
US20220156512A1 (en) Machine learning to generate and evaluate visualizations
RU2720952C2 (en) Method and system for generating digital content recommendation
US11599548B2 (en) Utilize high performing trained machine learning models for information retrieval in a web store
US9613131B2 (en) Adjusting search results based on user skill and category information
US20150193089A1 (en) Dynamic presentation systems and methods
EP2984616A1 (en) Method and device for testing multiple versions
US9633081B1 (en) Systems and methods for determining application installation likelihood based on user network characteristics
KR20140096412A (en) Method to recommend digital contents based on search log and apparatus therefor
EP3129900A1 (en) Ranking suggestions based on user attributes
US20190188274A1 (en) Recommendation prediction based on preference elicitation
US8682892B1 (en) Ranking search results
US11663520B1 (en) Regularization relaxation scheme
US9390382B2 (en) Template regularization for generalization of learning systems
JP6203304B2 (en) Information processing apparatus, information processing method, and information processing program
CN115176242A (en) Automatic user language detection for content selection
KR20210019359A (en) Stock Price Prediction Service Method and System
US20140067812A1 (en) Systems and methods for ranking document clusters
US8005775B2 (en) System and method for detecting human judgment drift and variation control
US9558233B1 (en) Determining a quality measure for a resource
US9177255B1 (en) Cloud systems and methods for determining the probability that a second application is installed based on installation characteristics
JP5325280B2 (en) Information processing device
US20140244633A1 (en) Relevance-weighted attribute sorting apparatus and method
CN112395517A (en) House resource searching and displaying method and device and computer readable storage medium

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14766286

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14766286

Country of ref document: EP

Kind code of ref document: A1