zoukankan      html  css  js  c++  java
  • [转]特征选择-weka搜索函数

    P:ranker更像filter,greedy贪婪算法和bestfirst是wrapped


    由于笔者水平限制,本文可能晦涩难懂,特此向阅读本编文章的朋友们表示歉意! 
    weka3.8.1中关于特征选择的搜索函数有3个类,分别是Ranker,GreedyStepwise,BestFirst,这3个类的作用是配合评估函数,将训练数据集中的特征进行筛选、排序。以下是笔者对于这3个类的个人理解,如有错误之处望发现的朋友予以批评指正。 

    总的来说Ranker速度最快,如果不考虑特征间的关系,可以考虑使用它,比如朴素贝叶斯算法;GreedyStepwise速度次之,如果资源有限,又要考虑特征间的关系,比如逻辑回归、决策树,建议用GreedyStepwise;如果资源较多,又要考虑特征间的关系,建议使用BestFirst,因为它的效果会比GreedyStepwise更好。 

    Ranker 
    获得一个特征排序列表,按照每个特征的作用进行排序; 
    优点 
    速度快,每个特征都独立获得评估; 
    缺点 
    只能评估单个的特征,不能评估特征组合 

    GreedyStepwise 
    获得一个推荐的特征集合,该特征集合包括初始指定的特征集合,如果不指定即为空; 
    在初始特征集合的基础上,按顺序遍历每一个特征,评估每个一个特征对初始特征集合的作用,如果有积极作用,则将该特征加入初始特征集合,如果没有积极作用,则将该特征忽略; 
    优点: 
    每个特征都得到评估,基本上可以找出一个相对有价值的特征集合,计算量不是很大,计算时间不会太长。
    疑点1: 
    特征集合评估的基础集合不断变化,对于每一个待评估的特征不公平;比如第1个特征有价值1.0,第二个特征价值1.1,均入选,到了第n个特征,由于初始数据集中入选了大量有价值的特征,n的特征价值是2.0,也许可能被落选。即前面的特征选择比较宽松,遍历到后期,特征选择比较苛刻。 
    疑点2: 
    按顺序筛选,可能存在的问题是,特定组合效果非常好,未必会被发现,比如1、2、3组合的效果是1.0,但123加上4的效果并不好,123加上5的效果也不好, 
    4加上5的效果却好于123的组合,此时4、5的组合就无法被发现。(疑点待验证) 

    BestFirst 
    1、初始化特征集合r,作为下一步计算的基础;初始集合可以在函数中指定;否则初始集合为空,如果是反向获取(做减法),初始集合为全部特征; 
    2、克隆特征集合r,得到新的集合c,遍历所有集合,找出和克隆集合c配合最好的n个特征,将这列特征分别加入到现有的初始特征集合中,存放在列表l中(n可设置) 
    3、从列表l中取得第一个对象,即当前效果最好的特征集合,作为新的克隆特征集合c,比较集合c和r,如果c效果更有,将c赋值给r,同时在列表l中删除第一个对象,重复步骤2 
    4、循环重复步骤3,直到连续循环n次,特征集合r均未发生变化,则退出,并返回特征集合r。 
    优点: 
    各个特征独立参与,保证每个特征在公平环境下竞争,可以解决GreedyStepwise的疑点1 
    组合顺序不是特定的按特征排序,可以解决GreedyStepwise的疑点2 
    如果参数设置足够大,几乎可以遍历所有种可能,在优中选优的指导思想下,在计算资源足够多时,很可能可以找出比较优秀靠谱的特征集合。 
    疑点: 
    计算量比较大,对计算机资源消耗比较大。如果参数设置的比较小,虽然计算量可控,但依然有很大的可能性是没有找出最佳特征集合。 

  • 相关阅读:
    算法导论13:双向循环链表 2016.1.13
    ansible
    mariadb集群配置(主从和多主)
    连接查询,视图,事物,索引,外键(第四章)
    MariaDB第三章(select)
    mariadb第二章-增删改
    mariadb(第一章)
    keepalived概述
    git操作
    django后台admin管理布局
  • 原文地址:https://www.cnblogs.com/rinroll/p/11985841.html
Copyright © 2011-2022 走看看