ASSearch 搜索算法类
ASEvaluation 特征结果集评价算法类。该类有接口接受样本输入
AttributeEvaluation 单个特征的评价类
AttributeSetEvaluation 特征集的评价类
AttributeSelection 特征选择类, 接受ASSearch与ASEvaluation作为输入
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