本文章是由機器翻譯。

Microsoft Azure

Machine Learning Studio 簡介

James McCaffrey

下載代碼示例

沒有一致的協定上到底什麼詞"機器學習"(毫升) 的手段。在我心中,ML 是任何系統,使用資料來説明做出預測。例如,您可能想要預測誰會贏得超級碗,或哪一組 (群集) 的人一個新的客戶將最相似。

從零開始使用 C# 或其他任何程式設計語言書寫毫升系統令人著迷,但它很耗時,需要具備專業的知識,常是困難的。新的微軟 Azure 毫升工作室 (2014 年七月發佈) 使得創建毫升系統更容易、 更快、 更高效。在這篇文章中,我將帶您通過一個完整的示例,將讓你建立和運行以毫升工作室。

看到這篇文章將走向何方是的最好方法是檢查螢幕擷取畫面中的圖 1。該圖像顯示已完成的 ML 工作室實驗。該實驗的目的是預測美國成員政治黨派 (民主黨人或共和黨人) 眾院基於以前的投票行為。

完整蔚藍毫升工作室實驗
圖 1 完整蔚藍毫升工作室實驗

在圖像的頂部,請注意毫升工作室運行在 Internet explorer 中 — — 它是一個基於 Web 的應用程式。更多規格­巧毫升工作室是微軟 Azure 機器學習服務的前端。從這裡開始,為簡單起見,我將使用"毫升工作室"一詞來指這兩個用戶端前端和 Azure 回來結束。在網址列中,您可以看到我使用一個內部 URL"passau.cloupapp.net"。在發展中,毫升工作室專案是代號為"帕紹",你可能會碰到這個詞在文檔中。你讀這篇文章的時候的公用 URL 為毫升工作室將發售 azure.microsoft.com

使用 ML 工作室創建毫升系統是大致類似于使用Visual Studio來創建可執行程式,但你不應該太過得意忘形,這一概念。若要使用Visual Studio,可以購買該工具,或者可以使用免費的試用版。毫升的工作室,你負責對使用這項服務,但會免費試行這一制度的方法。確切的細節都一定會頻繁改變 — — 不斷變化是一個重大的缺點,在我看來,與基於雲計算的系統工作。我喜歡在我的桌上型電腦上安裝的產品也完全是我的決定的任何更改。在雲計算的勇敢新世界,你必須準備,改變不再是完全在你控制下的工作環境。

毫升工作室有三個主要工作領域。在左邊你可以看到專案的名字,如保存資料集、 資料輸入和輸出和機器學習。這些都是類別,如果你擴展它們,你看到可以拖到中心設計曲面的具體專案。這是有點類似于Visual Studio工具箱中,在那裡可以將所需的 UI 控制項拖動到設計介面上。然而,毫升工作室模組通常代表什麼你能想到的方法 — — 那就是,預先編寫執行某種形式的 ML 任務的代碼。

毫升工作室中心地區被稱為實驗。這是類似于Visual Studio編輯器 — — 你做你的大部分工作的地方。在圖 1,實驗題為投票實驗。實驗題目是大致類似于Visual Studio解決方案名稱。矩形框是被拖動到設計介面上的模組。例如,標記為"投票資料"的模組是原始資料來源,同時標記為"後勤回歸二元分類模型"(標籤部分切掉) 的模組是使用的核心 ML 演算法。

弧形的線條建立輸入-­輸出模組之間的流動。老實說,我作為一名開發人員的第一印象並不完全積極:"哦偉大。彎曲的線條。我不喜歡曲線。那不是真正程式設計。"但它沒有帶我長適應毫升工作室視覺樣式的創建系統,而現在我是一個信徒。

毫升工作室的右側顯示詳細說明是什麼­曾經當前選定在主要工作區。在圖 1,因為選定邏輯斯蒂回歸二元分類模型模組 (其邊框是粗體) 中的右側的區域,例如"優化容忍",與 1.0E 的值的資訊-07,具體指的是該模組。你能想到的右側的區域中作為參數值 (或等價地,參數值,取決於你的觀點) 的每個進行選定的模組的資訊。

您可以通過點擊位於底部的工具的運行圖示運行實驗。這是某種程度上相當於打Visual Studio在調試器中執行程式中的 F5 鍵。每個模組完成,毫升工作室將顯示模組內部的綠色的核取記號。您還可以看到一個保存圖示,但預設情況下,毫升工作室會自動儲存你的實驗每隔幾秒鐘 — — 在雲工作可以是危險一樣滴落的網路連接問題。

以下各節將,,我將帶您通過實驗建立圖 1 這樣你可以複製它。這樣做會給你一個堅實的基礎,為調查毫升演播室上你自己的或為探索早期發佈的文檔。這篇文章假設你有至少開始水準 (瞭解毫升工作室和Visual Studio的類比和術語) 的程式設計技能,但不是承擔你知道任何有關毫升工作室或機器學習。

得到的結果嗎?

如果你是新到 ML 的工作室,你可能想知道在哪裡可以找到輸出的實驗。事實證明,一個典型的 ML 工作室實驗通常具有多個輸出。底線的輸出,可以說,所示圖 2。我砍出的中心部分,以使圖像以查看更容易一點。

蔚藍毫升工作室實驗結果
圖 2 蔚藍毫升工作室實驗結果

為了查看這些結果,我最右記分模型實驗模組上用滑鼠右鍵按一下並從內容功能表中選擇視覺化選項。這與結果打開一個單獨的視窗,如圖所示。現在,看看底部的圖像,類似于:

unknown-party  y  n  y  n . . y  n  democrat    0.0013
unknown-party  y  y  y  y . . n  n  republican  0.7028

此輸出指示預測模型被創建後,它提出了兩個新的資料項目目。第一,與未知的党,是資料假設有關立法的條例草案 》 投票"是"的代表殘疾人 (如果你仔細看,這些列都具有標題) 的嬰兒,"不會"上有關水工程等等,通過"不是"表決南非有關條例草案的條例草案。由毫升工作室創建的模型預測假設的代表是一位民主黨人。第二個數據專案是假設的代表投了贊成票"yes"前, 八個法案和"不是"第二八項條例草案 ; 該模型預測的人是一名共和黨人。

設置資料

現在,您瞭解該演示實驗的目的,你在更好地瞭解如何創建的實驗。它是相當安全的說,所有毫升工作室實驗都開始與一些資料,和一個或多個問題有待回答。在這裡,演示資料是一家知名 (毫升社會,至少) 基準資料集通常被稱為國會的投票記錄資料集 (或 UCI 投票資料集,因為該檔的主要位置位於一台伺服器保持由加利福尼亞大學歐文分校)。原始的資料,一個簡單的文字檔,命名為房子-票-84.data,可以通過互聯網搜索發現。

原始資料的前四行是:

republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y
republican,n,y,n,y,y,y,n,n,n,n,n,y,y,y,n,?
democrat,?,y,y,?,y,y,n,n,n,n,y,n,y,y,n,n
democrat,n,y,y,n,?,y,n,n,n,n,y,n,y,n,n,y
...

共有 435 以逗號分隔的資料的行,另一個用於每一個美國 435 成員 眾議院于 1984 年。 每個場第一的列是党和民主黨人或共和黨人 (有當時沒有獨立或其他當事方)。在每一行上的下一步 16 項代表贊成票 (y)、 反對票 (n) 或缺少表決 (?)。

毫升工作室可以讀取資料直接關閉網頁,或從 Azure 存儲空間,但是我更喜歡創建自己的資料存儲。要做到這一點,我在我本地機器上,將文本檔案複製到記事本,然後添加列標題 UCI Web 網站上的檔描述的基礎,像這樣:

political-party,handicapped-infants, . . ,south-africa
republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y
republican,n,y,n,y,y,y,n,n,n,n,n,y,y,y,n,?
democrat,?,y,y,?,y,y,n,n,n,n,y,n,y,y,n,n
...

當從頭開始編寫毫升代碼,具有列標頭的工作可以很煩人,標頭是經常省略掉的資料檔案。但與毫升工作室,使用列標題是容易忽略這些,盡可能使資料更易理解,其實。我將本地檔重命名為 VotingRawWithHeader.txt,並保存在我的機器上。如果你想要使用相同的頁眉,像我一樣,你可以得到我的代碼下載中用於在這篇文章的資料檔案 msdn.microsoft.com/magazine/msdnmag0914

導航到毫升工作室主頁之後, 我點擊資料集類別中的左側窗格。在主要的工作區域中,毫升工作室顯示內置的資料集,例如虹膜兩類資料和望遠鏡資料的清單。你最初看到這些資料集的絕大多數都是更多或更少知名的基準集 (從 UCI 存儲庫中的多),可用於探索毫升工作室。在左下角的 ML 工作室,我位於新的圖示,點擊它。

從那裡我可以選擇新的資料集或一個新的實驗,所以我點擊資料集,然後從本地檔圖示上。至此,在對話方塊中顯示圖 3。我用瀏覽按鈕來針對本地檔、 命名資料集"投票資料,"所選類型"標題 (.csv) 通用 CSV 檔",鍵入資料集的簡短說明。

創建新的資料集
圖 3 創建新的資料集

點擊了 OK 核取記號和 ML 工作室的本地檔上載到 Azure 存儲空間,並將其保存。返回在資料集視圖中毫升工作室,我做頁面刷新,投票資料現在可以看到演示資料集。請注意在毫升工作室我用的預發行版本本,不可能完全刪除資料集。所以,當你正在調查,我強烈建議您創建單個資料集與像假資料的通用名稱。然後,當你需要一個不同的資料集,使用"這是一個現有的資料集的新版本"選項,所以你毫升工作室工作區不會成為超支與孤立、 啞不能被刪除的資料集。

創建實驗

若要創建實驗,我點擊左下角的 ML 工作室的新圖示,然後點擊實驗選項。接下來,在左側的窗格中,按一下保存資料集類別,然後滾動到投票的資料項目目,我只是創建並拖到設計窗格上。在設計曲面圖的頂部,我進入投票實驗作為標題。在這一點上,你可以投票資料模組的底部輸出節點上按右鍵,並選擇的視覺化選項以驗證您的資料集正確。

許多開發人員,包括我自己,當第一次使用毫升,嚴重低估多少努力參與 ML 演算法在應用之前操作的來源資料。典型任務包括重新排列資料列,刪除不需要的列,處理缺失值,編碼非數值型資料和將資料分解到訓練集和測試集。從開發人員的角度出發為投票資料實驗,這些任務可能會採取這樣的代碼的形式:

 

string[][] rawData = LoadData("VotingRawWithHeader.txt");
rawData = ProcessMissing(rawData, '?', 'n');
rawData = SwapColumns(rawData, 0, 16);
double[][] data = Encode(rawData);
double[][] trainData;
double[][] testData;
MakeTrainTest(data, 0.80, out trainData, out testData);

圖 4 顯示前四毫升工作室模組,用於執行這些任務的一個特寫鏡頭。在很多毫升場景中,最常見的方法來處理缺失值是只需刪除所有資料項目目行包含一個或更多的缺失值和 ML 工作室給你該選項。然而,與投票資料,我的假設是失蹤的票是真的隱含"否定"投票。所以,對於缺少值洗滌器模組,在右側的窗格中,我規定,所有缺少的值 ("?") 應改為"n"的值。

處理資料
圖 4 處理資料

專案列模組允許您指定您想要忽略任何的列。在這種情況下,我選擇"選擇所有列"選項。毫升工作室檢查您的資料,並且使聰明的猜測列中的值是否分類資料: 字串或數值資料。中繼資料編輯器模組允許您重寫毫升的假設,並還允許您指定標籤列,那就是,要預測的變數。我所選的"政黨"列 (這裡的地方有列標題是很大的説明),指定它是標籤列。我離開其他 16 列作為功能 (預測) 的列。

拆分模組做了,就像將資料劃分為訓練集,用於創建毫升模型和測試集,用來估計模型的準確性。在這裡,我指定 0.8 的模組參數窗格中,因此培訓資料將 80%的專案的 435 項 (348 項) 和測試集將餘下的 20%(87 項)。拆分模組也有一個布林型參數,名為"分層分裂"。當與毫升工作室工作,你肯定會遇到參數不明白其含義。在右下角的問號圖示使您可以訪問到毫升工作室説明。

在模型訓練過程

可以將一個 ML 模型看作是資訊的集合 — — 數值通常稱為權重 — — 那用來生成輸出和預測。培養模式是找到一組權重值,以便當面對來自訓練集 (在這種情況下,16 是和沒有選票),輸入的資料計算產出 (民主黨人或共和黨人) 密切配合訓練資料中的已知的輸出的過程。一旦這些權重已經確定,生成的模型可以提供測試資料。對測試資料 (正確預測的百分比) 模型的精度給你的表現如何,該模型將時給出了新的資料,知道真實的輸出並不是一個粗略的估計。

對於投票的演示中,基於代碼的訓練可能類似于:

 

int numFeatures = 16;
LogisticModel lm = new LogisticModel(numFeatures);
int maxEpochs = 10000;
lm.Train(trainData, maxEpochs);

圖 5 顯示一個特寫鏡頭的等效的 ML 工作室培訓-­相關模組。在這個演示中,火車模型模組接受作為輸入邏輯斯蒂回歸二元分類模型模組。不像其他的連接,這的確不是資料流程 ; 實際上,它指定到底什麼樣的 ML 模型是用於。選擇到後勤回歸二元分類包括模組平均感知二元、 二元提高決策樹和神經網路二進位分類器。

在模型訓練過程
圖 5 在模型訓練過程

所以,你怎麼知道要使用哪個模型?因為輸出預測有兩個可能的值,民主黨人或共和黨人,你想要一個二進位的模型。但是有幾十個毫升接近,可能使用毫升工作室的最困難部分不得不研究不同毫升量詞的利弊。Visual Studio開發類比是 Microsoft.NET 框架有幾十個資料結構如泛型字典、 HashSet 和泛型佇列,它是讓你知道每個資料結構做什麼。在同樣的方式,它是對你瞭解毫升分類器。

Logistic 迴歸分析模組有一些你可能不會理解,包括優化公差、 L1 經常化重量和記憶體大小為 L BFGS 的參數。再次,這得由你來瞭解這些參數做些什麼。 幸運的是,毫升工作室有大多數模組參數的精挑細選的預設值。我接受所有的預設參數值,除非我用零的"隨機編號的種子"。

在火車模型模組中,你必須告訴毫升工作室培訓資料的列是標籤列中 ; 也就是說,哪一列是要預測的變數。與選定的火車模型模組,在模組的參數窗格中發射欄選取器按鈕上按一下選擇按名稱選擇在下拉清單控制項中,然後鍵入政黨。我可以用列的索引,1,因為政黨位於第一列中 (1 為基礎,而不是基於 0 作為開發人員所習慣的毫升工作室指數是)。請注意指定標籤列火車模型模組需要即使你這樣做在中繼資料編輯器中。

評價模型

展示模型已經過培訓之後,接下來的步驟是飼料訓練資料和測試資料對該模型、 計算的計算的輸出,和計算的準確性 (針對已知的輸出) 的計算輸出。在代碼中,這可能看起來像:

 

lm.ComputeOutputs(trainData); // Score
double trainAccuracy = lm.Accuracy(trainData); // Evaluate
lm.ComputeOutputs(testData); // Score
double testAccuracy = lm.Accuracy(testData); // Evaluate

圖 6 顯示有關評分和評價模組的一個特寫鏡頭。這兩個分數模型模組接受兩個輸入流。第一個輸入是訓練的模型 (計算產出所需的資訊) 和第二個輸入是一個訓練集或測試集 (所需的資料輸入)。這兩個評分模組的結果被發送到該評價模型模組,計算精度。

得分及評價模型研究
圖 6 得分及評價模型研究

圖 7 評價模型模組中顯示結果。在右上角,第二個資料集的兩個專案的通知已被選中 (它會被加亮),這意味著結果的測試資料。最重要是結果的 0.989 的精度值。記得測試集是 435 的原始資料項目目或 87 項的 20%。Logistic 回歸模型正確的預測 86 87 測試專案的政黨。還有很多其他評價模型模組結果中的資訊。例如,圖被稱為接收器操作特徵 (ROC) 圖。它繪製的"真陽性"百分比 (正確的預測) 關於 y 軸 vs。 "誤報"的百分比 (不正確預測) 在 X 軸上。

模型試驗資料的準確性
圖 7 模型試驗資料的準確性

以上只是一個工具

Azure 毫升工作室中的應用,以及它的後端引擎,微軟 Azure 機器學習 (毫升) 的服務,很多比這篇短文中所描述的用戶端工具。從開發人員的角度來看,毫升工作室大大簡化了創建預測系統。但有附加價值主張的就不那麼明顯。

這篇文章中未涉及的一個重要課題是 Azure 毫升創建和發佈 Web 服務使用只需要拖動並下降和幾個點擊的能力。蔚藍毫升自動處理部署、 容量調配、 負載平衡、 自動縮放和健康監測。一個預發佈客戶估計 Azure 毫升,他們是能夠創建業務解決方案 (欺詐檢測系統) 在使用商業分析軟體的成本的一小部分。

蔚藍毫升支援研發,程式設計語言的常用資料科學。數百個現有的開放源碼 R 模組可以直接複製到 Azure 毫升系統。

毫升工作室允許容易合作。實驗可以輕鬆地共用在幾個人之間。此功能因為自己而使用主意了,比我正常、 和規定的電子郵件談話方式的更高效。

蔚藍毫升到開發人員和資料的科學家提供了不僅僅是優勢。"部署先進的分析很難,"說JosephSirosh,微軟公司的副總裁,資訊管理和機器學習。"企業厭倦付高價,招募昂貴的人才,等待數月才能得到結果。有能力迅速建立解析模型,並將它們部署沒有這些瓶頸是改變遊戲規則。蔚藍毫升允許解鎖他們的資料中的值,並建立系統,以減少開支,增加收入並更好地服務他們最終客戶的企業。

做預測

一旦毫升工作室模型已創建並進行評估,它可以用於未知產出的資料作出的預測。我想要預測政黨的假想的代表投了贊成票"yes","不,""沒錯,""不,"等等,在 16 立法條例草案及一位投票的第二個代表"是"前八個法案,"不是"其餘八項條例草案。

一種辦法就是創建並上載新毫升工作室資料集,然後得分中相同的方式進行培訓和測試資料集。但對於數量有限的資料,更具互動性的方法是使用輸入的資料模組,如中所示圖 8,它允許您手動輸入資料。

輸入新的資料來預測
圖 8 輸入新的資料來預測

在模組中資料的格式必須與用來訓練模型,所以列標題都是所需的資料的格式完全符合。從輸入資料模組輸出與從火車模型模組輸出相結合。在運行實驗之後, 你可以看到結果通過點擊積分模型模組、 視覺化選項如上文所示的圖 2

如果你正在使用一種程式的程式設計語言的預測,該代碼可能類似于:

string[] unknown = new string[] { "party", "y", "n", "y", . . "n" };
double result = lm.ComputeOutput(unknown);
if (result < 0.5)
  Console.WriteLine("Predicted party is democrat");
else
  Console.WriteLine("Predicted party is republican");

再次,一些毫升工作室資訊是可能是有點神秘。回顧預測包括兩個尾隨數值:

unknown-party  y  n  y . . y  n  democrat    0.0013
unknown-party  y  y  y . . n  n  republican  0.7028

看來,後勤回歸二進位分類,輸出值低於 0.5 表示第一類 (在本示例中的民主黨人),產值超過 0.5 表示第二個類 (共和黨人)。請記住,喜歡Visual Studio,毫升工作室具有許多功能,生成大量的資訊。您將瞭解各種資訊的意思隨著時間的推移使用系統和一次處理一個新片而不是做深入探究了檔並試圖一次學到的一切。

沒有代碼嗎?

這篇文章只是一點皮毛毫升工作室,但它提供足夠的資訊,所以你可以複製該投票的實驗,並給該工具試一試。你可能已經注意到這篇文章並不包括任何編碼。沒有碼?呸 !但毫升工作室最酷的事之一是您可以編寫您自己的自訂模組使用 C# 中,我將會涉及這個主題在以後的文章中。我的預感是毫升工作室將生成開發人員編寫複雜的專門的模組,並使其可用兩個商業和通過各種管道,如打開源和博客,生態。


James McCaffrey 適合在雷德蒙的微軟研究院  他曾在幾個 Microsoft 產品包括 Internet Explorer 和冰。他可以在達成 jammc@microsoft.com

感謝以下的微軟技術專家對本文的審閱:Roger 巴爾加 (機器學習) 和MichaelJones(全球產品工程)