IP Library Granted Patent US 10,521,809
Granted Patent B2
US 10,521,809 · App. 14/638,694 · Granted Dec 31, 2019

System and method for grouping time series data for forecasting purposes

Inventors: Shubhankar Ray (Union City, CA); Abhay Jha (Burlingame, CA)
Assignee: WALMART APOLLO, LLC
G06Q30/0202G06K9/6218G06Q10/087
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,521,809
App. No.
14/638,694
Granted
Dec 31, 2019
Kind
B2
Abstract

A system and method for grouping units for forecasting purposes is presented. A plurality of stock keeping units (SKUs) is presented to an embodiment. Initial medoids are chosen based on a vertex within a set of vertices, each of which represent a SKU. Then, each vertex within the set of vertices is associated with its closest medoid to form initial clusters. There can be a cap on the number of vertices in each cluster. Thereafter, an iterative algorithm is performed wherein a probability is assigned to each vertex. One or more vertices are randomly chosen, with the weights of the vertices weighting the random choice. The chosen one or more vertices are moved to another cluster. The algorithm is performed until no further improvements result from moving one or more vertices to another cluster. Other embodiments are also disclosed herein.

Claims (85)

1. A method comprising:

receiving, at one or more processors through a system bus from a disk controller or a network adapter, a plurality of vertices to be placed in clusters;

choosing, using the one or more processors, a plurality of initial medoids based on the plurality of vertices;

assigning, using the one or more processors, each respective vertex of the plurality of vertices to a respective one of the clusters based on a respective distance between each respective vertex of the plurality of vertices and a respective medoid closest to each respective vertex of the plurality of vertices;

determining, using the one or more processors, a respective quality of each respective cluster of the clusters formed by a separate medoid and a separate set of closest vertices of the plurality of vertices to each separate medoid;

moving, using the one or more processors, one or more vertices of the plurality of vertices to a different one of the clusters based on the respective quality of each respective cluster of the clusters;

assigning, using the one or more processors, an unassigned vertex of the plurality of vertices to one of the clusters closest to the unassigned vertex;

performing, using the one or more processors, an iterative clustering process, the iterative clustering process comprising:

assigning, using the one or more processors, a respective probability to each respective vertex of the plurality of vertices, the respective probability based on a likelihood that moving the respective vertex improves a cluster of the clusters by increasing a similarity of two or more vertices within the cluster of the clusters;

randomly choosing, using the one or more processors, one or more randomly chosen vertices of the plurality of vertices, using the respective probability of each respective vertex of the plurality of vertices to weight randomness;

moving, using the one or more processors, the one or more randomly chosen vertices to another cluster of the clusters, based on a second distance from the one or more randomly chosen vertices to a medoid of the another cluster of the clusters; and

setting, using the one or more processors, a respective counter to a number greater than zero for each respective vertex, as randomly chosen, of the one or more randomly chosen vertices, as moved;

repeating the iterative clustering process, wherein the respective probability assigned to each respective vertex of the plurality of vertices comprises a probability of zero when the respective counter for each respective vertex of the plurality of vertices is greater than zero;

decrementing, using the one or more processors, the respective counter each time the iterative clustering process is completed;

forecasting, using the one or more processors and the cluster of the clusters, sales of a first item represented by a first vertex of the plurality of vertices to create forecasted sales;

after completing the iterative clustering process, as repeated, and after decrementing the respective counter, purchasing, using the one or more processors, inventory based on the forecasted sales;

transferring at least a portion of the inventory, as purchased, to either a warehouse or a brick and mortar store; and

releasing the inventory, as transferred to either the warehouse or the brick and mortar store, for sale.

2. The method of claim 1 , wherein the iterative clustering process further comprises:

determining a first similarity score using each of the clusters and each vertex of the plurality of vertices within each of the clusters;

determining, for each respective vertex of the plurality of vertices, a respective likelihood that moving a respective vertex can result in an improvement in a specific cluster of the clusters;

determining a second similarity score using each of the clusters and each vertex of the plurality of vertices within each of the clusters; and

determining when the second similarity score is improved over the first similarity score.

3. The method of claim 2 , wherein repeating the iterative clustering process comprises:

repeating the iterative clustering process when the second similarity score is improved.

4. The method of claim 2 wherein:

each respective vertex of the plurality of vertices represents a respective stock keeping unit (SKU) of a retailer or a distributor.

5. The method of claim 4 wherein each respective vertex of the plurality of vertices represents a respective rank of a SKU.

6. The method of claim 4 wherein forecasting, using the one or more processors and the cluster of the clusters, the sales of the first item represented by the first vertex of the plurality of vertices comprises:

using the clusters in a retail forecasting model, wherein each SKU within a cluster of the clusters is forecast in a similar manner.

7. The method of claim 2 , wherein the iterative clustering process further comprises:

determining when the second similarity score is not improved over the first similarity score; and

when the second similarity score is not improved over the first similarity score, ending the iterative clustering process.

8. The method of claim 1 further comprising:

setting a maximum number of vertices per cluster of the clusters;

for each of the clusters, determining when there are greater than the maximum number of vertices in at least one cluster of the clusters; and

when there are greater than the maximum number of vertices in the at least one cluster, moving vertices within the at least one cluster to a different cluster of the clusters until a number of vertices in the at least one cluster is less than or equal to the maximum number of vertices.

9. The method of claim 8 wherein the maximum number of vertices per cluster is 200.

10. The method of claim 1 wherein:

choosing the plurality of initial medoids comprises using a farthest-first metric to choose the plurality of initial medoids.

11. A system comprising:

a user input device;

a display device;

a system bus;

one or more processors; and

one or more non-transitory storage devices storing computing instructions configured to run on the one or more processors and perform acts of:

receiving, at the one or more processors through the system bus from a disk controller or a network adapter, a plurality of vertices to be placed in clusters;

choosing, using the one or more processors, a plurality of initial medoids based on the plurality of vertices;

assigning, using the one or more processors, each respective vertex of the plurality of vertices to a respective one of the clusters based on a respective distance between each respective vertex of the plurality of vertices and a respective medoid closest to each respective vertex of the plurality of vertices;

determining, using the one or more processors, a respective quality of each respective cluster of the clusters formed by a separate medoid and a separate set of closest vertices of the plurality of vertices to each separate medoid;

moving, using the one or more processors, one or more vertices of the plurality of vertices to a different one of the clusters based on the respective quality of each respective cluster of the clusters;

assigning, using the one or more processors, an unassigned vertex of the plurality of vertices to one of the clusters closest to the unassigned vertex;

performing, using the one or more processors, an iterative clustering process, the iterative clustering process comprising:

assigning, using the one or more processors, a respective probability to each respective vertex of the plurality of vertices, the respective probability based on a likelihood that moving the respective vertex improves a cluster of the clusters by increasing a similarity of two or more vertices within the cluster of the clusters;

randomly choosing, using the one or more processors, one or more randomly chosen vertices of the plurality of vertices, using the respective probability of each respective vertex of the plurality of vertices to weight randomness;

moving, using the one or more processors, the one or more randomly chosen vertices to another cluster of the clusters, based on a second distance from the one or more randomly chosen vertices to a medoid of the another cluster of the clusters;

setting, using the one or more processors, a respective counter to a number greater than zero for each respective vertex, as randomly chosen, of the one or more randomly chosen vertices, as moved; and

repeating the iterative clustering process, wherein the respective probability assigned to each respective vertex of the plurality of vertices comprises a probability of zero when the respective counter for each respective vertex of the plurality of vertices is greater than zero;

decrementing, using the one or more processors, the respective counter each time the iterative clustering process is completed;

forecasting, using the one or more processors and the cluster of the clusters, sales of a first item represented by a first vertex of the plurality of vertices to create forecasted s ales;

after completing the iterative clustering process, as repeated, and after decrementing the respective counter, purchasing, using the one or more processors, inventory based on the forecasted sales;

transferring at least a portion of the inventory, as purchased, to either a warehouse or a brick and mortar store; and

releasing the inventory, as transferred to either the warehouse or the brick and mortar store, for sale.

12. The system of claim 11 wherein the iterative clustering process further comprises:

determining a first similarity score using each of the clusters and each vertex of the plurality of vertices within each of the clusters;

determining, for each respective vertex of the plurality of vertices, a respective likelihood that moving a respective vertex can result in an improvement in a specific cluster of the clusters;

determining a second similarity score using each of the clusters and each vertex of the plurality of vertices within each of the clusters; and

determining when the second similarity score is improved over the first similarity score.

13. The system of claim 12 wherein repeating the iterative clustering process comprises:

repeating the iterative clustering process when the second similarity score is improved.

14. The system of claim 12 , wherein the iterative clustering process further comprises:

determining when the second similarity score is not improved over the first similarity score; and

when the second similarity score is not improved over the first similarity score, ending the iterative clustering process.

15. The system of claim 12 wherein:

each respective vertex of the plurality of vertices represents a respective stock keeping unit (SKU) of a retailer or distributor.

16. The system of claim 15 wherein each respective vertex of the plurality of vertices represents a respective rank of a SKU.

17. The system of claim 15 wherein forecasting, using the one or more processors and the cluster of the clusters, the sales of the first item represented by the first vertex of the plurality of vertices comprises:

using the clusters in a retail forecasting model, wherein each SKU within a cluster of the clusters is forecast in a similar manner.

18. The system of claim 11 wherein the computing instructions further comprise:

setting a maximum number of vertices per cluster of the clusters;

for each of the clusters, determining when there are greater than the maximum number of vertices in at least one cluster of the clusters; and

when there are greater than the maximum number of vertices in the at least one cluster, moving vertices within the at least one cluster to a different cluster of the clusters until a number of vertices in the at least one cluster is less than or equal to the maximum number of vertices.

19. The system of claim 18 wherein the maximum number of vertices per cluster is 200.

20. The system of claim 11 wherein:

choosing the plurality of initial medoids comprises using a farthest-first metric to choose the plurality of initial medoids.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2018
From: WAL-MART STORES, INC.
To: WALMART APOLLO, LLC
Reel/Frame 045817/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2015
From: RAY, SHUBHANKAR; JHA, ABHAY
To: WAL-MART STORES, INC.
Reel/Frame 035494/0037 →