ML.NET 알고리즘을 선택하는 방법

ML.NET 작업에는 선택할 수 있는 여러 학습 알고리즘이 있습니다. 선택할 알고리즘은 사용자가 해결하려고 하는 문제, 데이터 특징, 사용 가능한 컴퓨팅 및 스토리지 리소스에 따라 좌우됩니다. 기계 학습 모델을 학습하는 것은 반복적인 프로세스입니다. 가장 적합한 것을 찾기 위해 여러 알고리즘을 시도해봐야 합니다.

알고리즘은 기능에서 작동합니다. 기능은 입력 데이터에서 계산된 숫자 값으로, 기계 학습 알고리즘에 최적의 입력입니다. 하나 이상의 데이터 변형을 사용하여 원시 입력 데이터를 기능을 변환합니다. 예를 들어, 텍스트 데이터는 단어 수와 단어 조합 수 세트로 변환됩니다. 데이터 변형을 사용하여 기능이 원시 데이터 형식에서 추출된 후에는 기능화되었다고 합니다. 기능화된 텍스트 또는 기능화된 이미지 데이터를 예로 들 수 있습니다.

트레이너 = 알고리즘 + 작업

알고리즘은 모델을 생성하기 위해 실행하는 수학입니다. 다른 알고리즘은 다른 특징의 모델을 생성합니다.

ML.NET을 사용하여 동일한 알고리즘을 다른 작업에 적용할 수 있습니다. 예를 들어 확률적 이중 좌표 상승법(Stochastic Descent Coordinate Ascent)을 이진 분류, 다중 클래스 분류 및 회귀에 사용할 수 있습니다. 차이점은 작업에 맞추기 위해 알고리즘의 출력이 해석되는 방식에 있습니다.

각 알고리즘/작업 조합에 대해 ML.NET은 학습 알고리즘을 실행하고 해석을 수행하는 구성 요소를 제공합니다. 이러한 구성 요소를 트레이너라고 합니다. 예를 들어 SdcaRegressionTrainer회귀 작업에 적용된 StochasticDualCoordinatedAscent 알고리즘을 사용합니다.

선형 알고리즘

선형 알고리즘은 입력 데이터의 선형 조합과 가중치 세트로부터 점수를 계산하는 모델을 생성합니다. 가중치는 학습 중 추정된 모델의 매개 변수입니다.

선형 알고리즘은 선형적으로 분리 가능한 기능에 잘 작동합니다.

선형 알고리즘으로 학습하기 전에 기능을 정규화해야 합니다. 이를 통해 하나의 기능이 다른 기능에 비해 결과에 더 많은 영향을 끼치지 않게 해줍니다.

일반적으로 선형 알고리즘은 스케일링 가능하고 빠르며 학습하기 쉽고 예측이 편리합니다. 기능의 수와 대략적으로 학습 데이터 세트의 크기로 규모가 조정됩니다.

선형 알고리즘은 학습 데이터에 여러 개의 통로를 만듭니다. 데이터 세트가 메모리에 적합할 경우 트레이너를 추가하기 전에 ML.NET 파이프라인에 캐시 검사점을 추가하면 학습을 보다 빨리 실행할 수 있습니다.

평균 퍼셉트론(Averaged perceptron)

텍스트 분류에 가장 적합합니다.

트레이너 작업 ONNX 내보내기 가능
AveragedPerceptronTrainer 이진 분류

확률적 이중 좌표 상승

좋은 기본 성능에는 튜닝이 필요하지 않습니다.

트레이너 작업 ONNX 내보내기 가능
SdcaLogisticRegressionBinaryTrainer 이진 분류
SdcaNonCalibratedBinaryTrainer 이진 분류
SdcaMaximumEntropyMulticlassTrainer 다중 클래스 분류
SdcaNonCalibratedMulticlassTrainer 다중 클래스 분류
SdcaRegressionTrainer 회귀

L-BFGS

기능 수가 클 경우에 사용합니다. 로지스틱 회귀 분석 학습 통계를 생성하지만, AveragedPerceptronTrainer처럼 스케일링되지 않습니다.

트레이너 작업 ONNX 내보내기 가능
LbfgsLogisticRegressionBinaryTrainer 이진 분류
LbfgsMaximumEntropyMulticlassTrainer 다중 클래스 분류
LbfgsPoissonRegressionTrainer 회귀

기호 확률적 경사 하강법(Symbolic stochastic gradient descent)

가장 빠르고 가장 정확한 선형 이진 분류 트레이너입니다. 여러 프로세서에 맞게 잘 스케일링됩니다.

트레이너 작업 ONNX 내보내기 가능
SymbolicSgdLogisticRegressionBinaryTrainer 이진 분류

온라인 그라데이션 하강

손실 함수를 선택하고 시간의 흐름에 따라 표시된 벡터의 평균을 사용하여 가중치 벡터를 업데이트하는 옵션을 사용하여 표준(비일괄 처리) 확률적 그라데이션 하강을 구현합니다.

트레이너 작업 ONNX 내보내기 가능
OnlineGradientDescentTrainer 회귀

의사결정 트리 알고리즘

의사결정 트리 알고리즘은 일련의 의사결정을 포함한 모델을 생성합니다(데이터 값을 통해 효과적으로 흐름 차트).

이 유형의 알고리즘을 사용하기 위해 기능이 선형적으로 구분 가능해야 할 필요는 없습니다. 그리고 기능 벡터의 개별 값이 의사결정 프로세스에서 독립적으로 사용되므로 기능을 일반화할 필요가 없습니다.

의사결정 트리 알고리즘은 일반적으로 매우 정확합니다.

일반화 가법 모델(Generalized Additive Model, GAM)을 제외한 세 모델은 기능 수가 클 경우 설명 가능성이 부족할 수 있습니다.

의사결정 트리 알고리즘은 더 많은 리소스를 사용하며 선형 알고리즘처럼 규모 조정은 안 됩니다. 이 알고리즘은 메모리에 적합할 수 있는 데이터 세트에서 잘 작용합니다.

부스팅된 의사결정 트리는 작은 트리의 모음으로, 각 트리는 입력 데이터를 채점하고 더 나은 점수를 얻을 수 있도록 이 점수를 다음 트리에 계속 전달하며 모음의 각 트리는 이전 트리에서 개선됩니다.

가벼운 경사 부스팅 머신(Light gradient boosted machine, LGBM)

이진 분류 트리 트레이너 중 가장 빠르고 정확하며 튜닝 성능이 뛰어납니다.

트레이너 작업 ONNX 내보내기 가능
LightGbmBinaryTrainer 이진 분류
LightGbmMulticlassTrainer 다중 클래스 분류
LightGbmRegressionTrainer 회귀
LightGbmRankingTrainer 순위 아니요

빠른 트리(Fast tree)

기능화된 이미지 데이터에 사용합니다. 불균형된 데이터에 유연하며 튜닝 성능이 뛰어납니다.

트레이너 작업 ONNX 내보내기 가능
FastTreeBinaryTrainer 이진 분류
FastTreeRegressionTrainer 회귀
FastTreeTweedieTrainer 회귀
FastTreeRankingTrainer 순위 아니요

빠른 포레스트(Fast forest)

노이즈가 많은 데이터와 잘 작동합니다.

트레이너 작업 ONNX 내보내기 가능
FastForestBinaryTrainer 이진 분류
FastForestRegressionTrainer 회귀

일반화된 가법 모델(Generalized additive model, GAM)

트리 알고리즘과 잘 작동하지만, 설명 가능성이 우선인 문제에 가장 적합합니다.

트레이너 작업 ONNX 내보내기 가능
GamBinaryTrainer 이진 분류 아니요
GamRegressionTrainer 회귀 아니요

행렬 인수 분해(Matrix factorization)

행렬 인수 분해

권장 사항의 협업 필터링에 사용됩니다.

트레이너 작업 ONNX 내보내기 가능
MatrixFactorizationTrainer 추천 아니요

필드 인식 인수 분해 머신

대규모 데이터 세트의 스파스 범주 데이터에 가장 적합합니다.

트레이너 작업 ONNX 내보내기 가능
FieldAwareFactorizationMachineTrainer 이진 분류 아니요

메타 알고리즘

이진 트레이너에서 다중 클래스 트레이너를 만드는 트레이너입니다. AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, SymbolicSgdLogisticRegressionBinaryTrainer, LightGbmBinaryTrainer, FastTreeBinaryTrainer, FastForestBinaryTrainer, GamBinaryTrainer에 사용합니다.

One-Vs-One

이 다중 클래스 분류자는 각 클래스에 대해 하나의 이진 분류자를 학습하여 해당 클래스를 다른 모든 클래스와 구별합니다. 분류할 클래스 수에 따라 규모가 제한됩니다.

트레이너 작업 ONNX 내보내기 가능
OneVersusAllTrainer 다중 클래스 분류

쌍별 결합(Pairwise coupling)

이 다중 클래스 분류자는 각 쌍의 클래스에서 이진 분류 알고리즘을 학습합니다. 두 클래스의 각 조합을 학습해야 하므로 클래스 수에 따라 규모 조정이 제한적입니다.

트레이너 작업 ONNX 내보내기 가능
PairwiseCouplingTrainer 다중 클래스 분류 아니요

K-평균(K-means)

클러스터링에 사용됩니다.

트레이너 작업 ONNX 내보내기 가능
KMeansTrainer Clustering

주성분 분석(Principal component analysis)

변칙 검색에 사용됩니다.

트레이너 작업 ONNX 내보내기 가능
RandomizedPcaTrainer 이상 감지 아니요

Naive Bayes

기능이 독립적이고 학습 데이터 세트가 작을 때 이 다중 클래스 분류 알고리즘을 사용합니다.

트레이너 작업 ONNX 내보내기 가능
NaiveBayesMulticlassTrainer 다중 클래스 분류

사전 트레이너(Prior Trainer)

다른 트레이너의 성과를 기준치로 삼기 위해 이 이진 분류 알고리즘을 사용합니다. 효과를 발휘하려면 다른 트레이너의 메트릭이 사전 트레이너보다 더 좋아야 합니다.

트레이너 작업 ONNX 내보내기 가능
PriorTrainer 이진 분류

지원 벡터 컴퓨터

SVM(지원 벡터 머신)은 매우 널리 사용되며 연구 주제로도 활용되는 지도 학습 모델 클래스로서, 선형 및 비선형 분류 작업에서 사용할 수 있습니다.

최근에는 대규모 학습 집합에 맞게 효율적으로 확장할 수 있도록 이러한 모델을 최적화하는 방식과 관련된 연구가 집중적으로 진행되었습니다.

선형 SVM

부울 레이블이 지정된 데이터에 대해 학습된 선형 이진 분류 모델을 사용하여 대상을 예측합니다. 확률적 그라데이션 하강 단계와 프로젝션 단계를 왔다 갔다 합니다.

트레이너 작업 ONNX 내보내기 가능
LinearSvmTrainer 이진 분류

로컬 심층 SVM

비선형 이진 분류 모델을 사용하여 대상을 예측합니다. 예측 시간 비용을 줄입니다. 예측 비용은 허용 가능한 분류 정확도의 손실이 있는 상태로 선형이 아니라 학습 집합의 크기에 따라 대수적으로 증가합니다.

트레이너 작업 ONNX 내보내기 가능
LdSvmTrainer 이진 분류

최소자승법

OLS(최소자승법)는 선형 회귀 분석에서 가장 일반적으로 사용되는 기법 중 하나입니다.

최소자승법은 실제 값에서 예측선까지 거리의 제곱 합으로 오류를 계산하고 제곱 오차를 최소화하여 모델을 적합하게 하는 손실 함수를 나타냅니다. 이 방법에서는 입력과 종속 변수 간에 강력한 선형 관계가 있다고 가정합니다.

트레이너 작업 ONNX 내보내기 가능
OlsTrainer 회귀