Пример создания вложений

В этом примере показано, как сгенерировать вложения, используемые в контролируемой мере подобия.

Представьте, что у вас есть тот же набор данных о жилье, который вы использовали при создании меры сходства вручную :

Особенность Тип
Цена Положительное число
Размер Положительное значение с плавающей запятой в квадратных метрах
Почтовый Код Целое число
Количество спален Целое число
Тип дома Текстовое значение из «single_family», «multi-family», «квартира», «квартира».
Гараж 0/1 для нет/да
Цвета Многовалентный категориальный: одно или несколько значений стандартных цветов «белый», «желтый», «зеленый» и т. д.

Предварительная обработка данных

Прежде чем использовать данные объектов в качестве входных данных, вам необходимо предварительно обработать данные. Шаги предварительной обработки основаны на шагах, которые вы предприняли при создании меры сходства вручную. Вот краткое изложение:

Особенность Тип или распространение Действие
Цена распределение Пуассона Квантуйте и масштабируйте до [0,1].
Размер распределение Пуассона Квантуйте и масштабируйте до [0,1].
Почтовый Код Категориальный Преобразование в долготу и широту, квантизация и масштабирование до [0,1].
Количество спален Целое число Обрежьте выбросы и масштабируйте до [0,1].
Тип дома Категориальный Преобразование в горячее кодирование. .
Гараж 0 или 1 Оставить как есть.
Цвета Категориальный Преобразуйте в значения RGB и обработайте как числовые данные.

Для получения дополнительной информации о горячем кодировании см. Вложения: категориальные входные данные .

Выберите Predictor или Autoencoder

Для создания вложений вы можете выбрать либо автоэнкодер, либо предиктор. Помните, что по умолчанию вы выбираете автоэнкодер. Вместо этого вы выбираете предиктор, если определенные функции в вашем наборе данных определяют сходство. Для полноты рассмотрим оба случая.

Обучите предиктора

Вам нужно выбрать те функции в качестве обучающих меток для вашей DNN, которые важны для определения сходства между вашими примерами. Предположим, что цена наиболее важна для определения сходства между домами.

Выберите цену в качестве обучающей метки и удалите ее из входных данных объекта в DNN. Обучите DNN, используя все остальные функции в качестве входных данных. Для обучения функция потерь — это просто MSE между прогнозируемой и фактической ценой. Чтобы узнать, как обучить DNN, см. Обучение нейронных сетей .

Обучить автоэнкодер

Обучите автоэнкодер на нашем наборе данных, выполнив следующие действия:

  1. Убедитесь, что скрытые слои автоэнкодера меньше входного и выходного слоев.
  2. Рассчитайте потери для каждого выхода, как описано в разделе « Контролируемая мера подобия» .
  3. Создайте функцию потерь путем суммирования потерь для каждого выхода. Убедитесь, что вы одинаково оцениваете потери для каждой функции. Например, поскольку данные о цвете обрабатываются в формате RGB, взвешивайте каждый выходной сигнал RGB на 1/3.
  4. Тренируйте DNN.

Извлечение вложений из DNN

После обучения вашей DNN, будь то предиктор или автоэнкодер, извлеките вложение для примера из DNN. Извлеките вложение, используя данные объектов примера в качестве входных данных, и прочитайте выходные данные последнего скрытого слоя. Эти выходные данные формируют вектор встраивания. Помните, что векторы для похожих домов должны быть ближе друг к другу, чем векторы для разных домов.

Далее вы увидите, как количественно определить сходство пар примеров с помощью их векторов встраивания.