2020之最:最實用的機器學習工具有哪些?
就如同制作米其林菜肴,擁有井井有條的廚房固然重要,但可選擇的東西太多也著實讓人煩惱,建立良好的機器學習(ML)應用程序也是如此。
所以,小編將重點介紹一些可用于交付專業(yè)項目的工具,分享想法和備選方案,并開展一個快速的調(diào)查。任何關(guān)于工具的討論給出的選項總是無法窮盡,但下面這幾種將是最有用和最簡單的。
當然啦,如果你有其他更好的選擇,也歡迎在評論區(qū)告訴小芯。(免責聲明:本帖未署名,且未受到贊助。小編將數(shù)據(jù)科學和機器學習兩個名詞互換使用。)
常見問題
“如何構(gòu)建優(yōu)秀的機器學習應用程序?”
與數(shù)據(jù)科學家、正在尋求轉(zhuǎn)型的專業(yè)人員以及團隊經(jīng)理溝通的過程中,這個問題以各種形式多次出現(xiàn)。
交付專業(yè)數(shù)據(jù)科學項目涉及很多方面,實際上它在廚房做飯很相似:有原料(數(shù)據(jù))、食譜(設計)、烹飪過程(獨到的方法)、最后是實際的廚房(工具)。
本文遍歷了小編的“廚房”,重點介紹了在設計、開發(fā)和部署全棧機器學習應用程序中最有用的工具——這些解決方案或與系統(tǒng)融合,或能夠在生產(chǎn)環(huán)境中服務于用戶。
勢不可擋的可能性
這是最好的時代。如果在谷歌中搜索“機器學習工具”或咨詢顧問,可能會得到以下信息:
2019數(shù)據(jù)&人工智能全景 | 圖源:GIPHY
你能得到太多的工具,組合的可能性是無限的,這勢不可擋,卻也令人迷茫。你需要去縮小范圍。但要注意的是,完美的安裝依舊不存在,而這取決于用戶的需求和限制條件。簡而言之,最適合的才是最好的。
小編的優(yōu)先列表如下(無先后之分):
- 免費
- 工程大于研究
- 易于學習和安裝
- 只要能完成工作就好
- 久經(jīng)考驗的(應用程度&工具成熟度)
- 在創(chuàng)業(yè)或大型企業(yè)被應用于大型或小型項目
注意:小編99%的時間里都會使用Python 。因此,本文推薦的工具要么和Python完美適配,要么本地就有Python。小編尚未使用其他編程語言(例如R或Java)對它們進行測試。
冰箱:數(shù)據(jù)庫
PostgreSQL
這是一個免費的開源關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),擁有可擴展性和技術(shù)標準合規(guī)性。它旨在處理各種工作負載,包括單臺機器、數(shù)據(jù)倉庫或擁有多個并發(fā)用戶的Web服務。
圖源:medium.com
備選方案: MySQL、SAS、IBM、DB2、Oracle、MongoDB、Cloudera、GCP、 AWS、Azure
廚房臺面:部署Pipeline工具
Pipeline工具對于開發(fā)的速度和質(zhì)量至關(guān)重要。這一工具的目標是在最少人為干預的情況下快速進行迭代。小編有一個運行良好的安裝教程,想要知道更多詳細信息,請參閱我的文章——12小時機器學習挑戰(zhàn),想“偷懶”一定要盡早嘗試~
(https://towardsdatascience.com/build-full-stack-ml-12-hours-50c310fedd51)
小編的作品:12-小時機器學習挑戰(zhàn)
Pytest
架構(gòu)使編寫小型測試變得容易,但需擴展之后,才支持針對應用程序和庫的復雜功能測試。它節(jié)省了手動測試的大量時間,如果每次更改代碼都需要測試某些東西,Pytest的自動化將會幫助到你。
備選方案: Unittest
Github
它提供了Git的分布式版本控制和源代碼管理(SCM)功能,當然還包括自帶的功能。它為每個項目提供訪問控制和多種協(xié)作功能,例如功能請求、錯誤跟蹤、任務管理和wikis。
備選方案: BitBucket, GitLab,DVC
PyCharm 社區(qū)版
這是一個在計算機編程中使用的集成開發(fā)環(huán)境(IDE),專門用于Python語言。它是由捷克JetBrains公司開發(fā)的,提供代碼分析、圖形調(diào)試器、集成的單元測試器與版本控制系統(tǒng)(VCS)集成,并支持使用Django進行Web開發(fā)以及使用Anaconda進行數(shù)據(jù)科學研發(fā)。
備選方案: Atom, Sublime
Heroku (僅當用戶需要網(wǎng)絡托管時)
圖源:heroku.com
平臺即服務(PaaS),使開發(fā)人員可以完全對應用程序進行云構(gòu)建,云運行和云操作。與CircleCI和Github集成后也可以啟用自動部署。
備選方案: Google App Engine, AWS Elastic Compute Cloud, others
Streamlit (僅在用戶需要交互式UI時)
Streamlit是面向機器學習和數(shù)據(jù)科學團隊的開源應用程序框架。它是小編近年來最喜歡的工具之一。在小編的12小時機器挑戰(zhàn)中,你可以看到該如何使用它以及本節(jié)中的其他工具來創(chuàng)建電影和模擬應用程序。
備選方案: Flask, Django, Tableau
CircleCi
CircleCI是一個持續(xù)集成和部署工具。當你將自己的項目提交到Github時,這一工具能使用遠程docker創(chuàng)建一個自動化的測試工作流。任何未通過PyTest設置測試用例而提交的項目都會被Circle CI拒絕。這樣可以確保代碼質(zhì)量,這點在于大團隊合作時尤其重要。
備選方案: Travis CI, Jenkins,Github Action
the iPad: 探索工具
Streamlit (又見面了~)
別再留戀Jupyter Notebook了!
Jupyter曾經(jīng)是小編的首選工具,它可用于數(shù)據(jù)探索,分析,并利用不同的數(shù)據(jù)和建模過程進行實驗。但下面這種令人沮喪的情況,已經(jīng)記不清有多少次:
- 絞盡腦汁進行調(diào)試,但最終意識到自己忘記了從頭開始運行代碼;Streamlit可以解決這個問題。
- 總是需要等一會兒才能重新運行數(shù)據(jù)pipeline;Steamlit緩存可解決此問題。
- 不得不將代碼從Jupyter重寫或轉(zhuǎn)換為可執(zhí)行文件,還要在重新測試上花費時間;Streamlit提供了一個解決問題的快捷方式。
所以,小編順理成章地轉(zhuǎn)而使用Streamlit進行早期探索并服務于最終的前端。以下是小編常用的屏幕設置。左側(cè)為PyCharmIDE,右側(cè)為結(jié)果可視化。
IDE+ Streamlit的實時更新 | 圖源:towardsdatascience
備選方案: Jupyter Notebook、Anaconda、Spyder from、Microsoft Excel (認真臉!)
刀子:機器學習架構(gòu)
你應該根據(jù)食物和切割方式選擇合適的刀具,比如通用刀和專用刀。
當心!盡管壽司專用刀更加亮麗,但使用專用刀將壽司切成塊狀將花費很長時間。要選擇正確的工具來完成工作。
Sklearn (常見的機器學習使用案例)
這是在Python中進行通用機器學習的首選框架,有它就足夠了。
圖源:scikit-learn.org
備選方案:none、period.
Open AI Gym (強化學習使用案例)
這是一個開發(fā)和比較強化學習算法的工具包,它提供API和可視環(huán)境。許多社區(qū)都在爭先為該領(lǐng)域構(gòu)建工具,不過可用的完整安裝包還不多。
備選方案:許多小型項目,但多數(shù)的維護工作都不如Gym。
PyTorch (深度學習使用案例)
這是一個基于Torch庫的開源機器學習庫。深度學習是此庫重點,它主要用于計算機視覺和自然語言處理等應用。Torch主要由Facebook的人工智能研究實驗室(FAIR)開發(fā)。最近,許多著名的人工智能研究機構(gòu),例如Open AI,都使用PyTorch作為其標準工具。
備選方案: Tensorflow、 Keras、Fast.ai
火爐:實驗管理
Atlas
這是一個免費工具,可讓數(shù)據(jù)科學家使用一些摘要進行實驗,將結(jié)果顯示在基于Web的儀表板上。
Atlas 程序 | 圖源:atlas.dessa.com
(免責聲明:小編供職于Dessa, 該公司創(chuàng)建了Altas。)
備選方案: ML Flow、Weights & Biases、Data Robot、SageMaker、Comet、Domino
另一種觀點
沒有完美的安裝,一切都取決于你的需求和限制條件。下圖展示了另一種想法,也是關(guān)于何種工具可用以及它們?nèi)绾我黄鸸ぷ鳌?/p>
謝爾蓋·卡拉耶夫在2019年全棧深度學習中的演講
迷你挑戰(zhàn)
想要了解這些工具,最好的方法是找一個項目開始操作。你可以將這些工具合并到當前項目中,也可以進行一個12小時機器學習挑戰(zhàn)。
我看好你喲~