Comments (2)
In order to utilize a genetic algorithm, one first need to define the structure of the genetic material and how it maps to the final individual.
Going based on the existing tuning implementation, we could imagine having a minimum of one "gene" per supplied tunable parameter, where the gene is represented as a bitstring and a mapping from parameter value to bits in the bitstring. Genes will be strung together to construct the full genetic material for an individual, and would be subject to the usual rules of mutation and recombination. Additionally, parameters with more than 2 possible states would be expanded into longer genes, whose combined bit values encode the final value of that parameter. Of course, if the number of feasible values is not a power of two, then normalization or rejection of infeasible encodings will need to be implemented. If the number of feasible solutions is mathematically unbounded (such as a range of floating point values), then we also need a strategy to deal with this.
As a comparison, the Borg MOEA algorithm (implemented in BlackBoxOptim.jl) takes the approach of first randomly sampling from (continuous) parameter values to establish an initial population, and then utilizes genetic methods to exchange genes. Importantly, the genes may only take on a value present in one of the initial individuals; arbitrary floating point values are not generated at "runtime". One important caveat is that Borg cannot naturally handle parameters with a countable number of states (such as integer ranges or countable sets). (Note that this is my understanding of the algorithm, and I could be mistaken).
I think locating a method which is able to handle both continuous and discrete parameter ranges would be worth doing, if such a beast exists, as it would be straightforward to implement in the current MLJ tuning configuration.
from mlj.jl.
Relevant discussion: robertfeldt/BlackBoxOptim.jl#136
from mlj.jl.
Related Issues (20)
- Confusing Julia code in adding_models_for_general_use.md HOT 1
- Include MLJBalancing.jl in MLJ and re-export it's names.
- Update docs for new class imbalance support
- Add new sk-learn models to the docs
- Export the name `MLJFlow` HOT 1
- `evaluate` errors HOT 3
- Add AutoEncoderMLJ model (part of BetaML) HOT 10
- need a tutorial for using logger with dagshub and mlflow HOT 4
- Document how to add plot recipes in a new model implementation HOT 4
- Add new model descriptors to fix doc-generation fail HOT 1
- Two models fail integration tests but defy isolation
- Update list of BetaML models HOT 1
- Reinstate CatBoost integraton test
- Upate ROADMAP.md HOT 1
- Improve documentation by additional hierarchy HOT 5
- Include support for MixedModels.jl HOT 2
- Deserialisation fails for wrappers like `TunedModel` when atomic model overloads `save/restore` HOT 2
- feature_importances for Pipeline including XGBoost don't work HOT 2
- Current performance evaluation objects, recently added to TunedModel histories, are too big HOT 2
- Update cheat sheet instance of depracated `@from_network` code
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mlj.jl.