Создание меры сходства вручную

Чтобы вычислить сходство между двумя примерами, вам нужно объединить все данные признаков для этих двух примеров в одно числовое значение.

Например, рассмотрим набор данных об обуви только с одним признаком: размером обуви. Вы можете количественно определить, насколько похожи две туфли, рассчитав разницу между их размерами. Чем меньше числовая разница между размерами, тем больше сходство между обувью. Такая ручная мера сходства называется ручной мерой сходства .

Что, если вы хотите найти сходство между обувью, используя как размер, так и цвет? Цвет — это категориальные данные , и его сложнее сочетать с числовыми данными размера. Мы увидим, что по мере того, как данные становятся более сложными, создавать ручную меру подобия становится все труднее. Когда ваши данные станут достаточно сложными, вы не сможете создать меру вручную. Вот когда вы переключаетесь на контролируемую меру подобия , где контролируемая модель машинного обучения вычисляет сходство.

Мы оставим контролируемую меру сходства на потом и сосредоточимся здесь на измерении вручную. На данный момент помните, что вы переключаетесь на контролируемую меру подобия, когда у вас возникают проблемы с созданием меры подобия вручную.

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

  • Размер (s): размер обуви, вероятно, образует распределение Гаусса. Подтвердите это. Затем нормализуйте данные.
  • Цена (p): Данные, вероятно, представляют собой распределение Пуассона. Подтвердите это. Если у вас достаточно данных, преобразуйте данные в квантили и масштабируйте до \([0,1]\).
  • Объедините данные с помощью среднеквадратичной ошибки (RMSE). Здесь сходство \(\sqrt{\frac{s^2+p^2}{2}}\).

В качестве упрощенного примера давайте рассчитаем сходство для двух туфель американских размеров 8 и 11 и цен 120 и 150. Поскольку у нас недостаточно данных для понимания распределения, мы просто масштабируем данные без нормализации или использования квантилей.

Действие Метод
Масштабируйте размер. Предположим, что максимально возможный размер обуви равен 20. Разделите 8 и 11 на максимальный размер 20, чтобы получить 0,4 и 0,55.
Масштабируйте цену. Разделите 120 и 150 на максимальную цену 150, чтобы получить 0,8 и 1.
Найдите разницу в размерах.\(0.55 - 0.4 = 0.15\)
Найдите разницу в цене.\(1 - 0.8 = 0.2\)
Найдите среднеквадратичное значение.\(\sqrt{\frac{0.2^2+0.15^2}{2}} = 0.17\)

Интуитивно ваше измеренное сходство должно увеличиваться, когда данные признаков становятся похожими. Вместо этого ваше измеренное сходство на самом деле уменьшается. Заставьте измеренное сходство следовать своей интуиции, вычтя его из 1.

\[\text{Similarity} = 1 - 0.17 = 0.83\]

Как правило, числовые данные можно подготовить, как описано в разделе Подготовка данных , а затем объединить данные с помощью евклидова расстояния.

Что делать, если у вас есть категориальные данные? Категориальные данные могут быть:

  • Однозначный (универсальный), например цвет автомобиля («белый» или «синий», но никогда оба)
  • Многозначный (поливалентный), например жанр фильма (может быть «экшн» и «комедия» одновременно или просто «боевик»)

Если одновалентные данные совпадают, сходство равно 1; в противном случае это 0. С мультивалентными данными сложнее работать. Например, жанры фильмов могут быть проблемой для работы. Чтобы справиться с этой проблемой, предположим, что фильмам назначаются жанры из фиксированного набора жанров. Вычислите сходство, используя отношение общих значений, называемое сходством Жаккара .

Примеры:

  • ["комедия","боевик"] и ["комедия","боевик"] = 1
  • ["комедия","боевик"] и ["боевик"] = ½
  • [«комедия», «боевик»] и [«боевик», «драма»] = ⅓
  • ["комедия","боевик"] и ["научная литература","биографический"] = 0

В следующей таблице приведены еще несколько примеров того, как работать с категориальными данными.

Примеры
Почтовый Код Почтовые индексы, представляющие области, расположенные близко друг к другу, должны иметь большее сходство. Чтобы закодировать информацию, необходимую для точного расчета этого сходства, вы можете преобразовать почтовые индексы в широту и долготу. Для пары почтовых индексов отдельно рассчитайте разницу между их широтой и долготой. Затем добавьте различия, чтобы получить одно числовое значение.
Цвет Предположим, у вас есть данные о цвете в виде текста. Преобразуйте текстовые значения в числовые значения RGB. Теперь вы можете найти разницу в значениях красного, зеленого и синего для двух цветов и объединить эти различия в числовое значение, используя евклидово расстояние.

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

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