thanks to you I got the first version of my GPTree (still not usable). I'm still not used with the representation of a rule as some tree constraints, but I think this is only a matter of usage.
What do you mean with positive class and negative class?
----- Ursprüngliche Mail -----
Von: "Uday kamath" <[log in to unmask]>
An: [log in to unmask]
Gesendet: Freitag, 24. Mai 2013 03:52:40
Betreff: Re: Postprocessing in ec.gp
As i wrote before that my Rules are of condition->action format. The
action is determined by evaluating the GP Individual where fitness is
the "rule coverage" for the class.
The condition is a GPTree with constraints defined as below
Boolean Functions: AND, OR, NOT takes condition or boolean returns boolean
Operators: >,<,= takes two nodes attribute and value ranges and
Attribute: (Set of all attribute values) leaf node with no child
Value: ERCs or Constants, leaf node with no child
Basically the GPTrees forms complex Rules like
(Person.age > 45) AND (Person.state = Virginia)
GPIndividual covers positive class in 80% cases and negative class in
20%, so the discrimination power of rule and coverage become the
Hope this helps
On Thu, May 23, 2013 at 9:40 AM, Bojan Janisch
<[log in to unmask]> wrote:
> Hey Uday,
> I appreciate your help and I'm sorry to bother you further but I don't get the GPTree working.
> Currently I'm hanging on the problem that a GPTypeSet cannot have a GPTypeSet as it's child,
> maybe because of the growth.
> Could you explain me with an example how you represented a rule as a GPTree?
> Greetings from Germany
> ----- Ursprüngliche Mail -----
> Von: "Uday kamath" <[log in to unmask]>
> An: [log in to unmask]
> Gesendet: Donnerstag, 16. Mai 2013 16:45:03
> Betreff: Re: Postprocessing in ec.gp
> You need to give the parameters needed, the manual specifies them and
> here is the example
> On Thu, May 16, 2013 at 10:10 AM, Bojan Janisch
> <[log in to unmask]> wrote:
>> Hey Uday,
>> I'm trying to get the SizeFairCrossoverPipeline into my BreedingPipeline, but seems that I'm missing an argument or so. I'm getting this error stack:
>> Initializing Generation 0
>> Exception in thread "main" ec.util.ParamClassLoadException:
>> No class name provided.
>> PARAMETER: pop.subpop.0.species.pipe.source.0.source.0
>> ALSO: gp.breed.size-fair.source.0
>> at ec.util.ParameterDatabase.getInstanceForParameter(ParameterDatabase.java:420)
>> at ec.BreedingPipeline.setup(BreedingPipeline.java:190)
>> at ec.gp.breed.SizeFairCrossoverPipeline.setup(SizeFairCrossoverPipeline.java:160)
>> at ec.BreedingPipeline.setup(BreedingPipeline.java:192)
>> at ec.breed.MultiBreedingPipeline.setup(MultiBreedingPipeline.java:66)
>> at ec.Species.setup(Species.java:218)
>> at ec.gp.GPSpecies.setup(GPSpecies.java:45)
>> at ec.Subpopulation.setup(Subpopulation.java:166)
>> at ec.Population.setup(Population.java:142)
>> at ec.simple.SimpleInitializer.setupPopulation(SimpleInitializer.java:55)
>> at ec.simple.SimpleInitializer.initialPopulation(SimpleInitializer.java:46)
>> at ec.simple.SimpleEvolutionState.startFresh(SimpleEvolutionState.java:54)
>> at ec.EvolutionState.run(EvolutionState.java:438)
>> at ec.Evolve.main(Evolve.java:750)
>> while using these parameters for breeding pipeline:
>> op.subpop.0.species.pipe = ec.breed.MultiBreedingPipeline
>> # Koza's decision here was odd...
>> pop.subpop.0.species.pipe.generate-max = false
>> # Subsidiary pipelines:
>> pop.subpop.0.species.pipe.num-sources = 2
>> pop.subpop.0.species.pipe.source.0 = ec.gp.breed.SizeFairCrossoverPipeline
>> pop.subpop.0.species.pipe.source.0.prob = 0.9
>> pop.subpop.0.species.pipe.source.1 = ec.breed.ReproductionPipeline
>> pop.subpop.0.species.pipe.source.1.prob = 0.1
>> Simply changed the CrossoverPipeline to SizeFairCrossoverPipeline in the koza.params which I'm using as parent params-file. Could you please also explain
>> how do you managed to get a variable amount of conditions for your rule-tree? Or does every rule has the same amount of conditions?
>> Currently I'm using 5 different tree constraints where each tree represent a rule with a different amount of children. (I don't know set this to random,
>> maybe if I know more about the evolution process in detail, but I don't know where I could find such an information)
>> Greetings from Germany
>> ----- Ursprüngliche Mail -----
>> Von: "Uday kamath" <[log in to unmask]>
>> An: [log in to unmask]
>> Gesendet: Freitag, 26. April 2013 01:14:26
>> Betreff: Re: AW: Re: Postprocessing in ec.gp
>> Some of the measures i have in my Rules generation are
>> 1. Use Homologous Crossover instead of Standard Subtree Crossover, works very effectively in reducing the size or 'bloat' of trees. ECJ now has the Homologous or SizeFair crossover.
>> 2. As sean mentioned, i have mutation operator that "removes" the subtree in the pipeline. Only thing is if the fitness is not changed or below an epsilon, i accept it. ECJ has bunch of delete or raise mutation for GP trees.
>> 3. In my final interpreter i have a Simplifier for Boolean Expression, which does logical reduction based on karnaugh maps.
>> With these three mechanism i was able to get meaningful and pruned Rules.
>> Hope that helps
>> On Thu, Apr 25, 2013 at 6:58 PM, Sean Luke < [log in to unmask] > wrote:
>> Pruning will be up to you. But you have two ways you can hook into ECJ to do it.
>> 1. You can create a BreedingPipeline which prunes the trees handed it by its children. This is essentially a mutation mechanism during breeding of individuals. You'd probably set this up as the top-level pipeline, with the standard Koza pipeline structure underneath it, so it's the last thing that operates on new individuals.
>> 2. Perhaps a better approach would be simply to prune the individual during fitness evaluation prior to testing it.
>> Begin forwarded message:
>>> From: Bojan Janisch < [log in to unmask] >
>>> Date: April 25, 2013 5:27:32 PM EDT
>>> To: [log in to unmask]
>>> Subject: AW: Re: Postprocessing in ec.gp
>>> Reply-To: ECJ Evolutionary Computation Toolkit < [log in to unmask] >
>>> Hi Uday,
>>> I already have a plan how the represented rule should be evaluated. I'll write an
>>> API to JBoss Drools, which is a rule-based System. The Output of the System will
>>> be compared to a goldstandard by a comparator which I have to write. It returns a
>>> F-Score or something similar to it. The Score goes into the fitness function.
>>> But my problem is the pruning. I need a step where I can check a syntax tree for useless
>>> part-trees. Otherwise the trees have no limits on how big it can grow. I wanted to check
>>> while post-processing the tree, but seems that ECJ does not support it.
>>> How did you solve the chunk-condition problem for rules?
>>> ----- Ursprüngliche Mail -----
>>> Von: Uday kamath < [log in to unmask] >
>>> An: [log in to unmask]
>>> Gesendet: Thu, 25 Apr 2013 17:28:38 +0200 (CEST)
>>> Betreff: Re: Postprocessing in ec.gp
>>> There are no pre written post processing out of the box as it depends on
>>> the problem (function set of GP). I will give a short background which you
>>> may find useful for what you are doing.
>>> For generating automated Rules to discriminate certain patterns, i had my
>>> GP have basic terminals and non-terminals required for the Rule. I would
>>> collect my "exceptional" Rules as a memory pad outside of evolutionary
>>> runs, everytime i see some well performing ones. Finally i get a Rule set
>>> and wrote my Custom "interpreter" that can parse the GP Individuals as
>>> s-expression to evaluate. So ECJ gives you GP and Evolution for free, you
>>> need to write custom functions and interpreter for them.
>>> Hope that helps
>>> On Thu, Apr 25, 2013 at 10:29 AM, Bojan Janisch <
>>> [log in to unmask] > wrote:
>>>> Hello everyone,
>>>> is there a post-processing-step in the Genetic Programming algorithm? I've
>>>> search through the manual,
>>>> but did not find an explanation about this topic.
>>>> Thank you and greetings,