Система рекомендаций Spark ALS имеет прогноз значения больше 1

Я использую алгоритм ALS (implicitPrefs = True) в Spark (алгоритм системы рекомендаций). Обычно после запуска этого алгоритма прогнозируемое значение должно быть от 0 до 1. Но я получил значение больше 1.

    "usn" : 72164,
    "recommendations" : [ 
        {
            "item_code" : "C1346",
            "rating" : 0.756096363067627
        }, 
        {
            "item_code" : "C0117",
            "rating" : 0.966064214706421
        }, 
        {
            "item_code" : "I0009",
            "rating" : 1.00000607967377
        }, 
        {
            "item_code" : "C0102",
            "rating" : 0.974934458732605
        }, 
        {
            "item_code" : "I0853",
            "rating" : 1.03272235393524
        }, 
        {
            "item_code" : "C0103",
            "rating" : 0.928574025630951
        }
    ]

Я не понимаю, почему или что это такое, имеет значение рейтинга больше 1 ("рейтинг": 1,00000607967377 и "рейтинг": 1,03272235393524)

Некоторые похожие вопросы, но я до сих пор не понимаю: MLLib spark - Значение ALStrainImplicit больше 1

Кто-нибудь, помогите мне объяснить ненормальное значение


person Phong Nguyen    schedule 24.10.2017    source источник


Ответы (1)


Не беспокойтесь об этом! В ALS нет ничего плохого.

Тем не менее, оценки прогнозирования, возвращаемые ALS с неявной обратной связью с Apache Spark, не нормализованы, чтобы соответствовать диапазону [0,1], как вы видели. Иногда вы можете даже получить отрицательные значения. (подробнее об этом здесь.)

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

На самом деле, нормализация этих оценок не имеет значения. Причина этого на самом деле в том, что эти оценки мало что значат сами по себе.

Вы не можете использовать RMSE для каждого примера для оценки эффективности ваших рекомендаций. Если вы заинтересованы в оценке этого типа рекомендателей, я советую вам прочитать мой ответ на Как я могу оценить алгоритм неявной обратной связи ALS для рекомендаций в Apache Spark?

Существует множество методов, используемых в исследованиях и/или в промышленности для работы с такими типами результатов. например, вы можете бинаризировать прогнозы на скажем, используя threshold.

person eliasah    schedule 24.10.2017
comment
Вы сказали: Причина этого в том, что эти оценки сами по себе мало что значат . Итак, как рекомендовать пользователя/элемент, если не использовать прогнозные оценки. На данный момент я использую рейтинги после вычисления ALS для рекомендаций для пользователя/элемента. - person Phong Nguyen; 25.10.2017
comment
Ответ на него в последнем абзаце. - person eliasah; 25.10.2017
comment
Я понимаю, что рейтинг = 0,756096363067627 указывает, что пользователю нравится 70% товар. Но с рейтингом = 1,03272235393524 может быть указано, что пользователю нравится 103% товар. Это похоже на отсутствие смысла. Я правильно понял? - person Phong Nguyen; 25.10.2017
comment
На самом деле существует неявная интерпретация этого результата. 0,75 означает, что элемент, скорее всего, понравится пользователю, но это не означает, что он понравится пользователю с вероятностью 70%. Вы должны смотреть на это как на проблему классификации. Вы ставите порог, скажем, 0,5. Выше этого балла можно считать, что это понравится пользователю. - person eliasah; 25.10.2017
comment
Связанный ответ очень важен для понимания оценки рекомендательной системы на основе неявного рейтинга. К сожалению, литературы на эту тему не так много. Но те, на которые я ссылаюсь в другом ответе, объясняют это довольно хорошо. - person eliasah; 25.10.2017
comment
В рекомендательной системе с неявной обратной связью прогнозы действительно служат только для определения порядка элементов для данного пользователя, где более высокие оценки являются более сильными рекомендациями, чем более низкие оценки. Шкала числа (или, собственно, разница между баллами двух предметов) ничего не значит. Правильно использовать эти баллы для сортировки элементов для данного пользователя, а затем выбирать элементы сверху и использовать их для рекомендаций. Нет никакого порога, который вы должны использовать: вы просто всегда выбираете некоторые из первых элементов в отсортированном списке и показываете их пользователю. - person Maciej Kula; 09.11.2017
comment
@MaciejKula Более или менее порог может вас беспокоить, но на самом деле он используется на практике. В противном случае я не вижу, что ваш комментарий добавляет к моему ответу. :) - person eliasah; 09.11.2017
comment
@MaciejKula, ты парень из lightfm, приятно познакомиться! :D - person eliasah; 09.11.2017
comment
Просто хотел подчеркнуть цель ранжирования. Я не видел пороги в использовании, но интересно узнать, что они тоже полезны! (И мне тоже приятно познакомиться.) - person Maciej Kula; 09.11.2017
comment
@MaciejKula Я не знал об этом, пока не столкнулся с этим в книге Агарвала о статистических методах для рекомендательных систем. Но вы абсолютно правы. - person eliasah; 09.11.2017
comment
@MaciejKula мой связанный ответ подчеркивает цель ранжирования. Было бы неплохо, если бы вы могли взглянуть и сказать мне, что вы думаете - person eliasah; 09.11.2017