{"id":7419,"date":"2019-05-15T08:00:06","date_gmt":"2019-05-15T15:00:06","guid":{"rendered":"http:\/\/softwareengineeringdaily.com\/?p=7419"},"modified":"2019-05-16T11:55:55","modified_gmt":"2019-05-16T18:55:55","slug":"introduction-to-automated-machine-learning-automl","status":"publish","type":"post","link":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/","title":{"rendered":"Introduction to Automated Machine Learning (AutoML)"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Machine learning is undoubtedly one of the biggest strides in technology. Its methods are employed in fields ranging from biomedical industry to agriculture, from personalized assistants to self-driving vehicles. <\/span><a href=\"https:\/\/www.cnbc.com\/2019\/01\/08\/the-25-most-in-demand-technical-skills-of-2019-according-to-linkedin-.html\"><span style=\"font-weight: 400\">Ranked as the 2nd most important hard skill to have according to LinkedIn<\/span><\/a><span style=\"font-weight: 400\">, machine learning and AI require careful study and understanding of different algorithms, model types, their advantages and disadvantages, and use cases. <\/span><\/p>\n<p><span style=\"font-weight: 400\">In what is called a machine learning pipeline, there are several steps:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Data preprocessing: scaling, missing value imputation<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Feature engineering: feature selection, feature encoding<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Model selection<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Hyperparameter optimization<\/span><\/li>\n<\/ol>\n<p><img fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"7425\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/image3-18\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image3.png?fit=834%2C339&amp;ssl=1\" data-orig-size=\"834,339\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image3\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image3.png?fit=300%2C122&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image3.png?fit=834%2C339&amp;ssl=1\" class=\"aligncenter wp-image-7425\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image3-300x122.png?resize=499%2C203&#038;ssl=1\" alt=\"\" width=\"499\" height=\"203\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image3.png?resize=300%2C122&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image3.png?resize=768%2C312&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image3.png?w=834&amp;ssl=1 834w\" sizes=\"(max-width: 499px) 100vw, 499px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: center\"><span style=\"font-weight: 400\">Source: <\/span><a href=\"https:\/\/towardsdatascience.com\/understanding-feature-engineering-part-1-continuous-numeric-data-da4e47099a7b\"><span style=\"font-weight: 400\">https:\/\/towardsdatascience.com\/understanding-feature-engineering-part-1-continuous-numeric-data-da4e47099a7b<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">A machine learning engineer, or a data scientist, when building the machine learning pipeline for a specific task has to carefully design each of these steps. These steps are usually co-dependent. To give an example, consider a problem where the use of SVMs are desirable in building the model. Then, since SVMs cannot work natively with categorical features, these have to be transformed in some way, for example by one hot encoding, to numerical features. In this case, the model selection affects how certain features are encoded. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Designing and optimizing these steps require a deep knowledge on a wide range of algorithms, their strengths and weaknesses, hyperparameters of algorithms, and the encoding of data for these algorithms to work well. In a technological landscape where AI is being integrated into many fields, there exists a deficit of data scientists with enough expertise to analyze diverse sets of data and build machine learning models. <\/span><\/p>\n<p><span style=\"font-weight: 400\">In an effort to make machine learning more accessible, to reduce the human expertise required, and to improve model performance, automated machine learning emerged as an exciting new area of active research. <\/span><\/p>\n<p><img decoding=\"async\" data-attachment-id=\"7426\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/image7-7\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&amp;ssl=1\" data-orig-size=\"469,235\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image7\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=300%2C150&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&amp;ssl=1\" class=\"aligncenter wp-image-7426\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1-300x150.png?resize=501%2C251&#038;ssl=1\" alt=\"\" width=\"501\" height=\"251\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?resize=300%2C150&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?resize=260%2C129&amp;ssl=1 260w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?w=469&amp;ssl=1 469w\" sizes=\"(max-width: 501px) 100vw, 501px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: center\"><span style=\"font-weight: 400\">Figure from <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/machine-learning\/service\/tutorial-auto-train-models\"><span style=\"font-weight: 400\">Microsoft Azure Machine Learning AutoML<\/span><\/a><\/p>\n<p><a href=\"https:\/\/www.automl.org\/automl\/\"><span style=\"font-weight: 400\">Automated machine learning, or AutoML<\/span><\/a><span style=\"font-weight: 400\">, is an umbrella term for a particular approach to machine learning that aims to automate any part of the process of building a machine learning model from raw data. <\/span><\/p>\n<p><span style=\"font-weight: 400\">AutoML caught the spotlight after <\/span><a href=\"https:\/\/www.blog.google\/products\/google-cloud\/cloud-automl-making-ai-accessible-every-business\/\"><span style=\"font-weight: 400\">Google announced its AutoML suite<\/span><\/a><span style=\"font-weight: 400\">, Google Cloud AutoML, and <\/span><a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/announcing-automated-ml-capability-in-azure-machine-learning\/\"><span style=\"font-weight: 400\">Microsoft announced AutoML in Azure Machine Learning<\/span><\/a><span style=\"font-weight: 400\">. Google\u2019s start with AutoML came in the form of <\/span><a href=\"https:\/\/cloud.google.com\/vision\/\"><span style=\"font-weight: 400\">AutoML Vision<\/span><\/a><span style=\"font-weight: 400\"> for image recognition. As the first tech giant to offer AutoML to developers around the world, Google is continuing to expand on AutoML, with <\/span><a href=\"https:\/\/cloud.google.com\/blog\/products\/ai-machine-learning\/all-ai-announcements-from-google-next19-the-smartest-laundry-list\"><span style=\"font-weight: 400\">new tools around Cloud AutoML<\/span><\/a><span style=\"font-weight: 400\"> announced at Google Next \u201819. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Current AutoML tools like Auto-WEKA and auto-sklearn focus on automating the steps of model selection and hyperparameter optimization. This subset of automation problem is coined as CASH, <\/span><b>C<\/b><span style=\"font-weight: 400\">ombined <\/span><b>A<\/b><span style=\"font-weight: 400\">lgorithm <\/span><b>S<\/b><span style=\"font-weight: 400\">election and <\/span><b>H<\/b><span style=\"font-weight: 400\">yperparameter Optimization problem. The aim of CASH is to find the joint algorithm and hyperparameter settings that minimizes loss of the training dataset, given a set of algorithms and hyperparameters of these algorithms. <\/span><\/p>\n<p><img decoding=\"async\" data-attachment-id=\"7427\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/image5-12\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image5.png?fit=1467%2C218&amp;ssl=1\" data-orig-size=\"1467,218\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image5\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image5.png?fit=300%2C45&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image5.png?fit=1024%2C152&amp;ssl=1\" class=\"aligncenter wp-image-7427\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image5-300x45.png?resize=498%2C74&#038;ssl=1\" alt=\"\" width=\"498\" height=\"74\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image5.png?resize=300%2C45&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image5.png?resize=768%2C114&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image5.png?resize=1024%2C152&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image5.png?w=1467&amp;ssl=1 1467w\" sizes=\"(max-width: 498px) 100vw, 498px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: center\"><span style=\"font-weight: 400\">CASH problem from <\/span><a href=\"https:\/\/ml.informatik.uni-freiburg.de\/papers\/15-NIPS-auto-sklearn-preprint.pdf\"><span style=\"font-weight: 400\">Efficient and Robust Automated Machine Learning by Feurer et. al.<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">An important point to consider in AutoML applications is the budget: the developer has to specify the limits of the resources being used in the AutoML optimization process. This budget usually consists one or the combinations of CPU\/GPU usage, running time, and memory usage. <\/span><\/p>\n<h1><b>Hyperparameter Optimization<\/b><\/h1>\n<p><span style=\"font-weight: 400\">In numerous machine learning models and algorithms, there exist two sets of parameters that are sometimes confused: model parameters and hyperparameters. Model parameters can also be known as weights in linear regression and deep learning. These model parameters are learned by the model from the data during training. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Hyperparameters, on the other hand, are different. Their values are set by the developer before the training stage starts. They are not learned from the data during training, like model parameters, and so hyperparameters are usually constant during the training phase. <\/span><\/p>\n<p><span style=\"font-weight: 400\">To give some concrete examples for hyperparameters:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Learning rate (\u03b7)<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Hidden layers and hidden units in deep learning models<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Number of neighbors k in kNN<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">Hyperparameter selection is crucial to the performance of a machine learning model. <\/span><a href=\"https:\/\/www.jeremyjordan.me\/nn-learning-rate\/\"><span style=\"font-weight: 400\">For example, in a neural network model<\/span><\/a><span style=\"font-weight: 400\">, if the learning rate is set too high, the gradient descent might overshoot the local minima; if the learning rate is set too low, the training might take a long time, since the steps taken during gradient descent are too small.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7429\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/image6-9\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image6-1.png?fit=1235%2C479&amp;ssl=1\" data-orig-size=\"1235,479\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image6\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image6-1.png?fit=300%2C116&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image6-1.png?fit=1024%2C397&amp;ssl=1\" class=\"aligncenter wp-image-7429\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image6-1-300x116.png?resize=728%2C282&#038;ssl=1\" alt=\"\" width=\"728\" height=\"282\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image6-1.png?resize=300%2C116&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image6-1.png?resize=768%2C298&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image6-1.png?resize=1024%2C397&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image6-1.png?w=1235&amp;ssl=1 1235w\" sizes=\"(max-width: 728px) 100vw, 728px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: center\">Source: <a href=\"https:\/\/www.jeremyjordan.me\/nn-learning-rate\/\"><span style=\"font-weight: 400\">https:\/\/www.jeremyjordan.me\/nn-learning-rate\/<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">Hyperparameter optimization is the process of searching for the best hyperparameter combinations for a model to achieve desired performance and accuracy. In an AutoML perspective, hyperparameter optimization is the most basic, fundamental task to be completed. <\/span><\/p>\n<p><a href=\"https:\/\/www.automl.org\/wp-content\/uploads\/2018\/11\/hpo.pdf\"><span style=\"font-weight: 400\">The problem is not easy, however.<\/span><\/a><span style=\"font-weight: 400\"> For any given machine learning model, there can be numerous hyperparameters. Each of these parameters can have different domains: real-valued, binary, categorical, or integer-valued. In the case of real- and integer-valued hyperparameters, the feasible domains are unknown: the layers of a deep learning model, an integer-valued hyperparameter, can virtually take values between 1 and hundreds. <\/span><\/p>\n<p><span style=\"font-weight: 400\">The configuration space becomes exceedingly complex as the number of hyperparameters increase. Every hyperparameter to be considered needs to have a combination with every other hyperparameter configuration for an exhaustive search. Another problem that arises when more hyperparameters are considered is selecting which hyperparameters to optimize for. Not all HPs have the same effect on the performance of a model, and we don\u2019t want to waste time optimizing hyperparameters that will give us only a marginal performance increase. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Thankfully, the optimization problem has been studied, and feasible solutions exist. <\/span><\/p>\n<p><span style=\"font-weight: 400\">The first solution is quite straightforward: <\/span><a href=\"https:\/\/scikit-learn.org\/stable\/modules\/grid_search.html#exhaustive-grid-search\"><span style=\"font-weight: 400\">grid search<\/span><\/a><span style=\"font-weight: 400\">. In grid search, the developer declares a set of values to be considered for each hyperparameter to be optimized. Then the model is trained with different combinations involving each hyperparameters, with a Cartesian product, and the hyperparameter configuration from the best performing model is selected. <\/span><\/p>\n<p><span style=\"font-weight: 400\">However, grid search suffers from the curse of dimensionality, as each additional hyperparameter exponentially increases the number of times the loss function must be evaluated. Another problem is the initialization: if the developer has not specified the optimal values in the set of each hyperparameter, the optimum can never be reached. <\/span><\/p>\n<p><span style=\"font-weight: 400\">An improvement is <\/span><a href=\"http:\/\/www.jmlr.org\/papers\/volume13\/bergstra12a\/bergstra12a.pdf\"><span style=\"font-weight: 400\">random search<\/span><\/a><span style=\"font-weight: 400\">. As the name suggest, random search takes random configurations of hyperparameters and records the results until a specified budget is exhausted. Random search solves the curse of dimensionality, since we do not need to increase the number of search points whenever a new dimension is added. Random search performs better when some hyperparameters are more important in the performance of the model, resulting in a low effective dimensionality. In theory, given enough budget, random search can find the optimal configuration.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7430\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/image1-23\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image1.png?fit=1687%2C907&amp;ssl=1\" data-orig-size=\"1687,907\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image1.png?fit=300%2C161&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image1.png?fit=1024%2C551&amp;ssl=1\" class=\"aligncenter wp-image-7430\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image1-300x161.png?resize=709%2C381&#038;ssl=1\" alt=\"\" width=\"709\" height=\"381\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image1.png?resize=300%2C161&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image1.png?resize=768%2C413&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image1.png?resize=1024%2C551&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image1.png?w=1687&amp;ssl=1 1687w\" sizes=\"(max-width: 709px) 100vw, 709px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: center\"><span style=\"font-weight: 400\">Grid search and random search, from <\/span><a href=\"http:\/\/www.jmlr.org\/papers\/volume13\/bergstra12a\/bergstra12a.pdf\"><span style=\"font-weight: 400\">Random Search for Hyper-Parameter Optimization by Bergstra and Bengio<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">However, grid search has its downsides as well. Reaching the optimum is not guaranteed, and the replicability depends on a random seed. Is there a better and more rigorous method?<\/span><\/p>\n<p><span style=\"font-weight: 400\">The answer, and the most widely-used solution to hyperparameter optimization problem is Bayesian optimization. <\/span><a href=\"https:\/\/ieeexplore.ieee.org\/stamp\/stamp.jsp?arnumber=7352306\"><span style=\"font-weight: 400\">Bayesian optimization is a sequential model-based approach<\/span><\/a><span style=\"font-weight: 400\"> to find the optimal configuration for any given argmax or argmin function. It consists of two main parts: a probabilistic surrogate model and an acquisition\/loss function. The surrogate model has a prior distribution that we think is close to the unknown objective function, while the acquisition function allows us to decide which point to evaluate next. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Bayesian optimization starts by taking a point in the multi-dimensional space of hyperparameter configurations, gets the corresponding objective function value, and then selects a new point that minimizes the acquisition function. This point is used to augment our data set, and becomes a historical observation to be used in future point selections.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7431\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/image2-22\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image2.png?fit=1235%2C714&amp;ssl=1\" data-orig-size=\"1235,714\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image2\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image2.png?fit=300%2C173&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image2.png?fit=1024%2C592&amp;ssl=1\" class=\"aligncenter wp-image-7431\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image2-300x173.png?resize=500%2C289&#038;ssl=1\" alt=\"\" width=\"500\" height=\"289\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image2.png?resize=300%2C173&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image2.png?resize=768%2C444&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image2.png?resize=1024%2C592&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image2.png?resize=120%2C69&amp;ssl=1 120w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image2.png?w=1235&amp;ssl=1 1235w\" sizes=\"(max-width: 500px) 100vw, 500px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: center\"><span style=\"font-weight: 400\">Bayesian optimization algorithm, from <\/span><a href=\"https:\/\/ieeexplore.ieee.org\/stamp\/stamp.jsp?arnumber=7352306\"><span style=\"font-weight: 400\">Taking the Human Out of the Loop: A Review of Bayesian Optimization by Shahriari et. al.<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">Bayesian optimization is designed to trade off exploration and exploitation. The acquisition functions\u2019 values are lower where uncertainty in the surrogate model is large, to encourage exploration. The acquisition function also gives lower values where model prediction is also low, utilizing the historical knowledge we have of the true objective function behavior, to encourage exploitation. <\/span><\/p>\n<p><span style=\"font-weight: 400\">The performance of Bayesian optimization rests on selecting an appropriate surrogate model and acquisition function. The traditional surrogate model utilizes <\/span><a href=\"https:\/\/katbailey.github.io\/post\/gaussian-processes-for-dummies\/\"><span style=\"font-weight: 400\">Gaussian processes<\/span><\/a><span style=\"font-weight: 400\">, but further improvements are suggested, such as random forests as in SMAC framework, or <\/span><a href=\"https:\/\/papers.nips.cc\/paper\/4443-algorithms-for-hyper-parameter-optimization.pdf\"><span style=\"font-weight: 400\">Tree-structured Parzen Estimator (TPE)<\/span><\/a><span style=\"font-weight: 400\"> approaches. <\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7432\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/image8-5\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image8-1.png?fit=1546%2C1423&amp;ssl=1\" data-orig-size=\"1546,1423\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image8\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image8-1.png?fit=300%2C276&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image8-1.png?fit=1024%2C943&amp;ssl=1\" class=\"aligncenter wp-image-7432\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image8-1-300x276.png?resize=500%2C460&#038;ssl=1\" alt=\"\" width=\"500\" height=\"460\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image8-1.png?resize=300%2C276&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image8-1.png?resize=768%2C707&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image8-1.png?resize=1024%2C943&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image8-1.png?w=1546&amp;ssl=1 1546w\" sizes=\"(max-width: 500px) 100vw, 500px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: center\"><span style=\"font-weight: 400\">Bayesian optimization through 3 iterations for an argmax task, from <\/span><a href=\"https:\/\/ieeexplore.ieee.org\/stamp\/stamp.jsp?arnumber=7352306\"><span style=\"font-weight: 400\">Taking the Human Out of the Loop: A Review of Bayesian Optimization by Shahriari et. al.<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">While Bayesian optimization is harder to wrap your head around and <\/span><a href=\"https:\/\/www.youtube.com\/watch?v=WkZueBgKFYM\"><span style=\"font-weight: 400\">visualize<\/span><\/a><span style=\"font-weight: 400\"> compared to grid and random searches, it\u2019s the most common hyperparameter optimization method used in the current AutoML libraries.<\/span><\/p>\n<h1><b>Case Study: auto-sklearn<\/b><\/h1>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7433\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/image4-17\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image4.png?fit=1937%2C508&amp;ssl=1\" data-orig-size=\"1937,508\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image4\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image4.png?fit=300%2C79&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image4.png?fit=1024%2C269&amp;ssl=1\" class=\"aligncenter wp-image-7433\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image4-300x79.png?resize=800%2C210&#038;ssl=1\" alt=\"\" width=\"800\" height=\"210\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image4.png?resize=300%2C79&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image4.png?resize=768%2C201&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image4.png?resize=1024%2C269&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image4.png?w=1937&amp;ssl=1 1937w\" sizes=\"(max-width: 800px) 100vw, 800px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: center\"><span style=\"font-weight: 400\">From <\/span><a href=\"https:\/\/ml.informatik.uni-freiburg.de\/papers\/15-NIPS-auto-sklearn-preprint.pdf\"><span style=\"font-weight: 400\">Efficient and Robust Automated Machine Learning by Feurer et. al.<\/span><\/a><\/p>\n<p><a href=\"https:\/\/automl.github.io\/auto-sklearn\/stable\/\"><span style=\"font-weight: 400\">auto-sklearn<\/span><\/a><span style=\"font-weight: 400\"> is a popular automated machine learning toolkit, built on the widely used scikit-learn library for machine learning. auto-sklearn as a project, inspired by Auto-WEKA, expands upon the methods used by AutoML frameworks. <\/span><\/p>\n<p><a href=\"https:\/\/ml.informatik.uni-freiburg.de\/papers\/15-NIPS-auto-sklearn-preprint.pdf\"><span style=\"font-weight: 400\">The core of the model<\/span><\/a><span style=\"font-weight: 400\"> is straightforward: taking into consideration 15 classification algorithms, 14 feature preprocessing methods, and 4 data preprocessing methods from scikit-learn, and taking suitable combinations, a parameter space of 110 hyperparameters are created. Since there is a conditionality between some preprocessing methods and classifiers, the number of hyperparameters is not 14 * 15 * 4 = 840, but is rather constrained at 110. This core ML framework is then optimized using Bayesian optimization to find the best possible combinations of preprocessors, classifier, and hyperparameters. <\/span><\/p>\n<p><span style=\"font-weight: 400\">The innovative part of auto-sklearn comes in two methods: using meta-learning to warmstart Bayesian optimization for increased performance, and using ensemble methods with the resulting top classifiers to increase robustness and reduce overfitting. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Meta-learning is a field of machine learning that focuses on learning to learn. It\u2019s based on the approach of <\/span><a href=\"https:\/\/www.automl.org\/wp-content\/uploads\/2018\/12\/metalearning.pdf\"><span style=\"font-weight: 400\">systematically observing how ML approaches perform on a wide range of learning tasks<\/span><\/a><span style=\"font-weight: 400\">, and using this knowledge in the form of meta-data on approaches to learn new tasks much faster.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In auto-sklearn, meta-learning is used to collect meta-features and performance metrics on datasets to identify the characteristics of the dataset that can suggest efficient algorithm and hyperparameter instantiation. Any newly encountered dataset goes through a stage of computation for its meta-features, and the result is compared with stored dataset meta-features to select <\/span><i><span style=\"font-weight: 400\">k <\/span><\/i><span style=\"font-weight: 400\">ML framework instantiations to be considered in the Bayesian optimization stage. <\/span><\/p>\n<p><span style=\"font-weight: 400\">The other improvement, automated ensemble construction, takes advantage of the fact that there might be more than one model that performs well on the given dataset. If there are models that are close to the best performing model, instead of discarding them, they can be used to construct an ensemble. <\/span><\/p>\n<p><span style=\"font-weight: 400\">auto-sklearn is extremely simple to use, as one would expect from an AutoML library. The only thing necessary is a dataset, and the An example using auto-sklearn for a regression task: <\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre><span style=\"font-weight: 400\">X, y = sklearn.datasets.load_boston(return_X_y=<\/span><b>True<\/b><span style=\"font-weight: 400\">)<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">feature_types = ([<\/span><span style=\"font-weight: 400\">'numerical'<\/span><span style=\"font-weight: 400\">] * <\/span><span style=\"font-weight: 400\">3<\/span><span style=\"font-weight: 400\">) + [<\/span><span style=\"font-weight: 400\">'categorical'<\/span><span style=\"font-weight: 400\">] + ([<\/span><span style=\"font-weight: 400\">'numerical'<\/span><span style=\"font-weight: 400\">] * <\/span><span style=\"font-weight: 400\">9<\/span><span style=\"font-weight: 400\">)<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">X_train, X_test, y_train, y_test = \\<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 sklearn.model_selection.train_test_split(X, y, random_state=<\/span><span style=\"font-weight: 400\">1<\/span><span style=\"font-weight: 400\">)<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">automl = autosklearn.regression.AutoSklearnRegressor(<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 time_left_for_this_task=<\/span><span style=\"font-weight: 400\">120<\/span><span style=\"font-weight: 400\">,<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 per_run_time_limit=<\/span><span style=\"font-weight: 400\">30<\/span><span style=\"font-weight: 400\">,<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 tmp_folder=<\/span><span style=\"font-weight: 400\">'\/tmp\/autosklearn_regression_example_tmp'<\/span><span style=\"font-weight: 400\">,<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 output_folder=<\/span><span style=\"font-weight: 400\">'\/tmp\/autosklearn_regression_example_out'<\/span><span style=\"font-weight: 400\">,<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">)<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">automl.fit(X_train, y_train, dataset_name=<\/span><span style=\"font-weight: 400\">'boston'<\/span><span style=\"font-weight: 400\">,<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0feat_type=feature_types)<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">print(automl.show_models())<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">predictions = automl.predict(X_test)<\/span><span style=\"font-weight: 400\">\r\n<\/span><span style=\"font-weight: 400\">print(<\/span><span style=\"font-weight: 400\">\"R2 score:\"<\/span><span style=\"font-weight: 400\">, sklearn.metrics.r2_score(y_test, predictions))<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400\">You can see the full example <\/span><a href=\"https:\/\/automl.github.io\/auto-sklearn\/stable\/examples\/example_regression.html\"><span style=\"font-weight: 400\">here<\/span><\/a><span style=\"font-weight: 400\">, and more examples <\/span><a href=\"https:\/\/automl.github.io\/auto-sklearn\/stable\/examples\/index.html\"><span style=\"font-weight: 400\">here<\/span><\/a><span style=\"font-weight: 400\">. Using auto-sklearn is as simple as calling the appropriate classifier or regressor with a specified budget and input\/output folders. With a single call to the fit method of auto-regressor, auto-sklearn finds the best performing model for the dataset and task at hand. <\/span><\/p>\n<h1><b>Open-Source Libraries for AutoML<\/b><\/h1>\n<p><a href=\"http:\/\/www.cs.ubc.ca\/labs\/beta\/Projects\/autoweka\/\"><span style=\"font-weight: 400\">Auto-WEKA<\/span><\/a><span style=\"font-weight: 400\">: Based on the open-source <\/span><a href=\"https:\/\/www.cs.waikato.ac.nz\/ml\/weka\/\"><span style=\"font-weight: 400\">WEKA<\/span><\/a><span style=\"font-weight: 400\"> project, Auto-WEKA is the first open source AutoML tool to be developed, dating back to 2013. Auto-WEKA 2.0 was released subsequently in 2016, adding support for regression, parallelism, and optimization for new metrics. Auto-WEKA 2.0 is available in WEKA as a package, and is quite accessible to tinkerers and developers alike. <\/span><\/p>\n<p><a href=\"https:\/\/autokeras.com\/\"><span style=\"font-weight: 400\">Auto-Keras<\/span><\/a><span style=\"font-weight: 400\">: An open source library for automated neural network learning. Trying to tackle the <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Neural_architecture_search\"><span style=\"font-weight: 400\">neural architecture search<\/span><\/a><span style=\"font-weight: 400\"> (NAS) problem, <\/span><a href=\"https:\/\/arxiv.org\/abs\/1806.10282\"><span style=\"font-weight: 400\">Auto-Keras utilizes network morphism<\/span><\/a><span style=\"font-weight: 400\"> and Bayesian optimization. <\/span><\/p>\n<p><a href=\"https:\/\/epistasislab.github.io\/tpot\/\"><span style=\"font-weight: 400\">TPOT<\/span><\/a><span style=\"font-weight: 400\"> (Tree-based Pipeline Optimization Tool): Taking a different approach from the aforementioned tools, TPOT is an AutoML tool that uses genetic programming for its optimization procedure. Implemented upon scikit-learn, TPOT is offered as a Python library. <\/span><\/p>\n<h1><b>Limitations and Conclusion<\/b><\/h1>\n<p><span style=\"font-weight: 400\">AutoML is still an active research area, and there\u2019s progress to be made. Current approaches include solving tasks like classification and regression, and can configure neural networks. However, AutoML solutions have their limitations: <\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Problems such as semi-supervised learning, unsupervised learning, and reinforcement learning are not yet tackled by the AutoML community. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">AutoML algorithms rely on the data being clean and relevant. Data cleaning and feature engineering are not yet supported by any of the AutoML approaches. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">AutoML jobs can take quite a long time, in the magnitude of days, to come up with a well-performing solution, even with a warmup step. <\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">Machine learning and AI are becoming more accessible with each passing year. While high-level libraries like Keras hide the underlying complexity of deep learning models, AutoML approaches take one step further, and are able to provide feasible machine learning models just from a dataset as an input. This provides a smooth pathway into machine learning for non-experts. AutoML can provide production-ready models for small startups that cannot dedicate enough budget to hiring ML experts. <\/span><\/p>\n<p><span style=\"font-weight: 400\">This does not mean that AutoML is only directed towards non-experts. Techniques used in AutoML libraries can provide powerful tools for automated optimization for developers, and the results of AutoML searches can provide valuable intuition towards model choices and hyperparameter configurations. AutoML also does not mean that there\u2019ll be no need for machine learning experts &#8211; collecting data, ingesting data, cleaning and preprocessing, monitoring and evaluating are important parts of any ML pipeline, and require expertise. <\/span><\/p>\n<p><span style=\"font-weight: 400\">At the end, towards the aim of making AI more available to the general public, developments in AutoML constitute a huge stride in the right direction. With the recent rise it\u2019s seen as a research interest, AutoML can revolutionize the way ML is practiced. \u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Machine learning is undoubtedly one of the biggest strides in technology. Its methods are employed in fields ranging from biomedical industry to agriculture, from personalized assistants to self-driving vehicles. Ranked as the 2nd most important hard skill to have according to LinkedIn, machine learning and AI require careful study and understanding of different algorithms, model<\/p>\n","protected":false},"author":15,"featured_media":7426,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[1363,83,2143],"tags":[518,2922,2923,888,2402,2925,2924],"class_list":["post-7419","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all-episodes","category-articles","category-exclusive-content","tag-ai","tag-automated-machine-learning","tag-automl","tag-data","tag-gokhan-simsek","tag-hyperparameters","tag-models"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introduction to Automated Machine Learning (AutoML) - Software Engineering Daily<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introduction to Automated Machine Learning (AutoML) - Software Engineering Daily\" \/>\n<meta property=\"og:description\" content=\"Machine learning is undoubtedly one of the biggest strides in technology. Its methods are employed in fields ranging from biomedical industry to agriculture, from personalized assistants to self-driving vehicles. Ranked as the 2nd most important hard skill to have according to LinkedIn, machine learning and AI require careful study and understanding of different algorithms, model\" \/>\n<meta property=\"og:url\" content=\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/\" \/>\n<meta property=\"og:site_name\" content=\"Software Engineering Daily\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-15T15:00:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-16T18:55:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"469\" \/>\n\t<meta property=\"og:image:height\" content=\"235\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Gokhan Simsek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GokhanSimseek\" \/>\n<meta name=\"twitter:site\" content=\"@software_daily\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gokhan Simsek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/\"},\"author\":{\"name\":\"Gokhan Simsek\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e890d5bb8941fc76fb69909e6702c34d\"},\"headline\":\"Introduction to Automated Machine Learning (AutoML)\",\"datePublished\":\"2019-05-15T15:00:06+00:00\",\"dateModified\":\"2019-05-16T18:55:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/\"},\"wordCount\":2253,\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1\",\"keywords\":[\"AI\",\"Automated Machine Learning\",\"AutoML\",\"data\",\"Gokhan Simsek\",\"hyperparameters\",\"models\"],\"articleSection\":[\"All Content\",\"Exclusive Articles\",\"Exclusive Content\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/\",\"url\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/\",\"name\":\"Introduction to Automated Machine Learning (AutoML) - Software Engineering Daily\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1\",\"datePublished\":\"2019-05-15T15:00:06+00:00\",\"dateModified\":\"2019-05-16T18:55:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1\",\"width\":469,\"height\":235},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/softwareengineeringdaily.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction to Automated Machine Learning (AutoML)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"name\":\"Software Engineering Daily\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\",\"name\":\"Software Engineering Daily\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"width\":549,\"height\":169,\"caption\":\"Software Engineering Daily\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/software_daily\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e890d5bb8941fc76fb69909e6702c34d\",\"name\":\"Gokhan Simsek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9ad291f06753e23a47e536bcfe34701f?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9ad291f06753e23a47e536bcfe34701f?s=96&d=retro&r=pg\",\"caption\":\"Gokhan Simsek\"},\"description\":\"Gokhan is a computer science graduate, currently pursuing a MSc. degree in Data Science at Eindhoven University of Technology.\",\"sameAs\":[\"https:\/\/x.com\/GokhanSimseek\"],\"url\":\"https:\/\/softwareengineeringdaily.com\/author\/gokhan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introduction to Automated Machine Learning (AutoML) - Software Engineering Daily","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/","og_locale":"en_US","og_type":"article","og_title":"Introduction to Automated Machine Learning (AutoML) - Software Engineering Daily","og_description":"Machine learning is undoubtedly one of the biggest strides in technology. Its methods are employed in fields ranging from biomedical industry to agriculture, from personalized assistants to self-driving vehicles. Ranked as the 2nd most important hard skill to have according to LinkedIn, machine learning and AI require careful study and understanding of different algorithms, model","og_url":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/","og_site_name":"Software Engineering Daily","article_published_time":"2019-05-15T15:00:06+00:00","article_modified_time":"2019-05-16T18:55:55+00:00","og_image":[{"width":469,"height":235,"url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1","type":"image\/png"}],"author":"Gokhan Simsek","twitter_card":"summary_large_image","twitter_creator":"@GokhanSimseek","twitter_site":"@software_daily","twitter_misc":{"Written by":"Gokhan Simsek","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#article","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/"},"author":{"name":"Gokhan Simsek","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e890d5bb8941fc76fb69909e6702c34d"},"headline":"Introduction to Automated Machine Learning (AutoML)","datePublished":"2019-05-15T15:00:06+00:00","dateModified":"2019-05-16T18:55:55+00:00","mainEntityOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/"},"wordCount":2253,"publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1","keywords":["AI","Automated Machine Learning","AutoML","data","Gokhan Simsek","hyperparameters","models"],"articleSection":["All Content","Exclusive Articles","Exclusive Content"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/","url":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/","name":"Introduction to Automated Machine Learning (AutoML) - Software Engineering Daily","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#primaryimage"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1","datePublished":"2019-05-15T15:00:06+00:00","dateModified":"2019-05-16T18:55:55+00:00","breadcrumb":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#primaryimage","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1","width":469,"height":235},{"@type":"BreadcrumbList","@id":"https:\/\/softwareengineeringdaily.com\/2019\/05\/15\/introduction-to-automated-machine-learning-automl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/softwareengineeringdaily.com\/"},{"@type":"ListItem","position":2,"name":"Introduction to Automated Machine Learning (AutoML)"}]},{"@type":"WebSite","@id":"https:\/\/softwareengineeringdaily.com\/#website","url":"https:\/\/softwareengineeringdaily.com\/","name":"Software Engineering Daily","description":"","publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/softwareengineeringdaily.com\/#organization","name":"Software Engineering Daily","url":"https:\/\/softwareengineeringdaily.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","width":549,"height":169,"caption":"Software Engineering Daily"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/software_daily"]},{"@type":"Person","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e890d5bb8941fc76fb69909e6702c34d","name":"Gokhan Simsek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9ad291f06753e23a47e536bcfe34701f?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9ad291f06753e23a47e536bcfe34701f?s=96&d=retro&r=pg","caption":"Gokhan Simsek"},"description":"Gokhan is a computer science graduate, currently pursuing a MSc. degree in Data Science at Eindhoven University of Technology.","sameAs":["https:\/\/x.com\/GokhanSimseek"],"url":"https:\/\/softwareengineeringdaily.com\/author\/gokhan\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/05\/image7-1.png?fit=469%2C235&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p7GuoD-1VF","_links":{"self":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/7419"}],"collection":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/comments?post=7419"}],"version-history":[{"count":0,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/7419\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media\/7426"}],"wp:attachment":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media?parent=7419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/categories?post=7419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/tags?post=7419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}