The present disclosure generally relates to the field of machine learning for making predictions about user, and more specifically, to predicting attributes of unresolved users of an online system for whom limited information is otherwise available.
Online systems, such as social networking systems, often need to choose content to be distributed to users. This becomes more difficult when characteristics of the users are unknown to the online systems, since the online systems will then have little or no information on which to draw when identifying the more appropriate content for the users. Unfortunately, this is often the case for many users, such as when those users are not presently logged into the online systems, or do not have accounts on the online systems at all. Accordingly, in such situations, the online systems are unable to determine the most appropriate content to distribute to such “unresolved” users, possibly resulting in those users being included in audiences for content that is not as relevant to those users due to this lack of data about the users' interests and demographic profiles.
An online system uses machine-learning based prediction of attributes of “unresolved” users of the online system to determine the most appropriate content to distribute to such “unresolved” users. An “unresolved” user is a user that the online system cannot at that moment associate with an account on the online system (e.g., the user is not logged in, or possibly does not have account at all). When a user is unresolved, the online system has limited information so it is difficult to determine in which audiences for content the user should be included by the online system. As one example, a content provider might define an audience for the content provider's content as all females between 18-20. But if a new user becomes available to receive content at a site or application outside of the online system while the user is not logged into the online system, the online system may not have enough data about the user to determine if the user meets the defined audience for the content.
According to some examples, the online system predicts the attributes of “unresolved” users in a series of steps based on information available about those users. The online system receives from content providers a set of content items associated with an audience defining demographic attributes of users for display to users of the online system. The online system derives features based on a client device of an unresolved user, such as a user for whom a value of one or more demographic attributes is not known because the user is not logged in to the online system. The demographic attributes to be determined may include, as one example, the age of the user, and/or the location of the user (e.g., Santa Clara County). For each of the demographic attributes, the online system forms a training set of users for the demographic attribute. The online system trains a classifier to predict the demographic attribute for a user based on client device features of users of the training set as input to a machine learning algorithm. When the online system detects an opportunity to provide one of the received content items to an unresolved user who the online system is unable to match to a user account on the online system, the online system applies one or more of the trained classifier to predict one or more demographic attributes for the unresolved user by performing a set of steps. In one example, the online system derives the client device features from the client device of the unresolved user. The online system provides the features as input to one of the trained classifiers derived from machine learning. The online system obtains as an output from the trained classifier a prediction of a value for at least one of the demographic attributes of the unresolved user (e.g., that the user is age 28, or in the age range 25-28). The online system selects content to provide for display to the unresolved user based on the predicted values of the demographic attributes of the unresolved user.
In one example, the online system derives a set of features of client devices of users visiting the online system. For instance, the set of features may include: indications of whether given software applications are installed on a mobile phone (e.g., a first feature indicating whether a first given application is installed on the client device, a second feature indicating whether a second given application is installed, etc.), information related to the software applications that are installed on the client device (e.g. genre, developer's name, free vs. paid), the time of usage of a software application that is installed, the number and type of software applications used, the type of certain application installed (e.g., type of gaming application), the type of operating system used in the client device, the type of mobile phone representing the client device, any information available regarding the type of user related to the client device, or any combination thereof.
The online system then trains a classifier or machine learning model to determine values of the demographic attribute (e.g. female gender) for users based on the user profiles on the online system. The online system forms a training set of the known users for the demographic attribute based on the determined values (e.g., a “female” training set of users known based on their profiles to have the “female” value of the “gender” demographic attribute). The online system trains a classifier for the demographic attribute by providing the client device features of known users of the training set as input to a supervised machine learning algorithm such that the algorithm learns what client device features are commonly associated with that demographic attribute (e.g., female users tend to have installed certain applications on their phones, tend to use them at certain times of day, tend to have certain types of phones over others, and tend to use certain operating systems over others, etc.).
When an unresolved user of the online system then visits a website or a mobile application that is not the online system while the user is not logged into the online system through a client device of the user, the user's identity is not known to the online system and it may not be possible for the online system to match the user to the user's profile or account on the online system. The online system applies the trained classifier to infer the missing demographic attributes. To do so, the online system derives the same type of client device features derived as part of the training process (e.g., indications of software applications installed on the client device). The online system provides the derived features as input to the trained classifier. The online system obtains as an output from the trained classifier a prediction of a value for at least one of the demographic attributes of the unresolved user (e.g., a prediction that the user is female and in the age range 18-20). The online system selects content to provide to the user based on the predicted value of the demographic attribute (e.g., whether the user is female) and provides the selected content to the user.
The features and advantages described in the specification are not all inclusive and, in particular, many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter.
The figures depict embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
The client devices 110 are one or more computing devices capable of receiving user input as well as transmitting and/or receiving data via the network 140. The client devices 110 are configured to communicate via the network 140, which may comprise any combination of local area and/or wide area networks, using both wired and/or wireless communication systems.
The online system 120 represents a system that can communicate with the client devices 110 via the network 140. In some embodiments, the online system 120 may represent a social networking system including users with various demographic attributes. The online system 120 may distribute content items to the client devices 110 based on the targeting criteria for the users with specific demographic attribute, provided that those demographic attributes are known. Examples of demographic attributes analyzed in different embodiments include age, gender, location, and income, and in some embodiments, may also include information of user interests, such as whether the user is interested in video games, in travel, in gardening, in a particular movie, and the like. The content items distributed by the online system 120 may include, but not restricted to, sponsored content items (e.g. advertisements).
However, in many cases, the demographic attributes of a user are not known to the online system 120, and such users are tagged as “unresolved” users, defined as a user with limited information in the online system 120, since they have not been linked to an account with the online system 120 (e.g., are not logged in, or possibly do not have account at all). An “unresolved” user may also represent a user which has logged in to the online system but has not provided any information about a user attribute in the user's profile. For example, the “unresolved” user is a user which has logged into the online system but has not listed the gender attribute, and accordingly, the method described in the disclosure predicts the gender attribute.
To address this situation, the online system 120 comprises a demographic predictor 102 that infers the demographic attributes of the users that have missing information about their demographic attributes. The demographic predictor 102 can infer the demographic attributes based on device-level features received from the client devices 110, as described below with reference to
One or more third party systems 130 may be coupled to the network 140 for communicating with the online system 120. In one embodiment, a third party system 130 is an application provider communicating information describing applications for execution by a client device 110 or communicating data to client devices 110 for use by an application executing on the client device, such as a web site that provides (for example) news. In other embodiments, a third party system 130 provides content or other information for presentation via a client device 110. A third party system 130 may also communicate information to the online system 120, such as sponsored content items, content, or information about an application provided by the third party system 130.
The content provider 150 may be coupled to the network 140 for communicating with the online system 120. In one embodiment, the content provider 150 provides content items to share with the client device 110 through the online system 120. For example, the content provider 150 might provide a promotional content item to the online system 120 and the online system 120 might present the promotional content item to a user associated with the client device 110.
Each user of the online system 120 is associated with a user profile, which is stored in the user profile store 205. A user profile includes declarative information about the user that was explicitly shared by the user and may also include profile information inferred by the online system 120. In one embodiment, a user profile includes multiple data fields, each describing one or more attributes of the corresponding user of the online system 120. Examples of information stored in a user profile include biographic, demographic, and other types of descriptive information, such as work experience, educational history, gender, hobbies or preferences, location and the like. Examples of demographic attributes analyzed in different embodiments include age, gender, geographic location, and income, and in some embodiments, may also include information about user interests, such as whether the user is interested in video games, in travel, in gardening, in a particular movie, and the like.
The demographic predictor 102 is a module of the online system 120 that can predict or infer the demographic attributes (e.g. age, gender, geographic location, etc.) of an unresolved user. The demographic predictor 102 includes a feature extractor 210, a training set extractor 220, a trainer 230, a classifier 235, and a prediction store 250.
The feature extractor 210 is a module that extracts features associated with users that can be used for machine learning purposes. For example, in various embodiments the features include information related to the software applications that are installed on the client device (e.g., each such feature corresponding to a unique application, and whether that application is installed), the use of a software application that is installed (e.g., for each unique application, times that the application was executed or terminated and/or the amount of time between execution and termination, the times that the application was used for particular purposes, the times that the application used particular functionality of the client device (e.g., the network)), the number and type of software applications used (e.g., a count of the distinct applications and of the number of applications in different predefined categories, such as “utilities,” “social networking”, “multimedia”, and the like), the type of gaming application installed, the type of operating system used in the client devices 110, the type of mobile phone representing the client devices 110 (e.g., ANDROID or IPHONE), information regarding the type of user (e.g. a gamer, a hacker) related to the client devices 110, or any combination thereof.
In one example, the feature extractor 210 extracts information related to the use of software applications from music services such as SPOTIFY® that are installed on the client devices 110. For instance, the feature extractor 210 may extract information related to the time of installation of the software application in the client devices 110, and/or the time lapse between installation of an application and its first usage. For example, the feature extractor 210 may determine that the user installed SPOTIFY® a week before, which can be used for inferring the level of interest of the user to actively listen to music on the client device.
The training set extractor 220 identifies a training set of the overall data set that is representative of the data that the online system 120 classifies. More specifically, the training set extractor 220 identifies, for each demographic attribute to be assessed, client devices 110 of the users of the online system 120 for whom the desired labels (i.e. the demographic attributes) are already known. For example, for the “female” demographic attribute, the training set extractor 220 extracts a positive training set comprising the client devices 110 of a set of users for whom the gender attribute is known to be female (e.g., users who have accounts and are logged into the online system 120, and form whose profiles the user's gender is known). In another example, for an “is age 13-15” attribute, the training set extractor 220 identifies a positive training set comprising client device 110 of users known to be in the age range of 13-15.
In some embodiments, the training set extractor 220 compares the training set with data from a third party data tracking system (e.g. Nielsen data) to verify that the training set is accurate. For example, the training set extractor 220 confirms that the user correctly reported the age, gender, and other demographic attributes in the user profile by comparing the user profile data with the data stored by the third party tracking system. The training set extractor 220 filters out data with low confidence from the training set to increase the accuracy of the training set.
In one embodiment, for example, the content sharing system 130 partitions the training sets for the various attributes in order to produce a number of sub-sets of the training sets. For instance, the training sets could be clustered to produce sub-sets of users that are similar to each other according to some similarity metric. The content sharing system 130 runs a test campaign on the third party tracking system for the users of the sub-sets, indicating to the third-party tracking system that the target is the particular attribute values defining the training sets from which the sub-sets were drawn. (E.g., if a sub-set was drawn from a “males aged 18-24” set, the campaign indicates that it's targeted to males aged 18-24.) The content sharing system 130 accordingly obtains from the accuracy measurements from the third-party tracking system for the various sub-sets, indicating how accurate the targeting was (e.g., that 98% of the users of the “males aged 18-24” set were in fact males aged 18-24). Based on the accuracy measurements, the content sharing system 130 removes from the training sets the users of the sub-sets with sufficiently low accuracy measurements (e.g., below a fixed accuracy threshold, or some amount of the lowest accuracy measurements).
The trainer 230 derives a classifier 235 for each attribute for which the training set extractor 220 identified a training set. The demographic predictor 102 uses the classifier 235 to apply a label to a user from the unresolved group of users. The trainer 230 trains the classifier based on information about the known users of the online system 120, as extracted by the feature extractor 210.
The trainer 230 provides the extracted features from the feature extractor 210 as an input to a training algorithm. The trainer 230 may be based on one or more training algorithms including, but not restricted to, regression algorithms, instance-based algorithms, regularization algorithms, decision tree algorithms, Bayesian algorithms, clustering algorithms, dimensionality reduction algorithms, or any combination thereof. In one example, the trainer 230 uses a linear Support Vector Machine (SVM) algorithm. In some embodiments, the trainer 230 selects the training algorithm based on the size of the training set.
The trainer 230 trains the classifier 235 generated from the training set formed by the training set extractor 220. The classifier 235, when applied to features corresponding to a user (or a client device 110 of the user) outputs a prediction of value for at least one of the demographic attributes of the unresolved user. For example, the classifier 235 outputs a prediction as a female user in the age range of 18 to 20.
The content distributor 245 selects content to provide to the user based on the demographic attribute value prediction by the classifier 235. For example, the content distributor 245 might select a particular shared content item to provide to the user when the classifier 235 outputs a predicted value of demographic attributes that matches with the audience targeted by the provider of such shared content item (e.g., predicting that the user is 28, where the provider of the shared content item specified that the appropriate audience includes users aged 20-30). That is, the online system 120 uses the classifier 235 generated by the trainer 230 to infer demographic attribute information for the users from the unresolved group. The content distributor 245 uses the inferred demographic attribute information to target the audience for the shared content by providing the shared content that matches the demographic profiles with inferred attributes. For example, if the predictor 102 inferred that a particular unresolved user is female, the content distributor 245 could use that inference to determine that it should provide content that females would tend to like.
Different types of content may be provided by the content distributor 245 in different embodiments. In one embodiment, the content is an advertisement appropriate for the inferred attributes. In other embodiments, the content is a news story.
The prediction store 250 stores the values of demographic attributes inferred by the classifier 235. In some embodiments, the prediction store 250 may represent a repository of demographic information and data (e.g. distribution graph) about a set of users that an unresolved user follows or is followed upon. In alternate embodiments, the prediction store 250 may represent a repository of information about a set of interests of known users using a unique software application on the client devices 110.
The content store 255 stores objects that each represent various types of content. Examples of content represented by an object include a page post, a status update, a photograph, a video, a link, a shared content item, a gaming application achievement, a check-in event at a local business, a brand page, or any other type of content. Online system users may create objects stored by the content store 255, such as status updates, photos tagged by users to be associated with other objects in the online system 120, events, groups or applications. In some embodiments, objects are received from third-party applications or third-party applications separate from the online system 120. In one embodiment, objects in the content store 255 represent single pieces of content, or content “items.” Hence, online system users are encouraged to communicate with each other by posting text and content items of various types of media to the online system 120 through various communication channels. This increases the amount of interaction of users with each other and increases the frequency with which users interact within the online system 120.
One or more content items included in the content store 255 include content for presentation to a user and a bid amount for the content. The content is text, image, audio, video, or any other suitable data presented to a user. In various embodiments, the content also specifies a page of content. For example, a content item includes a landing page specifying a network address of a page of content to which a user is directed when the content item is accessed. The bid amount is included along with the content item by a user and is used to determine an expected value, such as monetary compensation, provided by an advertiser to the online system 120 if content in the content item is presented to a user, if the content in the content item receives a user interaction when presented, or if any suitable condition is satisfied when content in the content item is presented to a user. For example, the bid amount included in a content item specifies a monetary amount that the online system 120 receives from a user who provided the content item to the online system 120 if content in the content item is displayed. In some embodiments, the expected value to the online system 120 of presenting the content from the content item may be determined by multiplying the bid amount by a probability of the content of the content item being accessed by a user.
In various embodiments, a content item includes various components capable of being identified and retrieved by the online system 120. Example components of a content item include: a title, text data, image data, audio data, video data, a landing page, a user associated with the content item, or any other suitable information. The online system 120 may retrieve one or more specific components of a content item for presentation in some embodiments. For example, the online system 120 may identify a title and an image from a content item and provide the title and the image for presentation rather than the content item in its entirety.
Various content items may include an objective identifying an interaction that a user associated with a content item desires other users to perform when presented with content included in the content item. Example objectives include: installing an application associated with a content item, indicating a preference for a content item, sharing a content item with other users, interacting with an object associated with a content item, or performing any other suitable interaction. As content from a content item is presented to online system users, the online system 120 logs interactions between users presented with the content item or with objects associated with the content item. Additionally, the online system 120 receives compensation from a user associated with content item as online system users perform interactions with a content item that satisfy the objective included in the content item.
Additionally, a content item may include one or more targeting criteria specified by the user who provided the content item to the online system 120. Targeting criteria included in a content item request specify one or more characteristics of users eligible to be presented with the content item. For example, targeting criteria are used to identify users having user profile information, edges, or actions satisfying at least one of the targeting criteria. Hence, targeting criteria allow a user to identify users having specific characteristics, simplifying subsequent distribution of content to different users.
In various embodiments, the content store 255 includes multiple campaigns, which each include one or more content items. In various embodiments, a campaign in associated with one or more characteristics that are attributed to each content item of the campaign. For example, a bid amount associated with a campaign is associated with each content item of the campaign. Similarly, an objective associated with a campaign is associated with each content item of the campaign. In various embodiments, a user providing content items to the online system 120 provides the online system 120 with various campaigns each including content items having different characteristics (e.g., associated with different content, including different types of content for presentation), and the campaigns are stored in the content store.
In one embodiment, targeting criteria may specify actions or types of connections between a user and another user or object of the online system 120. Targeting criteria may also specify interactions between a user and objects performed external to the online system 120, such as on a third party system 130. For example, targeting criteria identifies users that have taken a particular action, such as sent a message to another user, used an application, joined a group, left a group, joined an event, generated an event description, purchased or reviewed a product or service using an online marketplace, requested information from a third party system 130, installed an application, or performed any other suitable action. Including actions in targeting criteria allows users to further refine users eligible to be presented with content items. As another example, targeting criteria identifies users having a connection to another user or object or having a particular type of connection to another user or object.
An edge may include various features each representing characteristics of interactions between users, interactions between users and objects, or interactions between objects. For example, features included in an edge describe a rate of interaction between two users, how recently two users have interacted with each other, a rate or an amount of information retrieved by one user about an object, or numbers and types of comments posted by a user about an object. The features may also represent information describing a particular object or user. For example, a feature may represent the level of interest that a user has in a particular topic, the rate at which the user logs into the online system 120, or information describing demographic information about the user. Each feature may be associated with a source object or user, a target object or user, and a feature value. A feature may be specified as an expression based on values describing the source object or user, the target object or user, or interactions between the source object or user and target object or user; hence, an edge may be represented as one or more feature expressions.
The edge store 260 also stores information about edges, such as affinity scores for objects, interests, and other users. Affinity scores, or “affinities,” may be computed by the online system 120 over time to approximate a user's interest in an object or in another user in the online system 120 based on the actions performed by the user. A user's affinity may be computed by the online system 120 over time to approximate the user's interest in an object, in a topic, or in another user in the online system 120 based on actions performed by the user. Computation of affinity is further described in U.S. patent application Ser. No. 12/978,265, filed on Dec. 23, 2010, U.S. patent application Ser. No. 13/690,254, filed on Nov. 30, 2012, U.S. patent application Ser. No. 13/689,969, filed on Nov. 30, 2012, and U.S. patent application Ser. No. 13/690,088, filed on Nov. 30, 2012, each of which is hereby incorporated by reference in its entirety. Multiple interactions between a user and a specific object may be stored as a single edge in the edge store 260, in one embodiment. Alternatively, each interaction between a user and a specific object is stored as a separate edge. In some embodiments, connections between users may be stored in the user profile store 205, or the user profile store 205 may access the edge store 260 to determine connections between users.
The edge store 260 also stores information about edges corresponding to online system 120 that has a unidirectional connection between the users. For example, the edge store 260 includes a first type of affinity score for users that follow other users and a second type of affinity score for users that are followed by a specific user. In alternate embodiments, the edge store 260 also includes a weighted affinity score that has individual weights assigned by the online system 120 corresponding to the strength of each of the unidirectional connection between its users.
The content selection module 265 selects one or more content items for communication to a client device 110 to be presented based on the predicted values of the demographic attributes of the unresolved user. Content items eligible for presentation to the user are retrieved from the content store 255 or from another source by the content selection module 265, which selects one or more of the content items for presentation to the viewing user. In various embodiments, the content selection module 265 includes content items eligible for presentation to the user in one or more selection processes, which identify a set of content items for presentation to the user. For example, the content selection module 265 determines measures of relevance of various content items to the user based on characteristics associated with the user by the online system 120 and based on the user's affinity for different content items. Based on the measures of relevance, the content selection module 265 selects content items for presentation to the user. As an additional example, the content selection module 265 selects content items having the highest measures of relevance or having at least a threshold measure of relevance for presentation to the user. Alternatively, the content selection module 265 ranks content items based on their associated measures of relevance and selects content items having the highest positions in the ranking or having at least a threshold position in the ranking for presentation to the user.
The online system 120 determines 310 features of a client device 110 for whom a value of one or more demographic attributes is not known (e.g., because the user is an unresolved user due to lack of login). For example, the demographic attributes may represent age, gender, or physical location of the user. The determined features (e.g. information related to the software applications that are installed on the client device, the use of a software application that is installed, the number and type of software applications, the type of operating system used in the client devices 110, the type of mobile phone representing the client devices 110) represent properties of the client devices 110 as extracted by the feature extractor 210 described above with reference to
The online system 120 provides 320 the features as input to a classifier 235 derived from machine learning by the trainer 230 using training algorithms such as linear Support Vector Machine (SVM), as described above with reference to
The online system 120 obtains 330 from the classifier 235 an output including the prediction of a value for at least one of the demographic attributes of the unresolved user.
The online system 120 selects 340 content to provide to the user based on the predicted values of the demographic attributes of the unresolved user. For example, the content distributor 245 provides an appropriate newsfeed item or other sponsored content to the unresolved user responsive to the user having the target criteria based on age or gender as described above with reference to
It is appreciated that although
The storage device 408 is any non-transitory computer-readable storage medium, such as a hard drive, compact disk read-only memory (CD-ROM), DVD, or a solid-state memory device. The memory 406 holds instructions and data used by the processor 402. The graphics adapter 412 displays images and other information on the display 418. The network adapter 416 couples the computer 400 to a local or wide area network.
As is known in the art, a computer 400 can have different and/or other components than those shown in
As is known in the art, the computer 400 is adapted to execute computer program modules for providing functionality described herein. As used herein, the term “module” refers to computer program logic utilized to provide the specified functionality. Thus, a module can be implemented in hardware, firmware, and/or software. In one embodiment, program modules are stored on the storage device 408, loaded into the memory 406, and executed by the processor 402.
Embodiments of the entities described herein can include other and/or different modules than the ones described here. In addition, the functionality attributed to the modules can be performed by other or different modules in other embodiments. Moreover, this description occasionally omits the term “module” for purposes of clarity and convenience.
The present invention has been described in particular detail with respect to one possible embodiment. Those of skill in the art will appreciate that the invention may be practiced in other embodiments. First, the particular naming of the components and variables, capitalization of terms, the attributes, data structures, or any other programming or structural aspect is not mandatory or significant, and the mechanisms that implement the invention or its features may have different names, formats, or protocols. Also, the particular division of functionality between the various system components described herein is merely for purposes of example, and is not mandatory; functions performed by a single system component may instead be performed by multiple components, and functions performed by multiple components may instead performed by a single component.
Some portions of above description present the features of the present invention in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. These operations, while described functionally or logically, are understood to be implemented by computer programs. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules or by functional names, without loss of generality.
Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Certain aspects of the present invention include process steps and instructions described herein in the form of an algorithm. It should be noted that the process steps and instructions of the present invention could be embodied in software, firmware or hardware, and when embodied in software, could be downloaded to reside on and be operated from different platforms used by real time network operating systems.
The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored on a computer readable medium that can be accessed by the computer. Such a computer program may be stored in a non-transitory computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of computer-readable storage medium suitable for storing electronic instructions, and each coupled to a computer system bus. Furthermore, the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
The algorithms and operations presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will be apparent to those of skill in the art, along with equivalent variations. In addition, the present invention is not described with reference to any particular programming language. It is appreciated that a variety of programming languages may be used to implement the teachings of the present invention as described herein, and any references to specific languages are provided for invention of enablement and best mode of the present invention.
The present invention is well suited to a wide variety of computer network systems over numerous topologies. Within this field, the configuration and management of large networks comprise storage devices and computers that are communicatively coupled to dissimilar computers and storage devices over a network, such as the Internet.
Finally, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.