.NET的機器學習框架ML.NET

ML.NET是微軟針對.NET人員所推出的機器學習框架,這個框架可以讓我們用C#程式語言進行機器學習的開發,目前版本來到1.1並且從1.0版開始納入了AutoML及Model Builder二大功能

AutoML最主要的作用是讓開發人員只要基於資料及情境,就可以用比較容易的方式建造出機器學習模型來,過去人工智慧對於開發人員最大的門檻在於,必須先具備演算法等相關基礎知識,再根據參數來回的微調或是比較不同演算法下的模型,這個過程往往遇到非常多的障礙,而AutoML的機制可以簡化這個流程,目前支援迴歸預測、及分類問題(二元分類、多元分類),隨著版本的演進會陸續支援更新的機器學習任務。

而Model Builder則是提供視覺化的UI來進行上述AutoML的過程,並且產出相關的程式碼,簡單來說可以把Model Builder則視為程式碼產生器的概念。Model Builder是以外掛的方式安裝進Visual Studio 2017 & 2019,而ML.NET則是從NuGet取得。

接著我們先建立一個主控台應用程式,並從NuGet取得ML.NET

安裝完成後,在專案上按右鍵,選擇機器學習

Model Builder的畫面就會出現,首先你必須先定義你的問題情境,第1種是二元分類問題,第2種是多元分類,第3種是迴歸預測,第4種是自定義情境

跟一般機器學習處理流程一樣,給予訓練用資料,並指定相關欄位,以迴歸預測來說,必須告訴它你要預測的欄位是哪一個,目前支援的資料來源有二種方式,指定檔案或是從SQL資料庫來

接著就是準備進行訓練,這個步驟會有個時間設定,根據說明,訓練時間設為較長可以得到較佳的準確性,那麼到底要設定多少時間性,官方文件提供一個表依訓練資料的大小,有個建議值可以做為參考,決定時間長度後直接進行訓練

訓練完成後會有相關報告可以做為參考

最後一步則是Model Builder很棒的地方,程式碼產生器

最終會產出二個專案,加入到方案內,首先.Model結尾的專案是機器學習的模型專案

MlModel.zip就是模型檔,這個模型檔可以加入到你的應用程式內,而你的應用程式就可以直接叫用機器學習的模型,做落地運算

那麼應用程式要如何叫用機器學習的模型?Model Builder很佛心的也提供範例程式給你參考,就在另一個專案內,是以一個主控台應用程式做為範例,這個.ConsoleApp專案裡,會有二個程式,ModelBuilder.cs是把先前透Model Builder過程的作業程序,以程式碼的方式表示出來(這也是在1.0版本之前,要用ML.NET的唯一方式),這個過程包含了資料填入、資料清洗過濾、演算法選擇及參數設定、進行訓練、模型評估等機器學習必經的工作流程,換句話你可以選擇直接用寫程式的方式完成機器學習模型的建立,當然用的是C#

而Program.cs,則是告訴你如何在你的應用程裡使用前面所建立出來的機器學習模型,當然用的還是C#

結論
整體來說ML.NET嘗試提供一個框架,讓.NET的人員可以用C#來建構本地端的機器學習模型,並且為了降低門檻,在1.0版本開始提供了AutoML及Model Builder的支援,讓整個過程簡化更容易使用,並直接輸出程式碼,可以說是相當的方便,期待ML.NET可以讓.NET的開發人員除了用雲端的AI服務之外,也能夠建造本地端機器學習模型。

 

 

 

若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。

By No.18