Recommending candidates for consumption

Methods and apparatus are described herein for recommending candidates for consumption. A first set of one or more candidates for first time consumption by a user and associated utility scores may be identified. A second set of one or more candidates for reconsumption by the user may be determined. Utility scores of the second set of one or more candidates for reconsumption may be determined based on consumption history of the user and aggregate consumption history of a population of users of which the user is associated. A candidate to be recommended to the user for consumption may be selected from the first or second set. The candidate may be selected based at least in part on the utility scores of the first and second sets.

BACKGROUND

Users may consume items based on recommendations received from various sources. For example, a user may provide a streaming music application with various signals (e.g., preferred artist, like/dislike of particular songs, etc.) indicative of her taste in music. Based on these signals, the streaming music application may recommend a next song for the user to listen to. As another example, when a user watches a video on a video streaming website, the video streaming website may, based on various signals related to the user or the video she watched, recommend other videos to the user, e.g., in the margin around the video player. As yet another example, a map application on a mobile device may recommend a nearby restaurant to a user based on various signals, such as cuisines and/or price points preferred by the user.

SUMMARY

The present disclosure is generally directed to methods, apparatus and computer-readable media (transitory and non-transitory) for recommending “candidates for consumption”—e.g., songs, videos, restaurants, etc. (also referred to as “items”)—to a user. An application (e.g., music streaming application, map application, video viewer) may determine that a user desires to consume a particular type of item (e.g., song, video, restaurant, etc.). For instance, a user may have finished listening to one song and may be awaiting playback of another recommended song. Or, the user may request a recommendation for a restaurant nearby. The application may identify, e.g., in a first set of candidates to be recommended for consumption, candidates for “first time consumption”—e.g., songs, videos, restaurants, etc. that the user has never before “consumed.” The system may also determine, as a second set of candidates for recommendation for consumption, candidates for “reconsumption”—e.g., songs videos, restaurants, etc. that the user has consumed previously. “Utility scores”—any quantization of a level of usefulness, utility or value a user is predicted to realize from consuming a particular item—may be determined for candidates of the first and second sets. Utility scores (of the second set) of candidates for reconsumption may also be based on “reconsumability” and/or “locality” metrics. The candidate ultimately selected for recommendation to the user may be selected from first and second sets based on the utility scores.

In some implementations, a computer implemented method may be provided that includes the steps of: identifying, by a computing system, a first set of one or more candidates for first time consumption by a user and associated utility scores; determining, by the computing system, a second set of one or more candidates for reconsumption by the user; determining, by the computing system, utility scores of the second set of one or more candidates for reconsumption based on consumption history of the user and aggregate consumption history of a population of users of which the user is associated; and selecting, by the computing system, a candidate to be recommended to the user for consumption from the first or second set, the candidate selected based at least in part on the utility scores of the first and second sets.

The method may further include calculating, by the computing system, the utility scores associated with the one or more candidates for reconsumption based at least in part on localities of the one or more candidates for reconsumption. In some implementations, the localities of the one or more candidates for reconsumption are based on a number of consumption iterations by the user since the candidate was last consumed by the user. In some implementations, the localities of the one or more candidates for reconsumption are based on weights assigned to past consumption iterations.

In some implementations, the method may further include determining, by the computing system, the weights to assign to the past consumption iterations based at least in part on a consumption type shared by the one or more candidates for reconsumption. In some implementations, the method may further include determining, by the computing system, the weights to assign to the past consumption iterations based at least in part on aggregate consumption history of the population of users of items having the consumption type. In some implementations, the method may further include determining, by the computing system, the weights to assign to the past consumption iterations based at least in part on consumption history of the user of items sharing the consumption type.

In some implementations, the method may further include calculating, by the computing system, the utility scores associated with the one or more candidates for reconsumption based at least in part on reconsumability of the candidates for reconsumption. In some implementations, the method may further include determining, by the computing system, reconsumability of a candidate of the second set for reconsumption based on a popularity of the candidate among the population of users. In some implementations, reconsumability of the candidate of the second set for reconsumption is further based on a reconsumption rate of the candidate in relation to the popularity of the candidate. In some implementations, the utility scores are calculated further based on localities of the one or more candidates for reconsumption.

Other implementations may include a non-transitory computer readable storage medium storing instructions executable by a processor to perform a method such as one or more of the methods described above. Yet another implementation may include a system including memory and one or more processors operable to execute instructions, stored in the memory, to perform a method such as one or more of the methods described above.

DETAILED DESCRIPTION

FIG. 1illustrates an example environment in which candidates for consumption may be recommended to a user. The example environment includes a client device106and a consumable distribution system102(hereinafter referred to as “distribution system102”). Distribution system102may be implemented in one or more computers that communicate, for example, through a network (not depicted). Distribution system102may be an example of a system in which the systems, components, and techniques described herein may be implemented and/or with which systems, components, and techniques described herein may interface.

A user may interact with distribution system102via client device106. Distribution system102may receive one or more signals104from the client device106and may return one or more recommendations108in response to the signals104. Other computer devices may submit signals to distribution system102such as additional client devices and/or one or more servers implementing a service for a website that has partnered with the provider of distribution system102. For brevity, however, the examples are described in the context of client device106.

Client device106may be a computer in communication with distribution system102through a network such as a local area network (LAN) or wide area network (WAN) such as the Internet (one or more such networks indicated generally at110). Client device106may be, for example, a desktop computing device, a laptop computing device, a tablet computing device, a mobile phone computing device, a computing device of a vehicle of the user (e.g., an in-vehicle communications system, an in-vehicle entertainment system, an in-vehicle navigation system), or a wearable apparatus of the user that includes a computing device (e.g., a watch of the user having a computing device, glasses of the user having a computing device, a wearable music player). Additional and/or alternative client devices may be provided.

Client device106may execute one or more applications that enable a user to receive recommendations of candidates for consumption. For example, the client device106may execute one or more client applications107that allow users to receive recommendations of various types of candidates for consumption, including but not limited to music, movies, textual content (e.g., E-books), restaurants, bars, activities, events, and so forth. In some implementations, client application107may further enable a user to consume some types of items. For example, client application107may be a music streaming application that enables a user to listen to music, or a web browser that enables a user to listen to music, watch videos, or consume other types of content. In other implementations, client application107may be a map application that a user may use to obtain recommendations for restaurants, bars, events, and so forth.

In some implementations, client device106and distribution system102each include memory for storage of data and software applications, a processor for accessing data and executing applications, and components that facilitate communication over network110. The operations performed by client device106and/or distribution system102may be distributed across multiple computer systems. Distribution system102may be implemented as, for example, computer programs running on one or more computers in one or more locations that are coupled to each other through a network.

In various implementations, distribution system102may include a consumable engine120, a consumption history engine122, a locality engine124, a reconsumability engine126, and/or a recommendation engine128. In some implementations one or more of engines120,122,124,126and/or128may be combined and/or omitted. In some implementations, one or more of engines120,122,124,126and/or128may be implemented in a component that is separate from distribution system102. In some implementations, one or more of engines120,122,124,126and/or128, or any operative portion thereof, may be implemented in a component that is executed by client device106.

Consumable engine120may maintain an index125of consumables for distribution by distribution system102. Consumable engine120may use conventional and/or other indexing techniques. Consumables may include but are not limited to music, web pages, text documents (e.g., E-books), videos, web feeds, restaurants, bars, dance halls, clubs, stores, sporting destinations, and events, to name just a few.

Consumption history engine122may optionally maintain, for use by distribution system102, another index127that includes or facilitates access to information about prior consumption of consumables maintained in index125. For example, one or more components of distribution system102may utilize consumption history information contained in index127to determine one or more consumables from index125to recommend to a user for consumption.

In some implementations, client device106, e.g., by way of client application107, may maintain, in an index129, data related to consumption history of client device106and/or a user of client device106. In some implementations, index129may include data about items previously consumed using client device106. In some implementations, index129may include data about items previously consumed by a user of client device106, independent of client device106. Consumption history data in index129may include but is not limited to data about previously-consumed items themselves (e.g., a ranking of the item by a user of client device106, metadata, type of cuisine, etc.), when the item was consumed, how many consumption iterations have elapsed since the item was consumed, and so forth. In some implementations, client device106may make data from index129available, e.g., as signals104, for use by distribution system102to recommend items for consumption.

In this specification, the term “database” and “index” will be used broadly to refer to any collection of data. The data of the database and/or the index does not need to be structured in any particular way and it can be stored on storage devices in one or more geographic locations. Thus, for example, the indices125,127and/or129may include multiple collections of data, each of which may be organized and accessed differently.

As used herein, a “consumption iteration” refers to an instance of a particular user consuming, or a particular client device106being used to consume, an item of a particular type. For instance, if index129indicates that a user has listened to songs one hundred times, twenty four consumption iterations have elapsed since the user listened to a song for the seventy fifth time. If index129indicates that a user has eaten out at restaurants ten times, then nine consumption iterations have elapsed since the user ate out at a restaurant for the first time. A consumption iteration is characterized by a particular type of item, not by a particular item. Hence, the same item may be consumed and reconsumed in separate consumption iterations. For instance, in the restaurant example, the user may have eaten out ten times, but may have eaten at less than ten unique restaurants.

Locality engine124may be configured to determine one or more “locality” metrics associated with a user and/or candidates for (re)consumption. Reconsumability engine126may be configured to determine one or more “reconsumability” metrics of one or more candidates for consumption. “Locality” and “reconsumability” metrics will be described further below with regard to method200ofFIG. 2.

Recommendation engine128may, in some implementations, determine utility scores of candidates for reconsumption based on one or more locality metrics determined by locality engine124and/or one or more reconsumability metrics determined by reconsumability engine126. Recommendation engine128may then select, e.g., from a set of candidates for first time consumption and a set of candidates for reconsumption based on utility scores, a candidate to be recommended to a user.

Referring now toFIG. 2, an example method200of recommending candidates for consumption is described. For convenience, the operations of the flow chart are described with reference to a system that performs the operations. This system may include various components of various computer systems. For instance, some operations may be performed at the client device106, while other operations may be performed by one or more components of the distribution system102, such as consumable engine120, consumption history engine122, locality engine124, reconsumability engine126, and/or recommendation engine128. Moreover, while operations of method200are shown in a particular order, this is not meant to be limiting. One or more operations may be reordered, omitted or added.

Method200may begin (“START”) when the time comes to make a recommendation to a user of an item to consume. For instance, a user may request, e.g., from client application107, a recommendation for a restaurant nearby. As another example, client application107may be a streaming music application, and a user may be about to finish consuming a song. At that point, client application107may be configured to recommend, or automatically begin playing after the current song completes, the next song. As yet another example, client application107may be a standalone video viewer or a web browser with an integrated video viewer, and a user may be watching or about to complete watching a video. Client application107may be configured to recommend other videos to the user, e.g., in a margin around the video viewer or within the video viewer after completion of the video.

At block202, the system may identify a first set that includes one or more candidates for first time consumption by a user, as well as utility scores associated with those candidates for consumption. For instance, assume a user is about to complete consumption of a song. The system may identify, e.g., based on various characteristics of the user (e.g., general musical tastes), the song she is about to finish, or other signals, one or more candidate songs that the user has not previously consumed (e.g., at least to the system's knowledge) that are predicted to be useful or desirable to the user. The system may quantify how useful or desirable or desirable those candidate songs with associated utility scores. In the context of new items never before consumed by the user, the utility scores may be based on general popularity of the items, popularity of the items in a population of users similar to the user, closeness of the items to items the user has previously found to be highly useful (or not useful), and so forth.

At block204, the system may determine a second set that includes one or more candidates for reconsumption by the user. For instance, the system may query index129for songs that the user has previously listened to or restaurants the user visited previously. In some implementations, such a query may be limited to a certain time frame (e.g., in the last twelve months), the last x consumption iterations, or in other ways.

At block206, the system may determine one or more locality metrics of the candidates for reconsumption determined at block204. “Locality” metrics may include metrics related to how recently the user previously consumed a particular candidate for reconsumption. In various implementations, each past consumption iteration may be assigned a weight to be used when calculating utility scores of candidates for reconsumption.

For example, in various implementations, the system may determine weights to assign to the past consumption iterations based at least in part on a consumption type shared by the candidates for reconsumption. Different weights may be assigned to past consumption iterations when the consumption type is “song,” as opposed to “video” or “restaurant,” because, for instance, a user may be more likely to reconsume a song she previously consumed two consumption iterations ago than she would be to revisit a restaurant she previously consumed two consumption iterations ago (consuming a song typically requires less investment in time/money/effort than consuming a restaurant).

As another example, take a list of the last ten restaurants frequented by the user. Various metrics relating to restaurants, such as how likely in general users are to revisit that particular restaurant or a particular type of restaurant (bar, ethnic cuisine, etc.) within x consumption iterations of last having eaten there, may be used to determine weights to assign to each of the list of ten restaurants previously visited by the user. In some implementations, one or more reconsumability metrics (described below) also may be used to determine the weights, or to determine utility scores based on the weights.

In various implementations, the system may determine weights to assign to the past consumption iterations based at least in part on aggregate consumption history (e.g., from index127) of the population of users of items having the consumption type. For instance, aggregate consumption history may reveal that most users tend to attain greater value from revisiting a restaurant that was previously visited more than three weeks ago than a restaurant that was visited less than three weeks ago (e.g., due to burnout of that particular restaurant). As another example, aggregate consumption history may reveal that most users tend to attain greater value from reconsuming a comedy video that was previously consumed less than ten comedy video consumption iterations ago than another that was consumed more than ten comedy video consumption iterations ago (e.g., comedy videos may become stale to users quickly).

In addition to aggregate consumption history, in various implementations, the system may determine weights to assign to the past consumption iterations based at least in part on consumption history of the user of items sharing the consumption type. For instance, the user's consumption history (e.g., from index129) may reveal a penchant for frequenting the same restaurant in bursts (e.g., five times in a row, then not for some time, then four times in a row again). The system may take these burst patterns into account when assigning weights to past consumption iterations.

In some implementations, the system may employ an Expectation-Maximization (EM) algorithm to assign a set of weights, w1, w2, w3, . . . , wn, to a set of prior consumption iterations. Let xtdenote the item selected at time t, and yjtdenote which of the previous consumption iterations xtwas copied from. Assume also that yjt∝wj. For a maximization step, the system may attempt to determine the set of weights, w1, w2, w3, . . . , wn, that maximize the expected log likelihood. Consider all events ε where the item consumed has been consumed previously. The system may use the following equation to determine a contribution cjta given event εtmakes to each weight j:

cjt={yjt∑k<t:xk=xt⁢ykt,if⁢⁢xt=xt-j0,otherwise
Then, the system may compute new weights, e.g., using an equation such as the following:

The system may, in some implementations, initialize the weights to be equal; in such case, it may be the relative magnitude of the weights that governs the result. Then system may then repeat calculations described above until the weights converge.

Referring back toFIG. 2, at block208, the system may determine one or more reconsumability metrics of the candidates for reconsumption. “Reconsumability” metrics may include metrics such a general popularity of a particular candidate for reconsumption (e.g., how many times consumed), as well as how often the item is reconsumed by users in general (e.g., unique users/total times consumed). A popular item that is not often reconsumed by the public (or by a population of users with which the user is associated) may indicate that the item is something that many users tend to consume once, but not again, and thus may receive a relatively low reconsumability score. Conversely, a somewhat less popular item that is reconsumed often may receive a higher reconsumability score. An item that is both popular and reconsumed often may receive a relatively high reconsumability score. In some cases, if user does not tend to attain much value out of reconsuming things—e.g., she prefers new restaurants every time—then her candidates for reconsumption may receive relatively low reconsumability scores across the board.

In some implementations, given a set of events, the system may determine a maximum likelihood score as proportional to an overall popularity of an item. For example, given a consumption sequence x1, x2, . . . , xn, the maximum likelihood scores s, may be calculated by the system using an equation such as the following:

In some implementations, and as indicated by the double-headed arrow between blocks206and208, the system may use reconsumability metrics to determine locality metrics, and vice versa. For example, items associated with a series of prior consumption iterations may have various reconsumability values or scores associated with them. The system may take those reconsumability values or scores into account when assigning weights to those past consumption iterations.

Based on the locality and reconsumability metrics determined at blocks206-208, the system may determine utility scores of the candidates for reconsumption determined at block204. These utility scores may be calculated in various ways, such as by multiplying a weight by a reconsumability score.

At block212, the system may select a candidate to be recommended for consumption to the user from the first or second set, e.g., based on the utility scores determined at blocks202and210. Depending on the nature of the user's operation of client device106—e.g., whether client application107is a music streaming player looking for a next song to play, a video player application looking for a video to recommend, a map application looking for a restaurant to recommend to the user, etc.—the system may recommend and/or facilitate transition of the selected candidate to the user.

FIGS. 3A-Dschematically demonstrate one example of how disclosed techniques may be implemented to recommend a candidate song for consumption. Songs are used for illustrative purposes only. Similar techniques may be used for video, restaurants, or other types of consumables. InFIG. 3A, a first set of candidate songs for first time consumption,350a-d, have been identified, e.g., by recommendation engine128, along with their associated utility scores (“US”). A first candidate song for first time consumption350ahas a utility score of 72. A second candidate song for first time consumption350bhas a utility score of 74. A third candidate song for first time consumption350chas a utility score of 78. A fourth candidate song for first time consumption350dhas a utility score of 82. In this example, utility scores range from zero to one hundred, but this range was selected for illustrative purposes only, and is not meant to be limiting.

A second set that includes candidates for reconsumption352a-ehas also been determined, e.g., by recommendation engine128based on information contained in index129. In this example, each candidate for reconsumption has been assigned a default weight of 0.5. These candidates for reconsumption352a-erepresent five previous consumption iterations, t−5, t−4, . . . , t−1. The next consumption iteration, for which a next song is to be recommended, is designated354, and will occur at a present consumption iteration t. The next song354may be selected from the first set350containing candidates for first time consumption or the second set352containing candidates for reconsumption, e.g., based on utility scores of the respective candidates.

InFIG. 3B, aggregate user consumption history has been used, e.g., by locality engine124, to determine weights for the candidates for reconsumption352a-e. First candidate for reconsumption352ahas been assigned the weight 0.5. Second candidate for reconsumption352bhas been assigned the weight 0.6. Third candidate for reconsumption352cand fourth candidate for reconsumption352dhave both been assigned the weight 0.7. Fifth candidate for reconsumption352ehas been assigned the weight 0.6. These weights indicate that users in general are likely to derive more value from reconsuming songs last consumed at past consumption iterations t−3 and t−2 than other past consumption iterations.

InFIG. 3C, user consumption history for the specific user has been used, e.g., by locality engine124, to modify the weights for the candidates for reconsumption352a-e. Although this operation is depicted as occurring after the operation shown inFIG. 3B, this is not meant to be limiting. These operations may be performed in the reverse order, as well. First candidate for reconsumption352ahas been assigned a recalculated weight of 0.7. Second candidate for reconsumption352bhas been assigned a recalculated weight of 0.9. Third candidate for reconsumption352chas been assigned a recalculated weight of 0.6. Fourth candidate for reconsumption352dhas been assigned a recalculated weight of 0.5. Fifth candidate for reconsumption352ehas been assigned a recalculated weight of 0.2. These recalculated weights indicate that the specific user is likely to derive the most value from reconsuming a song last consumed at past consumption iteration t−4, and very unlikely to derive much value from immediately reconsuming the last-consumed song,352e.

InFIG. 3D, reconsumability scores (“RS”) have been computed, e.g., by reconsumability engine126, for the candidates for reconsumption352a-e. As noted above, reconsumability scores may be computed based on various information, such as general popularity of a song, reconsumption rate of the song (alone and in combination with the song's popularity), and so forth. In this example, reconsumability scores range from zero to one hundred, but this range was selected for illustrative purposes only, and is not meant to be limiting. First candidate for reconsumption352ahas received a reconsumability score of 90. Second candidate for reconsumption352bhas received a reconsumability score of 99. Third candidate for reconsumption352chas received a reconsumability score of 86. Fourth candidate for reconsumption352dhas received a reconsumability score of 12. Fifth candidate for reconsumption352ehas received a reconsumability score of 98. These reconsumability scores indicate that candidates for reconsumption352band352eare much more likely than others to provide users with value when reconsumed. Fifth candidate for reconsumption352e, on the other hand, apparently is very unlikely to provide value if reconsumed (e.g., it is unpopular, not often reconsumed, or both).

Based on the reconsumability scores and the weights, the system has calculated utility scores (“US”) for the candidates for reconsumption352a-einFIG. 3D. In this example, the utility score is simply the product of the weight and the reconsumability score. However, this is not meant to be limiting, and other more complex algorithms may be implemented instead. First candidate for reconsumption352ahas received a utility score of 63. Second candidate for reconsumption352bhas received a utility score of 89.1. Third candidate for reconsumption352chas received a utility score of 51.6. Fourth candidate for reconsumption352dhas received a utility score of 6. Fifth candidate for reconsumption352ehas received a utility score of 19.6. As indicated by the dashed arrow, second candidate for reconsumption352bmay be selected to be recommended to the user for consumption because its utility score (89.1) is greater than the highest utility score of the first set containing candidates for first time consumption (350dhas a utility score of 82).

FIG. 4is a block diagram of an example computer system410. Computer system410typically includes at least one processor414which communicates with a number of peripheral devices via bus subsystem412. These peripheral devices may include a storage subsystem424, including, for example, a memory subsystem425and a file storage subsystem426, user interface output devices420, user interface input devices422, and a network interface subsystem416. The input and output devices allow user interaction with computer system410. Network interface subsystem416provides an interface to outside networks and is coupled to corresponding interface devices in other computer systems.

Storage subsystem424stores programming and data constructs that provide the functionality of some or all of the modules described herein. For example, the storage subsystem424may include the logic to perform selected aspects of method200and/or to implement one or more of consumable engine120, consumption history engine122, locality engine124, reconsumability engine126, and/or recommendation engine128.

These software modules are generally executed by processor414alone or in combination with other processors. Memory425used in the storage subsystem can include a number of memories including a main random access memory (RAM)430for storage of instructions and data during program execution and a read only memory (ROM)432in which fixed instructions are stored. A file storage subsystem424can provide persistent storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a CD-ROM drive, an optical drive, or removable media cartridges. The modules implementing the functionality of certain implementations may be stored by file storage subsystem424in the storage subsystem424, or in other machines accessible by the processor(s)414.

Bus subsystem412provides a mechanism for letting the various components and subsystems of computer system410communicate with each other as intended. Although bus subsystem412is shown schematically as a single bus, alternative implementations of the bus subsystem may use multiple busses.

Computer system410can be of varying types including a workstation, server, computing cluster, blade server, server farm, or any other data processing system or computing device. Due to the ever-changing nature of computers and networks, the description of computer system410depicted inFIG. 4is intended only as a specific example for purposes of illustrating some implementations. Many other configurations of computer system410are possible having more or fewer components than the computer system depicted inFIG. 4.