다음을 통해 공유


MatrixFactorizationTrainer 클래스

정의

IEstimator<TTransformer> 행렬 팩터리화를 사용하여 행렬의 요소를 예측하는 입니다(공동 작업 필터링의 형식이라고도 함).

public sealed class MatrixFactorizationTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.Recommender.MatrixFactorizationPredictionTransformer>, Microsoft.ML.Trainers.ITrainerEstimator<Microsoft.ML.Trainers.Recommender.MatrixFactorizationPredictionTransformer,Microsoft.ML.Trainers.Recommender.MatrixFactorizationModelParameters>
type MatrixFactorizationTrainer = class
    interface ITrainerEstimator<MatrixFactorizationPredictionTransformer, MatrixFactorizationModelParameters>
    interface IEstimator<MatrixFactorizationPredictionTransformer>
Public NotInheritable Class MatrixFactorizationTrainer
Implements IEstimator(Of MatrixFactorizationPredictionTransformer), ITrainerEstimator(Of MatrixFactorizationPredictionTransformer, MatrixFactorizationModelParameters)
상속
MatrixFactorizationTrainer
구현

설명

이 트레이너를 만들려면 MatrixFactorization 또는 MatrixFactorization(옵션)을 사용합니다.

입력 및 출력 열

행렬 행 인덱스에는 1개, 행렬 열 인덱스에는 1개, 행렬에는 값(즉, 레이블)에 하나씩 세 개의 입력 열이 필요합니다. 이들은 함께 COO 형식의 행렬을 정의합니다. 레이블 열의 형식은 의 Single 벡터이고 다른 두 열은 형식 스칼라입니다.

출력 열 이름 열 유형 Description
Score Single 입력 열(행 인덱스 열 및 열 인덱스 열)에 지정된 위치에서 예측된 행렬 값입니다.

트레이너 특성

기계 학습 작업 추천 시스템
정규화가 필요한가요?
캐싱이 필요한가요?
Microsoft.ML 외에도 필요한 NuGet Microsoft.ML.Recommender
ONNX로 내보낼 수 있습니다.

배경

행렬 팩터리화의 기본 개념은 학습 매트릭스를 근사화하는 두 개의 하위 순위 계수 매트릭스를 찾는 것입니다. 이 모듈에서 예상되는 학습 데이터(팩터링된 행렬)는 튜플 목록입니다. 모든 튜플은 열 인덱스, 행 인덱스 및 두 인덱스에서 지정한 위치의 값으로 구성됩니다. 튜플의 예제 데이터 구조의 경우 다음을 사용할 수 있습니다.

// The following variables defines the shape of a m-by-n matrix. Indexes start with 0; that is, our indexing system
// is 0-based.
const int m = 60;
const int n = 100;

// A tuple of row index, column index, and rating. It specifies a value in the rating matrix.
class MatrixElement
{
    // Matrix column index starts from 0 and is at most n-1.
    [KeyType(n)]
    public uint MatrixColumnIndex;
    // Matrix row index starts from 0 and is at most m-1.
    [KeyType(m)]
    public uint MatrixRowIndex;
    // The rating at the MatrixColumnIndex-th column and the MatrixRowIndex-th row.
    public float Value;
}

행렬 팩터리를 사용하여 누락된 값을 채울 수 있도록 학습 매트릭스의 모든 항목을 지정할 필요는 없습니다. 이 동작은 추천 시스템을 빌드할 때 매우 유용합니다.

행렬 팩터리의 실제 사용에 대한 이해를 높이기 위해 음악 권장 사항을 예로 들어 보겠습니다. 사용자 ID와 음악 ID가 각각 행 및 열 인덱스로 사용되고 행렬의 값이 해당 사용자가 제공하는 등급이라고 가정합니다. 즉, 행 $u$ 및 열 $v$의 등급 $r$은 사용자 $u$가 항목 $v$에 $r$를 제공한다는 것을 의미합니다. 불완전한 매트릭스는 모든 사용자가 모든 제품에 피드백을 제공할 수 있기 때문에 매우 일반적입니다(예: 아무도 1천만 곡을 평가할 수 없음). $R\in{\mathbb R}^{m\times n}$이 m-by-n 등급 행렬이고 두 요소 행렬의 순위 가 {\mathbb R}^{k\times m}$에서 $P\이고 {\mathbb R}^{k\times n}$의 $Q\이고 여기서 $k$는 근사 순위라고 가정합니다. $u$-th 행의 예측 등급과 $R$의 $v$-th 열은 $P$의 $u$th 행과 $Q$의 $v$th 행의 내부 곱입니다. 즉, $R$은 $P$의 트랜스포지스($P^T$) 및 $Q$의 곱으로 근사치입니다. $k$는 일반적으로 $m$ 및 $n$보다 훨씬 작으므로 $P^T Q$는 일반적으로 $R$의 하위 순위 근사치라고 합니다.

이 트레이너에는 확률 적 그라데이션 메서드 와 $R$과 근사치 $P^T Q$사이의 거리를 최소화하여 $P$ 및 $Q$를 찾기 위한 좌표 하강 방법이 포함되어 있습니다. 포함된 좌표 하강 방법은 관찰된 모든 등급이 양수 신호(즉, 모든 등급 값이 1)인 1클래스 행렬 팩터리화에 특히 적합합니다. 1클래스 행렬 팩터리를 호출하는 유일한 방법은 MatrixFactorization(Options)을 호출할 때 손실 함수1클래스 제곱 손실을 할당하는 것입니다. 표준 행렬 팩터리화 및 1클래스 행렬 팩터리화에 대한 간략한 소개는 여기에서 6페이지 및 28페이지를 참조하세요. 기본 설정은 표준 행렬 팩터리화를 유도합니다. ML.NET 행렬 팩터리에 사용되는 기본 라이브러리는 Github 리포지토리에서 찾을 수 있습니다.

수학 세부 정보에 관심이 있는 사용자는 아래 참조를 참조하세요.

사용 예제에 대한 링크는 참고 항목 섹션을 참조하세요.

속성

Info

TrainerInfo 에는 이 트레이너에 대한 일반 매개 변수가 포함되어 있습니다.

메서드

Fit(IDataView) 를 학습하고 를 반환합니다 MatrixFactorizationPredictionTransformer.
Fit(IDataView, IDataView)

MatrixFactorizationTrainer 학습 데이터와 유효성 검사 데이터를 모두 사용하여 를 학습하고 를 반환합니다MatrixFactorizationPredictionTransformer.

GetOutputSchema(SchemaShape)

변환기에 대한 스키마 전파입니다. 입력 스키마가 제공된 것과 같으면 데이터의 출력 스키마를 반환합니다.

적용 대상

추가 정보