Predicting the future state of a mobile device user

In one embodiment, a method includes accessing data associated with the mobile-computing-device usage of a user; accessing data associated with past user-states of the user, where the past user-states represent previous activities or actions associated with the user's mobile-computing-device usage; predicting a future user-state of the user based, at least in part, on the accessed data; and adapting the operation of the mobile computing device of the user at the future time based on the predicted future user-state.

TECHNICAL FIELD

This disclosure generally relates to mobile devices and mobile device users.

BACKGROUND

A mobile device—such as a smartphone, tablet computer, or laptop computer—may include functionality for determining its location, direction, or orientation, such as a Global Positioning System (GPS) receiver, compass, or gyroscope. Such a device may also include functionality for wireless communication, such as BLUETOOTH communication, near-field communication (NFC), or infrared (IR) communication or communication with a wireless local area networks (WLANs) or cellular-telephone network. Such a device may also include one or more cameras, scanners, touchscreens, microphones, or speakers. Mobile devices may also execute software applications, such as games, web browsers, or social-networking applications. With social-networking applications, users may connect, communicate, and share information with other users in their social networks.

SUMMARY OF PARTICULAR EMBODIMENTS

Particular embodiments enable a mobile device to predict a future state of a user of that mobile device. In practice, a mobile device logs information such as the local time reported by the device, the location of the device, or the network connectivity of the device and cross-references that information against historical data to predict a future state of the user of the device. In one embodiment, the mobile device user is a user of a social network and the historical data is drawn from that user's social graph data. Based on a predicted future user state, the mobile device alters its behavior to better meet the future needs or requirements of the user.

In some embodiments, the predicted future user state of the mobile device user can be that the user is commuting to work, that the user is at home, that the user is at work, that the user is having dinner with friends, that the users is in a public social setting, that the user is in a foreign country, or that the user will be connected via a particular telecommunications network. The mobile device uses this predicted state to meet the needs of the user. The mobile device may cache new messages until the user has arrived at her predicted destination. Alternatively, the mobile device may automatically launch a software application related to the restaurant the user is dining at. In particular embodiments, the mobile device may request lower bandwidth services while it is predicted to be connected to a particular telecommunications network. This allows the mobile device to automatically tailor operation to the user's activities.

DESCRIPTION OF EXAMPLE EMBODIMENTS

FIG. 1illustrates an example network environment100associated with a social-networking system. Network environment100includes a client system130, a social-networking system160, and a third-party system170connected to each other by a network110. AlthoughFIG. 1illustrates a particular arrangement of client system130, social-networking system160, third-party system170, and network110, this disclosure contemplates any suitable arrangement of client system130, social-networking system160, third-party system170, and network110. As an example and not by way of limitation, two or more of client system130, social-networking system160, and third-party system170may be connected to each other directly, bypassing network110. As another example, two or more of client system130, social-networking system160, and third-party system170may be physically or logically co-located with each other in whole or in part. Moreover, althoughFIG. 1illustrates a particular number of client systems130, social-networking systems160, third-party systems170, and networks110, this disclosure contemplates any suitable number of client systems130, social-networking systems160, third-party systems170, and networks110. As an example and not by way of limitation, network environment100may include multiple client system130, social-networking systems160, third-party systems170, and networks110.

In particular embodiments, client system130may be an electronic device including hardware, software, or embedded logic components or a combination of two or more such components and capable of carrying out the appropriate functionalities implemented or supported by client system130. As an example and not by way of limitation, a client system130may include a computer system such as a desktop computer, notebook or laptop computer, netbook, a tablet computer, e-book reader, GPS device, camera, personal digital assistant (PDA), handheld electronic device, cellular telephone, smartphone, other suitable electronic device, or any suitable combination thereof. This disclosure contemplates any suitable client systems130. A client system130may enable a network user at client system130to access network110. A client system130may enable its user to communicate with other users at other client systems130.

In particular embodiments, social-networking system160may be capable of linking a variety of entities. As an example and not by way of limitation, social-networking system160may enable users to interact with each other as well as receive content from third-party systems170or other entities, or to allow users to interact with these entities through an application programming interfaces (API) or other communication channels.

A geo-social-networking system is a social-networking system in which geographic services and capabilities are used to enable additional social interactions. User-submitted location data or geo-location techniques (e.g., mobile phone position logging) can allow a geo-social network to connect and coordinate users with local people or events that match their interests. For example, users can check-in to a place using a mobile client application by providing a name of a place (or selecting a place from a pre-established list of places). The geo-social-networking system, among other things, can record information about the user's presence at the place and possibly provide this information to other users of the geo-social-networking system.

A social-networking system160may maintain a data store164of information relating to geographic locations or places. Places may correspond to various physical locations, such as restaurants, bars, businesses, train stations, and airports. A social-networking system160may allow users to access information regarding each place using a client application (e.g., a web browser132) hosted by a client system130, such as a mobile device. In addition to user profile and place information, the social-networking system160may log or maintain other information about the user. For example, the social-networking system may support geo-social-networking system functionality including one or more location-based services that record the user's location. For example, users may access the geo-social-networking system using a special-purpose client application hosted by a client system130. The client system130may automatically access GPS, cellular triangulation, or other geo-location functions supported by the client system130and report the user's current location to the geo-social-networking system. A check-in to a given place may occur when a user is physically located at a place and, using a client system130, access the geo-social-networking system to register the user's presence at the place. A user may select a place from a list of existing places near to the user's current location or create a new place. The user may also identify one or more other users in connection with a check-in (such as friends of a user) and associate them with the check-in as well. For example, a record of the user's check-in activity may be stored in a data store164.

Still further, a special purpose client application hosted on a mobile device of a user may be configured to continuously capture location data of the mobile device and send the location data to the social-networking system. In this manner, the social-networking system may log the user's location.

In particular embodiments, a data store164associated with social-networking system160may store an information base of places, where each place includes a name, a geographic location and meta information (such as the user that initially created the place, check-in activity data, and the like). For example, a geographic location of an Internet connected computer or computing device can be identified by the assigned Internet Protocol (IP) address. For example, a geographic location of a cell phone equipped with cellular, Wi-Fi and/or GPS capabilities can be identified by cell tower triangulation, Wi-Fi positioning, and/or GPS positioning. In particular embodiments, the data store164may store a geographic location and additional information of a plurality of places. For example, a place can be a local business, a point of interest (e.g., Union Square in San Francisco, Calif.), a college, a city, or a national park. For example, a geographic location of a place (e.g., a local coffee shop) can be an address, a set of geographic coordinates (latitude and longitude), or a reference to another place (e.g., “the coffee shop next to the train station”). For example, a geographic location of a place with a large area (e.g., Yosemite National Park) can be a shape (e.g., a circle, or a polygon) approximating the boundary of the place and/or a centroid of the shape. For example, additional information of a place can be business hours or photographs of the place. In particular embodiments, the social-networking system160may calculate one or more routes of a user based on the user's user profile information, check-in activities, and/or geographic location data reported by a client application (see above) and store the one or more routes. For example, the social-networking system can calculate a “commute route” of a user between the user's home and work by using a mapping service application, or by using geographic location data points from the user's GPS-equipped mobile phone while the user is driving to work.

In particular embodiments, a mobile device (e.g., client system130) may include hardware, firmware, and software.FIG. 2illustrates an example mobile-device client system130. In particular embodiments, client system130may be a smart phone (e.g., iPhone or Blackberry), which is a mobile telephone that offers more advanced computing ability and connectivity than a traditional mobile phone. It may be considered as a handheld computer integrated with a mobile phone. In particular embodiments, client system130may be a netbook or tablet computer (e.g., iPad). In particular embodiments, client system130may be connected to a network through a wireless connection.

In particular embodiments, client system130may include hardware210and software220. In particular embodiments, hardware210may include any number of hardware components such as, for example and without limitation, processor211, memory212, storage213, transceiver214, input/output device215(e.g., display, touch screen, keypad, microphone, speaker, etc.), camera216, global positioning system (GPS) sensor217, sensors hub218, notification control switch219, radio frequency identification (RFID) reader241, radio frequency (RF) sensor242, and so on. This disclosure contemplates any suitable hardware components. In particular embodiments, some or all of a user's user data may be stored in storage213.

In particular embodiments, software220may include an operating system221, which may include a kernel231and/or any number of device drivers232corresponding to some of the hardware components available on client system130. Operating system221may be selected for client system130based on the actual type of device client system130is. For example, if client system130is a mobile device (e.g., a smart phone), then operating system221may be a mobile operating system such as, for example and without limitation, Microsoft's Windows Mobile, Google's Android, Nokia's Symbian, Apple's iOS, and Samsung's Bada.

In particular embodiments, one or more software applications223may be executed on client system130. In particular embodiments, they may be native applications installed and residing on client system130. For example, one application (e.g., Google Maps) may enable a device user to view a map, search for addresses and businesses, and get directions; a second application may enable the device user to read, send, and receive emails; a third application (e.g., a web browser) may enable the device user to browse and search the Internet; a fourth application may enable the device user to take photos or record videos using camera216; a fifth application may allow the device user to receive and initiate VoIP and/or cellular network calls, and so on. In particular embodiments, there may be a software application (e.g., notification control241) that enables the device user to manage the notifications pushed to client system130. Notification control241is described in more detail below. Each software application220may have a user interface and may implement one or more specific functionalities. Each software application220may include one or more software modules implementing the individual functionalities. The executable code of software applications220, including notification control241, may be stored in a computer-readable and non-transitory medium (e.g., storage213or memory212) on mobile device130.

FIG. 3illustrates an example method for predicting the future user state of a user of a mobile device. The method may start at step310, where the system accesses data associated with a mobile-computing-device (e.g., client system130) usage by a user. In particular embodiments, this data may be stored by the social-networking system160. In particular embodiments, this data may be a unique identifier of the client system130or a unique identifier of an application on the client system130. In particular embodiments, this data may be the Internet Protocol (IP) address of the client system130. In particular embodiments, this data may be the local time reported by the client system130. In particular embodiments this data may be the current location or a vector of movement of the client system130. The location and the vector of movement can be determined via GPS, assisted GPS, cellular triangulation, or any other suitable manner of obtaining the location or vector of movement.

At step320, the system accesses data associated with the past user states of the user. The past user state may be a temporal, spatial, modal, or social accessibility of the user. In particular embodiments, this data may be stored by the social-networking system160. In particular embodiments, a past user state may be commuting to and from the user's place of employment. This state would have temporal, spatial, modal, and social aspects relevant to the user. In particular embodiments, the past user state may be attending an event stored by the social-networking system160. In particular embodiments, the past user state may be traveling in a geographic area connected to information stored by the social-networking system160. For instance, the user may have posted a status update indicating that the user was on vacation at a time proximate to the user's mobile computing device indicating a location in Hawaii. In particular embodiments, the past user state may be determined from data associated with one of the user's contacts stored by the social-networking system160. For instance, the user's contact may have previously saved check-in activity data indicating the user and a location. In particular embodiments, the past user state may be connected to the client system130currently in use by the user. For instance, the past user state may be that the user was in transit at a time proximate to a received unique client-system identifier indicating that the client system130is an in-car navigation unit. As another example, the past user state may be that the user was “working” when the client system130was a specific laptop, or that the user was “busy” when the client system130was a mobile gaming device.

At step330, the system predicts a future user state and future client system130usage by the user at a future time. In particular embodiments the social-networking system160may use a number of geo-social factors. For example, the social-networking system160may have developed a dataset of connected user states and client system usage data points by cross-referencing stored data. The social-networking system160may also have access to current time or location data for the client system130. Additionally, the social-networking system160may also have stored data concerning future events and calendar appointments of the user. The social-networking system160may use one or more of the data accessed in steps310and320to algorithmically predict future user states.

In particular embodiments, the system may use regression analysis on some or all of the data accessed in steps310or320to predict the future user state. In particular embodiments, the system may use a linear regression of multiple independent variables to assign probabilities to a number of possible states. An exemplar linear regression may be yi=β1Xi1+β2Xi2+ . . . +βpXipwherein yirepresents a possible future state chosen from a set of past user states accessed in step320, xin, represents an independent variable, βinrepresents a weighting factor to be assigned to each variable, and where n spans the values 1 to p. In a particular embodiment, the independent variables may be any of the types of data discussed above in connection with step310.

In particular embodiments, the system may use a decision-tree analysis on some or all of the data accessed in steps310or320to predict the future user state. The system may use historical data to develop decision nodes and chance nodes of the decision tree to predict future user states. For example, based on historical data, a certain combination of inputs may predict a user state. If the future local time corresponds with past local times associated with the past user state of “commuting”, the current reported client system130is an in-car navigation unit, and the current reported location of the client system130is on the known commuting path for the user, the system may work through a decision tree to determine that the future user state of the user is commuting to work for a given time period. In particular embodiments, the decision-tree analysis may be desirable in a system with a small number of potential future user states. In particular embodiments the decision-tree analysis may be combined with other prediction techniques.

In particular embodiments, the system may use a neural-network analysis on some or all of the data accessed in steps310or320to predict the future user state. For example, the system may implement a supervised learning neural network to find a function mapping input variables drawn from the data accessed in step310to user-states drawn from the data accessed in step320. The neural-networking analysis may try to minimize the mean-squared error between the network's predicted user state and known past user states. By minimizing this error, the network is able to develop an approximated function for predicting future user states.

In particular embodiments, the system may use an expert-system analysis on some or all of the data accessed in steps310or320to predict the future user state. The system may build a knowledge base of the expert system based on historic data. For example, the system may develop a rule that “IF the client system130is Laptop001 THEN user is at work”. As another example, the system may develop a rule that “IF the current location is Hawaii THEN the user is on vacation”. As another example, the system may develop a rule that “IF the current local time is between 7 PM and 6 AM THEN the user is at home”. By developing said knowledge base, the system may then run input variables through the expert-system inference engine either in batches or serially to predict future user states.

This disclosure contemplates any suitable manner of predicting a future user state and utilizing any combination of factors accessed in steps310and320or weighting of factors in the calculation of the predicted future user state.

At step340, the system adapts the operation of the client system130of the user at a future time in response to the predicted future user state, at which point the method may end. In particular embodiments, the predicted user state may be that the user will be travelling in a geographic area. The system may adapt by pushing data relevant to the geographic area to the client system130. For example, if the predicted user state is that the user will be vacationing in Hawaii, the system can push relevant data (e.g. weather information, travel advisories, restaurant reviews, and taxi cab advertisements) to the client system130. Some or all of the data can be displayed as notifications to the user. Alternatively, some or all of the data can be cached on the client system130and used to pre-populate suggested searches and suggested results, or reduce future data usage by the client system130.

In particular embodiments, the system for predicting a future state of a mobile device user as illustrated inFIG. 3may be associated with a social-networking system160. In this case, the social-networking system may implement the method illustrated inFIG. 3(e.g., as computer software) and use the method to predict the future user state of users who are also members of the social-networking system160.

It may be desirable for a social-networking application on the client system130to change its operation in response to the predicted user's state. In particular embodiments, the system adapts the operation of the client system130by modifying the logical operation of a social-networking application on the client system130. For example, if the predicted future user state is that the user is unavailable (e.g. on an airline flight, working, watching a film) then the social-networking application on the user's client system130can be set to queue all notifications to the user until the predicted future user state changes. As further example, if the predicted future user state is that the user will be out at a public social setting (e.g. attending a birthday party), the social networking application on the user's client system130can be set to launch a camera application when accessed.

In particular embodiments, the system adapts the operation of the client system130by altering the characteristics of the data requested by the client system130and sent by the social-networking system160. In particular embodiments, it may be desirable for the social-networking system160to provide lower bandwidth services to the client system130when that device is connected via certain types of links150. For example, some telecommunications providers offer data download limits and impose fees for exceeding those limits. As another example, some telecommunications contracts charge increased fees for data transfer when travelling in a foreign country. If the predicted future user state indicates that the client system130will be connected via a link150associated with a data limit or increased fees, the social-networking system160may transmit lower bandwidth content. In particular embodiments, it may be desirable to increase an interval at which the social-networking system160polls the client system130to determine the device's location. For example, if the predicted future user state is that the user will be at home, the social-networking system160may adapt by increasing the polling interval to once every hour. By increasing the polling interval, it may be possible for the social-networking system160to increase the battery life of the client system130.

Particular embodiments may repeat the steps of the method ofFIG. 3, where appropriate. Moreover, although this disclosure describes and illustrates particular steps of the method ofFIG. 3as occurring in a particular order, this disclosure contemplates any suitable steps of the method ofFIG. 3occurring in any suitable order. Furthermore, although this disclosure describes and illustrates particular components, devices, or systems carrying out particular steps of the method ofFIG. 3, this disclosure contemplates any suitable combination of any suitable components, devices, or systems carrying out any suitable steps of the method ofFIG. 3.

FIG. 4is a block diagram of an example function for predicting the future user state. To predict a future user state415, weights405are applied to predictor functions410and then combined to obtain a predicted future user state415. AlthoughFIG. 4shows three predictor functions410, any number of predictor functions can be employed in other embodiments of the invention. Additionally, in the embodiment ofFIG. 4, the weighted predictor functions410are combined linearly. In different embodiments, other forms of combination may be used, including harmonic means, mean squares, and geometric means. Additionally, multiple predicted future user states415with varying weights405may be computed before adapting the operation of the client system130as described in method step340.

The system may comprise one or more predictor modules (e.g., an application) that are responsible for computing a set predictor function, which predicts a future user state. As discussed above, each predictor function may be any suitable method for predicting a future user state. In some embodiments, the predictor function may be generated using a machine learned algorithm that is trained using a user's historical activity associated with a specific user state. Machine learning is a scientific discipline that is concerned with the design and development of algorithms that allow computers to learn based on data. The computational analysis of machine learning algorithms and their performance is a branch of theoretical computer science known as computational learning theory. The desired goal is to improve the algorithms through experience (e.g., by applying the data to the algorithms in order to “train” the algorithms). The data are thus often referred to as “training data”. Each predictor module thus provides a predictor function for each of a set of possible future user states, where a predictor function may take as an input some or all of the data accessed in method step310and then outputs a measure of the likelihood that the user will have a predicted future user state.

In some embodiments, one or more of the predictor functions may use a decay factor in which the strength of the signal from a user's historical activity decays with time. Moreover, different predictor functions may decay the historical activity at different rates. For example, some types of predicted future user state, like commuting to work, indicate a more persistent connection than other types of activity that indicate a more ephemeral connection, like attending a non-recurring event (e.g. a wedding). Therefore, the predictor functions may decay the effect of historical activity based on an understanding about how that past user state may become less relevant over the passage of time. Various decay mechanisms may be used for this purpose. For example, a predictor function may use a mathematical function, such as an exponential decay, to decay the statistics about a predicted user state. In another embodiment, the decay is implemented by selecting only those statistics about a user state that occurred within a specific window of time, such as 24 hours or 30 days.

FIG. 5illustrates an example computer system500. In particular embodiments, one or more computer systems500perform one or more steps of one or more methods described or illustrated herein. In particular embodiments, one or more computer systems500provide functionality described or illustrated herein. In particular embodiments, software running on one or more computer systems500performs one or more steps of one or more methods described or illustrated herein or provides functionality described or illustrated herein. Particular embodiments include one or more portions of one or more computer systems500. Herein, reference to a computer system may encompass a computing device, where appropriate. Moreover, reference to a computer system may encompass one or more computer systems, where appropriate.

In particular embodiments, computer system500includes a processor502, memory504, storage506, an input/output (I/O) interface508, a communication interface510, and a bus512. Although this disclosure describes and illustrates a particular computer system having a particular number of particular components in a particular arrangement, this disclosure contemplates any suitable computer system having any suitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor502includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor502may retrieve (or fetch) the instructions from an internal register, an internal cache, memory504, or storage506; decode and execute them; and then write one or more results to an internal register, an internal cache, memory504, or storage506. In particular embodiments, processor502may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor502including any suitable number of any suitable internal caches, where appropriate. As an example and not by way of limitation, processor502may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory504or storage506, and the instruction caches may speed up retrieval of those instructions by processor502. Data in the data caches may be copies of data in memory504or storage506for instructions executing at processor502to operate on; the results of previous instructions executed at processor502for access by subsequent instructions executing at processor502or for writing to memory504or storage506; or other suitable data. The data caches may speed up read or write operations by processor502. The TLBs may speed up virtual-address translation for processor502. In particular embodiments, processor502may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor502including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor502may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors502. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.

In particular embodiments, memory504includes main memory for storing instructions for processor502to execute or data for processor502to operate on. As an example and not by way of limitation, computer system500may load instructions from storage506or another source (such as, for example, another computer system500) to memory504. Processor502may then load the instructions from memory504to an internal register or internal cache. To execute the instructions, processor502may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor502may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor502may then write one or more of those results to memory504. In particular embodiments, processor502executes only instructions in one or more internal registers or internal caches or in memory504(as opposed to storage506or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory504(as opposed to storage506or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor502to memory504. Bus512may include one or more memory buses, as described below. In particular embodiments, one or more memory management units (MMUs) reside between processor502and memory504and facilitate accesses to memory504requested by processor502. In particular embodiments, memory504includes random access memory (RAM). This RAM may be volatile memory, where appropriate Where appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory504may include one or more memories504, where appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory.

In particular embodiments, storage506includes mass storage for data or instructions. As an example and not by way of limitation, storage506may include a hard disk drive (HDD), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or a combination of two or more of these. Storage506may include removable or non-removable (or fixed) media, where appropriate. Storage506may be internal or external to computer system500, where appropriate. In particular embodiments, storage506is non-volatile, solid-state memory. In particular embodiments, storage506includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these. This disclosure contemplates mass storage506taking any suitable physical form. Storage506may include one or more storage control units facilitating communication between processor502and storage506, where appropriate. Where appropriate, storage506may include one or more storages506. Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage.