比较 R 与 Matlab 的数据挖掘

Posted

技术标签:

【中文标题】比较 R 与 Matlab 的数据挖掘【英文标题】:Comparing R to Matlab for Data Mining 【发布时间】:2011-06-16 06:26:22 【问题描述】:

我最近开始学习 R,而不是开始在 Matlab 中编码,主要是因为它是开源的。我目前在数据挖掘和机器学习领域工作。我发现很多机器学习算法是用 R 实现的,我还在探索用 R 实现的不同包。

我有一个简单的问题:您如何应用程序、它的受欢迎程度、优缺点、行业和学术接受度等?你会选择哪一个?为什么?

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

感谢任何形式的建议。

【问题讨论】:

见:***.com/questions/3125527/… 【参考方案1】:

如果您要进行大量矩阵运算,Matlab 和 R 都很好。因为他们可以为此使用高度优化的低级代码(BLAS 库等)。

但是,数据挖掘不仅仅是处理矩阵。很多人完全忽略了数据挖掘的整个数据组织方面(而不是简单的机器学习)。

一旦你开始进行数据组织,R 和 Matlab 就会很痛苦。尝试在 R 或 matlab 中实现 R*-tree 以将 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 大小”,您也必须考虑数据布局和组织,除非您只需要对数据进行线性扫描.但是,您也可以只是采样!

【讨论】:

【参考方案2】:

在过去三年左右的时间里,我每天都在使用 R,并且每天使用的大部分时间都花在了机器学习/数据挖掘问题上。

我在大学期间是 Matlab 的独家用户;当时我以为是 一套优秀的工具/平台。我相信今天也是。

神经网络工具箱、优化工具箱、统计工具箱、 和曲线拟合工具箱都是非常需要的(如果不是必需的) 对于使用 MATLAB 进行 ML/数据挖掘工作的人来说,它们都独立 基本的 MATLAB 环境——换句话说,它们必须单独购买。

我的在 R 中学习 ML/数据挖掘的前 5 名列表

Mining Association Rules in R

这指的是几件事:首先,一组以 arules 开头的 R 包(可从 CRAN 获得);您可以在Project Homepage 上找到完整列表(arules、arulesViz 等)。其次,所有这些软件包都基于称为市场基础分析关联规则的数据挖掘技术。在许多方面,这一系列算法是数据挖掘的精髓——彻底遍历大型事务数据库,并在这些数据库中的字段(变量或特征)之间找到高于平均水平的关联或相关性。在实践中,您将它们连接到数据源并让它们在一夜之间运行。上述集合中的中心 R 包称为 arules;在 arules 的 CRAN 包页面上,您将找到一些关于 arules 包和一般关联规则技术的优秀二级资源(R 词典中的 vignettes)的链接.

Hastie 等人的标准参考 The Elements of Statistical Learning

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

CRAN 任务视图:机器学习

+3,500 套餐可用 for R 按域分为大约 30 个包系列或“Task Views”。机器学习 是这些家庭之一。机器学习任务视图包含大约 50 个左右 包裹。其中一些包是核心发行版的一部分,包括 e1071 (一个庞大的 ML 包,其中包含许多 通常的 ML 类别。)

Revolution Analytics Blog

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

ML in R tutorial 由 Josh Reich 的幻灯片和 R 代码组成

对代码的深入研究本身就是对 R 中机器学习的极好介绍。

最后一个资源我认为非常好,但没有进入前 5:

A Guide to Getting Stared in Machine Learning [in R]

张贴在博客美丽的万维网

【讨论】:

毫无疑问,MATLAB 并不便宜,至少对大多数人来说是这样。在我的工作中,我尽量避免使用 MathWorks 的附加工具箱。正如您所说,它们会产生额外的成本,但它们也限制了便携性。 MATLAB 的一大优点是基础产品中包含的内容:例如,图像加载不需要特殊的库,因此我的代码可以在任何人的 MATLAB 上运行。 哦,我的另一点是,有大量的统计和数据挖掘软件可以从相当大的在线 MATLAB 社区免费获得。例如,请参阅 MATLAB Central 的文件交换。大学是另一个很好的 MATLAB 代码来源。 感谢您的回答。对此,我真的非常感激。我会看看你提到的那本书。 此外,编写本书的人不仅在 R 中实现了他们的方法,而且他们自己也是贡献者! @Predictor,R 的伟大之处在于它始终可以在每台机器上运行,无论您安装了多少扩展包。【参考方案3】:

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

【讨论】:

【参考方案4】:

当您处理大量数据时,我还会查看每种功能的功能。我知道 R 可能会遇到问题,如果您习惯于迭代数据挖掘过程,可能会受到限制。例如同时查看多个模型。不知道 MATLAB 有没有数据限制。

【讨论】:

【参考方案5】:

我们不应该忘记这两个软件的起源:科学计算和信号处理导致了Matlab,但统计导致了R。

我在大学里经常使用 matlab,因为我们在 Unix 上安装了一个,并且对所有学生开放。但是,与免费的 R 相比,Matlab 的价格太高了。如果您的主要关注点不是矩阵计算和信号处理,R 应该可以很好地满足您的需求。

【讨论】:

【参考方案6】:

昨天我发现了两本关于数据挖掘的新书。这些名为“数据挖掘”的系列书籍通过深入描述新颖的挖掘算法和许多有用的应用来满足需求。这两本书除了深入理解每一部分之外,还在接下来的章节中提供了解决问题的有用提示和策略。数据挖掘技术的进步和广泛的大众普及确立了对该主题的综合性文本的需求。书籍是:“数据挖掘中的新基础技术”http://www.intechopen.com/books/show/title/new-fundamental-technologies-in-data-mining 和“数据挖掘中面向知识的应用程序”http://www.intechopen.com/books/show/title/knowledge-oriented-applications-in-data-mining 这些是开放获取的书籍,因此您可以免费下载或在像我这样的在线阅读平台上阅读做。干杯!

【讨论】:

【参考方案7】:

我承认偏爱 MATLAB 来解决数据挖掘问题,我在这里给出一些理由:

Why MATLAB for Data Mining?

我承认对 R/S-Plus 的了解只是暂时的,但我会提出以下意见:

    R 肯定比 MATLAB 更注重统计。我更喜欢在 MATLAB 中构建自己的工具,这样我就可以确切地知道它们在做什么,并且我可以自定义它们,但这在 MATLAB 中比在 R 中更为必要。

    新统计技术(空间统计、稳健统计等)的代码通常出现在 S-Plus 的早期阶段(我认为这至少会延续到 R 中)。

    几年前,我发现商业版 R、S-Plus 的数据容量极其有限。我不能说 R/S-Plus 今天的状态如何,但您可能想检查一下您的数据是否能够轻松地适合此类工具。

【讨论】:

S-Plus 不是“R 的商业版”。 通常新的统计技术是用 R 编写的,然后移植到 S-Plus。 Marek,你能评论一下R的数据容量吗? R 有多种方法来处理数据和不同的数据结构。主要方法是在内存中,但一种更改读取行/块,直接与数据库接口、许多不同的文件类型和“大”数据的 HPC 结构一起工作。 这在很大程度上取决于什么样的“列”,你对数据做了什么,你的硬件等等......给出一个非常粗略的答案,我在使用 1e6 时没有遇到问题- 1e7 个案例,包含 10 到 100 多个变量……但我不确定这个答案有多大意义。 R是免费的,试一试。熟悉matlab应该没问题。甚至还有一些更常用的语法的 matlab 仿真包。【参考方案8】:

请查看CRAN Task Views,尤其是CRAN Task View on Machine Learning and Statistical Learning,它很好地总结了这一点。

【讨论】:

以上是关于比较 R 与 Matlab 的数据挖掘的主要内容,如果未能解决你的问题,请参考以下文章

Matlab怎样直接得到一组数据95%的置信区间

急!MATLAB中用cftool工具数据拟合之后,拟合结果好坏判断

R 与 MATLAB 中的高维数据结构化方法

金融数据分析用python还是R还是matlab好?

R数据框的实际限制

R语言统计分析应用与SASSPSS的比较