Используйте косинусное сходство с двоичными данными - Mahout

У меня есть логический / двоичный код, в котором идентификатор клиента и продукта обнаруживается, когда клиент фактически купил продукт, и не обнаруживается, если клиент не купил его. Набор данных представлен так:

Dataset

Я пробовал разные подходы, такие как GenericBooleanPrefUserBasedRecommender с подобиями TanimotoCoefficient или LogLikelihood, но я также пробовал GenericUserBasedRecommender с подобием нецентрированного косинуса, и он дал мне высочайшую точность и отзыв 100% и 60% соответственно.

Я не уверен, имеет ли смысл использовать нецентрированное косинусное сходство в этой ситуации, или это неправильная логика? и что делает нецентрированный косинус Similairty с таким набором данных.

Любые идеи будут по достоинству оценены.

Спасибо.

1 ответ

Решение

100% точность невозможна, поэтому что-то не так. Все метрики подобия отлично работают с логическими данными. Помните, что пространство имеет очень высокую размерность.

В ваших образцах данных есть только два элемента (кстати, идентификаторы BTW должны быть равны 0 для старой версии Mahout hadoop). Таким образом, набор данных, как показано, не даст правильных оценок точности.

Я сделал это с большими наборами данных E-Com, и логарифмическая вероятность значительно превосходит другие показатели по логическим данным.

Кстати, Mahout перешел в Spark из Hadoop, и наш единственный показатель - LLR. Полный Универсальный Рекомендатор с хранилищем событий и сервером прогнозирования на основе Mahout-Samsara реализован здесь: http://templates.prediction.io/PredictionIO/template-scala-parallel-universal-recommendation Слайды, описывающие его здесь: http://www.slideshare.net/pferrel/unified-recommender-39986309

Другие вопросы по тегам