Векторные коэффициенты на основе сходства - PullRequest
0 голосов
/ 09 октября 2018

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

User1: [0,3,7,8,5] , [3,5,8,2,4] , [1,5,3,9,4]
User2: [3,1,6,7,9] , [2,4,1,3,8] , [7,8,3,3,1]

Для каждого вектора мне нужно рассчитать коэффициент и на основе этого коэффициента отличить вектор от другого.Я нашел формулы, которые рассчитывали бы коэффициенты на основе сходства двух векторов, чего я не очень хочу. Мне нужна формула, которая рассчитывала бы коэффициент на вектор, а затем я делаю некоторые другие вычисления с этими коэффициентами.формулы для этого?Спасибо

1 Ответ

0 голосов
/ 10 октября 2018

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

Коэффициенты подобия являются функциями f(x, y) -> c, где x и y - векторы, а c - скаляр.Обратите внимание, что f принимает два параметра.f(x,y) = f(y,x), но f(x) не имеет смысла - оно требует сходства x относительно ... ничего.

И что?Мы могли бы просто использовать функцию g(x) = f(x, V), где V - фиксированный вектор.Например, пусть V = [1, 1, ..., 1].Теперь у нас есть монадическая функция, которая дает нам значение подобия для каждого отдельного вектора.Но ...

Знание f(x,y) = c и f(x,z) = c' мало что говорит о f(y,z).Взять векторы в 2-х пространствах x = [1, 1], y = [0, 1], z = [1,0].Функция сходства, симметричная в двух измерениях, сказала бы f(x,y) = f(x,z), но, надеюсь, не = f(y,z) Так что наша функция g, приведенная выше, не очень полезна, потому что знание того, насколько похожи два вектора на V, мало что говорит нам онасколько они похожи друг на друга.


Так что вы можете сделать?Я думаю, что простым решением вашей проблемы было бы изменение алгоритма k ближайших соседей .Это позволяет вам находить векторы, близкие к данному вектору (или, если вы предпочитаете находить кластеры векторов без указания данного вектора, посмотрите clustering )

EDIT: вдохновение из ответа Яхьи: если ваши векторы очень велики, а кластеризация или кластеризация слишком сложны, рассмотрите принцип анализа основных компонентов или какой-то другой метод сокращения их размера (уменьшения количества измерений) - просто имейте в виду, что вы делаете, скорее всего, с потерями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...