Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Формула для веса ребра (КРИТИЧНО) #4

Open
SavchenkoValeriy opened this Issue · 6 comments

2 participants

@SavchenkoValeriy

Опрос:
Какую формулу использовать для веса ребра в графе?
Из имеющихся величин:

  • n - число общих фильмов;
  • d - средняя разница в оценке общих фильмов;

Логично, что вес должен быть некой суммой, одним из слагаемых, которой должен быть d. Второй, как и предлагается на wiki должен быть величиной, убывающей к 0 с ростом n. При этом стоить учитывать, что d принимает значения от 1.2 до 3.0 (данные взяты на основании некоторых наблюдений за просчитыванием графа), и при малых n вклад второго слагаемого (штрафа за малое число общих фильмов) должен быть приблизительно в этих же границах, или по-крайней мере вносить соизмеримый вклад.

Ваши предложения и рассуждения - ниже в комментариях.

@AndrianovPavel
Collaborator

Почему вес - это несколько слагаемых? Можно сделать что-то вроде d/n, то есть получится, что вес ребра - это среднее различие в расчете на один общий фильм, и если люди отличаются в оценке на d, просмотрев n фильмов, логично, что просмотрев 2n, они начнут отличаться в среднем на те же 2d, а вес ребра останется тем же самым. Хотя можно подкрутить коэффициенты, например, 2*d/n.

@SavchenkoValeriy

d = sum( | оценка-первого-пользователя - оценка-второго-пользователя | ) (по всем общим фильмам)/n
то есть это средняя разница в оценке общих фильмов, но ситуация, когда у пользователей 2000 общих фильмов и d = 1.5 и, когда у них же всего 2 общих фильма и такой же d. Но все-таки кажется, что в первом-то случае пользователи будут "поближе" друг к другу в плане предпочтений. Для этого и нужен штраф за малое число общих фильмов

@AndrianovPavel
Collaborator

Я пока не понял, чем мой вариант не устраивает. В твоем примере в первом случае вес будет 1.5 / 2000 = 0.00075, а во втором 1.5 / 2 = 0.75. Действительно, первый вариант "весит" меньше, а значит, находится ближе. Другой вопрос, что, может, разница слишком большая и нужно, например, делить не на n, а на корень из n, или еще более медленно растущий лограрифм.

@SavchenkoValeriy

Просто есть ещё случай, когда два пользователя смотрели много фильмов общих (ну скажем они братья или пара). Опять же эти 2 000. И имеют кардинально разные оценки. Но так как вес ребра в асимптотике 0, то они будут "близки" по графу, что не соответствует ожиданиям.
В общем вес в асимптотике все-таки должен иметь d

@AndrianovPavel
Collaborator

Да, теперь понял. Ну тогда что-нибудь, вроде d(1+1/n). Хотя теперь эта формула перестает давать какой-то физический смысл... Хотя можно будет потом с графом поэксперементировать.

@SavchenkoValeriy

Вот видишь, в итоге все равно пришли к тому же. Модели с двумя слагаемыми, один из которых штраф.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.