{"id":1489,"date":"2024-08-13T14:26:46","date_gmt":"2024-08-13T14:26:46","guid":{"rendered":"https:\/\/summergeometry.org\/sgi2024\/?p=1489"},"modified":"2024-08-13T14:26:47","modified_gmt":"2024-08-13T14:26:47","slug":"voronoi-tessellations","status":"publish","type":"post","link":"https:\/\/summergeometry.org\/sgi2024\/voronoi-tessellations\/","title":{"rendered":"Voronoi Tessellations"},"content":{"rendered":"\n<p>Last week, we looked into Voronoi tessellations and their potential for high dimensional sampling and integral approximations. <\/p>\n\n\n\n<p>When we have a very complicated high-dimensional function, it can be very challenging to compute its integral in a given domain. A standard way to approximate it is through Monte Carlo integration<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Monte Carlo integration<\/h2>\n\n\n\n<p>Monte Carlo integration is a technique consisting of querying the integrand function <em>f<\/em> at <em>N<\/em> <strong>random <\/strong>locations <strong>uniformly<\/strong>, taking the average, and then multiplying the region&#8217;s volume:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"236\" height=\"120\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/image-31.png\" alt=\"\" class=\"wp-image-1490\" style=\"width:135px;height:auto\" \/><\/figure>\n\n\n\n<p>The law of large numbers ensures that, in the limit, this quantity approximates the actual integral better and better.<\/p>\n\n\n\n<p><strong>Okay, but<\/strong> the points are sampled i.i.d. uniformly, which might not be optimal to compute the integral&#8217;s value from a very small sample size. Maybe we can find a way to <em>guide<\/em> the sampling and leverage prior knowledge we might have about the sample space. <br><strong>Okay, and<\/strong> maybe the points are not extracted i.i.d. What if we have no control over the function &#8211; maybe it&#8217;s some very big machine in a distant factory, or an event occurring once in a decade. If we can&#8217;t ensure that the points are i.i.d. we just can&#8217;t use Monte Carlo integration. <\/p>\n\n\n\n<p>Therefore, we will investigate whether we can use Voronoi tessellations to overcome this limitation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Voronoi Tessellation<\/h2>\n\n\n\n<p>A Voronoi tessellation is a partition of the space according to the following rules:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We start with some &#8220;pivot&#8221; points <em>p<sub>i<\/sub><\/em> in the space (which could be the points at which we evaluate the integrand function)<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"626\" height=\"417\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/image-32.png\" alt=\"\" class=\"wp-image-1491\" style=\"width:252px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/image-32.png 626w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/image-32-300x200.png 300w\" sizes=\"auto, (max-width: 626px) 100vw, 626px\" \/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Now, we create as many regions as there are initial pivot points defined as follows: a point <em>x<\/em> in the space belongs to the region of the point <em><em>p<sub>i<\/sub><\/em><\/em> if the point <em>p<sub>i<\/sub><\/em> is the closest pivotal point to <em>x<\/em> :<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"333\" height=\"333\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Coloured_Voronoi_2D.png\" alt=\"\" class=\"wp-image-1492\" style=\"width:283px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Coloured_Voronoi_2D.png 333w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Coloured_Voronoi_2D-300x300.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Coloured_Voronoi_2D-150x150.png 150w\" sizes=\"auto, (max-width: 333px) 100vw, 333px\" \/><\/figure>\n<\/div>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Voronoi tessellation is essentially one iteration of k-means clustering where the centroids are the pivotal points <em>p<sub>i<\/sub><\/em> and the data to cluster are all the points <em>x<\/em> in the domain<\/p>\n<\/blockquote>\n\n\n\n<p>Some immediate ideas here:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We can immediately try out &#8220;Voronoi integration&#8221;, where we multiply the value of the integrand at each starting point <em>f(p<sub>i<\/sub>)<\/em> by the volume of its corresponding region, summing them all up, and see how it behaves compared to Monte Carlo integration (especially in high dimensions)<\/li>\n\n\n\n<li>We can exploit Bayesian optimisation to guide the sampling of the points <em>p<sub>i<\/sub><\/em> as we don&#8217;t require them to be i.i.d. unlike Monte Carlo integration<\/li>\n\n\n\n<li>We can exploit prior knowledge on the integration domain to weight the areas by a <em>measure<\/em><\/li>\n<\/ul>\n\n\n\n<p><br>In the next blog posts, we will see some of these ideas in action!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last week, we looked into Voronoi tessellations and their potential for high dimensional sampling and integral approximations. When we have a very complicated high-dimensional function, it can be very challenging to compute its integral in a given domain. A standard way to approximate it is through Monte Carlo integration Monte Carlo integration Monte Carlo integration [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40],"tags":[79,80,78],"ppma_author":[13],"class_list":["post-1489","post","type-post","status-publish","format-standard","hentry","category-math","tag-integration","tag-monte-carlo","tag-voronoi"],"authors":[{"term_id":13,"user_id":0,"is_guest":1,"slug":"cap-riccardo-ali-it","display_name":"riccardo.ali.it","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"","last_name":"","user_url":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts\/1489","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/comments?post=1489"}],"version-history":[{"count":1,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts\/1489\/revisions"}],"predecessor-version":[{"id":1493,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts\/1489\/revisions\/1493"}],"wp:attachment":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/media?parent=1489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/categories?post=1489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/tags?post=1489"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/ppma_author?post=1489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}