Which machine learning algorithm can be used to identify patterns in a dataset of the cache performance of a CPU?

I need a machine learning algorithm to identify patterns in a dataset (saved in a CSV file) that contains details of the cache performance of a CPU. More specifically, the dataset contains columns like Readhits, Readmiss or Writehits.

The patterns the algorithm identifies should be helpful in the following ways.

1. help the user to increase the performance of the workload next time,

2. help to identify any problems based on the features, or

3. help the user to predict future data values or future events that may occur based on the patterns.

Which ML algorithms can I use?

• I would personally go with k-means clustering. Its designed for problems like this. – William Scott Dec 8 '18 at 18:47

You're basically looking for is unsupervised learning (UL). There are a lot of UL techniques around, but I'm not sure you'll find one that does exactly what you want with no user input at all. Still, if you skim the literature on these approaches, you may well find something useful.

One option is DBSCAN, a very popular clustering algorithm that does not require the user to input an initial target number of clusters (something that most clustering algorithms do require). But even then, you still have to give the algorithm values for epsilon (a distance used in calculating the clusters) and minPts (the minimum number of points required to constitute a "dense" region).

You might also look at self-organizing maps, an approach to unsupervised learning for neural networks.

Some other search terms that might lead you in a useful direction include "data mining" and "knowledge discovery in databases" (KDD).

Restricted Boltzmann Machines (RBMs) can identify patterns in a CSV file without the user specifying any conditions. They are well fitted for generating, "distributed and graded representations," of a, "complex set of features composing real high-dimensional data is crucial for achieving high performance in machine–learning tasks."1

Because the CSV format is specifically designed to represent instances in rows and a static set of attributes in columns, the set up of the training is straightforward. If the goal is to identify temporal patterns, a windowing strategy may be required.

K-RBMs are a merger of k-mean approaches with RBMs. The choice of approach has much to do with what kinds of patterns are sought. The term pattern can apply to simple trends in numbers over time, common patterns found in textual columns, or complex patterns inferred from multiple columns.

References

I need a machine learning algorithm to identify any patterns in a CSV file

You want to do unsupervised learning. The Wikipedia definition of the same is:

Unsupervised machine learning is the machine learning task of inferring a function to describe hidden structure from "unlabeled" data (a classification or categorization is not included in the observations).

I shall recommend you to go through the list of unsupervised learning algorithms here and use the one which would fit your need.

If you're starting out, then I would recommend starting with learning the K-means clustering algorithm.

First, you must classify each chunk of the CSV file and label it based on the current situation, like A) optimal situation B) critical.

Then you cluster your data with an unsupervised learning algorithm, like SOM or k-means, and then you simply classify the classes you will get.