{"id":4041,"date":"2017-06-01T10:20:36","date_gmt":"2017-06-01T10:20:36","guid":{"rendered":"http:\/\/stratio.com\/?p=4041"},"modified":"2023-09-20T13:32:51","modified_gmt":"2023-09-20T13:32:51","slug":"feature-selection-big-datasets-1","status":"publish","type":"post","link":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/","title":{"rendered":"Evolutionary feature selection in big datasets (Part I)"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">When we want to fit a Machine Learning (ML) model to a big dataset, it is often recommended to carefully pre-process the input data in order to obtain better results. Although it is widely accepted that more data lead to better results, this is not necessarily true when referred to the number of variables of our data. Some variables may be noisy, redundant and not useful.&nbsp;<\/span><\/p>\n<p style=\"text-align: justify;\"><!--more--><br \/>\nThe process of removing useless variables is known as Feature Selection (FS), it is a very common task that precedes the application of any data analysis technique. In this first chapter of a three-part series, we will define the FS problem, review existing approaches with an emphasis on wrapper methods, and define the concept of metaheuristic algorithms and their relation with FS. In part 2 (coming soon!) we will present a taxonomy of metaheuristics and deep into genetic algorithms.<\/p>\n<h2>Motivation<\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">More formally,&nbsp;<\/span><span style=\"font-weight: 400;\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Feature_selection\" target=\"_blank\" rel=\"noopener\">Feature Selection<\/a><\/span><span style=\"font-weight: 400;\">&nbsp;is the process of selecting a subset of the features of a dataset that is optimal according to some criterion. It has two main aims:<\/span><\/p>\n<p style=\"text-align: justify;\"><b>It improves the model obtained by a ML algorithm<\/b><span style=\"font-weight: 400;\">, because it reduces overfitting (less features lead to a simpler model which is&nbsp;<\/span><i><span style=\"font-weight: 400;\">less prone to overfitting&nbsp;<\/span><\/i><span style=\"font-weight: 400;\">and&nbsp;<\/span><i><span style=\"font-weight: 400;\">easier to understand and interpret<\/span><\/i><span style=\"font-weight: 400;\">), and also reduces the need of many examples when there are many variables (alleviating the curse of dimensionality). Of course, Big Data technologies cannot help if we do not have enough examples, as it is usually the case with microarray data -many genes, few patients- or medical imaging, just to cite a few. But it does help in collecting and processing lots of variables from heterogeneous sources. Then we can use an FS algorithm to decide which of them are actually relevant and discard the rest.<\/span><\/p>\n<p style=\"text-align: justify;\"><b>It reduces the size of the dataset<\/b><span style=\"font-weight: 400;\">. A reduced storage space can enable running a non-distributed algorithm on our data. Maybe the algorithm is hard to parallelize and is readily available off-the-shelf in some non-distributed analytic environment. Furthermore, ML algorithms run faster on smaller datasets, thus reducing training time.<\/span><\/p>\n<h2>Taxonomy of FS methods<\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">There are lots of FS methods out there, as well as many good books on this topic. Roughly speaking, they can be classified as follows:<\/span><\/p>\n<p style=\"text-align: justify;\"><b>Filter methods<\/b><span style=\"font-weight: 400;\">: they are based on data-related measures, and are independent of the algorithm we want to run later on the reduced dataset. Basically they detect useless features according to mathematical or statistical criteria, or in terms of metrics like the amount of additional information each feature provides. They are generally faster than any other method and have good generalization ability. Some examples: the Chi-squared statistic applied to FS, the information gain metric, the correlation with the target variable and uncorrelation between features\u2026<br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><b>Embedded methods:<\/b><span style=\"font-weight: 400;\">&nbsp;feature selection is done at the same time as fitting our ML model. The output of this process is usually the model together with the best feature subset (for that specific model). A typical example are regularization methods, which modify the objective function used to build the model to penalize models with many variables. By acting on the objective function, regularization methods also have a direct influence on the learning output (the model itself). Forward\/backwards feature selection, in which successively model comparison is done, is another example. As the name says, embedded methods are highly coupled to the specific learning model we are building. On the other hand, they are generally faster than wrapper methods.<\/span><\/p>\n<p style=\"text-align: justify;\"><b>Wrapper methods:<\/b><span style=\"font-weight: 400;\">&nbsp;they perform a search in the space of feature combinations, guided by some ML model to evaluate candidate subsets of features. The model can be different from the one we may eventually build later on the final reduced dataset.<br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">They are the most time consuming, because many candidate subsets evaluated via an ML algorithm (to make things clearer:&nbsp;<\/span><i><span style=\"font-weight: 400;\">many&nbsp;<\/span><\/i><span style=\"font-weight: 400;\">does not mean&nbsp;<\/span><i><span style=\"font-weight: 400;\">every possible feature combination<\/span><\/i><span style=\"font-weight: 400;\">). Wrapper methods commonly require an intelligent search (heuristic optimization) procedure to find the best feature combination. Among the battery of metaheuristics available to solve this problem, evolutionary algorithms have proven a very good choice due to how easy to implement they are. The CHC algorithm, which constitutes the focus of this series, is an example of a wrapper method that has been successfully applied to FS. We will dive deeper into the details of CHC and a distributed implementation of it in the next chapter.<\/span><\/p>\n<h2><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8115\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/06\/shutterstock_191928005-compressor-1.jpg\" alt=\"\" width=\"4200\" height=\"3150\"><\/h2>\n<h2>Metaheuristics for optimization<\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">Imagine a candidate feature subset, represented as a vector of length&nbsp;<\/span><i><span style=\"font-weight: 400;\">N<\/span><\/i><span style=\"font-weight: 400;\">&nbsp;(where&nbsp;<\/span><i><span style=\"font-weight: 400;\">N<\/span><\/i><span style=\"font-weight: 400;\">&nbsp;is the number of features of the input dataset). Something like this:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">s = 1 1 0 0 1 0&nbsp;<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">In this binary vector,&nbsp;<\/span><span style=\"font-weight: 400;\">s<sub>i<\/sub>= 1 when the i-th feature is selected and 0 otherwise. As can be seen, finding the&nbsp;<\/span><i><span style=\"font-weight: 400;\">best&nbsp;<\/span><\/i><span style=\"font-weight: 400;\">(according to some criterion) feature subset is a combinatorial optimization problem. There are 2<\/span><sup>N<\/sup><span style=\"font-weight: 400;\">&nbsp;distinct feature subsets, hence evaluating (by means of some classification algorithm) all possibilities is computationally unfeasible when&nbsp;<\/span><i><span style=\"font-weight: 400;\">N<\/span><\/i><span style=\"font-weight: 400;\">&nbsp;becomes moderately high (beyond 15-20). The problem consists in finding the best feature subset by exploring the space of combinations in an intelligent way that yields the best solution much faster than a brute force exploration.<\/span><\/p>\n<p style=\"text-align: justify;\"><i><span style=\"font-weight: 400;\">Metaheuristics<\/span><\/i><span style=\"font-weight: 400;\">&nbsp;constitute a broad class of search algorithms that are able to deal with huge search spaces in optimization problems. They explore the solution space to find good solutions within a reasonable time, although finding the global optimum is not guaranteed. However, they perform very well in practice, and are often the only way to go in situations in which the search space is too large for a classical method, or the function being optimized is non-differentiable, or does not have an analytical expression at all (for instance, the magnitude being optimized is the result of a randomized simulation under a parameter set that constitutes a candidate solution).&nbsp;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">In the next chapter, we will present a taxonomy of metaheuristics, and develop those inspired by Darwin\u2019s theory of the evolution of species (widely known as evolutionary computation), which include CHC. Finally we will explain how CHC can be parallelized with Spark.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When we want to fit a Machine Learning (ML) model to a big dataset, it is often recommended to carefully pre-process the input data in order to obtain better results. <\/p>\n","protected":false},"author":2,"featured_media":13995,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[686],"tags":[],"ppma_author":[794],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.9 (Yoast SEO v22.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Evolutionary feature selection in big datasets (Part I) - Stratio<\/title>\n<meta name=\"description\" content=\"Approach to the Feature Selection problem, existing approaches with emphasis on wrapper methods, and metaheuristic algorithms and their relation with FS.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Evolutionary feature selection in big datasets (Part I)\" \/>\n<meta property=\"og:description\" content=\"Approach to the Feature Selection problem, existing approaches with emphasis on wrapper methods, and metaheuristic algorithms and their relation with FS.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Stratio\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-01T10:20:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-20T13:32:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"853\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@stratiobd\" \/>\n<meta name=\"twitter:site\" content=\"@stratiobd\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/af4f5fbbeb95bd7d55f79d9a677e615d\"},\"headline\":\"Evolutionary feature selection in big datasets (Part I)\",\"datePublished\":\"2017-06-01T10:20:36+00:00\",\"dateModified\":\"2023-09-20T13:32:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/\"},\"wordCount\":1025,\"publisher\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg\",\"articleSection\":[\"Product\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/\",\"url\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/\",\"name\":\"Evolutionary feature selection in big datasets (Part I) - Stratio\",\"isPartOf\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg\",\"datePublished\":\"2017-06-01T10:20:36+00:00\",\"dateModified\":\"2023-09-20T13:32:51+00:00\",\"description\":\"Approach to the Feature Selection problem, existing approaches with emphasis on wrapper methods, and metaheuristic algorithms and their relation with FS.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#primaryimage\",\"url\":\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg\",\"contentUrl\":\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg\",\"width\":1280,\"height\":853},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.stratio.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Evolutionary feature selection in big datasets (Part I)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#website\",\"url\":\"https:\/\/www.stratio.com\/blog\/\",\"name\":\"Stratio Blog\",\"description\":\"Corporate blog\",\"publisher\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.stratio.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#organization\",\"name\":\"Stratio\",\"url\":\"https:\/\/www.stratio.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/stratio.com\/blog\/wp-content\/uploads\/2020\/06\/stratio-web-logo-1.png\",\"contentUrl\":\"https:\/\/stratio.com\/blog\/wp-content\/uploads\/2020\/06\/stratio-web-logo-1.png\",\"width\":260,\"height\":55,\"caption\":\"Stratio\"},\"image\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/stratiobd\",\"https:\/\/es.linkedin.com\/company\/stratiobd\",\"https:\/\/www.youtube.com\/c\/StratioBD\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/af4f5fbbeb95bd7d55f79d9a677e615d\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/image\/589aaf4b404b1fe099b09564062c4563\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Evolutionary feature selection in big datasets (Part I) - Stratio","description":"Approach to the Feature Selection problem, existing approaches with emphasis on wrapper methods, and metaheuristic algorithms and their relation with FS.","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:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/","og_locale":"en_US","og_type":"article","og_title":"Evolutionary feature selection in big datasets (Part I)","og_description":"Approach to the Feature Selection problem, existing approaches with emphasis on wrapper methods, and metaheuristic algorithms and their relation with FS.","og_url":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/","og_site_name":"Stratio","article_published_time":"2017-06-01T10:20:36+00:00","article_modified_time":"2023-09-20T13:32:51+00:00","og_image":[{"width":1280,"height":853,"url":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@stratiobd","twitter_site":"@stratiobd","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#article","isPartOf":{"@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/"},"author":{"name":"admin","@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/af4f5fbbeb95bd7d55f79d9a677e615d"},"headline":"Evolutionary feature selection in big datasets (Part I)","datePublished":"2017-06-01T10:20:36+00:00","dateModified":"2023-09-20T13:32:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/"},"wordCount":1025,"publisher":{"@id":"https:\/\/www.stratio.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg","articleSection":["Product"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/","url":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/","name":"Evolutionary feature selection in big datasets (Part I) - Stratio","isPartOf":{"@id":"https:\/\/www.stratio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#primaryimage"},"image":{"@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg","datePublished":"2017-06-01T10:20:36+00:00","dateModified":"2023-09-20T13:32:51+00:00","description":"Approach to the Feature Selection problem, existing approaches with emphasis on wrapper methods, and metaheuristic algorithms and their relation with FS.","breadcrumb":{"@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#primaryimage","url":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg","contentUrl":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/06\/Evolution1.jpg","width":1280,"height":853},{"@type":"BreadcrumbList","@id":"https:\/\/www.stratio.com\/blog\/feature-selection-big-datasets-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.stratio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Evolutionary feature selection in big datasets (Part I)"}]},{"@type":"WebSite","@id":"https:\/\/www.stratio.com\/blog\/#website","url":"https:\/\/www.stratio.com\/blog\/","name":"Stratio Blog","description":"Corporate blog","publisher":{"@id":"https:\/\/www.stratio.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.stratio.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.stratio.com\/blog\/#organization","name":"Stratio","url":"https:\/\/www.stratio.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/stratio.com\/blog\/wp-content\/uploads\/2020\/06\/stratio-web-logo-1.png","contentUrl":"https:\/\/stratio.com\/blog\/wp-content\/uploads\/2020\/06\/stratio-web-logo-1.png","width":260,"height":55,"caption":"Stratio"},"image":{"@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/stratiobd","https:\/\/es.linkedin.com\/company\/stratiobd","https:\/\/www.youtube.com\/c\/StratioBD"]},{"@type":"Person","@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/af4f5fbbeb95bd7d55f79d9a677e615d","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/image\/589aaf4b404b1fe099b09564062c4563","url":"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g","caption":"admin"}}]}},"authors":[{"term_id":794,"user_id":2,"is_guest":0,"slug":"admin","display_name":"admin","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/posts\/4041"}],"collection":[{"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/comments?post=4041"}],"version-history":[{"count":12,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/posts\/4041\/revisions"}],"predecessor-version":[{"id":13996,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/posts\/4041\/revisions\/13996"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/media\/13995"}],"wp:attachment":[{"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/media?parent=4041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/categories?post=4041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/tags?post=4041"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}