Используйте косинусное сходство с двоичными данными - Mahout
У меня есть логический / двоичный код, в котором идентификатор клиента и продукта обнаруживается, когда клиент фактически купил продукт, и не обнаруживается, если клиент не купил его. Набор данных представлен так:
Я пробовал разные подходы, такие как 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