weka: best first search

ASSearch                 搜索算法类

ASEvaluation              特征结果集评价算法类。该类有接口接受样本输入

AttributeEvaluation        单个特征的评价类

AttributeSetEvaluation    特征集的评价类

AttributeSelection          特征选择类, 接受ASSearchASEvaluation作为输入

AttributeTransformer     数据转换类

 

Best First Search

m_bestMerit 记录评价最高的得分

m_cacheSize 已评价了多少组不同的特征; lookup记录已评价属性集及其评价分的集合

m_searchDirection 搜索方向:正向,后向,双向

m_starting 初始结果集

m_totalEvals 已评价次数>= m_cacheSize

 

1)    初始化

如果已给出初始结果集,则此轮结果集就是初始结果集;若未给出初始结果集且为双向搜索,则此轮结果集就是所有的属性集。

计算此轮结果集的评价得分, 将该结果集与得分放入已查数据中; 将该结果集放入待搜索队列中

 

 

2)    迭代搜索

迭代退出条件是, 如果连续多次扩展得到的结果集都没有比当前最好的更优,则退出,Stale < m_max_stale  或者待扩展队列已为空。

2.0)取得待扩展队列头

2.1)根据搜索方向扩展该属性集得到新的属性集:顺序扫描每个属性,如果未处理过该属性, 则将该属性增加到待扩展集中。(如果是backward搜索, 则是将该属性从待扩展集中移除;后面类同)

2.2)如果该新的属性集未曾处理过, 则计算其评价分、将其增加到lookup中; 将该属性集加入到待扩展集中。 判断此次扩展是否比当前最好的更优、更优则记录相关信息。

2.3)恢复到迭代2.0)状态时的属性集,迭代2.1)中扫描下一个未曾处理的属性

Notes:如果是双向搜索时,则步骤2中,都是在步骤2.0)的基础之上先正向对所有属性做测试;然后逆向对所有属性做测试。就是把双向分为了先正向后逆向两个完全分开的过程。

 

3)步骤2退出时, 得到了最佳属性集合

 

code

展开阅读全文

没有更多推荐了,返回首页