0
$\begingroup$

I am writing a genetic algorithm for Machine learning and came across Pittsburgh approach in some research papers. The papers didn't explain the algorithms proper or I am too stupid to understand. I know that each Individual contains set of rules and I have also implemented in binary but am having trouble with 6 float type values. My question is:

  • How am I generating uncertainty value in the genes?

  • How will I be using encoding with real/floating type values?

  • How is the fitness function going to work?

I would love to it also if you could send me references to which I might be able to better understand the algorithm. I will be using float number so no binary methods or explanation.

$\endgroup$
1
$\begingroup$

So both the Pittsburgh and Michigan approaches are techniques for applying evolutionary methods to learning (essentially) a set of "if/then" rules for performing some task effectively. The important bit is the "set" there in "set of rules". You need to learn multiple rules that can each fire in different situations in order to cover the entire space of behaviors the algorithm needs to learn. Where the Pittsburgh and Michigan approaches differ is in how you arrive at that set of rules.

They're both GAs under the hood, so there's a population of things. In the Pittsburgh approach, those "things" are complete candidate solutions to the problem. A single individual in a Pittsburgh algorithm might contain many rules. A single individual in a Michigan approach contains only one rule. In order to form a viable actual algorithm for solving the problem, the Michigan approach needs to take the entire population and hope that each of those individuals with their individual rules combine together in a way to cover the problem space well.

Under the hood though, as I said, they're basically just GAs. So you can do recombination and mutation however you like. You can handle floating point genes the same way you'd handle them in any other GA -- perhaps by using variation operators that natively work on floats or by encoding the values as binary yourself. Fitness in Pittsburgh systems can be reasonably straightforward. Every individual is intended as a complete solution, so you just run your simulation and calculate how well that individual's rule set solves the problem. The answer is that individual's fitness. For Michigan approaches, it's harder, because there's a credit assignment problem. One individual encodes one rule, and that rule may be perfect for its niche, but if the rest of the population is terrible, performance will be poor.

Another problem is that the structure inherent in classifier systems like this means that typical genetic operators won't necessarily work that well. You can use them, but tweaks to the ideas can perform quite a bit better. The Learning Classifier Systems community has done quite a bit of work figuring this stuff out. My general advice would be to start by looking at Stewart Wilson's XCS algorithm.

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.363.2210&rep=rep1&type=pdf

http://opim.wharton.upenn.edu/~sok/papers/b/XCSAlgDesc01202001.ps

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.