35

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

我有一个快速的问题:您如何比较 R 与 Matlab 的数据挖掘应用程序、它的受欢迎程度、优缺点、行业和学术接受度等?你会选择哪一个,为什么?

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

我很感激任何建议。

4

8 回答 8

61

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

我在大学期间是 Matlab 的独家用户;当时我认为这是一套出色的工具/平台。我相信今天也是如此。

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

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

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

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

  • CRAN任务视图:机器学习

可用于 R 的 +3,500 个包按域分为大约 30 个包系列或“任务视图”。机器学习就是这些家族之一。机器学习任务视图包含大约 50 个左右的包。其中一些包是核心发行版的一部分,包括 e1071(一个庞大的 ML 包,其中包含许多常见 ML 类别的工作代码。)

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

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

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

张贴在博客上美丽的万维网

于 2011-01-27T03:54:50.970 回答
9

请查看CRAN 任务视图,特别是关于机器学习和统计学习的 CRAN 任务视图,它很好地总结了这一点。

于 2011-01-27T02:29:32.500 回答
2

如果您正在执行矩阵繁重的操作,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 大小”,您必须考虑数据布局和组织,除非您只需要对数据进行线性扫描。但是,您也可以只是采样!

于 2012-10-04T08:05:27.530 回答
1

昨天我发现了两本关于数据挖掘的新书。这些名为“数据挖掘”的系列书籍通过深入描述新颖的挖掘算法和许多有用的应用程序来满足需求。这两本书除了深入理解每一节之外,还在接下来的章节中为解决问题提供了有用的提示和策略。数据挖掘技术的进步和大众的普及确立了对该主题的综合性文本的需求。书籍是:“数据挖掘中的新基础技术”在这里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 这些是开放获取的书籍,因此您可以免费下载或像我一样在在线阅读平台上阅读。干杯!

于 2011-02-28T10:43:31.850 回答
1

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

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

于 2011-03-26T03:35:31.690 回答
1

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

于 2011-11-17T22:34:48.560 回答
0

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

于 2011-02-08T19:21:16.077 回答
-1

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

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

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

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

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

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

于 2011-01-27T11:01:02.563 回答