FieldAwareFactorizationMachineTrainer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Прогнозирование IEstimator<TTransformer> целевого объекта с помощью модели машинной факторизации с учетом полей, обученной с помощью метода стохастического градиента.
public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
- Наследование
-
FieldAwareFactorizationMachineTrainer
- Реализации
Комментарии
Входные и выходные столбцы
Входные данные столбца меток должны иметь тип Boolean. Входные данные столбцов должны быть вектором известного Singleразмера.
Этот алгоритм обучения выводит следующие столбцы:
Имя выходного столбца | Тип столбца | Описание | |
---|---|---|---|
Score |
Single | Несвязанная оценка, вычисляемая моделью. | |
PredictedLabel |
Boolean | Прогнозируемая метка, зависящая от знака оценки. Отрицательная оценка соответствует значению false , а положительная — значению true . |
|
Probability |
Single | Вероятность, вычисляемая путем калибровки оценки значения true в качестве метки. Значение вероятности находится в диапазоне [0, 1]. |
Чтобы создать этот обучатель, используйте FieldAwareFactorizationMachineFieldAwareFactorizationMachine или FieldAwareFactorizationMachine(Options).
В отличие от других двоичных классификаторов, которые могут поддерживать только один столбец признаков, компьютер факторизации с учетом полей может использовать несколько столбцов признаков. Каждый столбец рассматривается как контейнер некоторых функций, и такой контейнер называется полем. Обратите внимание, что все столбцы признаков должны быть векторами с плавающей запятой, но их размеры могут отличаться. Мотивация разделения признаков на разные поля заключается в том, чтобы моделировать признаки из разных распределений независимо. Например, в онлайн-магазине игр функции, созданные на основе профиля пользователя, и их можно назначить двум разным полям.
Характеристики тренера
Задача машинного обучения | Двоичная классификация |
Требуется ли нормализация? | Да |
Требуется ли кэширование? | Нет |
Обязательный NuGet в дополнение к Microsoft.ML | Нет |
Экспортируемый в ONNX | нет |
Историческая справка
Семейство машин факторизации — это мощная группа моделей для контролируемых задач обучения. Впервые он появился в документе Steffen Rendle «Машины факторизации» в 2010 году. Позже одна из своих обобщенных версий, машины факторизации с учетом полей, стала важным прогнозным модулем в последних системах рекомендаций и конкурсов прогнозирования скорости. Например, ознакомьтесь с выигрышными решениями в KDD-Cup 2012 годах Steffen Rendle (Трек 1 и Трек 2), Criteo's, Avazu и Outbrain в прогнозируемых задачах на Kaggle.
Машины факторизации особенно эффективны, если сочетания признаков очень коррелируют с сигналом, который вы хотите предсказать. Пример пар функций, которые могут формировать важные сочетания, — идентификатор пользователя и идентификатор музыки в рекомендации по музыке. Если набор данных состоит только из плотных числовых признаков, использование машины факторизации не рекомендуется или некоторые признаки должны быть выполнены.
Функция оценки
Компьютер факторизации с учетом полей — это функция оценки, которая сопоставляет векторы признаков из разных полей с скалярной оценкой. Предположим, что все столбцы признаков $m$ объединяются в длинный вектор признаков $\textbf{x} \in {\mathbb R}^n$ и ${\mathcal F}(j)$ обозначает поле признака $j$-th. Соответствующая оценка : $\hat{y}(\textbf{x}) = \langle \textbf{w}, \textbf{x} \rangle + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F}(j')}, \textbf{v}_{j', {\mathcal F}(j)} \rangle x_j x_{j'}$, где $\langle \cdot, \cdot \rangle$ является внутренним оператором продукта, $\textbf{w} \in {\mathbb R}^n$ хранит линейные коэффициенты, и $\textbf{v}_{j, f}\in {\mathbb R}^k$ — это представление функции $j$-th в скрытом пространстве поля $f$-th. Обратите внимание, что $k$ — это скрытое измерение, указанное пользователем.
Прогнозируемая метка является знаком $\hat{y}$. Если $\hat{y} > 0$, эта модель прогнозирует значение true. В противном случае он прогнозирует значение false.
Систематическое введение в машинную факторизацию с учетом полей см. в этом документе
Сведения о алгоритме обучения
Алгоритм, реализованный в FieldAwareFactorizationMachineTrainer , основан на методе стохастического градиента. Сведения об алгоритме описаны в алгоритме 3 в этом интерактивном документе. Функция минимизации потери является логистической потерей, поэтому обученная модель может рассматриваться как нелинейная логистическая регрессия.
Ознакомьтесь с разделом "См. также" ссылки на примеры использования.
Методы
Fit(IDataView) |
Поезда и возвращается FieldAwareFactorizationMachinePredictionTransformer. |
Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters) |
Продолжает обучение FieldAwareFactorizationMachineTrainer использования уже обученных |
GetOutputSchema(SchemaShape) |
Распространение схемы для преобразователей. Возвращает выходную схему данных, если входная схема похожа на указанную. |
Методы расширения
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Добавьте "контрольную точку кэширования" в цепочку оценщика. Это обеспечит обучение подчиненных оценщиков на основе кэшированных данных. Рекомендуется создать контрольную точку кэширования перед обучением, которые принимают несколько передач данных. |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Учитывая оценщик, возвращает объект-оболочку, который будет вызывать делегат один раз Fit(IDataView) . Часто важно, чтобы оценщик возвращал сведения о том, что было в форме, поэтому Fit(IDataView) метод возвращает специально типизированный объект, а не просто общий ITransformer. Однако, в то же время, IEstimator<TTransformer> часто формируются в конвейеры со многими объектами, поэтому нам может потребоваться построить цепочку оценщиков, где EstimatorChain<TLastTransformer> оценщик, для которого мы хотим получить преобразователь, похоронен где-то в этой цепочке. В этом сценарии мы можем подключить делегат, который будет вызываться после вызова соответствия. |
Применяется к
См. также раздел
- FieldAwareFactorizationMachineTrainer.Options
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String[], String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, FieldAwareFactorizationMachineTrainer+Options)