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.
Для пользователей, заинтересованных в математических деталях, см. ссылки ниже.
- Многопоточность реализации используемого стохастического градиента см. в статье Быстрый параллельный метод стохастического градиента для матричной факторизации в системах общей памяти.
- Сведения о вычислениях, выполняемых в одном потоке, см. в статье Расписание скорости обучения для стохастических градиентных методов для матричной факторизации.
- Сведения о методе параллельного спуска координат и формуле факторизации матриц одного класса см. в разделе Выбор отрицательных примеров для одноклассовой матричной факторизации.
- Дополнительные сведения об используемой базовой библиотеке см. в статье LIBMF: a Library for Parallel Matrix Factorization in Shared-Memory Systems.
Ссылки на примеры использования см. в разделе См. также.
Свойства
Info |
Содержит TrainerInfo общие параметры для этого средства обучения. |
Методы
Fit(IDataView) |
|
Fit(IDataView, IDataView) |
Обучает , MatrixFactorizationTrainer используя данные для обучения и проверки, возвращает MatrixFactorizationPredictionTransformer. |
GetOutputSchema(SchemaShape) |
Распространение схемы для преобразователей. Возвращает выходную схему данных, если входная схема похожа на предоставленную. |