我想知道你是否可以使用一种无监督学习的NEAT网络,利用Encog框架。我想利用他们的自我组织,因为我的系统没有季节性特征。据我所知,只看到了使用NEAT监督的网络示例。
答案 0 :(得分:2)
免责声明:我对ML和Encog的了解都很少。
我认为the "boxes" example实际上是使用Encog的NEAT功能进行无监督学习的演示。
要进行无监督学习,请在创建网络时实施CalculateScore
界面并将该得分评估者传递给NEATUtil.constructNEATTrainer(pop, score)
。
在示例中,BoxesScore
实现了该接口并调用TrialEvaluation
来计算适应度:
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
}
您将从其余代码中看到结果不是一些硬编码的测试用例和预期结果列表。
因此,只要您可以定义“适应性”对您的解决方案意味着什么,您就可以使用Encog的NEAT实现进行无监督学习。