Статистика для сайтов онлайн знакомств

10

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

Предположим, у них есть данные о результатах прошлых матчей (например, 1 = счастливо женат, 0 = нет 2-го свидания).

Далее, давайте предположим, что у них было 2 вопроса о предпочтениях,

  • «Насколько вам нравится активный отдых? (1 = сильно не нравится, 5 = сильно нравится)»
  • «Насколько оптимистично вы относитесь к жизни? (1 = сильно не нравится, 5 = сильно нравится)»

Предположим также, что для каждого вопроса о предпочтениях у них есть показатель «Насколько важно, чтобы ваш супруг разделял ваши предпочтения? (1 = не важно, 3 = очень важно)»

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

d_a_c321
источник
2
Я думал, что удачный матч случится, когда девушка красивая или мужчина богатый. Все остальное вторично.
user4951
4
Проверьте blog.okcupid.com - где-то говорят о базовых моделях соответствия.
Феликс С
Можете ли вы упомянуть, какие вещи вы хотели бы глубже? Ответ Майкла - довольно солидный обзор.
Дан
Если вы прочитали патент (патент 6,735,568 - google.com/… ) на EHarmony, то их система использует комбинацию Принципиального анализа компонентов и Факторного анализа и использует нейронную сеть. Как уже упоминалось, такие методы, как K-NN, CARTS и GLM, также будут хорошо работать.
Крис Симокат
@ChrisSimokat - ВАУ! Большое спасибо за удивительную ссылку. Это интересно, хотя. Я никогда не думал, что вы могли бы «защищать авторские права» статистическими методами и алгоритмами.
d_a_c321

Ответы:

4

Однажды я поговорил с кем-то, кто работает на одном из сайтов онлайн-знакомств, который использует статистические методы (вероятно, я бы не сказал, кто). Это было довольно интересно - для начала они использовали очень простые вещи, такие как ближайшие соседи с евклидовым или L_1 (городским) расстоянием между векторами профиля, но велась дискуссия о том, было ли совпадение двух людей, которые были слишком похожи, хорошим или плохим предмет. Затем он сказал, что теперь они собрали много данных (кого интересовало, кто, кто от кого, кто женился и т. Д. И т. Д.), Они используют это для постоянной переподготовки моделей. Работа в инкрементно-пакетной среде, в которой они периодически обновляют свои модели, используя пакеты данных, а затем пересчитывают вероятности совпадения в базе данных. Довольно интересные вещи, но я

TDC
источник
3

Вы просили простую модель. Вот как я бы начал с кода R:

 glm(match ~ outdoorDif*outdoorImport + optimistDif*optimistImport,
     family=binomial(link="logit"))

outdoorDif = разница ответов двух людей о том, насколько им нравится активный отдых. outdoorImport = среднее из двух ответов о важности совпадения в отношении ответов об отдыхе на свежем воздухе.

Символ * означает, что предыдущие и последующие термины взаимодействуют и также включены отдельно.

Вы предполагаете, что данные о совпадении являются двоичными с единственными двумя вариантами: «счастливо женат» и «нет второго свидания», так что именно это я и предполагал при выборе модели логита. Это не кажется реалистичным. Если у вас есть более двух возможных результатов, вам нужно переключиться на полиномиальный или упорядоченный логит или какую-то подобную модель.

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

Майкл Бишоп
источник
Спасибо за отличный ответ .. Я даю вам награду! :) Это похоже на хороший подход. Возможно, если у вас есть N вопросов, которые вписываются в M-подобные категории (например, вопросы по легкой атлетике), вы можете обогатить модель, используя среднее значение важности и различий в этой категории, и добавить его в качестве дополнительного термина. Это не идеально, но это может быть простой способ уловить взаимодействие нескольких коррелированных переменных. Еще раз спасибо, я был бы рад услышать любые другие мысли, которые не сделали ваш ответ;).
d_a_c321
Не следует ли сначала нормализовать ответы? Если бы всем нравилось проводить время на открытом воздухе, то ответ на открытом воздухе должен стать менее актуальным, поскольку он будет плохим предиктором совместимости.
Sklivvz
@ Skliwz, я не уверен, как бы вы нормализовали ответ с множественным выбором (порядковый). Кроме того, помните, что линейные преобразования переменных непрерывных предикторов иногда желательны по причинам, обсуждаемым здесь: stats.stackexchange.com/q/7112/3748 и здесь: stats.stackexchange.com/q/19216/3748, но они не изменят предсказания моделей, исключающие некоторые необычные вычислительные проблемы. Если всем нравится проводить время на открытом воздухе, то ответ на открытом воздухе в равной степени менее актуален, но я не думаю, что это действительно проблема для модели, как я ее определил. (Не то чтобы моя модель идеальна)
Майкл Бишоп
1

Один простой подход заключается в следующем.

Для двух вопросов о предпочтениях возьмите абсолютную разницу между ответами двух респондентов, указав две переменные, например z1 и z2, вместо четырех.

Для вопросов важности я мог бы создать оценку, которая комбинирует два ответа. Если бы ответы были, скажем, (1,1), я бы дал 1, a (1,2) или (2,1) получает 2, a (1,3) или (3,1) получает 3, a (2,3) или (3,2) получает 4, а (3,3) получает 5. Давайте назовем это «оценкой важности». Альтернативой было бы просто использовать max (response), давая 3 категории вместо 5, но я думаю, что версия 5 категории лучше.

Я бы сейчас создал десять переменных, x1 - x10 (для конкретности), все со значениями по умолчанию, равными нулю. Для тех наблюдений с оценкой важности для первого вопроса = 1, x1 = z1. Если оценка важности для второго вопроса также = 1, x2 = z2. Для тех наблюдений с оценкой важности для первого вопроса = 2, x3 = z1 и если оценка важности для второго вопроса = 2, x4 = z2 и так далее. Для каждого наблюдения точно один из x1, x3, x5, x7, x9! = 0 и аналогично для x2, x4, x6, x8, x10.

Сделав все это, я запустил логистическую регрессию с двоичным результатом в качестве целевой переменной и х1 - х10 в качестве регрессоров.

Более сложные версии этого могут создать больше оценок важности, позволяя по-разному относиться к важности респондентов мужского и женского пола, например, a (1,2)! = A (2,1), где мы упорядочили ответы по полу.

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

Другой недостаток заключается в том, что по мере увеличения важности влияние данной разницы между предпочтениями на p (сбой) также будет увеличиваться, что подразумевает связь между коэффициентами (x1, x3, x5, x7, x9), а также между коэффициентами (х2, х4, х6, х8, х10). (Вероятно, не полный порядок, поскольку мне априори не ясно, как (2,2) показатель важности соотносится с (1,3) показателем важности.) Однако мы не навязывали это в модели. Я, вероятно, сначала проигнорирую это, и посмотрю, удивлен ли я результатами.

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

jbowman
источник