

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 模型訓練最佳實務
<a name="machine-learning-improve-model-performance"></a>

您可以採取一些措施來改善 Neptune ML 模型的效能。

## 選擇正確的節點屬性
<a name="machine-learning-before-exporting-data-choose-property"></a>

並非圖形中的所有屬性都有意義或與您的機器學習任務相關。在資料匯出期間，應排除任何不相關的屬性。

以下是一些最佳實務：
+ 使用領域專家來協助評估特徵的重要性，以及使用它們進行預測的可行性。
+ 移除您確定是多餘或無關的特徵，以減少資料中的干擾和不重要的相關性。
+ 在建置模型時進行迭代。在進行時調整特徵、特徵組合和調校目標。

Amazon Machine Learning 開發人員指南中的[特徵處理](https://docs.aws.amazon.com/machine-learning/latest/dg/feature-processing.html)為與 Neptune ML 相關的特徵處理提供其他指導方針。

## 處理異常值資料點
<a name="machine-learning-before-exporting-data-outliers"></a>

異常值是與剩餘資料明顯不同的資料點。資料異常值可能會破壞或誤導訓練程序，導致訓練時間更長或模型準確度降低。除非它們真的很重要，否則您應該在匯出資料之前消除異常值。

## 移除重複的節點和邊緣
<a name="machine-learning-before-exporting-data-remove-duplicates"></a>

儲存在 Neptune 的圖形可能具有重複的節點或邊緣。這些冗餘元素將為 ML 模型訓練帶來干擾。在匯出資料之前消除重複的節點或邊緣。

## 調校圖形結構
<a name="machine-learning-before-exporting-data-tune-graph"></a>

匯出圖形時，您可以變更特徵的處理方式及圖形的建構方式，以改善模型效能。

以下是一些最佳實務：
+ 當邊緣屬性具有邊緣類別的意義時，在某些情況下，值得將其轉換為邊緣類型。
+ 用於數值屬性的預設標準化政策是 `min-max`，但在某些情況下，其他標準化政策效果更好。您可以預先處理屬性並變更標準化政策，如 [`model-HPO-configuration.json` 檔案的元素](machine-learning-customizing-hyperparams.md#machine-learning-hyperparams-file-elements) 中所述。
+ 匯出程序會根據屬性類型自動產生特徵類型。例如，它會將 `String` 屬性視為類別特徵，並將 `Float` 和 `Int` 屬性視為數值特徵。如果需要的話，您可在匯出後修改特徵類型 (請參閱 [`model-HPO-configuration.json` 檔案的元素](machine-learning-customizing-hyperparams.md#machine-learning-hyperparams-file-elements))。

## 調校超參數範圍和預設值
<a name="machine-learning-before-exporting-data-change-hpo"></a>

資料處理操作會從圖形推斷超參數組態範圍。如果產生的模型超參數範圍和預設值不適用於圖形資料，您可以編輯 HPO 組態檔案，以建立您自己的超參數調校策略。

以下是一些最佳實務：
+ 當圖形變大時，預設隱藏的維度大小可能不夠大，無法包含所有資訊。您可以變更 `num-hidden` 超參數來控制隱藏的維度大小。
+ 對於知識圖譜嵌入（KGE）模型，您可能想要根據圖形結構和預算變更正在使用的特定模型。

  `TrainsE` 模型在處理一對多 (1-N)、多對一 (N-1) 和多對多 (N-N) 關係時遇到困難。`DistMult` 模型在處理對稱關係時遇到困難。`RotatE` 擅長建模各種關係，但在訓練期間比 `TrainsE` 和 `DistMult` 更昂貴。
+ 在某些情況下，當節點識別和節點特徵資訊都很重要時，您應該使用 ``concat-node-embed`` 告知 Neptune ML 模型，透過將節點的特徵與初始嵌入串連來取得節點的初始表示法。
+ 當您對某些超參數取得相當好的效能時，可以根據這些結果調整超參數搜尋空間。

## 提前停止 Neptune ML 中的模型訓練程序
<a name="machine-learning-model-training-early-stop"></a>

提前停止可大幅縮短模型訓練執行時間和相關聯成本，而不會降低模型效能。它還可以防止模型在訓練資料上過度擬合。

提前停止取決於驗證集效能的定期測量。最初，效能隨著訓練的進行而改善，但是當模型開始過度擬合時，效能會再次開始下降。提前停止功能會識別模型開始過度擬合的點，並在該點停止模型訓練。

Neptune ML 會監控驗證指標呼叫，並將最新的驗證指標與最後 **`n`** 個評估所得到的驗證指標平均值進行比較，其中 **`n`** 是使用 `window-for-early-stop` 參數設定的數字。一旦驗證指標比該平均值差，Neptune ML 就會停止模型訓練並儲存迄今的最佳模型。

您可以使用下列參數控制提前停止：
+ **`window-for-early-stop`** – 此參數的值為整數，其指定在決定提前停止時要平均的最新驗證分數。預設值為 `3`。
+ **`enable-early-stop`** – 使用此布林參數來關閉提前停止功能。依預設，其值為 `true`。

## 提前停止 Neptune ML 中的 HPO 程序
<a name="machine-learning-HPO-early-stop"></a>

Neptune ML 中的提前停止功能也會使用 SageMaker AI HPO 暖啟動功能，停止與其他訓練任務相比效能不佳的訓練任務。這也可以降低成本並提高 HPO 的品質。

如需此運作方式的描述，請參閱[執行暖啟動超參數調校工作](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-warm-start.html)。

暖啟動可讓您將從先前訓練工作中學到的資訊傳遞給後續訓練工作，並提供了兩個明顯的優勢：
+ 首先，先前訓練工作的結果是用來選取好的超參數組合，以在新的調校工作中進行搜尋。
+ 其次，它允許提前停止存取更多的模型執行，從而減少調校時間。

此功能會在 Neptune ML 中自動啟用，並可讓您在模型訓練時間與效能之間取得平衡。如果您對目前模型的效能感到滿意，則可以使用該模型。否則，您會執行更多由於先前執行結果而暖啟動的 HPO，以便探索更好的模型。

## 取得專業支援服務
<a name="machine-learning-before-exporting-data-get-support"></a>

AWS 提供專業支援服務，協助您解決 Neptune 專案機器學習的問題。如果您遇到困難，請尋求 [AWS 支援](https://aws.amazon.com/premiumsupport/)。