SdcaLogisticRegressionBinaryTrainer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
확률적 이중 좌표 상승 방법을 사용하여 이 IEstimator<TTransformer> 진 로지스틱 회귀 분류 모델을 학습하기 위한 것입니다. 학습된 모델은 보정되며 선형 함수의 출력 값을 a에 공급하여 확률을 PlattCalibrator생성할 수 있습니다.
public sealed class SdcaLogisticRegressionBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Calibrators.CalibratedModelParametersBase<Microsoft.ML.Trainers.LinearBinaryModelParameters,Microsoft.ML.Calibrators.PlattCalibrator>>
type SdcaLogisticRegressionBinaryTrainer = class
inherit SdcaBinaryTrainerBase<CalibratedModelParametersBase<LinearBinaryModelParameters, PlattCalibrator>>
Public NotInheritable Class SdcaLogisticRegressionBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of CalibratedModelParametersBase(Of LinearBinaryModelParameters, PlattCalibrator))
- 상속
-
SdcaTrainerBase<SdcaBinaryTrainerBase<TModelParameters>.BinaryOptionsBase,BinaryPredictionTransformer<TModelParameters>,TModelParameters>SdcaLogisticRegressionBinaryTrainer
설명
이 트레이너를 만들려면 SdcaLogisticRegression 또는 SdcaLogisticRegression(옵션)을 사용합니다.
입력 및 출력 열
입력 레이블 열 데이터는 Boolean이어야 합니다. 입력 기능 열 데이터는 알려진 크기의 벡터 Single여야 합니다.
이 트레이너는 다음 열을 출력합니다.
출력 열 이름 | 열 유형 | 설명 | |
---|---|---|---|
Score |
Single | 모델에서 계산한 바인딩되지 않은 점수입니다. | |
PredictedLabel |
Boolean | 점수 부호에 따라 예측된 레이블 음수 점수는 false 에 양수 점수는 true 에 매핑됩니다. |
|
Probability |
Single | true를 레이블로 갖는 점수를 보정하여 계산된 확률입니다. 확률 값은 범위 [0, 1]입니다. |
트레이너 특성
기계 학습 작업 | 이진 분류 |
정규화가 필요한가요? | 예 |
캐싱이 필요한가요? | 아니요 |
Microsoft.ML 외에도 필요한 NuGet | 없음 |
ONNX로 내보낼 수 있습니다. | 예 |
학습 알고리즘 세부 정보
이 트레이너는 공록 목표 함수를 위한 최신 최적화 기술인 SDCA(확률적 이중 좌표 상승) 메서드를 기반으로 합니다. 이 알고리즘은 KDD 최적 논문에 설명된 대로 스트리밍 학습 알고리즘이므로 크기를 조정할 수 있습니다.
별도의 스레드에서 기본 변수와 이중 변수 간의 동기화를 주기적으로 적용하여 수렴을 덮어씁니다. 힌지 손실 및 물류 손실과 같은 몇 가지 손실 기능도 제공됩니다. 사용된 손실에 따라 학습된 모델은 예를 들어 지원 벡터 머신 또는 로지스틱 회귀일 수 있습니다. SDCA 메서드는 스트리밍 학습을 수행할 수 있는 기능(전체 데이터 집합을 메모리에 맞추지 않고), 전체 데이터 집합의 몇 가지 검사(예: 이 문서의 실험 참조)로 적절한 결과에 도달하고, 스파스 데이터 집합의 0에 계산을 사용하지 않는 등 몇 가지 최상의 속성을 결합합니다.
SDCA는 확률적이고 스트리밍 최적화 알고리즘입니다. 중지 허용 오차가 충분히 타이트하지 않기 때문에 결과는 학습 데이터의 순서에 따라 달라집니다. 강력한 볼록 최적화에서 최적의 솔루션은 고유하므로 결국 모든 사용자가 동일한 위치에 도달합니다. 비강력 볼록한 경우에도 실행에서 실행까지 똑같이 좋은 솔루션을 얻을 수 있습니다. 재현 가능한 결과의 경우 '순서 섞기'를 False로 설정하고 'NumThreads'를 1로 설정하는 것이 좋습니다.
이 클래스는 경험적 위험 최소화 (즉, ERM)를 사용하여 수집된 데이터에 기반한 최적화 문제를 작성합니다. 경험적 위험은 일반적으로 수집된 데이터 요소에 대한 모델의 예측에 손실 함수를 적용하여 측정됩니다. 학습 데이터에 충분한 데이터 요소가 포함되지 않은 경우(예: $n$-차원 공간에서 선형 모델을 학습하기 위해 최소 $n$ 데이터 요소가 필요함) ERM에서 생성된 모델이 학습 데이터를 설명하는 데 적합하지만 보이지 않는 이벤트에서 올바른 결과를 예측하지 못할 수 있도록 과잉 맞춤 이 발생할 수 있습니다. 정규화 는 모델 매개 변수의 크기(일반적으로 표준 함수로 측정됨)를 처벌하여 이러한 현상을 완화하는 일반적인 기술입니다. 이 트레이너는 L1-norm(LASSO)의 선형 조합을 처벌하는 탄력적 순 정규화를 지원합니다. $|| \textbf{w}_c || _1$, L2-norm(ridge), $|| \textbf{w}_c || $c=1,\dots,m$에 대한 _2^2$ 정규화 L1-norm 및 L2-norm 정규화는 특정 측면에서 보완적인 다양한 효과와 사용이 있습니다.
구현된 최적화 알고리즘과 함께 L1-norm 정규화는 모델 가중치인 $\textbf{w}_1,\dots,\textbf{w}_m$의 스파스를 증가시킬 수 있습니다. 고차원 및 스파스 데이터 집합의 경우 사용자가 L1-norm 계수를 신중하게 선택하는 경우 예측 성능에 영향을 주지 않고 0이 아닌 가중치(예: 총 모델 가중치의 1%)만 있는 모델을 사용하여 적절한 예측 품질을 달성할 수 있습니다. 반면 L2-norm은 학습된 모델의 스파스를 늘릴 수 없지만 큰 매개 변수 값을 방지하여 과잉 맞춤을 방지할 수 있습니다. 경우에 따라 L2-norm을 사용하면 예측 품질이 향상되므로 사용자는 여전히 L1-norm 및 L2-norm 계수를 사용해 보고 미세 조정할 수 있습니다. 개념적으로 L1-norm을 사용하면 모든 모델 매개 변수의 분포가 Laplace 분포 이고 L2-norm은 가우스 분포 를 의미합니다.
적극적인 정규화(즉, L1-norm 또는 L2-norm 정규화 용어에 큰 계수를 할당)는 모델에서 중요한 변수를 제외하여 예측 용량에 해를 끼칠 수 있습니다. 예를 들어 매우 큰 L1-norm 계수는 모든 매개 변수를 0으로 강제 적용하여 간단한 모델로 이어질 수 있습니다. 따라서 올바른 정규화 계수를 선택하는 것이 실제로 중요합니다.
자세한 내용은 다음을 참조하세요.
사용 예제에 대한 링크는 참고 섹션을 참조하세요.
필드
FeatureColumn |
트레이너가 기대하는 기능 열입니다. (다음에서 상속됨 TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
트레이너가 기대하는 레이블 열입니다. Can be |
WeightColumn |
트레이너가 기대하는 체중 열입니다. 가중치가 학습에 사용되지 않음을 나타내는 일 |
속성
Info |
확률적 이중 좌표 상승 방법을 사용하여 이 IEstimator<TTransformer> 진 로지스틱 회귀 분류 모델을 학습하기 위한 것입니다. 학습된 모델은 보정되며 선형 함수의 출력 값을 a에 공급하여 확률을 PlattCalibrator생성할 수 있습니다. (다음에서 상속됨 SdcaBinaryTrainerBase<TModelParameters>) |
메서드
Fit(IDataView) |
를 학습하고 반환합니다 ITransformer. (다음에서 상속됨 TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
확률적 이중 좌표 상승 방법을 사용하여 이 IEstimator<TTransformer> 진 로지스틱 회귀 분류 모델을 학습하기 위한 것입니다. 학습된 모델은 보정되며 선형 함수의 출력 값을 a에 공급하여 확률을 PlattCalibrator생성할 수 있습니다. (다음에서 상속됨 TrainerEstimatorBase<TTransformer,TModel>) |
확장 메서드
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
추정기 체인에 '캐싱 검사점'을 추가합니다. 이렇게 하면 다운스트림 추정기가 캐시된 데이터에 대해 학습됩니다. 여러 데이터 전달을 수행하는 트레이너 앞에 캐싱 검사점을 두는 것이 유용합니다. |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
추정기가 지정된 경우 대리자를 호출한 후 Fit(IDataView) 호출되는 래핑 개체를 반환합니다. 예측 도구가 적합한 항목에 대한 정보를 반환하는 것이 중요한 경우가 많습니다. 따라서 Fit(IDataView) 메서드는 일반 ITransformer개체가 아닌 특별히 형식화된 개체를 반환합니다. 그러나 동시에 IEstimator<TTransformer> 개체가 많은 파이프라인으로 형성되는 경우가 많으므로 변압기를 가져올 추정기가 이 체인의 어딘가에 묻혀 있는 위치를 통해 EstimatorChain<TLastTransformer> 추정기 체인을 빌드해야 할 수도 있습니다. 이 시나리오에서는 fit이 호출되면 호출되는 대리자를 이 메서드를 통해 연결할 수 있습니다. |
적용 대상
추가 정보
- SdcaLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String, Nullable<Single>, Nullable<Single>, Nullable<Int32>)
- SdcaLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, SdcaLogisticRegressionBinaryTrainer+Options)
- SdcaLogisticRegressionBinaryTrainer.Options