US20140032358A1 - Sharing Recommendation Agents - Google Patents
Sharing Recommendation Agents Download PDFInfo
- Publication number
- US20140032358A1 US20140032358A1 US13/950,177 US201313950177A US2014032358A1 US 20140032358 A1 US20140032358 A1 US 20140032358A1 US 201313950177 A US201313950177 A US 201313950177A US 2014032358 A1 US2014032358 A1 US 2014032358A1
- Authority
- US
- United States
- Prior art keywords
- user
- recommendation
- recommendation agent
- agent
- behavioral model
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0631—Item recommendations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/02—Services making use of location information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/02—Services making use of location information
- H04W4/029—Location-based management or tracking services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/20—Services signaling; Auxiliary data signalling, i.e. transmitting data via a non-traffic channel
- H04W4/21—Services signaling; Auxiliary data signalling, i.e. transmitting data via a non-traffic channel for social networking applications
Definitions
- the described embodiments pertain to making recommendations to a user based on location data and other data collected from mobile devices.
- a variety of personalized recommendation systems currently exist. These systems typically record user events (such as purchases of particular products) and/or preferences (such as ratings of products and media) to generate a model for the user. This model is then used to recommend “similar” items to the user.
- user events such as purchases of particular products
- preferences such as ratings of products and media
- This model is then used to recommend “similar” items to the user.
- obstacles to building useful applications on top of the kinds of user models currently available.
- Embodiments of the invention include a method, a non-transitory computer readable storage medium and a system for creating a sharable customized recommendation agent that makes recommendations for a user based on a context-based model for the user.
- a context is a (possibly partial) specification of what a user was doing in the dimensions of time, place, and activity. Each of these dimensions may be defined specifically (e.g., location defined by latitude 47.60621, longitude ⁇ 122.332071) or very generally (e.g., the location “Seattle, Wash.”), or entirely unspecified (e.g., omitted or a default value). They may also be ascribed varying degrees of semantic meaning (e.g., “Seattle” contains more semantic information than “47.60621, ⁇ 122.332071”).
- a context can represent a stay in a certain location or travel from one place to another. Contexts may have probabilities associated with them. In some cases, contexts may be inferred from evidence rather than known with certainty. Thus, contexts can vary in their specificity, their semantic content, and their likelihood.
- a customized recommendation agent for the user is built using a behavioral model.
- the customized recommendation agent selects recommendations from a corpus to present to the user, based on the behavioral model and the user's current or predicted future context.
- the customized recommendation agent can be shared by the user with others, thus allowing others to access recommendations that may appeal to the user, for example, for use in planning joint activities. Because the user's recommendation agent is independent from the user's actual history, preferences can be shared without revealing a user's specific behavior. Thus, the user's privacy is maintained.
- Embodiments of the computer-readable storage medium store computer-executable instructions for performing the steps described above.
- Embodiments of the system further comprise a processor for executing such computer-executable instructions.
- FIG. 1 is a block diagram illustrating the system environment for creating and using sharable recommendation agents in accordance with an embodiment of the invention.
- FIG. 2 is a diagram illustrating the relationship of sensor data, slices, and contexts in accordance with an embodiment of the invention.
- FIG. 3 is a flow chart illustrating a process of creating and updating a user's contextual history in accordance with an embodiment of the invention.
- FIG. 4 is a flow chart illustrating a process of slicing in accordance with an embodiment of the invention.
- FIG. 5 is a flow chart illustrating a process of labeling in accordance with an embodiment of the invention.
- FIG. 6 is a block diagram illustrating one embodiment of the recommendation agent module shown in FIG. 1 .
- FIG. 7 is a flow chart illustrating a method of making a recommendation based on a user's routine in accordance with an embodiment of the invention.
- FIG. 8 is a flow chart illustrating a method of making a recommendation based on personality metrics for a user in accordance with an embodiment of the invention.
- FIG. 9 illustrates a method of creating a modified recommendation agent for sharing in accordance with an embodiment of the invention.
- Embodiments of the invention include sharable recommendation agents that make recommendations based on a user's routine and/or metrics describing the user's personality, as determined from context slices generated from observed data.
- a context is a (possibly partial) specification of what a user was doing in the dimensions of time, place, and activity. Contexts can vary in their specificity, their semantic content, and their likelihood.
- Raw context data can be collected from a variety of observation sources with various error characteristics. Slicing refines the chaotic collection of contexts produced by data collection into consistent segments, called slices, each with a corresponding set of contexts. Accordingly, the slices and corresponding context data are then available for further processing, such as determining features of the user's routine and/or metrics describing the user's personality.
- FIG. 1 is a block diagram illustrating the system environment 100 for creating, using and sharing recommendation agents, in accordance with an embodiment of the invention.
- the system environment 100 includes one or more raw context collectors 110 , a context refiner module 120 , contextual history storage 130 , and a recommendation agent module 140 .
- the entities of the system environment 100 may be contained on a single processing node, such as a user's mobile device, and in another embodiment, the entities of the system environment may be divided between the user's mobile device and a centralized processing node to decrease the processing requirements of the mobile device.
- An example distributed embodiment is one where the raw context collectors 111 are located on the user's mobile device and data is sent to a central device for context refinement, storage, and agent building.
- the raw context collectors 110 collect raw context data from observation sources, sensors, monitors, third party sources, and the like.
- a raw context represents a single observation and so is generally very specific, often carries little semantic information on its own, and is of high probability. Naturally, different observation sources may have greater degrees of noise and uncertainty or may inherently include semantic information.
- the raw context collectors 110 include a location module 111 , an activity module 112 , and a social module 113 , but different and/or other context collectors 110 may be included in other embodiments.
- the context collectors include sensors for measuring device orientation (e.g., a compass), magnetic fields, user heart rate, and user stress level, as well as modules for audio and visual sampling of the user's environment.
- Examples of location module 111 include a GPS receiver, and a WiFi receiver that enable the location module 111 to determine an absolute or relative location of the user's mobile device, within a margin of error.
- Examples of the activity module 112 include, a monitor of key presses that determines when a user is typing or otherwise interacting with the user's mobile device, and an accelerometer that measures the acceleration forces on the mobile device to determine movement and movement patterns of the mobile device.
- Examples of social module 113 include a FACEBOOK friend graph, PINTEREST pins, FOURSQUARE check ins, and other social media data that identify a user's social acquaintances, activities, and locations.
- the context refiner module 120 receives the raw context data from the raw context collectors 110 .
- the context refiner module 120 groups the context data by combining the observations into slices in order to create a more coherent representation of the user's context during the time range represented by the slice.
- Each slice includes one or more contexts that apply to the user for the time range corresponding to the slice.
- the context refiner module 120 may also attach semantic content to a slice or sequence of slices to provide additional contextual information, such as an activity that the slice or slices represent general locations like a city or neighborhood, specific business locations, time of day, or day of week.
- the context refiner module 120 includes a plurality of context refiner sub-modules (not shown); one for each type of context data received from the raw context collectors 110 .
- Each context refiner sub-module groups context data by combining the observations from the corresponding raw context collector 110 into slices in order to create a more coherent representation of the user's context indicated by the specific type of context data the sub-module is operating on.
- the context refiner module 120 includes an additional refiner sub-module (not shown) that analyzes the multiple streams of contexts generated by the other context refiner sub-modules to detect overlapping slices and generate combined slices containing context information from the corresponding overlapping slices.
- the contextual history storage 130 receives the slices formed by the context refiner module 120 from a user's raw contextual data and stores them in association with an identifier of the user.
- the contextual history storage 130 contains a collection of slices that collectively describe the user's contextual history. This collection may consist of multiple parallel streams of contextual information as well as a single master stream composing all these contexts together.
- the recommendation agent module 140 can then access the stored slices in order to build recommendation agents (and make recommendations) that are customized for the user. The processes of creating slices and building customized recommendation agents will be described in detail in the sections below.
- FIG. 2 is a diagram illustrating the relationship of sensor data, slices, and contexts, in accordance with an embodiment of the invention.
- FIG. 2 illustrates observations, which are the collections of sensor data from a mobile device.
- the observations include Global Positioning System readings, Cellular triangulation signals, and emails sent from the device.
- the points along the time axis at which these observations are collected are marked.
- the user's time can be divided into a sequence of slices.
- each slice has a type and a start and end time.
- the type is either “stay” or “travel” and the start and end times establish the limits or boundaries of the slice.
- the slice also has a centroid location
- the slice also has a speed of the travel.
- the metadata may describe the dimensions of time, place, and activity of the user at various levels of generality.
- the first slice is associated with a place dimension of the context at various levels of generality/specificity: at a city level, a street address level, and a venue level.
- Embodiments of the invention divide the process of the creation and updating of a user's contextual history into three phases: data collection, slicing, and labeling. These phases are illustrated in the flow chart of FIG. 3 , and described in detail in this section.
- Data collection 301 involves accessing the various sources of information and observations of user behavior, optionally transporting their data to servers for analysis and storage (to offload CPU load and reduce battery usage), and translating the data into a collection of raw contexts for additional analysis.
- These observations may come from a variety of sources, including but not limited to the following:
- Slicing 302 is the process of refining the chaotic, multi-threaded collection of raw contexts produced by data collection into consistent segments, called slices, each comprising a set of one or more contexts. For example, in the case of location data such as that from GPS sensors, these slices generally represent either a stay at one place or a process of travel from one place to another.
- place information may be refined, in that each stay context defines an area that includes most of the individual points observed during that time. Travel contexts will generally have a start and end point, with some definition of the route between them (e.g., waypoints).
- no additional semantic meaning or activity information is added during slicing 302 .
- Other types of data can be used to produce other types of slices, such as slices representing a period of consistent activity. For example, an activity like “shopping” may be represented by a longer-duration slice that overlaps with multiple location slices representing stays at different retail businesses as well as travel between those businesses. Conversely, an activity like “sleeping” may span only part of a stay at home.
- a biometric slice such as “high caloric burn” may cover part of a visit to the park as well as time at the gym.
- Embodiments of the invention divide the process of slicing 302 into three phases: preprocessing 410 , segmentation 420 , and reconciliation 430 . Each of these phases is described in detail in this section, with reference to the flow chart illustrated in FIG. 4 .
- the steps of FIG. 4 are illustrated from the perspective of the context refiner module 120 performing the method. However, some or all of the steps may be performed by other entities and/or components. In addition, some embodiments may perform the steps in parallel, perform the steps in different orders, or perform different steps.
- preprocessing 410 involves a combination of filtering 412 , smoothing 414 , and interpolation 416 .
- Filtering 412 Filters on raw context data eliminate from consideration raw context data that are deemed more inaccurate than some desirable threshold.
- the value of the filter threshold can be sensor-specific, due to different sensor error characteristics. For example, a GPS device's data uncertainty is calculated by physical factors related to the timing of signals received from the device's acquired satellites, so it can report a reliable estimate of sensor inaccuracy. In contrast, reported uncertainty is less reliable with location technology based on cell tower or Wi-Fi triangulation, which lack the measurement precision necessary to account for fluctuations in wireless signal strength, therefore the threshold for filtering 412 those contexts may be higher. When using any location technology, the amount of filtering 412 will depend on its expected error characteristics, and the error characteristics are expected to vary between sources of data. Optionally, default threshold values for filters may be set system-wide, set per sensor type, or based on user preferences. In addition to filtering 412 by location technology, physically unlikely readings (e.g., traveling at higher speeds than possible) may also be filtered.
- Smoothing 414 It is also helpful to later slicing phases for context grooming to smooth sequences of contexts from the same sensor when each individual context is noisy. Noise characteristics are hardware dependent, so the smoothing 414 of each sensor should be parameterized to limit the noise expected from that sensor. For example, a certain accelerometer may generate noisy contexts at a high sampling rate, characterized by large magnitude swings in all axes. One way to smooth such data is to compute an average of the magnitude values over a time window and then output the smoothed magnitude values at a less frequent sampling rate. Smoothing 414 is also used when different sensors conflict.
- the degree of smoothing 414 will depend on the variability in data noise from each particular location technology.
- Interpolation 416 Uneven sampling rates can also be due to power conservation, where a device chooses to go into a low-power, low sampling rate state, or is forced to by a governing operating system such as a mobile phone OS. It is common for sensors to be configured to increase sampling when the environment is changing, and to decrease it when the environment (from the sensor's perspective) is static. As slicing 302 occurs over a finite window of time, a decreased sampling rate could lead to relevant context data falling outside the window. Therefore, it is desirable in some cases to interpolate less frequent context data to ensure that the later phases of slicing 302 have sufficient data to analyze. Interpolation 416 generates virtual context data between sensed context data.
- sensor data payload may include an indication that there has been an interruption in contexts since the last time a sensor generated context. This may be the default behavior whenever a sensor is (re)started for data collection by the controlling data collection process. In addition, if there is an exceptionally long gap between context data from sensors, it may indicate an interruption even if the sensors fail to set the flag and would be treated as such.
- Segmentation 420 involves determining distinct, contiguous series of slices from the groomed sensor data representing different activities. For example, the simple day of a user who is an office worker could be segmented into a stay slice located in the morning at her domicile, then a commute to work travel slice, a stay slice at an office, then a commute back home travel slice, followed by a stay slice in the evening at her domicile.
- k-means clustering can be applied to find clusters of contexts (by location, or a distance function combining location and time).
- Stay slices can be distinguished from travel slices by the dispersion of location context and/or velocity data. Because k-means has fundamental limitations, other more sophisticated clustering algorithms can be used additionally or alternatively to extract slices.
- segmentation 420 can also be performed by applying time-series analysis algorithms, using the variance of a sliding window of input contexts to detect inflection points in the distribution.
- the algorithm divides the two subsequences into slices that can then be classified as a stay or travel. For example, a stay is distinguishable from a travel by the low amount of variance in each individual input context in the stay sequence to its centroid, the geographic average location.
- This meta-segmenter can pick and choose slices output with the highest associated probability among all constituent segmentation algorithms.
- Segmentation 420 can also be followed by filter and merge steps that smooth the output slices.
- Filters can remove short slices with more uncertainty associated with the contexts included therein, e.g., those with few actual sensor observations, and merge adjacent segments that are likely to be the same activity.
- the thresholds on minimum required observation uncertainty or distance from adjacent segments for filtering and merging can be parameterized to control the false positive rate (groups of raw context data that should not have been segmented) compared to the false negative rate (groups of raw context data that should have been segmented but were not).
- the final phase of slicing 302 deals with resolving newly generated slices with existing contexts generated from a previous slicing 302 run. While this reconciliation 430 is optional—if it were computationally feasible to run slicing 302 on an entire raw context set, the brand new contexts could simply replace the older ones—in some cases reconciliation 430 provides desirable qualities for the purpose of presentation. For example, it is desirable not to change contexts and slices in a user's history that have been previously displayed to the user, unless new data is in significant conflict, because the instability in data shown to the user would appear inconsistent.
- One way to limit the scope of changes between new and preexisting slices is to specify a time window within which preexisting data may be changed or replaced. Any data outside the window (i.e., older than a certain age), would be left unchanged in later slicing 302 runs. Contexts from newer slices are then integrated into the eligible preexisting slices by comparing type (stay or travel) and time spans. If a new slice is of the same type and begins and ends at approximately the same time as an existing slice, it could retain the same metadata of the existing slice, including any identifier labels (ids) and contexts.
- ids identifier labels
- the process can prefer the new slice except when there has been manual intervention, for example when a user has already interacted with the existing slice or confirmed it in some way using a user interface.
- the last slice is most likely to have changed due to new data, and could have its ending time extended if it aligns with a new slice starting at a time near its own start time, or completely replaced if the type changed (if a previously presumed stay were actually the beginning of a travel slice, for instance).
- Labeling 303 is the process of adding more specific and semantically meaningful data to the slices produced by slicing 302 . In one embodiment, some or all of these labels are themselves contexts associated with the slices. In particular, labeling 303 adds geography (such as a slice's city or neighborhood), venue (public places, businesses, or personally significant places like “home”), and activity (such as “working”, “eating”, or “going to see a movie”).
- geography such as a slice's city or neighborhood
- venue public places, businesses, or personally significant places like “home”
- activity such as “working”, “eating”, or “going to see a movie”.
- the process of labeling 303 may suggest a revision in slicing 302 , such as when the labeling 303 process determines that a user was eating and then seeing a movie at the theater next door, while the slicing 302 phase represented both activities as a single slice, prompting the single slice to be split into two successive slices, taking place at distinct venues.
- a slice can be labeled using identifiers from predefined data sets, such as public venue records, or automatically generated, for example using a reverse geocoding system that converts latitude and longitude coordinates into an approximate street address.
- the labeling 303 process uses these data sources to apply probable labels to each slice. Some labels are exclusive while others may coexist alongside one another.
- Example data sources for the labeling 303 process include:
- the labeling 303 process can be broken into three phases: label candidate search 510 , label candidate ranking 520 , and label application 530 , as illustrated in FIG. 5 .
- the label sources are first queried to discover possible labels based on the slice's existing contexts.
- the following provides examples of how various label types can be searched.
- Venues and places are found based on the slice's location, which by definition is a consistent estimate of a user's location over a period of time. However, there is a degree of uncertainty when using the associated slice location. Essentially, raw sensors providing locations are imprecise.
- the label candidate search 510 phase does not rely on the exact location represented by the slice, but instead expands the search within some radius calculated as an estimate of the uncertainty. For example, if a slice's location was calculated using Wi-Fi triangulation, the triangulation error is often in the tens to low hundreds of meters, so the search process may query for venues and places centered at the slice location within two hundred meters.
- Events and appointments can be found based on the slice's location and time boundaries. An event at a venue would be matched against the overlapping time boundaries between the event and the slice. Appointments are also matched against location and time. Because event and appointment time boundaries are imprecise, and slice time boundaries may be imperfect, the slice's time boundaries do not need to exactly match those of an event or appointment. Similarly, the slice location does not need to be an exact match either.
- the label candidate search 510 finds possible events and appointments within the likely uncertainty radius of the slice location.
- the label candidate search 510 process can bring up associated activity labels.
- the slice context can be compared to similar slices in the past if the user had previously labeled activities manually. For example, if a user previously labeled an activity at the same venue or a venue in the same category as the slice that has not yet been labeled with an activity, that activity would be considered as a candidate for labeling the slice.
- the likelihood of each one given the contexts already associated with the slice is evaluated.
- the likelihood of each label is computed and the labels are ranked.
- slices are constrained to only having one label of some types (e.g., venue labels), and the top-ranked label meeting the minimum likelihood threshold is applied to the slice. For other label types, multiple labels can be valid for a single slice, and all labels meeting the minimum threshold of likeliness are applied.
- Likelihoods are calculated by scoring a candidate label given the contexts already associated with a slice.
- a model is defined to be an algorithm for computing likelihoods given slice context. Models treat the various aspects of a slice context as features. Some example features include:
- models can use other sources of information to inform the likelihood estimate.
- Some example information sources include:
- One or more models can be run to process a slice's context(s) into labels, which are applied in label application 530 .
- multiple models can be represented by a single meta-model that runs the appropriate features through its composing models. Once the meta-model outputs probabilities, labels deemed sufficiently likely are applied to the slice. In one embodiment, labels that are not deemed to be sufficiently likely can still be surfaced as options to the user should he/she wish to alter the label set by adding new labels, with the label candidate ranking 520 intact. In such cases, it is not necessary for the same meta-model to produce the label candidate ranking 520 —different meta-models can rank labels differently to produce whatever is specified by the system design of a particular embodiment.
- automatic label application 530 does not require that every label is ranked solely by likelihood. For example, when users interact with the label candidates (e.g., to manually apply labels), it can be desirable to present candidate labels in different orders to make finding desired labels easier. For example, an alphabetical order or a hybrid order that incorporates both likelihoods and lexicographical positions can be used. Once labels are applied to slices, the additional contextual data is presentable to the user and available for further processing in a variety of forms.
- a user's history can be used to build a recommendation agent that is customized for the user and able to be shared with others. Additional data about the user and/or the items that are considered for recommendation can also be used in building the sharable recommendation agent.
- the recommendation agent module 140 models the user's routine and/or personality in order to build a customized recommendation agent.
- the recommendation agent module 140 also updates the customized recommendation agent based on feedback provided by the user after the agent has begun to be used.
- FIG. 6 is a block diagram illustrating one embodiment of a recommendation agent module 140 .
- the illustrated recommendation agent module 140 includes a routine module 610 , a personality module 620 , an agent compiler module 630 , a feedback module 640 , recommendation agent storage 650 , and a recommendation corpus 660 .
- the recommendation agent module 140 contains different and/or additional elements.
- the functions may be distributed among the elements in a different manner than described herein.
- the routine module 610 and personality module 620 generate models of a user's routine and personality respectively, based on the corresponding user history stored in contextual history storage 130 . Alternatively, any other type of user behavioral model is derived from observed behavior of the user.
- the agent compiler module 630 builds a customized recommendation agent for the user based on the routine model, the personality model, and/or additional information about the user (e.g., another type of behavioral model) that is available to the recommendation agent module 140 .
- the customized recommendation agent is stored in the recommendation agent storage 650 and may be shared with others.
- the feedback module 640 gathers feedback during use of the customized recommendation agent and updates the agent based on the gathered feedback.
- the recommendation corpus 660 comprises a plurality of possible recommendations and corresponding metadata (e.g., a type of recommendation, times when the recommendation is appropriate, types of personality that are likely to respond positively to the recommendation, and the like).
- the recommendations in the recommendation corpus 660 can be compiled from various existing sources and/or generated by the recommendation agent module 140 .
- FOURSQUARE provides a publicly accessible database or venues and events that may be included as part of the recommendation corpus 660 .
- the recommendation agent module 140 may maintain a list of activities (e.g., going for a walk, eating ice-cream, etc.) and add activities to the list if a user tags a slice with a previously unknown activity.
- the same data sources that are used for labeling are used to populate the recommendation corpus 660 .
- recommendations are compiled in an ongoing way as new recommendations become available (e.g., new restaurants open, events are scheduled, books are published, etc.) and added to the recommendation corpus 660 for later delivery to the user or group of similar users.
- just-in-time recommendations are generated in real-time for a user based on the user's current context. For instance, when the user is in a new area of the city, the recommendation agent module 140 searches existing databases for possible recommendations in the area and the user's personality and routine data are used to determine appropriate recommendations (e.g., a nearby and highly rated restaurant for dinner).
- the routine module 610 takes a user's history comprising slices as input and generates a model describing the user's routine.
- the routine model describes correlations between contexts for the user that can be used to generate recommendations based on the user's current contexts. For example, if a user regularly leaves work to purchase lunch at midday, the routine model could indicate a correlation between the contexts “midday” and “eating.” Thus, a recommendation system using the routine model might recommend restaurants in the user's vicinity at around midday, even if the user is not at work that day.
- the routine module 610 processes the slices in the user's history to create a collection of transitions.
- a transition is defined as a change from one context to another.
- a transition has a source (the starting context) and a destination (the following context).
- transitions can have varying degrees of specificity, semantic content, and likelihood. For example, a user's night out could be described by any (or all) of the following transitions: dinner followed by a movie, Joe's Pizza followed by Regal Theaters, the Capitol Hill neighborhood followed by the University neighborhood.
- the routine module 610 can therefore record many possible transitions (with associated probabilities) to account for a segment of observed behavior.
- the series of contexts included in the slices of a user's history also define a collection of transitions.
- Embodiments of the invention use the following process to build a routine model for a user based on that user's sequence of historical slices.
- the result of this process is an incrementally-updated routine model for the user consisting of a collection of transition rules, each with a source context, a destination context, and a probability.
- a segment of a user's history that involves three slices: a stay at a coffee shop in Bellevue, travel from Bellevue to Seattle, and a stay at the user's workplace in Seattle.
- the location module 111 might have been uncertain whether the user was at Joe's Café or Barbara's Bagels next door (e.g., due to the noise in position data), assigning a higher probability to Joe's.
- transitions for both Joe's and Barbara's are generated and added to the routine model, with the corresponding probability for Joe's being higher than that for Barbara's.
- the routine module 410 considers only the most likely interpretation of the data, only transitions that exceed a threshold probability.
- contexts are filtered according to combinations of these approaches.
- transitions rules can have sets of contexts as sources, allowing non-Markovian transition rules.
- a rule could encode that when a user goes to the Capitol Hill neighborhood followed by the University District neighborhood, the user then has a high probability of visiting the Fremont neighborhood.
- the source in this example consists of a sequence of two contexts, for the two neighborhoods.
- the recommendation agent module 140 represents users' general preferences using transition rules. For example, a general love of antique shops is represented by a transition rule where the source is the null context (i.e., anywhere, anytime) and the destination is the antique shop category. Thus, the recommendation agent module 140 can manage a user's general preferences by including such transition rules in the user's routine model, and these preferences will both generate recommendations (just as for other rules) and modify the weights assigned to generated recommendations.
- routine module 610 stores the routine model in recommendation agent storage 650 for future further processing.
- routine model is passed to the agent compiler module 630 and used to complete the building of a sharable recommendation agent in combination with additional factors (e.g., a personality model, as described below).
- additional factors e.g., a personality model, as described below.
- the routine model may not be independently saved to any form of long term storage at all.
- the personality module 620 takes a user history comprising slices as input and generates a model describing the user's personality.
- the goal of the user personality model is to provide a better understanding of the user in general terms (rather than tracking specific preferences) and use that to guide the recommendation process.
- Much research has been done on the problem of categorizing, detecting, and understanding personality types. Examples include Jung's “Psychological Types”, the Myers-Briggs Type Indicator derived from it, Enneagrams, and others.
- the aim of these approaches is to provide a system for exhaustively describing personality types along with a method to determine a person's type, typically based on an interview or survey.
- embodiments of the personality module 620 use plurality of personality traits (dimensions) and determine an estimate for the user's affinity with that trait. In one such embodiment, this process is automated (requiring no human interpretation), and nonintrusive (e.g., avoiding explicit survey questions).
- a specific representation of user personality and method of characterization that is well-suited to use by the personality module 620 is described below. However, the techniques described below are equally applicable to other personality representations, such as those mentioned above or others that may be devised.
- the context refiner module 120 outputs slices indicating historical contexts associated with a user.
- the personality module 620 processes the slices and recommends other places, businesses, or events to the user based on the user's historical contexts.
- the personality module 620 builds a personality model for the user that indicates the user's affinity with various personality traits, and the system makes recommendations based on the user's personality traits indicating high likelihood of interest in the recommended item. For example, if the user's personality model indicates an affinity for outdoor activities, the model built by the personality module 620 may cause the system to recommend a nearby park, even if the user has not previously been observed visiting parks.
- the personality module 620 represents each personality trait as a position of a personality dimension, ranging from not exhibiting the trait in question at all, to completely exhibiting the trait at all times, with most people falling somewhere in the middle. Thus, a given user will be evaluated as having a score (e.g., from 0% to 100%) for each dimension. In one embodiment, the following dimensions are used:
- the personality module 620 uses different and/or additional personality dimensions. Any aspect of personality can be used in the personality model, as long as (1) it is known how to test for that trait in people (e.g. using survey questions); and (2) it is known how to map the trait to useful features in an application of the system.
- the exemplary embodiment described uses only personality traits closely related to the task of recommending places to go, but other types of traits can be used. For example, in one embodiment, Myers-Briggs traits are used to learn where users stand on dimensions including extraversion/introversion and thinking/feeling. Another embodiment learns personality traits including tastes in books, movies, and other entertainment and thus is able to determine correlations between activities that are not obviously linked. For example, one such personality model can predict whether a person who likes a certain type of movie will enjoy going to a certain restaurant.
- the example personality dimensions described above can be determined for a person by asking them to answer a questionnaire.
- questionnaires typically pose binary choices such as “would you rather visit a library or a bar?” By asking many of these questions, general tendencies can be determined such as ‘desire for solitude’ or ‘love of the outdoors.’
- embodiments analyze the behavior data collected by the system to automatically determine the personality traits.
- the personality module 620 is initialized using a baseline user group. Thus, when the system is used by an end user, it has already been trained and can immediately provide meaningful recommendations. In one embodiment, the following general algorithm is used to initialize the personality module 620 :
- AMAZON's “Mechanical Turk” product is a way to recruit and pay users.
- a task is created in Mechanical Turk that asks users for (1) authorization to their FOURSQUARE data; and (2) answers to a number of binary-choice personality questions.
- FOURSQUARE is a service that encourages users to “check in” to places they visit. Users can see other users' tips about those places, receive special deals from businesses they check in to, and earn “badges” for checking into various kinds of places.
- FOURSQUARE provides an approximation of the user's behavior. Thus, FOURSQUARE provides a good source of data to use as some or all of the baseline group behavior data. While such behavioral data is not as complete as information collected by the system described herein, since users do not check in everywhere they go and do not indicate how long they stayed, it allows the collection of behavior data from many existing users without having to recruit people to use a new application for days or weeks.
- the personality questionnaire given to the baseline user group comprises binary-choice questions, as described above, which pose a number of choices intended to elicit information about the user's preferences. By asking enough questions (e.g., 20 questions, but more or fewer may be asked), it can be determined where the user stands on the personality dimensions to be used.
- the Foursquare history of each baseline user group member can be used to personalize the questions asked—the corresponding FOURSQUARE histories reveal the city each member lives in, the neighborhoods they spend time in, and specific places they have been.
- the questions posed to each member can relate to real places around the member, and knowing and be tailored to test traits such as novelty and proximity that are dependent on the member's behavior over a period of time.
- determining a member's affinity for novelty requires not just knowledge that the member has visited a particular restaurant, but also whether the user has previously visited that restaurant.
- Other traits can determined based on general data about places visited by the member.
- the member's affinity for outdoor activities can be influenced by identifying a visit to a park, regardless of past behavior.
- each visit to a place is encoded by the following features:
- the computed statistics include:
- the personality module 620 has been initialized using the baseline user group. Once the personality module 620 has been initialized, an end user's history can be used to predict the user's personality, without the need for the end user to explicitly provide data.
- the above statistics can be computed and the predictive model used to generate a personality model for the end user, without requiring the end user to complete a survey, or actively provide personality data in any other manner.
- the personality module 620 stores the personality model in recommendation agent storage 650 for future further processing.
- the personality model is passed to the agent compiler module 630 and used to complete the building of a sharable recommendation agent in combination with additional factors (e.g., a routine model, as described above).
- additional factors e.g., a routine model, as described above.
- the personality model may not be independently saved to any form of long term storage at all.
- the recommendation agent module 140 can use the user's personality model to improve recommendations in many ways, including, but not limited to:
- transition rules can be represented by a transition rule with a null source.
- personality traits can be represented by a transition rule with a null source.
- a preference for solitary activities can be represented by a transition from the null source to a “solitary” context.
- Venues and events can be associated with particular personality traits (e.g., an expensive downtown restaurant can be tagged as obsolete), and these associations with traits become additional venue attributes that can be used when generating and weighting recommendations for a user.
- some traits, such as extravagance and outdoors are computed from available venue metadata, and are thus the same for all users.
- Other traits like novelty and proximity are determined from information about the user's history and location (e.g., a venue is considered novel if the user's history does not include a previous visit to the venue) and can thus differ from user to user.
- these attributes are determined for venues and events in various other and/or additional ways.
- the agent compiler module 630 builds a sharable customized recommendation agent for an end user that takes the end user's current context(s) as input and outputs customized recommendations.
- the recommendation agent is based on the end user's routine model, personality model, and/or additional data describing the end user and his/her interests.
- an agent is simply a system capable of adapting itself to a particular user's preferences and needs. This definition refers to how the system is presented to the user and is not intended to imply how the agent is implemented. For example, a monolithic system may compute recommendations for all users simultaneously, while the visible user interface presents those recommendations as coming from the user's agent.
- a customized recommendation agent is a file that is generated by the agent compiler module 630 at a recommendation service provider server and transferred (e.g., via the internet) to the end user's mobile device, where it is used by a recommendation application to provide customized recommendations.
- the agent compiler module 630 executes on the end user's mobile device using data from local storage and/or accessed remotely via a network.
- the customized recommendation agent file for the sender can be transferred to the recipient's mobile device, where it is used by the recipient's recommendation application to provide customized recommendations.
- the recipient's recommendation application may access the sender's customized recommendation agent file from a recommendation service provider server.
- the feedback module 640 collects feedback regarding recommendations from the end user and uses that feedback to update the end user's recommendation agent.
- a variety of feedback can be collected from end users in order to improve the models used by the recommendation agent and/or directly improve the recommendation agent itself.
- feedback can be categorized as either explicit or implicit.
- Explicit feedback is any information deliberately provided by the end users about their preferences or the quality of a recommendation. In various embodiments, several forms of explicit feedback are collected and used to improve the recommendation agents.
- end users can explicitly express a preference in favor of venues and events anywhere they see them in the recommendation system's user interface (UI), for example by selecting a button associated with the venue or event in the UI. This includes at the time the recommendation is initially offered.
- the feedback module 640 can use this information directly, for example by favoring recommendation of a previously liked venue in an appropriate context.
- the feedback module 640 can extract attributes of the venue (such as category of business, neighborhood, price range, and other features) and use them to increase the likelihood that the recommendation agent of the end user will recommend items with such attributes in future.
- the feedback module 640 can determine how the venue aligns with the end user's personality traits (for example, whether it is social, obsolete, and so on) and adjust the weights of those traits in the end user's personality model accordingly.
- Reasons describe the system's justifications for recommending something, and can be determined by venue attributes (e.g., it's popular or highly rated, it's from a category you've enjoyed in the past, etc.), by context (e.g., it's nearby), or by personality traits (e.g., it's social). Reasons also reflect the routine contexts used to generate the recommendation. For example, if a recommendation was generated because of past behavior in the same neighborhood, at the same time of day, or following the same type of venue, these would all appear as reasons (“you usually go out for coffee when you're in this neighborhood”).
- the feedback module 640 adjusts the weights of those factors accordingly.
- the end user who often goes to fast food restaurants, though he does not really like them, the end user might be offered a couple of reasons for a fast food recommendation: “You often go out for fast food” and “You often go here from work”. If the user rejects the former and accepts the latter, indicating to the system that, while this recommendation might be appropriate for this context, it does not reflect a general category preference, the feedback module 640 adjusts the user's recommendation agent correspondingly, and thus, fast food recommendations are less likely to be made outside of the “work” context in future.
- end users can reject recommendations, requesting that the venue or event not be shown again.
- the feedback module 640 uses this information to adjust the weights of the venue, of other venues with similar attributes, and of corresponding personality traits. In this case, the weights are adjusted to reduce the probability of similar recommendations in the future.
- a penalty is also applied against all of the reasons associated with the rejected recommendation, reducing the weights of those routine contexts or other factors. For example, the above mentioned fast-food-eating user could simply reject any fast food recommendation, which would result in a general penalty for that category of venue.
- the feedback module 640 responds to rejection of a recommendation by adding the recommended venue to a blacklist, thereby ensuring the same recommendation is guaranteed to not be made in future.
- the feedback module 640 can create questions that probe user preferences in various ways.
- One example is a “this or that” question, which asks users to choose between two possible venues.
- the venues are chosen as examples of opposing preferences (e.g. obsolete vs. thrifty, solitary vs. social, Chinese vs. Mexican food), and each question answered provides a small piece of evidence regarding the user's preferences.
- Other questions include asking whether the user enjoyed a past experience that has been observed by the system (e.g., “how was your experience at Joe's Bar yesterday?”—this can be treated similarly to receiving explicit feedback in other ways for that venue), asking them to choose between two activities (e.g. dinner and a movie vs. drinks and dancing), and other personality questions as described above.
- Implicit feedback is any information collected about the user's preferences based on actions the user takes for other purposes. In various embodiments, several forms of implicit feedback are used to refine the recommendation agents.
- the feedback module 640 reinforces the attributes of the venue and personality traits used to select the recommendation. Additionally, by following the recommendation, the user has implicitly provided evidence that this particular moment in the user's routine is one when the user is open to suggestions. For example, if the recommendation was made on a Friday evening, the system might make more Friday recommendations in the future.
- the feedback module 640 reinforces the attributes of the venue and personality traits used to select the recommendation, but by a lesser amount than if the user followed the recommendation.
- the feedback module 640 reinforces the attributes of the venue and personality traits used to select the recommendation, but by a lesser amount than if the user followed the recommendation or added the recommendation to the user's plans.
- the feedback module 640 incorporates feedback that indicates a user's preferences or affinity for a particular type of recommendation by adding null-source transition rules to the model or models used by the recommendation agent.
- the feedback module 640 weights updates determined from user feedback relative to updates from observed slices. For example, if the user visits a coffee shop, the “null to coffee shop” rule is updated in the model to make future recommendations of that coffee shop, and of coffee shops in general more likely. If the user then provides explicit positive feedback for that coffee shop, the system may count the feedback as equal to a visit or worth more or less weight than the visit itself.
- explicit feedback is weighted to be equivalent to multiple observations (e.g., 10), because (1) explicit feedback is known to be correct (whereas observations may be wrong); and (2) the fact that the user bothered to provide feedback indicates that the information is important to them.
- FIG. 7 illustrates a method of making a recommendation based on a user's routine model, according to one embodiment.
- the steps of FIG. 7 are illustrated from the perspective of the recommendation agent module 140 performing the method. However, some or all of the steps may be performed by other entities and/or components. In addition, some embodiments may perform the steps in parallel, perform the steps in different orders, or perform different steps.
- the method begins with the recommendation agent module 140 receiving 710 a set of slices describing the user's past contexts, such as those produced by the context refiner module 120 , and stored in contextual history storage 130 .
- the recommendation agent module 140 analyzes 720 the received slices to identify a set of transitions between contexts and uses the set of transitions to build 730 a routine model for the user, as described above with reference to FIG. 6 .
- the recommendation agent module 140 identifies 740 one or more recommendations from the recommendation corpus 660 based on the user's current context and the transition rules in the user's routine model. To do this, the recommendation agent module 140 identifies transition rules in the user's routine model with a source that matches the user's current context. Recall that most real-life situations can be described by multiple contexts at varying levels of specificity; accordingly, the recommendation agent module 140 identifies transition rules that match the user's current neighborhood, current time, current venue, current venue category, and the like, as well as combinations of these contexts.
- the recommendation agent module 140 finds the destinations of these transition rules and instantiates them to identify 740 one or more recommendations, where instantiation involves finding a recommendable item (e.g., a venue, an event, or the like) in the corpus 660 with associated contexts that match the destination contexts of at least one of the transition rules.
- the recommendation agent module 140 assigns each of these recommendations a weight based on the probability of the rule or rules used to generate it. Additionally, the weight may be adjusted based on venue attributes and the user's known preferences.
- the user may currently be at a coffee shop in the Capitol Hill neighborhood, at 5:00 PM.
- Applicable rules say that the user often goes to the University District from Capitol Hill, that he often goes to an ice cream place after getting coffee, that he often goes to the supermarket at around 5:00 PM, and that he often heads home around 6:00 PM.
- the recommendation agent module 140 identifies 740 corresponding recommendations, for example, a park in the University District, an ice cream shop in Capitol Hill, an ice cream shop on the way home, and a supermarket on the way home.
- the recommendation agent module 140 assigns a weight to each recommendation based on the rules that caused them to be identified 740 .
- the weight is determined from both the “coffee then ice cream” rule and the “go home around this time” rule.
- the weights are adjusted based on venue attributes; for example, if the first ice cream shop is highly-rated by other users, the recommendation agent module 140 gives it a boost.
- the recommendation agent module 140 can adjust the weights based on the user's preferences. For example, if the user enjoys going to parks, the park recommendation can be given a boost, even though none of the rules used in generating the recommendations explicitly mention parks.
- the recommendation agent module 140 selects 750 one of the recommendations based on the corresponding weights. In one embodiment, the recommendation agent module 140 selects the recommendation with the highest weight. In another embodiment, the recommendation agent module 140 assigns a probability of selection to each possible recommendation based on the corresponding weight and selects from among them using a random number generator. In further embodiments (not shown), more than one of the possible recommendations is selected. For example, the recommendation agent module 140 may select the five most highly weighted recommendations.
- the recommendation agent module 140 provides 760 the selected recommendation for presentation to the user.
- the recommendation agent 140 runs on the user's mobile device, which then presents the recommendation to the user.
- the recommendation can be presented visually and/or audibly by a dedicated app executing on the user's mobile device.
- the recommendation agent module 140 is implemented at a recommendation service provider's server, which provides 760 the recommendation by sending it to the user's mobile device for presentation.
- the recommendation can be sent to a dedicated app via the Internet, sent via SMS text message, sent via multimedia message, and the like.
- the recommendation agent module 140 includes one or more reasons with the selected recommendation, explaining why the recommendation was made, which is presented in conjunction with the recommendation. For example, in the example of a user at a coffee shop in the Capitol Hill neighborhood used earlier, the first ice cream recommendation could be given the reasons “You often get ice cream after getting coffee” and “This shop is highly rated by reviewers.” The supermarket could be presented with the reasons “You often go to a supermarket at this time” and “It's on your way home.”
- the user's routine model can also be used to generate recommendations for the future.
- the recommendation agent module 140 uses the user's routine model to predict a context that is likely for the user at a given time in the future and identifies 740 recommendations based on that context, rather than the user's current context.
- FIG. 8 illustrates a method of making a recommendation based on a user's personality model, according to one embodiment.
- the steps of FIG. 8 are illustrated from the perspective of the recommendation agent module 140 performing the method. However, some or all of the steps may be performed by other entities and/or components. In addition, some embodiments may perform the steps in parallel, perform the steps in different orders, or perform different steps.
- the method begins with the recommendation agent module 140 receiving 810 a set of slices describing the user's past contexts, such as those produced by the context refiner module 120 , and stored in contextual history storage 130 .
- the recommendation agent module 140 determines 820 a set of metrics (e.g., a position of each of the personality dimensions described above) describing the user's personality and builds 830 a personality model for the user, as described above with reference to FIG. 6 .
- a set of metrics e.g., a position of each of the personality dimensions described above
- the recommendation agent module 140 identifies 840 one or more recommendations from the recommendation corpus 660 for the user based on the user's current context and personality model. In one embodiment, the recommendation agent module 140 identifies 840 a set of possible recommendations from the recommendation corpus 660 that are within a predetermined distance (e.g., 1 mile) of the user's current position. In other embodiments, the possible recommendations are identified 840 in other manners, such as by using the user's routine model, as described above.
- the recommendation agent module 140 compares the personality metrics in the user's personality model with metadata associated with identified recommendations indicating the personality types that are likely to react positively to the corresponding recommendation. The recommendation agent module 140 then assigns each of the possible recommendations with a weight based on how closely the recommendation's personality profile, as indicated by the corresponding metadata, matches that of the user.
- the recommendation agent module 140 selects 850 one of the recommendations based on the corresponding weights. In one embodiment, the recommendation agent module 140 selects the recommendation with the highest weight. In another embodiment, the recommendation agent module 140 assigns a probability of selection to each possible recommendation based on the corresponding weight and selects from among them using a random number generator. In further embodiments (not shown), more than one of the possible recommendations is selected. For example, the recommendation agent module 140 may select the five most highly weighted recommendations.
- the recommendation agent module 140 provides 860 the selected recommendation for presentation to the user.
- the recommendation agent 140 runs on the user's mobile device, which then presents the recommendation to the user.
- the recommendation can be presented visually and/or audibly by a dedicated app executing on the user's mobile device.
- the recommendation agent module 140 is implemented at a recommendation service provider's server, which provides 860 the recommendation by sending it to the user's mobile device for presentation.
- the recommendation can be sent to a dedicated app via the Internet, sent via SMS text message, sent via multimedia message, and the like.
- the recommendation agent module 140 includes reasons with the provided recommendation, explaining why the recommendation was made. For example, if the user has a low novelty score, a recommendation for a new restaurant may include the reason “your friends recommend this place” and/or “this restaurant is owned by the same people as [this other place] you visit often.”
- the user's personality model is updated 870 based on how the user responds to the selected recommendation.
- both implicit and explicit feedback regarding the user's response to delivered recommendations provides additional information about the user's personality and interests. Therefore, this feedback can be used to continuously improve the user's personality model and, consequently, the relevance of the recommendations provided in future.
- customized recommendation agents comprise a set of one or more models for a particular user, and the algorithms for using those models to generate recommendations.
- a shared recommendation agent essentially represents one user (the sender) giving another user (the recipient) permission to receive recommendations based on the sender's own models.
- the sender may not wish to expose the entirety of his own models.
- the recipient may not want to see all of the sender's recommendations or be interested in all of his preferences.
- at least a two step sharing process is implemented. First, the sender creates one or more edited versions of his user models for sharing as an agent. Second, the recipient chooses agents to follow and specifies when the agent's recommendations should be presented. This process is described in greater detail with respect to FIG. 9 .
- FIG. 9 illustrates a method of creating a modified recommendation agent for sharing in accordance with an embodiment.
- the steps are performed in an order other than the order presented in FIG. 9 , and in other implementations, additional or alternative steps may be performed.
- the shared recommendation agent need not be limited to a static model; instead, the sender's evolving tastes may be filtered through the agent, which can produce an evolving experience for the recipient.
- edits to input data for the model are received from the sender.
- the sender can delete aspects of the model that the sender does not want to have used by the shared recommendation agent to generate recommendations.
- the sender can delete or change to default values certain personality characteristics or attributes of the model. If creating a new agent from scratch, the sender can specify a subset of behavior data to feed the new model. In either circumstance, note that only the resulting model is shared, and the user's behavior data can remain private.
- the recommendation agent for the sender is created from the model.
- the creation of the recommendation agent to share with others can be accomplished using any combination of the techniques described above for generating a non-shared recommendation agent from a routine model, a personality model, and/or other stored user preferences.
- behavior filters are established for updates to the model used for the recommendation agent. For example, a user who is interested in both fine dining and gardening may choose to create an agent based only on his restaurant outings and establish a filter that only adds data to the model regarding his new restaurant outings while filtering out unrelated outings. By filtering out other behavior, the shared agent will convey the user's dining preferences without revealing the specifics of his restaurant outings or anything else of his tastes.
- raw behavior data is processed in a series of steps to generate contexts at varying degrees of probability, specificity, and semantic meaning. This means that the user can choose attributes from any of these levels when deciding which behavior to include in the recommendation agent, and which behavior to filter out.
- the set of behavior filters are applied to future data before updating the shared recommendation agent. This allows the shared recommendation agent to continue to evolve and improve while respecting the sender's privacy. Even without a behavior filter, recommendation agents do not expose specific user behavior without permission from the sender, even if the behavior passes the filter.
- step 940 the sender's request to share the recommendation agent with the recipient is received.
- the sender may select specific acquaintances with whom to share the recommendation agent, or the sender may open up the recommendation agent to be shared with all users.
- step 950 the recipient's request to follow the sender's recommendation agent is received.
- the recipient may request to follow several different recommendation agents at the same time associated with the same sender or different senders.
- step 960 prompts for executing the sender's recommendation agent to provide recommendations are defined.
- a recipient has chosen to follow a particular recommendation agent, he can define the set of triggers or prompts for when he wants the recommendation agent to generate a recommendation.
- Example triggers include:
- a recommendation is provided to the recipient based on the sender's shared recommendation agent's model.
- the shared agent is used alongside the other recommendation techniques to produce recommendations for the recipient.
- all of the recommendations include reasons, and for a shared agent the reasons provided with a recommendation from the shared recommendation agent include an indication that the sender would enjoy the recommended item based on inferences from the sender's behavioral models, even if the sender has never experienced the recommended item such as the venue or activity that is the subject of the recommendation (e.g., “your friend would enjoy it”), along with applicable triggers (e.g., “and he is an expert on your current neighborhood”).
- the process of allowing users to share recommendation agents may also be applied to other use cases.
- users may wish to artificially construct models to be shared with others in the form of recommendation agents.
- the user could create an artificial history that reflects the preferences he wishes to convey.
- a well-known celebrity may wish to allow his fans to receive recommendations from his recommendation agent. Rather than build this model over time from real-life experiences, the celebrity could create a list of places he likes (or wishes to endorse, perhaps for contractual reasons), and build a model from that list. He could also explicitly set certain preferences (cities, neighborhoods, price range, and categories of venue).
- a user may wish to artificially construct agents that personify certain goals (e.g., exercise more, eat better, try new activities) or allow others (e.g., a personal trainer) to construct them for him.
- these agents could be constructed by providing examples that typify the agent or by setting some preferences directly.
- a number of these agents of popular types may be part of the recommendation system, allowing users to easily choose agents that personify desired goals.
- agents can be created for specific contexts. For example, an agent that knows all about activities to do with kids in London or an agent that is an expert on New York City would be valuable to many users. These agents could be artificially constructed by an expert on these topics, as with the above descriptions. However, they could also be constructed using data from many users, such as all users living in London who have children, for example.
- a computer is adapted to execute computer program modules for providing the functionality described herein.
- module refers to computer program logic utilized to provide the specified functionality.
- a module can be implemented in hardware, firmware, and/or software.
- program modules are stored on a storage device, loaded into memory, and executed by a processor.
- Embodiments of the physical components described herein can include other and/or different modules than the ones described here.
- the functionality attributed to the modules can be performed by other or different modules in other embodiments.
- this description occasionally omits the term “module” for purposes of clarity and convenience.
- the present invention also relates to an apparatus for performing the operations herein.
- This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored on a computer readable medium that can be accessed by the computer.
- a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of computer-readable storage medium suitable for storing electronic instructions, and each coupled to a computer system bus.
- the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
- any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment.
- the appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
- the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion.
- a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus.
- “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
Abstract
A customized recommendation agent for the user is built using a behavioral model. The customized recommendation agent selects recommendations from a corpus to present to the user, based on the behavioral model and the user's current or predicted future context. The customized recommendation agent can be shared by the user with others, thus allowing others to access recommendations that may appeal to the user, for example, for use in planning joint activities. Because the user's recommendation agent is independent from the user's actual history, preferences can be shared without revealing a user's specific behavior.
Description
- This application claims the benefit of U.S. Provisional Application No. 61/675,733, filed Jul. 25, 2012, entitled “Recommendation Agents Using Routine, Personality, Learning, and Sharing,” and U.S. Provisional Application No. 61/675,732, filed Jul. 25, 2012, entitled “Creating a Storyline from Mobile Device Data,” both of which are incorporated herein by reference in their entirety.
- 1. Technical Field
- The described embodiments pertain to making recommendations to a user based on location data and other data collected from mobile devices.
- 2. Description of Related Art
- A variety of personalized recommendation systems currently exist. These systems typically record user events (such as purchases of particular products) and/or preferences (such as ratings of products and media) to generate a model for the user. This model is then used to recommend “similar” items to the user. However, there are a number of obstacles to building useful applications on top of the kinds of user models currently available.
- First, existing models are not very effective until the system has observed a great deal of user behavior or preferences. Second, the interests and tastes of a typical user are more nuanced than the general genres and/or category preferences that existing models generate. Third, existing models recommend things similar to what the user has seen before, whereas many users are interested in being presented with new options to explore.
- As a result, many recommendation systems are limited in their usefulness to particular scenarios. For example, they may help a pizza fan find more pizza restaurants, a science fiction fan find more science fiction novels, or a lover of romantic comedies starring Jennifer Aniston find more romantic comedies starring Jennifer Aniston. However, they cannot help the pizza fan find a great burger joint, the science fiction fan find her friend's favorite science fiction novel, or the Jennifer Aniston fan find a bar that makes a great Martini.
- Embodiments of the invention include a method, a non-transitory computer readable storage medium and a system for creating a sharable customized recommendation agent that makes recommendations for a user based on a context-based model for the user.
- A context is a (possibly partial) specification of what a user was doing in the dimensions of time, place, and activity. Each of these dimensions may be defined specifically (e.g., location defined by latitude 47.60621, longitude −122.332071) or very generally (e.g., the location “Seattle, Wash.”), or entirely unspecified (e.g., omitted or a default value). They may also be ascribed varying degrees of semantic meaning (e.g., “Seattle” contains more semantic information than “47.60621, −122.332071”). A context can represent a stay in a certain location or travel from one place to another. Contexts may have probabilities associated with them. In some cases, contexts may be inferred from evidence rather than known with certainty. Thus, contexts can vary in their specificity, their semantic content, and their likelihood.
- A customized recommendation agent for the user is built using a behavioral model. The customized recommendation agent selects recommendations from a corpus to present to the user, based on the behavioral model and the user's current or predicted future context. The customized recommendation agent can be shared by the user with others, thus allowing others to access recommendations that may appeal to the user, for example, for use in planning joint activities. Because the user's recommendation agent is independent from the user's actual history, preferences can be shared without revealing a user's specific behavior. Thus, the user's privacy is maintained.
- Embodiments of the computer-readable storage medium store computer-executable instructions for performing the steps described above. Embodiments of the system further comprise a processor for executing such computer-executable instructions.
- The features and advantages described in the specification are not all inclusive and, in particular, many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter.
-
FIG. 1 is a block diagram illustrating the system environment for creating and using sharable recommendation agents in accordance with an embodiment of the invention. -
FIG. 2 is a diagram illustrating the relationship of sensor data, slices, and contexts in accordance with an embodiment of the invention. -
FIG. 3 is a flow chart illustrating a process of creating and updating a user's contextual history in accordance with an embodiment of the invention. -
FIG. 4 is a flow chart illustrating a process of slicing in accordance with an embodiment of the invention. -
FIG. 5 is a flow chart illustrating a process of labeling in accordance with an embodiment of the invention. -
FIG. 6 is a block diagram illustrating one embodiment of the recommendation agent module shown inFIG. 1 . -
FIG. 7 is a flow chart illustrating a method of making a recommendation based on a user's routine in accordance with an embodiment of the invention. -
FIG. 8 is a flow chart illustrating a method of making a recommendation based on personality metrics for a user in accordance with an embodiment of the invention. -
FIG. 9 illustrates a method of creating a modified recommendation agent for sharing in accordance with an embodiment of the invention. - The figures depict embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
- Embodiments of the invention include sharable recommendation agents that make recommendations based on a user's routine and/or metrics describing the user's personality, as determined from context slices generated from observed data. A context is a (possibly partial) specification of what a user was doing in the dimensions of time, place, and activity. Contexts can vary in their specificity, their semantic content, and their likelihood. Raw context data can be collected from a variety of observation sources with various error characteristics. Slicing refines the chaotic collection of contexts produced by data collection into consistent segments, called slices, each with a corresponding set of contexts. Accordingly, the slices and corresponding context data are then available for further processing, such as determining features of the user's routine and/or metrics describing the user's personality.
-
FIG. 1 is a block diagram illustrating thesystem environment 100 for creating, using and sharing recommendation agents, in accordance with an embodiment of the invention. Thesystem environment 100 includes one or moreraw context collectors 110, a context refiner module 120,contextual history storage 130, and arecommendation agent module 140. In one embodiment, the entities of thesystem environment 100 may be contained on a single processing node, such as a user's mobile device, and in another embodiment, the entities of the system environment may be divided between the user's mobile device and a centralized processing node to decrease the processing requirements of the mobile device. An example distributed embodiment is one where theraw context collectors 111 are located on the user's mobile device and data is sent to a central device for context refinement, storage, and agent building. - The
raw context collectors 110 collect raw context data from observation sources, sensors, monitors, third party sources, and the like. A raw context represents a single observation and so is generally very specific, often carries little semantic information on its own, and is of high probability. Naturally, different observation sources may have greater degrees of noise and uncertainty or may inherently include semantic information. In the example illustrated inFIG. 1 , theraw context collectors 110 include alocation module 111, anactivity module 112, and a social module 113, but different and/orother context collectors 110 may be included in other embodiments. For example, in various embodiments, the context collectors include sensors for measuring device orientation (e.g., a compass), magnetic fields, user heart rate, and user stress level, as well as modules for audio and visual sampling of the user's environment. - Examples of
location module 111 include a GPS receiver, and a WiFi receiver that enable thelocation module 111 to determine an absolute or relative location of the user's mobile device, within a margin of error. Examples of theactivity module 112 include, a monitor of key presses that determines when a user is typing or otherwise interacting with the user's mobile device, and an accelerometer that measures the acceleration forces on the mobile device to determine movement and movement patterns of the mobile device. Examples of social module 113 include a FACEBOOK friend graph, PINTEREST pins, FOURSQUARE check ins, and other social media data that identify a user's social acquaintances, activities, and locations. - The context refiner module 120 receives the raw context data from the
raw context collectors 110. The context refiner module 120 groups the context data by combining the observations into slices in order to create a more coherent representation of the user's context during the time range represented by the slice. Each slice includes one or more contexts that apply to the user for the time range corresponding to the slice. The context refiner module 120 may also attach semantic content to a slice or sequence of slices to provide additional contextual information, such as an activity that the slice or slices represent general locations like a city or neighborhood, specific business locations, time of day, or day of week. In some embodiments, the context refiner module 120 includes a plurality of context refiner sub-modules (not shown); one for each type of context data received from theraw context collectors 110. Each context refiner sub-module groups context data by combining the observations from the correspondingraw context collector 110 into slices in order to create a more coherent representation of the user's context indicated by the specific type of context data the sub-module is operating on. In one such embodiment, the context refiner module 120 includes an additional refiner sub-module (not shown) that analyzes the multiple streams of contexts generated by the other context refiner sub-modules to detect overlapping slices and generate combined slices containing context information from the corresponding overlapping slices. - The
contextual history storage 130 receives the slices formed by the context refiner module 120 from a user's raw contextual data and stores them in association with an identifier of the user. Thus, thecontextual history storage 130 contains a collection of slices that collectively describe the user's contextual history. This collection may consist of multiple parallel streams of contextual information as well as a single master stream composing all these contexts together. Therecommendation agent module 140 can then access the stored slices in order to build recommendation agents (and make recommendations) that are customized for the user. The processes of creating slices and building customized recommendation agents will be described in detail in the sections below. -
FIG. 2 is a diagram illustrating the relationship of sensor data, slices, and contexts, in accordance with an embodiment of the invention.FIG. 2 illustrates observations, which are the collections of sensor data from a mobile device. In this example, the observations include Global Positioning System readings, Cellular triangulation signals, and emails sent from the device. The points along the time axis at which these observations are collected are marked. As a result of these observations, the user's time can be divided into a sequence of slices. In this example, each slice has a type and a start and end time. In this example, the type is either “stay” or “travel” and the start and end times establish the limits or boundaries of the slice. For “stay” type slices, the slice also has a centroid location, and for “travel” type slices, the slice also has a speed of the travel. In this example, based on the division of observations into time slices, a variety of metadata representing contexts have been attached to the slices. The metadata may describe the dimensions of time, place, and activity of the user at various levels of generality. For example, the first slice is associated with a place dimension of the context at various levels of generality/specificity: at a city level, a street address level, and a venue level. - Embodiments of the invention divide the process of the creation and updating of a user's contextual history into three phases: data collection, slicing, and labeling. These phases are illustrated in the flow chart of
FIG. 3 , and described in detail in this section. -
Data collection 301 involves accessing the various sources of information and observations of user behavior, optionally transporting their data to servers for analysis and storage (to offload CPU load and reduce battery usage), and translating the data into a collection of raw contexts for additional analysis. These observations may come from a variety of sources, including but not limited to the following: -
- Location technologies (e.g., GPS, cell tower triangulation, Wi-Fi location), typically embedded in mobile devices like smartphones. The location technologies may be included, for example, in the
location module 111. - Activity data such as accelerometer data from mobile devices and device interaction notices (e.g. taps, key presses, power on). The activity data may be collected, for example, by the
activity module 112. - Ambient data from the user's environment (e.g., sound, temperature, or light intensity).
- Biometric data such as the user's skin temperature, galvanic skin response, heat flux, and heart rate. This data may be used to calculate caloric burn, stress level, sleep quality, and other indicators of the user's physical state.
- Social data from any networks or applications the user may use, such as FACEBOOK, TWITTER, FOURSQUARE, FLICKR, or PINTEREST, as well as personal communication applications like email and text messaging. The social data may be collected, for example, by the social module 113. In one embodiment, the social data is made available to the social module 113 through application programming interfaces (APIs).
- Schedule data, such as from the user's calendar application.
- Explicit annotation created by the user to inform the system of a location (e.g., a “check in” at a baseball stadium) or activity (e.g., marking the time boundaries of a jog to track fitness goals).
Data collection 301 may be run as a constant on-going process, with different techniques appropriate to different sources. Alternatively,data collection 301 may be run periodically at an interval appropriate for the application.
- Location technologies (e.g., GPS, cell tower triangulation, Wi-Fi location), typically embedded in mobile devices like smartphones. The location technologies may be included, for example, in the
- One challenge with
data collection 301 is that multiple sources of observation data may result in a collection of contexts that contain conflicting information. For example, an observation from the user's calendar may place him at a meeting downtown, while GPS observations may show him to be at the beach. Resolving these inconsistencies is key to the interpretation of the data. Slicing 302 is the process of refining the chaotic, multi-threaded collection of raw contexts produced by data collection into consistent segments, called slices, each comprising a set of one or more contexts. For example, in the case of location data such as that from GPS sensors, these slices generally represent either a stay at one place or a process of travel from one place to another. In one embodiment, place information may be refined, in that each stay context defines an area that includes most of the individual points observed during that time. Travel contexts will generally have a start and end point, with some definition of the route between them (e.g., waypoints). In another embodiment, no additional semantic meaning or activity information is added during slicing 302. Other types of data can be used to produce other types of slices, such as slices representing a period of consistent activity. For example, an activity like “shopping” may be represented by a longer-duration slice that overlaps with multiple location slices representing stays at different retail businesses as well as travel between those businesses. Conversely, an activity like “sleeping” may span only part of a stay at home. As another example, a biometric slice such as “high caloric burn” may cover part of a visit to the park as well as time at the gym. - Embodiments of the invention divide the process of slicing 302 into three phases: preprocessing 410,
segmentation 420, andreconciliation 430. Each of these phases is described in detail in this section, with reference to the flow chart illustrated inFIG. 4 . The steps ofFIG. 4 are illustrated from the perspective of the context refiner module 120 performing the method. However, some or all of the steps may be performed by other entities and/or components. In addition, some embodiments may perform the steps in parallel, perform the steps in different orders, or perform different steps. -
Preprocessing 410 - Since raw context data input into the slicing 302 process come from a variety of sources with varying degrees of inaccuracy, the raw context data are systematically groomed into a suitable form for later steps to minimize the amount of error in the output. In one embodiment, preprocessing 410 involves a combination of
filtering 412, smoothing 414, andinterpolation 416. - Filtering 412. Filters on raw context data eliminate from consideration raw context data that are deemed more inaccurate than some desirable threshold. The value of the filter threshold can be sensor-specific, due to different sensor error characteristics. For example, a GPS device's data uncertainty is calculated by physical factors related to the timing of signals received from the device's acquired satellites, so it can report a reliable estimate of sensor inaccuracy. In contrast, reported uncertainty is less reliable with location technology based on cell tower or Wi-Fi triangulation, which lack the measurement precision necessary to account for fluctuations in wireless signal strength, therefore the threshold for filtering 412 those contexts may be higher. When using any location technology, the amount of filtering 412 will depend on its expected error characteristics, and the error characteristics are expected to vary between sources of data. Optionally, default threshold values for filters may be set system-wide, set per sensor type, or based on user preferences. In addition to filtering 412 by location technology, physically unlikely readings (e.g., traveling at higher speeds than possible) may also be filtered.
- Smoothing 414. It is also helpful to later slicing phases for context grooming to smooth sequences of contexts from the same sensor when each individual context is noisy. Noise characteristics are hardware dependent, so the smoothing 414 of each sensor should be parameterized to limit the noise expected from that sensor. For example, a certain accelerometer may generate noisy contexts at a high sampling rate, characterized by large magnitude swings in all axes. One way to smooth such data is to compute an average of the magnitude values over a time window and then output the smoothed magnitude values at a less frequent sampling rate. Smoothing 414 is also used when different sensors conflict. For example, if there is minimal change in values across a series of accelerometer readings, it indicates that a device was immobile, which could contradict a series of location readings that would otherwise suggest the device was wandering due to inaccurate location technology. In general, the degree of smoothing 414 will depend on the variability in data noise from each particular location technology.
-
Interpolation 416. Uneven sampling rates can also be due to power conservation, where a device chooses to go into a low-power, low sampling rate state, or is forced to by a governing operating system such as a mobile phone OS. It is common for sensors to be configured to increase sampling when the environment is changing, and to decrease it when the environment (from the sensor's perspective) is static. As slicing 302 occurs over a finite window of time, a decreased sampling rate could lead to relevant context data falling outside the window. Therefore, it is desirable in some cases to interpolate less frequent context data to ensure that the later phases of slicing 302 have sufficient data to analyze.Interpolation 416 generates virtual context data between sensed context data. For example, when there is a gap between two location contexts, a number of interpolated context data points may be generated that correspond to locations between the two endpoints.Interpolation 416 runs into the risk of adding contexts that should not exist. For example, if a sensor is not functional and therefore not reporting, a gap in contexts should not be interpolated. To preventinvalid interpolation 416, sensor data payload may include an indication that there has been an interruption in contexts since the last time a sensor generated context. This may be the default behavior whenever a sensor is (re)started for data collection by the controlling data collection process. In addition, if there is an exceptionally long gap between context data from sensors, it may indicate an interruption even if the sensors fail to set the flag and would be treated as such. -
Segmentation 420 -
Segmentation 420 involves determining distinct, contiguous series of slices from the groomed sensor data representing different activities. For example, the simple day of a user who is an office worker could be segmented into a stay slice located in the morning at her domicile, then a commute to work travel slice, a stay slice at an office, then a commute back home travel slice, followed by a stay slice in the evening at her domicile. - There are a variety of algorithms to segment the input raw context data into stays, travels, and gaps. For example, k-means clustering can be applied to find clusters of contexts (by location, or a distance function combining location and time). Stay slices can be distinguished from travel slices by the dispersion of location context and/or velocity data. Because k-means has fundamental limitations, other more sophisticated clustering algorithms can be used additionally or alternatively to extract slices.
- Besides clustering,
segmentation 420 can also be performed by applying time-series analysis algorithms, using the variance of a sliding window of input contexts to detect inflection points in the distribution. When the variation across a subsequence of input context data differs from a subsequence before it, the algorithm divides the two subsequences into slices that can then be classified as a stay or travel. For example, a stay is distinguishable from a travel by the low amount of variance in each individual input context in the stay sequence to its centroid, the geographic average location. - Because there are a variety of algorithms that can be applied to
segmentation 420, each with different features and limitations, it is also possible to combine their resulting outputs with a meta-segmenter. This meta-segmenter can pick and choose slices output with the highest associated probability among all constituent segmentation algorithms. -
Segmentation 420 can also be followed by filter and merge steps that smooth the output slices. Filters can remove short slices with more uncertainty associated with the contexts included therein, e.g., those with few actual sensor observations, and merge adjacent segments that are likely to be the same activity. The thresholds on minimum required observation uncertainty or distance from adjacent segments for filtering and merging can be parameterized to control the false positive rate (groups of raw context data that should not have been segmented) compared to the false negative rate (groups of raw context data that should have been segmented but were not). -
Reconciliation 430 - In one embodiment, the final phase of slicing 302 deals with resolving newly generated slices with existing contexts generated from a
previous slicing 302 run. While thisreconciliation 430 is optional—if it were computationally feasible to run slicing 302 on an entire raw context set, the brand new contexts could simply replace the older ones—in somecases reconciliation 430 provides desirable qualities for the purpose of presentation. For example, it is desirable not to change contexts and slices in a user's history that have been previously displayed to the user, unless new data is in significant conflict, because the instability in data shown to the user would appear inconsistent. Instability is even less desirable in cases when the user has performed some operation on a previous context or slice, such as manually labeling or otherwise attaching metadata to it, that thesubsequent slicing 302 run would overwrite. As such, there are rules governing when new slices and contexts can replace preexisting data in a user's history. - One way to limit the scope of changes between new and preexisting slices is to specify a time window within which preexisting data may be changed or replaced. Any data outside the window (i.e., older than a certain age), would be left unchanged in later slicing 302 runs. Contexts from newer slices are then integrated into the eligible preexisting slices by comparing type (stay or travel) and time spans. If a new slice is of the same type and begins and ends at approximately the same time as an existing slice, it could retain the same metadata of the existing slice, including any identifier labels (ids) and contexts. When a new slice and old slice overlap in time but conflict in type, the process can prefer the new slice except when there has been manual intervention, for example when a user has already interacted with the existing slice or confirmed it in some way using a user interface. Finally, the last slice is most likely to have changed due to new data, and could have its ending time extended if it aligns with a new slice starting at a time near its own start time, or completely replaced if the type changed (if a previously presumed stay were actually the beginning of a travel slice, for instance).
- Labeling 303 is the process of adding more specific and semantically meaningful data to the slices produced by slicing 302. In one embodiment, some or all of these labels are themselves contexts associated with the slices. In particular, labeling 303 adds geography (such as a slice's city or neighborhood), venue (public places, businesses, or personally significant places like “home”), and activity (such as “working”, “eating”, or “going to see a movie”). Note that the process of
labeling 303 may suggest a revision in slicing 302, such as when thelabeling 303 process determines that a user was eating and then seeing a movie at the theater next door, while the slicing 302 phase represented both activities as a single slice, prompting the single slice to be split into two successive slices, taking place at distinct venues. - A slice can be labeled using identifiers from predefined data sets, such as public venue records, or automatically generated, for example using a reverse geocoding system that converts latitude and longitude coordinates into an approximate street address. The
labeling 303 process uses these data sources to apply probable labels to each slice. Some labels are exclusive while others may coexist alongside one another. Example data sources for thelabeling 303 process include: -
- Public venue database—a set of geographically annotated public venue names, such as businesses, public spaces, or landmarks. The venue data should be able to be queried geographically (e.g., to find likely venues within some specified distance of the slice's observed location observations), therefore it should have a location represented either as a single point (latitude, longitude, altitude) or as a set of points that defines or approximates its shape. The venue may also contain a unique identifier, which is useful, for example, to use to associate the venue with manually entered observations from the user. In addition to location and name, the data entry for the venue may contain other metadata such as address, business hours, categories describing the type of venue, and reviews useful to present back to the user. Because the set of public venues changes over time, this database may be configured to receive updates whenever available.
- User-specified database of places—a set of manually or automatically generated locations considered private to the user, identified by location and optionally by name and other metadata the user chooses to attach. The purpose of this database is to provide labels for slices that cannot be associated with public venues due to gaps in coverage. For example, many homes are not public venues and therefore would not be found in any public venue database, so a user may need to manually label his/her home. Labels such as “home” and “work” can also be automatically inferred.
- A set of additional labels associated with certain venue metadata such as a venue category. These labels could include descriptions of activities commonly applicable to the venue category (e.g., “jogging” at public parks or “dining out” at restaurants). These labels may be either predefined or automatically extracted, e.g., by analyzing the texts of some corpora such as online reviews. As with venue or place, the user can manually apply an activity label to a slice, or the
labeling 303 process can infer it based on a model of likelihood given the input context. - Public and user-specific calendar data—listings of public events and private appointments that can then be applied to matching, consistent slices.
- A database to store user corrections to automatically applied labels that were made by the system in error. This database has multiple uses. First, in the case of
continuous slicing 302 andlabeling 303, the correct label can be used duringreconciliation 430 to prevent incorrect labels from being reapplied. Second, the presence of the correction indicates with high confidence what the correct description for the slice is, and can influence futureautomated labeling 303 decisions for similar slices. The user corrections may be stored, for example, incontextual history storage 130 or similar data store accessible by the context refiner module 120.
- Conceptually, it is possible to view the
labeling 303 process as a collection of subprocesses responsible for outputting one type of label at a time. Labels of different types can then be run simultaneously on slices, or chained when one type of label is triggered by the presence of another (i.e., activities that are category- or venue-specific are only considered when a precedinglabeling 303 subprocess applies a corresponding category or venue label, respectively, to the slice). In general, thelabeling 303 process can be broken into three phases:label candidate search 510, label candidate ranking 520, andlabel application 530, as illustrated inFIG. 5 . -
Label Candidate Search 510 - In the
label candidate search 510 phase, the label sources are first queried to discover possible labels based on the slice's existing contexts. The following provides examples of how various label types can be searched. - Venues and places are found based on the slice's location, which by definition is a consistent estimate of a user's location over a period of time. However, there is a degree of uncertainty when using the associated slice location. Essentially, raw sensors providing locations are imprecise. The
label candidate search 510 phase does not rely on the exact location represented by the slice, but instead expands the search within some radius calculated as an estimate of the uncertainty. For example, if a slice's location was calculated using Wi-Fi triangulation, the triangulation error is often in the tens to low hundreds of meters, so the search process may query for venues and places centered at the slice location within two hundred meters. - Events and appointments can be found based on the slice's location and time boundaries. An event at a venue would be matched against the overlapping time boundaries between the event and the slice. Appointments are also matched against location and time. Because event and appointment time boundaries are imprecise, and slice time boundaries may be imperfect, the slice's time boundaries do not need to exactly match those of an event or appointment. Similarly, the slice location does not need to be an exact match either. The
label candidate search 510 finds possible events and appointments within the likely uncertainty radius of the slice location. - Several methods may also be used to find candidate activities. For example, based on the category and/or venue labels already applied to the slice, the
label candidate search 510 process can bring up associated activity labels. As another example, the slice context can be compared to similar slices in the past if the user had previously labeled activities manually. For example, if a user previously labeled an activity at the same venue or a venue in the same category as the slice that has not yet been labeled with an activity, that activity would be considered as a candidate for labeling the slice. -
Label Candidate Ranking 520 - Once a set of label candidates of a given type are found, the likelihood of each one given the contexts already associated with the slice is evaluated. In one embodiment, the likelihood of each label is computed and the labels are ranked. There may also be a threshold for likelihoods, such that if no label is deemed likely enough, none is applied to the slice at all—this avoids the case of having a label (e.g., an incomplete label) applied inappropriately. In one implementation, slices are constrained to only having one label of some types (e.g., venue labels), and the top-ranked label meeting the minimum likelihood threshold is applied to the slice. For other label types, multiple labels can be valid for a single slice, and all labels meeting the minimum threshold of likeliness are applied.
- Likelihoods are calculated by scoring a candidate label given the contexts already associated with a slice. A model is defined to be an algorithm for computing likelihoods given slice context. Models treat the various aspects of a slice context as features. Some example features include:
-
- Slice location—while the
label candidate search 510 also uses location to discover the set of eligible labels to apply, a ranking model can further determine the likelihood of a label given its distance to the slice location, or relative likelihood between several candidates (e.g., a venue that is significantly farther from the slice location would to considered less likely, but two venues that differ only a small amount in distance from the slice location may be considered equally likely given the location context, all else being equal). - The particular user whose slice is being labeled—since users have individual differences, a model may use specific algorithms tailored to each to achieve the best labeling accuracy. One example of how an individual user could affect label candidate ranking 520 is for the ranking process to use the user's accumulated history of slices and labels, some of which the user may have explicitly confirmed to be accurate. Labels that occurred more often in the user's history may be considered more likely when labeling new contexts.
- The beginning and end stay times—since different labels are more likely to occur at different times (e.g., restaurants at meal times, rock concerts in the evenings), and events, appointments and activities last for different lengths of time (e.g., movies between 1.5-3 hours), the likelihood of a particular label can depend on the corresponding day and time range.
- Slice location—while the
- Besides the context provided by the slice, models can use other sources of information to inform the likelihood estimate. Some example information sources include:
-
- Venue hours of operation—can be used to reduce the likelihood that a venue be applied to a slice when the venue is known to be closed during some significant portion of the slice's time boundaries.
- Venue popularity—e.g., relative popularity over all time compared to other venues, or historic popularity at the time of day, day of week, etc, which can indicate the likelihood that the label is applicable given the slice's time boundaries. If the duration of the slice is known, it can also be compared to the distribution of stay durations at the venue to determine whether the length of time spent in one place is consistent with other visits to the candidate venue.
- Category popularity—can be used when data is scarce about specific venues in the candidate list. This can also be relative to time of day, day of week, etc., and can also include typical stay durations so that the slice's time boundaries factor into the likelihood calculation.
- Routine—considering how often in the past the user has similar slices with the candidate label, can determine whether a certain label is more likely (if there are many such instances) or less likely (if there are few or no instances). Routine is not limited to only considering a specific user's historical patterns. Users can be clustered into cohort groups, or even aggregated into a global routine model, depending on data scarcity due to limited interactions with the system or the area where the slice occurs. Methods for determining a user's routine are discussed in greater detail below, with reference to
FIG. 6 . - Social interest—some users are more likely to visit a venue if their friends recommended it, if they have been there before, or were labeled as being there during an overlapping time period by the
labeling 303 process. Some of this information is available through existing social network APIs, for example recommendations may be based off of a friend “liking” the venue on FACEBOOK. Information about a user's friends visits to a venue can also come from a friend “checking in” or retrieved from the contextual history storage 130 (in embodiments where the contextual history storage is centralized).
-
Label Application 530 - One or more models can be run to process a slice's context(s) into labels, which are applied in
label application 530. Conceptually, multiple models can be represented by a single meta-model that runs the appropriate features through its composing models. Once the meta-model outputs probabilities, labels deemed sufficiently likely are applied to the slice. In one embodiment, labels that are not deemed to be sufficiently likely can still be surfaced as options to the user should he/she wish to alter the label set by adding new labels, with the label candidate ranking 520 intact. In such cases, it is not necessary for the same meta-model to produce the label candidate ranking 520—different meta-models can rank labels differently to produce whatever is specified by the system design of a particular embodiment. - In one embodiment,
automatic label application 530 does not require that every label is ranked solely by likelihood. For example, when users interact with the label candidates (e.g., to manually apply labels), it can be desirable to present candidate labels in different orders to make finding desired labels easier. For example, an alphabetical order or a hybrid order that incorporates both likelihoods and lexicographical positions can be used. Once labels are applied to slices, the additional contextual data is presentable to the user and available for further processing in a variety of forms. - A user's history can be used to build a recommendation agent that is customized for the user and able to be shared with others. Additional data about the user and/or the items that are considered for recommendation can also be used in building the sharable recommendation agent. In various embodiments, the
recommendation agent module 140 models the user's routine and/or personality in order to build a customized recommendation agent. In some embodiments, therecommendation agent module 140 also updates the customized recommendation agent based on feedback provided by the user after the agent has begun to be used. -
FIG. 6 is a block diagram illustrating one embodiment of arecommendation agent module 140. The illustratedrecommendation agent module 140 includes aroutine module 610, apersonality module 620, anagent compiler module 630, afeedback module 640,recommendation agent storage 650, and a recommendation corpus 660. In other embodiments, therecommendation agent module 140 contains different and/or additional elements. In addition, the functions may be distributed among the elements in a different manner than described herein. - The
routine module 610 andpersonality module 620 generate models of a user's routine and personality respectively, based on the corresponding user history stored incontextual history storage 130. Alternatively, any other type of user behavioral model is derived from observed behavior of the user. Theagent compiler module 630 builds a customized recommendation agent for the user based on the routine model, the personality model, and/or additional information about the user (e.g., another type of behavioral model) that is available to therecommendation agent module 140. The customized recommendation agent is stored in therecommendation agent storage 650 and may be shared with others. Thefeedback module 640 gathers feedback during use of the customized recommendation agent and updates the agent based on the gathered feedback. The recommendation corpus 660 comprises a plurality of possible recommendations and corresponding metadata (e.g., a type of recommendation, times when the recommendation is appropriate, types of personality that are likely to respond positively to the recommendation, and the like). - The recommendations in the recommendation corpus 660 can be compiled from various existing sources and/or generated by the
recommendation agent module 140. For example, FOURSQUARE provides a publicly accessible database or venues and events that may be included as part of the recommendation corpus 660. As another example, therecommendation agent module 140 may maintain a list of activities (e.g., going for a walk, eating ice-cream, etc.) and add activities to the list if a user tags a slice with a previously unknown activity. In some embodiments, the same data sources that are used for labeling (as described above with reference toFIG. 3 ) are used to populate the recommendation corpus 660. In one embodiment, recommendations are compiled in an ongoing way as new recommendations become available (e.g., new restaurants open, events are scheduled, books are published, etc.) and added to the recommendation corpus 660 for later delivery to the user or group of similar users. In another embodiment, just-in-time recommendations are generated in real-time for a user based on the user's current context. For instance, when the user is in a new area of the city, therecommendation agent module 140 searches existing databases for possible recommendations in the area and the user's personality and routine data are used to determine appropriate recommendations (e.g., a nearby and highly rated restaurant for dinner). - The
routine module 610 takes a user's history comprising slices as input and generates a model describing the user's routine. The routine model describes correlations between contexts for the user that can be used to generate recommendations based on the user's current contexts. For example, if a user regularly leaves work to purchase lunch at midday, the routine model could indicate a correlation between the contexts “midday” and “eating.” Thus, a recommendation system using the routine model might recommend restaurants in the user's vicinity at around midday, even if the user is not at work that day. - The
routine module 610 processes the slices in the user's history to create a collection of transitions. A transition is defined as a change from one context to another. A transition has a source (the starting context) and a destination (the following context). Like contexts, transitions can have varying degrees of specificity, semantic content, and likelihood. For example, a user's night out could be described by any (or all) of the following transitions: dinner followed by a movie, Joe's Pizza followed by Regal Theaters, the Capitol Hill neighborhood followed by the University neighborhood. Theroutine module 610 can therefore record many possible transitions (with associated probabilities) to account for a segment of observed behavior. Thus, the series of contexts included in the slices of a user's history also define a collection of transitions. - Embodiments of the invention use the following process to build a routine model for a user based on that user's sequence of historical slices.
-
- Split the slice sequence into subsequences whenever adjacent slices are too far apart in time (e.g., greater than three hours).
- Filter out any slice not meeting certain quality criteria. For example, by filtering out stays of duration less than five minutes, stays supported by too few observations, and/or stays with low probability.
- Iterate through the slices. Create transition pairs between contexts for the current slice and contexts from a previous slice within some history window (a larger window allows a wider range of data, but can be much more expensive to compute as many more transition pairs become possible). The context from the previous slice is the source of the transition, and the context from the current slice is the destination.
- Keep count of how often each context and each transition pair occurs over time. Using these counts, compute the probability of each destination given each source, i.e., the probability of various transitions.
- Create and store transition rules for the user, each transition rule comprising a source context, a destination context, and a corresponding probability that the user will make a transition from the source to the destination.
- The result of this process is an incrementally-updated routine model for the user consisting of a collection of transition rules, each with a source context, a destination context, and a probability. For example, imagine a segment of a user's history that involves three slices: a stay at a coffee shop in Bellevue, travel from Bellevue to Seattle, and a stay at the user's workplace in Seattle. The first slice might include contexts like “location=Bellevue”, “venue=Joe's Café”, “type=coffee shop”, and “time=morning”. The second might include “location=Bellevue to Seattle” and “activity=driving”. The third might include “activity=working”, “location=Seattle”, and “location=456 Spring St.” The
routine module 610 can generate a number of transitions from this data and add them to the user's routine model. Examples include a transition from “time=morning” to “activity=working”, a transition from “type=coffee shop” to “activity=driving”, a transition from “location=Bellevue” to “location=Seattle”, and a transition from “location=Bellevue” to “location=456 Spring St.” Note that, because the system is less certain that the third slice was at 456 Spring St. than that it was in Seattle (because Seattle is larger and easier to identify than a specific address), the “456 Spring St.” transition would have lower probability than the “Seattle” one. - Furthermore, the
location module 111 might have been uncertain whether the user was at Joe's Café or Barbara's Bagels next door (e.g., due to the noise in position data), assigning a higher probability to Joe's. In one embodiment, transitions for both Joe's and Barbara's are generated and added to the routine model, with the corresponding probability for Joe's being higher than that for Barbara's. In other embodiments, theroutine module 410 considers only the most likely interpretation of the data, only transitions that exceed a threshold probability. In further embodiments, contexts are filtered according to combinations of these approaches. - For simplicity, the source of a transition rule has been described above as a single context. However, transitions rules can have sets of contexts as sources, allowing non-Markovian transition rules. For example, a rule could encode that when a user goes to the Capitol Hill neighborhood followed by the University District neighborhood, the user then has a high probability of visiting the Fremont neighborhood. The source in this example consists of a sequence of two contexts, for the two neighborhoods.
- In one embodiment, the
recommendation agent module 140 represents users' general preferences using transition rules. For example, a general love of antique shops is represented by a transition rule where the source is the null context (i.e., anywhere, anytime) and the destination is the antique shop category. Thus, therecommendation agent module 140 can manage a user's general preferences by including such transition rules in the user's routine model, and these preferences will both generate recommendations (just as for other rules) and modify the weights assigned to generated recommendations. - In one embodiment, the
routine module 610 stores the routine model inrecommendation agent storage 650 for future further processing. In another embodiment, the routine model is passed to theagent compiler module 630 and used to complete the building of a sharable recommendation agent in combination with additional factors (e.g., a personality model, as described below). In this case, the routine model may not be independently saved to any form of long term storage at all. - The
personality module 620 takes a user history comprising slices as input and generates a model describing the user's personality. The goal of the user personality model is to provide a better understanding of the user in general terms (rather than tracking specific preferences) and use that to guide the recommendation process. Much research has been done on the problem of categorizing, detecting, and understanding personality types. Examples include Jung's “Psychological Types”, the Myers-Briggs Type Indicator derived from it, Enneagrams, and others. The aim of these approaches is to provide a system for exhaustively describing personality types along with a method to determine a person's type, typically based on an interview or survey. Similarly, embodiments of thepersonality module 620 use plurality of personality traits (dimensions) and determine an estimate for the user's affinity with that trait. In one such embodiment, this process is automated (requiring no human interpretation), and nonintrusive (e.g., avoiding explicit survey questions). - A specific representation of user personality and method of characterization that is well-suited to use by the
personality module 620 is described below. However, the techniques described below are equally applicable to other personality representations, such as those mentioned above or others that may be devised. - The context refiner module 120 outputs slices indicating historical contexts associated with a user. The
personality module 620 processes the slices and recommends other places, businesses, or events to the user based on the user's historical contexts. In one example, thepersonality module 620 builds a personality model for the user that indicates the user's affinity with various personality traits, and the system makes recommendations based on the user's personality traits indicating high likelihood of interest in the recommended item. For example, if the user's personality model indicates an affinity for outdoor activities, the model built by thepersonality module 620 may cause the system to recommend a nearby park, even if the user has not previously been observed visiting parks. - The
personality module 620 represents each personality trait as a position of a personality dimension, ranging from not exhibiting the trait in question at all, to completely exhibiting the trait at all times, with most people falling somewhere in the middle. Thus, a given user will be evaluated as having a score (e.g., from 0% to 100%) for each dimension. In one embodiment, the following dimensions are used: -
- Desire for novelty: how often the user chooses to try new, unfamiliar experiences as opposed to sticking with the tried and true. For example, a person with a high novelty preference will often try new restaurants in an area, even if they might not be as good as a nearby familiar favorite.
- Extravagance: how often the person is willing to indulge in expensive products or experiences.
- Preference for proximity: to what extent the person prefers spending time near to home or other frequently-visited places like his workplace, rather than traveling long distances. Proximity can alternatively be stated as its inverse, willingness to travel.
- Love of the outdoors: how often the person prefers outdoor activities when available.
- Preference for physical activity: how much the user prefers physically active as opposed to sedentary activities.
- Desire for solitude: how often the person prefers solitary activities as opposed to social ones.
- In other embodiments, the
personality module 620 uses different and/or additional personality dimensions. Any aspect of personality can be used in the personality model, as long as (1) it is known how to test for that trait in people (e.g. using survey questions); and (2) it is known how to map the trait to useful features in an application of the system. The exemplary embodiment described uses only personality traits closely related to the task of recommending places to go, but other types of traits can be used. For example, in one embodiment, Myers-Briggs traits are used to learn where users stand on dimensions including extraversion/introversion and thinking/feeling. Another embodiment learns personality traits including tastes in books, movies, and other entertainment and thus is able to determine correlations between activities that are not obviously linked. For example, one such personality model can predict whether a person who likes a certain type of movie will enjoy going to a certain restaurant. - As with other personality approaches (e.g., Myers-Briggs), the example personality dimensions described above can be determined for a person by asking them to answer a questionnaire. Such questionnaires typically pose binary choices such as “would you rather visit a library or a bar?” By asking many of these questions, general tendencies can be determined such as ‘desire for solitude’ or ‘love of the outdoors.’ However, in order to determine users' personality traits without having to administer an intrusive and tedious questionnaire, embodiments analyze the behavior data collected by the system to automatically determine the personality traits.
- In one embodiment, the
personality module 620 is initialized using a baseline user group. Thus, when the system is used by an end user, it has already been trained and can immediately provide meaningful recommendations. In one embodiment, the following general algorithm is used to initialize the personality module 620: -
- Recruit a baseline user group.
- Administer a personality questionnaire to each member of the baseline user group, thus determining their personality dimensions.
- Record behavior data for the baseline user group as they go about their everyday lives (e.g., using the system described herein) and encode the collected behavior data as a set of features.
- Encode the collected data as a series of classification problems, where each member of the baseline group is a data point, the corresponding behavior data are the features, and each member's place on a personality dimension is the classification to be learned.
- Use machine learning algorithms to develop a model that can predict the position in each personality dimension of any given user based on the behavior data of that user.
- The above generalized algorithm can be realized in a number of ways. One embodiment is described herein as an illustration. AMAZON's “Mechanical Turk” product is a way to recruit and pay users. A task is created in Mechanical Turk that asks users for (1) authorization to their FOURSQUARE data; and (2) answers to a number of binary-choice personality questions.
- FOURSQUARE is a service that encourages users to “check in” to places they visit. Users can see other users' tips about those places, receive special deals from businesses they check in to, and earn “badges” for checking into various kinds of places. FOURSQUARE provides an approximation of the user's behavior. Thus, FOURSQUARE provides a good source of data to use as some or all of the baseline group behavior data. While such behavioral data is not as complete as information collected by the system described herein, since users do not check in everywhere they go and do not indicate how long they stayed, it allows the collection of behavior data from many existing users without having to recruit people to use a new application for days or weeks.
- The personality questionnaire given to the baseline user group comprises binary-choice questions, as described above, which pose a number of choices intended to elicit information about the user's preferences. By asking enough questions (e.g., 20 questions, but more or fewer may be asked), it can be determined where the user stands on the personality dimensions to be used. The Foursquare history of each baseline user group member can be used to personalize the questions asked—the corresponding FOURSQUARE histories reveal the city each member lives in, the neighborhoods they spend time in, and specific places they have been. Thus, the questions posed to each member can relate to real places around the member, and knowing and be tailored to test traits such as novelty and proximity that are dependent on the member's behavior over a period of time. For example, determining a member's affinity for novelty requires not just knowledge that the member has visited a particular restaurant, but also whether the user has previously visited that restaurant. Other traits can determined based on general data about places visited by the member. For example, the member's affinity for outdoor activities can be influenced by identifying a visit to a park, regardless of past behavior.
- Once behavior data and personality data from the baseline user group has been collected, it is encoded to be fed to a learning algorithm. Each member's behavior is represented as a series of visits, each identifying features of the visit that are relevant to the personality traits that the system is attempting to learn. For example, in the embodiment currently being described, each visit to a place is encoded by the following features:
-
- Category. E.g., restaurant, Chinese restaurant, park, office, and the like. Note that places may have multiple classifications, and that the categories are hierarchical—multiple categories are encoded, and include the “ancestor” categories as well (e.g. “restaurant” is an ancestor of “Chinese restaurant”).
- Distance. Based on the member's history, one or more “home areas” are identified where the member spends a great deal of time. Typically, these would represent home and work neighborhoods. For each place, the distance to the nearest home area is computed. Also, the distance from the previous place in the history is recorded, if they are close enough in time (to track how far the member is willing to travel from place to place).
- Familiarity. How often the member has been there before.
- Price range. Many local data sites (such as YELP, or CITYSEARCH) already encode this data, for example on a scale from 1 to 4.
- Once the visits are encoded, summary statistics about the corresponding features can be computed for each member of the baseline group. Most members' data will be dominated by the time they spend at home and work, so counting these visits could confuse some personality traits. For example, if one counts home and work, most people will probably be seen to visit familiar locations most of the time. Thus, by identifying these special places and excluding them from certain statistics (or giving them reduced weighting), visits to such places are prevented from dominating the analysis. In one embodiment, the computed statistics include:
-
- Category frequency. For each category, how often the member goes there. Home is excluded.
- Distance. Median, mode, mean, and standard deviation of distance from visited places to the nearest home area are included as well as distance to the previous place, if applicable. Home and work are excluded.
- Familiarity. Median, mode, mean, and standard deviation of the number of previous visits are computed. Home and work are excluded.
- Price. Median, mode, mean, and standard deviation of price for places that have price information are computed, excluding home and work.
- Home. The proportion of home visits to total visits, and average number of home visits per day are computed.
- Work. As with home, proportion of work visits and average work visits per day are computed.
- Note that in this embodiment, no explicit features pertain to outdoors, solitude, or activity; these features are inferred from the place categories. Rather than trying to hand-code a mapping from categories to these traits, the learning algorithm discovers them.
- Once each member is encoded as a set of features and a set of personality classifications has been determined, standard machine learning algorithms can be applied to learn a model that predicts the latter from the former. Each personality dimension is treated as an independent class to be learned. The result of this process is a predictive model for each personality dimension; the models take the above computed statistics as input and output estimates of a user's affinity with each personality trait. Thus, the
personality module 620 has been initialized using the baseline user group. Once thepersonality module 620 has been initialized, an end user's history can be used to predict the user's personality, without the need for the end user to explicitly provide data. For example, by feeding the history of the end user into thepersonality module 620, the above statistics can be computed and the predictive model used to generate a personality model for the end user, without requiring the end user to complete a survey, or actively provide personality data in any other manner. - In one embodiment, the
personality module 620 stores the personality model inrecommendation agent storage 650 for future further processing. In another embodiment, the personality model is passed to theagent compiler module 630 and used to complete the building of a sharable recommendation agent in combination with additional factors (e.g., a routine model, as described above). In this case, the personality model may not be independently saved to any form of long term storage at all. - The
recommendation agent module 140 can use the user's personality model to improve recommendations in many ways, including, but not limited to: -
- Suggesting social events and venues to people with a low “solitude” score.
- Recommending familiar places to people with a low “novelty” score when they have not been to the place in a while or when the place is having some kind of special event or offer.
- Make more recommendations (and present them more aggressively) to people with a higher “novelty” score.
- Make a whole sequence of related recommendations (e.g., dinner, a walk, and a movie) in an interesting neighborhood to people with a low “proximity” score.
- Give social rationales (e.g., “your friends like it”) more weight when making recommendations to people with a low “solitude” score.
- Balance social events with solitary recommendations (e.g., “why not take a walk in the park after this party?”) for people with a high “solitude” score.
- When recommending a new place to people with a low “novelty” score, provide rationales that refer to familiar experiences (e.g., “this restaurant is owned by the same people as [this other place] you visit often”).
- For people with a low “extravagance” score, balance extravagant recommendations with ways to save money (e.g., “this expensive restaurant is offering a Tuesday dinner special”).
- As described previously, general preferences can be incorporated into the user's routine model by creating transition rules with the null source. Similarly, personality traits can be represented by a transition rule with a null source. For example, a preference for solitary activities can be represented by a transition from the null source to a “solitary” context. Venues and events can be associated with particular personality traits (e.g., an expensive downtown restaurant can be tagged as extravagant), and these associations with traits become additional venue attributes that can be used when generating and weighting recommendations for a user. In one embodiment, some traits, such as extravagance and outdoors are computed from available venue metadata, and are thus the same for all users. Other traits, like novelty and proximity are determined from information about the user's history and location (e.g., a venue is considered novel if the user's history does not include a previous visit to the venue) and can thus differ from user to user. In other embodiments, these attributes are determined for venues and events in various other and/or additional ways.
- The
agent compiler module 630 builds a sharable customized recommendation agent for an end user that takes the end user's current context(s) as input and outputs customized recommendations. In various embodiments, the recommendation agent is based on the end user's routine model, personality model, and/or additional data describing the end user and his/her interests. - At a high level, an agent is simply a system capable of adapting itself to a particular user's preferences and needs. This definition refers to how the system is presented to the user and is not intended to imply how the agent is implemented. For example, a monolithic system may compute recommendations for all users simultaneously, while the visible user interface presents those recommendations as coming from the user's agent. In one embodiment, a customized recommendation agent is a file that is generated by the
agent compiler module 630 at a recommendation service provider server and transferred (e.g., via the internet) to the end user's mobile device, where it is used by a recommendation application to provide customized recommendations. In other embodiments, theagent compiler module 630 executes on the end user's mobile device using data from local storage and/or accessed remotely via a network. For sharable recommendation agents, responsive to the sender's request the customized recommendation agent file for the sender can be transferred to the recipient's mobile device, where it is used by the recipient's recommendation application to provide customized recommendations. Alternatively, the recipient's recommendation application may access the sender's customized recommendation agent file from a recommendation service provider server. - One limitation of many recommendation systems is that they have trouble determining when a particular observation should or should not influence the general model of a user's preferences. For example, a user may be observed to visit a fast food restaurant every day for lunch. However, in general, he dislikes fast food and only goes there for lunch because it is fast and cheap. For a recommendation system with no concept of context or routine, these visits will lead to the system recommending fast food at other times, when they would be undesirable. The system described herein addresses this issue by learning that fast food visits happen only in a certain context: when the user is at work, and when the user takes a short lunch. Thus, the system is far less likely to recommend fast food at other times. Note, however, that it is too simple to say the user “does not like fast food”; in fact, the user is willing to eat fast food in certain circumstances, and the system has learned this. There may be some situation in the future in which the user needs a quick, cheap meal, and the system will be able to suggest a fast food restaurant.
- In order to address this, the
feedback module 640 collects feedback regarding recommendations from the end user and uses that feedback to update the end user's recommendation agent. A variety of feedback can be collected from end users in order to improve the models used by the recommendation agent and/or directly improve the recommendation agent itself. At a high level, feedback can be categorized as either explicit or implicit. - Explicit feedback is any information deliberately provided by the end users about their preferences or the quality of a recommendation. In various embodiments, several forms of explicit feedback are collected and used to improve the recommendation agents.
- First, end users can explicitly express a preference in favor of venues and events anywhere they see them in the recommendation system's user interface (UI), for example by selecting a button associated with the venue or event in the UI. This includes at the time the recommendation is initially offered. Naturally, the
feedback module 640 can use this information directly, for example by favoring recommendation of a previously liked venue in an appropriate context. Alternatively or additionally, thefeedback module 640 can extract attributes of the venue (such as category of business, neighborhood, price range, and other features) and use them to increase the likelihood that the recommendation agent of the end user will recommend items with such attributes in future. Furthermore, thefeedback module 640 can determine how the venue aligns with the end user's personality traits (for example, whether it is social, extravagant, and so on) and adjust the weights of those traits in the end user's personality model accordingly. - Second, end users can explicitly accept or reject the reasons associated with recommendations. Reasons describe the system's justifications for recommending something, and can be determined by venue attributes (e.g., it's popular or highly rated, it's from a category you've enjoyed in the past, etc.), by context (e.g., it's nearby), or by personality traits (e.g., it's social). Reasons also reflect the routine contexts used to generate the recommendation. For example, if a recommendation was generated because of past behavior in the same neighborhood, at the same time of day, or following the same type of venue, these would all appear as reasons (“you usually go out for coffee when you're in this neighborhood”). By liking or rejecting these reasons for a recommendation, end users tell the system to give more or less weight to similar future recommendations or to those routine contexts. Thus, the
feedback module 640 adjusts the weights of those factors accordingly. In the above example of the end user who often goes to fast food restaurants, though he does not really like them, the end user might be offered a couple of reasons for a fast food recommendation: “You often go out for fast food” and “You often go here from work”. If the user rejects the former and accepts the latter, indicating to the system that, while this recommendation might be appropriate for this context, it does not reflect a general category preference, thefeedback module 640 adjusts the user's recommendation agent correspondingly, and thus, fast food recommendations are less likely to be made outside of the “work” context in future. - Third, end users can reject recommendations, requesting that the venue or event not be shown again. In some embodiments, the
feedback module 640 uses this information to adjust the weights of the venue, of other venues with similar attributes, and of corresponding personality traits. In this case, the weights are adjusted to reduce the probability of similar recommendations in the future. In one such embodiment, a penalty is also applied against all of the reasons associated with the rejected recommendation, reducing the weights of those routine contexts or other factors. For example, the above mentioned fast-food-eating user could simply reject any fast food recommendation, which would result in a general penalty for that category of venue. In other embodiments, thefeedback module 640 responds to rejection of a recommendation by adding the recommended venue to a blacklist, thereby ensuring the same recommendation is guaranteed to not be made in future. - Fourth, users can answer questions about their preferences and experiences. The
feedback module 640 can create questions that probe user preferences in various ways. One example is a “this or that” question, which asks users to choose between two possible venues. The venues are chosen as examples of opposing preferences (e.g. extravagant vs. thrifty, solitary vs. social, Chinese vs. Mexican food), and each question answered provides a small piece of evidence regarding the user's preferences. Other questions include asking whether the user enjoyed a past experience that has been observed by the system (e.g., “how was your experience at Joe's Bar yesterday?”—this can be treated similarly to receiving explicit feedback in other ways for that venue), asking them to choose between two activities (e.g. dinner and a movie vs. drinks and dancing), and other personality questions as described above. - Implicit feedback is any information collected about the user's preferences based on actions the user takes for other purposes. In various embodiments, several forms of implicit feedback are used to refine the recommendation agents.
- First, if the user follows a recommendation when it is made, this can be interpreted as a very strong endorsement of the recommendation's suitability for the user in the user's current context. Correspondingly, in one embodiment, the
feedback module 640 reinforces the attributes of the venue and personality traits used to select the recommendation. Additionally, by following the recommendation, the user has implicitly provided evidence that this particular moment in the user's routine is one when the user is open to suggestions. For example, if the recommendation was made on a Friday evening, the system might make more Friday recommendations in the future. - Second, when users receive recommendations, they can add the venue or event to their “plans”, a collection of places they intend to go to in the future. While not as strong as actually following the recommendation, this is a strong signal that the recommendation was a good one and that the user found value in receiving it, though it may not be appropriate for that particular moment (and the corresponding contexts). Correspondingly, in one embodiment, the
feedback module 640 reinforces the attributes of the venue and personality traits used to select the recommendation, but by a lesser amount than if the user followed the recommendation. - Third, whether or not users add recommendations to their plans, they may eventually go to that venue or event. Again, this provides evidence that the recommendation was a good one for that user, though the user may be going to the venue for reasons other than those that led the system to recommend it. Correspondingly, in one embodiment, the
feedback module 640 reinforces the attributes of the venue and personality traits used to select the recommendation, but by a lesser amount than if the user followed the recommendation or added the recommendation to the user's plans. - In some embodiments, the
feedback module 640 incorporates feedback that indicates a user's preferences or affinity for a particular type of recommendation by adding null-source transition rules to the model or models used by the recommendation agent. Thefeedback module 640 weights updates determined from user feedback relative to updates from observed slices. For example, if the user visits a coffee shop, the “null to coffee shop” rule is updated in the model to make future recommendations of that coffee shop, and of coffee shops in general more likely. If the user then provides explicit positive feedback for that coffee shop, the system may count the feedback as equal to a visit or worth more or less weight than the visit itself. In one such embodiment, explicit feedback is weighted to be equivalent to multiple observations (e.g., 10), because (1) explicit feedback is known to be correct (whereas observations may be wrong); and (2) the fact that the user bothered to provide feedback indicates that the information is important to them. -
FIG. 7 illustrates a method of making a recommendation based on a user's routine model, according to one embodiment. The steps ofFIG. 7 are illustrated from the perspective of therecommendation agent module 140 performing the method. However, some or all of the steps may be performed by other entities and/or components. In addition, some embodiments may perform the steps in parallel, perform the steps in different orders, or perform different steps. - In the illustrated embodiment, the method begins with the
recommendation agent module 140 receiving 710 a set of slices describing the user's past contexts, such as those produced by the context refiner module 120, and stored incontextual history storage 130. Therecommendation agent module 140 then analyzes 720 the received slices to identify a set of transitions between contexts and uses the set of transitions to build 730 a routine model for the user, as described above with reference toFIG. 6 . - The
recommendation agent module 140 identifies 740 one or more recommendations from the recommendation corpus 660 based on the user's current context and the transition rules in the user's routine model. To do this, therecommendation agent module 140 identifies transition rules in the user's routine model with a source that matches the user's current context. Recall that most real-life situations can be described by multiple contexts at varying levels of specificity; accordingly, therecommendation agent module 140 identifies transition rules that match the user's current neighborhood, current time, current venue, current venue category, and the like, as well as combinations of these contexts. Therecommendation agent module 140 then finds the destinations of these transition rules and instantiates them to identify 740 one or more recommendations, where instantiation involves finding a recommendable item (e.g., a venue, an event, or the like) in the corpus 660 with associated contexts that match the destination contexts of at least one of the transition rules. Therecommendation agent module 140 assigns each of these recommendations a weight based on the probability of the rule or rules used to generate it. Additionally, the weight may be adjusted based on venue attributes and the user's known preferences. - For example, the user may currently be at a coffee shop in the Capitol Hill neighborhood, at 5:00 PM. Applicable rules say that the user often goes to the University District from Capitol Hill, that he often goes to an ice cream place after getting coffee, that he often goes to the supermarket at around 5:00 PM, and that he often heads home around 6:00 PM. Instantiating these rules, the
recommendation agent module 140 identifies 740 corresponding recommendations, for example, a park in the University District, an ice cream shop in Capitol Hill, an ice cream shop on the way home, and a supermarket on the way home. Therecommendation agent module 140 assigns a weight to each recommendation based on the rules that caused them to be identified 740. For example, in the case of the second ice cream shop, the weight is determined from both the “coffee then ice cream” rule and the “go home around this time” rule. In some embodiments, the weights are adjusted based on venue attributes; for example, if the first ice cream shop is highly-rated by other users, therecommendation agent module 140 gives it a boost. Finally, therecommendation agent module 140 can adjust the weights based on the user's preferences. For example, if the user enjoys going to parks, the park recommendation can be given a boost, even though none of the rules used in generating the recommendations explicitly mention parks. - Once the
recommendation agent module 140 has identified 740 one or more recommendations, the recommendation agent module selects 750 one of the recommendations based on the corresponding weights. In one embodiment, therecommendation agent module 140 selects the recommendation with the highest weight. In another embodiment, therecommendation agent module 140 assigns a probability of selection to each possible recommendation based on the corresponding weight and selects from among them using a random number generator. In further embodiments (not shown), more than one of the possible recommendations is selected. For example, therecommendation agent module 140 may select the five most highly weighted recommendations. - Having selected 750 the recommendation (or recommendations), the
recommendation agent module 140 provides 760 the selected recommendation for presentation to the user. In one embodiment, therecommendation agent 140 runs on the user's mobile device, which then presents the recommendation to the user. For example, the recommendation can be presented visually and/or audibly by a dedicated app executing on the user's mobile device. In another embodiment, therecommendation agent module 140 is implemented at a recommendation service provider's server, which provides 760 the recommendation by sending it to the user's mobile device for presentation. For example, the recommendation can be sent to a dedicated app via the Internet, sent via SMS text message, sent via multimedia message, and the like. - In one embodiment, the
recommendation agent module 140 includes one or more reasons with the selected recommendation, explaining why the recommendation was made, which is presented in conjunction with the recommendation. For example, in the example of a user at a coffee shop in the Capitol Hill neighborhood used earlier, the first ice cream recommendation could be given the reasons “You often get ice cream after getting coffee” and “This shop is highly rated by reviewers.” The supermarket could be presented with the reasons “You often go to a supermarket at this time” and “It's on your way home.” - In one embodiment, the user's routine model can also be used to generate recommendations for the future. In this case, the
recommendation agent module 140 uses the user's routine model to predict a context that is likely for the user at a given time in the future and identifies 740 recommendations based on that context, rather than the user's current context. -
FIG. 8 illustrates a method of making a recommendation based on a user's personality model, according to one embodiment. The steps ofFIG. 8 are illustrated from the perspective of therecommendation agent module 140 performing the method. However, some or all of the steps may be performed by other entities and/or components. In addition, some embodiments may perform the steps in parallel, perform the steps in different orders, or perform different steps. - In the illustrated embodiment, the method begins with the
recommendation agent module 140 receiving 810 a set of slices describing the user's past contexts, such as those produced by the context refiner module 120, and stored incontextual history storage 130. Therecommendation agent module 140 then determines 820 a set of metrics (e.g., a position of each of the personality dimensions described above) describing the user's personality and builds 830 a personality model for the user, as described above with reference toFIG. 6 . - The
recommendation agent module 140 identifies 840 one or more recommendations from the recommendation corpus 660 for the user based on the user's current context and personality model. In one embodiment, therecommendation agent module 140 identifies 840 a set of possible recommendations from the recommendation corpus 660 that are within a predetermined distance (e.g., 1 mile) of the user's current position. In other embodiments, the possible recommendations are identified 840 in other manners, such as by using the user's routine model, as described above. - However the possible recommendations are determined, the
recommendation agent module 140 compares the personality metrics in the user's personality model with metadata associated with identified recommendations indicating the personality types that are likely to react positively to the corresponding recommendation. Therecommendation agent module 140 then assigns each of the possible recommendations with a weight based on how closely the recommendation's personality profile, as indicated by the corresponding metadata, matches that of the user. - Once the
recommendation agent module 140 has identified 840 one or more recommendations, the recommendation agent module selects 850 one of the recommendations based on the corresponding weights. In one embodiment, therecommendation agent module 140 selects the recommendation with the highest weight. In another embodiment, therecommendation agent module 140 assigns a probability of selection to each possible recommendation based on the corresponding weight and selects from among them using a random number generator. In further embodiments (not shown), more than one of the possible recommendations is selected. For example, therecommendation agent module 140 may select the five most highly weighted recommendations. - Having selected 850 the recommendation (or recommendations), the
recommendation agent module 140 provides 860 the selected recommendation for presentation to the user. In one embodiment, therecommendation agent 140 runs on the user's mobile device, which then presents the recommendation to the user. For example, the recommendation can be presented visually and/or audibly by a dedicated app executing on the user's mobile device. In another embodiment, therecommendation agent module 140 is implemented at a recommendation service provider's server, which provides 860 the recommendation by sending it to the user's mobile device for presentation. For example, the recommendation can be sent to a dedicated app via the Internet, sent via SMS text message, sent via multimedia message, and the like. - In one embodiment, the
recommendation agent module 140 includes reasons with the provided recommendation, explaining why the recommendation was made. For example, if the user has a low novelty score, a recommendation for a new restaurant may include the reason “your friends recommend this place” and/or “this restaurant is owned by the same people as [this other place] you visit often.” - In some embodiment, the user's personality model is updated 870 based on how the user responds to the selected recommendation. As described above with reference to the
feedback module 640 ofFIG. 6 , both implicit and explicit feedback regarding the user's response to delivered recommendations provides additional information about the user's personality and interests. Therefore, this feedback can be used to continuously improve the user's personality model and, consequently, the relevance of the recommendations provided in future. - As described above, customized recommendation agents comprise a set of one or more models for a particular user, and the algorithms for using those models to generate recommendations. In one embodiment, a shared recommendation agent essentially represents one user (the sender) giving another user (the recipient) permission to receive recommendations based on the sender's own models. In some cases, the sender may not wish to expose the entirety of his own models. In other cases, the recipient may not want to see all of the sender's recommendations or be interested in all of his preferences. To accommodate these situations, at least a two step sharing process is implemented. First, the sender creates one or more edited versions of his user models for sharing as an agent. Second, the recipient chooses agents to follow and specifies when the agent's recommendations should be presented. This process is described in greater detail with respect to
FIG. 9 . -
FIG. 9 illustrates a method of creating a modified recommendation agent for sharing in accordance with an embodiment. In some implementations, the steps are performed in an order other than the order presented inFIG. 9 , and in other implementations, additional or alternative steps may be performed. In this implementation, the shared recommendation agent need not be limited to a static model; instead, the sender's evolving tastes may be filtered through the agent, which can produce an evolving experience for the recipient. - In
step 910, optionally, edits to input data for the model are received from the sender. For example, the sender can delete aspects of the model that the sender does not want to have used by the shared recommendation agent to generate recommendations. For example, the sender can delete or change to default values certain personality characteristics or attributes of the model. If creating a new agent from scratch, the sender can specify a subset of behavior data to feed the new model. In either circumstance, note that only the resulting model is shared, and the user's behavior data can remain private. - In
step 920, the recommendation agent for the sender is created from the model. The creation of the recommendation agent to share with others can be accomplished using any combination of the techniques described above for generating a non-shared recommendation agent from a routine model, a personality model, and/or other stored user preferences. - In
step 930, optionally, behavior filters are established for updates to the model used for the recommendation agent. For example, a user who is interested in both fine dining and gardening may choose to create an agent based only on his restaurant outings and establish a filter that only adds data to the model regarding his new restaurant outings while filtering out unrelated outings. By filtering out other behavior, the shared agent will convey the user's dining preferences without revealing the specifics of his restaurant outings or anything else of his tastes. As described above, raw behavior data is processed in a series of steps to generate contexts at varying degrees of probability, specificity, and semantic meaning. This means that the user can choose attributes from any of these levels when deciding which behavior to include in the recommendation agent, and which behavior to filter out. For example, he may elect to include only behavior from a particular city, from a particular neighborhood, only visits to a particular category of places, or only behavior from particular times of the day. The set of behavior filters are applied to future data before updating the shared recommendation agent. This allows the shared recommendation agent to continue to evolve and improve while respecting the sender's privacy. Even without a behavior filter, recommendation agents do not expose specific user behavior without permission from the sender, even if the behavior passes the filter. - In
step 940, the sender's request to share the recommendation agent with the recipient is received. For example, the sender may select specific acquaintances with whom to share the recommendation agent, or the sender may open up the recommendation agent to be shared with all users. - In
step 950, the recipient's request to follow the sender's recommendation agent is received. The recipient may request to follow several different recommendation agents at the same time associated with the same sender or different senders. - In
step 960, prompts for executing the sender's recommendation agent to provide recommendations are defined. Once a recipient has chosen to follow a particular recommendation agent, he can define the set of triggers or prompts for when he wants the recommendation agent to generate a recommendation. Example triggers include: -
- All the time
- When I am in a certain neighborhood
- When I am in a neighborhood that the sender knows well (e.g., the sender has a significant amount of observed behavior in the neighborhood)
- From certain categories
- From categories that the sender visits often
- That have high confidence
- When I have no other high-confidence recommendations
- When the sender has applicable expertise to the recipient's current context (including above examples of being in a neighborhood the sender knows well and for categories that the sender visits often)
These various kinds of triggers may be presented or suggested to the user in a simplified interface, or may be automatically determined in some cases (e.g., an agent to be followed for fine dining recommendations may be triggered for the restaurant category, or at mealtimes).
- In
step 970, a recommendation is provided to the recipient based on the sender's shared recommendation agent's model. The shared agent is used alongside the other recommendation techniques to produce recommendations for the recipient. In one embodiment, all of the recommendations include reasons, and for a shared agent the reasons provided with a recommendation from the shared recommendation agent include an indication that the sender would enjoy the recommended item based on inferences from the sender's behavioral models, even if the sender has never experienced the recommended item such as the venue or activity that is the subject of the recommendation (e.g., “your friend would enjoy it”), along with applicable triggers (e.g., “and he is an expert on your current neighborhood”). - The process of allowing users to share recommendation agents may also be applied to other use cases. For example, users may wish to artificially construct models to be shared with others in the form of recommendation agents. Rather than using actual behavior, the user could create an artificial history that reflects the preferences he wishes to convey. For example, a well-known celebrity may wish to allow his fans to receive recommendations from his recommendation agent. Rather than build this model over time from real-life experiences, the celebrity could create a list of places he likes (or wishes to endorse, perhaps for contractual reasons), and build a model from that list. He could also explicitly set certain preferences (cities, neighborhoods, price range, and categories of venue).
- As another example of a use case for sharable recommendation agents, a user may wish to artificially construct agents that personify certain goals (e.g., exercise more, eat better, try new activities) or allow others (e.g., a personal trainer) to construct them for him. As with the celebrity agent example, these agents could be constructed by providing examples that typify the agent or by setting some preferences directly. In one embodiment, a number of these agents of popular types may be part of the recommendation system, allowing users to easily choose agents that personify desired goals.
- As yet another example of a user case for sharable recommendation agents, agents can be created for specific contexts. For example, an agent that knows all about activities to do with kids in London or an agent that is an expert on New York City would be valuable to many users. These agents could be artificially constructed by an expert on these topics, as with the above descriptions. However, they could also be constructed using data from many users, such as all users living in London who have children, for example.
- A computer is adapted to execute computer program modules for providing the functionality described herein. As used herein, the term “module” refers to computer program logic utilized to provide the specified functionality. Thus, a module can be implemented in hardware, firmware, and/or software. In one embodiment, program modules are stored on a storage device, loaded into memory, and executed by a processor.
- Embodiments of the physical components described herein can include other and/or different modules than the ones described here. In addition, the functionality attributed to the modules can be performed by other or different modules in other embodiments. Moreover, this description occasionally omits the term “module” for purposes of clarity and convenience.
- Some portions of the above description describe the embodiments in terms of algorithmic processes or operations. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs comprising instructions for execution by a processor or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of functional operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof.
- The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored on a computer readable medium that can be accessed by the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of computer-readable storage medium suitable for storing electronic instructions, and each coupled to a computer system bus. Furthermore, the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
- As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
- As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
- In addition, use of the “a” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the disclosure. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
- Upon reading this disclosure, those of skill in the art will appreciate still additional alternative structural and functional designs. Thus, while particular embodiments and applications have been illustrated and described, it is to be understood that the present invention is not limited to the precise construction and components disclosed herein and that various modifications, changes and variations which will be apparent to those skilled in the art may be made in the arrangement, operation and details of the method and apparatus disclosed herein without departing from the spirit and scope as defined in the appended claims.
Claims (22)
1. A method of generating a sharable customized recommendation agent for a user, comprising:
creating a recommendation agent for a user from a behavioral model;
receiving a request from the user to share the user's recommendation agent with a recipient;
receiving the recipient's request to follow the user's recommendation agent; and
providing a recommendation to the recipient based on the user's recommendation agent.
2. The method of claim 1 , further comprising receiving edits to input data for the behavioral model from the user in advance of creating the recommendation agent for the user.
3. The method of claim 2 , wherein the edits to input data for the behavioral model comprises deletions of data to preserve the user's privacy.
4. The method of claim 1 , wherein the behavioral model comprises at least one selected from a group consisting of a routine model and a personality model.
5. The method of claim 1 , further comprising establishing behavior filters for updates to the behavioral model from which the recommendation agent for the user is created.
6. The method of claim 5 , wherein the behavior filters comprise at least one selected from a group consisting of behavior from a particular city, behavior from a particular neighborhood, visits to a category of places, and behavior from a particular time of day.
7. The method of claim 1 , further comprising:
defining prompts for executing the user's recommendation agent to provide a recommendation; and
executing the user's recommendation agent when the user has applicable expertise to the recipient's current context.
8. The method of claim 7 , wherein the user has applicable expertise to the recipient's current context when the recipient is in a neighborhood that the user knows well.
9. The method of claim 1 , wherein providing a recommendation to the recipient based on the user's recommendation agent comprises providing an indication that the user would enjoy the recommended item based on inferences from the user's behavioral model.
10. The method of claim 1 , wherein creating a recommendation agent for a user from a behavioral model comprises using a behavioral model artificially constructed to model a certain kind of desired behavior.
11. The method of claim 1 , wherein creating a recommendation agent for a user from a behavioral model comprises using a behavioral model constructed from the models of multiple users that display a certain kind of desired behavior.
12. A non-transitory computer-readable storage medium having computer program instructions embodied therein for generating a sharable customized recommendation agent for a user, the computer program instructions comprising instructions for:
creating a recommendation agent for a user from a behavioral model;
receiving a request from the user to share the user's recommendation agent with a recipient;
receiving the recipient's request to follow the user's recommendation agent; and
providing a recommendation to the recipient based on the user's recommendation agent.
13. The computer-readable storage medium of claim 12 , the instructions further comprising instructions for receiving edits to input data for the behavioral model from the user in advance of creating the recommendation agent for the user.
14. The computer-readable storage medium of claim 13 , wherein the edits to input data for the behavioral model comprises deletions of data to preserve the user's privacy.
15. The computer-readable storage medium of claim 12 , wherein the behavioral model comprises at least one selected from a group consisting of a routine model and a personality model.
16. The computer-readable storage medium of claim 12 , the instructions further comprising instructions for establishing behavior filters for updates to the behavioral model from which the recommendation agent for the user is created.
17. The computer-readable storage medium of claim 16 , wherein the behavior filters comprise at least one selected from a group consisting of behavior from a particular city, behavior from a particular neighborhood, visits to a category of places, and behavior from a particular time of day.
18. The computer-readable storage medium of claim 12 , the instructions further comprising instructions for:
defining prompts for executing the user's recommendation agent to provide a recommendation; and
executing the user's recommendation agent when the user has applicable expertise to the recipient's current context.
19. The computer-readable storage medium of claim 18 , wherein the user has applicable expertise to the recipient's current context when the recipient is in a neighborhood that the user knows well.
20. The computer-readable storage medium of claim 12 , wherein the instructions for providing a recommendation to the recipient based on the user's recommendation agent comprise instructions for providing an indication that the user would enjoy the recommended item based on inferences from the user's behavioral model.
21. The computer-readable storage medium of claim 12 , wherein the instructions for creating a recommendation agent for a user from a behavioral model comprise instructions for using a behavioral model artificially constructed to model a certain kind of desired behavior.
22. The computer-readable storage medium of claim 12 , wherein the instructions for creating a recommendation agent for a user from a behavioral model comprise instructions for using a behavioral model constructed from the models of multiple users that display a certain kind of desired behavior.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/950,177 US20140032358A1 (en) | 2012-07-25 | 2013-07-24 | Sharing Recommendation Agents |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261675732P | 2012-07-25 | 2012-07-25 | |
US201261675733P | 2012-07-25 | 2012-07-25 | |
US13/950,177 US20140032358A1 (en) | 2012-07-25 | 2013-07-24 | Sharing Recommendation Agents |
Publications (1)
Publication Number | Publication Date |
---|---|
US20140032358A1 true US20140032358A1 (en) | 2014-01-30 |
Family
ID=49995366
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/950,177 Abandoned US20140032358A1 (en) | 2012-07-25 | 2013-07-24 | Sharing Recommendation Agents |
US13/950,224 Active US8892480B2 (en) | 2012-07-25 | 2013-07-24 | Contextual information provider |
US13/950,105 Active US9179250B2 (en) | 2012-07-25 | 2013-07-24 | Recommendation agent using a routine model determined from mobile device data |
US13/950,150 Abandoned US20140031060A1 (en) | 2012-07-25 | 2013-07-24 | Creating Context Slices of a Storyline from Mobile Device Data |
US13/950,117 Active US9020864B2 (en) | 2012-07-25 | 2013-07-24 | Recommendation agent using a personality model determined from mobile device data |
US13/950,169 Active US8838436B2 (en) | 2012-07-25 | 2013-07-24 | Labeling context slices to produce a storyline from mobile device data |
US14/629,456 Abandoned US20150170042A1 (en) | 2012-07-25 | 2015-02-23 | Recommendation agent using a personality model determined from mobile device data |
Family Applications After (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/950,224 Active US8892480B2 (en) | 2012-07-25 | 2013-07-24 | Contextual information provider |
US13/950,105 Active US9179250B2 (en) | 2012-07-25 | 2013-07-24 | Recommendation agent using a routine model determined from mobile device data |
US13/950,150 Abandoned US20140031060A1 (en) | 2012-07-25 | 2013-07-24 | Creating Context Slices of a Storyline from Mobile Device Data |
US13/950,117 Active US9020864B2 (en) | 2012-07-25 | 2013-07-24 | Recommendation agent using a personality model determined from mobile device data |
US13/950,169 Active US8838436B2 (en) | 2012-07-25 | 2013-07-24 | Labeling context slices to produce a storyline from mobile device data |
US14/629,456 Abandoned US20150170042A1 (en) | 2012-07-25 | 2015-02-23 | Recommendation agent using a personality model determined from mobile device data |
Country Status (4)
Country | Link |
---|---|
US (7) | US20140032358A1 (en) |
EP (1) | EP2877935A4 (en) |
KR (1) | KR101512278B1 (en) |
WO (1) | WO2014018687A1 (en) |
Cited By (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140032208A1 (en) * | 2012-07-25 | 2014-01-30 | Aro, Inc. | Labeling Context Slices To Produce a Storyline from Mobile Device Data |
US20140307946A1 (en) * | 2013-04-12 | 2014-10-16 | Hitachi High-Technologies Corporation | Observation device and observation method |
US20140337862A1 (en) * | 2012-05-14 | 2014-11-13 | Qualcomm Incorporated | Methods, Devices, and Systems for Communicating Behavioral Analysis Information |
US20150039701A1 (en) * | 2013-07-31 | 2015-02-05 | International Business Machines Corporation | Identifying Content in an Incoming Message on a Social Network |
CN104360875A (en) * | 2014-10-22 | 2015-02-18 | 小米科技有限责任公司 | Private mode starting method and device |
US20150135070A1 (en) * | 2013-11-11 | 2015-05-14 | Samsung Electronics Co., Ltd. | Display apparatus, server apparatus and user interface screen providing method thereof |
US20150278348A1 (en) * | 2014-03-28 | 2015-10-01 | Microsoft Corporation | Explicit signals personalized search |
US9338242B1 (en) | 2013-09-09 | 2016-05-10 | Amazon Technologies, Inc. | Processes for generating content sharing recommendations |
US20160162486A1 (en) * | 2014-12-08 | 2016-06-09 | Iprova SarI | Computer-enabled method of assisting to generate an innovation |
US20160162809A1 (en) * | 2014-11-12 | 2016-06-09 | Homeaway, Inc. | Enhanced searching and selection of rental properties and associated activities based on historic travel-related data |
US9405964B1 (en) * | 2013-09-09 | 2016-08-02 | Amazon Technologies, Inc. | Processes for generating content sharing recommendations based on image content analysis |
US9491187B2 (en) | 2013-02-15 | 2016-11-08 | Qualcomm Incorporated | APIs for obtaining device-specific behavior classifier models from the cloud |
US9495537B2 (en) | 2012-08-15 | 2016-11-15 | Qualcomm Incorporated | Adaptive observation of behavioral features on a mobile device |
US9531823B1 (en) | 2013-09-09 | 2016-12-27 | Amazon Technologies, Inc. | Processes for generating content sharing recommendations based on user feedback data |
US9541652B2 (en) | 2013-12-06 | 2017-01-10 | Aro, Inc. | Accurate mobile context detection at low sensor cost |
US20170161272A1 (en) * | 2015-12-08 | 2017-06-08 | International Business Machines Corporation | Social media search assist |
US9684870B2 (en) | 2013-01-02 | 2017-06-20 | Qualcomm Incorporated | Methods and systems of using boosted decision stumps and joint feature selection and culling algorithms for the efficient classification of mobile device behaviors |
US9686023B2 (en) | 2013-01-02 | 2017-06-20 | Qualcomm Incorporated | Methods and systems of dynamically generating and using device-specific and device-state-specific classifier models for the efficient classification of mobile device behaviors |
US9690635B2 (en) | 2012-05-14 | 2017-06-27 | Qualcomm Incorporated | Communicating behavior information in a mobile computing device |
US20170185917A1 (en) * | 2015-12-29 | 2017-06-29 | Cognitive Scale, Inc. | Method for Monitoring Interactions to Build a Cognitive Profile |
US20170185916A1 (en) * | 2015-12-29 | 2017-06-29 | Cognitive Scale, Inc. | Cognitive Profile Builder |
US9742559B2 (en) | 2013-01-22 | 2017-08-22 | Qualcomm Incorporated | Inter-module authentication for securing application execution integrity within a computing device |
US9747440B2 (en) | 2012-08-15 | 2017-08-29 | Qualcomm Incorporated | On-line behavioral analysis engine in mobile device with multiple analyzer model providers |
US9756066B2 (en) | 2012-08-15 | 2017-09-05 | Qualcomm Incorporated | Secure behavior analysis over trusted execution environment |
US9760756B2 (en) | 2013-12-05 | 2017-09-12 | Aro, Inc. | Venue identification using sensor fingerprints |
US9898602B2 (en) | 2012-05-14 | 2018-02-20 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
US20180075355A1 (en) * | 2016-09-14 | 2018-03-15 | International Business Machines Corporation | Providing recommendations utilizing a user profile |
US10049413B2 (en) | 2013-09-20 | 2018-08-14 | Vulcan Technologies Llc | Automatically creating a hierarchical storyline from mobile device data |
US10089582B2 (en) | 2013-01-02 | 2018-10-02 | Qualcomm Incorporated | Using normalized confidence values for classifying mobile device behaviors |
US10225369B2 (en) | 2016-06-02 | 2019-03-05 | At&T Intellectual Property I, L.P. | Method and apparatus for providing a recommended action for a venue via a network |
US20190108283A1 (en) * | 2017-10-09 | 2019-04-11 | Facebook, Inc. | Automatic Detection of Events on Online Social Networks |
US10298706B2 (en) * | 2017-02-20 | 2019-05-21 | At&T Intellectual Property I, L.P. | Social media and location-based informed entertainment recommendations |
CN111209245A (en) * | 2018-11-21 | 2020-05-29 | 上海寒武纪信息科技有限公司 | Data processing device, method and related product |
US10803391B2 (en) * | 2015-07-29 | 2020-10-13 | Google Llc | Modeling personal entities on a mobile device using embeddings |
US10891142B2 (en) * | 2017-12-21 | 2021-01-12 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method and device for preloading application, storage medium, and terminal device |
US11205103B2 (en) | 2016-12-09 | 2021-12-21 | The Research Foundation for the State University | Semisupervised autoencoder for sentiment analysis |
US20220036215A1 (en) * | 2020-08-03 | 2022-02-03 | Kpn Innovations, Llc. | Method and system for data classification to generate a second alimentary provider |
US20220051355A1 (en) * | 2018-06-20 | 2022-02-17 | Grubhub Holdings Inc. | Personalizing food discovery and search based on inferred taste preference |
US11392992B2 (en) * | 2012-11-30 | 2022-07-19 | Panasonic Intellectual Property Corporation Of America | Information providing method |
US11436657B2 (en) * | 2019-03-01 | 2022-09-06 | Shopify Inc. | Self-healing recommendation engine |
Families Citing this family (211)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677377B2 (en) | 2005-09-08 | 2014-03-18 | Apple Inc. | Method and apparatus for building an intelligent automated assistant |
US9318108B2 (en) | 2010-01-18 | 2016-04-19 | Apple Inc. | Intelligent automated assistant |
US8977255B2 (en) | 2007-04-03 | 2015-03-10 | Apple Inc. | Method and system for operating a multi-function portable electronic device using voice-activation |
US8126881B1 (en) | 2007-12-12 | 2012-02-28 | Vast.com, Inc. | Predictive conversion systems and methods |
US10002189B2 (en) | 2007-12-20 | 2018-06-19 | Apple Inc. | Method and apparatus for searching using an active ontology |
US9330720B2 (en) | 2008-01-03 | 2016-05-03 | Apple Inc. | Methods and apparatus for altering audio output signals |
US20100030549A1 (en) | 2008-07-31 | 2010-02-04 | Lee Michael M | Mobile device having human language translation capability with positional feedback |
US8676904B2 (en) | 2008-10-02 | 2014-03-18 | Apple Inc. | Electronic devices with voice command and contextual data processing capabilities |
US20120311585A1 (en) | 2011-06-03 | 2012-12-06 | Apple Inc. | Organizing task items that represent tasks to perform |
US10276170B2 (en) | 2010-01-18 | 2019-04-30 | Apple Inc. | Intelligent automated assistant |
US8682667B2 (en) | 2010-02-25 | 2014-03-25 | Apple Inc. | User profiling for selecting user specific voice input processing information |
US9262612B2 (en) | 2011-03-21 | 2016-02-16 | Apple Inc. | Device access using voice authentication |
US10057736B2 (en) | 2011-06-03 | 2018-08-21 | Apple Inc. | Active transport based notifications |
JP5562362B2 (en) * | 2012-02-01 | 2014-07-30 | ビッグローブ株式会社 | RECOMMENDED INFORMATION PROVIDING DEVICE, MOBILE TERMINAL, RECOMMENDED INFORMATION PROVIDING METHOD, RECOMMENDED INFORMATION PROVIDING SUPPORT METHOD, AND PROGRAM |
US10134385B2 (en) | 2012-03-02 | 2018-11-20 | Apple Inc. | Systems and methods for name pronunciation |
US10417037B2 (en) | 2012-05-15 | 2019-09-17 | Apple Inc. | Systems and methods for integrating third party services with a digital assistant |
CN103685208B (en) * | 2012-09-25 | 2017-07-14 | 华为技术有限公司 | User data mask method, terminal device and server |
CN103685714B (en) * | 2012-09-26 | 2016-08-03 | 华为技术有限公司 | Terminal daily record generates method and terminal |
US20140108307A1 (en) * | 2012-10-12 | 2014-04-17 | Wipro Limited | Methods and systems for providing personalized and context-aware suggestions |
US20140136186A1 (en) * | 2012-11-15 | 2014-05-15 | Consorzio Nazionale Interuniversitario Per Le Telecomunicazioni | Method and system for generating an alternative audible, visual and/or textual data based upon an original audible, visual and/or textual data |
JP6366606B2 (en) * | 2013-01-03 | 2018-08-01 | シナラ システムズ プライベート リミテッド | Location and time recognition system and method for mobile user context detection |
KR102516577B1 (en) | 2013-02-07 | 2023-04-03 | 애플 인크. | Voice trigger for a digital assistant |
US9465873B1 (en) | 2013-03-07 | 2016-10-11 | Vast.com, Inc. | Systems, methods, and devices for identifying and presenting identifications of significant attributes of unique items |
US10007946B1 (en) | 2013-03-07 | 2018-06-26 | Vast.com, Inc. | Systems, methods, and devices for measuring similarity of and generating recommendations for unique items |
US9104718B1 (en) | 2013-03-07 | 2015-08-11 | Vast.com, Inc. | Systems, methods, and devices for measuring similarity of and generating recommendations for unique items |
US9235804B1 (en) | 2013-03-12 | 2016-01-12 | Google Inc. | System and method for selecting and serving content items based on sensor data from mobile devices |
US9830635B1 (en) | 2013-03-13 | 2017-11-28 | Vast.com, Inc. | Systems, methods, and devices for determining and displaying market relative position of unique items |
US10652394B2 (en) | 2013-03-14 | 2020-05-12 | Apple Inc. | System and method for processing voicemail |
US10748529B1 (en) | 2013-03-15 | 2020-08-18 | Apple Inc. | Voice activated device for use with a voice-based digital assistant |
WO2014197335A1 (en) | 2013-06-08 | 2014-12-11 | Apple Inc. | Interpreting and acting upon commands that involve sharing information with remote devices |
US10176167B2 (en) | 2013-06-09 | 2019-01-08 | Apple Inc. | System and method for inferring user intent from speech inputs |
EP3008641A1 (en) | 2013-06-09 | 2016-04-20 | Apple Inc. | Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant |
US20150142824A1 (en) * | 2013-11-21 | 2015-05-21 | At&T Mobility Ii Llc | Situational Content Based on Context |
US10296160B2 (en) | 2013-12-06 | 2019-05-21 | Apple Inc. | Method for extracting salient dialog usage from live data |
US10127596B1 (en) | 2013-12-10 | 2018-11-13 | Vast.com, Inc. | Systems, methods, and devices for generating recommendations of unique items |
US10078691B2 (en) * | 2013-12-27 | 2018-09-18 | Futurewei Technologies, Inc. | System and method for biometrics-based music recommendation |
US10089310B2 (en) | 2014-01-14 | 2018-10-02 | Microsoft Technology Licensing, Llc | Complementary and shadow calendars |
US9704205B2 (en) | 2014-02-28 | 2017-07-11 | Christine E. Akutagawa | Device for implementing body fluid analysis and social networking event planning |
US11030708B2 (en) | 2014-02-28 | 2021-06-08 | Christine E. Akutagawa | Method of and device for implementing contagious illness analysis and tracking |
US9959508B2 (en) * | 2014-03-20 | 2018-05-01 | CloudMade, Inc. | Systems and methods for providing information for predicting desired information and taking actions related to user needs in a mobile device |
KR102216049B1 (en) * | 2014-04-21 | 2021-02-15 | 삼성전자주식회사 | System and method for semantic labeling |
US11074293B2 (en) | 2014-04-22 | 2021-07-27 | Microsoft Technology Licensing, Llc | Generating probabilistic transition data |
US10110677B2 (en) * | 2014-05-06 | 2018-10-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Context-aware decision making |
US11120408B2 (en) | 2014-05-06 | 2021-09-14 | Microsoft Technology Licensing, Llc | Scheduling conflict notification |
US10170123B2 (en) | 2014-05-30 | 2019-01-01 | Apple Inc. | Intelligent assistant for home automation |
US9430463B2 (en) | 2014-05-30 | 2016-08-30 | Apple Inc. | Exemplar-based natural language processing |
EP3149728B1 (en) | 2014-05-30 | 2019-01-16 | Apple Inc. | Multi-command single utterance input method |
US9715875B2 (en) | 2014-05-30 | 2017-07-25 | Apple Inc. | Reducing the need for manual start/end-pointing and trigger phrases |
US9633004B2 (en) | 2014-05-30 | 2017-04-25 | Apple Inc. | Better resolution when referencing to concepts |
US9779361B2 (en) * | 2014-06-05 | 2017-10-03 | Mitsubishi Electric Research Laboratories, Inc. | Method for learning exemplars for anomaly detection |
US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
US10887376B2 (en) | 2014-08-08 | 2021-01-05 | Samsung Electronics Co., Ltd. | Electronic system with custom notification mechanism and method of operation thereof |
US9818400B2 (en) | 2014-09-11 | 2017-11-14 | Apple Inc. | Method and apparatus for discovering trending terms in speech requests |
US9668121B2 (en) | 2014-09-30 | 2017-05-30 | Apple Inc. | Social reminders |
US10074360B2 (en) | 2014-09-30 | 2018-09-11 | Apple Inc. | Providing an indication of the suitability of speech recognition |
US10127911B2 (en) | 2014-09-30 | 2018-11-13 | Apple Inc. | Speaker identification and unsupervised speaker adaptation techniques |
DE112015004626T5 (en) * | 2014-10-08 | 2017-06-22 | Analog Devices, Inc. | Configurable preprocessing array |
US10192583B2 (en) | 2014-10-10 | 2019-01-29 | Samsung Electronics Co., Ltd. | Video editing using contextual data and content discovery using clusters |
US11250630B2 (en) | 2014-11-18 | 2022-02-15 | Hallmark Cards, Incorporated | Immersive story creation |
US9654917B2 (en) * | 2014-11-25 | 2017-05-16 | Webandz, Inc. | Geolocation bracelet, system, and methods |
US10320913B2 (en) * | 2014-12-05 | 2019-06-11 | Microsoft Technology Licensing, Llc | Service content tailored to out of routine events |
US9904932B2 (en) * | 2014-12-29 | 2018-02-27 | Google Llc | Analyzing semantic places and related data from a plurality of location data reports |
US10242107B2 (en) | 2015-01-11 | 2019-03-26 | Microsoft Technology Licensing, Llc | Extraction of quantitative data from online content |
US10176457B2 (en) | 2015-02-05 | 2019-01-08 | Sap Se | System and method automatically learning and optimizing sequence order |
US10135937B2 (en) | 2015-02-19 | 2018-11-20 | Microsoft Technology Licensing, Llc | Personalized notifications |
US9554356B2 (en) | 2015-02-19 | 2017-01-24 | Microsoft Technology Licensing, Llc | Personalized reminders |
US10152299B2 (en) | 2015-03-06 | 2018-12-11 | Apple Inc. | Reducing response latency of intelligent automated assistants |
US10567477B2 (en) | 2015-03-08 | 2020-02-18 | Apple Inc. | Virtual assistant continuity |
US9886953B2 (en) | 2015-03-08 | 2018-02-06 | Apple Inc. | Virtual assistant activation |
US9721566B2 (en) | 2015-03-08 | 2017-08-01 | Apple Inc. | Competing devices responding to voice triggers |
US10462211B2 (en) | 2015-03-09 | 2019-10-29 | International Business Machines Corporation | System and method for providing more appropriate question/answer responses based upon profiles |
JP2016170667A (en) * | 2015-03-13 | 2016-09-23 | ソニー株式会社 | Information processing device, information processing method and program |
US10185973B2 (en) * | 2015-04-07 | 2019-01-22 | Microsoft Technology Licensing, Llc | Inferring venue visits using semantic information |
EP3178058B8 (en) * | 2015-04-20 | 2023-09-27 | Samsung Electronics Co., Ltd. | Electronic system with custom notification mechanism and method of operation thereof |
US10460227B2 (en) | 2015-05-15 | 2019-10-29 | Apple Inc. | Virtual assistant in a communication session |
US10200824B2 (en) | 2015-05-27 | 2019-02-05 | Apple Inc. | Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device |
US10083688B2 (en) | 2015-05-27 | 2018-09-25 | Apple Inc. | Device voice control for selecting a displayed affordance |
US9578173B2 (en) | 2015-06-05 | 2017-02-21 | Apple Inc. | Virtual assistant aided communication with 3rd party service in a communication session |
US11025565B2 (en) | 2015-06-07 | 2021-06-01 | Apple Inc. | Personalized prediction of responses for instant messaging |
US9939923B2 (en) | 2015-06-19 | 2018-04-10 | Microsoft Technology Licensing, Llc | Selecting events based on user input and current context |
US20160378747A1 (en) | 2015-06-29 | 2016-12-29 | Apple Inc. | Virtual assistant for media playback |
KR101656785B1 (en) * | 2015-08-28 | 2016-09-12 | 주식회사 코노랩스 | Method, system and non-transitory computer-readable recording medium for providing notification on schedule |
US10671428B2 (en) | 2015-09-08 | 2020-06-02 | Apple Inc. | Distributed personal assistant |
US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
US10740384B2 (en) | 2015-09-08 | 2020-08-11 | Apple Inc. | Intelligent automated assistant for media search and playback |
US10331312B2 (en) | 2015-09-08 | 2019-06-25 | Apple Inc. | Intelligent automated assistant in a media environment |
US10691736B2 (en) | 2015-09-25 | 2020-06-23 | International Business Machines Corporation | Contextualized analytics platform |
US10726340B2 (en) | 2015-09-29 | 2020-07-28 | Cognitive Scale, Inc. | Cognitive learning system having a knowledge model |
US10445646B2 (en) * | 2015-09-29 | 2019-10-15 | Cognitive Scale, Inc. | Method for performing a cognitive learning operation via a cognitive learning framework |
US10445656B2 (en) * | 2015-09-29 | 2019-10-15 | Cognitive Scale, Inc. | Cognitive machine learning system |
US20170091660A1 (en) * | 2015-09-29 | 2017-03-30 | Cognitive Scale, Inc. | Method for Cognitive Learning |
US10445647B2 (en) * | 2015-09-29 | 2019-10-15 | Cognitive Scale, Inc. | Method for performing a cognitive machine learning operation |
US10445655B2 (en) * | 2015-09-29 | 2019-10-15 | Cognitive Scale, Inc. | Cognitive learning framework |
US10691473B2 (en) | 2015-11-06 | 2020-06-23 | Apple Inc. | Intelligent automated assistant in a messaging environment |
US10956666B2 (en) | 2015-11-09 | 2021-03-23 | Apple Inc. | Unconventional virtual assistant interactions |
US10049668B2 (en) | 2015-12-02 | 2018-08-14 | Apple Inc. | Applying neural network language models to weighted finite state transducers for automatic speech recognition |
US9796388B2 (en) | 2015-12-17 | 2017-10-24 | Ford Global Technologies, Llc | Vehicle mode determination |
CN106897313B (en) * | 2015-12-21 | 2020-10-27 | 中国联合网络通信集团有限公司 | Mass user service preference evaluation method and device |
US10990714B2 (en) * | 2015-12-22 | 2021-04-27 | Bwxt Mpower, Inc. | Apparatus and method for safety analysis evaluation with data-driven workflow |
US10223066B2 (en) | 2015-12-23 | 2019-03-05 | Apple Inc. | Proactive assistance based on dialog communication between devices |
US20170221125A1 (en) | 2016-02-03 | 2017-08-03 | International Business Machines Corporation | Matching customer and product behavioral traits |
US9813875B2 (en) * | 2016-03-31 | 2017-11-07 | Intel Corporation | Ad-hoc community context awareness for mobile device |
US10178171B2 (en) | 2016-04-21 | 2019-01-08 | Samsung Electronics Company, Ltd. | Content management system for distribution of content |
US11227589B2 (en) | 2016-06-06 | 2022-01-18 | Apple Inc. | Intelligent list reading |
US10049663B2 (en) | 2016-06-08 | 2018-08-14 | Apple, Inc. | Intelligent automated assistant for media exploration |
US10586535B2 (en) | 2016-06-10 | 2020-03-10 | Apple Inc. | Intelligent digital assistant in a multi-tasking environment |
DK179415B1 (en) | 2016-06-11 | 2018-06-14 | Apple Inc | Intelligent device arbitration and control |
DK201670540A1 (en) | 2016-06-11 | 2018-01-08 | Apple Inc | Application integration with a digital assistant |
WO2018016843A1 (en) * | 2016-07-20 | 2018-01-25 | 안강석 | User-personalised value information search, social network configuration system, and method therefor |
US10460255B2 (en) | 2016-07-29 | 2019-10-29 | Splunk Inc. | Machine learning in edge analytics |
US11087236B2 (en) | 2016-07-29 | 2021-08-10 | Splunk Inc. | Transmitting machine learning models to edge devices for edge analytics |
US10536351B2 (en) | 2016-07-29 | 2020-01-14 | Splunk Inc. | Analytics for edge devices |
US11455545B2 (en) * | 2016-08-10 | 2022-09-27 | Palo Alto Research Center Incorporated | Computer-implemented system and method for building context models in real time |
US10474753B2 (en) | 2016-09-07 | 2019-11-12 | Apple Inc. | Language identification using recurrent neural networks |
US10043516B2 (en) | 2016-09-23 | 2018-08-07 | Apple Inc. | Intelligent automated assistant |
CN106528679A (en) * | 2016-10-24 | 2017-03-22 | 天津大学 | Time series analysis method based on multilinear autoregression model |
US10726466B2 (en) | 2016-11-03 | 2020-07-28 | International Business Machines Corporation | System and method for recommending products to bridge gaps between desired and actual personal branding |
US10957306B2 (en) * | 2016-11-16 | 2021-03-23 | International Business Machines Corporation | Predicting personality traits based on text-speech hybrid data |
US11281993B2 (en) | 2016-12-05 | 2022-03-22 | Apple Inc. | Model and ensemble compression for metric learning |
US11062225B2 (en) * | 2016-12-09 | 2021-07-13 | Adobe Inc. | Techniques for providing sequential recommendations to users |
US11409463B2 (en) | 2016-12-28 | 2022-08-09 | Microsoft Technology Licensing, Llc | Systems and methods for contextual memory capture and recall |
US11204787B2 (en) | 2017-01-09 | 2021-12-21 | Apple Inc. | Application integration with a digital assistant |
WO2018135881A1 (en) | 2017-01-19 | 2018-07-26 | Samsung Electronics Co., Ltd. | Vision intelligence management for electronic devices |
US10909371B2 (en) | 2017-01-19 | 2021-02-02 | Samsung Electronics Co., Ltd. | System and method for contextual driven intelligence |
US10515355B2 (en) | 2017-01-19 | 2019-12-24 | Mastercard International Incorporated | Systems and methods for collecting device data from digital wallet authentications |
CN108446281B (en) * | 2017-02-13 | 2021-03-12 | 北京嘀嘀无限科技发展有限公司 | Method, device and storage medium for determining user intimacy |
US10476813B2 (en) | 2017-02-15 | 2019-11-12 | Bank Of America Corporation | Computerized system for identifying and redistributing complementary resources |
US10356074B2 (en) * | 2017-02-15 | 2019-07-16 | Bank Of America Corporation | Computing system for resource management based on resource attributes and predicting user actions |
US10990912B2 (en) | 2017-02-15 | 2021-04-27 | Bank Of America Corporation | System for identification and integration of like resources and configuring resources for common use |
US11347805B2 (en) | 2017-03-08 | 2022-05-31 | Samsung Electronics Co., Ltd. | Electronic apparatus, method for controlling the same, and non-transitory computer readable recording medium |
DK201770383A1 (en) | 2017-05-09 | 2018-12-14 | Apple Inc. | User interface for correcting recognition errors |
US10417266B2 (en) | 2017-05-09 | 2019-09-17 | Apple Inc. | Context-aware ranking of intelligent response suggestions |
DK201770439A1 (en) | 2017-05-11 | 2018-12-13 | Apple Inc. | Offline personal assistant |
DK180048B1 (en) | 2017-05-11 | 2020-02-04 | Apple Inc. | MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION |
US10726832B2 (en) | 2017-05-11 | 2020-07-28 | Apple Inc. | Maintaining privacy of personal information |
US10395654B2 (en) | 2017-05-11 | 2019-08-27 | Apple Inc. | Text normalization based on a data-driven learning network |
DK179745B1 (en) | 2017-05-12 | 2019-05-01 | Apple Inc. | SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT |
US11301477B2 (en) | 2017-05-12 | 2022-04-12 | Apple Inc. | Feedback analysis of a digital assistant |
DK179496B1 (en) | 2017-05-12 | 2019-01-15 | Apple Inc. | USER-SPECIFIC Acoustic Models |
DK201770429A1 (en) | 2017-05-12 | 2018-12-14 | Apple Inc. | Low-latency intelligent automated assistant |
DK201770431A1 (en) | 2017-05-15 | 2018-12-20 | Apple Inc. | Optimizing dialogue policy decisions for digital assistants using implicit feedback |
DK201770432A1 (en) | 2017-05-15 | 2018-12-21 | Apple Inc. | Hierarchical belief states for digital assistants |
DK179560B1 (en) | 2017-05-16 | 2019-02-18 | Apple Inc. | Far-field extension for digital assistant services |
US10403278B2 (en) | 2017-05-16 | 2019-09-03 | Apple Inc. | Methods and systems for phonetic matching in digital assistant services |
US10311144B2 (en) | 2017-05-16 | 2019-06-04 | Apple Inc. | Emoji word sense disambiguation |
US20180336892A1 (en) | 2017-05-16 | 2018-11-22 | Apple Inc. | Detecting a trigger of a digital assistant |
US20180336275A1 (en) | 2017-05-16 | 2018-11-22 | Apple Inc. | Intelligent automated assistant for media exploration |
US10657328B2 (en) | 2017-06-02 | 2020-05-19 | Apple Inc. | Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling |
US11188809B2 (en) * | 2017-06-27 | 2021-11-30 | International Business Machines Corporation | Optimizing personality traits of virtual agents |
US11373229B2 (en) | 2017-07-13 | 2022-06-28 | The Toronto-Dominion Bank | Contextually-aware recommendation and translation engine |
US10388085B2 (en) | 2017-07-14 | 2019-08-20 | Allstate Insurance Company | Distributed data processing system for processing remotely captured sensor data |
US10445429B2 (en) | 2017-09-21 | 2019-10-15 | Apple Inc. | Natural language understanding using vocabularies with compressed serialized tries |
US10755051B2 (en) | 2017-09-29 | 2020-08-25 | Apple Inc. | Rule-based natural language processing |
US10460748B2 (en) | 2017-10-04 | 2019-10-29 | The Toronto-Dominion Bank | Conversational interface determining lexical personality score for response generation with synonym replacement |
US10339931B2 (en) | 2017-10-04 | 2019-07-02 | The Toronto-Dominion Bank | Persona-based conversational interface personalization using social network preferences |
US10268704B1 (en) | 2017-10-12 | 2019-04-23 | Vast.com, Inc. | Partitioned distributed database systems, devices, and methods |
US11036938B2 (en) * | 2017-10-20 | 2021-06-15 | ConceptDrop Inc. | Machine learning system for optimizing projects |
US10636424B2 (en) | 2017-11-30 | 2020-04-28 | Apple Inc. | Multi-turn canned dialog |
EP3718345B1 (en) * | 2017-11-30 | 2021-07-07 | Telefonaktiebolaget LM Ericsson (publ) | Core network allocation handling |
US10733982B2 (en) | 2018-01-08 | 2020-08-04 | Apple Inc. | Multi-directional dialog |
US10733375B2 (en) | 2018-01-31 | 2020-08-04 | Apple Inc. | Knowledge-based framework for improving natural language understanding |
US10789959B2 (en) | 2018-03-02 | 2020-09-29 | Apple Inc. | Training speaker recognition models for digital assistants |
US10592604B2 (en) | 2018-03-12 | 2020-03-17 | Apple Inc. | Inverse text normalization for automatic speech recognition |
US10818288B2 (en) | 2018-03-26 | 2020-10-27 | Apple Inc. | Natural assistant interaction |
US10909331B2 (en) | 2018-03-30 | 2021-02-02 | Apple Inc. | Implicit identification of translation payload with neural machine translation |
EP3776436A1 (en) * | 2018-05-07 | 2021-02-17 | Google LLC | Personalized match score for places |
US11145294B2 (en) | 2018-05-07 | 2021-10-12 | Apple Inc. | Intelligent automated assistant for delivering content from user experiences |
US10928918B2 (en) | 2018-05-07 | 2021-02-23 | Apple Inc. | Raise to speak |
US10984780B2 (en) | 2018-05-21 | 2021-04-20 | Apple Inc. | Global semantic word embeddings using bi-directional recurrent neural networks |
US10892996B2 (en) | 2018-06-01 | 2021-01-12 | Apple Inc. | Variable latency device coordination |
US11386266B2 (en) | 2018-06-01 | 2022-07-12 | Apple Inc. | Text correction |
DK179822B1 (en) | 2018-06-01 | 2019-07-12 | Apple Inc. | Voice interaction at a primary device to access call functionality of a companion device |
DK201870355A1 (en) | 2018-06-01 | 2019-12-16 | Apple Inc. | Virtual assistant operation in multi-device environments |
DK180639B1 (en) | 2018-06-01 | 2021-11-04 | Apple Inc | DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT |
US10496705B1 (en) | 2018-06-03 | 2019-12-03 | Apple Inc. | Accelerated task performance |
WO2020033354A2 (en) * | 2018-08-06 | 2020-02-13 | Olive Seed Industries, Llc | Methods and systems for personalizing visitor experience at a venue |
WO2020040762A1 (en) | 2018-08-22 | 2020-02-27 | Google Llc | Automatically resolving, with reduced user inputs, a set of activity instances for a group of users |
US11010561B2 (en) | 2018-09-27 | 2021-05-18 | Apple Inc. | Sentiment prediction from textual data |
US11170166B2 (en) | 2018-09-28 | 2021-11-09 | Apple Inc. | Neural typographical error modeling via generative adversarial networks |
US10839159B2 (en) | 2018-09-28 | 2020-11-17 | Apple Inc. | Named entity normalization in a spoken dialog system |
US11462215B2 (en) | 2018-09-28 | 2022-10-04 | Apple Inc. | Multi-modal inputs for voice commands |
US11475898B2 (en) | 2018-10-26 | 2022-10-18 | Apple Inc. | Low-latency multi-speaker speech recognition |
US11638059B2 (en) | 2019-01-04 | 2023-04-25 | Apple Inc. | Content playback on multiple devices |
US11348573B2 (en) | 2019-03-18 | 2022-05-31 | Apple Inc. | Multimodality in digital assistant systems |
US11475884B2 (en) | 2019-05-06 | 2022-10-18 | Apple Inc. | Reducing digital assistant latency when a language is incorrectly determined |
US11307752B2 (en) | 2019-05-06 | 2022-04-19 | Apple Inc. | User configurable task triggers |
DK201970509A1 (en) | 2019-05-06 | 2021-01-15 | Apple Inc | Spoken notifications |
US11423908B2 (en) | 2019-05-06 | 2022-08-23 | Apple Inc. | Interpreting spoken requests |
US11140099B2 (en) | 2019-05-21 | 2021-10-05 | Apple Inc. | Providing message response suggestions |
US11496600B2 (en) | 2019-05-31 | 2022-11-08 | Apple Inc. | Remote execution of machine-learned models |
DK180129B1 (en) | 2019-05-31 | 2020-06-02 | Apple Inc. | User activity shortcut suggestions |
US11289073B2 (en) | 2019-05-31 | 2022-03-29 | Apple Inc. | Device text to speech |
DK201970510A1 (en) | 2019-05-31 | 2021-02-11 | Apple Inc | Voice identification in digital assistant systems |
US11360641B2 (en) | 2019-06-01 | 2022-06-14 | Apple Inc. | Increasing the relevance of new available information |
US11468890B2 (en) | 2019-06-01 | 2022-10-11 | Apple Inc. | Methods and user interfaces for voice-based control of electronic devices |
CN110276017A (en) * | 2019-06-28 | 2019-09-24 | 百度在线网络技术(北京)有限公司 | A kind of data analysing method and device |
CN110428298A (en) * | 2019-07-15 | 2019-11-08 | 阿里巴巴集团控股有限公司 | A kind of shop recommended method, device and equipment |
US11544761B1 (en) | 2019-08-29 | 2023-01-03 | Inmar Clearing, Inc. | Food product recommendation system and related methods |
US11488406B2 (en) | 2019-09-25 | 2022-11-01 | Apple Inc. | Text detection using global geometry estimators |
US20210158424A1 (en) * | 2019-11-27 | 2021-05-27 | L'oreal | Techniques for improving product recommendations using personality traits |
US20210174216A1 (en) * | 2019-12-04 | 2021-06-10 | International Business Machines Corporation | Signaling concept drift during knowledge base population |
US20210304043A1 (en) * | 2020-03-26 | 2021-09-30 | International Business Machines Corporation | Evaluating a recommender system for data processing |
US11768945B2 (en) * | 2020-04-07 | 2023-09-26 | Allstate Insurance Company | Machine learning system for determining a security vulnerability in computer software |
US11061543B1 (en) | 2020-05-11 | 2021-07-13 | Apple Inc. | Providing relevant data items based on context |
US11183193B1 (en) | 2020-05-11 | 2021-11-23 | Apple Inc. | Digital assistant hardware abstraction |
US11755276B2 (en) | 2020-05-12 | 2023-09-12 | Apple Inc. | Reducing description length based on confidence |
US20210374122A1 (en) * | 2020-05-27 | 2021-12-02 | Koninklijke Philips N.V. | Method and systems for cleaning and enriching data from a real-time locating system |
US11490204B2 (en) | 2020-07-20 | 2022-11-01 | Apple Inc. | Multi-device audio adjustment coordination |
US11438683B2 (en) | 2020-07-21 | 2022-09-06 | Apple Inc. | User identification using headphones |
US20230252388A1 (en) * | 2022-02-04 | 2023-08-10 | Workday, Inc. | Computerized systems and methods for intelligent listening and survey distribution |
US20240070746A1 (en) * | 2022-08-30 | 2024-02-29 | Maplebear Inc. (Dba Instacart) | Machine learning prediction of user responses to recommendations selected without contextual relevance |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020052934A1 (en) * | 2000-08-28 | 2002-05-02 | Doherty Michael Emmett | Personalized agent for website direction |
US20040162830A1 (en) * | 2003-02-18 | 2004-08-19 | Sanika Shirwadkar | Method and system for searching location based information on a mobile device |
US20070006098A1 (en) * | 2005-06-30 | 2007-01-04 | Microsoft Corporation | Integration of location logs, GPS signals, and spatial resources for identifying user activities, goals, and context |
US20090132905A1 (en) * | 2005-04-01 | 2009-05-21 | Masaaki Hoshino | Information processing system, method, and program |
US20090216847A1 (en) * | 2007-11-14 | 2009-08-27 | Qualcomm Incorporated | Method and system for message value calculation in a mobile environment |
US20090276284A1 (en) * | 2008-05-01 | 2009-11-05 | Microsoft Corporation | Peer to peer network personal assistant |
US20100070448A1 (en) * | 2002-06-24 | 2010-03-18 | Nosa Omoigui | System and method for knowledge retrieval, management, delivery and presentation |
US20100161619A1 (en) * | 2008-12-18 | 2010-06-24 | Lamere Paul B | Method and Apparatus for Generating Recommendations From Descriptive Information |
US20100228590A1 (en) * | 2009-03-03 | 2010-09-09 | International Business Machines Corporation | Context-aware electronic social networking |
US20110040756A1 (en) * | 2009-08-12 | 2011-02-17 | Yahoo! Inc. | System and Method for Providing Recommendations |
US20120030062A1 (en) * | 2010-07-29 | 2012-02-02 | True Fit Corporation | Enabling proxy shopping |
US20120123993A1 (en) * | 2010-11-17 | 2012-05-17 | Microsoft Corporation | Action Prediction and Identification Temporal User Behavior |
US20120317161A1 (en) * | 2011-06-09 | 2012-12-13 | GM Global Technology Operations LLC | Systems and methods for determining recommended media content for exchange between vehicles |
US8606636B1 (en) * | 2010-07-14 | 2013-12-10 | Amazon Technologies, Inc. | Recommendations based on environmental variables |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7251637B1 (en) * | 1993-09-20 | 2007-07-31 | Fair Isaac Corporation | Context vector generation and retrieval |
US20060026048A1 (en) | 1997-08-08 | 2006-02-02 | Kolawa Adam K | Method and apparatus for automated selection, organization, and recommendation of items based on user preference topography |
US6581058B1 (en) | 1998-05-22 | 2003-06-17 | Microsoft Corporation | Scalable system for clustering of large databases having mixed data attributes |
US6466232B1 (en) | 1998-12-18 | 2002-10-15 | Tangis Corporation | Method and system for controlling presentation of information to a user based on the user's condition |
US20020049816A1 (en) | 2000-03-24 | 2002-04-25 | Costin William Gilmore | System and method for raising funds and establishing user affinity over a distributed network |
US6389308B1 (en) | 2000-05-30 | 2002-05-14 | Vladimir Shusterman | System and device for multi-scale analysis and representation of electrocardiographic data |
US6655963B1 (en) * | 2000-07-31 | 2003-12-02 | Microsoft Corporation | Methods and apparatus for predicting and selectively collecting preferences based on personality diagnosis |
US6826477B2 (en) | 2001-04-23 | 2004-11-30 | Ecole Polytechnique Federale De Lausanne (Epfl) | Pedestrian navigation method and apparatus operative in a dead reckoning mode |
US6912386B1 (en) * | 2001-11-13 | 2005-06-28 | Nokia Corporation | Method for controlling operation of a mobile device by detecting usage situations |
AU2002366902A1 (en) * | 2001-12-21 | 2003-07-09 | Nokia Corporation | Location-based novelty index value and recommendation system and method |
US7203909B1 (en) | 2002-04-04 | 2007-04-10 | Microsoft Corporation | System and methods for constructing personalized context-sensitive portal pages or views by analyzing patterns of users' information access activities |
GB0212177D0 (en) * | 2002-05-27 | 2002-07-03 | Symbian Ltd | Location awareness on the Symbian platform |
DE60231844D1 (en) | 2002-12-20 | 2009-05-14 | Nokia Corp | NEW RELEASE INFORMATION WITH META INFORMATION |
US7526458B2 (en) * | 2003-11-28 | 2009-04-28 | Manyworlds, Inc. | Adaptive recommendations systems |
US7707039B2 (en) | 2004-02-15 | 2010-04-27 | Exbiblio B.V. | Automatic modification of web pages |
US20060053097A1 (en) | 2004-04-01 | 2006-03-09 | King Martin T | Searching and accessing documents on private networks for use with captures from rendered documents |
US7853485B2 (en) | 2005-11-22 | 2010-12-14 | Nec Laboratories America, Inc. | Methods and systems for utilizing content, dynamic patterns, and/or relational information for data analysis |
US7774341B2 (en) * | 2006-03-06 | 2010-08-10 | Veveo, Inc. | Methods and systems for selecting and presenting content based on dynamically identifying microgenres associated with the content |
US7849027B2 (en) | 2006-10-18 | 2010-12-07 | Yahoo! Inc. | Automated clustering of records, biased by supervised classification processing |
EP2201553A4 (en) | 2007-08-16 | 2011-01-05 | Google Inc | Combining road and vehicle sensor traffic information |
US8310542B2 (en) * | 2007-11-28 | 2012-11-13 | Fuji Xerox Co., Ltd. | Segmenting time based on the geographic distribution of activity in sensor data |
US7671802B2 (en) | 2008-03-17 | 2010-03-02 | Disney Enterprises, Inc. | Active player tracking |
CN102037481A (en) | 2008-03-19 | 2011-04-27 | 苹果核网络股份有限公司 | Method and apparatus for detecting patterns of behavior |
US10163113B2 (en) * | 2008-05-27 | 2018-12-25 | Qualcomm Incorporated | Methods and apparatus for generating user profile based on periodic location fixes |
US9547710B2 (en) | 2008-08-05 | 2017-01-17 | Vmware, Inc. | Methods for the cyclical pattern determination of time-series data using a clustering approach |
US9245000B2 (en) | 2008-08-05 | 2016-01-26 | Vmware, Inc. | Methods for the cyclical pattern determination of time-series data using a clustering approach |
US8620624B2 (en) | 2008-09-30 | 2013-12-31 | Sense Networks, Inc. | Event identification in sensor analytics |
US8195393B2 (en) | 2009-06-30 | 2012-06-05 | Apple Inc. | Analyzing and consolidating track file data |
US8588752B2 (en) * | 2009-10-10 | 2013-11-19 | Mitel Networks Corporation | System and method for creation and management of location information |
US9165304B2 (en) * | 2009-10-23 | 2015-10-20 | Service Management Group, Inc. | Analyzing consumer behavior using electronically-captured consumer location data |
US8375255B2 (en) * | 2009-12-23 | 2013-02-12 | At&T Intellectual Property I, Lp | Device and method for detecting and diagnosing correlated network anomalies |
US8612134B2 (en) * | 2010-02-23 | 2013-12-17 | Microsoft Corporation | Mining correlation between locations using location history |
US8266243B1 (en) | 2010-03-30 | 2012-09-11 | Amazon Technologies, Inc. | Feedback mechanisms providing contextual information |
JP5777715B2 (en) * | 2010-09-17 | 2015-09-09 | ノキア コーポレイション | Method and apparatus for classifying context information |
US9071939B2 (en) * | 2010-09-23 | 2015-06-30 | Nokia Technologies Oy | Methods and apparatuses for context determination |
JP5523274B2 (en) | 2010-10-12 | 2014-06-18 | Kddi株式会社 | Apparatus, program, and method for estimating significant area of user having portable terminal |
US20120117006A1 (en) | 2010-11-04 | 2012-05-10 | Nokia Corporation | Method and apparatus for building a user behavior model |
US9122693B2 (en) * | 2010-11-30 | 2015-09-01 | Nokia Technologies Oy | Method and apparatus for determining contextually relevant geographical locations |
JP5221630B2 (en) * | 2010-12-07 | 2013-06-26 | 楽天株式会社 | Server, information management method, information management program, and computer-readable recording medium for recording the program |
US20120213404A1 (en) | 2011-02-18 | 2012-08-23 | Google Inc. | Automatic event recognition and cross-user photo clustering |
US9208626B2 (en) | 2011-03-31 | 2015-12-08 | United Parcel Service Of America, Inc. | Systems and methods for segmenting operational data |
US20130022282A1 (en) * | 2011-07-19 | 2013-01-24 | Fuji Xerox Co., Ltd. | Methods for clustering collections of geo-tagged photographs |
US8788307B2 (en) * | 2011-09-02 | 2014-07-22 | Woofound, Inc. | System for using personality trait identification to match consumers with businesses |
US8634660B2 (en) | 2011-09-07 | 2014-01-21 | Intellectual Ventures Fund 83 Llc | Event classification method using lit candle detection |
US9355157B2 (en) * | 2012-07-20 | 2016-05-31 | Intertrust Technologies Corporation | Information targeting systems and methods |
US20140032358A1 (en) * | 2012-07-25 | 2014-01-30 | Aro, Inc. | Sharing Recommendation Agents |
US8655307B1 (en) * | 2012-10-26 | 2014-02-18 | Lookout, Inc. | System and method for developing, updating, and using user device behavioral context models to modify user, device, and application state, settings and behavior for enhanced user security |
-
2013
- 2013-07-24 US US13/950,177 patent/US20140032358A1/en not_active Abandoned
- 2013-07-24 US US13/950,224 patent/US8892480B2/en active Active
- 2013-07-24 US US13/950,105 patent/US9179250B2/en active Active
- 2013-07-24 US US13/950,150 patent/US20140031060A1/en not_active Abandoned
- 2013-07-24 EP EP13822842.4A patent/EP2877935A4/en not_active Withdrawn
- 2013-07-24 US US13/950,117 patent/US9020864B2/en active Active
- 2013-07-24 KR KR1020147008609A patent/KR101512278B1/en active IP Right Grant
- 2013-07-24 WO PCT/US2013/051909 patent/WO2014018687A1/en active Application Filing
- 2013-07-24 US US13/950,169 patent/US8838436B2/en active Active
-
2015
- 2015-02-23 US US14/629,456 patent/US20150170042A1/en not_active Abandoned
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020052934A1 (en) * | 2000-08-28 | 2002-05-02 | Doherty Michael Emmett | Personalized agent for website direction |
US20100070448A1 (en) * | 2002-06-24 | 2010-03-18 | Nosa Omoigui | System and method for knowledge retrieval, management, delivery and presentation |
US20040162830A1 (en) * | 2003-02-18 | 2004-08-19 | Sanika Shirwadkar | Method and system for searching location based information on a mobile device |
US20090132905A1 (en) * | 2005-04-01 | 2009-05-21 | Masaaki Hoshino | Information processing system, method, and program |
US20070006098A1 (en) * | 2005-06-30 | 2007-01-04 | Microsoft Corporation | Integration of location logs, GPS signals, and spatial resources for identifying user activities, goals, and context |
US20090216847A1 (en) * | 2007-11-14 | 2009-08-27 | Qualcomm Incorporated | Method and system for message value calculation in a mobile environment |
US8224714B2 (en) * | 2008-05-01 | 2012-07-17 | Microsoft Corporation | Peer to peer network personal assistant |
US20090276284A1 (en) * | 2008-05-01 | 2009-11-05 | Microsoft Corporation | Peer to peer network personal assistant |
US20100161619A1 (en) * | 2008-12-18 | 2010-06-24 | Lamere Paul B | Method and Apparatus for Generating Recommendations From Descriptive Information |
US20100228590A1 (en) * | 2009-03-03 | 2010-09-09 | International Business Machines Corporation | Context-aware electronic social networking |
US20110040756A1 (en) * | 2009-08-12 | 2011-02-17 | Yahoo! Inc. | System and Method for Providing Recommendations |
US8606636B1 (en) * | 2010-07-14 | 2013-12-10 | Amazon Technologies, Inc. | Recommendations based on environmental variables |
US20120030062A1 (en) * | 2010-07-29 | 2012-02-02 | True Fit Corporation | Enabling proxy shopping |
US20120123993A1 (en) * | 2010-11-17 | 2012-05-17 | Microsoft Corporation | Action Prediction and Identification Temporal User Behavior |
US8412665B2 (en) * | 2010-11-17 | 2013-04-02 | Microsoft Corporation | Action prediction and identification temporal user behavior |
US20120317161A1 (en) * | 2011-06-09 | 2012-12-13 | GM Global Technology Operations LLC | Systems and methods for determining recommended media content for exchange between vehicles |
Non-Patent Citations (1)
Title |
---|
Chen et al., Creating Context-Aware Software Agents, WRAC 2002, LNAI 2564, pp. 186-197, 2003. * |
Cited By (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898602B2 (en) | 2012-05-14 | 2018-02-20 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
US9609456B2 (en) * | 2012-05-14 | 2017-03-28 | Qualcomm Incorporated | Methods, devices, and systems for communicating behavioral analysis information |
US20140337862A1 (en) * | 2012-05-14 | 2014-11-13 | Qualcomm Incorporated | Methods, Devices, and Systems for Communicating Behavioral Analysis Information |
US9690635B2 (en) | 2012-05-14 | 2017-06-27 | Qualcomm Incorporated | Communicating behavior information in a mobile computing device |
US8838436B2 (en) * | 2012-07-25 | 2014-09-16 | Aro, Inc. | Labeling context slices to produce a storyline from mobile device data |
US8892480B2 (en) | 2012-07-25 | 2014-11-18 | Aro, Inc. | Contextual information provider |
US9020864B2 (en) | 2012-07-25 | 2015-04-28 | Aro, Inc. | Recommendation agent using a personality model determined from mobile device data |
US20140032208A1 (en) * | 2012-07-25 | 2014-01-30 | Aro, Inc. | Labeling Context Slices To Produce a Storyline from Mobile Device Data |
US9179250B2 (en) | 2012-07-25 | 2015-11-03 | Aro, Inc. | Recommendation agent using a routine model determined from mobile device data |
US9495537B2 (en) | 2012-08-15 | 2016-11-15 | Qualcomm Incorporated | Adaptive observation of behavioral features on a mobile device |
US9756066B2 (en) | 2012-08-15 | 2017-09-05 | Qualcomm Incorporated | Secure behavior analysis over trusted execution environment |
US9747440B2 (en) | 2012-08-15 | 2017-08-29 | Qualcomm Incorporated | On-line behavioral analysis engine in mobile device with multiple analyzer model providers |
US11392992B2 (en) * | 2012-11-30 | 2022-07-19 | Panasonic Intellectual Property Corporation Of America | Information providing method |
US10089582B2 (en) | 2013-01-02 | 2018-10-02 | Qualcomm Incorporated | Using normalized confidence values for classifying mobile device behaviors |
US9686023B2 (en) | 2013-01-02 | 2017-06-20 | Qualcomm Incorporated | Methods and systems of dynamically generating and using device-specific and device-state-specific classifier models for the efficient classification of mobile device behaviors |
US9684870B2 (en) | 2013-01-02 | 2017-06-20 | Qualcomm Incorporated | Methods and systems of using boosted decision stumps and joint feature selection and culling algorithms for the efficient classification of mobile device behaviors |
US9742559B2 (en) | 2013-01-22 | 2017-08-22 | Qualcomm Incorporated | Inter-module authentication for securing application execution integrity within a computing device |
US9491187B2 (en) | 2013-02-15 | 2016-11-08 | Qualcomm Incorporated | APIs for obtaining device-specific behavior classifier models from the cloud |
US9305343B2 (en) * | 2013-04-12 | 2016-04-05 | Hitachi High-Technologies Corporation | Observation device and observation method |
US20140307946A1 (en) * | 2013-04-12 | 2014-10-16 | Hitachi High-Technologies Corporation | Observation device and observation method |
US9467411B2 (en) * | 2013-07-31 | 2016-10-11 | International Business Machines Corporation | Identifying content in an incoming message on a social network |
US20150039697A1 (en) * | 2013-07-31 | 2015-02-05 | International Business Machines Corporation | Identifying Content in an Incoming Message on a Social Network |
US20150039701A1 (en) * | 2013-07-31 | 2015-02-05 | International Business Machines Corporation | Identifying Content in an Incoming Message on a Social Network |
US10445342B2 (en) | 2013-07-31 | 2019-10-15 | International Business Machines Corporation | Identifying content in an incoming message on a social network |
US9401887B2 (en) * | 2013-07-31 | 2016-07-26 | International Business Machines Corporation | Identifying content in an incoming message on a social network |
US10824652B2 (en) | 2013-07-31 | 2020-11-03 | International Business Machines Corporation | Identifying content in an incoming message on a social network |
US10452687B2 (en) | 2013-07-31 | 2019-10-22 | International Business Machines Corporation | Identifying content in an incoming message on a social network |
US9405964B1 (en) * | 2013-09-09 | 2016-08-02 | Amazon Technologies, Inc. | Processes for generating content sharing recommendations based on image content analysis |
US9338242B1 (en) | 2013-09-09 | 2016-05-10 | Amazon Technologies, Inc. | Processes for generating content sharing recommendations |
US9531823B1 (en) | 2013-09-09 | 2016-12-27 | Amazon Technologies, Inc. | Processes for generating content sharing recommendations based on user feedback data |
US10049413B2 (en) | 2013-09-20 | 2018-08-14 | Vulcan Technologies Llc | Automatically creating a hierarchical storyline from mobile device data |
US10747408B2 (en) * | 2013-11-11 | 2020-08-18 | Samsung Electronics Co., Ltd. | Display apparatus and server apparatus providing feedback user interface |
US20150135070A1 (en) * | 2013-11-11 | 2015-05-14 | Samsung Electronics Co., Ltd. | Display apparatus, server apparatus and user interface screen providing method thereof |
US9760756B2 (en) | 2013-12-05 | 2017-09-12 | Aro, Inc. | Venue identification using sensor fingerprints |
US9541652B2 (en) | 2013-12-06 | 2017-01-10 | Aro, Inc. | Accurate mobile context detection at low sensor cost |
US20150278348A1 (en) * | 2014-03-28 | 2015-10-01 | Microsoft Corporation | Explicit signals personalized search |
US9710546B2 (en) * | 2014-03-28 | 2017-07-18 | Microsoft Technology Licensing, Llc | Explicit signals personalized search |
US11093536B2 (en) | 2014-03-28 | 2021-08-17 | Microsoft Technology Licensing, Llc | Explicit signals personalized search |
CN104360875A (en) * | 2014-10-22 | 2015-02-18 | 小米科技有限责任公司 | Private mode starting method and device |
US20160162809A1 (en) * | 2014-11-12 | 2016-06-09 | Homeaway, Inc. | Enhanced searching and selection of rental properties and associated activities based on historic travel-related data |
US10459925B2 (en) * | 2014-12-08 | 2019-10-29 | Iprova Sarl | Computer-enabled method of assisting to generate an innovation |
US20160162486A1 (en) * | 2014-12-08 | 2016-06-09 | Iprova SarI | Computer-enabled method of assisting to generate an innovation |
US10803391B2 (en) * | 2015-07-29 | 2020-10-13 | Google Llc | Modeling personal entities on a mobile device using embeddings |
US20170161272A1 (en) * | 2015-12-08 | 2017-06-08 | International Business Machines Corporation | Social media search assist |
US20170185917A1 (en) * | 2015-12-29 | 2017-06-29 | Cognitive Scale, Inc. | Method for Monitoring Interactions to Build a Cognitive Profile |
US20170185916A1 (en) * | 2015-12-29 | 2017-06-29 | Cognitive Scale, Inc. | Cognitive Profile Builder |
US10225369B2 (en) | 2016-06-02 | 2019-03-05 | At&T Intellectual Property I, L.P. | Method and apparatus for providing a recommended action for a venue via a network |
US10728363B2 (en) | 2016-06-02 | 2020-07-28 | At&T Intellectual Property I, L.P. | Method and apparatus for providing a recommended action for a venue via a network |
US11405486B2 (en) | 2016-06-02 | 2022-08-02 | At&T Intellectual Property I, L.P. | Method and apparatus for providing a recommended action for a venue via a network |
US11068791B2 (en) * | 2016-09-14 | 2021-07-20 | International Business Machines Corporation | Providing recommendations utilizing a user profile |
US20180075355A1 (en) * | 2016-09-14 | 2018-03-15 | International Business Machines Corporation | Providing recommendations utilizing a user profile |
US11205103B2 (en) | 2016-12-09 | 2021-12-21 | The Research Foundation for the State University | Semisupervised autoencoder for sentiment analysis |
US10812603B2 (en) | 2017-02-20 | 2020-10-20 | At&T Intellectual Property I, L.P. | Social media and location-based informed entertainment recommendations |
US10298706B2 (en) * | 2017-02-20 | 2019-05-21 | At&T Intellectual Property I, L.P. | Social media and location-based informed entertainment recommendations |
US20190108283A1 (en) * | 2017-10-09 | 2019-04-11 | Facebook, Inc. | Automatic Detection of Events on Online Social Networks |
US10891142B2 (en) * | 2017-12-21 | 2021-01-12 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method and device for preloading application, storage medium, and terminal device |
US11710202B2 (en) * | 2018-06-20 | 2023-07-25 | Grubhub Holdings Inc. | Personalizing food discovery and search based on inferred taste preference |
US20220051355A1 (en) * | 2018-06-20 | 2022-02-17 | Grubhub Holdings Inc. | Personalizing food discovery and search based on inferred taste preference |
CN111209245A (en) * | 2018-11-21 | 2020-05-29 | 上海寒武纪信息科技有限公司 | Data processing device, method and related product |
US11436657B2 (en) * | 2019-03-01 | 2022-09-06 | Shopify Inc. | Self-healing recommendation engine |
US11494675B2 (en) * | 2020-08-03 | 2022-11-08 | Kpn Innovations, Llc. | Method and system for data classification to generate a second alimentary provider |
US20220036215A1 (en) * | 2020-08-03 | 2022-02-03 | Kpn Innovations, Llc. | Method and system for data classification to generate a second alimentary provider |
Also Published As
Publication number | Publication date |
---|---|
US8892480B2 (en) | 2014-11-18 |
KR101512278B1 (en) | 2015-04-17 |
US20150170042A1 (en) | 2015-06-18 |
EP2877935A4 (en) | 2016-01-20 |
US20140032452A1 (en) | 2014-01-30 |
US20140031060A1 (en) | 2014-01-30 |
US9179250B2 (en) | 2015-11-03 |
US9020864B2 (en) | 2015-04-28 |
US20140032572A1 (en) | 2014-01-30 |
US8838436B2 (en) | 2014-09-16 |
US20140032208A1 (en) | 2014-01-30 |
EP2877935A1 (en) | 2015-06-03 |
KR20140071398A (en) | 2014-06-11 |
US20140032453A1 (en) | 2014-01-30 |
WO2014018687A1 (en) | 2014-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9179250B2 (en) | Recommendation agent using a routine model determined from mobile device data | |
US20150118667A1 (en) | Automated lifelogging to identify, monitor, and help achieve user goals | |
CN110476176B (en) | User objective assistance techniques | |
US20190370676A1 (en) | Interestingness recommendations in a computing advice facility | |
US11263543B2 (en) | Node bootstrapping in a social graph | |
US9159034B2 (en) | Geographically localized recommendations in a computing advice facility | |
US10796238B2 (en) | Cognitive personal assistant | |
US10318534B2 (en) | Recommendations in a computing advice facility | |
US20170308866A1 (en) | Meeting Scheduling Resource Efficiency | |
US10049413B2 (en) | Automatically creating a hierarchical storyline from mobile device data | |
Gasparetti | Personalization and context-awareness in social local search: State-of-the-art and future research challenges | |
US20230004943A1 (en) | Intelligent processing and presentation of user-connection data on a computing device | |
EP3646181A1 (en) | Multi-application user interest memory management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ARO, INC., WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PERKOWITZ, MICHAEL;EUSTICE, KEVIN FRANCIS;HICKL, ANDREW F.;REEL/FRAME:030871/0356 Effective date: 20130724 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: VULCAN TECHNOLOGIES LLC, WASHINGTON Free format text: TRANSFER STATEMENT;ASSIGNOR:ARO, INC.;REEL/FRAME:045661/0606 Effective date: 20171220 |