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(Options).

Входные и выходные столбцы

Требуется три входных столбца: один для индексов строк матрицы, один для индексов матричных столбцов и один для значений (т. е. меток) в матрице. Они вместе определяют матрицу в формате COO . Тип столбца метки является вектором , Single а два других столбца являются скалярными ключевыми типами.

Имя выходного столбца Тип столбца Описание
Score Single Прогнозируемое значение матрицы в расположении, заданном входными столбцами (столбец индекса строки и столбец индекса столбца).

Характеристики инструктора

Задача машинного обучения системы рекомендаций.
Требуется ли нормализация? Да
Требуется ли кэширование? Да
Обязательный NuGet в дополнение к Microsoft.ML 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;
}

Обратите внимание, что нет необходимости указывать все записи в матрице обучения, поэтому для заполнения отсутствующих значений можно использовать факторизацию матриц. Это очень полезно при создании систем рекомендаций.

Чтобы лучше понять практическое использование матричной факторизации, рассмотрим в качестве примера рекомендацию по музыке. Предположим, что идентификаторы пользователей и музыкальные идентификаторы используются в качестве индексов строк и столбцов соответственно, а значения матрицы — это оценки, предоставляемые этими пользователями. То есть оценка $r$ в строке $u$ и столбце $v$ означает, что пользователь $u$ дает $r$ элементу $v$. Неполная матрица очень распространена, так как не все пользователи могут предоставлять свои отзывы обо всех продуктах (например, никто не может оценить десять миллионов песен). Предположим, что $R\in{\mathbb R}^{m\times n}$ является матрицей рейтинга m-by-n, а ранг двухфакторных матриц — $P\в {\mathbb R}^{k\times m}$ и $Q\в {\mathbb R}^{k\times n}$, где $k$ — это ранг приближения. Прогнозируемый рейтинг в строке $u$-й и $v$-м столбце в $R$ будет внутренним произведением $u$-й строки $P$ и $v$-й строки $Q$; то есть $R$ приблизительно соответствует произведению транспонирования $P$($P^T$) и $Q$. Обратите внимание, что $k$ обычно гораздо меньше, чем $m$ и $n$, поэтому $P^T Q$ обычно называют приближением с низким рангом $R$.

Этот тренер включает стохастический метод градиента и метод координатного спуска для поиска $P$ и $Q$ путем минимизации расстояния между (неимеющей частью) $R$ и его приближения $P^T Q$. Включенный метод координатного спуска предназначен специально для одноклассовой матричной факторизации, где все наблюдаемые оценки являются положительными сигналами (то есть все значения оценок имеют значение 1). Обратите внимание, что единственный способ вызвать одноклассовую матричную факторизацию — назначить одноклассовую квадратную потерюфункции потерь при вызове MatrixFactorization(Options). Краткое введение в стандартную матричную факторизацию и одноклассовую матричную факторизацию см. здесь на страницах 6 и 28. Параметр по умолчанию вызывает стандартную матричную факторизацию. Базовую библиотеку, используемую в ML.NET матричной факторизации, можно найти в репозитории Github.

Для пользователей, заинтересованных в математических деталях, см. ссылки ниже.

Ссылки на примеры использования см. в разделе См. также.

Свойства

Info

Содержит TrainerInfo общие параметры для этого средства обучения.

Методы

Fit(IDataView) Обучает и возвращает MatrixFactorizationPredictionTransformer.
Fit(IDataView, IDataView)

Обучает , MatrixFactorizationTrainer используя данные для обучения и проверки, возвращает MatrixFactorizationPredictionTransformer.

GetOutputSchema(SchemaShape)

Распространение схемы для преобразователей. Возвращает выходную схему данных, если входная схема похожа на предоставленную.

Применяется к

См. также раздел