代码改变世界

候选消除算法

2013-12-02 16:48  血糯米Otomii  阅读(3758)  评论(0编辑  收藏  举报

样本集:

 

把S集合初始化为H中极大特殊假设:

把G集合初始化为H中极大一般假设:

 

首先加载第一条和第二条样本:

这个过程是特殊向一般的转变,这个过程非常地类似FIND-S算法

接着我们处理第三条样本:

让我们回到数据

我们会发现,Sky,AirTemp和Foreast和以前的数据不一致,我们可以怀疑是这三个数据导致最后结果的变化。

所以,我们就针对这3个数据进行一次特殊化:

接着,我们输入第四条样本:

 

 

 

在处理第四条样本的时候,我们先对于S集合进行一般化:

 

 

然后,为了让G集合覆盖S集合,我们需要剔除,过程为

 

在处理完了这四个样本后,我们就可以获取所有的假设:

 

当前为6个假设,当我们可以获取到更多的训练集的时候,我们可以划出更小的设计空间。

当我使用这6个假设对测试集进行测试的时候,我们可以使用这6个假设同时对测试样本进行检测,每个假设都有自己的权重,如果最后的结果超过80%,那么就测试通过。

本算法弊端:1.对噪点兼容性非常差 2.当我们Sky属性有10+个的时候,往往这个属性必然被一般化,所以我们需要对数据进行预处理

参考书籍:机器学习