{"id":9742,"date":"2016-02-05T18:04:32","date_gmt":"2016-02-05T16:04:32","guid":{"rendered":"https:\/\/blog.zhaw.ch\/icclab\/?p=9742"},"modified":"2019-08-05T14:00:26","modified_gmt":"2019-08-05T12:00:26","slug":"prediction-engine-prototype-in-cyclops","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/","title":{"rendered":"Predicting cloud usage costs with Cyclops"},"content":{"rendered":"\n<p>by <a href=\"https:\/\/blog.zhaw.ch\/icclab\/josef-spillner\/\">Josef Spillner<\/a><\/p>\n\n\n<p><span style=\"font-weight: 400\">As part of our weekly Cyclops release, <a href=\"http:\/\/blog.zhaw.ch\/icclab\/rating-charging-billing\/\">RCB team<\/a>&nbsp;releases a significant feature this week &#8211; we announce the Prediction Microservice integration in <a href=\"http:\/\/icclab.github.io\/cyclops\/\">Cyclops<\/a>. With this integration, Cyclops will provide simple forecasting of usage and will predict future values. The service could be used as for customers to predict their own cost and as to cloud provider to predict revenues.&nbsp;<\/span><!--more--><\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png\" rel=\"attachment wp-att-9748\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9748\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png\" alt=\"imgpsh_fullsize\" width=\"609\" height=\"348\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png 609w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize-300x171.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize-500x286.png 500w\" sizes=\"auto, (max-width: 609px) 100vw, 609px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">Newly created prediction microservice has machine-learning capability and has been designed to predict values based on historical data. It is also capable of generic factual forecasting by encapsulating <a href=\"http:\/\/spark.apache.org\/mllib\/\">mllib<\/a> as a prediction engine. The prediction microservice queries both UDR and RC services which are parts of Cyclops project to get the Usage Data Record and Charge Data Record of a user, respectively for user perspective. For an admin, the data records of a recourse will indicate the entire overall consumption and not just individual user&#8217;s consumption. To predict the values of resources, mllib is used to provide multiple algorithms support along with machine-learning capability.<\/span><\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/prediction.png\" rel=\"attachment wp-att-9743\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9743\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/prediction.png\" alt=\"prediction\" width=\"674\" height=\"404\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/prediction.png 674w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/prediction-300x180.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/prediction-500x300.png 500w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">The prediction engine is deployed over <a href=\"http:\/\/spark.apache.org\/\">Apache Spark<\/a> engine which contains a scalable machine learning library(mllib). As a package for engine development spark.ml is used to provide high-level APIs built on top of <a href=\"http:\/\/spark.apache.org\/docs\/latest\/sql-programming-guide.html\">DataFrames<\/a>. DataFrame is a collection of data &nbsp;organized into named columns, and is distributed by Apache Spark.<\/span><\/p>\n<p><span style=\"font-weight: 400\">As endpoint parameters, \u201c<\/span><i><span style=\"font-weight: 400\">days before\u201d <\/span><\/i><span style=\"font-weight: 400\">and \u201c<\/span><i><span style=\"font-weight: 400\">days to\u201d<\/span><\/i><span style=\"font-weight: 400\"> should be defined. When a request for the prediction is made by a dashboard through an API to the prediction service, the service collects all necessary user&#8217;s data records for the requested \u201c<\/span><i><span style=\"font-weight: 400\">days before\u201d <\/span><\/i><span style=\"font-weight: 400\">number. An anchor current timeline point is used. The service looks back for the selected number of days to add a degree of customizability for the users. As a prototype, a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linear_regression\">Linear regression<\/a> model is selected. Linear regression is a simple algorithm already implemented in mllib but first of all it has to be created, as shown below.<\/span><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165702.png\" rel=\"attachment wp-att-9745\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9745\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165702.png\" alt=\"Screenshot from 2016-02-05 16:57:02\" width=\"528\" height=\"79\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165702.png 528w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165702-300x45.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165702-500x75.png 500w\" sizes=\"auto, (max-width: 528px) 100vw, 528px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">As soon as linear regression is defined, the data record can be transformed into a valid spark data and can be used as training data for the predicting model. &nbsp;All future predictions will be forecasted due to this dependency.<\/span><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165728.png\" rel=\"attachment wp-att-9746\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9746\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165728.png\" alt=\"Screenshot from 2016-02-05 16:57:28\" width=\"533\" height=\"56\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165728.png 533w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165728-300x32.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165728-500x53.png 500w\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">At this point the Regression model is ready to transform data. For the same reasons mentioned above \u201c<\/span><i><span style=\"font-weight: 400\">days to\u201d <\/span><\/i><span style=\"font-weight: 400\">is needed to get a list of time points from current timestamp to define the number of days for which the values should be predicted and are called features. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/span><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165801.png\" rel=\"attachment wp-att-9747\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9747\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165801.png\" alt=\"Screenshot from 2016-02-05 16:58:01\" width=\"462\" height=\"47\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165801.png 462w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/Screenshot-from-2016-02-05-165801-300x31.png 300w\" sizes=\"auto, (max-width: 462px) 100vw, 462px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">The trained model is fitted with these features and as an output it returns data with new predicted values based on the past training data. The model returns predicted values for defined features as a response back.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Currently, only linear regression has been implemented for the microservice but this implementation doesn&#8217;t include seasonality, for that we need exponential smoothing methods such as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Random_forest\">Random Forest<\/a>. Random Forest can discover more complex dependencies, but will take more time as compared to what Linear Regression would. If variables have a linear dependency, similar results will appear for both algorithms. Due to the usage complexity of Random Forest (especially, with wrong regularization parameters) as compared with that of regression&#8217;s, there are no reasons to use it if variables have a linear dependency. But, if the dependency is different from linear, linear regression could prove to be of little use. To make the decision of choosing an algorithm, it is necessary to define the dependencies and select what model would fit better and as a resultant get more accurate predictions.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The RCB team will be adding more features to the prediction microservice over the next couple of weeks, so stay tuned!<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p><div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/cyclops\/\">Cyclops<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/microservices\/\">microservices<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/prediction\/\">Prediction<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>As part of our weekly Cyclops release, RCB team&nbsp;releases a significant feature this week &#8211; we announce the Prediction Microservice integration in Cyclops. With this integration, Cyclops will provide simple forecasting of usage and will predict future values. The service could be used as for customers to predict their own cost and as to cloud [&hellip;]<\/p>\n","protected":false},"author":486,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1,8],"tags":[420,566,754],"features":[],"class_list":["post-9742","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-charging","tag-cyclops","tag-microservices","tag-prediction"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Predicting cloud usage costs with Cyclops - Service Engineering (ICCLab &amp; SPLab)<\/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:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Predicting cloud usage costs with Cyclops\" \/>\n<meta property=\"og:description\" content=\"As part of our weekly Cyclops release, RCB team&nbsp;releases a significant feature this week &#8211; we announce the Prediction Microservice integration in Cyclops. With this integration, Cyclops will provide simple forecasting of usage and will predict future values. The service could be used as for customers to predict their own cost and as to cloud [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-05T16:04:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-05T12:00:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png\" \/>\n<meta name=\"author\" content=\"icclab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"icclab\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/\"},\"author\":{\"name\":\"icclab\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"headline\":\"Predicting cloud usage costs with Cyclops\",\"datePublished\":\"2016-02-05T16:04:32+00:00\",\"dateModified\":\"2019-08-05T12:00:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/\"},\"wordCount\":626,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png\",\"keywords\":[\"Cyclops\",\"microservices\",\"Prediction\"],\"articleSection\":[\"*.*\",\"Charging\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/\",\"name\":\"Predicting cloud usage costs with Cyclops - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png\",\"datePublished\":\"2016-02-05T16:04:32+00:00\",\"dateModified\":\"2019-08-05T12:00:26+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Predicting cloud usage costs with Cyclops\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\",\"name\":\"icclab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"caption\":\"icclab\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Predicting cloud usage costs with Cyclops - Service Engineering (ICCLab &amp; SPLab)","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:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/","og_locale":"en_US","og_type":"article","og_title":"Predicting cloud usage costs with Cyclops","og_description":"As part of our weekly Cyclops release, RCB team&nbsp;releases a significant feature this week &#8211; we announce the Prediction Microservice integration in Cyclops. With this integration, Cyclops will provide simple forecasting of usage and will predict future values. The service could be used as for customers to predict their own cost and as to cloud [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2016-02-05T16:04:32+00:00","article_modified_time":"2019-08-05T12:00:26+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png","type":"","width":"","height":""}],"author":"icclab","twitter_card":"summary_large_image","twitter_misc":{"Written by":"icclab","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/"},"author":{"name":"icclab","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"headline":"Predicting cloud usage costs with Cyclops","datePublished":"2016-02-05T16:04:32+00:00","dateModified":"2019-08-05T12:00:26+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/"},"wordCount":626,"commentCount":0,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png","keywords":["Cyclops","microservices","Prediction"],"articleSection":["*.*","Charging"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/","url":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/","name":"Predicting cloud usage costs with Cyclops - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png","datePublished":"2016-02-05T16:04:32+00:00","dateModified":"2019-08-05T12:00:26+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/02\/imgpsh_fullsize.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/prediction-engine-prototype-in-cyclops\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Predicting cloud usage costs with Cyclops"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563","name":"icclab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","caption":"icclab"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/9742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/486"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=9742"}],"version-history":[{"count":9,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/9742\/revisions"}],"predecessor-version":[{"id":12494,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/9742\/revisions\/12494"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=9742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=9742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=9742"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=9742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}