芥末堆芥末堆

如何使用Amazon Machine Learning構(gòu)建機(jī)器學(xué)習(xí)預(yù)測(cè)模型

  發(fā)布時(shí)間:

如何使用Amazon Machine Learning構(gòu)建機(jī)器學(xué)習(xí)預(yù)測(cè)模型

  發(fā)布時(shí)間:

摘要: 本月上旬,AWS宣布推出亞馬遜機(jī)器學(xué)習(xí)服務(wù)(Amazon Machine Learning),聲稱(chēng)這項(xiàng)新的AWS服務(wù)來(lái)自于亞馬遜內(nèi)部的數(shù)據(jù)科學(xué)家用于創(chuàng)建機(jī)器學(xué)習(xí)模型的技術(shù),可以幫助你使用你所收集到的所有數(shù)據(jù)來(lái)提高你決策的質(zhì)量。

本月上旬,AWS宣布推出亞馬遜機(jī)器學(xué)習(xí)服務(wù)(Amazon Machine Learning),聲稱(chēng)這項(xiàng)新的AWS服務(wù)來(lái)自于亞馬遜內(nèi)部的數(shù)據(jù)科學(xué)家用于創(chuàng)建機(jī)器學(xué)習(xí)模型的技術(shù),可以幫助你使用你所收集到的所有數(shù)據(jù)來(lái)提高你決策的質(zhì)量。你可以使用大量數(shù)據(jù)來(lái)建立并微調(diào)預(yù)測(cè)模型,然后大規(guī)模使用亞馬遜機(jī)器學(xué)習(xí)進(jìn)行預(yù)測(cè)(在批處理模式下或者在實(shí)時(shí)模式下)。即使沒(méi)有統(tǒng)計(jì)學(xué)高級(jí)文憑或者對(duì)于建立、運(yùn)行、維護(hù)你自己的處理和存儲(chǔ)基礎(chǔ)架構(gòu)不熟悉,你也能從機(jī)器學(xué)習(xí)中受益。AWS首席布道者Jeff Barr撰寫(xiě)了一篇博文,一步一步地介紹了如何使用亞馬遜機(jī)器學(xué)習(xí)服務(wù)構(gòu)建預(yù)測(cè)模型。

機(jī)器學(xué)習(xí)基礎(chǔ)

為了從機(jī)器學(xué)習(xí)中受益,你需要有一些可以用于訓(xùn)練的現(xiàn)有數(shù)據(jù)。把訓(xùn)練數(shù)據(jù)想象成數(shù)據(jù)庫(kù)或電子表格的行是有一定幫助的。每一行代表一個(gè)單獨(dú)的數(shù)據(jù)元素(一個(gè)購(gòu)買(mǎi),一次發(fā)貨,或者一個(gè)目錄項(xiàng))。列表示該元素的屬性:客戶(hù)郵政編碼,購(gòu)買(mǎi)價(jià)格,信用卡類(lèi)型,項(xiàng)目的大小,等等。

該訓(xùn)練數(shù)據(jù)必須包含實(shí)際結(jié)果的例子。例如,用行代表完成的交易,不論是合法還是欺詐,每一行必須包含一列作為目標(biāo)變量來(lái)表示結(jié)果。這個(gè)數(shù)據(jù)是用來(lái)創(chuàng)建一個(gè)機(jī)器學(xué)習(xí)模型,當(dāng)給擬議中的交易提交新數(shù)據(jù)時(shí)將返回有關(guān)其有效性的預(yù)測(cè)。亞馬遜機(jī)器學(xué)習(xí)支持三種不同類(lèi)型的預(yù)測(cè):二元分類(lèi),多類(lèi)分類(lèi)和回歸分析。讓我們來(lái)看看每一個(gè):

二元分類(lèi)用于預(yù)測(cè)兩種可能的結(jié)果中的一個(gè)。這是合法的交易嗎?客戶(hù)將購(gòu)買(mǎi)此產(chǎn)品嗎?送貨地址是公寓大樓嗎?

多類(lèi)分類(lèi)用于預(yù)測(cè)三個(gè)或更多可能的結(jié)果中的一個(gè),以及每一個(gè)的可能性。這件產(chǎn)品是關(guān)于服裝的一本書(shū),一部電影,還是一篇文章?這部電影是喜劇片,紀(jì)錄片,還是驚悚片?哪一類(lèi)產(chǎn)品讓這個(gè)客戶(hù)最感興趣呢?

回歸分析被用于預(yù)測(cè)一個(gè)數(shù)字。庫(kù)存應(yīng)放置多少27寸顯示器?我們應(yīng)該為此花費(fèi)多少錢(qián)呢?其中有百分之多少有可能作為禮品出售?

一個(gè)適當(dāng)培訓(xùn)和調(diào)整過(guò)的模型可以用來(lái)回答上述問(wèn)題之一。在某些情況下,使用相同的訓(xùn)練數(shù)據(jù)來(lái)建立兩個(gè)或兩個(gè)以上的模型是合適的。

你應(yīng)該計(jì)劃著花費(fèi)一些時(shí)間來(lái)豐富你的數(shù)據(jù),以確保它能很好的匹配你的訓(xùn)練過(guò)程。舉個(gè)簡(jiǎn)單的例子,你可能會(huì)以基于郵政編碼的位置數(shù)據(jù)開(kāi)始。經(jīng)過(guò)一番分析,你很可能發(fā)現(xiàn)你可以使用包含或大或小的分辨率不同的位置表示來(lái)提高結(jié)果的質(zhì)量。機(jī)器學(xué)習(xí)的訓(xùn)練過(guò)程是反復(fù)的,你需要明確的計(jì)劃來(lái)花一些時(shí)間了解和評(píng)估你最初的結(jié)果,然后用它們來(lái)充實(shí)你的數(shù)據(jù)。

你可以利用提供給你的一組性能指標(biāo)來(lái)衡量你的每個(gè)模型的質(zhì)量。例如,曲線(xiàn)下面積(AUC)標(biāo)準(zhǔn)顯示了二元分類(lèi)的性能。這是在0.0到1.0范圍內(nèi)的一個(gè)浮點(diǎn)值,它表示了模型每隔多久在沒(méi)訓(xùn)練過(guò)的數(shù)據(jù)上預(yù)測(cè)結(jié)果。隨著模型質(zhì)量的上升,數(shù)值從0.5上升到1.0。0.5的值不比隨機(jī)猜測(cè)要好,而0.9在大多數(shù)情況下是一個(gè)很好地模型數(shù)據(jù)。但是0.9999的數(shù)值太過(guò)于好而讓人難以相信,并且這個(gè)值可能意味著訓(xùn)練數(shù)據(jù)出現(xiàn)了問(wèn)題。

當(dāng)你建立你的二進(jìn)制預(yù)測(cè)模型時(shí),你將需要花一些時(shí)間觀(guān)察結(jié)果并且調(diào)整截止值。它代表該預(yù)測(cè)是正確的概率;在特定情況下,你可以根據(jù)假陽(yáng)性(預(yù)測(cè)應(yīng)該是假的,但被預(yù)測(cè)為真)和假陰性(預(yù)測(cè)應(yīng)該是真實(shí)的,但被預(yù)測(cè)為假)的相對(duì)重要性將值調(diào)整高或者低。如果你正在為電子郵件建設(shè)一個(gè)垃圾郵件過(guò)濾器,假陰性會(huì)將垃圾郵件投遞到你的收件箱中,而假陽(yáng)性會(huì)將你的合法郵件丟棄到垃圾文件夾中。在這種情況下,假陽(yáng)性是不理想的。假陽(yáng)性和假陰性之間的權(quán)衡是要依賴(lài)于你的業(yè)務(wù)問(wèn)題以及你打算如何在生產(chǎn)中利用該模型。

亞馬遜機(jī)器學(xué)習(xí)實(shí)操

利用AWS Machine Leaning API,開(kāi)發(fā)人員能夠在Amazon RDS中創(chuàng)建新的模型,利用來(lái)自Amazon S3、Amazon Redshift或者M(jìn)ySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)。讓我們漫步在創(chuàng)建一個(gè)模型的過(guò)程中,并且按照亞馬遜機(jī)器學(xué)習(xí)開(kāi)發(fā)人員教程部分中描述的步驟來(lái)產(chǎn)生一些預(yù)測(cè)。你可以注冊(cè)亞馬遜機(jī)器學(xué)習(xí),然后如果你愿意的話(huà)你可以按照向?qū)е械牟襟E來(lái)使用。該指南使用一個(gè)略有增強(qiáng)的副本,該副本是來(lái)自加州大學(xué)歐文分校的機(jī)器學(xué)習(xí)庫(kù)的可公開(kāi)獲得的營(yíng)銷(xiāo)銀行的數(shù)據(jù)集。我們即將完成的模型將回答“用戶(hù)將要訂閱我們的新產(chǎn)品嗎?”

我下載了banking.csv的副本,并將它上傳到亞馬遜的簡(jiǎn)單存儲(chǔ)服務(wù)(S3),然后同意讓控制臺(tái)添加一個(gè)IAM策略,從而使亞馬遜機(jī)器學(xué)習(xí)可以訪(fǎng)問(wèn)它:

然后,我通過(guò)參考存儲(chǔ)桶中的項(xiàng)目創(chuàng)建一個(gè)亞馬遜機(jī)器學(xué)習(xí)數(shù)據(jù)源對(duì)象并為對(duì)象提供一個(gè)名稱(chēng)。這個(gè)對(duì)象包含的數(shù)據(jù)的位置,變量名稱(chēng)和類(lèi)型,所述目標(biāo)變量的名稱(chēng),以及對(duì)每個(gè)變量的描述性統(tǒng)計(jì)。大多數(shù)亞馬遜機(jī)器學(xué)習(xí)的運(yùn)作引用數(shù)據(jù)源。以下是我設(shè)置好一切:

亞馬遜機(jī)器學(xué)習(xí)還可以從Amazon Redshift或Amazon RDS MySQL數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)數(shù)據(jù)源。選擇上面所示的Amazon Redshift方案就給了我進(jìn)入我的Amazon Redshift集群的名稱(chēng),以及數(shù)據(jù)庫(kù)名,訪(fǎng)問(wèn)憑據(jù)和SQL查詢(xún)的選擇。機(jī)器學(xué)習(xí)API可用于從一個(gè)Amazon RDS中為MySQL數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)數(shù)據(jù)源。

亞馬遜機(jī)器學(xué)習(xí)打開(kāi)并且掃描文件,為變量類(lèi)型做了一個(gè)猜測(cè),然后提出了以下的方案:

在這種情況下,所有的猜測(cè)都是正確的。如果他們不都正確,我可以選擇一行或多行,點(diǎn)擊更改類(lèi)型來(lái)修復(fù)它們。

因?yàn)槲覍⑹褂脭?shù)據(jù)源創(chuàng)建和評(píng)估一個(gè)ML模式,我需要選擇訓(xùn)練變量。在這組數(shù)據(jù)集中,訓(xùn)練變量(Y)具有二進(jìn)制數(shù)據(jù)類(lèi)型,所以從中產(chǎn)生的模型將采用二元分類(lèi)。

在很多次點(diǎn)擊之后我已經(jīng)準(zhǔn)備好創(chuàng)建數(shù)據(jù)源:

一兩分鐘后我的數(shù)據(jù)源準(zhǔn)備好了:

正如我之前暗示的,你可以通過(guò)更多地了解你的數(shù)據(jù)來(lái)提高你的模型。亞馬遜機(jī)器學(xué)習(xí)控制臺(tái)為你提供了多種不同的工具,你可以用它們來(lái)了解更多信息。例如,你可以在一個(gè)數(shù)據(jù)源中觀(guān)察任何變量值的分布。這里是我在自己的數(shù)據(jù)源中觀(guān)察年齡變量所看到的:

下一步是創(chuàng)建我的模型:

我選擇使用默認(rèn)設(shè)置。亞馬遜機(jī)器學(xué)習(xí)中默認(rèn)使用70%的數(shù)據(jù)用于訓(xùn)練,30%的數(shù)據(jù)用于評(píng)估:

如果我選擇自定義選項(xiàng),我早就有機(jī)會(huì)定制“秘方”,亞馬遜機(jī)器學(xué)習(xí)使用它從數(shù)據(jù)源轉(zhuǎn)換和處理數(shù)據(jù):

在很多次點(diǎn)擊之后,亞馬遜機(jī)器學(xué)習(xí)開(kāi)始創(chuàng)建我的模型。短暫休息之后,我的模型已經(jīng)整裝待發(fā):

我快速瀏覽了一下性能指標(biāo):

為了選擇最好的客戶(hù)(那些最有可能進(jìn)行購(gòu)買(mǎi)的),我點(diǎn)擊了調(diào)整分?jǐn)?shù)閾值并且提升了截止值,使得只有5%的數(shù)據(jù)被期待能夠通過(guò),并將Y賦予預(yù)測(cè)值“1”:

有了這個(gè)設(shè)定,只有1.3%的預(yù)測(cè)將是假陽(yáng)性,22%會(huì)出現(xiàn)假陰性,77%將是正確的預(yù)測(cè)。我選擇了把假陽(yáng)性變得稀少,并決定把截止值設(shè)置高,以避免它們。在商業(yè)上,這個(gè)設(shè)置讓我避免給“錯(cuò)誤”的客戶(hù)發(fā)送昂貴的宣傳資料。

隨著我的模型的建立,現(xiàn)在我可以用它來(lái)創(chuàng)建批處理預(yù)測(cè)(記得亞馬遜機(jī)器學(xué)習(xí)支持批處理和實(shí)時(shí)預(yù)測(cè))。批處理模式允許我同時(shí)為一組觀(guān)察結(jié)果產(chǎn)生一系列的預(yù)測(cè)。我從菜單開(kāi)始:

我使用入門(mén)指南推薦的文件創(chuàng)建了另一個(gè)數(shù)據(jù)源。這個(gè)文件,不像第一個(gè),不包含Y變量的值。

然后,我選擇一個(gè)位置(在S3中)來(lái)存儲(chǔ)預(yù)測(cè)結(jié)果,回顧我的選擇,并開(kāi)始批量預(yù)測(cè):

再經(jīng)過(guò)短暫的花園旅行,我的預(yù)測(cè)已經(jīng)完成了!我從存儲(chǔ)桶里下載了文件,將它解壓縮,這里是我所看到的:

行對(duì)應(yīng)于那些在原始文件中的。第一個(gè)值是預(yù)測(cè)變量Y(通過(guò)與我建立模型時(shí)設(shè)立的截止值進(jìn)行比較計(jì)算得出),第二個(gè)是實(shí)際得分。如果我已經(jīng)包含了行標(biāo)識(shí)符,每個(gè)預(yù)測(cè)將包括一個(gè)獨(dú)特的“主鍵”,它將幫助我將結(jié)果返回源數(shù)據(jù)。

如果我正在建立一個(gè)實(shí)時(shí)的應(yīng)用程序,并且我需要生成預(yù)測(cè)作為“請(qǐng)求-響應(yīng)”循環(huán)的一部分,我可以讓實(shí)時(shí)預(yù)測(cè)模型這樣實(shí)現(xiàn):

實(shí)時(shí)預(yù)測(cè)實(shí)現(xiàn)后,我可以寫(xiě)代碼來(lái)調(diào)用亞馬遜機(jī)器學(xué)習(xí)的預(yù)測(cè)功能。這里是一些Java代碼用于檢索與ML模型(化代碼中的ML模型)相關(guān)聯(lián)的元數(shù)據(jù),在元數(shù)據(jù)中查找服務(wù)端點(diǎn),進(jìn)行實(shí)時(shí)預(yù)測(cè),并將結(jié)果顯示:

AmazonMachineLearningClient client = new AmazonMachineLearningClient();

GetMLModelRequest modelRequest = new GetMLModelRequest()

.withMLModelId(mlModelId);

GetMLModelResult model = client.getMLModel(modelRequest);

String predictEndpoint = model.getEndpointInfo().getEndpointUrl();

PredictRequest predictRequest = new PredictRequest()

.withMLModelId(mlModelId)

.withPredictEndpoint(predictEndpoint)

.withRecord(record);

PredictResult prediction = client.predict(predictRequest);

System.out.println(prediction);

該代碼會(huì)輸出類(lèi)似這樣的結(jié)果:

{Prediction: {PredictedLabel: 0,PredictedScores: {0=0.10312237},Details: {PredictiveModelType=BINARY, Algorithm=SGD}}}

這意味著,ML模型類(lèi)型是二進(jìn)制分類(lèi),預(yù)測(cè)的得分為0.10312237,并且根據(jù)與模型相關(guān)聯(lián)的預(yù)測(cè)閾值,當(dāng)代碼運(yùn)行時(shí)預(yù)測(cè)響應(yīng)為“0”。

查看我們的機(jī)器學(xué)習(xí)樣本,尋找一些示例代碼(Python和Java)用于進(jìn)行有針對(duì)性的營(yíng)銷(xiāo)、社交媒體監(jiān)測(cè)和移動(dòng)預(yù)測(cè)。

定價(jià)

亞馬遜機(jī)器學(xué)習(xí)現(xiàn)已在美國(guó)東部(弗吉尼亞州北部)上市,價(jià)格還是按需付費(fèi):

數(shù)據(jù)分析、模型訓(xùn)練和模型評(píng)估將花費(fèi)0.42美元/小時(shí);

批處理預(yù)測(cè)將耗資0.10美元/1000預(yù)測(cè),四舍五入到下一個(gè)1000;

實(shí)時(shí)預(yù)測(cè)耗資0.10美元/1000預(yù)測(cè)加上按小時(shí)預(yù)留流量收費(fèi),即為你的模型配置的每10M內(nèi)存需花費(fèi)0.001美元/小時(shí)。在模型的創(chuàng)建中,你可以指定每個(gè)模型的最大內(nèi)存大小來(lái)管理成本和控制預(yù)測(cè)性能;

存儲(chǔ)在S3,Amazon RDS和Amazon Redshift中的數(shù)據(jù)是分開(kāi)計(jì)費(fèi)的。

歡迎關(guān)注微信公眾號(hào)CSDN大數(shù)據(jù)(csdnbigdata)

1、本文是 芥末堆網(wǎng)轉(zhuǎn)載文章,原文來(lái)自于互聯(lián)網(wǎng);
2、芥末堆不接受通過(guò)公關(guān)費(fèi)、車(chē)馬費(fèi)等任何形式發(fā)布失實(shí)文章,只呈現(xiàn)有價(jià)值的內(nèi)容給讀者;
3、如果你也從事教育,并希望被芥末堆報(bào)道,請(qǐng)您 填寫(xiě)信息告訴我們。
來(lái)源: 互聯(lián)網(wǎng)
芥末堆商務(wù)合作:王老師 18710003484
  • 如何使用Amazon Machine Learning構(gòu)建機(jī)器學(xué)習(xí)預(yù)測(cè)模型分享二維碼