資源| 最流行的機器學習R語言軟體包是哪些?

2020-12-11 機器之心Pro

選自kdnuggets作者:Michael Li 、Paul Paczuski機器之心編譯參與:王宇欣、杜夏德

The Data Incubator 中,有著最新的數據科學(data science)課程。其中大部分的課程都是基於企業和政府合作夥伴的需求而設立的。現在他們希望開發一更偏向數據為驅動的方式,以了解應該為數據科學企業的培訓(data science corporate training,以及享受其提供的免費助學金的有意願進入業界數據科學領域的碩博士生們教授什麼樣的內容。結果如下。

排名

什麼是最流行的機器學習包(ML packages)?讓我們來看一下基於包下載量(package downloads)和社交網站活躍度的排名。

註:OneR: 1 (SO); mlr: 2 (Github); ranger: 4 (Github); SuperLearner: 5 (Github)

該排名基於 CRAN ( The Comprehensive R Archive Network (https://cran.r-project.org/) ) 下載量和 Stack Overflow 活躍性的平均排名(完整排名 [CSV] (https://github.com/thedataincubator/data-science-blogs/blob/master/ranking.csv)))。

其中 CRAN 的下載量是過去一年的數據。Stack Overflow 則是根據基於問題正文中下載包的名稱並以 『R』進行標記的結果數進行排名。

GitHub 的排名則是由存儲庫中的星星數而來。有關方法的詳細信息,請參閱下文

CARET 排名第一,多個神經網絡排名靠前

caret 排名第一也許並不奇怪。它是一個用於創建機器學習工作流的通用軟體包,能很好地與一些算法特定的軟體包(排名靠後)整合在一起。

這些包括了 e1071 ( 用於支持向量機,SVMs), rpart (trees), glmnet ( 正則化回歸,regularized regressions), 也許還有 R,神經網絡 (nnet)。有關軟體包的詳細信息如下

排名說明了 R 軟體包社區的碎片化程度。一些頂級的軟體包,比如 rpart 和 tree,部署了相同的算法,這與 Python 的 scikit-learn 的一致性和寬度形成對比。

但是,如果你喜歡 R 的數據操作能力(就像在 tidyverse 中),那麼你就可以使用這些軟體包做一些功能強大的模型,而不用切換到 python。此外,隨著 modelr (https://github.com/hadley/modelr) 中添加了更多的功能,我們也許很快能在此列表中看到 tidy tool。

包的細節

caret 是一個用於創建機器學習工作流的一般包,並且它已經處於這個排名的首位置。接著的是實現特定機器學習算法的幾個包:隨機森林(Random Forests)(randomForest), 支撐向量機(Support Vector Machines)(e1071), 分類和回歸樹(Classification and Regression Trees)(rpart), 和 正則化回歸模型(regularized regression models)(glmnet).

nnet 實現了神經網絡,而 tree 包同樣實現了樹的功能。party 用於二叉樹的遞歸分割和可視化,arules 則用於關聯挖掘。支持向量機(SVMs)和其他的內核方法則部署在 kernlab 中。h2o 包用於可擴展的機器學習,而且是更大的 H2O 項目的一部分。ROCR 用於模型評估,包括 ROC 曲線(接收者操作特徵曲線,receiver operating characteristic curve),gbm 實現梯度推進。更多的分割算法(partitioning algorithms)可以使用 RWeka 進行訪問,而 rattle 是數據挖掘中的 R 的一個圖形用戶界面(GUI)。

一些包則只在 Github 中發揮強大功能: mlr 和 SuperLearner 是另外兩個元包(meta-package),為 caret 提供類似的符號插入的功能,ranger 提供了隨機森林(random forests)的 C++ 實現。

最後,OneR 在 Stack Overflow 中排名第一,但是 SO API 經常將其自動修正為「one」,所以結果並不可信。

方法

接下來,我們描述一下這種排名所使用的方法。

步驟 1: 獲得 機器學習包的詳盡列表

一開始,我們設想我們的排名綜合考慮了包下載量、Stack Overflow 和 Github 活躍度。我們知道能為我們提供這些指標的 API 已經存在了

然而,獲得機器學習的所有 R 包的初始列表是一件更加艱巨的任務。我們需要一份詳盡客觀的並且是最新的一份列表。一份不好的初始化列表將會嚴重影響我們的排名。

尋求幫助。一個朋友把一篇文章「CRAN 任務視圖:機器學習和統計學習 (CRAN Task View: Machine Learning & Statistical Learning)」介紹給我,該文章底部有一份非常不錯的列表,並且很容易入手。

這樣做的好處是包列表的來源非常具有權威性(CRAN 是官方 R 包存儲庫)並且它會經常更新(最近的更新:2017 年 1 月 6 日)。感謝作者,Torsten Hothorn 通過郵件提供的幫助。

以前的想法是使用 Google 來尋找「頂級 R 機器學習包」的列表,然後試著從列表上抓取所有包的名稱,將它們結合起來,並使用該列表作為起點。但是拋開工程任務來說,當前可用的列表質量相對較差,不能滿足我們的需求。它們過時了,沒有明確的說明方法,並且往往是極其主觀的。

確定客觀指標

一個好的排名需要一個對於「最佳(best)」的定義,這需要用良好的指標來搭建。我們將「最佳」定義為「最流行」。這並不一定意味著這個包是廣受歡迎的(由於糟糕的 API,用戶可能經常會搜索 Stack Overflow)

我們為我們的排名選取了 3 個因素:

下載:來自於 CRAN 鏡像的下載量Github:包的主存儲庫頁面上星星數量。Stack Overflow: 包含程序包的名稱並以 'R' 標記的問題的數量。

CRAN 下載

有一些 CRAN 的鏡像,而我們使用的是 R-Studio 鏡像,因為它有一個便捷的 API。RStudio 一定是 R 中使用最廣泛的 IDE,但卻並非是唯一的。如果我們從其他 CRAN 的鏡像統計下載量,我們的排名可能會更好(但並不會有顯著變化)。

GitHub

最初,我們通過在 Github 的 search API 上查詢包的名字來尋找包的 Github 頁面,可能會使用「language:R」,但這麼做是不可靠的。有時候很難選擇正確的 Github 庫,而且不是所有的 R 包都是用 R 語言來實現的(在該搜索 API 中,「language:R」參數似乎指的是該存儲庫寫入所使用的最流行的語言)

相反,我們返回 CRAN 來尋找這些 URL。每個包都有一個官方的 CRAN 頁面,其中包括了一些有用的信息,比如原始碼連結。這就是我們得到的包的 Github 存儲庫的位置。

在這之後,使用 API 就可以容易地得到 Github 的星星數。

Stack Overflow

從 Stack Overflow 獲取有用的結果需要技巧。一些 R 包的名稱,比如 tree 和 earth,存在著明顯的困難:Stack Overflow 的結果可能不會被篩選到 R 包的結果當中,所以我們首先在查詢中添加一個 「r」 字符串,這非常有幫助。

一個好的(最優的?)策略是在問題主題中查詢包的名字,然後添加一個 『r』標籤(這與添加 『r』 字符串不同)

建立排名

我們簡單地將包按照 3 個指標中的每一個來排名,並取其平均值。該方法沒什麼特別的地方。

雜注

所有的數據都是在 2017 年 1 月 19 日下載的。CRAN 的下載量則是統計了過去 365 天的數據:從 2016 年 1 月 19 日 到 2017 年 1 月 19 日。

數據科學領域最頂級的 R 包?

一開始,這個項目是要將「數據科學」領域中所有頂級的包進行排名,但我們很快發現這個範圍太大。

數據科學家做了很多不同的事情。要幫助一個數據科學家,你要將幾乎所有的 R 包進行分類。那麼,我們應該包含字符串操作包嗎?包是如何從資料庫中讀取數據的呢?

也許有一天,會有一個更長的項目,它會更多地使用 「Data Science」 來為「數據科學」工作得出一個頂級 R 包的排名。

資源:

原始碼請查看 The Data Incubator (https://www.thedataincubator.com/) 的 Github (地址:https://github.com/thedataincubator/data-science-blogs/)。如果有興趣學習更多,請參考:

1.Data science corporate training

(地址:https://www.thedataincubator.com/training.html)

2. Free eight-week fellowship for masters and PhDs looking to enter industry

(地址:https://www.thedataincubator.com/fellowship.html)

3. Hiring Data Scientists

(地址:https://www.thedataincubator.com/hiring.html)

相關焦點

  • 機器學習 · R語言包大全(共99個包)
    /web/views/MachineLearning.html計算科學與統計學的交叉領域,我們通常稱之為機器學習。有很多R語言包都可以實現機器學習相關的思想和方法。,1個包用戶圖形界面,GUI,1個包其他,2個包  神經網絡與深度學習    Neural Networks and Deep Learning  關於R語言深度學習,可回復「深度學習」查看統計諮詢公眾號前期的文章《Deep Learning in R · R語言深度學習
  • 超級乾貨 :手把手教你學習R語言(附資源連結)
    除了上述在線資源,您還可以考慮以下優秀資源:CRAN免費教學R語言(https://cran.r-project.org/doc/manuals/R-intro.pdf)。課後作業通過「導入數據進入R語言」課程,或閱讀文章1、2、3、4。掌握導入數據軟體包。通過RStudio觀看Data Wrangling with R 。
  • 獨家 | 手把手教你學習R語言(附資源連結)
    除了上述在線資源,您還可以考慮以下優秀資源:CRAN免費教學R語言(https://cran.r-project.org/doc/manuals/R-intro.pdf)。課後作業通過「導入數據進入R語言」課程,或閱讀文章1、2、3、4。掌握導入數據軟體包。通過RStudio觀看Data Wrangling with R 。
  • r語言有什麼優劣勢及R語言的未來發展趨勢_R語言在現實中的應用
    r語言有什麼優劣勢分析 R語言擁有強大的軟體包生態系統與圖表優勢 R語言的優勢主要體現在其軟體包生態系統上。「在這一領域的任何新型研究成果可能都會馬上以R軟體包的形式體現出來。因此從這個角度看,R語言始終站在技術發展的尖端位置,」他表示。「這種接入軟體包還能夠提供良好的途徑,幫助我們利用相對統一的API在R語言環境下實現機器學習研究。」Peng進一步補充稱,目前已經有眾多主流機器學習算法以R語言作為實現手段。
  • 機器學習實踐指南
    你可以通過這篇文章來查找一些感興趣的資源。如果您還想轉向大數據,您可以考慮研究 Spark。這裡有一些有趣的資源:◈ 在 R 語言中使用 sparklyr 來了解 Spark[62]◈ Apache Spark 分布式機器學習[65]◈ 用 Apache Spark 進行大數據分析[66]◈ 初學者指南:用 Python 操作 Apache Spark[67]其他程式語言,比如 Java、JavaScript、C 和 C++ 在 ML 中越來越重要。
  • R語言:機器學習程序包
    機器學習是計算機科學和統計學的邊緣交叉領域,R關於機器學習的包主要包括以下幾個方面: 1)神經網絡(Neural Networks
  • 獨家 | 用於數據清理的頂級R包(附資源)
    確保數據乾淨整潔應該始終是數據科學工作流程中首要也是最重要的部分。數據清理是數據科學家最重要和最耗時的任務之一。以下是用於數據清理的頂級R包。然而,確保數據乾淨整潔應該始終是數據科學工作流程中首要也是最重要的部分。因為沒有它,您將很難看到重要的內容,並可能由於數據重複,數據異常或缺少信息等原因做出錯誤的決策。 R,作為一種能夠應用於統計計算和圖形的開源語言,是最常用和最強大的數據編程工具之一。
  • Tidy時代R語言學習的一些ABC
    這個號用到的主要數據工具是R語言。原因很簡單,我用R用了11年,順手。R從來都不是最熱的數據工具,就國內的情況來說,2010年時最熱的是Matlab,到了2020年最熱的成了Python。在我看來,爭論哪種語言工具是最好的對於實際工作並沒有太大的意義。選擇什麼樣的工具,要看熟練程度、工作要求、應用場景和具體問題。
  • 2021 年最值得學習的 5 大機器學習程式語言!
    如果你對人工智慧和機器學習感興趣,而且正在積極地規劃著自己的程式設計師職業生涯,那麼你肯定面臨著一個問題:你應該學習哪些程式語言,才能真正了解並掌握 AI 和機器學習?可供選擇的語言很多,你需要通過戰略選擇最能滿足個人需求,以及保證自己將來能夠在 AI 和機器學習領域順利發展的程式語言。
  • 深度| R vs Python:R是現在最好的數據科學語言嗎?
    但是當我認為 R 語言最終會變得過時時,這似乎引起了恐懼——仿佛 R 語言已經過時了。我想要消除你的恐懼:R 語言仍然很流行。R 語言是過去十年中發展最快的程式語言之一。O』Reilly:R語言可以說是最常見的數據程式語言最後,媒體 O'Reilly 在過去的幾年裡進行了一次數據科學調查,他們使用調查數據來分析數據科學的趨勢。除了其他的之外,它們分析工具的使用情況來確定哪些工具是數據科學家最常使用的。
  • 機器學習資源大全中文版
    awesome-machine-learning 就是 josephmisiti 發起維護的機器學習資源列表,內容包括了機器學習領域的框架、庫以及軟體(按程式語言排序)。Awesome 系列雖然挺全,但基本只對收錄的資源做了極為簡要的介紹,如果有更詳細的中文介紹,對相應開發者的幫助會更大。這也是我們發起這個開源項目的初衷。我們要做什麼?如何參與本項目?
  • 2021 年最值得學習的機器學習程式語言TOP 5
    如果你對人工智慧和機器學習感興趣,而且正在積極地規劃著自己的程式設計師職業生涯,那麼你肯定面臨著一個問題:你應該學習哪些程式語言,才能真正了解並掌握
  • 2021年 最值得學習的機器學習程式語言TOP 5
    如果你對人工智慧和機器學習感興趣,而且正在積極地規劃著自己的程式設計師職業生涯,那麼你肯定面臨著一個問題:你應該學習哪些程式語言,才能真正了解並掌握
  • 教程|R語言學習與實踐教程
    我創建了R語言微信群,定位:R語言學習與實踐,要進群的朋友,添加我微信:luqin360。本文的外部連結,請點擊閱讀原文進入到數據人網後,就可以訪問和查看了。在這個內核中,我收集了我所寫的所有R語言教程,按級別劃分。初學者:在這個級別,我假設你沒有編程背景或剛剛開始使用R.
  • 機器學習與R語言培訓課程
    R是一套完整的數據處理、計算和製圖軟體系統。其功能包括:數據存儲和處理系統;數組運算工具(其向量、矩陣運算方面功能尤其強大);完整連貫的統計分析工具;優秀的統計製圖功能;簡便而強大的程式語言:可操縱數據的輸入和輸出,可實現分支、循環,用戶可自定義功能。
  • MATLAB,R語言、Python、Java,到底哪種語言學機器學習最靠譜?
    Python雖然 Python 是一種更通用的程式語言和腳本語言,但它在數據科學家和機器學習工程師中的人氣也是急劇上升。跟 R 和 MATLAB 不同,它並沒有內置數據處理和科學計算專用的語法,但它有像 NumPy、SciPy 和 Pandas 這樣的庫用更友好的語法提供了同樣的功能。
  • 2014最值得學習的語言—必須是R
    我們現在用到的R語言軟體,已經越來越接近工業軟體的標準了。由工程師推動的R的發展速度,遠遠地超過了由統計學家推動的步伐。隨著人們對數據分析要求的進一步增加,R會以更快的腳步繼續發展,將成為免費的、開源的、數據分析軟體的代名詞。3). R的社區和資源R的發展,離不開R的社區支持。
  • 機器學習工具榜單-Python取代R成為最受歡迎的程式語言
    2300多名參與者對自己「過去 12 個月內在項目開發中使用過的數據挖掘 / 機器學習工具和程式語言」進行了投票。近日,KDnuggets網站公布了2018年度的數據科學和機器學習工具調查結果。2300多名參與者對自己「過去 12 個月內在項目開發中使用過的數據挖掘 / 機器學習工具和程式語言」進行了投票。
  • 數據科學養成記 之 R語言基礎(2)——關於R包
    R作為一種主力的分析語言有著其獨特的優勢:大量的R包可供大家使用,提供方便快捷的數據分析,挖掘。目前有上千個R包(R package)可供大家使用,可從cran-r 下載。這些包提供了橫跨各種領域、數量驚人的新功能,包括分析地理數據、處理蛋白質質譜,甚至是心理測驗分析的功能。
  • 2021 年這 8 種程式語言最流行:R 入榜原來是這個原因
    有這麼多不斷變化的語言,很難知道該從何處入手,尤其是開源語言一直在變化,新的包和框架不斷湧現。無論你的興趣或需求是什麼,如果你想了解 2021 年最流行的程式語言,你可以從本文這個列表中找到它們。R 有一個強大的開源軟體包生態系統,使任何人都可以非常簡單地用幾行代碼運行統計分析,並以幾行代碼創建出一個可供發布的圖形。非程式設計師學習 R 的最佳方法尤其是對於那些沒有或不想從事編程工作的人來說,我認為最好是找一個你真正關心的項[13]目,然後設定一個明確的目標。你沒有工作的必要——至少現在你可以不知道如何編程。