У меня есть набор ответов пользователей на предопределенный список вопросов, заданных как истинные, так и ложные. Данные выглядят так:
+---------+-------------+--------+----+
| user_id | question_id | answer | id |
+-------------------------------------+
| 4 | 110 | 0 | 1 |
| 4 | 111 | 1 | 2 |
| 4 | 112 | 1 | 3 |
| 4 | 113 | 0 | 4 |
|---------+-------------+--------+----|
| 6 | 110 | 0 | 5 |
| 6 | 111 | 1 | 6 |
| 6 | 112 | 0 | 7 |
| 6 | 113 | 0 | 8 |
+---------+-------------+--------+----|
Мне нужно найти 10 лучших совпадений для каждого пользователя (запустить один раз для каждого пользователя в системе). Таким образом, чтобы иметь возможность найти 10 других пользователей в порядке убывания наилучшего соответствия на основе ответов (то есть из приведенного выше примера, пользователь 4 и пользователь 6 совместимы на 75% на основе их ответов).
Вот несколько ограничений, которые, как мы надеемся, упростим:
- Каждый пользователь будет иметь не менее 10 ответов, которые необходимо учитывать.
- Каждый ответил на первые 10 вопросов
В идеале это должно быть в состоянии справиться с людьми, которые ответили на множество различных вопросов, которые могут быть не одинаковыми для всех (то есть они пропускают вопросы, на которые они не хотят отвечать.
Спасибо за любую помощь в этом! Я действительно в недоумении, что делать.