在 Model Builder 中定型和評估模型

已完成

在此單元中,您將了解如何在 Model Builder 中定型和評估機器學習模型。

在定型期間,Model Builder 會將演算法套用至您的資料。 透過針對特定案例使用評估計量,您測量模型的執行效能。

在 Model Builder 中定型

現在您已選取您的案例、選取您的定型環境,並載入您的資料,接下來可以開始定型您的模型。 定型包含將所選案例的演算法套用至您的資料集以尋找最佳模型。 我們將探討評估步驟中「最佳」所代表的意義。

在大部分情況下,若要在 Model Builder 中定型機器學習模型,您只需要提供您想要用於定型的時間量。

定型時間應該多長?

較長的定型期間可以讓 Model Builder 透過更寬廣的設定範圍探索更多的模型。

下表摘要說明在本機電腦上針對一套範例資料集使用 CPU 以取得良好效能所花費的平均時間:

資料集大小 定型的平均時間
0 MB 至 10 MB 10 秒
10 MB 至 100 MB 10 分鐘
100 MB 至 500 MB 30 分鐘
500 MB 至 1 GB 60 分鐘
1 GB+ 3+ 小時

這些數字僅供指引之用。 定型的確切時間長度取決於:

  • 做為模型輸入的特性數量 (資料行)。
  • 資料行的類型。
  • 機器學習工作。
  • 用於定型的機器 CPU、GPU、磁碟和記憶體效能。

提示

使用 100 個以上的資料列做為資料集。 低於該數量可能不會產生任何結果。

Model Builder 如何尋找最佳模型?

您可能聽過機器學習涉及複雜的數學。 因此,如果您只提供一個案例、一個資料集,以及一段您想要 Model Builder 定型的時間長度,Model Builder 如何能夠定型機器學習模型?

Model Builder 使用自動化機器學習 (AutoML) 識別一組轉換以準備要用於定型的資料、選取演算法,然後微調演算法的設定 (也稱為超參數)。 透過使用所選機器學習工作專用的評估計量,Model Builder 可以判斷哪一個模型最適合您的資料。

定型和取用程式碼

模型完成定型之後,Model Builder 會產生下列檔案,然後將檔案新增至您的專案。 這些檔案以巢狀方式置於您的 .mbconfig 檔案底下。

  • <MODEL-NAME>.zip:機器學習模型的成品。 此檔案包含您模型的序列化版本。
  • <MODEL-NAME>.training.cs:此檔案包含模型定型管線。 您的模型定型管線包含用來定型機器學習模型的資料轉換和演算法。 如需詳細資訊,請參閱資料轉換如何選擇 ML.NET 演算法
  • <MODEL-NAME>.consumption.cs:此檔案包含定義模型輸入和輸出結構描述的類別。 其中也包含 Predict 方法,此方法會使用您的模型建立 PredictionEngine API 並進行預測。 PredictionEngine 是一款使用便利的 API,可讓您對資料的單一執行個體執行預測。

評估您的模型

現在您已找到最適合您資料的模型,接下來可以測試預測的效能。 評估模型執行效能的方式之一是使用計量。

模型所執行機器學習工作的類型有特定的評估計量。 您可以針對每個工作查看各種計量以判斷模型的效能。

下表依案例顯示 Model Builder 用來選擇最佳模型的評估計量:

案例 評估計量 尋找
資料分類 二進位 (精確度) / 多類別 (MicroAccuracy) 越接近 1.00 越好
預測值 R 平方 越接近 1.00 越好
影像分類 準確率 越接近 1.00 越好
建議 R 平方 越接近 1.00 越好
物件偵測 準確率 越接近 1.00 越好

如需 ML.NET 評估計量的詳細資訊,請參閱模型的評估計量

選擇具有最高計量的模型

您的模型已達到完美的評估計量。 這是否意味著您有完美的模型嗎? 不完全是。 事實上,如果您最後得到評估計量所指定的「完美」模型,您應該抱持懷疑的態度。

在機器學習中,有一種概念稱為「過度學習」,這是您應該注意的事項。 當您的模型將定型資料集中的模式學得太好時,就是過度學習。 當您嘗試使用模型搭配新資料時,過度學習無法提供精確的結果。

以下是協助解說過度學習的案例。 假設您在學習以準備接受測驗。 然而您以某種方式事先取得測驗的問題和答案。 因此當您學習以準備接受測驗時,您專注在記住問題的答案。 當您接受測驗而收到結果時,您得到高分。 高分可能表示您非常了解該主題。 然而,如果有人詢問您有關其中一個主題的問題,而該問題不在測驗上時,您可能會回答錯誤,這是因為您尚未了解該主題,您只是記住答案而已。 過度學習的運作方式就類似這種情形。

改善您的模型

如果您不滿意模型的評估計量,您可以嘗試下列項目來改善您的模型:

  • 提供更多具代表性的資料觀察:經驗是最好的老師。 這個概念也適用於機器學習。 您提供的資料觀察越多,您的模型可以辨別的模式集便越廣泛。
  • 提供更多內容:新增資料行可以新增內容至您的資料,協助您的模型識別模式。 例如,假設您嘗試預測房屋的價格,而您唯一擁有的資料點是房間數量。 這資料本身可能不會告訴您太多資訊。 不過,如果您知道房屋位於主要都會區外圍的鄰近地區,該區的平均家庭收入為 $80,000,學校排名在前百分之 20 以內呢? 這樣您就有更多的資訊可以協助通知模型的決策。
  • 使用有意義的資料和特性:雖然較多的資料樣本和特性有利於改善模型的精確度,但也可能會帶入雜訊,因為並非所有的資料和特性都有意義。 請務必了解哪些特性會嚴重影響演算法的決策。
  • 探索更多演算法:提供更多時間給 Model Builder,使其能夠探索更多演算法和超參數,這可能有助於改善您的模型。

在下一單元中,您將使用 Model Builder 定型機器學習模型。