US20200259895A1 - Maintenance of a persistent master identifier for clusters of user identifiers across a plurality of devices - Google Patents
Maintenance of a persistent master identifier for clusters of user identifiers across a plurality of devices Download PDFInfo
- Publication number
- US20200259895A1 US20200259895A1 US16/863,029 US202016863029A US2020259895A1 US 20200259895 A1 US20200259895 A1 US 20200259895A1 US 202016863029 A US202016863029 A US 202016863029A US 2020259895 A1 US2020259895 A1 US 2020259895A1
- Authority
- US
- United States
- Prior art keywords
- user device
- stored
- cluster
- clusters
- device identifiers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1027—Persistence of sessions during load balancing
-
- H04L67/22—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
Definitions
- This specification is directed, in general, to an information processing system, and, more particularly, to maintenance of a persistent master identifier for clusters of user identifiers across a plurality of electronic devices.
- Consumer electronic devices such as desk-based and laptop computers, mobile phones, laptop computers, notebooks, tablets, MP3 players, connected TVs, etc.
- UIDs user device identifiers
- these user device identifiers are different across the various environments.
- one user may have many different user device identifiers also referred to herein as simply ‘UIDs’.
- UIDs are not constructed to remain constant and they have a certain ‘lifespan’ from less than a second to weeks or months.
- a method and system for maintaining a persistent master identifier across a plurality of devices includes receiving a first plurality of clusters including a first plurality of user device identifiers that identifies at least one user device, and at least one first cluster attribute associated with each of the first plurality of user device identifiers.
- the first plurality of user device identifiers is stored as separate entries in a master table. Each entry in the master table includes at least a persistent master identifier uniquely identifying one of the plurality of clusters, a user device identifier contained within the identified cluster, and the at least one attribute associated with the user device identifier.
- a second plurality of clusters including a second plurality of user device identifiers that identifies at least one user device and at least one second cluster attribute associated with each of the second plurality of user device identifiers is received. Persistence of each entry in the master table is determined based on at least one comparison between the second plurality of clusters and the entries in the master table. The second plurality of clusters is selectively associated with a persistent master identifier based on the comparison.
- FIG. 1 is a block diagram illustrating an environment in which embodiments of the present invention may be practiced
- FIG. 2 is a block diagram illustrating the MatchID analysis system of FIG. 1 , according to one embodiment of the present invention
- FIG. 3 is a flowchart illustrating an example of a flow of processing performed by the MatchID analysis system of FIG. 1 , in accordance with illustrative embodiments of the present invention
- FIG. 4 is an example of two different clusters of user identifiers associated with two different instances in time, in accordance with illustrative embodiments of the present invention
- FIG. 5 is an example illustrating association of a persistent master identifier with a candidate cluster in a case where there is only one candidate cluster with overlapping UIDs, in accordance with illustrative embodiments of the present invention
- FIG. 6 is an example illustrating association of a persistent master identifier with a candidate cluster in a case where there is more than one candidate cluster with overlapping UIDs and only one candidate cluster having the highest number of overlapping UIDs, in accordance with illustrative embodiments of the present invention
- FIG. 7 is an example illustrating association of a persistent master identifier with a candidate cluster in a case where there is more than one candidate cluster with overlapping UIDs and more than one candidate cluster having the highest number of overlapping UIDs, in accordance with illustrative embodiments of the present invention.
- FIG. 8 is an example illustrating association of a persistent master identifier with a candidate cluster based on matching attributes associated with UIDs in a case where there are no overlapping UIDs, in accordance with illustrative embodiments of the present invention.
- the embodiments of this invention as discussed below may preferably be implemented as a software algorithm, program or code residing on computer useable medium having control logic for enabling execution on a machine having a computer processor.
- a machine typically includes memory storage configured to provide output from execution of the computer algorithm or program.
- the term “software” is meant to be synonymous with any code or program that can be in a processor of a host computer, regardless of whether the implementation is in hardware, firmware or as a software computer product available on a disc, a memory storage device, or for download from a remote machine.
- the embodiments described herein may include such software to implement the equations, relationships, and algorithms described below.
- a computer system component may constitute a “module” that is configured and operates to perform certain operations as described herein below.
- module should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g. programmed) to operate in a certain manner and to perform certain operations described herein.
- One or more of the inventive embodiments relate to a method, system, and/or computer product for maintaining a persistent master identifier across a plurality of devices.
- the method facilitates tracking of a persistent master identifier for volatile or distinct clusters of user identifiers that are attributed to belong to the same person.
- the method facilitates tracking user interactions with various systems/platforms across a plurality of devices and stores them in a separate database. Thereafter, the method compares different clusters that may be associated with a particular user and selectively assigns a persistent master identifier, based on the comparison.
- FIG. 1 is a block diagram illustrating an environment 100 in which embodiments of the present invention may be practiced.
- Environment 100 may include one or more users such as a user 102 ; a browser 104 ; a MatchID analysis system 106 ; a network 108 ; an analysis data repository 110 ; and one or more servers 112 such as a merchant server 112 a, a social network server 112 b, a content 112 c, and a bank server 112 d.
- Servers 112 provide various details associated with user identifiers to MatchID analysis system 106 , as described below.
- Browser 104 includes a browser application 114 .
- the browser application 114 may execute on a computing device 116 .
- the computing device 116 may be, for example, a laptop computer, desktop computer, ultrabook, tablet computer, mobile device, smart phone, smart TV, or server, among others.
- Browser application 114 can include executable file that runs outside browser 104 in computing device 116 .
- Browser application 114 may allow user 102 to connect to services traditionally available on desktop or wireless platforms. Typically, these services access the Internet or intranet or cellular or wireless fidelity (Wi-Fi) networks, to access, retrieve, transmit and share data.
- Wi-Fi wireless fidelity
- user 102 may use browser 104 to access one or more servers 112 via browser application 114 through network 108 .
- Examples of browser 104 may include, but are not limited to, Microsoft® Internet Explorer, Mozilla Firefox®, Apple Safari®, Google® Chrome, and Opera®.
- Examples of network 108 may include wired network and wireless network.
- user 102 may use browser 104 to shop for products online.
- user 102 is registered with each of the servers 112 .
- One or more servers 112 such as a merchant server 112 a, a social network server 112 b, a content server 112 c, and a bank server 112 d may be located remotely from user 102 .
- users 102 may own more than one device.
- user 102 may own a laptop and a smartphone.
- applications, software, software modules and/or other components access content (e.g., websites, services, and/or locations) online, one or more user device identifiers may be recorded, captured, and/or stored by servers 112 that host the content.
- the servers 112 that host content for the news website may record the IP address of the computing device 116 , other website header information (e.g., HTTP header information/fields), and an identifier for the web browser application (e.g., an identifier in a cookie for the website such as a cookie ID.
- other website header information e.g., HTTP header information/fields
- an identifier for the web browser application e.g., an identifier in a cookie for the website such as a cookie ID.
- MatchID analysis system 106 interacts with various servers 112 to collect various information about a user/device, dynamically analyzes the information and facilitates tracking of a persistent master identifier (also referred to hereinafter as MatchID) for volatile or distinct clusters of user identifiers.
- MatchID persistent master identifier
- the MatchID analysis system 106 is configured and operable to determine if particular user identifiers belong to the same person. Thousands of various data points may be compared by the MatchID analysis system 106 to finally come up with a link that particular UIDs belong to the same user.
- MatchID analysis system 106 interacts with servers 112 either continuously or at pre-defined intervals of time to retrieve information regarding one or more users 102 .
- the information may include, but is not limited to, IP address and user ID/device ID associated with user 102 , user ID type, user activity information (e.g., time information related to a particular event), and user agent information.
- the pre-defined interval of time may be an hour, a day, a week, or longer.
- MatchID analysis system 106 may automatically receive data feeds from various servers such as 112 a, 112 b, and 112 c.
- MatchID analysis system 106 stores the retrieved information (e.g., clusters of user identifiers) in analysis data repository 110 .
- Data repository 110 may include one or more databases, such as relational databases.
- browser application 114 may track the activity. In one embodiment, browser application 114 tracks the activity based on the context of browser 104 . The tracked activity is sent to one or more servers 112 via network 108 . Examples of the context of browser 104 may include, but are not limited to, the website Uniform Resource Locator (URL), the website, the content of a webpage, a search query, the configuration of the browser, and configuration of the computing device associated with a user, such as IP address, type of operating system, type of computing device, etc. facilitating user's interactions with one or more servers 112 .
- URL Uniform Resource Locator
- FIG. 2 is a block diagram illustrating the MatchID analysis system of FIG. 1 , according to one embodiment of the present invention.
- MatchID analysis system 106 may include one or more software modules.
- the software modules may comprise a software program or set of instructions executed by a processor.
- the software modules may include a data acquisition module 200 , a clustering comparison execution module 202 , a persistent master ID determination module 204 , a data output module 206 and/or a data storage module 208 .
- the data acquisition module 200 may be generally configured and enabled to receive or extract user data related to user identifiers. Such data and information can be received/retrieved from each server 112 periodically, for example, at predetermined periods of time. As noted above, the received/retrieved information may include, for example, IP address and user ID associated with user 102 , user ID type, various attributes and heuristics information associated with user IDs, user activity information (e.g., time information related to a particular event), user agent profile information and the like. The received information is then sent to the data storage module 208 or to clustering comparison execution module 202 .
- the clustering comparison execution module 202 may be generally configured and enabled to compare each of the received candidate clusters with a plurality of previously received clusters that are stored in a master table to find matching ones. Next, the clustering comparison execution module 202 passes results of such comparison to the persistent master ID determination module 204 .
- the persistent master ID determination module 204 determines a degree of overlap of user identifiers or attributes between matching clusters for all matching combinations of stored clusters and candidate clusters.
- the persistent master ID determination module 204 may be generally configured and enabled to selectively assign a persistent master identifier to the candidate cluster having the highest degree of overlap with a corresponding cluster stored in the master table, as described below.
- the data output module 206 may be generally configured and operable to output the result data back to one or more servers 112 , as described below.
- the data storage module 208 may be implemented mainly by the data repository 110 operatively connected to the MatchID analysis system 110 .
- FIG. 3 a method for monitoring performance of customized applications in a computer network may be depicted in diagram form.
- the flow diagrams shown therein are described, by way of example, with reference to components shown in FIGS. 1 and 2 , although these operational steps may be carried out in any system and are not limited to the scenario shown in the aforementioned figure.
- an illustrative flow diagram such as that illustrated by in the FIG. 3 embodiment, may show operational steps carried out in a particular order, as indicated by the lines connecting the blocks, the various steps shown in these diagrams can be performed in any combination or sub-combination consistent with the disclosures provided herein. It should be appreciated that in some embodiments some of the steps described below may be combined into a single step. In some embodiments, one or more additional steps may be included.
- the MatchID analysis system 106 receives an initial list of clusters of user identifiers.
- this initial list may be in the form of a device graph.
- the device graph represented by the cluster 402 in FIG. 4 includes three user device identifiers, user device identifier A 402 a, user device identifier B 402 b and user device identifier C 402 c.
- the user device identifier may be an identifier used by a device when the device accesses content (e.g., accesses a news website).
- User device identifier A is a cookie ID for a browser application on a smartphone
- user device identifier B is a device identifier for a computing device that has been hashed using, for example, the Message Digest-5 (MD-5) hashing function/algorithm
- user device identifier C is a device identifier for a computing device that has been hashed using another hash algorithm, such as, for example, the Secure hash algorithm-1 (Sha-1) hashing function/algorithm.
- MD-5 Message Digest-5
- user device identifier C is a device identifier for a computing device that has been hashed using another hash algorithm, such as, for example, the Secure hash algorithm-1 (Sha-1) hashing function/algorithm.
- Sha-1 Secure hash algorithm-1
- a user device identifier may represent a device that is associated with the user device identifier (e.g., may represent the device that is using the user device identifier).
- a device may be a computing device 116 and/or an application, software, software modules, and/or other components on the computing device 116 .
- the device may be one or more of a desktop computer, a laptop computer, a server computer, a PDA, smartphone, web-enabled television set, smart television set, a gaming console, a connected car, and/or any other device capable of processing, managing and/or transmitting data.
- the device may be software, a software module, an application, and/or other component on a computing device.
- Each device may have one or more user device identifiers.
- a smartphone e.g., a device
- a serial number e.g., a serial number from a manufacturer
- ODIN Open Device Identification Number
- UDID Unique Device Identifier
- GUID Globally Unique Identifier
- IMEI IMEI number
- applications, software, and/or software modules may also have user device identifiers.
- an application on a computing device may have a serial number which may be the user device identifier for the application.
- a web browser application may have cookie which includes an identifier and the identifier in the cookie (e.g., the cookie ID) may be the user device identifier for the web browser application.
- user device identifiers may include, but are not limited to, a MAC addresses, IMEI numbers, serial numbers, ODINs, UDIDs, OpenUDIDs, GUIDs, cookie IDs, iOS® IDFA, an Identifier for Vendors (IDFV), and/or any other data/information which may be used to identify a device (e.g., an application, software, and/or a computing device).
- a user device identifier may be a number (e.g., 734598238742), an alphanumeric value (e.g., A984FDSJL334), a string of characters (e.g., HZ$98!324*J), or any type of value that may be used to identify a device (e.g., an application, software, and/or a computing device).
- a device may generate a user device identifier.
- the application e.g., a device
- the application or an installer/install file for the application
- a computing device e.g., a device, such as a smartphone
- may generate a user device identifier based on other identifiers for the computing device e.g., the smartphone may generate a user device identifier based on an IMEI number or a UDID for the smartphone).
- the device may use a variety methods, algorithms, operations, and/or functions, to generate user device identifiers.
- an application on a computing device may use a cryptographic hash function (e.g., SHA-1, Secure Hash Algorithm-2 (SHA-2), MD-5, etc.) to generate a user device identifier for the application based on an IMEI for the computing device.
- a computing device e.g., a tablet computer
- a random number generator e.g., a Pseudo-Random Number Generator (PRNG)
- the MatchID analysis system 106 may receive other information associated with the plurality of user identifiers. Such information may include, but is not limited to, one or more attributes associated with each of the user identifiers, one or more user activity events having corresponding IP addresses and time stamps associated with user identifiers, user agent strings associated with the received events, and the like.
- the user agent string may include various device specific information—“Mozilla/[version]([system and browser information])[platform]([platform details])[extension s]”.
- the MatchID analysis system 106 builds a master table based on the received device graph.
- Each entry in the master table includes at least a persistent master identifier (MatchID) that uniquely identifies on the plurality of received clusters, a user identifier (User ID) contained within the cluster identified by the MatchID and one or more attributes associated with the user identifier.
- atchID persistent master identifier
- User ID user identifier
- Table 1 below illustrates a simplified version of the master table that can be built by the MatchID analysis system 106 .
- the MatchID analysis system 106 may periodically pull or receive from one or more servers 112 additional user identifier information as another plurality of clusters of user identifiers, referred to hereinafter as candidate clusters, for example, in the form of another device graph (step 306 ).
- FIG. 4 is an example of two different clusters of user identifiers associated with two different instants of time, in accordance with illustrative embodiments of the present invention.
- a first cluster 402 represents a cluster already stored in the master table. This cluster includes user identifiers A ( 402 a ), B ( 402 b ) and C ( 402 c ) may be associated with a persistent master identifier 412 uniquely identifying this cluster.
- a second cluster 404 shown in FIG. 4 represents an exemplary candidate cluster received by the MatchID analysis system 106 at step 306 .
- the second cluster 404 includes another plurality of user identifiers 404 a - 404 c.
- User identifier D 404 c may comprise an iOS® Identifier For Advertisers (IDFA), for example. It should be noted that clusters 402 and 404 are associated with different time instants.
- the first cluster 402 may be associated with a first time instant 408
- the second cluster 404 may be associated with a second time instant 410
- the MatchID analysis system 106 is configured to determine whether the second cluster is associated with the same user as the first cluster 402 , and if so assign the same persistent master identifier 412 to the second cluster.
- FIG. 4 shows one candidate cluster 404 for illustrative purposes only.
- the MatchID analysis system 106 may include thousands or even millions of candidate clusters.
- the MatchID analysis system 106 may compare each of the plurality of candidate clusters with one or more clusters in the master table (Table 1) to identify matching user device identifiers. The results of the comparison are then analyzed by the MatchID analysis system 106 to determine which candidate clusters belong to the same person as clusters stored in the master table. More specifically, at step 310 , the MatchID analysis system 106 determines if any matching is successful.
- the MatchID analysis system 106 determines if there is only one candidate cluster having user identifiers overlapping with identifiers contained in a particular cluster in the master table (step 312 ). If so (decision block 312 , “Yes” branch), the MatchID analysis system 106 assigns the persistent master identifier of the matching cluster in the master table to the matching candidate cluster.
- a persistent master identifier may be associated with a candidate cluster in a case where there is only one candidate cluster with overlapping UIDs, in accordance with illustrative embodiments of the present invention.
- FIG. 5 shows clusters 402 and 404 discussed above in conjunction with FIG. 4 .
- a first link 502 represents a match between the user identifier B 402 b of the first cluster 402 and the user identifier B 404 a of the second cluster 404
- a second link 504 represents a match between the user identifier C 402 c of the first cluster 402 and the user identifier C 404 b of the second cluster 404
- the MatchID analysis system 106 decides that clusters 402 and 404 belong to the same user, assigns the persistent master identifier 506 of the first cluster 402 to the second cluster 404 (step 314 ) and updates the master table (step 322 ).
- Table 2 illustrates such update made to the master table (Table 1):
- the MatchID analysis system 106 determines whether only one candidate cluster has a highest number of user identifiers overlapping with the user identifiers of the first cluster 402 if so (decision clock 316 , “Yes” branch), the MatchID analysis system 106 assigns the persistent master identifier of the matching cluster in the master table to the candidate cluster with the highest number of overlapping user identifiers (step 318 ).
- a persistent master identifier may be associated with a candidate cluster in a case where there is more than one candidate cluster with overlapping UIDs and only one candidate cluster having the highest number of overlapping UIDs, in accordance with illustrative embodiments of the present invention.
- the first cluster 402 includes user identifiers A ( 402 a ), B ( 402 b ) and C ( 402 c ) stored in the master table.
- a third cluster 602 and a fourth cluster 604 represent candidate clusters received by the MatchID analysis system 106 in step 306 and identified as having at least one matching user identifier.
- the third cluster 602 includes user identifiers A ( 602 a ), B ( 602 b ) and C ( 602 c ), while the fourth cluster 604 includes only two user identifiers—user identifier C ( 604 a ) and user identifier E ( 604 b ).
- the user identifier E may be a cookie ID for a browser application on a MacBook device.
- the third cluster 602 has two user identifiers 602 a and 602 b overlapping with two user identifiers 402 a and 402 b in the first cluster 402 (overlaps represented by links 606 and 608 ), while the fourth cluster 604 includes only one user identifier C ( 604 a ) overlapping with one user identifier C ( 402 c ) of the first cluster 402 (represented by the link 610 ).
- the MatchID analysis system 106 decides that clusters 402 and 602 belong to the same user, assigns the persistent master identifier 412 of the first cluster 402 to the persistent master identifier 612 of the third cluster 602 (step 318 ) and updates the master table (step 322 ).
- Table 3 illustrates such update made to the master table (Table 1):
- a persistent master identifier may be associated with a candidate cluster in a case where there is more than one candidate cluster with overlapping UIDs and more than one candidate cluster having the highest number of overlapping UIDs, in accordance with illustrative embodiments of the present invention.
- FIG. 7 shows a fifth cluster 702 and a sixth cluster 704 representing candidate clusters received by the MatchID analysis system 106 in step 306 and identified as having at least one matching user identifier.
- the fifth cluster 702 includes user identifiers A ( 702 a ), D ( 702 b ) and E ( 702 c ), while the sixth cluster 704 includes identifiers C ( 704 a ) and F ( 704 b ).
- the user identifier F may be a cookie ID for a browser application on an iPhone device.
- the fifth 702 and sixth 704 clusters have the same number of matching identifiers (1), represented by links 706 and 708 in FIG. 7 .
- the MatchID analysis system 106 may employ additional heuristics information in conjunction with the user device identifiers to associate two or more clusters to the same user. Such additional heuristics information may be advantageous in situations in which there is a tie between the candidate clusters having a highest number of matching user device identifiers (such as situation shown in FIG. 7 ).
- the heuristic information is a user identifier type heuristic that specifies a type of user identifier included in each cluster.
- the MatchID analysis system 106 may employ one or more weighting factors, with stronger weights being associated with stronger user device identifiers. For example, the MatchID analysis system 106 may associate stronger weights with the device, application or system based user identifiers as compared to cookie based user device identifiers.
- location information such as GPS location information, reverse Internet Protocol (IP) address mapping, and/or other information
- location information such as GPS location information, reverse Internet Protocol (IP) address mapping, and/or other information
- IP Internet Protocol
- the weighting factor may not reduce the effect of user device identifiers that indicate a strong association of the two or more user devices to the same user.
- different user devices of the same user may be purposely positioned in different locations (e.g., due to the user travelling and leaving one of the user devices at home) or the user may employ different Internet services for different user devices.
- additional heuristics information may include explicit identifiers obtained from third-party authentication services, such as those offered by Facebook® or Google®, which may be used to more correctly select two or more clusters associated to the same user.
- the heuristic information may indicate the cluster having the highest number of user device identifiers.
- the MatchID analysis system 106 may randomly select one of the candidate clusters at step 320 .
- the MatchID analysis system 106 compares attributes of user device identifiers in the candidate clusters to respective attributes of user device identifiers included in the clusters stored in the master table.
- the attributes may include the device models and visited IP addresses associated with each user device identifier in each cluster.
- Device models are typically names or codes that may be used as labels to distinguish one type of device from another.
- device models may include iPhone_iOS10.3, PC_Window10.1 or GalaxyS7.
- the MatchID analysis system 106 may be configured to extract device model information from the aforementioned user agent string.
- the MatchID analysis system 106 may store both the device models and visited IP address information as part of an entry stored in the master table (as shown in Tables 1-3) above.
- FIG. 8 shows a seventh cluster 804 and an eighth cluster 808 representing candidate clusters received by the MatchID analysis system 106 in step 306 .
- the seventh cluster 804 includes user identifiers D 804 a and E 804 b, while the eighth cluster 808 includes identifiers F ( 808 a ), G ( 808 b ), and H ( 808 c ).
- FIG. 8 illustrates various attributes associated with each identifier
- the attributes 802 a - 802 c are shown as part of the first cluster 402 and are associated with respective identifiers 402 a - 402 c
- the attributes 806 a and 806 b are associated with the identifiers D 804 a and E 804 b (seventh cluster 804 )
- the attributes 810 a - 810 c are associated with the identifiers F ( 808 a ), G ( 808 b ), and H ( 808 c ) (eighth cluster 808 ).
- step 324 performed by the MatchID analysis system 106 involves comparing combinations of attributes 806 a - 806 b and 810 a - 810 c of candidate clusters to combinations of attributes 802 a - 802 c of clusters stored in the master table.
- the MatchID analysis system 106 determines if a match exists between the corresponding attributes. In certain example embodiments, if no match is found (decision block 326 , “No” branch), then the MatchID analysis system 106 may assign a newly generated persistent master identifier to each candidate cluster having no matching attributes.
- the MatchID analysis system 106 determines if only one candidate cluster has the highest number of matching attributes at 330 .
- the links 812 , 814 and 816 represent matches between user device identifier attributes 802 a and 806 a of the first cluster 402 and user device identifier attributes 802 b and 806 b of the seventh cluster 804 , respectively, while the link 818 shows matching user device identifier attributes 802 a of the first cluster 402 and attributes 810 a of the eighth cluster 808 . Since the seventh cluster 804 has the highest number of matching attributes, in step 332 , the MatchID analysis system 106 assigns the persistent master identifier 822 to the seventh cluster 804 .
- the attribute information received by the MatchID analysis system 106 in step 306 may further include frequencies of occurrence for each attribute combination in a predetermined period of time (e.g., past few days or past few weeks).
- Table 4 below illustrates a master table that stores frequencies of occurrence for each attribute combination:
- the MatchID analysis system 106 may assign the persistent master identifier to the cluster having attribute combinations that have been observed most frequently, which may be determined based on the stored timestamp information. In an embodiment of the present invention, if none of the attribute information helps to break the tie between the candidate clusters, the MatchID analysis system 106 may randomly select one of the candidate clusters at step 334 .
- step 314 , 318 , 320 , 328 , 332 , 334 the master table is updated in step 322 and the MatchID analysis system 106 returns to step 306 and processes next received batch of the candidate clusters.
- the various embodiments described herein provide a system for creating and maintaining a persistent master identifier for volatile or distinct clusters of user identifiers that are attributed to the same person.
- the system receives clusters of user identifiers stripped of personally identifiable information and looks for patterns linking one user device to another.
- user identifiers may comprise any suitable unique identifiers.
- the automated system disclosed herein is configured to analyze the frequency of associations between user identifier attributes to determine the individual associations.
- aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
- the computer readable medium may be a computer readable signal medium or a computer readable storage medium.
- a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or, semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
- a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
- a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
- Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- LAN local area network
- WAN wide area network
- Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
- These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- the computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A method for maintaining a persistent master identifier includes receiving a first plurality of clusters including a first plurality of user device identifiers and at least one first cluster attribute associated with the first plurality of identifiers. The first plurality of user device identifiers is stored as separate entries in a master table. Each entry includes at least a persistent master identifier, a user device identifier contained within the identified cluster, and the at least one attribute associated with the identifier. A second plurality of clusters including a second plurality of user device identifiers and at least one attribute associated with the second plurality of identifiers is received. Persistence of each entry in the master table is determined based on a comparison between the second plurality of clusters and the master table. The second plurality of clusters is selectively associated with a persistent master identifier based on the comparison.
Description
- This specification is directed, in general, to an information processing system, and, more particularly, to maintenance of a persistent master identifier for clusters of user identifiers across a plurality of electronic devices.
- Consumer electronic devices, such as desk-based and laptop computers, mobile phones, laptop computers, notebooks, tablets, MP3 players, connected TVs, etc., are ubiquitous. Part of the reason for the rapid growth in the number of mobile phones and other electronic devices is the rapid pace at which these devices evolve. More and more people are using multiple devices to access the internet. Through these devices they use browsers, apps or other methods to access content, interactive services and to communicate. Companies providing content can identify and track several user data points, such as the actual IP address, headers for webpage request and response, user's browsing history and various user device identifiers.
- Typically, these user device identifiers are different across the various environments. In other words, one user may have many different user device identifiers also referred to herein as simply ‘UIDs’. These UIDs are not constructed to remain constant and they have a certain ‘lifespan’ from less than a second to weeks or months. There is a need to create applications capable of recognizing the user as one individual person across devices, websites and applications. This problem is most pressing in the online advertising industry, where various applications focused on providing, information related to the reach and frequency of a digital campaign are unable to provide accurate advertising metrics, optimizations and measurements without a cross-device view of the user.
- The purpose and advantages of the below described illustrated embodiments will be set forth in and apparent from the description that follows. Additional advantages of the illustrated embodiments will be realized and attained by the devices, systems and methods particularly pointed out in the written description and claims hereof as well as from the appended drawings.
- To achieve these and other advantages and in accordance with the purpose of the illustrated embodiments, in one aspect, a method and system for maintaining a persistent master identifier across a plurality of devices is provided. The method includes receiving a first plurality of clusters including a first plurality of user device identifiers that identifies at least one user device, and at least one first cluster attribute associated with each of the first plurality of user device identifiers. The first plurality of user device identifiers is stored as separate entries in a master table. Each entry in the master table includes at least a persistent master identifier uniquely identifying one of the plurality of clusters, a user device identifier contained within the identified cluster, and the at least one attribute associated with the user device identifier. A second plurality of clusters including a second plurality of user device identifiers that identifies at least one user device and at least one second cluster attribute associated with each of the second plurality of user device identifiers is received. Persistence of each entry in the master table is determined based on at least one comparison between the second plurality of clusters and the entries in the master table. The second plurality of clusters is selectively associated with a persistent master identifier based on the comparison.
- The accompanying appendices and/or drawings illustrate various, non-limiting, examples, inventive aspects in accordance with the present disclosure:
-
FIG. 1 is a block diagram illustrating an environment in which embodiments of the present invention may be practiced; -
FIG. 2 is a block diagram illustrating the MatchID analysis system ofFIG. 1 , according to one embodiment of the present invention; -
FIG. 3 is a flowchart illustrating an example of a flow of processing performed by the MatchID analysis system ofFIG. 1 , in accordance with illustrative embodiments of the present invention; -
FIG. 4 is an example of two different clusters of user identifiers associated with two different instances in time, in accordance with illustrative embodiments of the present invention; -
FIG. 5 is an example illustrating association of a persistent master identifier with a candidate cluster in a case where there is only one candidate cluster with overlapping UIDs, in accordance with illustrative embodiments of the present invention; -
FIG. 6 is an example illustrating association of a persistent master identifier with a candidate cluster in a case where there is more than one candidate cluster with overlapping UIDs and only one candidate cluster having the highest number of overlapping UIDs, in accordance with illustrative embodiments of the present invention; -
FIG. 7 is an example illustrating association of a persistent master identifier with a candidate cluster in a case where there is more than one candidate cluster with overlapping UIDs and more than one candidate cluster having the highest number of overlapping UIDs, in accordance with illustrative embodiments of the present invention; and -
FIG. 8 is an example illustrating association of a persistent master identifier with a candidate cluster based on matching attributes associated with UIDs in a case where there are no overlapping UIDs, in accordance with illustrative embodiments of the present invention. - In the drawings like characters of reference indicate corresponding parts in the different figures. The drawing figures, elements and other depictions should be understood as being interchangeable and may be combined in any like manner in accordance with the disclosures and objectives recited herein.
- The illustrated embodiments described herein are merely exemplary of the invention, which can be embodied in various forms, as appreciated by one skilled in the art. Therefore, it is to be understood that any structural and functional details disclosed herein are not to be interpreted as limiting, but merely as a basis for the claims and as a representative for teaching one skilled in the art. Furthermore, the terms and phrases used herein are not intended to be limiting but rather to provide an understandable description of the invention.
- Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Any methods and materials similar or equivalent to those described herein may also be used to practice or test the instant disclosures and those inherent to the same.
- It must be noted that as used herein and in the appended claims, the singular forms “a”, “an,” and “the” include plural referents unless the context clearly dictates otherwise. Thus, for example, reference to “a stimulus” includes a plurality of such stimuli and reference to “the signal” includes reference to one or more signals and equivalents thereof known to those skilled in the art, and so forth.
- It is to be appreciated the embodiments of this invention as discussed below may preferably be implemented as a software algorithm, program or code residing on computer useable medium having control logic for enabling execution on a machine having a computer processor. Such a machine typically includes memory storage configured to provide output from execution of the computer algorithm or program.
- As used herein, the term “software” is meant to be synonymous with any code or program that can be in a processor of a host computer, regardless of whether the implementation is in hardware, firmware or as a software computer product available on a disc, a memory storage device, or for download from a remote machine. The embodiments described herein may include such software to implement the equations, relationships, and algorithms described below. One skilled in the art will appreciate further features and advantages of the invention based on the above-described embodiments. Accordingly, the invention is not to be limited by what has been particularly shown and described, except as indicated by the appended claims.
- In exemplary embodiments, a computer system component may constitute a “module” that is configured and operates to perform certain operations as described herein below. Accordingly, the term “module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g. programmed) to operate in a certain manner and to perform certain operations described herein.
- The required architecture for a variety of these systems will appear from the description below. In addition, the exemplary embodiments may be implemented via any particular programming language suitable for use by those skilled in the art.
- In addition, the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter. Accordingly, the instant disclosures are intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.
- As noted above, there is a need to create applications capable of recognizing the user as one individual person across devices, websites and applications. To solve this problem, companies have therefore begun linking UIDs across environments, creating clusters of UIDs that (are likely to) belong to the same person. Clusters of matched UIDs may get assigned a unique Master Identifier that is used in systems as a cross-environment substitute ID for the UIDs created on a per-environment basis. However, UIDs are not static and do vary over time. UIDs may vary (e.g., new UIDs may appear and others may get lost over time), for example, due to cookie expiration or deletion, device ID resets and/or newly purchased devices. These continuous changes make it challenging to create a master identifier that is persistent and that is associated with the same person, while the related UIDs are changing over time.
- One or more of the inventive embodiments relate to a method, system, and/or computer product for maintaining a persistent master identifier across a plurality of devices. In one embodiment, the method facilitates tracking of a persistent master identifier for volatile or distinct clusters of user identifiers that are attributed to belong to the same person. Further, in other embodiments, the method facilitates tracking user interactions with various systems/platforms across a plurality of devices and stores them in a separate database. Thereafter, the method compares different clusters that may be associated with a particular user and selectively assigns a persistent master identifier, based on the comparison.
-
FIG. 1 is a block diagram illustrating anenvironment 100 in which embodiments of the present invention may be practiced.Environment 100 may include one or more users such as auser 102; abrowser 104; aMatchID analysis system 106; anetwork 108; ananalysis data repository 110; and one or more servers 112 such as a merchant server 112 a, asocial network server 112 b, acontent 112 c, and abank server 112 d. Servers 112 provide various details associated with user identifiers toMatchID analysis system 106, as described below.Browser 104 includes abrowser application 114. Thebrowser application 114 may execute on acomputing device 116. Thecomputing device 116 may be, for example, a laptop computer, desktop computer, ultrabook, tablet computer, mobile device, smart phone, smart TV, or server, among others.Browser application 114 can include executable file that runs outsidebrowser 104 incomputing device 116. The term “browser application” as used herein, includes, but is not limited to, mobile applications that run on smart phones, tablet computers, and other mobile or portable computing devices.Browser application 114 may allowuser 102 to connect to services traditionally available on desktop or wireless platforms. Typically, these services access the Internet or intranet or cellular or wireless fidelity (Wi-Fi) networks, to access, retrieve, transmit and share data. - In various embodiments of the present invention,
user 102 may usebrowser 104 to access one or more servers 112 viabrowser application 114 throughnetwork 108. Examples ofbrowser 104 may include, but are not limited to, Microsoft® Internet Explorer, Mozilla Firefox®, Apple Safari®, Google® Chrome, and Opera®. Examples ofnetwork 108 may include wired network and wireless network. In some embodiments,user 102 may usebrowser 104 to shop for products online. - In an embodiment of the invention,
user 102 is registered with each of the servers 112. One or more servers 112 such as a merchant server 112 a, asocial network server 112 b, acontent server 112 c, and abank server 112 d may be located remotely fromuser 102. - Even though only one
computing device 116 is shown inFIG. 1 ,users 102 may own more than one device. For example,user 102 may own a laptop and a smartphone. When thedifferent computing devices 116, applications, software, software modules and/or other components access content (e.g., websites, services, and/or locations) online, one or more user device identifiers may be recorded, captured, and/or stored by servers 112 that host the content. For example, when auser 102 access a news website using aweb browser application 114 on asmartphone 116, the servers 112 that host content for the news website may record the IP address of thecomputing device 116, other website header information (e.g., HTTP header information/fields), and an identifier for the web browser application (e.g., an identifier in a cookie for the website such as a cookie ID. -
MatchID analysis system 106 interacts with various servers 112 to collect various information about a user/device, dynamically analyzes the information and facilitates tracking of a persistent master identifier (also referred to hereinafter as MatchID) for volatile or distinct clusters of user identifiers. In other words, theMatchID analysis system 106 is configured and operable to determine if particular user identifiers belong to the same person. Thousands of various data points may be compared by theMatchID analysis system 106 to finally come up with a link that particular UIDs belong to the same user. - In an embodiment,
MatchID analysis system 106 interacts with servers 112 either continuously or at pre-defined intervals of time to retrieve information regarding one ormore users 102. The information may include, but is not limited to, IP address and user ID/device ID associated withuser 102, user ID type, user activity information (e.g., time information related to a particular event), and user agent information. In an embodiment of the invention, the pre-defined interval of time may be an hour, a day, a week, or longer. In an embodiment of the invention,MatchID analysis system 106 may automatically receive data feeds from various servers such as 112 a, 112 b, and 112 c. -
MatchID analysis system 106 stores the retrieved information (e.g., clusters of user identifiers) inanalysis data repository 110.Data repository 110 may include one or more databases, such as relational databases. - As
user 102 performs an activity onbrowser 104,browser application 114 may track the activity. In one embodiment,browser application 114 tracks the activity based on the context ofbrowser 104. The tracked activity is sent to one or more servers 112 vianetwork 108. Examples of the context ofbrowser 104 may include, but are not limited to, the website Uniform Resource Locator (URL), the website, the content of a webpage, a search query, the configuration of the browser, and configuration of the computing device associated with a user, such as IP address, type of operating system, type of computing device, etc. facilitating user's interactions with one or more servers 112. - Further, tracking of cross-environment user identifiers are explained in greater detail below.
-
FIG. 2 is a block diagram illustrating the MatchID analysis system ofFIG. 1 , according to one embodiment of the present invention.MatchID analysis system 106 may include one or more software modules. The software modules may comprise a software program or set of instructions executed by a processor. According to the illustrative embodiment ofFIG. 2 , the software modules may include adata acquisition module 200, a clusteringcomparison execution module 202, a persistent masterID determination module 204, adata output module 206 and/or adata storage module 208. - According to this embodiment, the
data acquisition module 200 may be generally configured and enabled to receive or extract user data related to user identifiers. Such data and information can be received/retrieved from each server 112 periodically, for example, at predetermined periods of time. As noted above, the received/retrieved information may include, for example, IP address and user ID associated withuser 102, user ID type, various attributes and heuristics information associated with user IDs, user activity information (e.g., time information related to a particular event), user agent profile information and the like. The received information is then sent to thedata storage module 208 or to clusteringcomparison execution module 202. As described below, the clusteringcomparison execution module 202 may be generally configured and enabled to compare each of the received candidate clusters with a plurality of previously received clusters that are stored in a master table to find matching ones. Next, the clusteringcomparison execution module 202 passes results of such comparison to the persistent masterID determination module 204. In an embodiment, the persistent masterID determination module 204 determines a degree of overlap of user identifiers or attributes between matching clusters for all matching combinations of stored clusters and candidate clusters. The persistent masterID determination module 204 may be generally configured and enabled to selectively assign a persistent master identifier to the candidate cluster having the highest degree of overlap with a corresponding cluster stored in the master table, as described below. According to another exemplary embodiment, when all data received by thedata acquisition module 200 is processed, thedata output module 206 may be generally configured and operable to output the result data back to one or more servers 112, as described below. Thedata storage module 208 may be implemented mainly by thedata repository 110 operatively connected to theMatchID analysis system 110. - According to the illustrative embodiment of
FIG. 3 , a method for monitoring performance of customized applications in a computer network may be depicted in diagram form. Before turning to description ofFIG. 3 , it is noted that the flow diagrams shown therein are described, by way of example, with reference to components shown inFIGS. 1 and 2 , although these operational steps may be carried out in any system and are not limited to the scenario shown in the aforementioned figure. Additionally, while an illustrative flow diagram, such as that illustrated by in theFIG. 3 embodiment, may show operational steps carried out in a particular order, as indicated by the lines connecting the blocks, the various steps shown in these diagrams can be performed in any combination or sub-combination consistent with the disclosures provided herein. It should be appreciated that in some embodiments some of the steps described below may be combined into a single step. In some embodiments, one or more additional steps may be included. - Initially, at
step 302, the MatchID analysis system 106 (e.g., the data acquisition module 200) receives an initial list of clusters of user identifiers. In one embodiment, this initial list may be in the form of a device graph. For example, the device graph represented by thecluster 402 inFIG. 4 includes three user device identifiers, userdevice identifier A 402 a, userdevice identifier B 402 b and userdevice identifier C 402 c. As discussed above, the user device identifier may be an identifier used by a device when the device accesses content (e.g., accesses a news website). User device identifier A is a cookie ID for a browser application on a smartphone, user device identifier B is a device identifier for a computing device that has been hashed using, for example, the Message Digest-5 (MD-5) hashing function/algorithm, user device identifier C is a device identifier for a computing device that has been hashed using another hash algorithm, such as, for example, the Secure hash algorithm-1 (Sha-1) hashing function/algorithm. Those skilled in the art may implement such other algorithms with equal or substantially similar functionality as those hash algorithms described. - In the device graph, a user device identifier may represent a device that is associated with the user device identifier (e.g., may represent the device that is using the user device identifier). In one embodiment, a device may be a
computing device 116 and/or an application, software, software modules, and/or other components on thecomputing device 116. For example, the device may be one or more of a desktop computer, a laptop computer, a server computer, a PDA, smartphone, web-enabled television set, smart television set, a gaming console, a connected car, and/or any other device capable of processing, managing and/or transmitting data. In another example, the device may be software, a software module, an application, and/or other component on a computing device. - Each device (e.g., each computing device and/or each software or application) may have one or more user device identifiers. For example, a smartphone (e.g., a device) may have a MAC address, a serial number (e.g., a serial number from a manufacturer), an Open Device Identification Number (ODIN), a Unique Device Identifier (UDID), an OpenUDID, a Globally Unique Identifier (GUID), an IMEI number, etc., which may each be user device identifiers. In another example, applications, software, and/or software modules may also have user device identifiers. For example, an application on a computing device may have a serial number which may be the user device identifier for the application. In another example, a web browser application may have cookie which includes an identifier and the identifier in the cookie (e.g., the cookie ID) may be the user device identifier for the web browser application. In other embodiments, user device identifiers may include, but are not limited to, a MAC addresses, IMEI numbers, serial numbers, ODINs, UDIDs, OpenUDIDs, GUIDs, cookie IDs, iOS® IDFA, an Identifier for Vendors (IDFV), and/or any other data/information which may be used to identify a device (e.g., an application, software, and/or a computing device). In one embodiment, a user device identifier may be a number (e.g., 734598238742), an alphanumeric value (e.g., A984FDSJL334), a string of characters (e.g., HZ$98!324*J), or any type of value that may be used to identify a device (e.g., an application, software, and/or a computing device).
- In one embodiment, a device (e.g., a computing, device, an application, software, a software module, etc.) may generate a user device identifier. For example, when, the application (e.g., a device) is installed onto the computing device the application (or an installer/install file for the application) may generate a user device identifier based on a MAC address for the computing device. In another example, a computing device (e.g., a device, such as a smartphone), may generate a user device identifier based on other identifiers for the computing device (e.g., the smartphone may generate a user device identifier based on an IMEI number or a UDID for the smartphone). In some embodiments, the device (e.g., a computing device, an application, etc.) may use a variety methods, algorithms, operations, and/or functions, to generate user device identifiers. For example, an application on a computing device may use a cryptographic hash function (e.g., SHA-1, Secure Hash Algorithm-2 (SHA-2), MD-5, etc.) to generate a user device identifier for the application based on an IMEI for the computing device. In another example, a computing device (e.g., a tablet computer) may use a random number generator (e.g., a Pseudo-Random Number Generator (PRNG)) to generate a device identifier based on a MAC address for the computing device.
- According to an embodiment of the present invention, in addition to receiving user identifier information, at
step 302, theMatchID analysis system 106 may receive other information associated with the plurality of user identifiers. Such information may include, but is not limited to, one or more attributes associated with each of the user identifiers, one or more user activity events having corresponding IP addresses and time stamps associated with user identifiers, user agent strings associated with the received events, and the like. As a non-limiting example, the user agent string may include various device specific information—“Mozilla/[version]([system and browser information])[platform]([platform details])[extension s]”. - Referring back to
FIG. 3 , atstep 304, once the initial list of clusters is received theMatchID analysis system 106 builds a master table based on the received device graph. Each entry in the master table includes at least a persistent master identifier (MatchID) that uniquely identifies on the plurality of received clusters, a user identifier (User ID) contained within the cluster identified by the MatchID and one or more attributes associated with the user identifier. Table 1 below illustrates a simplified version of the master table that can be built by theMatchID analysis system 106. -
TABLE 1 IP MatchID User ID Addresses Model Timestamp 123 A 1.2.3.4 iPhone7 2016-01-06 20:34:25 UTC 2.3.4.5 2016-01-08 18:29:25 UTC 3.4.5.6 2016-01-23 23:49:39 UTC 123 B 1.2.3.4 MacBook 2016-01-16 20:34:25 UTC 2.3.4.5 2016-01-26 00:43:32 UTC 123 C 1.2.3.4 GalaxyTab 2016-01-26 22:03:25 UTC - As noted above, generally, clusters of user identifiers within a device graph are not static. New user IDs may appear and others may get lost over time in various device graphs, for example, due to cookie expiration or deletion, device ID resets and/or newly purchased devices. According to an embodiment, the
MatchID analysis system 106 may periodically pull or receive from one or more servers 112 additional user identifier information as another plurality of clusters of user identifiers, referred to hereinafter as candidate clusters, for example, in the form of another device graph (step 306).FIG. 4 is an example of two different clusters of user identifiers associated with two different instants of time, in accordance with illustrative embodiments of the present invention. InFIG. 4 , afirst cluster 402 represents a cluster already stored in the master table. This cluster includes user identifiers A (402 a), B (402 b) and C (402 c) may be associated with apersistent master identifier 412 uniquely identifying this cluster. Asecond cluster 404 shown inFIG. 4 represents an exemplary candidate cluster received by theMatchID analysis system 106 atstep 306. Thesecond cluster 404 includes another plurality ofuser identifiers 404 a-404 c.User identifier D 404 c may comprise an iOS® Identifier For Advertisers (IDFA), for example. It should be noted thatclusters first cluster 402 may be associated with afirst time instant 408, while thesecond cluster 404 may be associated with asecond time instant 410. TheMatchID analysis system 106 is configured to determine whether the second cluster is associated with the same user as thefirst cluster 402, and if so assign the samepersistent master identifier 412 to the second cluster.FIG. 4 shows onecandidate cluster 404 for illustrative purposes only. Atstep 306, theMatchID analysis system 106 may include thousands or even millions of candidate clusters. - Referring back to
FIG. 3 , atstep 308, the MatchID analysis system 106 (e.g. clustering comparison execution module 202) may compare each of the plurality of candidate clusters with one or more clusters in the master table (Table 1) to identify matching user device identifiers. The results of the comparison are then analyzed by theMatchID analysis system 106 to determine which candidate clusters belong to the same person as clusters stored in the master table. More specifically, atstep 310, theMatchID analysis system 106 determines if any matching is successful. In response to determining that matching was successful (decision block 310, “Yes” branch), atstep 312, theMatchID analysis system 106 determines if there is only one candidate cluster having user identifiers overlapping with identifiers contained in a particular cluster in the master table (step 312). If so (decision block 312, “Yes” branch), theMatchID analysis system 106 assigns the persistent master identifier of the matching cluster in the master table to the matching candidate cluster. - According to the illustrative embodiment of
FIG. 5 , a persistent master identifier may be associated with a candidate cluster in a case where there is only one candidate cluster with overlapping UIDs, in accordance with illustrative embodiments of the present invention.FIG. 5 showsclusters FIG. 4 . In this figure, afirst link 502 represents a match between theuser identifier B 402 b of thefirst cluster 402 and the user identifier B 404 a of thesecond cluster 404, while asecond link 504 represents a match between theuser identifier C 402 c of thefirst cluster 402 and theuser identifier C 404 b of thesecond cluster 404 if thesecond cluster 404 is the only candidate cluster having user identifiers matching the identifiers of thefirst cluster 402, then theMatchID analysis system 106 decides thatclusters persistent master identifier 506 of thefirst cluster 402 to the second cluster 404 (step 314) and updates the master table (step 322). Table 2 below illustrates such update made to the master table (Table 1): -
TABLE 2 IP MatchID User ID Addresses Model Timestamp 123 D 1.2.3.4 iPhone7 2016-01-07 20:45:24 UTC 3.4.5.6 2016-02-12 00:55:44 UTC 123 B 1.2.3.4 MacBook 2016-01-16 20:34:25 UTC 2.3.4.5 2016-01-26 00:43:32 UTC 123 C 1.2.3.4 GalaxyTab 2016-01-26 22:03:25 UTC
In other words, in this case, the entry associated with the user identifier D (404 c) replaces the entry associated with the user identifier A (402 a) within thefirst cluster 402 stored in the master table. It should be noted that an entry associated with the user identifier A (402 a) may stay in the master table for a predetermined period of time before being purged by theMatchID analysis system 106. - Referring back to
FIG. 3 , in response to determining that there is more than one candidate cluster having overlapping user identifiers with the first cluster 402 (decision block 312, “No” branch), atstep 316, theMatchID analysis system 106 determines whether only one candidate cluster has a highest number of user identifiers overlapping with the user identifiers of thefirst cluster 402 if so (decision clock 316, “Yes” branch), theMatchID analysis system 106 assigns the persistent master identifier of the matching cluster in the master table to the candidate cluster with the highest number of overlapping user identifiers (step 318). - In the illustrative embodiment of
FIG. 6 , a persistent master identifier may be associated with a candidate cluster in a case where there is more than one candidate cluster with overlapping UIDs and only one candidate cluster having the highest number of overlapping UIDs, in accordance with illustrative embodiments of the present invention. Thefirst cluster 402 includes user identifiers A (402 a), B (402 b) and C (402 c) stored in the master table. Athird cluster 602 and afourth cluster 604 represent candidate clusters received by theMatchID analysis system 106 instep 306 and identified as having at least one matching user identifier. Thethird cluster 602 includes user identifiers A (602 a), B (602 b) and C (602 c), while thefourth cluster 604 includes only two user identifiers—user identifier C (604 a) and user identifier E (604 b). In one embodiment, the user identifier E may be a cookie ID for a browser application on a MacBook device. However, thethird cluster 602 has two user identifiers 602 a and 602 b overlapping with twouser identifiers links 606 and 608), while thefourth cluster 604 includes only one user identifier C (604 a) overlapping with one user identifier C (402 c) of the first cluster 402 (represented by the link 610). Since thethird cluster 602 has the highest number of overlapping identifiers, theMatchID analysis system 106 decides thatclusters persistent master identifier 412 of thefirst cluster 402 to thepersistent master identifier 612 of the third cluster 602 (step 318) and updates the master table (step 322). Table 3 below illustrates such update made to the master table (Table 1): -
TABLE 3 IP MatchID User ID Addresses Model Timestamp 123 A 1.2.3.4 iPhone7 2016-01-06 20:34:25 UTC 2.3.4.5 2016-01-08 18:29:25 UTC 3.4.5.6 2016-01-23 23:49:39 UTC 123 B 1.2.3.4 MacBook 2016-01-16 20:34:25 UTC 2.3.4.5 2016-01-26 00:43:32 UTC 123 D 1.2.3.4 iPhone7 2016-01-07 20:45:24 UTC 3.4.5.6 2016-02-12 00:55:44 UTC
In other words, in this case, the entry associated with the user identifier D (404 c) replaces the entry associated with the user identifier C (402 c) within thefirst cluster 402 stored in the master table. Furthermore, the entry associated with the user identifier C (402 c) may now be associated with thefourth cluster 604. - In the illustrative embodiment of
FIG. 7 , a persistent master identifier may be associated with a candidate cluster in a case where there is more than one candidate cluster with overlapping UIDs and more than one candidate cluster having the highest number of overlapping UIDs, in accordance with illustrative embodiments of the present invention. In addition to thefirst cluster 402,FIG. 7 shows afifth cluster 702 and asixth cluster 704 representing candidate clusters received by theMatchID analysis system 106 instep 306 and identified as having at least one matching user identifier. Thefifth cluster 702 includes user identifiers A (702 a), D (702 b) and E (702 c), while thesixth cluster 704 includes identifiers C (704 a) and F (704 b). In one embodiment, the user identifier F may be a cookie ID for a browser application on an iPhone device. In this case the fifth 702 and sixth 704 clusters have the same number of matching identifiers (1), represented bylinks FIG. 7 . - According to an embodiment of the present invention, referring back to
FIG. 3 yet again, in response to determining that there is more than one candidate cluster having the highest number of overlapping user identifiers with the first cluster 402 (decision block 316, “No” branch), atstep 320, theMatchID analysis system 106 may employ additional heuristics information in conjunction with the user device identifiers to associate two or more clusters to the same user. Such additional heuristics information may be advantageous in situations in which there is a tie between the candidate clusters having a highest number of matching user device identifiers (such as situation shown inFIG. 7 ). In an example, the heuristic information is a user identifier type heuristic that specifies a type of user identifier included in each cluster. In an embodiment, theMatchID analysis system 106 may employ one or more weighting factors, with stronger weights being associated with stronger user device identifiers. For example, theMatchID analysis system 106 may associate stronger weights with the device, application or system based user identifiers as compared to cookie based user device identifiers. - As another heuristics information example, location information, such as GPS location information, reverse Internet Protocol (IP) address mapping, and/or other information, may be employed as a weighting factor, with stronger weights being associated with user devices identifiers of the candidate clusters that are located in the same general geographic area as user device identifier of the cluster stored in the master table. Further, in cases in which such a weighting factor is low or not available (thus indicating that two separate user devices are not physically located closely to each other), the weighting factor may not reduce the effect of user device identifiers that indicate a strong association of the two or more user devices to the same user. In such cases, different user devices of the same user may be purposely positioned in different locations (e.g., due to the user travelling and leaving one of the user devices at home) or the user may employ different Internet services for different user devices.
- In other examples, additional heuristics information may include explicit identifiers obtained from third-party authentication services, such as those offered by Facebook® or Google®, which may be used to more correctly select two or more clusters associated to the same user. In a further example, the heuristic information may indicate the cluster having the highest number of user device identifiers. In an embodiment of the present invention, if none of the heuristics information helps to break the tie between candidate clusters, the
MatchID analysis system 106 may randomly select one of the candidate clusters atstep 320. - If matching the obtained candidate cluster's user device identifiers to respective user device identifiers in the clusters stored in the master table does not yield any matching candidate clusters (
decision block 310, “No” branch), atstep 324 theMatchID analysis system 106 compares attributes of user device identifiers in the candidate clusters to respective attributes of user device identifiers included in the clusters stored in the master table. In an example, the attributes may include the device models and visited IP addresses associated with each user device identifier in each cluster. Device models are typically names or codes that may be used as labels to distinguish one type of device from another. In a non-limiting example, device models may include iPhone_iOS10.3, PC_Window10.1 or GalaxyS7. TheMatchID analysis system 106 may be configured to extract device model information from the aforementioned user agent string. In one embodiment, theMatchID analysis system 106 may store both the device models and visited IP address information as part of an entry stored in the master table (as shown in Tables 1-3) above. - In the illustrative embodiment of
FIG. 8 , a persistent master identifier is associated with a candidate cluster based on, matching attributes associated with UIDs in a case where there are no overlapping UIDs, in accordance with illustrative embodiments of the present invention.FIG. 8 shows aseventh cluster 804 and aneighth cluster 808 representing candidate clusters received by theMatchID analysis system 106 instep 306. Theseventh cluster 804 includes user identifiers D 804 a andE 804 b, while theeighth cluster 808 includes identifiers F (808 a), G (808 b), and H (808 c). None of these identifiers match the identifiers A (402 a), B (402 b), and C (402 c) stored in thecluster 402. Furthermore,FIG. 8 illustrates various attributes associated with each identifier For example, the attributes 802 a-802 c are shown as part of thefirst cluster 402 and are associated withrespective identifiers 402 a-402 c, the attributes 806 a and 806 b are associated with the identifiers D 804 a andE 804 b (seventh cluster 804) and the attributes 810 a-810 c are associated with the identifiers F (808 a), G (808 b), and H (808 c) (eighth cluster 808). - According to an embodiment of the present invention, step 324 performed by the
MatchID analysis system 106 involves comparing combinations of attributes 806 a-806 b and 810 a-810 c of candidate clusters to combinations of attributes 802 a-802 c of clusters stored in the master table. At 326, theMatchID analysis system 106 determines if a match exists between the corresponding attributes. In certain example embodiments, if no match is found (decision block 326, “No” branch), then theMatchID analysis system 106 may assign a newly generated persistent master identifier to each candidate cluster having no matching attributes. However, if a match is found (decision block 326, “Yes” branch), at 330, theMatchID analysis system 106 determines if only one candidate cluster has the highest number of matching attributes at 330. In the example shown inFIG. 8 , thelinks first cluster 402 and user device identifier attributes 802 b and 806 b of theseventh cluster 804, respectively, while thelink 818 shows matching user device identifier attributes 802 a of thefirst cluster 402 and attributes 810 a of theeighth cluster 808. Since theseventh cluster 804 has the highest number of matching attributes, instep 332, theMatchID analysis system 106 assigns thepersistent master identifier 822 to theseventh cluster 804. - According to some embodiments of the present invention, the attribute information received by the
MatchID analysis system 106 instep 306 may further include frequencies of occurrence for each attribute combination in a predetermined period of time (e.g., past few days or past few weeks). Table 4 below illustrates a master table that stores frequencies of occurrence for each attribute combination: -
TABLE 4 IP MatchID User ID Addresses Model Frequency Timestamp 123 A 1.2.3.4 iPhone7 8 2016-01-06 20:34:25 UTC 2.3.4.5 7 2016-01-08 18:29:25 UTC 3.4.5.6 7 2016-01-23 23:49:39 UTC 123 B 1.2.3.4 MacBook 4 2016-01-16 20:34:25 UTC 2.3.4.5 9 2016-01-26 00:43:32 UTC 123 C 1.2.3.4 Galaxy Tab 2 2016-01-26 22:03:25 UTC - Such additional information may be advantageous in situations in which two or more candidate clusters have the same amount of matching attribute combinations. Accordingly, in response to determining that more than one candidate cluster has the highest number of matching attributes (
decision block 330, “No” branch), atstep 334, theMatchID analysis system 106 may assign the persistent master identifier to the cluster having attribute combinations that have been observed most frequently, which may be determined based on the stored timestamp information. In an embodiment of the present invention, if none of the attribute information helps to break the tie between the candidate clusters, theMatchID analysis system 106 may randomly select one of the candidate clusters atstep 334. - As shown in
FIG. 3 , each time theMatchID analysis system 106 assigns a persistent master identifier (steps step 322 and theMatchID analysis system 106 returns to step 306 and processes next received batch of the candidate clusters. - Advantageously, the various embodiments described herein provide a system for creating and maintaining a persistent master identifier for volatile or distinct clusters of user identifiers that are attributed to the same person. In the aforementioned embodiments, the system receives clusters of user identifiers stripped of personally identifiable information and looks for patterns linking one user device to another. In various embodiments, user identifiers may comprise any suitable unique identifiers. Furthermore, the automated system disclosed herein is configured to analyze the frequency of associations between user identifier attributes to determine the individual associations.
- As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
- Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or, semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
- Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- Aspects of the present invention are described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing, apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
- The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
Claims (20)
1. A computer-implemented method comprising using at least one hardware processor to:
store a plurality of stored clusters in a master table in a memory, wherein each stored cluster comprises a persistent master identifier that is associated with a plurality of user device identifiers;
receive, from one or more servers, one or more received clusters, wherein each received cluster comprises a plurality of user device identifiers; and,
for each of the one or more received clusters,
compare the plurality of user device identifiers in the received cluster with the plurality of user device identifiers in the plurality of stored clusters to match any overlapping user device identifiers between the received cluster and any stored clusters, and,
in response to matching one or more overlapping user device identifiers,
when all of the matching one or more overlapping user device identifiers are in only a single stored cluster, update the master table to associate the persistent master identifier of the single stored cluster with the plurality of user device identifiers in the received cluster, and,
when the matching one or more overlapping user device identifiers are matched across two or more stored clusters,
when one of the two or more stored clusters has more overlapping user device identifiers than any other of the two or more stored clusters, update the master table to associate the persistent master identifier of the one stored cluster with the plurality of user device identifiers in the received cluster, and,
when none of the two or more stored clusters has more overlapping user device identifiers than any other of the two or more stored clusters,
apply one or more heuristics to select one of the two or more stored clusters, and
update the master table to associate the persistent master identifier of the selected stored cluster with the plurality of user device identifiers in the received cluster.
2. The method of claim 1 , wherein applying one or more heuristics comprises weighting the matched one or more overlapping user device identifiers differently according to the one or more heuristics.
3. The method of claim 2 , wherein applying one or more heuristics comprises weighting overlapping user device identifiers that are based on a device identifier, application identifier, or system identifier higher than overlapping user device identifiers that are based on a cookie identifier.
4. The method of claim 2 , wherein applying one or more heuristics comprises weighting overlapping user device identifiers that are located in a same geographic area higher than overlapping user device identifiers that are not located in a same geographic area.
5. The method of claim 2 , wherein applying one or more heuristics comprises weighting a stored cluster that comprises more user device identifiers over a stored cluster that comprises fewer user device identifiers.
6. The method of claim 1 , wherein applying one or more heuristics comprises, when the one or more heuristics are unable to differentiate between the two or more stored clusters, randomly selecting one of the two or more stored clusters.
7. The method of claim 1 , wherein each of the plurality of user device identifiers, in each of the plurality of stored clusters and each of the one or more received clusters, is associated with one or more attributes, and wherein the method further comprises using the at least one hardware processor to, for each of the one or more received clusters, in response to not identifying any overlapping user device identifiers:
compare the attributes in the received cluster with the attributes in plurality of stored clusters to match any overlapping attributes between the received cluster and any stored clusters; and,
in response to matching one or more overlapping attributes,
when all of the matching one or more overlapping attributes are in only a single stored cluster, update the master table to associate the persistent master identifier of the single stored cluster with the plurality of user device identifiers in the received cluster, and,
when the matching one or more overlapping attributes are matched across two or more stored clusters,
when one of the two or more stored clusters has more overlapping attributes than any other of the two or more stored clusters, update the master table to associate the persistent master identifier of the one stored cluster with the plurality of user device identifiers in the received cluster, and,
when none of the two or more stored clusters has more overlapping attributes than any other of the two or more stored clusters, select one of the two or more stored clusters based on additional criteria, and update the master table to associate the persistent master identifier of the selected stored cluster with the plurality of user device identifiers in the received cluster.
8. The method of claim 7 , further comprising using the at least one hardware processor to, for each of the one or more received clusters, in response to not identifying any overlapping user device identifiers and any overlapping attributes:
generate a new unique persistent master identifier; and
store the received cluster as a new stored cluster in the memory, wherein the new stored cluster comprises the new unique persistent master identifier in association with the plurality of user device identifiers in the received cluster.
9. The method of claim 7 , wherein the one or more attributes comprise a device model.
10. The method of claim 7 , wherein the one or more attributes comprise a visited Internet Protocol (IP) address.
11. The method of claim 7 , wherein the one or more attributes comprise a frequency of an occurrence of at least one of the one or more attributes.
12. The method of claim 11 , wherein selecting one of the two or more stored clusters based on additional criteria comprises selecting the one of the two or more stored clusters with a highest frequency in the one or more attributes associated with its plurality of user device identifiers.
13. The method of claim 7 , wherein the one or more attributes comprise a time of an occurrence of at least one of the one or more attributes.
14. The method of claim 13 , wherein selecting one of the two or more stored clusters based on additional criteria comprises selecting the one of the two or more stored clusters with a most recent time in the one or more attributes associated with its plurality of user device identifiers.
15. The method of claim 7 , wherein the one or more attributes comprise a user agent string.
16. The method of claim 7 , wherein selecting one of the two or more stored clusters based on additional criteria comprises, when the additional criteria are unable to differentiate between the two or more stored clusters, randomly selecting one of the two or more stored clusters.
17. The method of claim 1 , wherein the plurality of user device identifiers in one or more of the plurality of stored clusters or one or more received clusters comprise at least one of a media access control (MAC) address, a serial number, an open device identification number (ODIN), a unique device identifier (UDID), a globally unique identifier (GUID), and an international mobile equipment identity (IMEI).
18. The method of claim 1 , wherein updating the master table to associate the persistent master identifier of a stored cluster with the plurality of user device identifiers in the received cluster comprises deleting any user device identifiers in the stored cluster that do no overlap with user device identifiers in the received cluster.
19. A system comprising:
a memory;
at least one hardware processor; and
one or more software modules that are configured to, when executed by the at least one hardware processor,
store a plurality of stored clusters in a master table in a memory, wherein each stored cluster comprises a persistent master identifier that is associated with a plurality of user device identifiers,
receive, from one or more servers, one or more received clusters, wherein each received cluster comprises a plurality of user device identifiers, and,
for each of the one or more received clusters,
compare the plurality of user device identifiers in the received cluster with the plurality of user device identifiers in the plurality of stored clusters to match any overlapping user device identifiers between the received cluster and any stored clusters, and,
in response to matching one or more overlapping user device identifiers,
when all of the matching one or more overlapping user device identifiers are in only a single stored cluster, update the master table to associate the persistent master identifier of the single stored cluster with the plurality of user device identifiers in the received cluster, and,
when the matching one or more overlapping user device identifiers are matched across two or more stored clusters,
when one of the two or more stored clusters has more overlapping user device identifiers than any other of the two or more stored clusters, update the master table to associate the persistent master identifier of the one stored cluster with the plurality of user device identifiers in the received cluster, and,
when none of the two or more stored clusters has more overlapping user device identifiers than any other of the two or more stored clusters,
apply one or more heuristics to select one of the two or more stored clusters, and
update the master table to associate the persistent master identifier of the selected stored cluster with the plurality of user device identifiers in the received cluster.
20. A non-transitory computer-readable medium having instructions stored thereon, wherein the instructions, when executed by a processor, cause the processor to:
store a plurality of stored clusters in a master table in a memory, wherein each stored cluster comprises a persistent master identifier that is associated with a plurality of user device identifiers;
receive, from one or more servers, one or more received clusters, wherein each received cluster comprises a plurality of user device identifiers; and,
for each of the one or more received clusters,
compare the plurality of user device identifiers in the received cluster with the plurality of user device identifiers in the plurality of stored clusters to match any overlapping user device identifiers between the received cluster and any stored clusters, and,
in response to matching one or more overlapping user device identifiers,
when all of the matching one or more overlapping user device identifiers are in only a single stored cluster, update the master table to associate the persistent master identifier of the single stored cluster with the plurality of user device identifiers in the received cluster, and,
when the matching one or more overlapping user device identifiers are matched across two or more stored clusters,
when one of the two or more stored clusters has more overlapping user device identifiers than any other of the two or more stored clusters, update the master table to associate the persistent master identifier of the one stored cluster with the plurality of user device identifiers in the received cluster, and,
when none of the two or more stored clusters has more overlapping user device identifiers than any other of the two or more stored clusters,
apply one or more heuristics to select one of the two or more stored clusters, and
update the master table to associate the persistent master identifier of the selected stored cluster with the plurality of user device identifiers in the received cluster.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/863,029 US20200259895A1 (en) | 2017-02-08 | 2020-04-30 | Maintenance of a persistent master identifier for clusters of user identifiers across a plurality of devices |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/427,840 US10666720B2 (en) | 2017-02-08 | 2017-02-08 | Maintenance of persistent master identifier for clusters of user identifiers across a plurality of devices |
US16/863,029 US20200259895A1 (en) | 2017-02-08 | 2020-04-30 | Maintenance of a persistent master identifier for clusters of user identifiers across a plurality of devices |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/427,840 Continuation US10666720B2 (en) | 2017-02-08 | 2017-02-08 | Maintenance of persistent master identifier for clusters of user identifiers across a plurality of devices |
Publications (1)
Publication Number | Publication Date |
---|---|
US20200259895A1 true US20200259895A1 (en) | 2020-08-13 |
Family
ID=63038119
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/427,840 Active 2037-07-17 US10666720B2 (en) | 2017-02-08 | 2017-02-08 | Maintenance of persistent master identifier for clusters of user identifiers across a plurality of devices |
US16/863,029 Abandoned US20200259895A1 (en) | 2017-02-08 | 2020-04-30 | Maintenance of a persistent master identifier for clusters of user identifiers across a plurality of devices |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/427,840 Active 2037-07-17 US10666720B2 (en) | 2017-02-08 | 2017-02-08 | Maintenance of persistent master identifier for clusters of user identifiers across a plurality of devices |
Country Status (1)
Country | Link |
---|---|
US (2) | US10666720B2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10769670B2 (en) | 2016-08-17 | 2020-09-08 | Criteo Sa | Runtime matching of computing entities |
US10581980B2 (en) * | 2017-06-01 | 2020-03-03 | Xandr Inc. | Device identification techniques using shared device graph |
US11469941B2 (en) * | 2017-10-13 | 2022-10-11 | BLX.io LLC | Configuration for IoT device setup |
US10554616B1 (en) | 2017-12-08 | 2020-02-04 | Criteo S.A. | Generating mobile device-specific identifiers across native mobile applications and mobile browsers |
CN112988842B (en) * | 2021-03-24 | 2023-12-22 | 北京百度网讯科技有限公司 | Method and device for associating user ID |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105556554A (en) * | 2013-06-20 | 2016-05-04 | 沃达方Ip许可有限公司 | Multiple device correlation |
US20150058181A1 (en) * | 2013-08-21 | 2015-02-26 | ShopAdvisor, Inc. | Methods and systems for product identifier mapping |
US10091312B1 (en) * | 2014-10-14 | 2018-10-02 | The 41St Parameter, Inc. | Data structures for intelligently resolving deterministic and probabilistic device identifiers to device profiles and/or groups |
WO2016073935A1 (en) * | 2014-11-07 | 2016-05-12 | T-Mobile Usa, Inc. | Multiple device association with a single telephone number |
US10497023B2 (en) * | 2015-10-02 | 2019-12-03 | Adobe Inc. | Generating persistent profile identifiers |
CN106603586B (en) * | 2015-10-14 | 2020-09-29 | 阿里巴巴集团控股有限公司 | Method, device and system for generating equipment identifier |
-
2017
- 2017-02-08 US US15/427,840 patent/US10666720B2/en active Active
-
2020
- 2020-04-30 US US16/863,029 patent/US20200259895A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20180227387A1 (en) | 2018-08-09 |
US10666720B2 (en) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200259895A1 (en) | Maintenance of a persistent master identifier for clusters of user identifiers across a plurality of devices | |
US11895204B1 (en) | Data structures for intelligently resolving deterministic and probabilistic device identifiers to device profiles and/or groups | |
US10110435B2 (en) | Techniques for associating variable versions of a cluster of devices identified at different times with the same user by assigning cluster identifiers | |
CN107316083B (en) | Method and apparatus for updating deep learning model | |
US11930085B2 (en) | Matching and attribution of user device events | |
US10031738B2 (en) | Providing application recommendations | |
US9686276B2 (en) | Cookieless management translation and resolving of multiple device identities for multiple networks | |
EP3178011B1 (en) | Method and system for facilitating terminal identifiers | |
CN109376534B (en) | Method and apparatus for detecting applications | |
US11244153B2 (en) | Method and apparatus for processing information | |
US11372922B1 (en) | Computer-implemented methods, systems comprising computer-readable media, and electronic devices for expanded entity and activity mapping within a network computing environment | |
US20180032601A1 (en) | Method and system for determining automation sequences for resolution of an incident ticket | |
CN107368513B (en) | Method and device for updating client database | |
CN107918617A (en) | Data query method and apparatus | |
US20190362010A1 (en) | Epsilon-closure for frequent pattern analysis | |
US20200241996A1 (en) | Distributed web page performance monitoring methods and systems | |
CN111177481B (en) | User identifier mapping method and device | |
CN110557351B (en) | Method and apparatus for generating information | |
US20150347112A1 (en) | Providing data analytics for cohorts | |
CN110737662A (en) | data analysis method, device, server and computer storage medium | |
WO2019061944A1 (en) | Data security-based method for updating medical software, and server | |
US11157470B2 (en) | Method and system for data quality delta analysis on a dataset | |
CN113760695A (en) | Method and device for positioning problem code | |
US11500985B1 (en) | Static and dynamic correlation of software development pipeline events | |
US11917029B1 (en) | System and method for feature aggregation for tracking anonymous visitors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: SAMBA TV, INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:FREE STREAM MEDIA CORP.;REEL/FRAME:058016/0298 Effective date: 20210622 |