Обработка ошибок для непрерывных объектов в системе рекомендаций по фильтрации содержимого

1

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

По мере того как я исследовал, я обнаружил, что практически все примеры фильтрации на основе контента используют статьи/фильмы в качестве примера и смотрят исключительно на использование кодированных функций tf-idf из блоков текста. Это не совсем то, с чем я имел дело, но большинство моих функций были логическими функциями, поэтому создание аналогичного вектора и просмотр косинусного расстояния не было особенно сложным. У меня также была одна непрерывная функция, которую я масштабировал и включал в вектор. Как я уже сказал, это работало, но было довольно неплохо, и я думаю, что знаю часть причины, почему...

Непрерывная функция, которую я использую, - это рейтинг (позвольте назвать эту "вкусность"), где практически во всех случаях лучший балл будет указывать на элемент, более благоприятный для пользователя. Он непрерывный, но он также имеет четкое "направление" (не уверен, что это правильная терминология). Ошибка в одном направлении - это не то же самое, что ошибка в другом.

У меня есть случаи, когда некоторые пользователи дали высокие оценки предметам с посредственными оценками "вкусности", но логически они все равно предпочли бы что-то более вкусное. Этот пользовательский вектор может иметь среднюю вкусность 2,3. Мое понимание расстояния косинуса заключается в том, что в моей модели, если у этого пользователя возникли два новых предмета, которые были точно такими же, за исключением того, что у него была восхитительность 1.0, а у другой была вкусность 4.5, это действительно предпочло бы первое, потому что оно короче расстояние между векторами.

Как мне изменить или включить какой-либо другой вид расстояния здесь, который учитывает, что ошибка/расстояние вкуса в одном направлении не совпадает с ошибкой/расстоянием в другом направлении?

(Как второстепенный вопрос, как мне решить, как наилучшим образом масштабировать эту непрерывную функцию рядом с моими логическими функциями?)

Теги:
machine-learning
cosine-similarity

1 ответ

1
Лучший ответ

Существует два основных подхода к решению этого вопроса:

(1) Напишите свою собственную функцию расстояния. Очевидный подход заключается в том, чтобы удалить элемент deliciousness из каждого вектора, независимо оценив эту разницу. Используйте подобие косинуса на остальной части вектора. Объедините эту фигуру с разницей вкуса по желанию.

(2) Преобразуйте ваши данные о deliciousness, чтобы получившаяся метрика была линейной. Это позволит "нормальной" метрике расстояния выполнять свою работу, как ожидалось.

  • 0
    Прежде всего, спасибо, это действительно полезно. Что касается первого подхода, есть ли какой-то конкретный способ, которым вы бы порекомендовали мне объединить меру сходства косинусов и меру расстояния вкусности? Должен ли я просто сложить их и проверить несколько разных весов?
  • 0
    Вы спрашиваете не того человека: посмотрите в зеркало. Как дополнительный фактор влияет или влияет на общее удовлетворение вашей окончательной рекомендацией? Это функция, которую вы должны воплотить в коде. По крайней мере, без базовых знаний о вашей парадигме и ожиданиях пользователей у меня нет оснований для ввода. Это может быть простое сложение, или среднее гармоническое, или произведение двух цифр - или какая-то другая функция.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню