# US 8,788,487 B2 · Querying features based on user actions in online systems

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,788,487 B2
- Document ID: US8788487B2
- Status: Granted
- Kind: B2
- Application number: 13/690,225
- Filed: 2012-11-30
- Published: 2014-06-05
- Granted: 2014-07-22
- Earliest claimed: 2012-11-30
- Assignees: Facebook, Inc.
- Applicants: Facebook, Inc.
- Inventors: Ryan Allen Stout; Ming Hua; Hong Yan
- Web page: https://patentgrep.com/patent/US8788487B2

## CPC

- G06Q 10/101: Collaborative creation, e.g. joint development of products or services
- G06F 16/24: Querying
- G06F 16/9535: Search customisation based on user profiles and personalisation
- G06F 16/9536: Search customisation based on social or collaborative filtering
- G06Q 10/42: Determination of affinities or common interests between users
- G06Q 10/48: using social graphs
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Online systems, for example, social networking systems store features describing relations between entities represented in the online system. The information describing the features is represented as a graph. The online system maintains a cumulative feature graph and an incremental feature graph. Feature values based on recent user actions are stored in the incremental graph and feature values based on previous actions are stored in the cumulative graph. Periodically, the information stored in the incremental feature graph is merged with the information stored in the cumulative feature graph. The incremental graph is marked as inactive during the merge and information based on new user actions is stored in an active incremental feature graph. If a request for feature information is received, the feature information obtained from the cumulative feature graph, inactive incremental feature graph and the active incremental feature graph are combined to determine the feature information.

## Claims

### Claim 1

A computer-implemented method comprising:
maintaining, by an online system, a cumulative feature store storing feature values determined from user actions performed before a time point;
maintaining, by the online system, an incremental feature store storing feature values determined from user actions performed after the time point, the maintaining comprising updating feature values of the incremental feature store responsive to receiving information describing user actions;
receiving a request for a feature value, the request identifying a user and a feature;
receiving a first partial result from the cumulative feature store, the first partial result determined from user actions of the type performed by the user before the time point;
receiving a second partial result from the incremental feature store, the second partial result determined from user actions of the type performed by the user after the time point;
determining a weighted combination comprising the first partial result and the second partial result, wherein the first partial result is weighted by a decay factor; and
returning the weighted combination as the requested feature value.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the decay factor is a value less than one.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein the decay factor is based on a type associated with the feature.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein the incremental feature store is a first incremental feature store, further comprising:
maintaining, by the online system, a second incremental feature store;
marking the first incremental feature store as inactive at a subsequent time point and updating features of the second incremental feature store responsive to user actions received by the online system after the subsequent time point; and
responsive to receiving the request, receiving a third partial result from the second incremental feature store.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the weighted combination further comprises the third partial result.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein the weighted combination weighs the third partial result by a second decay factor.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein a feature is represented as an expression based on one or more of values describing user actions or other feature values.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, further comprising:
marking the incremental feature store as inactive and stopping the updates to the feature values stored in the incremental feature store;
determining a weighted combination of feature values from the incremental feature store and corresponding feature values from the cumulative feature store, wherein the feature values from the cumulative feature store are weighted by a decay factor; and
updating the feature values of the cumulative feature store with the weighted combinations.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, further comprising:
storing the incremental feature store in a data store that provides faster data access compared to a data store used for the cumulative feature store.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein the incremental feature store is stored in random access memory.

### Claim 11 (depends on 1)

The computer-implemented method of claim 1, wherein each feature is associated with a user, a target entity, and a feature value based on user actions performed by the user associated with the target entity.

### Claim 12

A computer program product having a non-transitory computer-readable storage medium storing computer-executable code, the code comprising:
a feature manager module of an online system configured to:
maintain a cumulative feature store storing feature values determined from user actions performed before a time point;
maintain an incremental feature store storing feature values, the maintaining comprising updating feature values of the incremental feature store responsive to receiving information describing user actions performed after the time point;
a request processor module configured to:
receive a request for a feature value, the request identifying a user and a feature associated with user actions of a type;
receive a first partial result from the cumulative feature store, the first partial result determined from user actions of the type performed by the user before the time point;
receive a second partial result from the incremental feature store, the second partial result determined from user actions of the type performed by the user after the time point;
determine a weighted combination comprising the first partial result and the second partial result, wherein the first partial result is weighted by a decay factor; and
return the weighted combination as the requested feature value.

### Claim 13 (depends on 12)

The computer program product of claim 12, wherein the decay factor is a value less than one.

### Claim 14 (depends on 12)

The computer program product of claim 12, wherein the decay factor is based on a type associated with the feature.

### Claim 15 (depends on 12)

The computer program product of claim 12, wherein:
the feature manager is further configured to
maintain, by the online system, a second incremental feature store;
mark the first incremental feature store as inactive at a subsequent time point and updating features of the second incremental feature store responsive to user actions received by the online system after the subsequent time point; and
the request processor module is further configured to
responsive to receiving the request, receiving a third partial result from the second incremental feature store.

### Claim 16 (depends on 14)

The computer program product of claim 14, wherein the weighted combination further comprises the third partial result.

### Claim 17 (depends on 15)

The computer program product of claim 15, wherein the weighted combination weighs the third partial result by a second decay factor.

### Claim 18 (depends on 12)

The computer program product of claim 12, wherein a feature is represented as an expression based on one or more of values describing user actions or other feature values.

### Claim 19 (depends on 12)

The computer program product of claim 12, wherein the feature manager is further configured to:
mark the incremental feature store as inactive and stopping the updates to the feature values stored in the incremental feature store;
determine a weighted combination of feature values from the incremental feature store and corresponding feature values from the cumulative feature store, wherein the feature values from the cumulative feature store are weighted by a decay factor; and
update the feature values of the cumulative feature store with the weighted combinations.

### Claim 20 (depends on 12)

The computer program product of claim 12, wherein the feature manager is further configured to:
store the incremental feature store in a data store that provides faster data access compared to a data store used for the cumulative feature store.

### Claim 21 (depends on 12)

The computer program product of claim 12, wherein the incremental feature store is stored in random access memory.
