R是应用机器学习最受欢迎的平台。当你认真对待应用机器学习时,你将找到进入R的方法。
它非常强大,因为它提供了大量的机器学习算法。一个问题是,这些算法都是由第三方提供的,这使得它们的使用非常不一致。这会极大地拖慢你的速度,因为你不得不反复学习如何在每个包中使用每个算法来建模数据和进行预测。
在这篇文章中,你将发现如何通过遵循一致结构的预设“菜谱”来克服R中机器学习算法的这一困难。
使用我的新书《R语言机器学习精通》启动你的项目,其中包括分步教程和所有示例的R源代码文件。
让我们开始吧。
算法众多,一致性不足
R生态系统非常庞大。开源第三方包提供了这种强大功能,让学者和专业人士能够将最强大的算法交到我们从业者手中。
我刚开始使用R时遇到的一个问题是,每个算法的使用方法在不同包之间存在差异。这种不一致性也延伸到文档中,有些文档提供了分类的示例,却忽略了回归,有些则根本不提供示例。
所有这一切都意味着,如果你想尝试来自不同包的几种不同算法,你必须花时间逐一弄清楚如何用每种方法进行拟合和预测。这需要大量时间,尤其是在示例和说明文档零散的情况下。
我将这些困难总结如下:
- 不一致性:算法的实现方式在模型拟合数据和模型生成预测方面各不相同。这意味着你必须研究每个包和每个算法实现,才能仅仅构建一个可用的示例,更不用说将其应用于你的问题了。
- 分散性:算法在不同的包中实现,因此很难找到哪些包提供了你需要的算法实现,更不用说哪个包提供了最流行的实现。此外,一个包的文档可能分散在多个帮助文件、网站和说明文档中。这意味着你需要进行大量的搜索才能找到一个算法,更不用说编制一个可供选择的算法列表了。
- 不完整性:算法文档几乎总是不完整的。可能提供也可能不提供示例用法;如果提供了,可能在典型问题上演示,也可能不演示。这意味着你没有明确的方法来快速理解如何使用某个实现。
- 复杂性:算法在实现和描述的复杂性上各不相同。当你从一个包跳到另一个包时,这会让你付出代价。你希望专注于如何从算法及其参数中获得最大收益,而不是浪费精力去阅读大量PDF文件仅仅为了实现一个“hello world”。
需要更多关于R机器学习的帮助吗?
参加我为期14天的免费电子邮件课程,了解如何在您的项目中使用R(附带示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
建立一本算法“菜谱”
如果你有一本可以查阅的算法“菜谱”,其中包含R中机器学习算法的示例,你可以复制粘贴并根据你的具体问题进行调整,那么你就能完成更多的工作。
要使这种“菜谱”方法奏效,它必须遵循一些关键原则:
- 独立性:每个代码示例必须是独立的、完整的,并可直接执行。
- 仅代码:每个“菜谱”必须专注于代码,尽量减少对机器学习理论的阐述(这方面有很棒的书籍,不要混淆这些问题)。
- 简洁性:每个“菜谱”必须以最常见的用例呈现,这很可能就是你在查找时想要做的事情。你只希望查阅官方文档以查找参数,以便充分利用算法。
- 便携性:所有“菜谱”必须以单一参考形式提供,可供搜索、打印、浏览和查阅(一本“菜谱”)。
- 一致性:所有代码示例都以一致的方式呈现,并遵循相同的代码结构和风格约定(加载数据、拟合模型、进行预测)。
一本算法“菜谱”将让你能够运用R平台进行机器学习并解决复杂问题。
- 你可以直接应用算法和特性。
- 你可以发现你需要的代码。
- 你可以一目了然地理解正在发生的事情。
- 你可以拥有这些“菜谱”,并按照你想要的方式使用和组织它们。
- 你可以最大限度地利用算法和特性。
R中的算法“菜谱”
我已经大致勾勒出这些“菜谱”可能是什么样子。
我提供了R中机器学习“菜谱”的示例,按算法类型或相似性分组如下:
- 线性回归:普通最小二乘回归、逐步回归、主成分回归和偏最小二乘回归。
- 惩罚线性回归:岭回归、最小绝对收缩与选择算子(LASSO)和弹性网络
- 非线性回归:多元自适应回归样条(MARS)、支持向量机(SVM)、k最近邻(kNN)和神经网络。
- 非线性决策树回归:分类与回归树(CART)、条件决策树、模态树、规则系统、Bagging CART、随机森林、梯度提升机(GBM)和Cubist。
- 线性分类:逻辑回归、线性判别分析(LDA)和偏最小二乘判别分析。
- 非线性分类:混合判别分析(MDA)、二次判别分析(QDA)、正则化判别分析(RDA)、神经网络、柔性判别分析(FDA)、支持向量机(SVM)、k最近邻(kNN)和朴素贝叶斯。
- 非线性决策树分类:分类与回归树(CART)、C4.5、PART、Bagging CART、随机森林、梯度提升机(GBM)和Boosted C5.0。
我认为这些“菜谱”非常符合这项任务。
总结
在这篇文章中,你发现了R中机器学习的受欢迎程度和强大功能,但这种强大的代价是驾驭它所需的时间。
你发现,解决R中这一限制的一种方法是设计一本包含完整独立机器学习算法的“菜谱”,你可以根据需要查阅并应用于你的特定问题。
最后,你看到了R中各种算法类型的机器学习算法“菜谱”示例。
如果你觉得这种方法有用,我很乐意听到你的反馈。
谢谢Jason,这篇文章真的很有用。
对于理解R中的算法非常有帮助。谢谢。
亲爱的Jason,作为一名同行从业者,请允许我万分感谢!正如你所知,人们不可能了解所有事情的所有细节——所以你的示例对于那些理解统计学,只是需要复习一下R语法的人来说非常棒。
了解发动机的理论工作原理是一回事。知道如何修理发动机以及使用具有特定语法的特定工具又是另一回事。
所以你的建议非常准确,对于像剥洋葱一样快速而粗略地构建模型——你太棒了!从简单开始,在实现基础之后再增加复杂性。
感谢你的时间和努力。真心感谢你的辛勤工作。
Rob,你这样说太好了,我很高兴你能够充分利用这些示例。
对于心脏病预测,哪些机器学习算法最合适?
测试大量的算法,看看哪个在你的特定数据上效果最好。