MatrixFactorizationTrainer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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 리포지토리에서 찾을 수 있습니다.
수학 세부 정보에 관심이 있는 사용자는 아래 참조를 참조하세요.
- 사용된 확률적 그라데이션 메서드의 다중 스레딩 구현은 공유 메모리 시스템의 행렬 팩터리화에 대한 빠른 병렬 확률 그라데이션 메서드를 참조하세요.
- 단일 스레드 내에서 발생하는 계산은 확률적 그라데이션 메서드에서 행렬 팩터리화로의 학습 속도 일정을 참조하세요.
- 사용되는 병렬 좌표 하강 메서드 및 1클래스 행렬 팩터리화 수식은 1 클래스 행렬 팩터리화에 대한 음수 샘플 선택을 참조하세요.
- 사용되는 기본 라이브러리에 대한 자세한 내용은 LIBMF: 공유 메모리 시스템의 병렬 행렬 팩터리를 위한 라이브러리를 참조하세요.
사용 예제에 대한 링크는 참고 항목 섹션을 참조하세요.
속성
Info |
TrainerInfo 에는 이 트레이너에 대한 일반 매개 변수가 포함되어 있습니다. |
메서드
Fit(IDataView) |
|
Fit(IDataView, IDataView) |
MatrixFactorizationTrainer 학습 데이터와 유효성 검사 데이터를 모두 사용하여 를 학습하고 를 반환합니다MatrixFactorizationPredictionTransformer. |
GetOutputSchema(SchemaShape) |
변환기에 대한 스키마 전파입니다. 입력 스키마가 제공된 것과 같으면 데이터의 출력 스키마를 반환합니다. |