动态集成选择方法的实现

DESlib的Python项目详细描述


deslib

deslib是一个易于使用的集成学习库,专注于实现动态分类器和集成选择的最新技术。 该库基于scikit learn,使用相同的方法签名: 拟合 预测 预测概率 得分 。 所有的动态选择技术都是根据 [1] 中的定义实现的。

动态选择:

动态选择(dynamic selection,ds)是指选择基本分类器的技术。 根据每个待分类的新样本,在测试时进行动态分类。只有最有能力的分类器或最有能力的分类器的集合被选择来预测 特定测试样本的标签。这些技术的基本原理是 池是对所有未知样本进行分类的专家,但是每个基本分类器都是 功能空间的不同局部区域。

由于越来越多的实证研究,ds是最有前途的mcs方法之一(多分类器系统)。 报告优于静态组合方法的性能。这样的技巧 取得了较好的分类性能,特别是在处理小型和不平衡数据时T.S/P>

安装:

可以使用pip:

稳定版本:

pip install deslib

最新版本(正在开发中):

pip install git+https://github.com/scikit-learn-contrib/DESlib

依赖关系:

经过测试,deslib可以与python 3.5、3.6和3.7一起使用。依赖性要求如下:

  • scipy(>;=1.2.0)
  • 纽比(>;=1.10.4)
  • 科学套件学习(>;=0.19.0)

这些依赖项是使用上面的pip命令自动安装的。

示例:

在这里,我们展示了一个使用knora-e方法的示例,该方法使用随机林作为分类器池:

fromdeslib.des.knora_eimportKNORAE# Train a pool of 10 classifierspool_classifiers=RandomForestClassifier(n_estimators=10)pool_classifiers.fit(X_train,y_train)# Initialize the DES modelknorae=KNORAE(pool_classifiers)# Preprocess the Dynamic Selection dataset (DSEL)knorae.fit(X_dsel,y_dsel)# Predict new examples:knorae.predict(X_test)

库接受任何分类器列表(与scikit learn兼容)作为输入,包括包含不同分类器模型(异构集成)的列表。 有关如何使用API的更多示例,请参见 文档 和examples目录。

组织:

库分为四个模块:

  1. deslib.des:des技术的实现(动态集成选择)。
  2. dcs:dcs技术的实现(动态分类器选择)。
  3. deslib.static:基线集成方法的实现。
  4. deslib.util:分类器集成的聚合函数和多样性度量的集合。
    < DL> 目前可用的DES技术有: >OL>
  • meta-des [7] [8] [15]
  • k-最近的-oracle-消除(knora-e) [3]
  • K-最近的-Oracle-Union(knora-u) [3]
  • 动态集成选择性能
  • k-最近输出配置文件(knop) [9]
  • 随机参考分类器
  • des kullback-leibler散度(des-kl) [12]
  • des指数 [21]
  • des对数
  • DES最小差值
  • DES群集
  • des-knn [16]
  • DES多类不平衡(DES-MI) [24]
  • < DL>
    目前可用的dcs技术有:
    >OL>
  • 修改后的分类器等级(rank) [19]
  • 整体局部精度
  • 本地类精度(LCA) [4]
  • 改进的本地精度(mla) [23]
  • 多分类器行为(MCB) [5]
  • 先验选择(a priori) [6]
  • 一个后验选择(后验) [6]
  • < DL>
    基线方法:
    >OL>
  • 甲骨文
  • 最佳单曲
  • 静态选择
  • 堆叠式分类器

每个des技术的变体也由库提供(例如,meta-des框架的不同版本)。

< DL>
以下技术也适用于所有方法:
> UL>
  • 对于des技术,所选分类器的组合可以做为动态选择(多数投票)、动态加权(加权多数投票)或混合(选择+加权)。
  • 对于所有ds技术,都可以使用动态frieneum修剪(dfp) [13]
  • 对于所有ds技术,实例硬度(ih)可用于用knn对简单样品进行分类,而使用ds技术对硬样品进行分类。有关IH和动态选择的更多详细信息,请参见 [14]
  • 作为一项可选要求,faiss中的快速knn实现可以用于加速计算能力区域。

    引文

    如果在科学论文中使用deslib,请考虑引用以下论文:

    Rafael M.O.Cruz、Luiz G.Hafemann、Robert Sabourin和George D.C.Cavalcanti deslib:Python中的动态集成选择库。 arxiv预印本arxiv:1802.04967(2018)。

    @article{cruz_deslib:2018,
        title = {{DESlib}: {A} {Dynamic} ensemble selection library in {Python}},
        journal = {arXiv preprint arXiv:1802.04967},
        author = {Cruz, Rafael M. O. and Hafemann, Luiz G. and Sabourin, Robert and Cavalcanti, George D. C.},
        year = {2018}
    }
    

    参考文献:

    < COL/> < COL/> <正文> <表>
    [1] :r.m.o.cruz、r.sabourin和g.d.cavalcanti,《动态分类器选择:最新进展和展望》,信息融合,第41卷,第195-2162018页。
    < COL/> < COL/> <正文> <表>
    [2] 1 2 :a.s.britto,r.sabourin,l.e.s.de oliveira,分类器的动态选择-综合评论,模式识别47(11)(2014)3665–3680。
    < COL/> < COL/> <正文> <表>
    [3] 1 2 :a.h.r.ko,r.sabourin,U.S.Britto,Jr.,从动态分类器选择到动态集成选择,模式识别41(2008)1735–1748。
    < COL/> < COL/> <正文> <表>
    [4] 1 2 :k.伍兹,w.p.凯格迈耶,Jr.,k.鲍耶,使用本地精度估计的多分类器组合,模式分析机器智能的ieee事务19(1997)405–410。
    < COL/> < COL/> <正文> <表>
    [5] :g.giacinto,f.roli,基于多分类器行为的动态分类器选择,模式识别34(2001)1879–1881。
    < COL/> < COL/> <正文> < /Tr> <表>
    [6] 1 2 :l.didaci,g.giacinto,f.roli,g.l.marcialis,基于局部精度估计的动态分类器选择性能研究,模式识别38(11)(2005)2188–2191、
    < COL/> < COL/> <正文> [7] <表>
    :r.m.o.cruz,r.sabourin,g.d.c.cavalcanti,t.i.ren,meta-des:使用元学习的动态集成选择框架,模式识别48(5)(2015)1925–1935。
    < COL/> < COL/> <正文> <表>
    [8] :Cruz,R.M.,Sabourin,R.和Cavalcanti,G.D.,2015年7月。大都会。h:一种使用元学习和动态加权方法的动态集成选择技术。神经网络(ijcnn),2015年国际联合会议(第1-8页)
    < COL/> < COL/> <正文> <表>
    [9] :P.R.Cavalin,R.Sabourin,C.Y.Suen,多分类器系统的动态选择方法,神经计算与应用22(3-4)(2013)673–688。
    < COL/> < COL/> <正文> <表>
    [10] :t.Woloszynski,m.Kurzynski,《动态集成选择分类器能力的概率模型》,模式识别44(2011)2656–2668。
    < COL/> < COL/> <正文> <表>
    [11] :t.Woloszynski,m.Kurzynski,基于随机参考分类器的动态集成选择能力度量,in:国际模式识别会议,2010年,第4194-4197页。
    < COL/> < COL/> <正文> < /Tr> <表>
    [12] 1 2 :t.woloszynski,m.kurzynski,p.podsiadlo,g.w.stachowiak,《基于随机分类的动态集成选择能力度量》,信息融合13(3)(2012)207–213
    < COL/> < COL/> <正文> <表>
    [13] :Oliveira,D.V.R.,Cavalcanti,G.D.C.和Sabourin,R.,动态集成选择的基本分类器的在线剪枝,模式识别,第72卷,2017年12月,第44-58页。
    < COL/> < COL/> <正文> < /Tr> <表>
    [14] :cruz rm、zakane hh、sabourin r、cavalcanti gd。动态集成选择vs k-nn:为什么以及何时动态选择获得更高的分类性能?
    < COL/> < COL/> <正文> <表>
    [15] :r.m.o.cruz,r.sabourin,g.d.c.cavalcanti,meta-des.oracle:动态集成选择的元学习和特征选择,信息融合38(2017)84–103.nov 30;38:84-103。
    < COL/> < COL/> <正文> <表>
    [16] 1 2 :r.g.f.soares,a.santana,a.m.p.canuto,m.c.p.de souto,使用准确性和多样性来选择分类器来构建集成,nEural Networks(2006)1310–1316。
    < COL/> < COL/> <正文> <表>
    [17] :l.i.kuncheva,《组合模式分类器:方法和算法》,威利国际科学出版社,2004年。
    < COL/> < COL/> <正文> <表>
    [18] :Shipp、Catherine A和Ludmila I.Kuncheva。"组合方法与组合分类器多样性度量之间的关系。"信息融合3.2(2002):135-148。
    < COL/> < COL/> <正文> <表>
    [19] :m.sabourin,a.mitiche,d.thomas,g.nagy,手写数字识别的分类器组合,国际文档分析与识别会议(1993)163–166。
    < COL/> < COL/> <正文> <表>
    [20] :l.i.kuncheva,六种分类器融合策略的理论研究,模式分析和机器智能的ieee事务24(2)(2002)281-286。
    < COL/> < COL/> <正文> <表>
    [21] 1 2 :b.antosik,m.kurzynski,《分类器能力的新度量方法——启发式和在多分类器系统设计中的应用》,in:计算机识别系统4,2011,pp.197–206。
    < COL/> < COL/> <正文> <表>
    [22] :史密斯、迈克尔·R、托尼·马丁内斯,还有克里斯托夫·吉拉德·卡里。"数据复杂性的实例级分析",机器学习95.2(2014),第225-256页。
    < COL/> < COL/> <正文> <表>
    [23] :p.c.smits,基于动态分类器选择的监督遥感图像分类的多分类器系统,ieee地球科学与遥感事务40(4)(2002)801–813。
    < COL/> < COL/> <正文> <表>
    [24] :garcía,s.,zhang,z.l.,altalhi,a.,alshomrani,s.和herrera,f.,"多类不平衡数据集的动态集成选择"。信息科学445(2018):22-37。
    < COL/> < COL/> <正文> <表>
    [25] :wolpert,david h."叠加泛化"。神经网络5,第2期(1992):241-259。

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    java Play Framework 2.1中的简单搜索?   java:Springbeans的真正工作原理   java不能从字符串中提取数字   不同管道中的java共享ExecutionHandler   在Java中,如何为扩展comparator的类实现多个comparator方法?   通用混沌Java   java问题:从自定义类获取要添加到驱动程序类的形状   java如何利用HikariCP和Hibernate?   eclipse如何执行Java应用程序?   用户界面Java Swing:如何将JLabel的文本绑定到JTable选定行中的列?   java替换JPanel元素而不添加到面板的末尾?   java Sets根据action命令在按钮组中选择了特定的jradiobutton   在java中如何将从控制台添加的字符串中的元素添加到列表中   处理未在浏览器上运行的Java签名小程序   java如何在我的安卓应用程序中单击任意按钮时禁用音频音调?   编码如何在Java中将十六进制转换为utf8编码的字符串   java JSF Spring安全集成问题   java如何更正Oracle for Windows中的字符?   java Spark结构化流媒体:当前批次落后   java Hibernate根据最匹配的条件排序结果