IP Library › Granted Patent US 11,120,032
Granted Patent B1
US 11,120,032 · App. 17/209,752 · Granted Sep 14, 2021

Reducing consumption of computing resources in performing computerized sequence-mining on large data sets

Inventors: Xilong Chen (Chapel Hill, NC); Xunlei Wu (Cary, NC); Jan Chvosta (Raleigh, NC)
Assignee: SAS INSTITUTE INC.
G06F16/2465G06F16/2474G06F16/24549G06F2216/03
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 11,120,032
App. No.
17/209,752
Granted
Sep 14, 2021
Kind
B1
Abstract

Computing resources consumed in performing computerized sequence-mining can be reduced by implementing some examples of the present disclosure. In one example, a system can determine weights for data entries in a data set and then select a group of data entries from the data set based on the weights. Next, the system can determine a group of k-length sequences present in the selected group of data entries by applying a shuffling algorithm. The system can then determine frequencies corresponding to the group of k-length sequences and select candidate sequences from among the group of k-length sequences based on the frequencies thereof. Next, the system can determine support values corresponding to the candidate sequences and then select output sequences from among the candidate sequences based on the support values thereof. The system may then transmit an output signal indicating the selected output sequences an electronic device.

Claims (89)

1. A system comprising:

one or more processing devices; and

one or more memory devices including instructions that are executable by the one or more processing devices for causing the one or more processing devices to execute operations involving:

receiving a data set including a plurality of data entries;

determining a plurality of weights for the plurality of data entries, wherein each weight in the plurality of weights is determined for a respective data entry in the plurality of data entries;

selecting a group of data entries from among the plurality of data entries by executing a resampling algorithm with respect to the plurality of data entries based on the plurality of weights assigned to the plurality of data entries;

determining a plurality of k-length sequences present in the group of data entries, wherein each k-length sequence in the plurality of k-length sequences is determined by applying a shuffling algorithm to a respective data entry in the group of data entries;

determining a plurality of frequencies corresponding to the plurality of k-length sequences, each respective frequency in the plurality of frequencies corresponding to a respective k-length sequence in the plurality of k-length sequences and being determined based on (i) a respective number of instances of the respective k-length sequence in the plurality of k-length sequences and (ii) a total number of k-length sequences present in the plurality of k-length sequences;

selecting a plurality of candidate sequences from among the plurality of k-length sequences by comparing the plurality of frequencies corresponding to the plurality of k-length sequences to a first predefined threshold;

determining a plurality of support values corresponding to the plurality of candidate sequences, each support value in the plurality of support values corresponding to a respective candidate sequence in the plurality of candidate sequences and being determined based on (i) a respective number of data entries that include the respective candidate sequence in the plurality of data entries and (ii) a total number of data entries in the plurality of data entries;

selecting a plurality of output sequences from among the plurality of candidate sequences by comparing the plurality of support values corresponding to the plurality of candidate sequences to a second predefined threshold; and

transmitting an output signal indicating the plurality of output sequences to one or more electronic devices.

2. The system of claim 1 , wherein the one or more memory devices further include instructions that are executable by the one or more processing devices for causing the one or more processing devices to determine the plurality of weights by, for each data entry in the plurality of data entries:

determining a first value representing a maximum number of k-length sequence permutations that are capable of being generated from the data entry;

determining a second value representing a maximum number of k-length sequence permutations that are capable of being generated from the plurality of data entries; and

determining a weight for the data entry by dividing the first value by the second value.

3. The system of claim 1 , wherein the one or more memory devices further include instructions that are executable by the one or more processing devices for causing the one or more processing devices to sort the plurality of k-length sequences by frequency prior to selecting the plurality of candidate sequences.

4. The system of claim 1 , wherein the one or more memory devices further include instructions that are executable by the one or more processing devices for causing the one or more processing devices to:

select the plurality of candidate sequences from among the plurality of k-length sequences based on the plurality of candidate sequences having corresponding frequencies in the plurality of frequencies that exceed the first predefined threshold; and

select the plurality of output sequences from among the plurality of candidate sequences based on the plurality of output sequences having corresponding support values in the plurality of support values that exceed the second predefined threshold.

5. The system of claim 1 , wherein the plurality of candidate sequences consists of fewer than all k-length sequences in the plurality of k-length sequences, and wherein the plurality of output sequences consists of fewer than all candidate sequences in the plurality of candidate sequences.

6. The system of claim 1 , wherein the one or more memory devices further include instructions that are executable by the one or more processing devices for causing the one or more processing devices to:

determine the plurality of support values by executing a linear-matching process with respect to the plurality of candidate sequences.

7. The system of claim 1 , wherein the one or more memory devices further include instructions that are executable by the one or more processing devices for causing the one or more processing devices to:

determine the plurality of support values by executing a constant-matching process with respect to the plurality of candidate sequences.

8. The system of claim 1 , wherein the one or more memory devices further include instructions that are executable by the one or more processing devices for causing the one or more processing devices to:

determine the plurality of support values by executing a hash-matching process with respect to the plurality of candidate sequences.

9. The system of claim 1 , wherein the shuffling algorithm is a Knuth shuffling algorithm.

10. The system of claim 1 , wherein the one or more processing devices include a plurality of processing devices in a distributed computing environment, the plurality of processing devices being configured to execute at least some of the operations in parallel.

11. The system of claim 10 , wherein at least some of the operations constitute a workload, and wherein the system is configured to balance the workload among the plurality of processing devices in the distributed computing environment.

12. The system of claim 11 , wherein the distributed computing environment includes a cloud computing environment, a computing cluster, or a data grid.

13. The system of claim 1 , wherein the one or more memory devices further include instructions that are executable by the one or more processing devices for causing the one or more processing devices to:

detect an event based on the plurality of output sequences; and

generate a notification to a user about the event.

14. The system of claim 13 , wherein the event indicates a problem relating to network security, network traffic, application execution, or usage of computing resources.

15. The system of claim 1 , wherein the one or more memory devices further include instructions that are executable by the one or more processing devices for causing the one or more processing devices to:

execute the operations to generate a first set of output sequences;

execute the operations again to generate a second set of output sequences that is different from the first set of output sequences;

generate combined output results by aggregating the first set of output sequences with the second set of output sequences; and

transmit the combined output results to the one or more electronic devices.

16. A method that includes operations, the operations comprising:

receiving, by one or more processing devices, a data set including a plurality of data entries;

determining, by the one or more processing devices, a plurality of weights for the plurality of data entries, wherein each weight in the plurality of weights is determined for a respective data entry in the plurality of data entries;

selecting, by the one or more processing devices, a group of data entries from among the plurality of data entries by executing a resampling algorithm with respect to the plurality of data entries based on the plurality of weights assigned to the plurality of data entries;

determining, by the one or more processing devices, a plurality of k-length sequences present in the group of data entries, wherein each k-length sequence in the plurality of k-length sequences is determined by applying a shuffling algorithm to a respective data entry in the group of data entries;

determining, by the one or more processing devices, a plurality of frequencies corresponding to the plurality of k-length sequences, each respective frequency in the plurality of frequencies corresponding to a respective k-length sequence in the plurality of k-length sequences and being determined based on (i) a respective number of instances of the respective k-length sequence in the plurality of k-length sequences and (ii) a total number of k-length sequences present in the plurality of k-length sequences;

selecting, by the one or more processing devices, a plurality of candidate sequences from among the plurality of k-length sequences by comparing the plurality of frequencies corresponding to the plurality of k-length sequences to a first predefined threshold;

determining, by the one or more processing devices, a plurality of support values corresponding to the plurality of candidate sequences, each support value in the plurality of support values corresponding to a respective candidate sequence in the plurality of candidate sequences and being determined based on (i) a respective number of data entries that include the respective candidate sequence in the plurality of data entries and (ii) a total number of data entries in the plurality of data entries;

selecting, by the one or more processing devices, a plurality of output sequences from among the plurality of candidate sequences by comparing the plurality of support values corresponding to the plurality of candidate sequences to a second predefined threshold; and

transmitting, by the one or more processing devices, an output signal indicating the plurality of output sequences to one or more electronic devices.

17. The method of claim 16 , further comprising determining the plurality of weights by, for each data entry in the plurality of data entries:

determining a first value representing a maximum number of k-length sequence permutations that are capable of being generated from the data entry;

determining a second value representing a maximum number of k-length sequence permutations that are capable of being generated from the plurality of data entries; and

determining a weight for the data entry by dividing the first value by the second value.

18. The method of claim 16 , further comprising:

selecting the plurality of candidate sequences from among the plurality of k-length sequences based on the plurality of candidate sequences having corresponding frequencies in the plurality of frequencies that exceed the first predefined threshold; and

selecting the plurality of output sequences from among the plurality of candidate sequences based on the plurality of output sequences having corresponding support values in the plurality of support values that exceed the second predefined threshold.

19. The method of claim 16 , wherein the plurality of candidate sequences consists of fewer than all k-length sequences in the plurality of k-length sequences, and wherein the plurality of output sequences consists of fewer than all candidate sequences in the plurality of candidate sequences.

20. The method of claim 16 , further comprising:

determining the plurality of support values by executing a linear-matching process with respect to the plurality of candidate sequences.

21. The method of claim 16 , further comprising:

determining the plurality of support values by executing a constant-matching process with respect to the plurality of candidate sequences.

22. The method of claim 16 , further comprising:

determining the plurality of support values by executing a hash-matching process with respect to the plurality of candidate sequences.

23. The method of claim 16 , wherein the shuffling algorithm is a Knuth shuffling algorithm.

24. The method of claim 16 , wherein the one or more processing devices include a plurality of processing devices in a distributed computing environment, the plurality of processing devices being configured to execute at least some of the method in parallel.

25. The method of claim 24 , wherein the distributed computing environment includes a cloud computing environment, a computing cluster, or a data grid.

26. The method of claim 16 , further comprising:

detecting an event based on the plurality of output sequences; and

generating a notification to a user about the event.

27. The method of claim 26 , wherein the event indicates a problem relating to network security, network traffic, application execution, or usage of computing resources.

28. The method of claim 16 , further comprising:

executing the operations to generate a first set of output sequences;

executing the operations again to generate a second set of output sequences that is different from the first set of output sequences;

generating combined output results by aggregating the first set of output sequences with the second set of output sequences; and

transmitting the combined output results to the one or more electronic devices.

29. A non-transitory computer-readable medium comprising program code that is executable by one or more processing devices for causing the one or more processing devices to perform operations involving:

receiving a data set including a plurality of data entries;

determining a plurality of weights for the plurality of data entries, wherein each weight in the plurality of weights is determined for a respective data entry in the plurality of data entries;

selecting a group of data entries from among the plurality of data entries by executing a resampling algorithm with respect to the plurality of data entries based on the plurality of weights assigned to the plurality of data entries;

determining a plurality of k-length sequences present in the group of data entries, wherein each k-length sequence in the plurality of k-length sequences is determined by applying a shuffling algorithm to a respective data entry in the group of data entries;

determining a plurality of frequencies corresponding to the plurality of k-length sequences, each respective frequency in the plurality of frequencies corresponding to a respective k-length sequence in the plurality of k-length sequences and being determined based on (i) a respective number of instances of the respective k-length sequence in the plurality of k-length sequences and (ii) a total number of k-length sequences present in the plurality of k-length sequences;

selecting a plurality of candidate sequences from among the plurality of k-length sequences by comparing the plurality of frequencies corresponding to the plurality of k-length sequences to a first predefined threshold;

determining a plurality of support values corresponding to the plurality of candidate sequences, each support value in the plurality of support values corresponding to a respective candidate sequence in the plurality of candidate sequences and being determined based on (i) a respective number of data entries that include the respective candidate sequence in the plurality of data entries and (ii) a total number of data entries in the plurality of data entries;

selecting a plurality of output sequences from among the plurality of candidate sequences by comparing the plurality of support values corresponding to the plurality of candidate sequences to a second predefined threshold; and

transmitting an output signal indicating the plurality of output sequences to one or more electronic devices.

30. The non-transitory computer-readable medium of claim 29 , further comprising program code that is executable by the one or more processing devices for causing the one or more processing devices to:

detect an event based on the plurality of output sequences; and

generate a notification to a user about the event.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2021
From: CHEN, XILONG; WU, XUNLEI; CHVOSTA, JAN
To: SAS INSTITUTE INC.
Reel/Frame 055687/0352 →
Continuity (3)
Provisional Application 63056981 · Jul 27, 2020
Provisional Application 63055769 · Jul 23, 2020
Provisional Application 63053665 · Jul 19, 2020
Cited By (1)
US 12,293,076