Метрика сходства на основе элементов

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

Пирсон, Спирмен, Евклидово, Танимото и логарифмическое правдоподобие


person tlauer    schedule 25.11.2014    source источник
comment
Вы видели ответ ниже? Это отвечает на ваш вопрос? Когда кто-то помогает вам, вы должны ценить усилия.   -  person Dragan Milcevski    schedule 17.12.2014


Ответы (1)


Если у вас есть значения предпочтений, вы должны использовать метрики подобия личностной корреляции или евклидова расстояния. Если у вас нет значений предпочтения, вы должны использовать коэффициент Танимото или логарифмическое правдоподобие. Чтобы выбрать, какой из суженных использовать, вы должны выполнить оценку своего набора данных. Вот почему используется оценочная структура mahout. Вы можете оценить многие показатели, такие как среднеквадратическая ошибка (MSE), абсолютная среднеквадратическая ошибка, точность, полнота, MAP...

Я закодировал скорректированное косинусное сходство, вариант корреляции Пирсона, который дает лучшие результаты, но медленнее.

person Dragan Milcevski    schedule 26.11.2014
comment
о скорректированном косинусном сходстве: Mahout не предлагает для этого никакого стандартного метода? Я создаю рекомендатель на основе элементов, но я должен учитывать предвзятость рейтинга пользователя, и я не могу найти функцию, которая делает это из коробки. Вы знаете какой-нибудь? - person PLB; 02.04.2015
comment
Довольно легко создать собственное скорректированное косинусное сходство. Просто расширьте класс ItemSimilarity и загляните в PearsonCorrelationSimilarity, и если у вас возникнут проблемы, откройте новый вопрос. Я вставлю созданный мной код. Здесь нет места. - person Dragan Milcevski; 14.04.2015
comment
Спасибо. На самом деле я уже создал этот вопрос: рекомендатель"> stackoverflow.com/questions/29419222/. Мне сказали люди в списке рассылки Mahout, что это очень плохая практика, и на самом деле нет смысла кодировать ее. Так что я даже не пытался, потому что у меня было мало времени. Но если вы хотите вставить свой код, я обязательно посмотрю! - person PLB; 14.04.2015
comment
Я вставил туда свой код. Просто чтобы вы знали, эта реализация немного медленнее, чем PearsonCorrelationSimilarity, из-за способа вычисления сходства. - person Dragan Milcevski; 14.04.2015