I wonder if you can use a type of NEAT network with unsupervised learning, making use of the Encog framework. I want to take advantage of their self organization, since my system does not have seasonality characteristics. As far as I could discover, only saw examples of networks supervised using NEAT.
Asked
Active
Viewed 868 times
3
-
I thought that solution will be `NeuralDataSet validationSet = new BasicNeuralDataSet(input,null);` but it isn't. It throw exception _Attempt to invoke interface method 'double[] org.encog.ml.data.MLData.getData()' on a null object reference_ – murt Jan 13 '16 at 16:24
1 Answers
2
Disclaimer: My knowledge of both ML and Encog is low.
I believe that the "boxes" example is in fact a demonstration of unsupervised learning using Encog's NEAT capability.
To do unsupervised learning, implement the CalculateScore
interface and pass that score evaluator to NEATUtil.constructNEATTrainer(pop, score)
when you create the network.
In the example, BoxesScore
implements that interface and calls out to TrialEvaluation
to calculate fitness:
public double calculateFitness() {
final double threshold = BoxesScore.EDGE_LEN * BoxesScore.SQR_LEN;
double rmsd = Math.sqrt(this.accDistance / 75.0);
double fitness;
if(rmsd > threshold) {
fitness = 0.0;
} else {
fitness = (((threshold-rmsd) * 100.0) / threshold) + (this.accRange / 7.5);
}
return fitness
}
You'll see from the rest of the code that the result isn't some hard coded list of test cases and expected results.
Thus as long as you can define what "fitness" means for your solution, you can do unsupervised learning with Encog's NEAT implementation.

Logical Fallacy
- 3,017
- 5
- 25
- 41