将R与Matlab进行数据挖掘比较

35

最近我开始学习R语言而不是直接开始使用Matlab编码,主要是因为R是开源的。目前我在数据挖掘和机器学习领域中工作。我发现许多机器学习算法都已在R中实现,我仍在探索R中不同的软件包。

我有一个快速问题:你如何比较R和Matlab在数据挖掘应用中的流行度、优缺点以及在行业和学术界中的接受程度等方面?你会选择哪一个,为什么?

我研究了Matlab与R在各种指标上的比较,但我特别想知道它们在数据挖掘和机器学习中的适用性。由于这两种语言对我来说都很新,所以我想知道R是否是一个好的选择。

我感激任何形式的建议。


请参见:https://dev59.com/bHA75IYBdhLWcg3wv77A - Matti Pastell
8个回答

61

过去三年左右,我每天都使用R语言,其中大部分时间用于机器学习/数据挖掘问题。

在大学期间,我是Matlab的独占用户;那时我认为它是一套非常好的工具/平台。我相信今天它仍然如此。

神经网络工具箱、优化工具箱、统计工具箱和曲线拟合工具箱对于使用MATLAB进行ML/Data Mining工作的人来说都是非常理想(如果不是必需的),但它们都是与基本的MATLAB环境分离的--换句话说,它们必须单独购买。

我关于在R中学习ML/Data Mining的前五名列表

这涉及到几个方面:首先,一组以 arules 开头的 R 包(可从 CRAN 获取),您可以在项目主页上找到完整列表(例如 arules、aruluesViz 等)。其次,所有这些包都基于一种数据挖掘技术,称为 Market-Basked AnalysisAssociation Rules。在许多方面,这类算法是数据挖掘的本质——穷尽地遍历大型交易数据库,并在其中的字段(变量或特征)之间查找高于平均水平的关联或相关性。在实践中,您将它们连接到数据源并让它们运行过夜。上述套装中的中心 R 包称为 arules;在 CRAN 包页面上,您将找到有关 arules 包和一般 Association Rules 技术的一些优秀次要来源(R 词汇表中的 vignettes 的链接)。

这本书的最新版本可以以数字形式免费获取。同样在书的网站上(链接如上),ESL使用的所有数据集都可以免费下载。(顺便说一句,我有免费的数字版本;我也从BN.com购买了精装版;数字版本中的所有彩色图都复制到了精装版中)。ESL包含对大多数主要ML模板中至少一个示例的全面介绍--例如,神经网络、SVM、KNN;无监督技术(LDA、PCA、MDS、SOM、聚类)、许多回归的变化、CART、贝叶斯技术,以及模型聚合技术(Boosting、Bagging)和模型调整(正则化)。最后,从CRAN获取随书附带的R软件包(这将节省下载数据集的麻烦)。

CRAN任务视图:机器学习
R可用的3,500多个软件包按领域分为约30个软件包系列或“Task Views”。机器学习是其中之一。机器学习任务视图包含大约50个软件包。其中一些软件包是核心发行版的一部分,包括e1071(一个庞大的ML软件包,包括相当多的通常的ML类别的工作代码)。

Revolution Analytics Blog

特别关注标记为预测分析的帖子

仔细研究这些代码本身就是R中ML的出色介绍。

最后还有一个我认为很好的资源,但没有进入前5:

发布在博客A Beautiful WWW


毫无疑问,对于大多数人来说,MATLAB并不便宜。在我的工作中,我尽量避免使用MathWorks的附加工具箱。正如你所说,它们会带来额外的成本,同时也会限制可移植性。MATLAB的一大优点是其基础产品包含的功能:例如,不需要特殊的库来加载图像,因此我的代码可以在任何人的MATLAB上运行。 - Predictor
哦,我另外想说的是,有很多统计和数据挖掘软件可以免费获取,来自庞大的在线MATLAB社区。例如,请参见MATLAB Central的文件交换。大学也是MATLAB代码的另一个好来源。 - Predictor
谢谢你的回答,我非常感激。我会看一下你提到的那本书。 - iinception
3
此外,撰写该书的人不仅在R中实现了他们的方法,而且自己也是贡献者! - Jay
@Predictor,R 优秀的地方在于无论你安装了多少扩展包,它都可以在任何机器上运行。 - Paul Hiemstra
MATLAB也可以在任何机器上运行,我相信所有的工具箱(来自MATLAB供应商)都支持所有平台。无论基础软件如何,任何附加组件的可移植性限制在于,如果您想要传递您的代码,任何程序员都需要安装该附加组件,因为您的代码将依赖于该附加组件。 - Predictor

9

2
无论是Matlab还是R,如果你需要进行矩阵运算,它们都是很好的选择。因为它们可以使用高度优化的低级代码(如BLAS库等)来进行操作。
然而,数据挖掘不仅仅是处理矩阵。很多人完全忽略了数据挖掘中的整个数据组织方面(相对于普通的机器学习)。一旦你涉及到数据组织,R和Matlab就会变得非常麻烦。尝试在R或Matlab中实现一个R *树,以将O(n ^ 2)算法降至O(n log n)运行时间。首先,这完全违反了R和Matlab的设计原则(尽可能使用批量数学运算),其次,这将导致性能下降。例如,解释型的R代码似乎以C代码速度的50%左右运行(尝试使用R内置k-means与flexclus k-means进行比较);而BLAS库的优化水平已经达到了疯狂的程度,利用缓存大小,数据对齐,高级CPU功能等等。如果你想尝试一下,可以在R或Matlab中手动实现矩阵乘法,并将其与本地方法进行基准测试。
别误会了。有很多东西,R和Matlab只是“优雅”和“极好的原型设计工具”。你可以用只有10行代码就解决很多问题,并且得到不错的性能。手动编写相同的代码可能需要数百行,而且可能会慢10倍。但是,有时候你可以通过增加一些复杂度来进行优化,在大数据集上做到比R和Matlab的优化矩阵运算更好。
如果你想扩展到“Hadoop规模”,则在长期内你必须考虑数据布局和组织,除非你只需要对数据进行线性扫描。但是,这种情况下,你也可以选择采样!

1
我们不应该忘记这两个软件的起源来源:科学计算和信号处理导致了Matlab,而统计学则导致了R。
我在大学里经常使用Matlab,因为我们在Unix上安装了一个并向所有学生开放。然而,与免费的R相比,Matlab的价格太高了。如果你的主要关注点不是矩阵计算和信号处理,那么R应该能满足你的需求。

1
昨天我发现了两本关于数据挖掘的新书。这些书系列名为“数据挖掘”,通过深入描述新型挖掘算法和许多有用的应用来满足需求。除了深入理解每个部分外,这两本书还提供了有用的提示和策略来解决以下章节中的问题。数据挖掘技术的进步和大众的普及建立了对该主题全面文本的需求。这些书是:“数据挖掘中的新基础技术”(链接1)和“以知识为导向的数据挖掘应用”(链接2)。这些都是开放获取的书籍,所以您可以免费下载或像我一样在在线阅读平台上阅读。干杯!

1

我认为这也取决于你所在的研究领域。我知道沿海研究中有很多人使用Matlab。在这个群体中使用R会让你的生活更加困难。如果同事用Matlab解决了一个问题,你就不能使用它,因为他是用Matlab修复的。


0
当你处理大量数据时,我也会关注每个工具的能力。我知道R在这方面可能会有问题,如果你习惯于迭代式数据挖掘过程,它可能会很受限制。例如,同时查看多个模型。我不知道MATLAB是否有数据限制。

-1

我承认在数据挖掘问题上更喜欢使用MATLAB,并在此提供一些我的理由:

为什么选择MATLAB进行数据挖掘?

我承认只对R/S-Plus有一定的了解,但我会做出以下观察:

  1. R明显比MATLAB更注重统计学。我更喜欢在MATLAB中构建自己的工具,这样我就可以确切地知道它们在做什么,并且可以自定义它们,但这在MATLAB中更像是必需品,而在R中则不是。

  2. 新的统计技术代码(空间统计、鲁棒统计等)通常会在S-Plus中早期出现(我认为这至少也适用于R)。

  3. 几年前,我发现商业版的R,即S-Plus,在处理数据方面的能力极其有限。我无法确定R/S-Plus的现状如何,但您可能需要检查一下您的数据是否适合这些工具。


3
S-Plus不是“R的商业版本”。 - Marek
7
通常新的统计技术先是用R编写,然后再移植到S-Plus。 - hadley
2
R有许多处理数据和不同数据结构的方法。主要方法在内存中,但也可以读取行/块、直接使用数据库接口、各种不同的文件类型和HPC结构来处理“大”数据。 - Jay
1
这在很大程度上取决于你使用的“列”类型、数据处理方式、硬件等等。给出一个非常粗略的答案,我处理过具有10到100个变量的100万至1000万个案例时没有遇到问题...但我不确定这个答案有多有意义。R是免费的,可以试试。如果熟悉matlab,应该没问题。甚至有一个matlab仿真包,可以模拟一些常用的语法。 - Jay
我曾经处理过35GB的数据集,试图从中估计协方差矩阵。最终我采用分块读取数据的方式。因此,我认为能够处理大型数据集也是正确编程的一个方面。至于S-plus,他们正在采用R包装系统。我认为这已经足以说明谁在统计技术方面处于领先地位了 :)。 - Paul Hiemstra
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接