The present disclosure relates to aspects of prediction of the next contact to be called by a user of a communications system.
Calling systems typically provide address book functionality that provides a list of contacts that may be called. Calling systems also tend to include a favorites list of contacts that are frequently accessed, as well as a listing of missed calls or recent calls.
In one or more illustrative examples, a memory is configured to store call records to a plurality of contacts. A processor is programmed to determine probabilities of calling contacts according to current contextual information and call inferences determined from clusters of a context-encoded model created from the call records, each cluster corresponding to a unique combination of ranges of values of the contextual information; and identify the most likely next contact to call as the one of the plurality of contacts having a highest of the probabilities.
In one or more illustrative examples, a method includes updating parameters of clusters of a context-encoded model, per a frequency estimation of an aspect of calls to contacts with respect to unique combinations of contextual data of calls matching the respective clusters; weighting the clusters according to relevance of the unique combinations of contextual data to current contextual information; and determining probabilities of calling contacts according to the current contextual information and one or more inferences between calls determined from the clusters as weighted.
In one or more illustrative examples, a non-transitory computer-readable medium comprising instructions that, when executed by a computing device, cause the computing device to update parameters of clusters of a context-encoded model, per a frequency estimation of an aspect of calls to contacts with respect to unique combinations of contextual data of calls matching the respective clusters; weight the clusters according to relevance of the unique combinations of contextual data to current contextual information; and determine probabilities of calling contacts according to the current contextual information and one or more inferences between calls determined from the clusters as weighted.
Embodiments of the present disclosure are described herein. It is to be understood, however, that the disclosed embodiments are merely examples and other embodiments can take various and alternative forms. The figures are not necessarily to scale; some features could be exaggerated or minimized to show details of particular components. Therefore, specific structural and functional details disclosed herein are not to be interpreted as limiting, but merely as a representative basis for teaching one skilled in the art to variously employ the embodiments. As those of ordinary skill in the art will understand, various features illustrated and described with reference to any one of the figures can be combined with features illustrated in one or more other figures to produce embodiments that are not explicitly illustrated or described. The combinations of features illustrated provide representative embodiments for typical applications. Various combinations and modifications of the features consistent with the teachings of this disclosure, however, could be desired for particular applications or implementations.
Current calling systems are unable to predict what contact or contacts a user may likely call next. However, it may be desirable for a calling system to provide such a prediction. For example, in the vehicle environment it may be undesirable for a user to scroll through lists of names while the user is performing driving tasks.
An intelligent call ranker and/or dialer device may be created that learns the user's calling behavior and that predicts and ranks the next contacts to call based on the current context. The device may intelligently rank contacts of a user according to smart frequency estimations including time between contacts of the same person, relative frequencies among likely contacts, time since last contacting a person, etc. The device may further utilize additional contextual information such as day, time, and location, such that the device can use the context as predictors of which contacts are more likely to be called. The device may further be configured to handle uncertainty in the resulting list, as well as provide predictions in situations of uncertainty. The device may further utilize an incremental learning approach and may begin learning from scratch.
A recursive estimation may be implemented either onboard or offboard the device. Using the estimation, contacts may be ranked higher if their average contact frequency is high. With the same contact frequencies, contacts that were contacted less recently may be ranked high. Other contexts may be incorporated if needed with additional parameters. Inferences with respect to calls to the contacts may be based on recursive estimates that reflect on most recent behavior, such that purging of old call data is automatic. Additional contextual factors regarding the historical calls (e.g., day, time, location, etc.) may also be incorporated into the predictive model using information-encoding techniques. The predictive models may be constructed with one or multiple inferences, with or without the encoded information. Such approaches may be suitable for in-car use as well as for a portable contact predictor activated from a connected computing device.
The GPU may include hardware and software for display of at least two-dimensional (2D) and optionally three-dimensional (3D) graphics to a display device 108. The display device 108 may include an electronic display screen, projector, printer, or any other suitable device that reproduces a graphical display. In some examples, processor 102 executes software programs including drivers and other software instructions using the hardware functionality in the GPU to accelerate the performance of machine learning or other computing operations described herein.
The display device 108 may include an electronic display screen, projector, printer, or any other suitable device that reproduces a graphical display that is generated via the processor 102. In an example, the display device 108 may be a head unit display of a vehicle. In another example, the display device 108 may be a screen of a smartphone, tablet, watch, or other portable computing device.
The memory 110 may include both non-volatile memory and volatile memory devices. The non-volatile memory includes solid-state memories, such as NAND flash memory, magnetic and optical storage media, or any other suitable data storage device that retains data when the system 100 is deactivated or loses electrical power. The volatile memory includes static and dynamic random-access memory (RAM) that stores program instructions and data during operation of the system 100. As shown, the memory 110 may store the contacts 112, call data 114, contextual data 122, and call prediction application 116 for maintenance and retrieval.
The input controls 118 may include any of various devices that enable the system 100 to receive control input. Examples of suitable input devices include human interface inputs such as keyboards, mice, touchscreens, voice input devices, and the like.
A network device 120 may include any of various devices that enable the system 100 to receive the call data 114, contextual data 122 or other data from an external device. Examples of suitable network devices 120 include a network adapter or peripheral interconnection device that receives data from another computer or external data storage device, which can be useful for receiving large sets of call data 114 in an efficient manner.
The contacts 112 refer to data records that each define information about a contact that may be called using the network device 120. In an example, the contacts 112 may indicate a name of a contact, and one or more identifiers that may be used to send or receive communications with the contact. These identifiers may include, as some non-limiting examples, phone numbers, instant message account names, online user handles, email addresses, and so on.
The call data 114 refers to a plurality of records that are each representative of a call or other communication session between the user and a contact 112. Each call data 114 record may include an indication of which contact 112 was communicated with, whether the user or the contact 112 initiated the communication, whether the contact 112 was available (e.g., picked up the call), a day and time at which the communication session was initiated, and a duration of the communication session. In some instances, some or all of the call data 114 may be received from a data storage device.
The contextual data 122 may include additional information about circumstances surrounding the calls in the call data 114. In an example, the contextual data 122 may indicate the location of the user during the call. In another example, the contextual data 122 may include the speed of travel of the user, and/or the direction of travel of the user during the call. In yet another example, the contextual data 122 may indicate the distance covered during the call (e.g., as a difference between the location of the user at the beginning of the call and the location of the user at the end of the call). In another example, the day may be divided into a plurality of time segments (e.g., hours, half-hours, etc.), and the contextual data 122 may indicate during which time segment the call was made. The contextual data 122 may also include hardware identifiers related to the network device 120 itself, such as a MAC address of the network device 120, SIM data, a firmware version of the network device 120, aspects of the network to which the network device 120 was connected (e.g., whether the connection was over 3G, 4G LTE, 5G, etc., whether the network device 120 was roaming, etc.) and so on.
As some other examples, in cases where the user is in a vehicle, the contextual data 122 may include data about the vehicle, such as a key-on day and time for the vehicle, key fob information (e.g., which may be indicative of an identity of a driver), whether the network device 120 was paired with the vehicle, various vehicle signals, (e.g., what gear the vehicle was in, vehicle speed, seatbelt status, etc.). The contextual data 122 may include other information about the trip of the user having the call as well, such as what type of road the user traveled (e.g., dirt road, expressway, speed limit of the road, number of lanes of the road, etc.).
The predicted call list 124 may include a listing of one or more contacts 112 that are deemed to be the most likely call to be made as the next call by the user. In an example, each predicated call on the predicted call list may be determined to have a likelihood of being the next call, and the predicted call list 124 may be sorted in decreasing order of likelihood.
While the illustrated system 100 is shown using a single computing device that incorporates the display device 108, other example systems 100 may include multiple computing devices. As one example, the processor 102 generates the predicted call list 124 and transmits the predicted call list 124 to a remote computing device using the network device 120 via a data network. The remote computing device then may display a user interface displaying the predicted call list 124. In another nonlimiting example, the processor 102 is implemented in a server computing device that executes the call prediction application 116 to implement a web server that transmits data to a web browser in a remote client computing device via a data network. The client computing device implements a web browser or other suitable image display software to display the data received from the server using a display device 108 of the client computing device.
The call prediction application 116 includes instructions that, when executed by the processor 102 of the system 100, cause the system 100 to perform the processes and operations described herein. The call prediction application 116 may be programmed to perform a recursive estimation to estimate inferences for calling behaviors. These inferences may include time between calls, calling frequencies, and/or calling durations. For instance, contacts 112 may be ranked higher if their average contact frequency is higher, their call duration is higher, or their time between calls is lower. Additionally, for contacts 112 having the same contact frequencies, contacts 112 that were contacted less recently may be ranked higher. The learning rate may be adjusted to capture long-term vs short-term behaviors. This may allow for the reduction of issues with dealing with the purging of old or otherwise outdated data. The call prediction application 116 may be further programmed to incorporate other aspects from the contextual data 122, if needed, to use additional parameters in the prediction.
With respect to frequency estimation for the time between calls inference, the call prediction application 116 may be programmed to determine the contact frequency by counting occurrences of calls in the call data 114 with respect to each of the contacts 112. In some examples, time information for the calls in the call data 114 may additionally be considered with a forgetting factor, such that calls that are less recent in time are counted less than calls that are more recent in time. Additionally, contextual data 122 for each of the calls may be embedded into the frequency data to provide meaningful information to use in the prediction process.
An example equation for the learning of mean time between calls (MTBC) for a contact 112 is shown in Equation (1) as follows:
βi(t+1)=α*βi(t)+(1−α)*TBCi(t) (1)
where:
αis a learning rate (e.g., 0.9);
i is a contact;
t is a unit of time;
TBC is a last observed value of time between calls;
βi(t) is a mean time between calls parameter at time t; and
βi(t+1) is a mean time between calls parameter at a next time t+1.
A numerical example is shown in Equation (2) as follows:
40.5=0.9*40+(1−0.9)*45 (2)
The mean time between calls may be measured in hours, days, minutes, or other units of time as βi for contact i. Notably, β=1/λ relates to the frequency (e.g., the rate of occurrences over a fixed period of time). The probability to call contact i at any given time may be given as follows in Equation (3):
1−e−x
where:
i is a contact;
X is the time since the last call to the contact i; and
β is a mean time between calls parameter for the contact i.
In a first scenario, let time be one day since either A or B has been called. At the time, XA=XB=1, according to Equation (3) the probability of calling A is 1−e−2*1=0.8647, while the probability of calling B is 1−e−1*1=0.6321. If the user continues to call neither A nor B, both XA and XB will slowly creep up, as will the probabilities. In a second scenario, let time be one day but a call to A was just completed. Accordingly, given that a call to A was just made, XA˜=0, meaning that the probability of calling A˜=0. As no call was made to B, the probability of calling B continues to increase. In general, to determine the next Xi, for a contact 112, call data 114 related to last calls may be buffered, or a filtered version of Xi may be learned.
Other recursive inferences apart from time between calls may additionally or alternately be used. Indeed, many other simple inferences such as relative call frequency and call duration may be learned and updated with formulas similar to equation (1). For instance, the following equation may be used for determining inferences for relative frequency of calls:
RF
i(t+1)newα*RFi(t)old+(1−α)*Flagi,T/F (4)
In equation (4), calls to different contacts 112 are treated as mutually-exclusive events. Thus, the Flagi,T/F represents binary values (e.g., 0 or 1, true or false, etc.). All contact 112 relative frequency (RF) values may accordingly be updated responsive to a new call being placed. In another example, the following equation may be used for determining inferences with respect to call duration:
CD
i(t+1)new=α*CDi(t)old+(1−α)*Cdi(t) (5)
In equation (5), calls to different contacts 112 are treated separately. Accordingly, only one call duration (CD) for one contact 112 may be updated responsive to a new call being placed.
Regarding recursion-based estimates, updated may be performed with the most recent relevant call data. Moreover, purging of old information is built-in as the estimates reflects some knowledge incrementally captured from most recent history (without buffering the history). Notably, purely count-based estimates may have issues with the purging old info unless a large buffer is in place.
Additional factors may be considered beyond call frequency or mean time between calls when determining likelihood of a next call. In an example, contextual data 122 may be additionally considered for the calls, such as whether the calls were made in or out of the vehicle context (e.g., was a vehicle paired to the phone), location of the call, route taken by a vehicle during the call, traffic along the route during the call, etc. There are various mechanisms for bringing additional contexts into the equation. In an example, certain information may be included directly. In another example, information may be included indirectly (e.g., through an encoding of the information to a simplified representation).
β(i, DOW-TOD, Location) (6)
where
i indicates a contact;
DOW-TOD indicates a Day of Week/Time of Day partition; and
Location indicates a call location.
In some examples, the call location may be a location of the vehicle when the call enters a vehicle for calls that are started before entry into the vehicle context. Additionally, one or an aggregated (weight averaged) β may be used to address uncertainty during the prediction phase. Some example ways of information aggregation include using information associated with closeness in terms of contexts (i.e., DOW-TOD and location) or historical values of utilizations.
Another potential contextual element to include may be the learning of user acceptance. To do so, an additional parameter may be established at the inference level and/or at the encoded information level of the model 402. The learning mechanism may be similar to that of equations (1), (4), or (5), where acceptance is defined as using the suggested contact 112 within a predefined time period and rejection is defined as not using the suggested contact 112 within the predefined time period. The use of the contact 112 may be controlled from individual inferences. Additionally, whether or not to prompt the user for display of the predicted call list 124 may also be controlled according to the current context.
At operation 502, the processor 102 receives call data 114. The call data 114 may include information such as contact 112 information, call initialization day/time, call duration, and whether the call was incoming or outgoing. The call data 114 may further include contextual data 122 such as key-on day/time, location information, MAC address or other identifier of the network device 120, pairing status of the network device 120 to a vehicle or other device, key fob information for a vehicle if the call took place in a vehicle, vehicle signals if the call took place in a vehicle (e.g., vehicle gear, speed, door status, seatbelt status, etc.), road class or road type, and so on.
The processor 102 cleans the call data 114 at 504. In an example, the processor 102 may filter the calls in the call data 114 according to duration, whether the call successfully connected the parties, whether the call was incoming or outgoing, or other relevant criteria. For instance, only successfully-completed calls may be used, and call attempts may be filtered out. Or, calls of below a minimum duration may be excluded. It should be noted that these are merely examples, and various call data 114 cleansing techniques may be used.
At 506, the processor 102 processes the call data 114 into a context-encoded model 402. In an example, the processor 102 creates a new identifier for a contact 112 specified by a call in the call data 114 if the contact 112 is not already referenced in a database of recent calls. The processor 102 may further match the DOW/TOD to an existing DOW/TOD cluster/grid of the context-encoded model 402, or may create a new cluster/grid if one does not yet exist. The processor 102 may also match the location of the call to existing location cluster/grid and may create a new cluster if needed. The processor 102 may also optionally consolidate records of multiple calls to the same contact 112 into a single cluster. Accordingly, the processor 102 updates the received and filtered call data 114 into the context-encoded model 402.
At operation 508, the processor 102 creates or updates learned parameters for the context-encoded model 402. In an example, the processor 102 may utilize the information of the context-encoded model 402 to predict next times to call each contact 112 in the context-encoded model 402, such as using the equation (4) and techniques described above. The processor 102 may also buffer the last made call to contact 112i. After operation 508, the process 500 ends.
It should be noted that various values may be chosen for the duration of the time partition. As some possibilities, the duration may be set from a minimum of fifteen minutes to a maximum of one hour or four hours as another example. As another parameter that may vary, a radius of a cluster location may be defined as a number of miles, such as from a minimum of ¼ mile to a maximum of one mile or perhaps five miles. Or, distance covered by the call participant may be a factor. Using a call duration of four minutes, at 45 miles per hour the distance covered during the call may be three miles, while at 70 miles per hour the distance covered during the call may be 4.66 miles.
Over time rarely used context-encoded models 402 (or portions of the model 402) may be deleted. For instance, a contact 112 that is no longer called for a predefined time period may be removed entirely from the model 402. Removal criteria may include, as some possibilities, mean time between calls exceeding a predefined value, long call duration since the last call, or singular records with no second call. User verification may be used to aid in the pruning of the models 402. As another possibility, similar models 402 may be consolidated, e.g., for contacts 112 that are called with similar frequency and context to one another.
At operation 702, the processor 102 collects contextual data 122. In an example, the processor 102 may determine the current DOW/TOD (e.g., using a clock or other source of time information). In another example, the processor 102 may determine the current location of the processor 102 (e.g., using GNSS or another source of location information).
At 704, the processor 102 identifies relevant clusters of the model 402 according to the collected contextual data 122. In an example, the processor 102 uses the current DOW/TOD to determine the closest DOW/TOD cluster(s). In another example, the processor 102 uses the current location information to determine the closest location cluster(s).
The processor 102 identifies weights for the relevant clusters of the model 402 at 706. In an example, the processor 102 may utilize a determined closeness of current day/time to determine weighing factors for relevant day/time clusters, which may be referred to as Wdow/tod, and may use closeness of current location to determine weighing factors for relevant location clusters, which may be referred to as Wlocation.
Referring back to
At 710, the processor 102 determines probabilities of next calling each of the contacts 112. In an example, the processor 102 calculates Xi=Tcurrent−Ti and converts the result into an appropriate unit (e.g., hours). The processor 102 also calculates Pi for each relevant contact 112, e.g., according to equation (3). This information may be used to generate the predicted call list 124 as a listing of the contacts 112 in decreasing order of probability. For instance, the maximum Pi may be identified as the most likely next contact 112 to call. After operation 710, the process 700 ends.
Thus, the user's calling behavior may be learned and used to predict and rank the next contacts 112 to be called based on the current context. Additional contextual data 122, such as day, time, and location, may also be used, such that the current context of the user can act as a predictor of which contacts 112 are more likely to be called.
Regarding the context-encoded model 402, additional contextual data 122 may be utilized in the determination of the next contacts 112 to be called. For instance, additional information may be encoded into the context-encoded model 402. This may include, as some non-limiting examples, day and time, start location of the call, end location of the call, route identifier of a route being traversed by a vehicle including the caller, whether the call was made inside or outside a vehicle, whether the calling device is connected to the vehicle, and a secondary time of how far in time from initiation of a route in the vehicle the call was initiated. In the alterative, no information encoding may also be used as a possibility.
With the many available variations, individual or personalized models may be created that provide for an optimal model configuration that balances performance, robustness, and simplicity in design of the model. Regarding incremental model refinement, statistical parameters may be updated through recursions, and individual inferences' performance may be tracked over time as well as tracking of performance between overall vs situational variants. According to these individual inferences or using parallel inference aggregations, adjustments to weights of influence between different inferences may be performed, as well as adjustments to weights of influence of overall vs. situational models. Batch evaluation-based refinement may also be performed, such as storage of a hashed golden dataset, creation of additional inferences based on additional inputs or newly acquired knowledge, or different configurations of serial-type aggregations of the multiple inferences.
With respect to the additional information, the process 500 for learning values for the context-encoded model 402 may be adjusted. For instance, the learned parameters may be created or updated using the following equations in place of equation (4):
βBC, i, DOW-TOD, SL, EL, In/out-of-car, Route/Location (7)
βKO, i, DOW-TOD, SL, EL, In/out-of-car, Route/Location
Additionally, the process 700 for predicting the next contacts 112 may also be adjusted. For instance, at operation 702 the processor 102 may additionally determine a further time input as Tcurrent=Current time+Δt, where the Δt is an amount of time from starting of the vehicle (or the user entering the vehicle in another example). Additionally, at operation 708, the processor 102 may estimate βBC and also βKO for each relevant contact 112. At operation 710, the processor 102 may calculate PBC, i and PKO, i for each relevant contact 112, e.g., according to equations (5), where PBC,i and PKO,I may be scaled by a max of Wdow/tod and Wlocation. The maximum of PBC, i using PKO, i a tiebreaker may then be used to identify the likely next contact 112 to call.
Even further enhancements may also be performed to the described systems and methods. For instance, with respect to pattern extraction, additional aspects may be considered such as time between calls (overall vs. conditional); relative frequencies of calls (overall vs. conditional); other attributes such as call duration (overall vs. conditional); work vs off-work patterns; and in-vehicle vs generic, normal, or out-of-vehicle patterns.
Events and reminders may also be considered in the determination of suggested contacts 112 to call. For instance, recurrent events of significance related to calling may be included, such as reminding the user to call the mom contact 112 on Mother's Day, or to remind the user of call backs (e.g., extracted from voice mail message content, such as a statement in a voicemail requesting the user to call the person back when off work or during a given time).
Vehicle system state inference and vehicle health information may also be considered. For instance, a sudden system fault such as a flat tire may override other call recommendations to instead cause the system to provide a contact 112 for a nearest shop, dealership, or road/emergency assistant. As another example, a recall notice or significant diagnostic trouble codes (DTC) may cause an override for the system to recommend a contact 112 for a local dealership.
Still other enhancements are possible. For instance, the system may utilize a prediction mechanism to adaptively adjust weights for the various inferences from different patterns observed in the call data 114. Or, the system may elect to filtering out contact 112 numbers if they are within proximity of one another (e.g., to avoid overcounting multiple attempts to reach a single individual).
It should also be noted that the described systems and method may include data and processors stored in the cloud, where the call data 114 and determination of the next contacts 112 may be synchronized between processing devices determining the next contacts 112 and calling devices that call the likely next contacts 112.
While in many examples, the system refers to calls, it should be noted that the described systems and methods may be applicable to other forms of communication as well, such as text messages, messages on social media, and so on. In one example, the algorithm may determine use phone and text transmissions from the same number interchangeably. The system may additionally, in the case of prediction of a context to text, may offer to send a text message to a contact 112 indicated as being the most likely contact 112 to text. For instance, a user interface may provide options to transmit a text to the likely contact 112.
It should also be noted that in some cases a contact 112 may have multiple different phone numbers or other identifiers. For instance, a contact 112 may have a home phone, office phone, mobile phone, and multiple messaging applications. In such an example, the algorithm may treat these addresses as being the same contact 112. Or as another possibility, the algorithm may process a vector of these addresses for a particular contact 112 to determine an appropriate address to use to reach the context 112, e.g., based on day, time, or other context. For instance, a weight may be calculated and applied to the vector as a function of communication activity of an element in the vector.
As another possibility, a prediction algorithm may use the contact information of the active radio station to generate a predicted probability of a desired contact number. For instance, the prediction algorithm may use a plurality of elements of contextual information, such as a radio station being listened to in the vehicle, state information of the vehicle, current time, current location, selected contacts. Additionally, content of text messages may be used to predict a probability of desired text to populate a proposed text message to a probable contact 112 to message next.
The processes, methods, or algorithms disclosed herein can be deliverable to/implemented by a processing device, controller, or computer, which can include any existing programmable electronic control unit or dedicated electronic control unit. Similarly, the processes, methods, or algorithms can be stored as data and instructions executable by a controller or computer in many forms including, but not limited to, information permanently stored on non-writable storage media such as ROM devices and information alterably stored on writeable storage media such as floppy disks, magnetic tapes, CDs, RAM devices, and other magnetic and optical media. The processes, methods, or algorithms can also be implemented in a software executable object. Alternatively, the processes, methods, or algorithms can be embodied in whole or in part using suitable hardware components, such as Application Specific Integrated Circuits (ASICs), Field-Programmable Gate Arrays (FPGAs), state machines, controllers or other hardware components or devices, or a combination of hardware, software and firmware components.
While exemplary embodiments are described above, it is not intended that these embodiments describe all possible forms encompassed by the claims. The words used in the specification are words of description rather than limitation, and it is understood that various changes can be made without departing from the spirit and scope of the disclosure. As previously described, the features of various embodiments can be combined to form further embodiments of the invention that may not be explicitly described or illustrated. While various embodiments could have been described as providing advantages or being preferred over other embodiments or prior art implementations with respect to one or more desired characteristics, those of ordinary skill in the art recognize that one or more features or characteristics can be compromised to achieve desired overall system attributes, which depend on the specific application and implementation. These attributes can include, but are not limited to cost, strength, durability, life cycle cost, marketability, appearance, packaging, size, serviceability, weight, manufacturability, ease of assembly, etc. As such, to the extent any embodiments are described as less desirable than other embodiments or prior art implementations with respect to one or more characteristics, these embodiments are not outside the scope of the disclosure and can be desirable for particular applications.