# Intelligent Scheduling with Reinforcement Learning
## 2 Literature Review
### Machine Learning  
Machine learning is the science of programming computers so that they learn from data. [PERSON] [22] was the first to define machine learning as the scientific area that gives computers the ability to learn without being programmed explicitly, i.e., as opposed to executing pre-programmed instructions like any generic algorithm, a machine learning algorithm is able to learn from experience and, in particular, from the data that are suppliedto it. [PERSON] [23] proposed a more engineering oriented definition, establishing that \"a program can be classified as learning from experience E, related to a class of tasks T with a performance indicator D, if its performance on task T, measured by D, improves with experience E\". Pragmatically, machine learning is a subarea of computer science that develops data-dependent algorithms. Data can have the most diverse origins, ranging from other computer systems, to nature itself or even generated by humans. As such, it can be used in almost any field (e.g., in medicine it can be applied to analyze large amounts of medical images to create a diagnostic [24; 25]). Machine learning, in summary, is the process of solving a problem by collecting a set of data (commonly referred as a dataset) and, through the use of specific algorithms, creating a statistical model of that data. The area of machine learning can be divided into three categories [26]: supervised learning, non-supervised learning and reinforcement learning. With supervised learning, the dataset is composed only of labeled examples, according to the following formula: \((x_{i},y_{i})_{i=1}^{N}\); where each element \(x_{i}\) in \(N\) is an attribute vector. An attribute vector is a vector where each dimension \(j=1,...,D\) contains a value that describes the example in some way. This value is an attribute (also known as _feature_) and is indicated as \(x^{(j)}\). For all the examples in the dataset, it is guaranteed that the attribute at position \(j\) of the attribute vector always contains the same type of information. The label \(y_{i}\) is typically an element that either belongs to a certain set of classes \(\{1,2,...,C\}\) or is a real number. There are some approaches that use more complex structures for labels, such as vectors, matrices or even graphs, but they are quite rare and very specific to certain problems [27]. The objective of a supervised learning algorithm is to use the dataset to produce a model that receives the vector of x attributes as input and that gives, as output, information that allows the deduction of the label for that vector. Unsupervised learning is different from supervised learning in that it uses a dataset where the examples are not labeled, \((x_{i})_{i=1}^{N}\) but \(x\) remains a vector of attributes. The objective of unsupervised learning is the creation of a model that receives as input the vector of attributes and transforms it into another vector or a value that can be useful in another way in solving a problem. For instance, clustering techniques [28] create models that calculate the cluster identifier for each vector of attributes in the dataset; anomaly detection techniques (or outliers detection [29]) calculate a value that determines how different an example \(x\) is from a typical dataset element; and dimensionality reduction techniques [30] output an attribute vector that has fewer attributes than the original vector, making this reduction in the number of attributes what makes it easier to interpret. It is possible to find in scientific literature references to a fourth category: semi-supervised learning [31]. This is somewhere between supervised and unsupervised learning and is characterized by having a dataset containing both labeled and unlabeled examples. Usually, the number of labeled examples is far greater than the number of unlabeled ones. The objective of a semi-supervised learning algorithm is similar to that of a supervised learning algorithm, with the expectation that the use of unlabeled data can help the algorithm produce a better model.