一、 引言

在机器学习相关领域研究中,不可避免的要涉及各种各样的算法,包括数据预处理、算法模型生成、算法模型集成、算法评估等。对于研究人员而言,每一个算法都亲力亲为实现几乎是不可能的,而且会造成非常巨大的时间浪费。

此外,在算法实验中,数据本身占据着非常重要的地位,在公认的数据集上取得较好的实验效果,是研究成果得到承认的前提之一。

基于以上的两点原因,本文对目前可以使用的主要机器学习工具包以及数据集进行整理,作为之后研究的基础。

必须说明的是,本文整理的内容必然有失完整,后续期待着进一步的完善。


二、 必备的经典工具包 2.1 MATLAB

毫无疑问,MATLAB是机器学习算法研究中最为核心的工具,其中包含的大量函数、算法可以为研究工作提供极大的便利。

MATLAB的语法非常简洁,最大程度上降低了传统通用程序设计语言因为严谨性导致的额外工作量。

MATLAB可以在m文件的层面以及jar文件(JAVA语言)的层面上与其他机器学习相关工具包非常简便的集成。不仅很多机器学习工具包基于MATLAB开发,很多基于JAVA开发的工具包也可以用于MATLAB(例如Weka)。

MATLAB的另一个良好特性是跨平台,最新的R2012版本在Linux上的安装已经顺利完成(Ubuntu 12.04 LTS),这样可以使用基于Linux平台的MATLAB补充工具包。

2.2 Weka

Weka[1]是新西兰怀卡托大学开发的一个基于Java的开源机器学习和数据挖掘平台。Weka提供了大量的算法实现,不仅可以在其提供的GUI上进行各种实验,也可以利用JAVA接口在MATLAB等工具中直接调用Weka的功能。因为Weka是开源软件,所以直接修改其JAVA实现以进行算法的微调也是可能的。


三、 独立的算法平台 3.1 KEEL

KEEL最初被设计为一种专注于进化算法的算法平台,但是现在的KEEL已经涵盖了机器学习了领域的各种算法,其算法的完整程度与Weka不相上下。

KEEL也是JAVA实现的开源软件。

3.2 AlphaMiner

AlphaMiner是香港大学开发的一种开源数据挖掘平台,无论是GUI界面和定位都比较类似Weka。

3.3 Elefant

Elefant是一种支持多语言和多平台的机器学习开发包,它的GUI界面具有自己的特色。

目前对于Elefant的了解并不多,其核心可能是用Python实现的。


四、 基于MATLAB的补充工具包 4.1 PRTools和dd_tools

PRTools[2]和dd_tools[3]是荷兰代夫特技术大学R.P.W Duin大牛领衔开发的基于MATLAB的模式识别和单类分类器工具包。其使用较为简洁,数据可视化的部分比较有特点,针对二维数据可以方便的绘制分类器的决策边界等。

4.2 Spider

Spider是基于MATLAB的非常著名的机器学习工具包,提供了较多的功能并且可以与Weka协同工作。唯一比较明显的问题是Spider已经停止更新多年。


五、 其他工具包 5.1 R

R是与MATLAB其名的科学计算平台,由于MATLAB过于昂贵(似乎和我们无关……),R的相关补充包也非常丰富。尤其在统计学领域,R的被认可程度是最高的。

5.2 LibSVM

LibSVM是支持向量机领域最重要的工具包,由台湾大学林智仁教授带队开发。几乎所有的支持向量机相关研究(包括单类分类SVM等相关研究)都会使用LibSVM。

5.3 Shogun

这个可以支持包括C++、MATLAB、R、Python等等接口的开源工具包可以说是机器学习领域的后起之秀,尤其是在参与了google的Summer of Code计划之后,其发展得到了较大的推动。

Shogun的数据可视化功能具有自己的特色,而且可以有效支持Linux。但是由于是社区型开源软件,所以可能缺乏足够的测试。

此外,这个数据集既不是中国人开发的,也不是日本人开发的。机器学习相关资源_java

5.4 Orange

Orange是一个基于Python的开源数据分析平台。提供了包括GUI和库在内的完整支持,其核心是Python脚本。

5.5 JavaML

JavaML是一个纯java的机器学习库。

5.6 mlpack

JavaML是一个纯c++的机器学习库。


六、 数据集来源 6.1 UCI数据集

毫无疑问,UCI数据集的影响力是最大的,在大多数的机器学习研究论文中,实际上只用到UCI数据。

6.2 StatLib

虽然知名度并不高,但是StatLib作为卡耐基梅隆大学统计学社区,也维护了数量可观的来自实际问题的数据集。

6.3 数据堂

总感觉后台很硬的网站,可以得到更多接近中国实际情况的数据。

6.4 KEEL

参见3.1节,KEEL整理了很多现有的数据集,虽然并不是其本身提供,但是KEEL对数据的归类整理可以为我们节省大量的时间。


七、 索引

MLOSS维护了数百个开源机器学习项目的更新等信息,可以从MLOSS上了解当前各个开源机器学习项目的现状,或寻找适合具体需求的软件。