在雲上的機器學習

隨着大數據日新月異的飛速發展,機器學習也變的越來越性感。雲和大數據是天生的一對,那麼雲上的機器學習又是什麼樣呢?我們今天就來看看幾個基於雲的機器學習平臺:亞馬遜,微軟和bigml

亞馬遜機器學習

我們先來看看雲的領軍人物亞馬遜的機器學習平臺 Amazon Machine Learning

首先,要是用亞馬遜的機器學習,你需要有一個AWS的賬號(廢話)。在Analytics服務區域你會找到他的位置:

Machine Learning是AWS的一個相對比較新的功能,所以當前只有EU(愛爾蘭)和美西(弗吉尼亞)兩個domain支持。

選擇Launch啓動機器學習,首先需要一個數據源。創建一個數據源分幾步:

  1. 輸入數據 input data

    輸入的數據源可以來自:用戶可以使用S3上的一個csv文件或者來自Amazon Redshift數據庫

    這裏,我在我的S3上放了一個Iris的dataset,Verify後,數據就準備好了。

    ⚠ Iris Dataset 可能是最著名的數據集 (參見wikipedia的介紹),該數據集包含了三種鳶尾屬植物(什麼鬼?)的50個樣本,該數據包涵植物的花瓣的萼片的長度和寬度的統計。

  2. 數據模式 schema

    在schema這一步,選擇CSV包含name column, (Does the first line in your CSV contain the column names?   -> Yes) 結果如下:

  3. 目標 Target

    在Target這一步,選擇一個要預測的目標。

    如果選擇了Species,AWS會選擇創建一個分類模型 (multinomial logistic regression

    如果選擇了長度或者寬度屬性,AWS會選擇創建一個迴歸模型 (線性迴歸)

  4. Rowid

    這一步用戶可以選擇一個rowid

  5. review

    review所有的數據源選項後,數據源就創建成功了

數據源創建成功後,可以對模型做一些設置。

這裏可以選擇缺省的設置。

設置好模型後,AWS會對該模型進行評估(evaluation),需要等一段時間看到結果。

我們不需要等待評估的結果,直接來進行預測。

爲了省事,我們直接使用原始的Iris數據集進行預測(本文的目的只是爲了感受在雲上的機器學習,並非解決實際問題)

選擇Batch Prediction

選擇我們剛剛創建的模型:

選擇Iris數據集來進行預測

選擇一個S3bucket的路徑作爲預測結果的存放,注意,確保機器學習的服務有對該目錄的寫權限。

注意,模型的創建是不收費的,但是預測是收費,這裏AWS提示每1000個預測收費0.1美元。

review後沒有問題,就開始預測了。

在Dashboard裏面可以查看預測的狀態,如果是completed表示預測完成。我們去S3裏面看看預測的結果如何。

在S3裏面我們看到我們之前指定的Bucket裏面多了一個batch-prediction的目錄,該目錄的result目錄下就是預測的結果。我們下載下來看看:

預測的結果是一個文本格式的CSV文件,包含了對每一種結果的預測概率。例如對於第一行的數據,實際是一個setosa,而模型預測是setosa的概率是99.99%。 好像還不錯!

好了,現在我們經歷了AWS 機器學習 創建數據源 -》 建立模型 -》 對指定89數據集做預測的過程,貌似還不錯。


微軟Azure機器學習平臺

如果說AWS是雲行業的number one的話,那麼微軟的Azure的第二名的位子應該也是穩定的很。當然,微軟可不甘心屈居第二,至少在機器學習上,Azure讓我們眼前一亮。( Microsoft Azure Machine Learning

我們試試在Azure上完成同樣的測試吧。

首先,你並不需要有一個Azure的賬號,可以使用微軟賬號或者匿名試用,真是太貼心了。

登陸後的界面是這個樣子,還好了,不算好看,也不算難看。

Azure ML的主要功能菜單有:

  • Experiments (實驗)

  • Web Service (WEB服務)

  • NOTEBOOK (IPython Notebook, 這個功能很贊)

  • Datasets (數據集)

  • Trained Models (已訓練的模型)

  • SETTING (設置)


我們來試驗一下同樣的對Iris數據集的分類預測,是如何在Azure平臺上進行的。

首先還是創建數據源,Azure提供四種數據源,上傳本地文件,來自另一個模塊(MODULE),來自一個實驗(EXPERIMENT)或者一個Notebook。

我們還是上傳本地的Iris的CSV文件,上傳好後,我們選擇一個實驗。

選擇實驗(Experiment)菜單,該功能頁面有兩個Tab頁,我的實驗和樣例,這裏微軟很貼心的準備了許多的例子供你參考。

我們選擇創建一個空的實驗

你會看到以下的界面:

這裏Azure使用了基於流程圖的編程(Flow Based Programming)概念來創建一個實驗。可以把機器學習的過程,直觀的用流程圖的表示和創建,非常的方便。爲了做一個基於Iris數據集的預測模型,我們需要創建如下的一個流程。

注意,在連接數據集到Train Model之後,需要在右側的UI中選擇一個要作爲預測目標的列,launch column selector。在這個例子中,我們還是選擇Species作爲預測目標。

模型建立好後可以保存下來供以後使用。

下面我們開始做預測,我找了半天才找到做預測的模塊。名字叫Score Model

加入預測功能後的流程路如下:

點擊下方的運行按鈕就可以開始預測的計算了。

預測完成後,右鍵點擊Score Model模塊,可以直接以可視化的形式查看結果數據集 (點擊Visualize),這個功能非常方便。

預測的可視化結果如下圖:

預測的分類結果是Scored Labels。同時用戶還可以方便的基於該預測結果的數據集生成不同的圖表:


Azure的Machine Learning 平臺提供了大量的模塊功能,用戶可以用Flow的形式把這些模塊連接成一個計算網絡,實現複雜的機器學習的功能。除了機器學習,這裏列出其中的一些其它的功能:

  • R/Python 可以直接調用Python和R的模塊

  • 圖像處理 Open CV

  • 文本處理 

  • 統計功能

  • 數據變形 Data Transform

  • Web Service API

Azure的機器學習平臺提供非常豐富的機器學習的算法,並且支持R和Python的調用,非常適合數據科學家和程序員使用。而且,免費賬戶的功能也非常的powerful。堪稱業內良心。


BigML

BigML 是提供基於雲的機器學習平臺, 目標是讓機器學習更容易使用。

同樣的我們試用一下如何在BigML上對Iris數據集做預測。

登陸後,先進入Dashboard

創建一個數據源,Sources,選擇上傳CSV文件,上傳好了之後,點擊數據源,顯示如下:

點擊Configure Dataset,將數據源轉換成Dataset

下一步創建模型,BigML提供了很方便的模型創建功能:

我們選擇創建一個模型

BigML會自動選擇Species作爲預測目標。點擊創建模型,注意創建之前,我們需要deselect rowid,因爲rowid與預測無關。

創建好的模型是一個Tree結構分類模型,可以看到每一條預測路徑的信息:

下面我們就可以用這個模型來做預測了:

點擊Predict菜單項,看到如下的預測界面。

這裏很奇怪的是,我明明有四個變量,Tree Model裏也可以看到,爲什麼預測的時候,只能使用其中三個?好了,不關注這些細節,用鼠標滑動改變每一個變量的值,就可以直觀的看到預測的結果。這個界面我給100分!

使用下來,BigML確實比較容易使用,用戶體驗也不錯,值得擁有。

其它

除了這幾家之外,還有其他的一些廠商也提供了在雲上的機器學習,包括Databricks,Google,百度,IBM

Databricks

Databricks這個名字很多人可能不太清楚,然而如果我說Spark,相信大家都是如雷貫耳,2015年大數據領域最火的技術就是Spark了,沒有之一。

Databricks是Spark開發者創辦的公司,提供一個基於Spark的數據雲平臺,

因爲使用需要信用卡綁定,筆者還沒有對該產品進行評估。


Google Prediction API

Googl的Prediction API可能是最早的在提供的雲上的機器學習功能了。它提供了一些場景下的預測功能,包括情感分析,垃圾郵件檢測,推薦系統等等。不過和其他雲平臺比較起來,總覺得google的雲用着不那麼爽。試用賬戶還要綁定信用卡,我也沒有對該產品進行評估。


百度預測

百度基本上是Google有什麼都要來抄一個的,所以如果存在一個Baidu Prediction API,我相信大家不會感覺奇怪。果然,百度有一個百度預測。不過百度預測並不是一個通用的機器學習的平臺,只能做特定領域的,特定數據集的預測。

其中百度的預測開放平臺可以對時間序列的數據進行預測,例如股票(發財了)。

阿里雲數加 機器學習

阿里在去年10月高調發布他的數加平臺,掌聲不斷。

阿里雲的機器學習正處於公測階段。https://data.aliyun.com/product/learn?spm=a2c0j.7906235.devenv.2.7rWRRt

大家有興趣也可以去試用。閱讀了他的快速開始文檔後,我的內心久久的不能平靜,不抄就不會做產品了麼。和Azure ML studio 相似度 76.35%。

阿里機器學習的項目名稱也叫實驗,太專業了,完全保留了Azure的命名風格!

騰訊雲

騰訊作爲國內體量最大的互聯網公司,在雲這一塊自然不能落後。

騰訊雲也有自己的機器學習 TML

這裏是他的幫助文檔

同樣採用了流程圖的方式,開來也許我們錯怪了阿里,用流程圖來建模是機器學習的標準,微軟只是運氣好,帥先實現了該標準而已。

IBM Bluemix

IBM近年來在雲上的投入非常大,新的Bluemix也提供了非常多的功能呢,其中Watson模塊提供了一部分機器學習的功能,但這些功能更多是實現一個更接近用戶的功能,比較多的是自然語言處理相關的功能。

除了以上這些廠商,還有其他的幾個玩家,我就不一一介紹了,有興趣的可以自己去看:


比較和總結

這裏我們對幾個主要的通用機器學習平臺最一個比較和總結:

  AWS Machine Learning Azure Machine Learning BigML
數據源格式 CSV, Redshift CSV CSV,Gziped CSV
數據源存儲 S3 upload from local S3,Google Storage, Google Drive, Azure, Drop Box
數據準備和變形 使用Data Recipes進行數據變形 使用特定的Transformation模塊或者Python/R編程來進行數據變形 只支持簡單的數據變形,例如增加字段,過濾等。
特徵提取 沒有 支持 沒有
機器學習算法 提供基本的分類,迴歸算法,用戶可控部分較少 有非常豐富的算法涵蓋分類,迴歸,聚類,異常檢測。 提供基本的分類,聚類,異常檢測的功能,用戶可選擇的部分較少
其它功能   圖像處理,統計,文本分析  
編程擴展 不支持 Python/R 不支持
可視化功能 基本沒有 可以靈活的對計算過程中的數據進行可視化的展現和分析 以圖(大部分是樹行圖)的形式展現模型
API/SDK Rest API和不同語言的綁定 Web Service Rest API以及各種主要語言的綁定(Python,Java,Nodejs,etc)
價格 基於預測的次數收費,0.1$/1000次預測 免費用戶有10G的是試用空間,真心贊。 標準版每月10$ 免費用戶有16M空間

除了這幾個通用的機器學習的平臺,另外幾個雲上的機器學習也各有特點。Google Prediction API,百度預測,IBM Watson幾個產品也都提供了特定場景下的的機器學習或者預測的功能,如果有這一類的需求,也可以使用。對於Databricks以爲沒有試用,瞭解不多,希望以後能有機會試用。

如果你是一個程序員或者數據科學家,我覺得Azure的Machine Learning Studio是你不二的選擇。他提供了大量的基礎算法,並且支持R/Pyhon的擴展。

如果你對機器學習瞭解不多,希望快速的對已有的數據進行預測,我推薦AWS或者BigML。

如果你是有特定場景的預測要求,可以考慮Google Prediction API,百度預測或者IBM的Watson。


相關鏈接

http://www.infoworld.com/article/3039052/cloud-computing/how-ibm-google-microsoft-and-amazon-do-machine-learning-in-the-cloud.html 

http://www.zdnet.com/article/cloud-machine-learning-wars-heat-up/ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章