隨着大數據日新月異的飛速發展,機器學習也變的越來越性感。雲和大數據是天生的一對,那麼雲上的機器學習又是什麼樣呢?我們今天就來看看幾個基於雲的機器學習平臺:亞馬遜,微軟和bigml
亞馬遜機器學習
我們先來看看雲的領軍人物亞馬遜的機器學習平臺 Amazon Machine Learning
首先,要是用亞馬遜的機器學習,你需要有一個AWS的賬號(廢話)。在Analytics服務區域你會找到他的位置:
Machine Learning是AWS的一個相對比較新的功能,所以當前只有EU(愛爾蘭)和美西(弗吉尼亞)兩個domain支持。
選擇Launch啓動機器學習,首先需要一個數據源。創建一個數據源分幾步:
-
輸入數據 input data
輸入的數據源可以來自:用戶可以使用S3上的一個csv文件或者來自Amazon Redshift數據庫
這裏,我在我的S3上放了一個Iris的dataset,Verify後,數據就準備好了。
⚠ Iris Dataset 可能是最著名的數據集 (參見wikipedia的介紹),該數據集包含了三種鳶尾屬植物(什麼鬼?)的50個樣本,該數據包涵植物的花瓣的萼片的長度和寬度的統計。
-
數據模式 schema
在schema這一步,選擇CSV包含name column, (Does the first line in your CSV contain the column names? -> Yes) 結果如下:
-
目標 Target
在Target這一步,選擇一個要預測的目標。
如果選擇了Species,AWS會選擇創建一個分類模型 (multinomial logistic regression)
如果選擇了長度或者寬度屬性,AWS會選擇創建一個迴歸模型 (線性迴歸)
-
Rowid
這一步用戶可以選擇一個rowid
-
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.zdnet.com/article/cloud-machine-learning-wars-heat-up/