Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Алгоритм рассчета релевантности поста по количеству просмотров и времени публикации
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Что есть:
1. Дата публикации поста
2. Общее количество просмотров
3. Можем вывести количество просмотров за месяц.
Задача:
Вывести формулу рассчета коэфициента релевантности поста исходя из числа просмотров, но с учётом даты.
Необходимо, чтобы старые посты имели определённый вес и при этом, новые и популярные посты, которые читают могли ранжироваться по этому коэфициенту выше старых.
Как я считаю, величину 3 с количеством просмотров в месяц вводить просто необходимо. Она внесёт в формулу допонлительную точность.
Соответственно, чем старше пост, тем число его просмотров меньше должно учитываться и всё же передавать определённый вес в конечный коэфициент.
Есть у кого-нибудь готовые алгоритмы или варианты подобной формулы?
dXdYdZ
Отправлено: 28 Октября, 2014 - 17:12:47
Посетитель
Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013
Помог: 11 раз(а)
Получается, чем старше пост, тем он должен быть ниже. Это с одной стороны. С другой стороны, чем больше количество просмотров в месяц, тем пост должен быть выше.
Возраст поста=текущая дата-дата рубликации. В таком случае первый множитель должен быть пропорционален 1/возраст поста=1/текущая_дата-дата_публикации+1. Второй множитель должен быть пропорционален количеству просмотров в месяц. В таком случае
Например, если пост опубликован сегодня, то его релевантность будет равно количество просмотров_в_единицу_времени/1. Если пост опубликован вчера, то количество просмотров должно быть в 2 раза выше для той же позиции.
Это в простейшем случае. В более сложном случае можно использовать и логарифмы, либо корень квадратный. Например, можно взять логарифм десятичный от количества просмотров для того, чтобы оно так сильно не влияло.
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
Релевантность должна быть чему-то.
Число просмотров - вообще не показатель для ранжирования, ибо обладает обратной положительной связью.
----- self-banned
dXdYdZ
Отправлено: 28 Октября, 2014 - 17:22:20
Посетитель
Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013
Помог: 11 раз(а)
Да, я ошибся. Я имею в виду количество просмотров в единицу времени. (Добавление)
Хотя, конечно, всё равно более старые посты будут более посещаемыми в том числе и по количеству просмотров в единицу времени.
Zuldek
Отправлено: 28 Октября, 2014 - 17:32:38
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
dXdYdZ пишет:
Хотя, конечно, всё равно более старые посты будут более посещаемыми в том числе и по количеству просмотров в единицу времени.
Именно поэтому нужно учитывать не просто просмтры за единицу времени, а и актуальный текущий месяц.
В итоге пришёл к такой формуле пока:
где
a - общее число просмотров поста
b - количество дней с публикации
c - количество просмотров за последний месяц
m - коэфициент важности учета просмотров за месяц в расчётах.
По умолчанию m = 1, если учитывать просмотры за последний месяц нужно ещё больше - увеличиваем этот коэфициент, если меньше - уменьшаем.
Для поста имеющего 500 000 просмотров за 5 лет, но 5 просмотров за текущий месяц, искомый коэфициент будет равен по формуле 2.8.
Для поста имеющего 1000 просмотров, 100 просмотров в день (1000 просмотров за месяц) и опубликованного 10 дней назад, он будет равен 11
Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013
Помог: 11 раз(а)
Не совсем понятно, что такое x и d, если в формуле присутствуют a и b. Наверное, x-это a, а d-это b? В таком случае Вы делите на количество дней с публикации. А если опубликовано сегодня, то количество дней к публикации будет равно 0, и тогда по формуле получится бесконечность.
Tyoma5891
Отправлено: 28 Октября, 2014 - 17:52:36
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
dXdYdZ пишет:
Наверное, x-это a, а d-это b?
наоборот
dXdYdZ
Отправлено: 28 Октября, 2014 - 17:57:02
Посетитель
Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013
Помог: 11 раз(а)
Tyoma5891 пишет:
наоборот
В таком случае, чем меньше число просмотров за день, тем k будет больше? (Добавление)
Хотя нет, не так получается. (Добавление)
Всё-таки не наоборот (Добавление)
Zuldek пишет:
В итоге пришёл к такой формуле пока:
где
x - общее число просмотров поста
d - количество дней с публикации
c - количество просмотров за последний месяц
m - коэфициент важности учета просмотров за месяц в расчётах.
По умолчанию m = 1, если учитывать просмотры за последний месяц нужно ещё больше - увеличиваем этот коэфициент, если меньше - уменьшаем.
Для поста имеющего 500 000 просмотров за 5 лет, но 5 просмотров за текущий месяц, искомый коэфициент будет равен по формуле 2.8.
Для поста имеющего 1000 просмотров и опубликованного 10 дней назад, он будет равен 11
А если пост имеет 100 просмотров и опубликован всего 1 день назад, то результат будет равен всего 2. То есть получается, что пост, опубликованный 10 дней назад будет иметь более высокое значение, чем пост, опубликованный 1 день назад, хотя количество просмотров в день у них одинаковое?
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
dXdYdZ пишет:
То есть получается, что пост, опубликованный 10 дней назад будет иметь более высокое значение, чем пост, опубликованный 1 день назад, хотя количество просмотров в день у них одинаковое?
(100/10 + 100)/100 > 2 по вашему?
1.1 коэфициент получится.
Потому что количество просмотров за последний месяц у него 100, раз он опубликован 10 дней назад. Поэтому формула отработала правильно.
Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013
Помог: 11 раз(а)
Zuldek пишет:
(100/10 + 100)/100 > 2 по вашему?
1.1 коэфициент получится.
Потому что количество просмотров за последний месяц у него 100, раз он опубликован 10 дней назад. Поэтому формула отработала правильно.
Ну ведь 100 просмотров в день-это 1000 просмотров за 10 дней. Итого получаем (1000/10+1000)/100=11. Это если пост имеет 100 просмотров в день и опубликован 10 дней назад. А если пост имеет тех же 100 просмотров в день, но опубликован 1 день назад, то получается (100/1+100)/100=2. То есть пост со 100 просмотров в день, размещённый 10 дней назад, будет выше, чем тот же пост, размещённый 1 день назад. (Добавление)
или я что-то не так понял?
Zuldek
Отправлено: 28 Октября, 2014 - 18:50:08
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
dXdYdZ пишет:
То есть пост со 100 просмотров в день, размещённый 10 дней назад, будет выше, чем тот же пост, размещённый 1 день назад.
Разумеется.
Вы считаете это не верно?
Формула учитывает и общее количество просмотров и дату публикации.
Если пост сохранит динамику просмотров, то через 10 дней он получит такой же рейтинг 11.
Если же количество просмотров за 10 дней у него в итоге получится 200 ( к примеру привязанную к дате акцию читали только 2 дня), то рейтинг станет = 2.2
Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013
Помог: 11 раз(а)
Zuldek пишет:
Разумеется.
Вы считаете это не верно?
Формула учитывает и общее количество просмотров и дату публикации.
Если пост сохранит динамику просмотров, то через 10 дней он получит такой же рейтинг 11.
Если же количество просмотров за 10 дней у него в итоге получится 200 ( кпримеру привязанную к дате акцию читали только 2 дня), то рейтинг станет = 2.2
А, ну, я не знал, что так и задумано. Я думал, что более новые посты должны отображаться выше, чем более старые. А если приоритет отдаётся старым постам, то это другое дело. Просто, для чего Вы это делаете, мне точно не известно, поэтому Вам виднее, как правильнее будет.
Получается, что максимальный приоритет при прочих равных условиях Вы отдаёте постам с возрастом от 1 месяца. Это при условии, что количество просмотров будет стабильным.
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
dXdYdZ пишет:
Получается, что максимальный приоритет при прочих равных условиях Вы отдаёте постам с возрастом от 1 месяца. Это при условии, что количество просмотров будет стабильным.
Похожую по логику используют и поисковые системы отдавая предпочтение более старым ресурсам при прочих равных (Добавление)
Есть ещё известная IMDb формула
Но под мою задачу её вряд-ли удастся приспособить. Если кому-то покажется что это можно сделать - покажите как.
А нужно мне всего лишь в админке посчитать ориентировочный коэфициент крутости поста на основе указанных показателей для администратора чтобы он пулил лучшие посты в виджет главной страницы как наиболее релевантный по соответствующей тематике. Соответственно считается что посты для которых будет применять формула уже относятся к одной тематике и из них нужно выявить лидеров.
Потому что может быть пост размещённый 5 лет назад имеющий 500 000 просмотрв, и только 1-5 просмотров в месяц, а может быть пост размещённый 10 дней назад и имеющий 1000 просмотров то есть 100 в день и нужно при сохранении веса старым постам дать возможность качественному новому контенту обходить старые по этому коэфициенту.
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
немного усовершенствую формулу из второго поста
КП - количество просмотров
КПМ - КП за месяц
КофП - коэфициент общего числа просмотров (подбирается эмпирическим путем)
КофМ - коэфициент просмотров за месяц (подбирается)
Д - длительность существования поста в любых удобных вам единицах (днях, часах, секундах) я бы взял в секундах. отпадет необходимость просчитывать нулевые значения
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Panoptik пишет:
КофП - коэфициент общего числа просмотров (подбирается эмпирическим путем)
КофМ - коэфициент просмотров за месяц (подбирается)
Пока тем, что у вас две перменные непонятно как подбираются и считаются. Если КофМ == m из формулы, тогда вопрос только по по первой переменной и если она такая же эмпиричиская величина, то вопрос в чем собственно усовершенствование формулы.
Опять же ваша формула учитывает количетсво просмотров за актуальный месяц гораздо меньше чем в моём варианте.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.