U.S. patent application number 14/191867 was filed with the patent office on 2015-04-16 for generating member profile recommendations based on common connection data in a social graph.
This patent application is currently assigned to Linkedln Corporation. The applicant listed for this patent is Linkedln Corporation. Invention is credited to Samir M. Shah.
Application Number | 20150106361 14/191867 |
Document ID | / |
Family ID | 52810556 |
Filed Date | 2015-04-16 |
United States Patent
Application |
20150106361 |
Kind Code |
A1 |
Shah; Samir M. |
April 16, 2015 |
GENERATING MEMBER PROFILE RECOMMENDATIONS BASED ON COMMON
CONNECTION DATA IN A SOCIAL GRAPH
Abstract
Systems and methods for generating recommendations based on data
derived from a social network are described. For example, a first
indirect connection of a source member profile may be identified.
The first indirect connection is a member profile connected to the
source member through a first connection path. A second indirect
connection of the source member profile is also identified. The
second indirect connection is a member profile connected to the
source member through a second connection path. A selection is made
between the first indirect connection and the second indirect
connection based on a comparison of common connection scores
calculated for the indirect connections. The selected indirect
connection is then surfaced to a client device associated with the
source member profile.
Inventors: |
Shah; Samir M.; (San
Francisco, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Linkedln Corporation |
Mountain View |
CA |
US |
|
|
Assignee: |
Linkedln Corporation
Mountain View
CA
|
Family ID: |
52810556 |
Appl. No.: |
14/191867 |
Filed: |
February 27, 2014 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61891787 |
Oct 16, 2013 |
|
|
|
Current U.S.
Class: |
707/723 |
Current CPC
Class: |
G06F 16/24 20190101;
G06Q 50/01 20130101; G06F 3/04842 20130101; H04L 67/306
20130101 |
Class at
Publication: |
707/723 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A computer-implemented method comprising: identifying a first
indirect connection of a source member profile, the first indirect
connection being a member profile connected to the source member
profile through a first connection path that includes member
connections between the source member profile, a first direct
connection, and the first indirect connection; identifying a second
indirect connection of the source member profile, the second
indirect connection being a member profile connected to the source
member profile through a second connection path that includes
member connections between the source member profile, a second
direct connection, and the second indirect connection; selecting,
by one or more processors, between the first indirect connection
and the second indirect connection based on a comparison of a
common connection score calculated for the first indirect
connection and a common connection score calculated for the second
indirect connection; and surfacing the selected indirect connection
to a client device associated with the source member profile.
2. The computer-implemented method of claim 1, further comprising
calculating the common connection score associated with the first
indirect connection based on a function of common connection data
associated with one or more of the member connections of the first
connection path.
3. The computer-implemented method of claim 1, further comprising
calculating the common connection score associated with the second
indirect connection based on a function of common connection data
associated with one or more of the member connections of the second
connection path.
4. The computer-implemented method of claim 1, wherein the
operation of identifying the first indirect connection of the
source member profile and the operation of identify the second
direct connection are performed in response to detecting a
recommendation event.
5. The computer-implemented method of claim 4, wherein the
recommendation event being a service request sent by a service
generating connection recommendations for the source member
profile.
6. The computer-implemented method of claim 4, wherein the common
connection score associated with the first indirect connection and
the common connection score associated with the second indirect
connection are both calculated prior to receiving the
recommendation event.
7. The computer-implemented method of claim 1, wherein the
operation of identifying the first indirect connection of the
source member profile is performed by using a member profile
identifier assigned to the source member profile to search a name
value data source that returns a list of member profile identifier
and common connection score pairs, the list include a member
profile identifier and common connection score pairs including a
pair including a member profile identifier assigned to the first
indirect connection and the common connection score associated with
the first indirect connection.
8. The computer-implemented method of claim 1, further comprising
calculating the common connection score associated with the first
indirect connection based on common connection data of a member
connection between the source member profile and the first direct
member connection.
9. The computer-implemented method of claim 1, wherein calculating
the common connection score associated with the first indirect
connection is based further on common connection data of a member
connection between the first direct member connection and the first
indirect member connection.
10. The computer-implemented method of claim 1, wherein the
operation of surfacing the selected indirect connection to the
client device associated with the source member profile includes
communicating data relating to a user interface element capable of
sending a request to invite the first indirect connection to form a
member connection with the source member profile.
11. A computer system comprising: a recommendation engine
implemented by at least one processor and configured to: identify a
first indirect connection of a source member profile, the first
indirect connection being a member profile connected to the source
member profile through a first connection path that includes member
connections between the source member profile, a first direct
connection, and the first indirect connection; identify a second
indirect connection of the source member profile, the second
indirect connection being a member profile connected to the source
member profile through a second connection path that includes
member connections between the source member profile, a second
direct connection, and the second indirect connection; select, by
one or more processors, between the first indirect connection and
the second indirect connection based on a comparison of a common
connection score calculated for the first indirect connection and a
common connection score calculate for the second indirect
connection; and a presentation engine implemented by the at least
one processor and configured to surface the selected indirect
connection to a client device associated with the source member
profile.
12. The computer system of claim 11, further comprising calculating
the common connection score associated with the first indirect
connection based on a function of common connection data associated
with one or more of the member connections of the first connection
path.
13. The computer system of claim 11, further comprising calculating
the common connection score associated with the second indirect
connection based on a function of common connection data associated
with one or more of the member connections of the second connection
path.
14. The computer system of claim 11, wherein the operation of
identifying the first indirect connection of the source member
profile and the operation of identify the second direct connection
are performed in response to detecting a recommendation event.
15. The computer system of claim 14, wherein the recommendation
event being a service request sent by a service generating
connection recommendations for the source member profile.
16. The computer system of claim 14, wherein the common connection
score associated with the first indirect connection and the common
connection score associated with the second indirect connection are
both calculated prior to receiving the recommendation event.
17. The computer system of claim 11, wherein the operation of
identifying the first indirect connection of the source member
profile is performed by using a member profile identifier assigned
to the source member profile to search a name value data source
that returns a list of member profile identifier and common
connection score pairs, the list include a member profile
identifier and common connection score pairs including a pair
including a member profile identifier assigned to the first
indirect connection and the common connection score associated with
the first indirect connection.
18. The computer system of claim 11, further comprising calculating
the common connection score associated with the first indirect
connection based on common connection data of a member connection
between the source member profile and the first direct member
connection.
19. The computer system of claim 11, wherein calculating the common
connection score associated with the first indirect connection is
based further on common connection data of a member connection
between the first direct member connection and the first indirect
member connection.
20. A non-transitory computer-readable medium storing executable
instructions thereon, which, when executed by a processor, cause
the processor to perform operations comprising: identifying a first
indirect connection of a source member profile, the first indirect
connection being a member profile connected to the source member
profile through a first connection path that includes member
connections between the source member profile, a first direct
connection, and the first indirect connection; identifying a second
indirect connection of the source member profile, the second
indirect connection being a member profile connected to the source
member profile through a second connection path that includes
member connections between the source member profile, a second
direct connection, and the second indirect connection; selecting,
by one or more processors, between the first indirect connection
and the second indirect connection based on a comparison of a
common connection score calculated for the first indirect
connection and a common connection score calculate for the second
indirect connection; and surfacing the selected indirect connection
to a client device associated with the source member profile.
Description
RELATED APPLICATIONS
[0001] This application claims priority from U.S. Provisional Appl.
No. 61/891,787, filed Oct. 16, 2013, entitled "GENERATING
CONNECTION RECOMMENDATIONS BASED ON RECENT CONNECTIONS AND
CONNECTIONS OF CLOSE CONNECTIONS," all of which is incorporated
herein by reference in its entirety for all purpose.
TECHNICAL FIELD
[0002] The present disclosure generally relates to information
retrieval and processing. More specifically, the present disclosure
relates to methods, systems and computer program products for
generating recommendations based on data derived from a social
graph of a social network service.
BACKGROUND
[0003] Online social network services provide members with a
mechanism for defining, and memorializing in a digital format,
representations of themselves (e.g., member profiles) and their
relationships with other people. This digital representation of
relationships between members is frequently referred to as a social
graph. Many social network services utilize a social graph to
facilitate electronic communications and the sharing of information
between its users or members. For instance, the relationship
between two members of a social network service, as defined in the
social graph of the social network service, may determine the
access and sharing privileges that exist between the two members.
As such, the social graph in use by a social network service may
determine the manner in which two members of the social network
service can interact with one another via the various communication
and sharing mechanisms supported by the social network service.
[0004] Some social network services aim to enable friends and
family to communicate and share with one another, while others are
specifically directed to business users with a goal of facilitating
the establishment of professional networks and the sharing of
business information. For purposes of the present disclosure, the
terms "social network" and "social network service" are used in a
broad sense and are meant to encompass services aimed at connecting
friends and family (often referred to simply as "social networks"),
as well as services that are specifically directed to enabling
business people to connect and share business information (also
commonly referred to as "social networks" but sometimes referred to
as "business networks" or "professional networks").
[0005] With many social network services, members are prompted to
provide a variety of personal information, which may be displayed
in a member's personal web page. Such information is commonly
referred to as "personal profile information", or simply "profile
information", and when shown collectively, it is commonly referred
to as a member's profile. For example, with some of the many social
network services in use today, the personal information that is
commonly requested and displayed as part of a member's profile
includes a member's age (e.g., birth date), gender, contact
information, home town, address, the name of the member's spouse
and/or family members, a photograph of the member, interests, and
so forth. With certain social network services, such as some
business network services, a member's personal information may
include information commonly included in a professional resume or
curriculum vitae, such as information about a person's education,
employment history, job skills, professional organizations, and so
forth.
[0006] Some traditional social network services may behave as a
searchable directory of people. In such systems, a user interface
("UI") may be provided to a member to allow that member to search
for other members of the social network to connect. For example,
the member may use the UI to enter key terms or other properties in
which to search a population of member profiles. Based on the
search result, the member may search through the member profiles
matching the search criteria to identify member profiles that are
of interest. Thus, traditional systems may rely on knowledge and
actions from the searching member to identify member profiles that
are of interest.
DESCRIPTION OF THE DRAWINGS
[0007] Some embodiments of the technology are illustrated by way of
example and not limitation in the figures of the accompanying
drawings.
[0008] FIG. 1 is a block diagram illustrating various functional
components of a suitable computing environment, consistent with
some embodiments, for generating member profile
recommendations.
[0009] FIG. 2 is a data diagram illustrating an example of a social
graph that includes member profiles connected to each other through
member connections, according to an example embodiment.
[0010] FIG. 3 is a data diagram illustrating common connection data
that may be calculated from the social graph, according to an
example embodiment.
[0011] FIG. 4 is a data diagram illustrating an example of how a
common connection data may represent a number of connections shared
between member profiles, according to an example embodiment.
[0012] FIG. 5 is a data diagram illustrating such a data structure
for storing common connection data associated with the indirect
connections of a member profile, according to an example
embodiment.
[0013] FIG. 6 is a flow diagram illustrating an example method for
generating member profile recommendations based on common
connection data derived from a social graph, consistent with some
embodiments.
[0014] FIG. 7 is a flow diagram illustrating a method that
pre-computes common connection scores for indirect connections of a
source member, according to an example embodiment.
[0015] FIG. 8 is a user interface diagram illustrating a user
interface for surfacing member profile recommendations to a source
member of a social network service, consistent with some
embodiments
[0016] FIG. 9 is a block diagram of a machine in the form of a
computing device within which a set of instructions, for causing
the machine to perform any one or more of the methodologies
discussed herein, may be executed.
DETAILED DESCRIPTION
Overview
[0017] The present disclosure describes, among other things,
methods, systems, and computer program products, which individually
provide functionality for generating recommendations based on data
derived from a social graph of a social network service. In the
following description, for purposes of explanation, numerous
specific details are set forth in order to provide a thorough
understanding of the various aspects of different embodiments of
the present invention. It will be evident, however, to one skilled
in the art, that the present invention may be practiced without all
of the specific details.
[0018] Example embodiments may include systems and methods to
generate recommendations based on data derived from social graph
data. One type of recommendation that may be generated by example
embodiments is a connection recommendation. A connection
recommendation may be a recommendation that attempts to solve a
link prediction problem by using node (e.g., a member profile) and
edge (e.g., member connections) features in the social graph to
predict whether an invitation will occur between two nodes that are
not directly connected. One type of feature of the social graph
that may be used by example embodiments is a common connection
score between member profiles. A "common connection score," as used
herein, may be a value that represents the number of member
profiles that two member profiles have in common.
[0019] Accordingly, an example embodiment may relate to methods,
systems, and machine readable medium for generating a
recommendation based on a common connection score assigned to a
member connection in a social graph. That is, some embodiments may
generate, for a source member profile, a member profile
recommendation of an indirect connection (e.g., second-degree
connections, third-degree connections, and so forth) of the source
member profile based on common connection data related to member
connections in a social graph of the source member profile. To
generate such member profile recommendations, a recommendation
engine may, for example, identify a first indirect connection of a
source member profile. The first indirect connection may be a
member profile connected to the source member profile through a
first connection path that includes member connections between the
source member profile, a first direct connection, and the first
indirect connection.
[0020] The recommendation engine may then, in some embodiments,
identify a second indirect connection of the source member profile.
The second indirect connection may be a member profile connected to
the source member profile through a second connection path that
includes member connections between the source member profile, a
second direct connection, and the second indirect connection.
[0021] The recommendation engine may then select between the first
indirect connection and the second indirect connection based on a
comparison of a common connection score calculated for the first
indirect connection and a common connection score calculate for the
second indirect connection.
[0022] The indirect connection selected by the recommendation
engine may then be used for a number of purposes, depending on
embodiment. For example, in some embodiments, a presentation engine
may then surface the selected indirect connection to the source
member profile as a connection recommendation. The connection
recommendation may be configured to cause a client device operated
by the source member to display information from the member profile
of the selected indirect connection (e.g., name, title, profile
image, and the like). The connection recommendation may also be
configured to cause the client device to display an interface
element that, if activated by the source member, causes the social
network service to form a direct connection between the source
member and the selected indirect connection.
[0023] Example embodiments may provide many practical applications.
For example, some systems and methods may leverage information
associated with member connections between members of a social
network service in order to provide targeted, actionable
information to the members, in order to encourage and/or prompt the
members to seek additional connections within the social network
service, encourage outside users to join the social network
service, and other benefits.
[0024] In the following description, for purposes of explanation,
numerous specific details are set forth in order to provide a
thorough understanding of the various aspects of different
embodiments of the present invention. It will be evident, however,
to one skilled in the art, that the present invention may be
practiced without all of the specific details.
[0025] Other advantages and aspects of the inventive subject matter
will be readily apparent from the description of the figures that
follows.
Suitable System
[0026] FIG. 1 is a block diagram illustrating various components or
functional modules of a social network service 100, consistent with
some embodiments. The modules, systems, and/or engines shown in
FIG. 1 represent a set of executable software instructions and the
corresponding hardware (e.g., memory and processor) for executing
the instructions. However, one skilled in the art will readily
recognize that various additional functional modules and engines
may be used with the social network service 100 to facilitate
additional functionality that is not specifically described herein.
Furthermore, the various functional modules and engines depicted in
FIG. 1 may reside on a single server computer, or may be
distributed across several server computers in various
arrangements
[0027] As shown in FIG. 1, a front end layer of the social network
system 110 includes a user interface module (e.g., a web server)
112, which receives requests from various client-computing devices,
such as a source member device 104, over a network 106, and
communicates appropriate responses to the requesting client
devices. For example, the user interface module(s) 112 may receive
requests in the form of Hypertext Transport Protocol (HTTP)
requests, or other web-based, application programming interface
(API) requests. The source member device 104 may be any suitable
computing device--such as a personal computer, laptop, cellular
phone, smart phone, computing tablet, and the like--executing
conventional web browser applications, or applications that have
been developed for a specific platform (e.g., operating system,
computer system, or some combination thereof).
[0028] The network 106 may be any communications network utilizing
any one of a number of well-known transfer protocols (e.g., HTTP).
Examples of communication networks include a local area network
("LAN"), a wide area network ("WAN"), the Internet, mobile
telephone networks, Plain Old Telephone (POTS) networks, wireless
data networks (e.g., Wi-Fi.RTM. and WiMax.RTM. networks), and so
on.
[0029] The application logic layer of the social network system 110
includes various application server modules 114, which, in
conjunction with the user interface module(s) 112, generates
various user interfaces (e.g., web pages) with data retrieved from
various data sources in the data layer. With some embodiments,
individual application server modules 114 are used to implement the
functionality associated with various services and features of the
social network service. For instance, the ability to generate
connection recommendations for a source member may be service (or
services) implemented in independent application server modules
114. Similarly, a variety of other applications or services that
are made available to members of the social network service will be
embodied in their own application server modules 114. For example,
with some embodiments, the social network system 110 includes
modules that may individually or in combination provide connection
recommendations, such as a recommendation engine 116 and a
presentation engine 117. The recommendation engine 116 may be a
computer-implemented module configured to generate member profile
recommendations. Example embodiments may use a variety of
information to generate the connection recommendations, such as
data derived from member connections in a social graph.
[0030] The presentation engine 117 may be a computer-implemented
module configured to generate user interface elements for
interacting with the member profile recommendations. For instance,
the presentation engine 117 may generate data and logic that, when
executed on by one or more processors, causes a client device to
display a user interface that depicts the member profile
recommendation. In some cases, the presentation engine 117 may use
the member profile recommendation to generate user interface
elements that may cause the social network service 100 to create a
member connection (or initiate the process for forming a member
connection) between the source member profile and the member
profile represented by the member profile recommendation.
[0031] As shown in FIG. 1, the data layer includes several
databases, such as a database 118 for storing profile data.
Consistent with some embodiments, when a person initially registers
to become a member of the social network service, the person will
be prompted to provide some personal information, such as his or
her name, age (e.g., birthdate), gender, interests, contact
information, home town, address, the names of the member's spouse
and/or family members, educational background (e.g., schools,
majors, matriculation and/or graduation dates, etc.), employment
history, skills, professional organizations, and so on. This
information is stored, for example, in the database with reference
number 118.
[0032] Once registered, a member may invite other members, or be
invited by other members, to connect via the social network
service. A "member connection, or simply "connection," may require
a bi-lateral agreement by the members, such that both members
acknowledge the establishment of the connection. It is to be
appreciated that members may "connect" with entities other than
member profiles, such as companies, groups, or any other suitable
cohort. The various associations and relationships that the members
establish with other members, or with other entities represented by
date stored in the database 118, are stored and maintained within
the social graph, shown in FIG. 1 with reference number 120.
[0033] The social network service 100 may provide a broad range of
other applications and services that allow members the opportunity
to share and receive information, often customized to the interests
of the member. For example, with some embodiments, the social
network service may include a photo sharing application that allows
members to upload and share photos with other members. With some
embodiments, members may be able to self-organize into groups, or
interest groups, organized around a subject matter or topic of
interest. With some embodiments, the social network service 100 may
host various job listings providing details of job openings with
various organizations.
[0034] As members interact with the various applications, services
and content made available via the social network service, the
members' behavior (e.g., content (e.g., profiles) viewed, links
selected, messages sent, etc.) may be monitored and information
concerning the member's behavior may be stored, for example, as
indicated in FIG. 1 by the database with reference number 122. One
type of behavior data that may be stored in database 122 is member
activity between a member having one member profile with another
member having another member profile. As described above, examples
of member activities include activities where one member: visits a
profile page of a member, messages the member, saves the member in
a contact list, introduces the member to another member
profile.
[0035] Example embodiments may use workflows (e.g., Hadoop.RTM.
workflows) to implement some portions of the recommendation engine
116. These workflows may execute feature extraction tasks--signals
such as the recency of a member connection, company and school
overlap, geographical distance, similar ages, and many
others--followed by a model application step. The resulting data
model of these workflows may be a key-value store where the key is
a member profile identifier and the value is a list of member id,
common connection score pairs.
Example of Social Graph Data
[0036] As discussed above, the recommendation engine 116 may be
configured to process data from a social graph to generate member
profile recommendations. Accordingly, a social graph is now
discussed in greater detail. FIG. 2 is a data diagram illustrating
an example of a social graph 200 that includes member profiles
202A-G connected to each other through member connections 204A-F,
according to an example embodiment. The member profiles 202A-G,
commonly referred to as nodes of the social graph 200, may each
represent a member profile of a user of the social network service.
For clarity of description, the social graph 200 may be the social
graph for the member profile 202A, also referred herein as a
"source member profile."
[0037] The member connections 204A-F may be data or logic that
represents a member connection between two member profiles. By way
of example and not limitation, a member connection may represent: a
member profile accepting a connection request or invite from
another member profile; a member profile sending a member
connection request or invite to another member; a member importing
information from an address book or other database or online
location that includes information identifying users or people that
are associated with the member; a member following another member;
a member viewing the member profile or another member or viewing
information identifying potential connections, such as potential
connections inferred and/or suggested to the member by the social
network service 130; and so on. In some embodiments, a member
connection can be unidirectional (e.g., formed by following or
subscribing) or bidirectional (e.g., formed by "connecting" or
"friending"). It is also not a limitation of this description that
two member connections who are deemed "connections" for the
purposes of this disclosure are not necessarily connected in real
life, but that can be the case.
[0038] With respect to a particular member profile, a member
connection may be a direct member connection or an indirect member
connection. When a member connection of a social graph connects two
member profiles, those two member profiles may be referred to as a
first-degree connections and the member connection between the two
members may be referred to as a first-degree member connection. To
illustrate, the member profile 202A is first-degree connections
with member profiles 202B and 202D because the member profile 202A
is connected to member profile 202B via the member connection 204C
and the member profile 202A is connected to member profile 202D via
the member connection 204B.
[0039] In comparison to a direct connection, an indirect connection
is where two member profiles lack a first-degree member connection
but a path between the two member profiles exists in the social
graph. The number of edges (e.g., member connections) in a minimum
path that connects a member profile to another profile is
considered the degree of the connection between the member
profiles. For example, FIG. 2 shows that the member profiles 202C
and 202F are second-degree connections to the member profile 202A
because the minimum path from 202A to 202C includes two member
connections (204C and 204E), and the minimum path from 202A to 202F
also includes two member connections (204C and 204D). For the same
reason, it should be appreciated that member profile 202E is also a
second-degree connection. The limit on the number of degrees of
separation for member connections that a member profile is allowed
is typically dictated by the restrictions and policies implemented
by the social networking service.
[0040] Thus, a social graph (e.g., the member profiles and
connection activities thereof) may be a data structure that
illustrates how a member profile (e.g., the source member profile
202A) is "connected" to other member profiles of the social network
service.
[0041] Some embodiments of the social graph 200 may include data in
addition to the data representing connection between member
profiles, as shown in FIG. 2. For example, FIG. 3 is a data diagram
illustrating common connection data that may be calculated from the
social graph 200, according to an example embodiment. FIG. 3 shows
that the social graph 200 may include common connection data 306A-G
that corresponds to the member connections 204A-G. "Common
connection data," as used herein, may include any suitable data
that represents a measurement of how connected a source member
profile is to an indirect connection in a social graph. In an
example embodiment, the common connection data for a member
profile, relative to the source member profile, may be a count of
the number of member profiles that the source member profile and
the member profile share as direct connections.
[0042] With continued reference to FIG. 3, the member profiles
202A-G each include common connection data (e.g., common connection
data 306A-G) that indicate the number of member connections the
member profile and the source member profile have in common. For
example, the member profile 202A and the member profile 202B have
10 member connections in common (e.g., as specified by common
connection data 306B), and the member profile 202A and the member
profile 202D have 1 member connection in common (e.g., as specified
by common connection data 306D). Thus, the member profile 202B has
more member connections in common with the source member profile
202A than does the member profile 202D.
[0043] For clarity of description and illustration, it is to be
appreciated that the social graph 200 shown in FIGS. 2 and 3 is
simplified in that these figures do not show all the member
connections and member profiles in the social graph. Thus, it may
not apparent from the social graph 200 how the common connection
data is derived. To better illustrate common connection data, FIG.
4 is a data diagram illustrating an example of how a common
connection data may represent a number of connections shared
between member profiles, according to an example embodiment. For
example, FIG. 4 shows that the member profile 202A is a
first-degree connection of member profiles 402A-F. FIG. 4 also
shows that the member profile 202F is a first-degree connection of
member profiles 402C-H. Because both member profiles 202A and 202F
are first-degree connection of member profiles 402C-F, the member
connection data 306F is equal to four.
[0044] The common connection data 306A-G of FIG. 3 may be stored in
a data structure that maps an identifier assigned to a member
connection to one or more member identifier-common connection score
pairs. FIG. 5 is a data diagram illustrating such a data structure
500 for storing common connection data associated with the indirect
connections of a member profile, according to an example
embodiment. Conceptually, the data structure 500 may operate as a
lookup table, where member profile identifiers may be used as an
index to one or more member identifier-common connection pair
scores. For example, the source member profile identifier 502 may
be used as an index to retrieve the common connection scores
associated with one or more indirect connections of the source
member profile. For example, the member profile identifier-common
connection score pair 504 may include a member profile identifier
assigned to member profile 202C (e.g., `ABCD`) and a common
connection score associated with the member profile 202C (e.g.,
`15`). The member profile identifier-common connection score pair
506 may include a member profile identifier assigned to member
profile 202E (e.g., `EFGH`) and a common connection score
associated with the member profile 202E (e.g., `4`).
Example Methods of Generating Member Profile Recommendations
[0045] As described herein, the recommendation engine 116 may
perform various methods when generating member profile
recommendations based on common connection data derived from a
social graph. FIG. 6 is a flow diagram illustrating an example
method 600 for generating member profile recommendations based on
common connection data derived from a social graph, consistent with
some embodiments. The method 600 may be performed by the
recommendation engine 116 and presentation engine 117 and,
accordingly, is described herein merely by way of reference
thereto. However, it will be appreciated that the method 600 may be
performed on any suitable hardware. The method 600 may also be
performed by operating on the social graph 200 and data structure
shown in FIGS. 2-5 and, accordingly, is described herein merely by
way of reference thereto. However, it will be appreciated that the
method 600 may be performed on any suitable social graph or data
structure.
[0046] At operation 602, the recommendation engine 116 may detect a
recommendation event. A recommendation event may be an event that
indicates that the recommendation engine 116 is to generate a
member profile recommendation for a source member. In some cases,
the recommendation engine 116 may detect the recommendation event
through an explicit request through an application programmable
interface (e.g., a function call or web-based service request) or
based on detecting that the source member profile logged into or
otherwise accessed the social network. The recommendation event may
include data that specifies a source member profile (e.g., a member
profile identifier that uniquely identifies the source member
profile from the other member profiles in the social network
service) for the member profile recommendation.
[0047] At operation 604, responsive to detecting the recommendation
event, the recommendation engine 116 may identify a first indirect
connection of a source member profile. The first indirect
connection may be a member profile connected to the source member
through a first connection path that includes member connections
between the source member profile, a first direct connection, and
the first indirect connection. With temporary reference to FIG. 3,
an example of a first connection path may be the minimum path from
member profile 202A to member profile 202C. It is to be appreciated
that the minimum path from member profile 202A to member profile
202C may include an edge from member profile 202A to member profile
202B (e.g., member connection 204C) and an edge from member profile
202B to member profile 204C (e.g., member connection 204E). It is
to be appreciated that the member profiles 202B and 202C may each
be associated with common connection data. For example, the member
profile 202B corresponds to the common connection data 306B, and
the member profile 202C corresponds to the common connection data
306C.
[0048] With reference back to FIG. 6, the recommendation engine
116, at operation 606, may then identify a second indirect
connection of the source member profile. The second indirect
connection may be a member profile connected to the source member
profile through a second connection path that includes member
connections between the source member profile, a second direct
connection, and the second indirect connection. With temporary
reference again to FIG. 3, an example of a first connection path
may be the minimum path from member profile 202A to member profile
202E. It is to be appreciated that the minimum path from member
profile 202A to member profile 202E may include an edge from member
profile 202A to member profile 202D (e.g., member connection 204B)
and an edge from member profile 202D to member profile 204E (e.g.,
member connection 204A). It is to be appreciated that the member
profiles 202D and 202E may each be associated with common
connection data. For example, the member profile 202D corresponds
to the common connection data 306D, and the member profile 202E
corresponds to the common connection data 306E.
[0049] At operation 608, the recommendation engine 116 may then
select between the first indirect connection and the second
indirect connection based on a comparison of a common connection
score calculated for the first indirect connection and a common
connection score calculated for the second indirect connection. In
some cases, operation 608 may use a common connection function to
perform the comparison. For example, the common connection function
may compare a common connection score assigned to each of the
indirect connections and then select the indirect connection with
the preferred common connection score. The following is an example
of a function used to assign a common connection score to an
indirect connection:
CCS=w.sub.1*ccd.sub.1+w.sub.2*ccd.sub.2
[0050] CCS may represent a common connection score. w.sub.1 may
represent a weighting factor to be applied to common connection
data (ccd.sub.1) linked to a first member profile in a connection
path between the source member profile and the indirect member
profile. w.sub.2 may represent a weighting factor to be applied to
common connection data (ccd.sub.2) linked to a second member
profile in the connection path between the source member profile
and the indirect member profile. It is to be appreciated that the
values of w.sub.1 and w.sub.2 may be values determined by a machine
learning approach that adjusts the values for these weighting
factors based on operating a set of training data such that the
values predict the likelihood that a corresponding member may be of
interest to a given member profile. It is to be appreciated that
the above example of a function to calculate a common connection
score is provided for the purpose of illustration and not
limitation, and example embodiments may use any other suitable
common connection function. For example, other embodiments may use
the following function to calculate a common connection score:
CCS=w.sub.1*ccd.sub.1*w.sub.2*ccd.sub.2.
[0051] In other example embodiments, the function to calculate a
common connection score (e.g., CCS) may involve more or less
connection data. For example, where the recommendation engine 116
generates member profile recommendations for third-degree
connections, the function to calculate CCS may involve a third
common connection data (e.g., ctd.sub.3) and a third weighting
factor (e.g., w.sub.3). As another example, the function to
calculate a common connection score may be based on the common
connection data of the first-degree member connection and not
involve the common connection data of the indirect connections.
[0052] When a common connection score is calculated for the first
indirect connection and the second indirect connection, the
recommendation engine 116 may select the indirect connection with
the highest common connection score. For example, assuming w.sub.1
and w.sub.2 are both equal to the value `1.0,` the connection path
to member profile 202C may result in a common connection score of
`15` (e.g., 1*`10`+1*`5`=`15`), while the connection path to member
profile 202E may result in a common connection score of `2` (e.g.,
1*`1`+1*`1`=`2`). Thus, the recommendation engine 116 may select
the member profile 202C because the member profile 202C has a
preferred common connection score relative to the common connection
score assigned to member profile 202E.
[0053] With continued reference to FIG. 6, the presentation engine
117, at operation 610, may then surface the selected indirect
connection to the source member profile as, for example, a member
profile recommendation. A connection recommendation may be a
recommendation configured to cause a client device operated by the
source member to display information from the member profile of the
selected indirect connection (e.g., name, title, profile image, and
the like). The connection recommendation may also be configured to
cause the client device to display an interface element that, if
activated by the source member, causes the social network service
to form a direct connection between the source member and the
selected indirect connection. A connection recommendation is
discussed in greater detail below with reference to FIG. 8.
[0054] It is to be appreciated that some operations of FIG. 6 may
be performed prior to detecting a recommendation event. FIG. 7 is a
flow diagram illustrating a method 700 that pre-computes common
connection scores for indirect connections of a source member,
according to an example embodiment. The method 700 may begin at
operation 702 when the recommendation engine 116 calculates a
common connection score for one or more indirect connections
associated with a source member profile. Calculating a common
connection score is described with reference to operation 608 of
FIG. 6. Operation 602 may be part of a scheduled background process
that operates independently of whether a service requests a member
profile connection.
[0055] The calculated common connection scores for corresponding
indirect connects may be stored as a list (or any other suitable
data structure) of tuples, where each tuple pairs a calculated
common connection score with a corresponding member profile. These
tuples may then be stored in a lookup table indexed by the member
profile identifier assigned to the source member. For example, the
recommendation module 116 may store the following tuples using an
index associated with the member profile identifier assigned to the
source member profile: <`15`, Member Profile 202C>, <`2`,
Member Profile 202E>.
[0056] At operation 704, the recommendation engine 116 may detect a
recommendation event. As described with reference to operation 602
of FIG. 6, a recommendation event may be an event that indicates
that the recommendation engine 116 is to generate a member profile
recommendation for a source member. In some cases, the
recommendation engine 116 may detect the recommendation event
through an explicit request through an application programmable
interface (e.g., a function call or web-based service request) or
based on detecting that the source member profile logged into or
otherwise accessed the social network. The recommendation event may
include data that specifies a source member profile (e.g., a member
profile identifier that uniquely identifies a member profile from
the other member profiles in the social network service) for the
member profile recommendation.
[0057] At operation 706, responsive to detecting the recommendation
event, the recommendation engine 116 may search the indirect member
connections and corresponding common connection scores for the
source member. This lookup may be performed by requesting the
pre-computed common connection scores in the lookup table described
above with reference to operation 702. Thus, retrieving the
pre-computed common connection scores based on the identifier
assigned to the source member profile may return <`15`, Member
Profile 202C>, <`2`, Member Profile 202E>.
[0058] At operation 708, the recommendation engine 116 may then
select the indirect connection based on a ranking of the common
connection scores calculated for each indirect connection. Thus,
member profile 202B may be selected because that member profile
corresponds with the preferred common connection score (e.g., the
highest common connection score).
[0059] At operation 710, the selected indirect member profile is
then surfaced to the source member profile. Surfacing an indirect
member profile is described in greater detail with reference to
operation 610 of FIG. 6.
Example User Interface
[0060] As described herein, the presentation engine 117 may surface
content from member profiles selected by the recommendation engine
116. In the case of connection recommendations, the content from
the member profile may be presented in conjunction with actionable
display elements that may, in some cases, cause the social network
service to create a direct member connection between the source
member profile and a member profile surfaced by the presentation
engine 117.
[0061] FIG. 8 is a user interface diagram illustrating a user
interface for surfacing member profile recommendations to a source
member of a social network service, consistent with some
embodiments. FIG. 8 depicts a suggestion module 800 that surfaces
(e.g., displays) content derived from member profiles of the social
network service that suggest member connections 810-812 to a source
member. The connection recommendations 810-812 may be data or logic
that may represent content derived from member profiles selected by
the recommendation engine 116. For clarity of description, not
limitation, connection recommendation 810 may include content
derived from member profile 202C of FIGS. 2 and 3, and connection
recommendation 812 may include content derived from member profile
202F of FIGS. 2 and 3. In some cases, the recommendation engine 116
may determine that the member profile represented by the member
connections 810 and 812 (e.g., member profile 202C and member
profile 202F, respectively) are likely to be of interest to the
source member (e.g., member profile 202A) because the member
profiles represented by the member connections 810 and 812 are
connections of a recent connection (e.g., member profile 202B).
[0062] FIG. 8 shows that the connection recommendations 810 and 812
each include connection activators 814 and 816, respectively. A
connection activator may be an actionable user interface element
that causes, when activated by the source member, the social
network service to send an invitation to the member profile
corresponding to the connection recommendation. For example,
responsive to the source member activating the connection activator
814, the social network service 100 may then send an invitation to
the member profile 202C to form a member connection with the source
member profile (e.g., member profile 202A).
[0063] The presentation engine 117 may surface the suggestion
module 800 within a user interface the source member uses to access
the social network service. For example, the presentation engine
117 may surface the suggestion module 800 within a sidebar or rail
location within a member profile page associated with the source
member profile.
[0064] It is to be appreciated that the suggestion module 800 shown
in FIG. 8 is provided to illustrate an example embodiment and
should not be interpreted as limiting any aspect of other example
embodiments contemplated by this disclosure. For example, other
embodiments may display more or less connection recommendations
(e.g., three connection recommendations). Further, according to
some embodiments, the member profiles represented by the connection
recommendations may differ, depending on the implementation of the
recommendation engine 116 discussed above. For example, some
embodiments may utilize a common connection function that weights
the importance of the recent common connections of a direct
connection less than other embodiments.
Example Computer Systems
[0065] The various operations of example methods described herein
may be performed, at least partially, by one or more processors
that are temporarily configured (e.g., by software) or permanently
configured to perform the relevant operations. Whether temporarily
or permanently configured, such processors may constitute
processor-implemented modules, engines, objects or devices that
operate to perform one or more operations or functions. The
modules, engines, objects and devices referred to herein may, in
some example embodiments, comprise processor-implemented modules,
engines, objects and/or devices.
[0066] Similarly, the methods described herein may be at least
partially processor-implemented. For example, at least some of the
operations of a method may be performed by one or more processors
or processor-implemented modules. The performance of certain
operations may be distributed among the one or more processors, not
only residing within a single machine or computer, but deployed
across a number of machines or computers. In some example
embodiments, the processor or processors may be located in a single
location (e.g., within a home environment, an office environment or
at a server farm), while in other embodiments the processors may be
distributed across a number of locations.
[0067] FIG. 9 is a block diagram of a machine in the form of a
computer system or computing device within which a set of
instructions, for causing the machine to perform any one or more of
the methodologies discussed herein, may be executed. In alternative
embodiments, the machine operates as a standalone device or may be
connected (e.g., networked) to other machines. In a networked
deployment, the machine may operate in the capacity of a server or
a client machine in a client-server network environment, or as a
peer machine in a peer-to-peer (or distributed) network
environment. In some embodiments, the machine will be a desktop
computer, or server computer, however, in alternative embodiments,
the machine may be a tablet computer, a mobile phone, a personal
digital assistant, a personal audio or video player, a global
positioning device, a set-top box, a web appliance, or any machine
capable of executing instructions (sequential or otherwise) that
specify actions to be taken by that machine. Further, while only a
single machine is illustrated, the term "machine" shall also be
taken to include any collection of machines that individually or
jointly execute a set (or multiple sets) of instructions to perform
any one or more of the methodologies discussed herein.
[0068] The example computer system 900 includes a processor 902
(e.g., a central processing unit (CPU), a graphics processing unit
(GPU) or both), a main memory 904 and a static memory 906, which
communicate with each other via a bus 908. The computer system 900
may further include a display unit 910, an alphanumeric input
device 912 (e.g., a keyboard), and a user interface (UI) navigation
device 914 (e.g., a mouse). In one embodiment, the display, input
device and cursor control device are a touch screen display. The
computer system 900 may additionally include a storage device 916
(e.g., drive unit), a signal generation device 918 (e.g., a
speaker), a network interface device 920, and one or more sensors,
such as a global positioning system sensor, compass, accelerometer,
or other sensor.
[0069] The drive unit 916 includes a machine-readable medium 922 on
which is stored one or more sets of instructions and data
structures (e.g., software 924) embodying or utilized by any one or
more of the methodologies or functions described herein. The
software 924 may also reside, completely or at least partially,
within the main memory 904 and/or within the processor 902 during
execution thereof by the computer system 900, the main memory 904
and the processor 902 also constituting machine-readable media.
[0070] While the machine-readable medium 922 is illustrated in an
example embodiment to be a single medium, the term
"machine-readable medium" may include a single medium or multiple
media (e.g., a centralized or distributed database, and/or
associated caches and servers) that store the one or more
instructions. The term "machine-readable medium" shall also be
taken to include any tangible medium that is capable of storing,
encoding or carrying instructions for execution by the machine and
that cause the machine to perform any one or more of the
methodologies of the present invention, or that is capable of
storing, encoding or carrying data structures utilized by or
associated with such instructions. The term "machine-readable
medium" shall accordingly be taken to include, but not be limited
to, solid-state memories, and optical and magnetic media. Specific
examples of machine-readable media include non-volatile memory,
including by way of example semiconductor memory devices, e.g.,
EPROM, EEPROM, and flash memory devices; magnetic disks such as
internal hard disks and removable disks; magneto-optical disks; and
CD-ROM and DVD-ROM disks.
[0071] The software 924 may further be transmitted or received over
a communications network 926 using a transmission medium via the
network interface device 920 utilizing any one of a number of
well-known transfer protocols (e.g., HTTP). Examples of
communication networks include a local area network ("LAN"), a wide
area network ("WAN"), the Internet, mobile telephone networks,
Plain Old Telephone (POTS) networks, and wireless data networks
(e.g., Wi-Fi.RTM. and WiMax.RTM. networks). The term "transmission
medium" shall be taken to include any intangible medium that is
capable of storing, encoding or carrying instructions for execution
by the machine, and includes digital or analog communications
signals or other intangible medium to facilitate communication of
such software.
[0072] Although some embodiments has been described with reference
to specific example embodiments, it will be evident that various
modifications and changes may be made to these embodiments without
departing from the broader spirit and scope of the invention.
Accordingly, the specification and drawings are to be regarded in
an illustrative rather than a restrictive sense. The accompanying
drawings that form a part hereof, show by way of illustration, and
not of limitation, specific embodiments in which the subject matter
may be practiced. The embodiments illustrated are described in
sufficient detail to enable those skilled in the art to practice
the teachings disclosed herein. Other embodiments may be utilized
and derived therefrom, such that structural and logical
substitutions and changes may be made without departing from the
scope of this disclosure. This Detailed Description, therefore, is
not to be taken in a limiting sense, and the scope of various
embodiments is defined only by the appended claims, along with the
full range of equivalents to which such claims are entitled.
* * * * *