Здесь нет сложных и быстрых ответов, поскольку ответы здесь сильно зависят от вашего ввода и проблемной области. По этой причине большая часть работы машинного обучения - это искусство (а не наука) подготовки вашего вклада. Я мог бы дать вам несколько общих идей для размышления. У вас есть две проблемы: сделать значимое сходство между каждым из этих элементов, а затем объединить их.
Сходство города звучит разумно, но на самом деле зависит от вашего домена. Действительно ли так, что нахождение в одном городе означает все, а нахождение в соседних городах ничего не значит? Например, значит ли это быть в городах одинакового размера? В том же состоянии? Если они делают, ваше сходство должно отражать это.
Образование: Я понимаю, почему вы можете использовать косинусное сходство, но это не решит реальную проблему, связанную с разными токенами, которые означают одно и то же. Вам нужны "eng" и "engineering", чтобы соответствовать, и "ba" и "бакалавры", и тому подобное. Как только вы подготовите токены таким образом, это может дать хорошие результаты.
Интерес: я не думаю, что косинус будет лучшим выбором здесь, попробуйте простое подобие коэффициента танимото (просто размер пересечения по размеру объединения).
Вы не можете просто суммировать их, так как я предполагаю, что вы все еще хотите значение в диапазоне [0,1]. Вы могли бы усреднить их. Это делает предположение, что выходные данные каждого из них прямо сопоставимы, что это те же самые «единицы», если хотите. Их здесь нет; например, это не так, как если бы они были вероятностями.
На практике может все же работать нормально, чтобы усреднить их, возможно, с весами. Например, находиться в одном городе здесь так же важно, как и иметь точно такие же интересы. Это правда или оно должно быть менее важным?
Вы можете попробовать и протестировать различные варианты и веса, так как, надеюсь, у вас есть какая-то схема для тестирования на исторических данных. Я хотел бы указать вам на наш проект, Mahout , так как он имеет полную структуру для рекомендаций и оценки.
Однако все эти виды решений являются хакерскими и эвристическими. Я думаю, что вы, возможно, захотите использовать более формальный подход к кодированию функций и сходствам. Если вы готовы купить книгу и вам нравится Mahout, Mahout в действии подробно расскажет в главах о кластеризации, как выбирать и кодировать объекты, а затем как сделать из них одно сходство.