1. 程式人生 > >不可錯過的精彩回顧:6種雲機器學習服務

不可錯過的精彩回顧:6種雲機器學習服務

原文連結:Review: 6 machine learning clouds
作者:Martin Heller
譯者:郭芮,關注大資料領域,尋求報道或投稿請發郵件[email protected]

Amazon,Microsoft,Databricks,Google,HPE和IBM的機器學習工具在廣度、深度及易用性上都具備優勢。

圖片描述
圖源:Shutterstock

機器學習具有多種形式,其中最純粹的一種可以為分析師提供一組資料探索工具、ML模型選擇、穩健的解決方案以及將此方案用於預測的使用方法。

然而,並不是所有的機器學習問題都必須從頭開始解決。有些問題可以用在一個足夠大的樣本中,通過訓練使其廣泛適用。例如,“canned”方案就能夠有效解決語音識別、語音合成、文字分析及人臉識別中存在的問題。不用驚奇,許多雲機器學習提供商都會利用一個API,讓開發者在應用程式內能實現這些功能。

這些功能可以識別美式英語口語(和其他一些語言)並將其轉錄。但對於給定的說話者而言,給定的服務能否奏效將取決於他的方言和口音,以及該服務在類似方言和口音上的受訓程度。Microsoft Azure,IBM,Google和Haven On Demand都啟動了語音識別服務。

機器學習也存在多種問題。例如,迴歸問題試圖從觀察結果中預測一個連續變數(例如銷售情況),分類問題試圖通過一組給定的觀測值預測種類(例如垃圾郵件)。但是仍然有一些相對完整的工具包,像Amazon,Microsoft,Databricks,Google,HPE和IBM所提供的工具,就可以用來解決一系列的機器學習問題。

本文將簡要地介紹六個商業機器學習方案,還會貼出五個完整實驗結果。不幸的是,Google三月份所宣佈的——基於雲端計算的機器學習工具和應用程式,還沒能使Google Cloud Machine Learning達到公共可用的程度。

Amazon Machine Learning

Amazon一直致力於研究大眾化的機器學習平臺,用來服務那些熟悉業務問題的分析人員,無論他們是否理解資料科學或機器學習演算法。

一般來說,要使用Amazon Machine Learning需要經過三個步驟:首先,在S3中清理和上傳CSV格式資料;然後,建立、訓練和評估ML模型;最後,建立批處理或實時預測。每一步都是迭代的,在整個過程中也同樣如此。所以機器學習並不是一個簡單、靜態的萬能藥,即使Amazon已經實現了演算法優選。

Amazon Machine Learning支援三種模型:二元分類、多級分類和迴歸——一個演算法適用一種型別。為了優化,Amazon Machine Learning使用SGD(Stochastic Gradient Descent),將多個連續的訓練資料進行傳遞,並更新功能權重使之成為小批量格式,讓損失函式最小化。損失函式反映了實際值和預測值之間的區別,而且梯度下降優化方法只適用於連續、可微的損失函式,例如物流損失函式和平方損失函式。

  • Amazon Machine Learning將邏輯迴歸(物流損失函式+SGD)用於二元分類。

  • Amazon Machine Learning將多項邏輯迴歸(多項物流損失函式+SGD)用於多級分類。

  • Amazon Machine Learning將線性迴歸(平方損失函式+SGD)用於迴歸。

圖片描述
在使用Amazon Machine Learning訓練和評估二元分類模型後,可以選擇分數閾值來實現想要的錯誤率。這裡在預設0.5的閾值上有所增加,就可以生成一套更強的引線,有利於更快達到營銷和銷售目的。

Amazon Machine Learning決定了機器學習是任務解決型而不是目標資料型。例如,預測數值目標變數的問題,意味著迴歸;預測非數字目標變數的問題時,如果只有兩個目標就是二元分類,如果有兩個以上則是多級分類。

Amazon Machine Learning的選擇功能通過食譜來進行。一旦描述性統計被計算成為資料來源,Amazon就會建立一個預設的食譜,使用者可以選擇繼續使用也可以利用機器學習模型覆蓋相關資料。

一旦有了滿足評估要求的模型,就可以用它來建立實時Web服務或是生成一系列預測。但要記住,和物理常數不同的是,人們的行為會隨著時間推移而發生變化。這就要求使用者定期檢查模型的預測精度指標,並根據需要重新訓練。

Azure Machine Learning

與Amazon相比,Microsoft致力於服務那些有經驗的資料科學家們,為他們提供一套完整多樣化的演算法和工具。因此,Azure Machine Learning是Microsoft Cortana Analytics Suite提供的主要內容。另外,Azure Machine Learning還具有拖放介面功能,用於構造、訓練模型及從模組中評估資料流。

Azure Machine Learning Studio裝置齊全,可以用於匯入資料集、訓練和釋出實驗模型、以Jupyter Notebooks處理資料及儲存受訓模型。同時,它還包含了很多樣本資料集、五種可轉換的資料格式、多種讀寫資料的方式、多個數據轉換和三個選擇特性。Azure Machine Learning提供了多種模型,能夠用於異常檢測、分類、聚類和迴歸,而且還列舉了四種獲取模型的方法、三種評估模型的策略和六種訓練模型的流程。另外,利用幾個OpenCV(Open Source Computer Vision)模組還可以進行功能統計和文字分析。

Azure Machine Learning提供了很多東西,只要熟知業務、資料和模型,理論上就足以支援使用者在所有的模型中處理任意型別資料。當然,如果一般的Azure Machine Learning Studio模組達不到使用要求,使用者也可以開發Python或者R模組。

使用者可以使用Jupyter Notebooks來開發測試Python 2、Python 3 模組,還可以藉助Azure Machine Learning Python客戶端庫(使用Azure中的資料)、scikit-learn、matplotlib及NumPy進行擴充套件。Azure Jupyter Notebooks未來還將支援R語言。那麼現在,就可以使用本地RStudio,之後如果有需要的話還能夠改變Azure的輸入輸出,或是在Microsoft Data Science VM中安裝RStudio。

如果要在Azure Machine Learning Studio中著手新的實驗,可以從頭開始也可以從涵蓋了最常見模型的70個Microsoft樣本中進行選擇。另外,在Cortana Gallery中還有額外的社群內容可供參考。

圖片描述
Azure Machine Learning Studio能快速生成Web服務,用來發布訓練有素的工作模型。這個簡單的模型來自Azure Machine Learning五個互動步驟說明。

CAP(Cortana Analytics Process)要從步驟計劃及設定開始,這一點至關重要,除非使用者是一個數據訓練科學家,熟知業務問題、資料和Azure Machine Learning的同時,還能夠創建出用於專案的必要CAP環境。合理的CAP環境包括有:一個Azure儲存賬戶,一個Microsoft Data Science VM,一個HDInsight(Hadoop)叢集,以及一個使用Azure Machine Learning Studio的機器學習工作區。如果無法做出抉擇,也沒有必要選擇所有的Microsoft文件。CAP的執行需要五個處理步驟:攝入、探索性資料分析和預處理、特徵建立、模型建立和模型部署及消費。

Microsoft最近釋出了一組從Project Oxford中“畢業”的認知服務,該服務能夠提供Azure預覽。所以所做的這些預先訓練,都是為了服務於演講、文字分析、人臉識別、情感識別及其他類似功能,另外補充一點,使用者還可以通過訓練自己的模型達到想要的要求。

Databricks

Databricks是一個基於Apache Spark的商業性雲服務平臺。Spark,是一個開源叢集計算框架,包括機器學習庫、叢集管理器、類Jupyter的互動筆記本、儀表板和作業預定。Databricks(作公司)是由建立Spark的人所成立的,有了Databricks(作服務)後,Spark發展顯著加快且Spark叢集不斷向外擴充套件。

MLlib庫包括更廣泛的機器學習和統計演算法,為基於記憶體的分散式Spark體系結構特別設計。MLlib主要實現的功能有:彙總統計、相關性、抽樣、假設檢驗、分類和迴歸、協同過濾、聚類分析、降維、特徵提取和函式轉換,以及演算法優化。換句話說,對於有經驗的資料科學家們而言這是一個相當完整的工具包。

圖片描述
這是使用Python程式碼的Databricks筆記,展示了一種分析公共自行車租賃資料集的方法。這部分的筆記是用交叉驗證器訓練管道,並執行多個Gradient-Boosted Tree迴歸。

Databricks被設計成一個可伸縮、相對簡單易用的資料科學平臺,服務於那些瞭解統計學和會做一點程式設計的人。想要有效使用它,需要知道一些SQL和Scala,R,或Python知識。如果能熟練使用所選擇的程式語言就更好了,一旦在免費的Databricks Community Edition叢集上開始執行Databricks筆記樣本,就可以集中精力學習Spark。

圖片描述

Google Cloud Machine Learning

Google最近公佈了許多機器學習相關產品,其中最有趣的應該是Cloud Machine Learning和Cloud Speech API,目前都處於有限預覽階段。Google Translate API可以執行語言識別,翻譯超過80種語言及其變體,Cloud Vision API可以識別多種影象特徵,並且這兩者都是可供使用的——基於Google演示的它們看起來都不錯。

Google Prediction API能夠訓練、評估、預測迴歸和分類問題,但是在演算法使用上沒有選擇性,這可以追溯到2013年。

目前Google的機器學習技術——Cloud Machine Learning Platform,使用Google開源TensorFlow庫進行訓練和評估。TensorFlow由Google Brain團隊開發,是一個利用資料流圖為數值計算提供服務的通用庫,整合了Google Cloud Dataflow、Google BigQuery、Google Cloud Dataproc、Google Cloud Storage及Google Cloud Storage多種資源。

使用前,需要從GitHub庫中檢索TensorFlow並讀取部分C,C++和Python程式碼,然後仔細研究TensorFlow.org網站和TensorFlow白皮書。在桌面、伺服器或是移動裝置中,TensorFlow都可以將計算指令部署到CPUs 或GPUs裡,無論是一個還是多個。同時,它還在其中建立了各種各樣的訓練和神經網路演算法。在總分10分的情況下,它的使用難度可以高達9分。因為它不僅超出了業務分析師的能力,對於許多資料科學家而言可能也很難。

Google Translate API,Cloud Vision API和新型的Google Cloud Speech API都是預先訓練的ML模型。據Google表示,Cloud Speech API使用相同的神經網路技術,支援Google應用中的語音搜尋和Google Keyboard中的語音輸入。

HPE Haven OnDemand

Haven OnDemand是HPE進入雲機器學習領域的冒險之舉,主要提供企業搜尋和格式轉換服務。所以毫無意外的,在這個基於IDOL的服務建立之後立馬成為了HPE的私人搜尋引擎,然而Haven OnDemand更有趣的功能還沒有完全成熟。

Haven OnDemand目前擁有的API類別包括:Audio-Video Analytics,Connectors,Format Conversion,Graph Analysis,HP Labs Sandbox (實驗性API),Image Analysis,Policy, Prediction,Query Profile and Manipulation,Search,Text Analysis,以及Unstructured Text Indexing。在實驗中利用了一個隨機集來探索如何呼叫和使用API。

Haven OnDemand的語音識別只能支援六種語言及其語言變體。在實驗中,高質量U.S. English的檔案識別精度還是OK的,但並不完美。

Haven OnDemand Connectors允許使用者從外部系統檢索資訊和通過Haven OnDemand APIs進行更新,因為是IDOL聯結器的原因目前已相當成熟。另外,Text Extraction API可以使用HPE KeyView從使用者提供的檔案中提取元資料和文字內容,API還能利用構建成熟的KeyView處理500多種不同的檔案格式。

Graph Analysis是一組預覽服務,只適用於索引English Wikipedia,不能在其他資料上進行訓練。

下面的例子中利用Image Analysis群組試驗了條形碼識別,結果顯示良好,但在臉部識別上還是HPE的樣品測驗效果更好。目前,影象識別還是被限制在固定企業標識上,效用有限。

圖片描述
Haven OnDemand條形碼識別API可以從影象檔案中隔離條形碼(見紅框中內容),並將其轉換為一個數字,即使條形碼在約20度的曲面上或是模糊不清的,另外API並不會執行查詢條形碼編號或標識產品這些額外的步驟。

令人失望的是,HPE預測分析只處理二元分類問題:多級分類和迴歸問題都不適用,更不用說無引導的學習,這也嚴重限制了其適用性。

從好的方面來看,Train Prediction API能夠自動驗證、探索、分裂、準備CSV或JSON格式資料,然後訓練Decision Tree,Logistic Regression,Naive Bayes,SVM(support vector machine)多引數的二元分類模型。同時,還能測試分類器對評估資料的分類情況,並將其中的最佳模型作為服務釋出出去。

Haven OnDemand Search使用IDOL引擎,對公共和私人文字索引都執行高階搜尋。Text Analysis APIs的使用範圍既包括簡單的自動完成和術語擴充套件,也包括相對複雜的語言識別、概念提取和情感分析。

IBM Watson 和 Predictive Analytics

IBM提供的機器學習服務是基於“Jeopardy”-winning Watson技術和IBM SPSS Modeler所建立的,主要服務物件有三類:開發人員、資料科學家和業務使用者。

SPSS Modeler是一個Windows應用程式,最近還能在雲端使用。Modeler Personal Edition的內容包括有:資料訪問和匯出,自動化資料準備、處理和ETL,30多種機器學習基礎演算法和自動建模,可擴充套件R語言,以及Python指令碼。在價格更高的版本中,通過用於Hadoop/Spark的一個IBM SPSS Analytic Server、支援/激發功能、A / B測試、文字和實體分析,以及社會網路分析這些工具,它還可以獲取大資料。

與Azure Machine Learning和Databricks的Spark.ml相比,SPSS Modeler中的機器學習演算法同樣支援特徵選擇和格式選取,甚至在自動建模(訓練和評估多個模型並從其中挑選最好的)功能上也是類似的,當然比起其他的來說,SPSS Modeler表現更為突出。

IBM Bluemix提供Predictive Analytics Web服務,即應用SPSS模型形成一個評分API,方便使用者從應用程式中呼叫。除了Web服務外,Predictive Analytics還支援批處理作業,利用額外資料重新訓練和評估模型。

Watson列出了18個從Predictive Analytics中分離出來的Bluemix服務。AlchemyAPI提供了一組三個服務(AlchemyLanguage,AlchemyVision,AlchemyData),來幫助企業和開發人員建立可以結合文字影象理解上下文內容的認知型應用程式。

Concept Expansion可以基於上下文,來分析文字並學習類似的詞或短語。Concept Insights則會將文件連線起來,並在Wikipedia話題基礎上提出了預存圖的概念。

Dialog Service允許使用者利用自然語言和簡要使用者資訊來設計應用程式,並且支援其通過會話介面與使用者互動。Document Conversion服務可以將單一的HTML,PDF,HTML或Microsoft Word文件轉換成標準化的HTML、純文字、或者一組JSON-formatted Answer元件,這些還可以與Watson的其他服務結合使用。

圖片描述
圖中用Watson分析了類似的自行車租賃資料集,這只是提供的例子之一。Watson提出了一個決策樹模型,其預測力達48%,但是該工作表並沒有區分工作日和非工作日。

Language Translation在多個知識領域和語言互譯中都發揮著作用。在新聞和對話領域,能夠提供英語與巴西葡萄牙語、法語、現代標準阿拉伯語、西班牙語間的互譯。在專利領域,則可以提供英語與巴西葡萄牙語、漢語、韓語、西班牙語間的互譯。如果純文字是用的62種語言之一書寫的,Translation服務還可以進行識別。

Natural Language Classifier服務在組類、短語中經過訓練後,可以將其認知計算技術用來生成匹配句子、問題或短語的最佳類別。同時,Personality Insights會從交易及社會媒體資料中提取觀點(一個人至少1000字)並識別心理特徵,並以JSON格式輸出特徵樹。Relationship Extraction再通過上下文分析,解析句子內容和檢測內容之間的關係(詞類和功能)。

Bluemix的其他服務提高了搜尋結果的相關性,並提供文字與語音相互轉換的六種語言,同時,還能從文字中識別情感、分析視覺場景及物件。

對於業務分析師和其他非資料科學家的業務人員而言,Watson Analytics使用的IBM自然語言處理使機器學習變得更易使用。

機器學習曲線

機器學習服務的選擇取決於使用者對自身及其團隊的技能評估。對資料科學家和包括資料科學家在內的團隊來說,選擇面很廣,因為擅長程式設計的資料科學家們可以做的更多:比起Amazon和SPSS Modeler這兩者,Google,Azure和Databricks需要更多的程式設計經驗,但同時也更加靈活。

Watson Services在Bluemix上執行,能夠給開發者提供更多用於雲應用程式的預訓練功能,例如進行多個Azure服務、三個Google雲APIs、及一些用於文件內容的Haven OnDemand APIs。

最新的Google TensorFlow庫是為那些能夠流利使用Python,C++,或C的高階機器學習程式設計師提供的;Google Cloud Machine Learning Platform則似乎是為那些瞭解Python及雲資料管道的高階資料科學家們準備的。

然而Amazon Machine Learning和Watson Analytics卻自稱是服務於業務分析師或“任何業務角色”(不管那是什麼意思)的,很懷疑他們能否滿足這些要求。所以,如果在不瞭解統計、數學或程式設計的背景下想要開發機器學習應用程式,最好有個精通此物的人來合作完成。