如何選取 Azure Machine Learning 的演算法

常見的問題是:「我應該使用哪一種機器學習演算法?」 您所選取的演算法主要取決於資料科學案例的兩個不同層面:

  • 您要如何處理資料? 具體而言,您想從過去的資料學習,以解決的業務問題是什麼?

  • 您的資料科學案例有哪些需求? 具體而言,您的解決方案所支援的正確性、定型時間、線性、參數數目和特徵數目為何?

Considerations for choosing algorithms: What do you want to know? What are the scenario requirements?

注意

設計工具支援兩種類型的元件:傳統預先建置的元件 (v1) 和自訂元件 (v2)。 這兩種類型的元件互不相容。

傳統預先建置元件主要提供用於資料處理和傳統機器學習工作 (例如迴歸和分類) 的預先建置元件。 此類型的元件會繼續受到支援,但將不會新增任何新元件。

自訂元件可讓您包裝自己的程式碼作為元件。 它支援跨工作區共用元件,及跨 Studio、CLI v2 和 SDK v2 介面的無縫製作。

對於新專案,我們強烈建議您使用與 AzureML V2 相容的自訂元件,並且會持續接收新的更新。

本文適用於傳統預先建置元件,且與 CLI v2 和 SDK v2 不相容。

商務案例和機器學習演算法速查表

機器學習演算法速查表可協助您進行首個考量:您要如何處理資料? 在機器學習演算法速查表上,尋找您想要執行的工作,然後尋找預測性分析解決方案的 Azure Machine Learning 設計工具演算法。

Azure Machine Learning 設計工具提供完整的演算法組合,例如多類別決策樹系建議系統神經網路迴歸多元神經網路,以及K-Means 叢集。 每種演算法皆是設計用來處理不同類型的機器學習問題。 如需完整清單、每種演算法的運作方式,以及如何微調參數將演算法最佳化的相關文件,請參閱 Azure Machine Learning 設計工具演算法和元件參考

注意

在此下載速查表:機器學習演算法速查表 (11x17 英吋)

除了 Azure Machine Learning 演算法速查表中的指導,也請記住在為解決方案選擇機器學習演算法時的其他需求。 以下是要考慮的其他因素,例如正確性、定型時間、線性、參數數目和特徵數目。

機器學習演算法的比較

有些學習演算法會對資料結構或想要的結果做出特定假設。 如果可以找到符合需求的假設,您就能獲得更實用的結果、更精確的預測或更快的定型時間。

下表摘要說明來自分類、迴歸和叢集系列的一些最重要演算法特性:

演算法 準確度 定型時間 線性 參數 注意事項
分類系列
二元羅吉斯迴歸 良好 快速 Yes 4
二元決策樹系 非常好 中等 No 5 顯示較慢的評分時間。 建議不要使用「一對多」多元分類,因為在累積的樹狀結構預測中,執行緒鎖定會造成評分時間較慢
二元促進式決策樹 非常好 中等 No 6 高記憶體使用量
二元神經網路 良好 中等 No 8
二元平均感知器 良好 中等 Yes 4
二元支援向量機器 良好 快速 Yes 5 適用於大型特徵集
多元羅吉斯迴歸 良好 快速 Yes 4
多元決策樹系 非常好 中等 No 5 顯示較慢的評分時間
多元促進式決策樹 非常好 中等 No 6 通常會減少涵蓋範圍,藉由承擔小型風險來改善精確度
多元神經網路 良好 中等 No 8
「一對多」多元分類 - - - - 請參閱選取的兩個類別方法的屬性
迴歸系列
線性迴歸 良好 快速 Yes 4
決策樹系迴歸 非常好 中等 No 5
促進式決策樹迴歸 非常好 中等 No 6 高記憶體使用量
神經網路迴歸 良好 中等 No 8
叢集系列
K-Means 叢集 非常好 中等 Yes 8 叢集演算法

資料科學案例的需求

在您知道要如何處理資料後,就須要判斷解決方案的其他需求。

進行下列需求的選擇和其可能帶來的取捨:

  • 準確率
  • 定型時間
  • 線性
  • 參數數目
  • 特徵數目

準確率

機器學習正確性是以整體案例中結果為真的比例,來衡量模型的效能。 在機器學習表設計工具中,評估模型元件會計算一組業界標準的評估計量。 您可使用此元件測量已定型模型的正確性。

您不一定需要取得最準確的答案。 視您的用途而定,有時候近似值便已足夠。 如果是這樣,您就能採用近似法,並大幅縮短處理時間。 近似法也可能避免過度學習。

使用 [評估模型] 元件的方式有三種:

  • 產生定型資料的分數以評估模型
  • 產生模型分數,但會與保留的測試集進行比較
  • 使用相同的資料集,比較兩個不同但相關模型的分數

如需可用來評估機器學習模型正確性的計量和方法完整清單,請參閱〈評估模型元件〉。

定型時間

在監督式學習中,定型表示使用歷程記錄資料來建置機器學習模型,以將錯誤降至最低。 定型出一個模型可能需要幾分鐘或幾小時,這在各個演算法間有很大的差異。 定型時間通常取決於正確性,這兩者的關係密不可分。

此外,有些演算法對資料點的數目較為敏感。 由於具有時間限制,因此您可以選擇特定的演算法,尤其是當資料集很大時。

在機器學習設計工具中,建立和使用機器學習模型通常是三步驟的流程:

  1. 選擇特定類型的演算法並定義其參數或超參數來設定模型。

  2. 提供已標示且資料與演算法相容的資料集。 將資料和模型都連線至 [定型模型] 元件。

  3. 定型完成之後,請使用定型的模型搭配其中一個評分元件,以針對新資料進行預測。

線性

統計資料和機器學習中的線性,表示資料集內的變數和常數之間有線性關聯性。 例如,線性分類演算法會假設可以用直線 (或較高維度類比) 來分隔類別。

許多機器學習演算法都會使用線性。 在 Azure Machine Learning 設計工具中,它們包含:

線性迴歸演算法會假設資料趨勢依循著一條直線。 對某些問題來說這種假設並沒有錯,但對其他問題來說則會降低正確性。 儘管有其缺點,線性演算法也是最常見的首要策略。 這種演算法定型起來通常又快又簡單。

Nonlinear class boundary

非線性類別界限仰賴線性分類演算法會造成低正確性的結果。

Data with a nonlinear trend

具有非線性趨勢的資料使用線性迴歸方法會產生較大且不必要的誤差。

參數數目

參數是資料科學家在設定演算法時的必經之路。 參數就是會影響演算法行為的數值,例如容錯或反覆運算次數,或是演算法運作方式的變化選項。 定型時間和演算法的正確性,有時很容易會因為設定是否正確而受到影響。 一般而言,具有大量參數的演算法需要最多次的反覆試驗,才能找出良好的組合。

或者,機器學習設計工具中有調整模型超參數元件:此元件的目標是要判斷機器學習模型的最佳超參數。 此元件會使用不同的設定組合來建置和測試多個模型。 其會比較所有模型的計量,以取得設定的組合。

雖然這是確保定義生成參數空間的好方法,但定型模型時所需的時間會依參數數目而呈指數增加。 一般而言,具有許多參數的優點是可讓演算法有更大的彈性。 若您可以找到正確的參數設定組合,通常可以達到非常好的正確性。

特徵數目

在機器學習中,特徵是您所嘗試分析之現象的可量化變數。 就特定的資料類型而言,可能會有比資料點數目更龐大的特徵數目。 基因學或文字資料通常屬於這種情況。

大量的特徵可能會拖累部分學習演算法,讓定型時間長到無法作業。 支援向量機器特別適用於具有大量特徵的案例。 基於這個理由,許多應用程式都採用這個方式,從資訊擷取到文字和影像分類皆然。 支援向量機器可用於分類和迴歸工作。

特徵選取是指在指定的輸出中,將統計測試套用至輸入的流程。 其目標在於判斷輸出中的哪些資料行較具有預測性。 機器學習設計工具中的「以篩選為基礎的特徵選取元件」提供多種特徵選取演算法可供選擇。 此元件包含相互關聯方法,例如皮耳森相互關聯和卡方值。

您也可以使用排列特徵重要性元件,來計算資料集的一組特徵重要性分數。 然後您可以利用這些分數,協助您判斷要在模型中使用的最佳特徵。

下一步