Введение в алгоритмы обучения предпочтениям и парного обучения с использованием методов линейной алгебры, статистики и машинного обучения
Недавно друг написал мне: «Эндрю, я получил тонну совпадений на Tinder, но все еще не смог найти ни одного. Думаю, это потому, что я недостаточно использую линейную алгебру. Можете ли вы помочь мне?"
И я ответил: «Ого, это странно конкретный вопрос. Это похоже на фальшивую ситуацию. Но да, конечно, я посмотрю, что я могу сделать ». В этой статье мы собираемся помочь моему другу найти тот. Но как?
Мы собираемся разбить этот вопрос на несколько частей. В части 1 мы рассмотрим построение векторных представлений человеческих характеристик и вычисление выравнивания между двумя векторами. Во второй части мы воспользуемся алгоритмом обучения предпочтениям для весовых категорий и найдем наиболее релевантные совпадения. И, надеюсь, мы сможем решить вопрос моего друга.
Часть 1: Выравнивание вектора
Наша первая задача - разделить человеческие характеристики на категории. Кора этого приговора намного хуже, чем его укус. Дискретизация означает представление набора с использованием различных и индивидуальных величин. Например, мы можем разделить человеческие характеристики интроверсии на 5 категорий: Очень интровертный, Скорее интровертный, Ни Интровертный, ни Экстравертный, Скорее экстравертный, Очень экстравертный. Здесь мы используем шкалу Лайкерта.
И мы можем сделать это для любых человеческих качеств, таких как чувство юмора или интеллект. Однако мы также можем сделать это для любого интереса. Скажем, я люблю ходить в походы - одна из моих характеристик может варьироваться от Совершенно не заинтересован в кемпинге до Очень Интересуется кемпингом. Однако формирование вашего набора характеристик зависит от вас. Математика здесь не особо поможет.
Допустим, у меня есть набор характеристик C = {C₀, C₁, C₂, C₃}
, где C₀
может быть интроверсией, C₁
может быть чувством юмора и т. Д. Каждый Cᵢ
будет находиться по шкале Лайкерта с каждым ответом, соответствующим числу от 0 до 4. В случае C₀
, 0 = Очень интровертный, 2 = Ни интроверт, ни экстраверт, и 4 = очень экстраверт. Для любого человека он будет иметь векторное представление для C, где каждый Cᵢ
представляет его оценку по шкале Лайкерта для этой характеристики. Мы назовем это векторное представление C-вектором.
Рассмотрим пример ниже. Предположим, что единственные категории, которые меня волнуют, относятся к другому человеку: Интроверсия, Юмор и Организация. А если я немного экстраверт, могу отпустить пару шуток, и мне нравится содержать свой дом в чистоте. Это приводит к C-вектору {3, 1, 4}. Предположим, что моя идеальная вторая половинка - общительный комик, у которого грязная комната. В результате получается вектор {4, 0, 1}. Это показано ниже.
Теперь, когда у нас есть два вектора, мы можем измерить расстояние, используя Евклидово расстояние. Для двух векторов p и q евклидово расстояние между этими векторами является квадратным корнем из суммы квадратов разности между каждым элементом.
Мы можем разделить этот результат на √(4²*N)
, где N - количество категорий. Это нормализует наш результат до числа от 0 до 1. Мы можем интерпретировать это значение как процентное выравнивание. Мы назовем это нормализованным евклидовым расстоянием (NED).
Однако, как гласит старая пословица - «Противоположности притягиваются». Итак, мы определим процентное соотношение для представления идеального выравнивания. Если вы верите, что абсолютные противоположности притягиваются, ваше идеальное выравнивание будет 1. Если вы хотите встречаться с точной копией себя, это будет 0. Удачи вам, Нарцисс.
Итак, для приведенного выше примера с векторами {3, 1, 4} и {4, 0, 1} NED составляет 47,8%. Мы можем найти идеальные совпадения, посмотрев, какие результаты наиболее близки к вашему идеальному совпадению. Но, возвращаясь к нашему первоначальному вопросу, я дал своему другу этот алгоритм, но он все еще не нашел его. Поэтому, естественно, мы обратимся к математике и машинному обучению.
Интуитивно мы знаем, что не все предпочтения одинаковы. Например, меня больше волнует юмор, чем организация. В этом случае согласованность в юморе должна быть более важной, в то время как согласованность в организации менее важна. Мы должны соответствующим образом взвесить категории. Но как? Используя машинное обучение!
Часть 2: Машинное обучение
Предположим, у нас есть существующий набор совпадений. Мы назовем этот набор M={M₀, M₁, M₂, … , Mᵣ}
с соответствиями r. Мы определим наш набор категорий как C = {C₀, C₁, C₂, … , Cᵥ}
с категориями v. Мы разделим наш набор M на два подмножества M₁
и M₂
. M₁
содержит наших совпадений, с которыми у нас было положительное взаимодействие. M₂
содержит наши совпадения, с которыми мы отрицательно взаимодействовали.
Следующим шагом является поиск совпадений между подмножествами M₁
и M₂
. Идея здесь проста. Мы можем посмотреть на среднее значение для каждой категории и найти вектор идеального человека.
Мы будем постоянно обновлять этот вектор по мере роста M₁
и M₂
. Назовем этот вектор Avg-M1
. Точно так же мы можем создать вектор неидеального человека, усредняя наблюдаемые категории по M₂
. Мы назовем это Avg-M2
.
Затем мы можем взять новый вектор человека и вычислить расстояние от Avg-M1
и Avg-M2
. Затем мы вернем результаты, увидев, какие векторы минимизируют расстояние от Avg-M1
и максимизируют расстояние от Avg-M2
.
Мы будем использовать приведенные ниже данные для тестирования наших методов. Предположим, у нас есть два предпочтения среди 5 категорий как для положительных, так и для отрицательных совпадений. Это показано зеленым для M₁
и красным для M₂
.
Как и ожидалось, все остальные категории близки к 2. Ниже мы смоделируем 10 новых совпадений. Мы ожидаем, что Match-New-1
и Match-New-2
будут работать хорошо, поскольку они близки к Avg-M1
и далеки от Avg-M2
. Точно так же мы ожидаем, что Match-New-3
и Match-New-4
будут плохо работать, поскольку они далеки от Avg-M1
и близки к Avg-M2
. Остальные совпадения генерируются случайным образом и не должны располагаться в каком-либо определенном порядке. Результаты показаны ниже.
И получаем именно то, на что рассчитывали! Мы эффективно взвесили наши категории. Для категорий с равномерным распределением (т. Е. Случайно сгенерированных C4
) значение нового совпадения в этой категории не имеет большого значения. Однако, если категория важна, она, скорее всего, будет иметь высокое или низкое значение. Это потому, что 0 означает Очень X, а 4 означает Очень Y. Несоосность здесь более выражена. Ранжируя наши новые совпадения, мы гарантируем, что наиболее релевантные категории будут считаться наиболее важными.
Этот алгоритм легко обобщается на любой алгоритм сопряжения. Netflix может использовать его, чтобы рекомендовать новые фильмы. Barnes & Noble может использовать это, чтобы предложить похожие книги. Биржевые маклеры могут использовать его для дальнейшего инвестирования в сектор или класс активов, предлагая аналогичные активы. И, конечно же, это работает для Tinder.
Наш подход здесь силен, потому что он становится только лучше с большим количеством точек данных. Чем больше категорий, тем лучше. Чем больше совпадений, тем лучше. Чем точнее будет ваша шкала, тем лучше. Чем больше нюансов, тем лучше. Но можем ли мы развить этот подход? Рассмотрим диаграмму ниже.
Предположим, мы скармливали этой модели набор обучающих данных. Давайте определим Y=1
, если совпадение положительное, и Y=0
, если совпадение отрицательное. Это известно как двоичная классификация. Напомним, что M1
- это набор всех совпадений, где Y=1
и M2
- это набор всех совпадений, где Y=0
. Для каждого элемента в M1
и M2
мы знаем C1
, C2
и C3
. Следовательно, мы можем обучить эту модель назначать веса соответствующим образом, чтобы генерировать правильный результат.
Это очень простая нейронная сеть, известная как однослойный перцептрон. Наша функция f()
известна как функция активации. Добавление большего количества входов и выходов повышает точность, позволяя улавливать больше нюансов.
Добавление большего количества слоев дает глубокую нейронную сеть, которая может классифицировать с высокой точностью. Для тех, кто хочет больше узнать о нейронных сетях, см. Здесь. Для тех, кто заинтересован в изучении нейронных сетей и обучении предпочтениям, здесь представляет собой подробный технический документ.
Спасибо за прочтение!
Вопросы? Комментарии? Напишите мне на [email protected]. Буду рад услышать от вас!
Примечание редактора: Heartbeat - это онлайн-публикация и сообщество, созданное авторами и посвященное предоставлению первоклассных образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.
Независимая редакция, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по обработке данных и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.
Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.