Quantifying mobility of mobile devices via a privacy preserving mobility metric

Embodiments of the invention generate metrics quantifying the mobility of a mobile device without persisting information related to the device's specific location at any given time. Specifically, at multiple intervals, a value of a mobility metric is computed based on the distance between the current location of the mobile device and a previously identified origin location of the mobile device. The values of the mobility metric computed over a period of time quantify the overall mobility of the mobile device. The mobility metric does not provide any information regarding the specific location of the mobile device at any given time.

BACKGROUND

1. Technical Field

This invention pertains in general to analyzing behavior of entities, and in particular to quantifying the mobility of entities via a privacy preserving mobility metric.

2. Description of Related Art

With the advent of smart mobile devices, such as smart phones and tablets, entities operating those devices have the ability to consume content over the mobile network on the go. Being able to capture information related to the mobility of the devices and, therefore, entities operating those devices is highly desirable as it allows service providers and advertisers to tailor content presented to those entities according to their mobility.

Typical solutions for capturing mobility related information involve storing the specific locations that a mobile device has visited over a period of time. Such solutions are highly undesirable as they invade the privacy of the entities operating the mobile device as to the locations those entities visit. Consequently, a technique for quantifying the mobility of entities without invading the privacy of those entities is desired.

SUMMARY

Embodiments of the invention include a method, a non-transitory computer readable storage medium and a system for quantifying the mobility of a mobile device without transmitting the device's location. Specifically, an origin location of a mobile device is determined, and, periodically, a value of a mobility metric associated with the device is determined as the current distance from the origin. The values of the mobility metric computed over a period of time quantify the overall mobility of the mobile device. The mobility metric does not provide any information regarding the specific location of the mobile device at any given time.

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 the computer-executable instructions.

DETAILED DESCRIPTION

Embodiments of the invention generate metrics quantifying the mobility of a mobile device without persisting information related to the device's specific location at any given time. Specifically, a mobility metric indicating the distance between the current location of the mobile device and a previously identified origin location of the mobile device. The values for the mobility metric computed over a period of time quantify the overall mobility of the mobile device. The mobility metric does not provide any information regarding the specific locations of the mobile device. Therefore, the mobility of the device can be quantified while maintaining privacy as to the specific locations the entities operating the mobile device have visited.

Figure (FIG.)1is a computing environment100, in accordance with an embodiment of the invention. As shown, the computing environment100includes mobile devices102A,102B and102C and a server system112.

Each mobile device102A,102B and102C is a computing device with a processor and a memory. Each mobile device102A,102B and102C may be, for example, a mobile phone, a laptop, a tablet computer, an augmented reality (AR) device or a dedicated digital content consumption device. For convenience of explanation, only the operation of mobile device102A is described in detail below. Mobile devices102B and102C operate in substantially the same way as mobile device102A.

Mobile device102A includes the mobile application104, a mobile software development kit (SDK) and a global positioning system (GPS)110. The mobile application104performs and/or supports many different types of transactions. A transaction may be an action performed via the application, such as a purchase of an item or consumption of a content item, or an operation performed by the application itself, such as a communication with a different application. Each transaction may generate valuable information that can be collected and analyzed for different purposes.

The mobile SDK106(also referred to herein as “the SDK106”) periodically collects information from the mobile application104and transmit the information to the server system112via a network (not shown). The information may be related to transactions performed or supported by the mobile application104. In operation, the mobile application104integrates with the SDK106, permitting the SDK106to collect information from the mobile application104and the mobile device102A. In one embodiment, the SDK106collects the information in association with an identifier determined via the mobile application104. The identifier may be a unique identifier associated with the mobile application104, a group of applications that includes the mobile application104or the mobile device102A. The identifier is anonymized, such that the identifier does not reveal the identity of entities operating the mobile device102A.

The mobile SDK106also collects mobility information indicative of the overall mobility of the mobile device102A. Specifically, the motion quantifying module108periodically determines the current location of the mobile device102A and processes the current location to compute a value of a mobility metric that quantifies the mobility of the mobile device102A over a period of time. For example, at a given point in time, the value of the mobility metric may indicate the distance between the current location of the mobile device102A and an origin location for the mobile device102A. As another example, at a given point in time, the value of the mobility metric may indicate the number of days over a given time period where the mobile device102A has been further than 30 miles from the origin location.

In operation, the motion quantifying module108identifies the origin location for the mobile device102A using location information received from the GPS110. The GPS110is a global positioning system receiver in the mobile device102A. The global positioning system is a space-based satellite system that determines the location of the mobile device102A via one or more GPS satellites. The location of the mobile device102A as determined by the GPS110is typically captured as a set of longitude and latitude coordinates. In response to receiving a request from the motion quantifying module108, the GPS110determines the location of the mobile device102A and transmits the location to the motion quantifying module108. In alternate embodiments, the motion quantifying module108may determine the location of the mobile device102using any other technically feasible mechanism, such as using measurements collected from an accelerometer (not shown) in the mobile device102A.

The motion quantifying module108identifies the origin location by monitoring the locations of the mobile device102A requested from the GPS110over a period of time. The motion quantifying module108then applies known patterns to the monitored locations to identify the origin location. For example, the motion quantifying module108may analyze the monitored locations to identify the location that the mobile device102A is present at the longest, or returns to most frequently, as the origin location. As another example, the motion quantifying module108may analyze the monitored locations to identify the location that the mobile device102A is present at during certain hours of the day, e.g. nighttime hours, as the origin location.

In another embodiment, the motion quantifying module108may select an arbitrary origin location such as the location requested from the GPS110when the motion quantifying module108is first instantiated. In such an embodiment, the motion quantifying module108may refine the origin location over time according to the known patterns described above.

Once the origin location is identified, the motion quantifying module108periodically requests the current location of the mobile device102A from the GPS110. Upon receiving a current location of the mobile device102A, the motion quantifying module108computes the distance between the origin location and the current location (referred to herein as the “delta distance”). In one embodiment, the motion quantifying module108computes the delta distance using the Haversine formula. The motion quantifying module108determines the current value of the mobility metric based on the delta distance.

In one embodiment, the motion quantifying module108sets the current value of the mobility metric as the computed delta distance. In an alternative embodiment, the motion quantifying module108selects, depending on the delta distance, a value on a mobility index as the current value of the mobility metric. The index may be arranged as a series of distances, such as 0, 25, 50, 100, 500, 1,000, 5,000 miles, or a series of classifications, such as numbers representing high (100), medium (50), low mobility (0). In the case where the index is arranged as a series of distances, if the delta distance is greater than or equal to 0 miles and is less than 25 miles, then 0 is selected as the current value of the mobility metric. Similarly, if the delta distance is greater than or equal to 1000 miles and is less than 5000 miles, then 1000 is selected as the current value of the mobility metric. In the case where the index is arranged as a series of classifications, if the delta distance is greater than or equal to 0 miles and is less than 100 miles, then low mobility (0) is selected as the current value of the mobility metric. Similarly, if the delta distance is greater than or equal to 500 miles, then high mobility (100) is selected as the current value of the mobility metric.

The SDK106transmits the values of the mobility metric to the server system112via a network (not shown). In one embodiment, the mobility metrics may be transmitted in association with an identifier associated with the mobile application104, a pre-identified portion of the mobile application104, a group of applications that includes the mobile application104or a category of applications, content or transactions. An exemplary category of applications may be “expense report applications,” and exemplary category of content may be “celebrity news content,” and an exemplary category of transactions may be “request for driving directions.” In such an embodiment, the mobility metrics captured on various mobile devices on which the mobile application104is installed is associated with the same identifier. Such mobility metrics are referred to herein as cohort mobility metrics, i.e., mobility metrics associated with a cohort of entities. In an alternate embodiment, the mobility metrics may be transmitted in association with an identifier associated with the mobile device102A or one or more operators of the mobile application104. In such an embodiment, the mobility metric captured on one mobile device is associated with a different unique identifier relative to the mobility metric captured on a different mobile device. Such mobility metrics are referred to herein as device mobility metrics, i.e., mobility metrics associated with the particular device.

In a preferred embodiment, the SDK106transmits along with each value of the mobility metric a timestamp corresponding to when the mobile device102A was present at the location for which the value was computed. Modules similar to SDK106executing in mobile devices102B and102C also transmit transaction and mobility metric information associated with the mobile devices to the server system112. The server system112stores and analyzes information received from the mobile devices102A,102B and102C to develop insights into mobility patterns associated with individual mobile devices or a cohort of entities, such as the audience of all installations of the mobile application104, without having access to information specifying the geographic location of the mobile device entity at any point in time, thus preserving the privacy of entities operating the mobile device.

FIG. 2Aillustrates a path202traversed by the mobile device102A ofFIG. 1, in accordance with an embodiment of the invention. As shown, the mobile device102A is first located at origin204for the mobile device102A. The mobile device102A then traverses the path202to travel to the gas station206, the airport208and finally a hotel210in Riyadh, Saudi Arabia. The gas station206is over 5 miles but less than 25 miles away from the origin204, the airport208is over 25 miles but less than 50 miles away from the origin204and the hotel210is over 5,000 miles from the origin204.

As the mobile device102A traverses the path202, the motion quantifying module108computes values of the mobility metric in the manner discussed above. In one example, at any given time, the value of the mobility metric indicates the distance between the origin204and the current location of the mobile device102A.

FIG. 2Billustrates the values of the mobility metric as the mobile device102A traverses the path202ofFIG. 2A, in accordance with an embodiment of the invention. The values are illustrated in a table having an ID column212, a distance column214and a timestamp column216. The ID column212stores the ID associated with the mobile device102A. The delta distance column214stores the value of the mobility metric at different points in time. The timestamp column216stores the timestamps associated with values of the mobility metric.

Rows218correspond to points in time when the mobile device102A was located at origin204. The values of the mobility metric in rows218are “0,” indicating that the distance between the origin204and the location of the mobile device102A was less than/equal to 5 miles. Rows220correspond to points in time when the mobile device102A was located at gas station206. The values of the mobility metric in rows220are “>5,” indicating that the distance between the origin204and the location of the mobile device102A was greater than 5 miles and less than/equal to 25 miles. Row222corresponds to a point in time when the mobile device102A was located at the airport208. The value of the mobility metric in row222is “>25,” indicating that the distance between the origin204and the location of the mobile device102A was greater than 25 miles and less than/equal to 50 miles. Row224corresponds to a point in time when the mobile device102A was located at hotel210. The value of the mobility metric in row224is “>5000,” indicating that the distance between the origin204and the location of the mobile device102A was greater than 5000 miles.

The values of the mobility metric are transmitted to the server system112for storage and further processing as described below in conjunction withFIG. 3. It is noted that the actual geographical location of the entity is not transmitted to the server system112, thus preserving the entity's privacy.

FIG. 3is a high-level block diagram of the server system112ofFIG. 1, in accordance with an embodiment of the invention. As shown, the server system112includes a database302, an information capturing module304and a mobility analysis module306.

The server system112stores information and mobility metrics received from the mobile devices and processes the information to generate reports analyzing the mobility of individual mobile devices or a cohort of entities, such as an audience of all installations of the mobile application104. In some embodiments, the server system112is implemented as a single server, while in other embodiments the server system112is implemented as a distributed system of multiple servers. For convenience of explanation, the server system112is described below as being implemented on a single server system.

The database302stores information and mobility metrics received from mobile devices102A,102B and102C. The database302is shown as internal to the server system112, but in other implementations, database302may be external to or remote from the server system112. Also, only one instance of database302is shown inFIG. 2for clarity, but in practice, the consumption histories may be stored in a plurality of databases, such as a distributed network of storage facilities.

The information capturing module304receives information with different entities from the mobile devices102A,102B and102C. In one embodiment, the information is received in conjunction with an identifier determined at the mobile device102. In alternate embodiment, the information is received in conjunction with raw data determined at the mobile device102that is used to generate an identifier. For example, the raw data may be software version information and screen resolution of the mobile device102.

For transaction information, the information capturing module304receives descriptive information corresponding to the transaction. For a transaction involving the consumption of a content item, the descriptive information may include an identifier associated with the content item and supplemental information, such as demographic information associated with the entity, the time of the transaction, the operating system executing on the device from which the content item was consumed and other characteristics of the device (e.g., screen resolution). The information capturing module304transmits the descriptive information to the database302for storage in conjunction with the identifier.

The information capturing module304also receives values for mobility metrics from the mobile devices102A,102B and102C. The information capturing module304transmits the values of the mobility metric to the database302for storage. As discussed above, the mobility metrics may be device mobility metrics, i.e., mobility metrics associated with the mobile device102A,102B or102C, or may be cohort mobility metrics, i.e., mobility metrics associated with a mobile application, such as the mobile application104, or a group of applications that includes the mobile application. Consequently, the mobility metrics are stored in the database302in conjunction with an anonymized identifier associated with the mobile device or an identifier associated with the mobile application.

The mobility analysis module306analyzes device mobility metrics to determine the overall mobility of mobile devices and generate further metrics and reports indicative of the metrics. For a particular mobile device, the mobility analysis module306retrieves each value of the mobility metric associated with the mobile device from the database302. In one example, the mobility analysis module306analyzes the values of the mobility metric to determine the average distance metric of the mobile device over a given time period. The average distance metric indicates, on average, how far the mobile device travels from the origin location of the mobile device on average over the given time period. In another example, for the particular mobile device, the mobility analysis module306also analyzes the values of the mobility metric to determine the traveling frequency metric of the mobile device over a given time period. The traveling frequency metric indicates how frequently the mobile device travels from the origin location over the given time period. The traveling frequency metric may be determined for all distances from the origin location, i.e., how frequently the mobile device travels any distance from the origin location. Alternatively, the traveling frequency may be determined for a certain distance from the origin location, i.e., how frequently the mobile device travels more than the certain distance from the origin location.

The mobility analysis module306also analyzes mobility metrics associated with groups of mobile devices. A group of mobile devices or entities associated with the group of mobile devices have a characteristic in common. The common characteristic may be a particular device type or a demographic, such as a given age range, the installation or use of a particular application, such as the mobile application104, or the presence in a particular operating environment, such as the mobile operating environment. For each mobile device in the group of mobile devices, the mobility analysis module306analyzes the values of the mobility metric associated with the mobile device to determine the average distance metric and the frequency metric as described above. The average distance metrics for the entire group may be combined to generate a group distance metric indicating how far the group of mobile devices travels on average over the given time period. Similarly, the traveling frequency metrics for the entire group may be combined to generate a group frequency metric indicating how frequently the group of mobile devices travels over the given time period.

In addition, the mobility analysis module306may classify the group of mobile devices into one or more classifications based on the average distance metrics and the frequency metrics of the mobile devices. In one example, a mobile device may be classified as high mobility if the associated average distance metric and traveling frequency metric are above a high threshold. Alternatively, a mobile device may be classified as medium mobility if the associated average distance metric and traveling frequency metric are above a medium threshold but below the high threshold. Similarly, a mobile device may be classified as low mobility if the associated average distance metric and traveling frequency metric are below the medium threshold.

Once the mobile devices in the group are classified, the mobility analysis module306identifies characteristic correlations for each classification. For example, for a particular classification, the mobility analysis module306analyzes demographic information of entities associated with the mobile devices. The demographic information is stored in the database202and may be determined based on information associated with those entities and stored in the database302. Based on the analysis, the mobility analysis module306identifies demographics that are strongly correlated with being in the particular classification.

In one embodiment, the mobility analysis module306generates a report for the group of mobile devices that includes the average distance metrics and the traveling frequency metrics for the individual mobile devices, the group distance and group frequency metrics, the different classifications and any characteristic correlations for the different classifications.

In some cases, the mobility metric cannot be captured for a given mobile device (referred to herein as the “mobile device with the unquantifiable mobility”). In these cases, the average distance metric and the frequency metric of a particular mobile device similar to the mobile device with the unquantifiable mobility may be used to determine the mobility likelihood of the mobile device. Similarly, the group distance metric and the group frequency metric of a group of mobile devices having a characteristic in common with the device with the unquantifiable mobility may be used to determine the mobility likelihood of the mobile device.

In addition, the mobility analysis module306analyzes cohort mobility metrics, i.e., mobility metrics associated with a mobile application, a portion of the mobile application or a group of applications, to analyze the overall mobility of the cohort of entities that operate the mobile application(s) and generate further metrics and reports indicative of the metrics. The techniques implemented by the mobility analysis module306to analyze the cohort mobility metrics and generate further metrics are the same as those described above in conjunction with the analysis of the device mobility metrics.

The overall mobility of mobile devices or a cohort of entities, such as the audience of a particular mobile application, could be used in a variety of ways by application developers as well as advertisers. For example, mobile application developers may market their mobile applications that have a highly mobile audience to advertisers that have customer bases influenced heavily by travel transactions. In addition, the overall mobility of a cohort of entities may also influence the design of content publishing platforms. Platforms that are accessed by entities that are highly mobile may be designed such that content on those platforms can be more easily consumed by the mobile entities.

FIG. 4is a flow chart illustrating a method of computing values of a mobility metric associated with a mobile device, in accordance with an embodiment the invention. The computation of the values may be performed, for example, by the motion quantifying module108. In some implementations, the steps are performed in an order other than the order presented inFIG. 4, and in other implementations, additional or alternative steps may be performed.

In step402, the motion quantifying module108identifies the origin location for the mobile device102A using location information received from the GPS110. In one embodiment, the motion quantifying module108identifies the origin location by monitoring the locations of the mobile device102A over a period of time. The motion quantifying module108then applies known patterns to the monitored locations to identify the origin location.

In step404, the motion quantifying module108determines the current location of the mobile device102A based on the current location information provided by the GPS110. In step406, the motion quantifying module108computes a current value of the mobility metric based on the distance between the current location and the origin location. In step408, the motion quantifying module108transmits the current value of the mobility metric to the server system112for storage and further processing. The actual geographical location of the mobile device is not transmitted to the server system112, thus preserving the privacy of entities operating the mobile device as to their specific location at any given time.

FIG. 5is a flow chart illustrating a method of processing mobility metrics associated with a set of entities to generate a mobility report, in accordance with an embodiment of the invention. The processing of mobility metrics may be performed, for example, by the mobility analysis module306. In some implementations, the steps are performed in an order other than the order presented inFIG. 5, and in other implementations, additional or alternative steps may be performed.

At step502, the mobility analysis module306identifies a group of mobile devices, each device having a particular characteristic. The characteristic of a device or an entity operating the device are typically determined based on the information stored in the database202in conjunction with the identifier determined at the mobile device. In one example, a particular mobile application is installed on each mobile device in the group of mobile devices identified at step502.

At step504, the mobility analysis module306retrieves from the database202values of the mobility metric associated with each mobile device in the set of group of mobile devices. At step506, the mobility analysis module306analyzes the values of the mobility metric associated with each mobile device to determine the average distance metric and the frequency metric for the mobile device. The average distance metric indicates how far the mobile device travels on average from the origin location of the mobile device over the given time period. The frequency metric indicates how frequently the mobile device travels from the origin location over the given time period. In one embodiment, step506is performed by the mobile SDK such that the average distance metric and the frequency metric are computed by the mobile SDK106and transmitted to the mobility analysis module306of the server system112for further processing. Such an embodiment provides additional privacy protections to entities operating the mobile device.

At step508, the mobility analysis module306classifies the mobile devices into one or more classifications based on the average distance metrics and the frequency metrics. The classifications may, for example, group the mobile devices into high mobility, medium mobility and low mobility. At step510, the mobility analysis module306identifies distinguishing characteristic associated with mobile devices that are in the different classifications. In one example, a characteristic of the mobile devices may be determined based on transactions that have previously occurred on the mobile devices and are indicative of certain demographic information. For each classification, the mobility analysis module306analyzes the demographic information to identify demographics that are strongly correlated with being in the particular classification. For example, the mobility analysis module306may analyze the demographic information associated with the mobile devices that have installed the particular mobile application and are classified as high mobility to determine a high correlation with the 18-21 year old male demographic.

At step512, the mobility analysis module306generates a mobility report associated with the group of mobile devices indicating the average distance metrics and the frequency metrics, the classifications and the correlations. The report may be used to develop insights into the mobility of the entities operating those mobile devices and make advertisement and/or content presentation decisions based on the mobility.

FIG. 6is an exemplary illustration of a report600generated based on cohort mobility metrics, in accordance with an embodiment of the invention. As shown, the report600ranks several applications according to a mobility ranking. The mobility ranking of a particular application is determined based on the percentage of visitors to the application, i.e., the cohort, that travel over 100 miles during a given month. As discussed above, such a report may be used for advertisement or content selection purposes.

Physical Components of a Computer

FIG. 7is a high-level block diagram of the components of a computing system700for use, for example, as the server system112or the mobile device102A depicted inFIG. 1, in accordance with an embodiment. Illustrated are at least one processor702coupled to a chipset704. Also coupled to the chipset704are a memory706, a storage device708, a keyboard710, a graphics adapter712, a pointing device714, and a network adapter716. A display718is coupled to the graphics adapter712. In one embodiment, the functionality of the chipset704is provided by a memory controller hub720and an I/O controller hub722. In another embodiment, the memory706is coupled directly to the processor702instead of the chipset704.

The storage device708is any non-transitory computer-readable storage medium, such as a hard drive, compact disk read-only memory (CD-ROM), DVD, or a solid-state memory device. The memory706holds instructions and data used by the processor702. The pointing device714may be a mouse, track ball, or other type of pointing device, and is used in combination with the keyboard710to input data into the computer700. The graphics adapter712displays images and other information on the display718. The network adapter716couples the computer700to a network.

As is known in the art, a computer700can have different and/or other components than those shown inFIG. 7. In addition, the computer700can lack certain illustrated components. In one embodiment, a computer700acting as a server may lack a keyboard710, pointing device714, graphics adapter712, and/or display718. Moreover, the storage device708can be local and/or remote from the computer700(such as embodied within a storage area network (SAN)).

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.

Additional Configuration Considerations