{"id":15646067,"url":"https://github.com/d4l3k/go-bayesopt","last_synced_at":"2025-04-12T04:33:03.448Z","repository":{"id":57493806,"uuid":"103997130","full_name":"d4l3k/go-bayesopt","owner":"d4l3k","description":"A library for doing Bayesian Optimization using Gaussian Processes (blackbox optimizer) in Go/Golang.","archived":false,"fork":false,"pushed_at":"2024-05-31T10:23:56.000Z","size":37,"stargazers_count":50,"open_issues_count":4,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-26T00:03:25.744Z","etag":null,"topics":["bayesianoptimization","bayesopt","blackbox-optimizer","gaussian-processes","go","hyperparameter-optimization","machine-learning","optimization"],"latest_commit_sha":null,"homepage":"https://godoc.org/github.com/d4l3k/go-bayesopt","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d4l3k.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-18T22:09:50.000Z","updated_at":"2024-09-19T16:56:42.000Z","dependencies_parsed_at":"2024-10-22T22:36:26.727Z","dependency_job_id":null,"html_url":"https://github.com/d4l3k/go-bayesopt","commit_stats":{"total_commits":24,"total_committers":2,"mean_commits":12.0,"dds":0.08333333333333337,"last_synced_commit":"8506d30407327770a6d376ffc70fa6ca74261e3f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d4l3k%2Fgo-bayesopt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d4l3k%2Fgo-bayesopt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d4l3k%2Fgo-bayesopt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d4l3k%2Fgo-bayesopt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d4l3k","download_url":"https://codeload.github.com/d4l3k/go-bayesopt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248517281,"owners_count":21117425,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bayesianoptimization","bayesopt","blackbox-optimizer","gaussian-processes","go","hyperparameter-optimization","machine-learning","optimization"],"created_at":"2024-10-03T12:11:14.560Z","updated_at":"2025-04-12T04:33:03.427Z","avatar_url":"https://github.com/d4l3k.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-bayesopt [![Build Status](https://travis-ci.org/d4l3k/go-bayesopt.svg?branch=master)](https://travis-ci.org/d4l3k/go-bayesopt) [![GoDoc](https://godoc.org/github.com/d4l3k/go-bayesopt?status.svg)](https://godoc.org/github.com/d4l3k/go-bayesopt)\n\nA library for doing Bayesian Optimization using Gaussian Processes (blackbox\noptimizer) in Go/Golang.\n\nThis project is under active development, if you find a bug, or anything that\nneeds correction, please let me know.\n\n## Simple Example\n\n```go\npackage main\n\nimport (\n  \"log\"\n  \"math\"\n\n  \"github.com/d4l3k/go-bayesopt\"\n)\n\nfunc main() {\n  X := bayesopt.UniformParam{\n    Max: 10,\n    Min: -10,\n  }\n  o := bayesopt.New(\n    []Param{\n      X,\n    },\n  )\n  // minimize x^2+1\n  x, y, err := o.Optimize(func(params map[Param]float64) float64 {\n    return math.Pow(params[X], 2) + 1\n  })\n  if err != nil {\n    log.Fatal(err)\n  }\n  log.Println(x, y)\n}\n```\n\n## How does it work?\n\nFrom https://github.com/fmfn/BayesianOptimization:\n\nBayesian optimization works by constructing a posterior distribution of\nfunctions (gaussian process) that best describes the function you want to\noptimize. As the number of observations grows, the posterior distribution\nimproves, and the algorithm becomes more certain of which regions in parameter\nspace are worth exploring and which are not, as seen in the picture below.\n\n![BayesianOptimization in action](https://github.com/fmfn/BayesianOptimization/blob/master/examples/bo_example.png)\n\nAs you iterate over and over, the algorithm balances its needs of exploration\nand exploitation taking into account what it knows about the target function. At\neach step a Gaussian Process is fitted to the known samples (points previously\nexplored), and the posterior distribution, combined with a exploration strategy\n(such as UCB (Upper Confidence Bound), or EI (Expected Improvement)), are used\nto determine the next point that should be explored (see the gif below).\n\n![BayesianOptimization in action](https://github.com/fmfn/BayesianOptimization/blob/master/examples/bayesian_optimization.gif)\n\nThis process is designed to minimize the number of steps required to find a\ncombination of parameters that are close to the optimal combination. To do so,\nthis method uses a proxy optimization problem (finding the maximum of the\nacquisition function) that, albeit still a hard problem, is cheaper (in the\ncomputational sense) and common tools can be employed. Therefore Bayesian\nOptimization is most adequate for situations where sampling the function to be\noptimized is a very expensive endeavor. See the references for a proper\ndiscussion of this method.\n\n## License\n\ngo-bayesopt is licensed under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd4l3k%2Fgo-bayesopt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd4l3k%2Fgo-bayesopt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd4l3k%2Fgo-bayesopt/lists"}