原作者:Jason Brownlee
工具是機器學習的重要組成部分,選擇合適的工具與使用最好的算法同等重要。
在這篇文章中,你將會見識到各種機器學習工具。了解它們為什么重要,以及可供選擇的工具類型。
機器學習工具使得應用機器學習更快,更簡單,更有趣。
更快:好工具可以自動化應用機器學習過程中的每一步。這意味著,從提出創意到得到結果的時間大大縮短。如果你從頭開始自己實現每一個功能,這花的時間要比選擇現有工具要長的多。
更簡單:你可以花時間來選擇合適的工具,而不是研究、實現技術來完成任務。如果你自己實現,你必須對每一個過程都十分精通。這需要研究,資深經驗來理解技術,以及高水平的工程技能來確保有效執行。
有趣:對于初學者得到良好結果的門檻低。你可以花費額外的時間來得到更好的結果,或者進行更多的項目實踐。如果不使用這些工具,你將會花費大部分時間來構建你自己的工具,而沒將時間集中在獲取結果上。
你不希望為學習、使用機器學習工具而學習、使用機器學習工具。必須有目的地使用工具。
機器學習工具可以讓你在機器學習項目中交付結果。當你試圖決定是否要學習新工具或是新功能的時候,問自己這么一個問題:
這些工具如何幫助我在機器學習項目中交付結果?
機器學習工具不僅僅是機器學習算法的實現。它們可能是,但在你解決機器學習問題的過程中,它們也可以為每一個過程提供幫助。
你想在你正在解決的問題上使用最好的工具。那么如何區分好的機器學習工具與強大機器學習工具之間的區別呢?
直觀的界面:強大的機器學習工具在應用機器學習過程的子任務上提供直觀的界面。在任務的界面中有良好的映射以及適應性。
最佳實踐:強大的機器學習工具體現了過程,配置和實現的最佳實踐。比如自動配置機器學習算法,工具內部結構良好的處理方式。
值得信賴的資源:強大的機器學習工具維護良好,時常保持更新,并具有社區人群。尋找關于一個工具相關的活動,是此工具被使用的標志。
機器學習工具能夠節省你的時間,并在項目中持續為你提供良好的結果。以下是使用機器學習工具能夠為你帶來的一些好處:
入門:當你剛剛入門時,機器學習工具可以引導你完成整個項目并快速得到良好的結果,而且會給予你繼續下一個項目的信心。
日常:如果你想快速得到一個問題的良好結果,機器學習工具可以讓你集中關注特定的問題,而不是得到答案需要的技術深度。
項目工作:當你正在從事大型工程時,機器學習工具可以幫助你制定原型解決方案,進行需求分析,并且給出你可能要實現的系統的模板。
機器學習工具有許多。谷歌搜索到的結果就足以讓你頭暈目眩了。
一種有用的機器學習工具分類方式是將它們分成平臺和庫。平臺為你運行一個項目所需的全部功能,而庫只為你完成一個項目提供部分功能。
這么區分并不完美,因為有些機器學習平臺同時也是庫,有些庫也提供了圖形化用戶界面。然而,這提供了很好的比較方式,從特定目的工具中區分具體使用情形。
機器學習平臺提供了從頭到尾完成一個機器學習項目的功能。也就是,數據分析,數據準備,建模和算法評估及選擇。
機器學習平臺的特征有:
它們提供了機器學習項目中每一個過程所需要的功能。
界面可以是圖形化的,也可以是命令行,平臺將所有的或部分界面結合起來。
它們提供功能的松耦合,你可以在特定項目中將各個部件結合起來。
它們是為通用目的用途和探索而量身定制的,而不是為了速度,可擴展性和準確性。
以下是一些機器學習平臺:
WEKA Machine Learning Workbench。
PythonSciPy的子集(比如Pandas和scikit-learn)。
機器學習庫提供了完成一個機器學習項目部分模塊的功能。比如,一個庫可能提供了一系列建模算法。
機器學習庫的特征有:
它們為一個機器學習項目中一個或多個步驟提供了特定的功能。
它們的接口通常是需要編程的應用程序編程接口。
它們為特定用例,問題類型或環境量身定制。
以下是一些機器學習庫:
.Net中的Accord Framework。
另一種區分機器學習工具的方式是根據它們提供的界面。
這可能令人迷惑,因為一些工具提供了多個界面。然而,這可能為你挑選機器學習工具提供了起點,甚至可能為你區分這些工具提供了幫助。
下面是一些常見的界面。
機器學習工具提供了圖形用戶界面,包括窗口,得分,點擊,專注于可視化。圖形化用戶界面的好處有:
允許掌握較少技術的用戶完成機器學習工作。
專注于處理過程,以及如何最大限度地利用機器學習技術。
用戶可以使用界面進行結構化處理。
更注重于信息的圖形化展示,比如可視化。
以下是一些有圖形化界面的機器學習工具:
機器學習工具提供了命令行界面,包括命令行程序,命令行參數,注重于輸入和輸出。命令行用戶界面的好處有:
允許不是程序員的技術用戶完成機器學習項目。
提供了許多專門的程序或機器學習項目特定子任務的編程模型。
根據需要的輸入和將會得到的輸出分解機器學習任務。
通過記錄或腳本命令和命令行參數來促進有復驗性的結果。
以下是一些提供命令行界面的機器學習工具:
WEKA Machine Learning Workbench。
如果你喜歡在命令行下工作,看看這本書《Data Science at the Command Line: Facing the Future with Time-Tested Tools》,可以讓你了解如何在命令行下解決機器學習問題。
機器學習工具提供了應用程序編程接口,可以讓你自由決定在你的程序中使用什么元素以及如何使用。應用程序編程接口的好處有:
你可以將機器學習算法合并到自己的軟件項目當中。
你可以創建自己的機器學習工具。
你可以在機器學習項目中靈活使用自己的處理流程和自動操作。
你可以將自己的方法與庫提供的方法以及擴展提供的方法結合。
以下是一些帶有應用程序編程接口的機器學習工具:
面向Python的Pylearn 2。
面向Java的Deeplearning4j。
面向C的LIBSVM。
參考文章:
比較機器學習工具最后一個方法是這個工具是本地工具還是遠程工具。
本地工具是你下載并安裝的,在本地使用,而遠程工具運行在第三方服務器上。
這樣區分也許有些模糊,因為有些工具可以以本地或遠程的方式運行。另外,如果你是優秀的工程師,你可以在自己的服務器上配置幾乎所有的工具作為托管解決方案。
然后,這么區分可能很有用,能夠幫助你理解和選擇機器學習工具。
本地工具是下載、安裝并運行在本地環境的。
專為內存中數據和算法設計。
由運行配置和參數控制。
集成到你自己的系統,以滿足你的需求。
以下是一些本地工具:
面向C++的Shogun Library
遠程工具托管在服務器上,并且可以從本地環境調用。這些工具通常被稱為將機器學習作為服務(MLaaS)。
專為運行更大規模數據設計。
在多系統,多核心和共享內存上運行。
為適應大規模系統,所以服務提供的算法更少。
更簡單的接口,在運行配置和算法參數上提供較少的控制。
通過遠程過程調用集成到你本地環境中。
以下是一些遠程工具:
Microsoft Azure Machine Learning。
參考文章:
機器學習API Top 10:AT&T Speech、IBM Watson和Google Prediction
也有一些工具可以讓你建立自己的遠程解決方案,并作為服務集成到你的本地環境中。比如:
在這篇文章中,你了解到了為什么工具在應用機器學習中很重要。你了解到,沒有良好的機器學習工具,你就必須從無到有實現所有的技術,而這需要專業技術知識和高效工程實踐。
你學習到了三種結構化看待機器學習工具的方式:
平臺 VS 庫
圖形化用戶界面 VS 命令行界面 VS 應用程序編程接口
本地工具 VS 遠程工具
你在使用什么機器學習工具呢?歡迎評論并分享你正在使用的機器學習工具。
作者簡介:Jason Brownlee,MachineLearningMastery.com的Editor-in-chief,專業程序員,機器學習踐行者。