Social networks can be thought of as a social structure that includes nodes that represent individuals or organizations that are interconnected by at least one type of interdependency, such as common values, visions, ideas, friendship, etc. Thus, a social network of an individual may include coworkers of the individual, schoolmates of the individual, friends of the individual, family of the individual, and other people that have a trusted relationship with the individual. In other words, people in a social network of the individual are known to such individual, and the individual is in some way comfortable with those people in the social network. Thus, typically, an individual would rather receive recommendations or advice from a person in the social network of the individual rather than, for instance, an unknown person.
Advances in computing and network technologies have caused social networks of individuals to be embodied/represented in a computer-readable format. For example, email applications are today commonplace, and an individual may have numerous email contact saved in an email application. Each of the email contacts can be thought of as an individual in the social network of the owner of an email account. In another example, many web sites are now dedicated to social networking, such that an individual can post pictures, videos, etc. of events pertaining to the life of the individual, and can allow trusted friends to view and comment on such photographs and videos. Furthermore, through use of one of such web sites, an individual can post web logs or status updates such that others in the social network of the individual can quickly discern recent events in the life of the individual. Typically, to become a contact of an individual on one of these social networking sites, two people must reach an agreement indicating that they know one another and that they accept each other as a social contact.
Furthermore, many of these social networking web sites are designed to capture different relationships. For example, a first social networking web site may be configured to embody business relationships between individuals, while a second web site may be less formal and configured to embody a less formal, more friendly, social network. Thus, different social networking sites are configured for different portions of a social network of an individual. In an example, if the individual were attempting to start a career in a certain field, such individual may contact people using a first social networking site for recommendations, while if the individual were searching for a restaurant at which to eat that evening, the individual may contact a second group of people via a second social networking site.
Currently it is difficult to leverage a social network of an individual to obtain specific information about a certain item or topic via the social network. For example, it can be time consuming for an individual to contact multiple people in the social network of the individual to obtain certain information. Furthermore, even if the individual had an automated mechanism for contacting each person in the social network of the individual, many of those individuals would have no helpful information to provide. For example, a contact living in Los Angeles would likely be unable to provide helpful information about which restaurant an individual should eat at on a Saturday in Boston.
The following is a brief summary of subject matter that is described in greater detail herein. This summary is not intended to be limiting as to the scope of the claims.
Described herein are various technologies pertaining to leveraging collective information in a social network of a user to automatically provide the user with a recommendation for a given context. As used herein, a context can be a topic, a certain item, a circumstance or set of circumstances, etc. A social network of a user may be embodied in a first data set that can be stored in a data store. For example, the first data set can be represented by a graph which in turn can represent the social network of the user. For instance, the graph may include a plurality of nodes that represent a plurality of individuals in the social network of the user (e.g., each note represents one individual in the social network of the user). The nodes can be connected by edges that represent a trusted relationship between individuals in the social network. Pursuant to an example, the edges can be weighted to indicate a level of trust between individuals, and can be directional in nature (e.g., an edge in one direction can indicate that a first individual is a contact of a second individual, while an edge in an opposite direction between nodes can indicate that the second individual is a contact of the first individual).
Furthermore, individuals in the social network of the user may have provided ratings for particular contexts. For example, individuals in the social network of the user may provide ratings with respect to restaurants, types of restaurants, movies, music, art, doctors, employers, etc. In many cases, these types of ratings may be beneficial to the individual. Not all individuals in the social network of the user, however, may have information that is useful to the user for a particular context. Accordingly, for a certain context, the social network of the user can be pared to generate a subnetwork of the social network, wherein the subnetwork comprises individuals that have useful information to the user for the certain context. Thus, conceptually, one or more edges and/or one or more nodes of the graph that represents the social network of the user can be automatically removed, thereby generating a subnetwork that comprises individuals that have provided ratings with respect to one or more contexts that are useful to the user with respect to a particular context.
The subnetwork and ratings corresponding to individuals in the subnetwork can then be leveraged to cause a recommendation for the particular context to be provided to the user. For instance, one or more recommendation algorithms may be executed over the subnetwork, wherein the recommendation is for the particular context. Pursuant to an example, the user may indicate that she wishes to be provided a recommendation for a pizzeria in Chicago. The social network of the user can be automatically pared to remove individuals that do not have information that is useful to the request of the user, thereby creating a subnetwork that comprises individuals that can provide the user with useful information with respect to the request. This knowledge of individuals that are in some way trusted by the user can be leveraged to automatically provide a recommendation for the context (e.g., provide a recommendation for a pizzeria in Chicago).
Other aspects will be appreciated upon reading and understanding the attached figures and description.
Various technologies pertaining to the automatic generation of recommendations will now be described with reference to the drawings, where like reference numerals represent like elements throughout. In addition, several functional block diagrams of example systems are illustrated and described herein for purposes of explanation; however, it is to be understood that functionality that is described as being carried out by certain system components may be performed by multiple components. Similarly, for instance, a component may be configured to perform functionality that is described as being carried out by multiple components.
With reference to
The edges may be weighted to indicate an amount of trust between two individuals represented by two nodes in the graph, wherein such weight can alter depending on context, may be based upon which site or application was used to infer the relationship between individuals, etc. For example, a larger weight can indicate that a first individual in the social network of the user is an email contact of the user, is a contact in one or more social networking web sites of the user, is a telephone contact of the user, etc., while a lighter weight can indicate that the individual is only a contact in one social networking site. Furthermore, the learned subnetwork 104 may be a portion of an entire social network of a user, wherein such portion has knowledge or information that is useful for generating a recommendation for a particular context. That is, the learned subnetwork 104 may be specific to the particular context. As used herein, a context may be a topic, an item, an event, a circumstance, a combination of circumstances, etc. Thus, for instance, if a user wished to receive a recommendation for an Italian restaurant, the context associated with the learned subnetwork 104 may be “Italian restaurants”.
Furthermore, a context may be location or time dependent. For instance, if the user wished to receive a recommendation for art galleries in a particular city, then the context would be location-dependent with respect to the particular city. Generation of a learned subnetwork 104 is described in greater detail below. The ratings 106 of individuals in the learned subnetwork 104 may be any suitable ratings, including numerical ratings, a “thumbs up” or “thumbs down”, alphabetical ratings, etc. For example, if an individual likes a certain restaurant, such individual could give a “thumbs up” to that restaurant. In another example, if an individual enjoyed a particular movie, such individual may assign a certain number of stars to that movie. Again the data repository 102 can retain such ratings 106.
The system 100 further includes a receiver component 108 that receives the learned subnetwork 104 and the ratings 106 of individuals in the learned subnetwork 104 that are stored in the data repository 102. For instance, the receiver component 108 can receive such data by way of a network connection. In another example, the data repository 102 may be or be included in a hard drive of a computer that is accessible by the receiver component 108.
The system 100 further comprises a recommender component 110 that can output a recommendation to a user based at least in part upon the learned subnetwork 104 and the ratings of individuals in the learned subnetwork 104. The recommender component 110 can output the recommendation with respect to a context that corresponds to the learned subnetwork 104. The recommender component 110 can output the recommendation to any suitable computing device. For example, the recommender component 110 can configure the recommendation to be displayed on a display screen of a mobile computing device, such as a portable telephone or personal digital assistant.
In operation, a user may wish to receive a recommendation for a particular context. For instance, the user may wish to receive a recommendation for a steakhouse in a particular city. Responsive to the user providing such context, the receiver component 108 can receive a learned subnetwork that corresponds to the particular context. As indicated above, the learned subnetwork 104 may include individuals that have made ratings or have some knowledge that in some way pertains to the particular context. Thus, the learned subnetwork 104 includes fewer individuals than an entire social network of the user. For example, the learned subnetwork 104 may include individuals that have patronized and rated steakhouse restaurants in the area of interest. In another example, the learned subnetwork 104 may include individuals that have rated steakhouses in other areas. Furthermore, it can be learned that ratings for certain types of movies correspond to ratings of steakhouses (e.g., individuals that enjoy steakhouses also typically enjoy comedy films). Thus, the learned subnetwork 104 may include individuals that have provided ratings for contexts that pertain to the particular context of interest.
The recommender component 110 may then execute a recommendation algorithm over the learned subnetwork 104 to generate a recommendation to the user for the particular context (e.g., can output a restaurant that the recommender component 110 finds that the user is likely to enjoy). In another example, the recommender component 110 can output a list of all steakhouses in the particular area and can assign such steakhouses a rating that is indicative of how well the user is expected to like each of the restaurants.
The recommender component 110 can use any suitable recommendation algorithm in connection with generating the recommendation. For example, the recommender component 110 can employ an algorithm based at least in part upon: a personalized page rank system, a random walk system, a Min-cut system, local, global and iterative majority systems, a positive response axiom technique, among others. In another example, the recommender component 110 can employ a majority-of-majorities algorithm in connection with outputting a recommendation, based upon the learned subnetwork 104 and the ratings 106. Some examples of recommendation algorithms that can be used by the recommender component are described in United States Patent Publication No. 2009/0112989 filed on Apr. 28, 2008 and entitled, “TRUST-BASED RECOMMENDATION SYSTEMS,” the entirety of which is incorporated herein by reference.
Referring now to
The aggregator component 202 can receive social networking data from the social network sources 204-208, and can aggregate such data to generate a first data set that is representative of a social network of the user 210. Specifically, the aggregator component 202 can cause the social network of the user 210 to be stored in a data repository 212 of a computing device.
Pursuant to an example, the aggregator component 202 can receive data from the social network sources 204-208 and output an aggregated data set that is representative of the social network of the user 210. This aggregated data set may be represented by a graph that includes a plurality of nodes and a plurality of edges, wherein nodes of the graph are representative of individuals in the social network of the user, and edges in the graph are representative of trusted relationships between individuals in the social network of the user. In an example, weight of edges in the graph can be indicative of one or more of the following: which social network source or sources correspond to the edge, implicitly inferred level of trust between individuals connected by an edge, explicitly provided information pertaining to a trusted relationship between individuals in the social network of the user 210, etc. Furthermore, the graph that is representative of the social network of the user 210 may be directional in nature. For example, an edge between nodes in a single direction can indicate that the trusted relationship is unidirectional (e.g., a first user is a trusted contact of a second user, but the second user is not a trusted contact of the first user). Furthermore, the aggregator component 202 can update the social network of the user 210 as contacts are added or removed from one or more of the social network sources 204-208 and/or as additional social network sources are added.
Now turning to
It can also be noted that the graph 300 comprises edges 352-364 between nodes 304-326. Such edges can represent trusted relationships between contacts of the user of interest represented by the node 302. For instance, the edge 356 can represent a trusted relationship between an individual represented by the node 310 and an individual represented by the node 312. Therefore, the social network of the user may include trusted relationships among contacts of the user.
Furthermore, while the graph 300 illustrates trusted relationships on a first degree basis between the user of interest represented by the node 302 and individuals in a social network of the user represented by nodes 304-326, it is to be understood that the graph 300 can be expanded to include contacts of contacts of the user of interest. The graph 300 may also include edges that represent relationships between such contacts. Pursuant to an example, an extent of the social network (e.g., one degree, two degrees, . . . ) can be selected by a user. As will be described in greater detail below, a social network of a user such as the social network represented by the graph 300 can be automatically modified to create a subnetwork that can be leveraged in connection with generating a recommendation for a particular context.
Referring now to
For instance, a plurality of individuals may have assigned a plurality of ratings to one or more of the contexts represented in the graph 400. By analyzing such ratings and contexts (e.g., through use of a statistical model, machine learning/data mining techniques, and/or clustering), relationships between different contexts can be inferred. As shown in the graph 400, a relationship exists between the node 410 and the node 412, as evidenced by an edge 451. Continuing with the example provided above, then, the edge 451 represents a relationship between Italian restaurants and pizzerias. That is, if an individual highly rates Italian restaurants, that individual will also be likely to highly rate pizzerias. In another example, ratings provided to contacts by one or more users can indicate that if an individual provides a certain rating to a comedy film represented by the node 434, then such person is also likely to provide a particular rating to a certain pizzeria represented by the node 422. In other words, some relationship exists between the context represented by the node 434 and the context represented by the node 422.
The edges 440-472 may be weighted and/or directional. For example, a weight of an edge between contexts may represent a level of relation between such contexts. Thus, if the edge 451 is assigned a relatively high weight, then such weight indicates that a relatively strong relationship exists between the context represented by the nodes 410 and 412. A direction of an edge can indicate a direction of a relation between contexts. For instance, if the edge 464 is directed from the node 436 to the node 434, such direction can indicate that if an individual assigns a particular rating to a context represented by the node 436, that individual is likely to provide a particular rating to a context represented by the node 434. The inverse, however, may not be true.
In an example, relationships such as relationships represented by the graph 400 can be based upon a global population or upon a social network of a particular user. For instance, if the social network of the particular user has a sufficient amount of data corresponding therewith for a variety of contexts, relationships between contexts can be learned/inferred with respect to individuals in the social network. If additional data is desired to be obtained, then ratings outside of the social network of the user with respect to a variety of contexts can be used in connection with learning/inferring relationships between contexts. As will be described below, the learned relationships between contexts can be used in connection with generating a subnetwork of a social network of a user to employ with respect to generating a recommendation for the user.
With reference now to
The system 500 additionally includes a network parer component 510. The network parer component 510 can automatically pare the social network of the user 504 to generate a subnetwork of the social network of the user 504 based at least in part on the ratings 506 and the learned context relationships 508, wherein the network parer component 510 generates the learned subnetwork according to a particular context. As noted above, the social network of the user 504 may be embodied as a first data set stored in the data repository 502, wherein a graph can be representative of the social network of the user 504. A network parer component 510 can receive a particular context and can act to automatically modify the graph to generate a second graph which is representative of a subnetwork of the social network of the user 504. The network parer component 510 can cause the learned subnetwork to be stored in a computer readable medium and/or provided to the recommender component 110 (
The network parer component 510 can perform the automatic paring of the social network of the user 504 through utilization of any suitable mechanism. In a particular example, the network parer component 510 can employ a leave-one-out technique in connection with paring the social network of the user 504. For instance, an individual in the social network of the user may have generated a rating for a particular context such that the rating for such context for the individual is known. The network parer component 510 can ignore this known rating and can cause the recommender component 110 (
This determined/estimated rating can be compared with the actual rating provided by the individual to ascertain how effectively the social network of the user 504 can be used to output a rating. Thereafter, the network parer component 510 can remove an edge in the graph representative of the social network of the user 504, thereby creating a subnetwork of the social network of the user. The recommender component 110 may again be used to generate an estimated rating for the particular context for the user based at least in part upon such subnetwork. Again, this rating can be retained and compared with the known rating for the context provided by the user.
The network parer component 510 can iteratively remove edges from the graph representative of the social network of the user 504 until an error function is minimized, wherein the error function can be any suitable error function including, but not limited to, a mean squared error function, a weighted average of squared errors function, or other suitable error function. By utilizing this leave-one-out technique, a substantially optimized subnetwork of the social network of the user 504 can be ascertained for the user for the particular context.
Additionally or alternatively, to avoid overfitting, a cost function can be employed in connection with removing an edge of the social network of the user 504. For example, a cost can be assigned to each edge, wherein removing such edge causes the cost to be incurred. Accordingly, removal of an edge can be justified if a predictive error output by the error function is sufficiently low to offset the penalty of removing an edge from the graph that represents the social network of the user 504. Again, once the appropriate subnetwork of the social network of the user 504 is determined for a particular context, the network parer component 510 can cause such subnetwork for the particular context to be stored in a data repository 502 or another depository, and/or passed to the recommender component 110 to generate a recommendation to the user for the particular contest.
While the network parer component 510 has been described as employing a leave-one-out technique in connection with determining a subnetwork of the social network of the user 504 for a particular context, it is to be understood that any suitable machine learning and/or data mining technique may be employed. For example, the network parer component 510 may use classifiers, a k-nearest neighbor technique, support vector machines, Bayesian belief algorithms, artificial neural networks, classifiers, or the like in connection with ascertaining a subnetwork of the social network of the user 504 for a particular context.
Turning now to
The recommender component 110 can be in communication with the receiver component 108 and can receive the learned subnetwork 104 from the receiver component 108. As noted above, the recommender component 110 may then generate a suitable recommendation algorithm over the learned subnetwork 104 and output a recommendation to the user 604 based at least in part upon the learned subnetwork for the particular context. The recommender component 110 may also generate the recommendation based at least in part upon the ratings 106.
After receiving and reviewing the recommendation and acting on such recommendation, the user 604 may agree or disagree with such recommendation. Accordingly, the user 604 may provide feedback pertaining to the recommendation generated by the recommender component 110. This feedback may be that the recommendation was accurate, that the user 604 liked or disliked a recommended item, or other suitable feedback. An update component 606 can receive the feedback and can automatically cause such feedback to be stored in a data repository 602 as ratings. Additionally, since the user 604 provides additional information pertaining to the context, the updater component 606 can automatically update the learned context relationships 508 retained in the data repository 602. Still further, since the user 604 generates additional information, the updater component 606 can automatically update the learned subnetwork 104 for the particular context, as well as update subnetworks for other contexts (e.g., due to relationships between contexts). While not shown, if the user 604 does not provide feedback, it may be inferred that the user 604 acted and agreed with the recommendation. Accordingly, the updater component 606 can update at least one of the learned subnetwork, the ratings, and/or the learned context relationships 508, based at least in part on the recommendation output by the recommender component 110.
From the above it can be ascertained that the user 604 can leverage her social network to obtain meaningful recommendations for contexts of interest to the user 604. Furthermore, such recommendations can be based upon a subset of individuals in the social network of the user 604 that have knowledge that is relevant to the context of interest to the user 604. That is, the user 604 can leverage knowledge of a portion of the social network of the user that has provided ratings that in some way pertain to the context that is of interest to the user 604.
In another example, the systems described herein may be in some way monetized. For instance, if the recommendation is for a particular product or service and the user 604 acts upon the recommendation, she may receive a discount on the product or service. In another example, one or more of the systems may be used in an advertising context, wherein advertisers may be willing to provide payment for advertisements that are based on a recommendation provided to the user 604. In still yet another example, some form of micropayment may be provided to users that rate products, services, or other contexts, such as to provide the systems described herein with additional information to further refine the generation of recommendations based upon subnetworks of a social network of a user.
Furthermore, while the paring of networks was described above as removing one or more edges or one or more nodes from a graph that is representative of a social network or subnetwork, it is to be understood that the network parer component 510 is in actuality modifying a data set that can be represented by such graph. For purposes of explanation, however, the actions of the network parer component 510 are described herein and in the claims as occurring on a graph.
With reference now to
Moreover, the acts described herein may be computer-executable instructions that can be implemented by one or more processors and/or stored on a computer-readable medium or media. The computer-executable instructions may include a routine, a sub-routine, programs, a thread of execution, and/or the like. Still further, results of acts of the methodologies may be stored in a computer-readable medium, displayed on a display device, and/or the like.
Referring now to
At 706, a data repository is accessed, wherein the data repository comprises a subnetwork of the trusted social network. That is, the data repository comprises a data set that is representative of the subnetwork of the trusted social network. For example, the subnetwork of the trusted social network may comprise individuals that have provided ratings with respect to the particular context or contexts that are known or inferred to be related to the particular context. Thus, the individuals in the subnetwork have experience that is at least related to the context of interest to the user.
At 708, the recommendation for the certain context is generated based at least in part on the subnetwork of the trusted social network and ratings of individuals in the subnetwork of the trusted social network. For example, the ratings may be ratings for items, experiences, services, products, etc. that in some way pertain to the context of interest to the user. The methodology 700 completes at 710.
Turning now to
At 806, data that is indicative of relationships between various contexts is accessed. This data can be learned based at least in part on ratings provided by individuals to various contexts, can be obtained by way of clustering, may be explicitly entered, etc.
At 808, ratings provided by individuals in the trusted social network are accessed. For example, the ratings may be stored in a data repository of a computing device.
At 810, a context with respect to which a recommendation is desirably generated is received. For example, the user may indicate that she wishes to receive a recommendation for a restaurant in a particular geographic region. In another example, the user may wish to receive a recommendation for a particular movie.
At 812, the social network is automatically modified to generate a subnetwork, wherein the modification is based at least in part upon the data indicative of relationships between contexts, the ratings accessed at 808, and the contexts received at 810. In an example, a supervised learning technique may be used in connection with removing at least one edge or at least one node from a graph that is representative of the trusted social network accessed at 804. The methodology 800 completes at 814.
Referring now to
At 906, a request is received for a recommendation with respect to a particular context. At 908, a plurality of ratings for a plurality of different contexts generated by individuals in the social network of the user are received.
At 910, the first data set is automatically modified to create a second data set that is representative of a subnetwork of the social network of the user. For instance, individuals in the subnetwork of the social network of the user may have provided ratings that somehow pertain to the context pertaining to the request for the recommendation received at 906. Specifically, the second data set can be representative of a second weighted graph, and the second weighted graph can be representative of the subnetwork of the social network. Specifically, the first data set can be modified by removing at least one edge of the first weighted graph to generate the second weighted graph. The first data set can be automatically modified, based at least in part upon the received plurality of ratings and the particular context.
At 912, a recommendation algorithm is executed over the second data set to generate the recommendation for the particular context. Thus the recommendation is based upon ratings from individuals that have some association with the context. The methodology 900 completes at 914.
Now referring to
The computing device 1000 additionally includes a data store 1008 that is accessible by the processor 1002 by way of the system bus 1006. The data store 1008 may include executable instructions, ratings provided by individuals, a trusted social network of a user, a subnetwork of the trusted social network for a particular context, one or more recommendation algorithms, etc. The computing device 1000 also includes an input interface 1010 that allows external devices to communicate with the computing device 1000. For instance, the input interface 1010 may be used to receive instructions from an external computer device, from a user, etc. The computing device 1000 also includes an output interface 1012 that interfaces the computing device 1000 with one or more external devices. For example, the computing device 1000 may display text, images, etc. by way of the output interface 1012.
Additionally, while illustrated as a single system, it is to be understood that the computing device 1000 may be a distributed system. Thus, for instance, several devices may be in communication by way of a network connection and may collectively perform tasks described as being performed by the computing device 1000.
As used herein, the terms “component” and “system” are intended to encompass hardware, software, or a combination of hardware and software. Thus, for example, a system or component may be a process, a process executing on a processor, or a processor. Additionally, a component or system may be localized on a single device or distributed across several devices.
It is noted that several examples have been provided for purposes of explanation. These examples are not to be construed as limiting the hereto-appended claims. Additionally, it may be recognized that the examples provided herein may be permutated while still falling under the scope of the claims.