В этом примере показано, как сгенерировать вложения, используемые в контролируемой мере подобия.
Представьте, что у вас есть тот же набор данных о жилье, который вы использовали при создании меры сходства вручную :
Особенность | Тип |
---|---|
Цена | Положительное число |
Размер | Положительное значение с плавающей запятой в квадратных метрах |
Почтовый Код | Целое число |
Количество спален | Целое число |
Тип дома | Текстовое значение из «single_family», «multi-family», «квартира», «квартира». |
Гараж | 0/1 для нет/да |
Цвета | Многовалентный категориальный: одно или несколько значений стандартных цветов «белый», «желтый», «зеленый» и т. д. |
Предварительная обработка данных
Прежде чем использовать данные объектов в качестве входных данных, вам необходимо предварительно обработать данные. Шаги предварительной обработки основаны на шагах, которые вы предприняли при создании меры сходства вручную. Вот краткое изложение:
Особенность | Тип или распространение | Действие |
---|---|---|
Цена | распределение Пуассона | Квантуйте и масштабируйте до [0,1]. |
Размер | распределение Пуассона | Квантуйте и масштабируйте до [0,1]. |
Почтовый Код | Категориальный | Преобразование в долготу и широту, квантизация и масштабирование до [0,1]. |
Количество спален | Целое число | Обрежьте выбросы и масштабируйте до [0,1]. |
Тип дома | Категориальный | Преобразование в горячее кодирование. . |
Гараж | 0 или 1 | Оставить как есть. |
Цвета | Категориальный | Преобразуйте в значения RGB и обработайте как числовые данные. |
Для получения дополнительной информации о горячем кодировании см. Вложения: категориальные входные данные .
Выберите Predictor или Autoencoder
Для создания вложений вы можете выбрать либо автоэнкодер, либо предиктор. Помните, что по умолчанию вы выбираете автоэнкодер. Вместо этого вы выбираете предиктор, если определенные функции в вашем наборе данных определяют сходство. Для полноты рассмотрим оба случая.
Обучите предиктора
Вам нужно выбрать те функции в качестве обучающих меток для вашей DNN, которые важны для определения сходства между вашими примерами. Предположим, что цена наиболее важна для определения сходства между домами.
Выберите цену в качестве обучающей метки и удалите ее из входных данных объекта в DNN. Обучите DNN, используя все остальные функции в качестве входных данных. Для обучения функция потерь — это просто MSE между прогнозируемой и фактической ценой. Чтобы узнать, как обучить DNN, см. Обучение нейронных сетей .
Обучить автоэнкодер
Обучите автоэнкодер на нашем наборе данных, выполнив следующие действия:
- Убедитесь, что скрытые слои автоэнкодера меньше входного и выходного слоев.
- Рассчитайте потери для каждого выхода, как описано в разделе « Контролируемая мера подобия» .
- Создайте функцию потерь путем суммирования потерь для каждого выхода. Убедитесь, что вы одинаково оцениваете потери для каждой функции. Например, поскольку данные о цвете обрабатываются в формате RGB, взвешивайте каждый выходной сигнал RGB на 1/3.
- Тренируйте DNN.
Извлечение вложений из DNN
После обучения вашей DNN, будь то предиктор или автоэнкодер, извлеките вложение для примера из DNN. Извлеките вложение, используя данные объектов примера в качестве входных данных, и прочитайте выходные данные последнего скрытого слоя. Эти выходные данные формируют вектор встраивания. Помните, что векторы для похожих домов должны быть ближе друг к другу, чем векторы для разных домов.
Далее вы увидите, как количественно определить сходство пар примеров с помощью их векторов встраивания.