数据挖掘常用工具库介绍

最近一直在做公司用户画像的事情,涉及到很多的挖掘工具的使用与二次开发,包括weka,liblinear,libsvm,sklearn等4个传统的工具库,各有优缺点,主要取决于自己对工具的熟练程度,一旦熟悉和熟练之后,就能各取所长达到目标了。像当下比较盛行的spark mlib等分布式训练和预测的使用也会在以后的博文专题讲解。
      下面主要从适用人群、跨语言支持、API易用性、二次开发难度、性能优劣表现 、生态圈状况6个部分做四个传统挖掘工具库相应比较。
      一、适用人群
            weka的界面操作被很BI分析人员所欣赏,故比较受非程序员开发人员、但有数据分析能力和需求的人欢迎。
            liblinear: 比较强大的适应用大语料多维度的线性分类工具库,对于样本很大、维度很多的分类挖掘需求人员很重要,甚至是唯一的选择。主适应于有程序开发能力的。
            libsvm:其和 liblinear出于同一人台湾大学林智仁(Lin Chih-Jen)教授之手,基于svm算法设计和实现的工具库,两者都是目前最受欢迎的分类工具库。
            sklearn: python数据挖掘中的利器,适应用有python程序开发能力的研发人员。
      
      二、跨语言支持
            weka只有java版本,
            liblinear 均支持多个语言,包括c,java,python,r,perl等。
            libsvm均支持多个语言,包括c,java,python,r,perl等。
            sklearn只有python语言版本,
   
       三、API易用性
             weka由于重点推出的是window界面的版本,对二次开发上的支持比较晚力度也不够高,其api的易使用性是最差的。但其对分类、聚类、特征选择等的算法支持是相当丰富,也是其吸引人的一个亮点。
             liblinear,libsvm的发布包的使用和二次开发上的易用性都比较相同,都比较简洁明了,且参考资料和说明文档很多。
             sklearn继承了python语言自身的简洁、易用性,只要会python语言一些,略看下其它sklearn的官网说明,就可以很容易上手。其对分类、聚类、特征选择等的算法支持是相当丰富,也是其吸引人的一个亮点。
    
        四、 二次开发难度
              weka由于对二次开发的支持时间和力度都略差,故其二次开发难度略高于其它几个。但只要java基础过关,多熟悉一下其对应的几个核心类和核心对象,也是不难二次开发的。而且它也具体融合libsvm的适配器,有用该适配器的同学也不少。
              liblinear,libsvm社区资源、官网资源都比较多,语言支持版本也很多,二次开发比较容易。
              sklearn由于其易用性、参数接口都很多很好,对其二次开发的很少,主要是参数的调整。鉴于其依赖的包和低层库比较多,其二次开发性主要取决于对python语言的熟悉程度。
 
       五、性能优劣表现
             weka属于比较传统的挖掘工具,对大语料和多维度特征的训练表现并不好,当维度高过千维及以上时候,性能下降明显,甚至无法计算,经常性的OOM。分析其源码,主要是由于其没有采用流式计算的方式,还是在内存中直接转化为对应的数组结构,导致对内存严重依赖。故weka适用于小而美的数据。
             liblinear因其为大数据多维度特征而设计,其在几万维的特征下,均能表现出很好的训练计算性能,故其很适合于互联网大数据语料下,多维度环境下的线性分类挖掘。
             libsvm尤其本身算法的复杂性,大语料和多维度一直是其的硬伤,也是比较适合小而美的挖掘环境。
             sklearn支持的算法比较多,但经实用发现,大语料和多维度一直是其的硬伤,也是比较适合小而美的挖掘环境。但相同环境下的性能表现要优于weka。
           
      六、生态圈状况
             weka主要是得益于java生态圈的流行,包括hadoop,spark之类的,均能直接java来写,故其它能很好的适配在java语言为主的挖掘应用中。
            liblinear,libsvm也都有其java版本,均能很好的适应用java开发环境和挖掘应用。
            尤其是hadoop,spark之流的热捧,使具体java版本的weka,liblinear,libsvm更受欢迎。
            sklearn主要适用python生态圈,与hadoop,spark之类的结合只能通过其提供的streaming模式来进行应用集成,在开发上很多时候比之前的三者要大。与hive,spark sql之类的集成也是其一弱点。

综上所述,这4大工具优缺点都比较明显,只有了解其适用情况,及自身的应用场景后,择优而用即可。
后续我们会对以上工具库使用方面的具体介绍,以及spark mlib的使用介结与深入学习探讨。
更多学习讨论,请加入官方QQ技术群320349384,
                                 官方天亮论坛: http://bbs.yuqing36524.com:8080/
                                 天亮教育视频链接: http://pan.baidu.com/s/1pJJrcqJ

你可能感兴趣的:(数据挖掘,大数据,分布式,预测)