наиболее эффективная функция расстояния для совместной фильтрации в weka Java API - PullRequest
0 голосов
/ 12 июля 2011

поэтому я создаю эту систему совместной фильтрации, используя библиотеку машинного обучения Weka JAVA API ...

Я в основном использую фильтр StringToWordVector для преобразования строковых объектов в их разложение по словам ....

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

У меня вопрос, какую функцию расстояния я должен использовать для вычисления расстояния между двумя объектами, которые были отфильтрованы фильтром StringToWordVector ... какой из них наиболее эффективен для этого сценария?

Доступные опции в Weka:

AbstractStringDistanceFunction, ChebyshevDistance, EditDistance, EuclideanDistance, ManhattanDistance, NormalizableDistance

1 Ответ

0 голосов
/ 15 августа 2011

Да, метрики сходства - хорошие времена. Короткий ответ: вы должны попробовать их все и оптимизировать с учетом RMSE, MAE, набора ширины возврата и т. Д.

Кажется, есть различие между расстоянием редактирования и остальной частью этих метрик, поскольку я ожидаю, что алгоритм EditDistance будет работать на самих строках.

Как работает ваш StringToWordVector? Сначала ответьте на этот вопрос, а затем используйте этот ответ, чтобы стимулировать такие мысли, как: что я хочу, чтобы сходство между двумя словами означало в моем приложении (например, семантическое значение перевешивает длину слова).

И пока вы используете StringVectorizer, может показаться, что вы свободны в рассмотрении более распространенных метрик сходства, таких как LogLikelihood, Pearson и Cosine (соответственно). Я думаю, что это стоит делать, поскольку ни одна из перечисленных вами метрик сходства не используется и не изучалась всерьез в литературе, насколько мне известно.

Да будет сходство с тобой!

...