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 :: Алгоритм рассчета релевантности поста по количеству просмотров и времени публикации

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: выводим формулу
Zuldek
Отправлено: 28 Октября, 2014 - 16:27:11
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Что есть:
1. Дата публикации поста
2. Общее количество просмотров
3. Можем вывести количество просмотров за месяц.

Задача:

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

Как я считаю, величину 3 с количеством просмотров в месяц вводить просто необходимо. Она внесёт в формулу допонлительную точность.

Соответственно, чем старше пост, тем число его просмотров меньше должно учитываться и всё же передавать определённый вес в конечный коэфициент.

Есть у кого-нибудь готовые алгоритмы или варианты подобной формулы?
 
 Top
dXdYdZ
Отправлено: 28 Октября, 2014 - 17:12:47
Post Id


Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013  


Помог: 11 раз(а)




Получается, чем старше пост, тем он должен быть ниже. Это с одной стороны. С другой стороны, чем больше количество просмотров в месяц, тем пост должен быть выше.
Возраст поста=текущая дата-дата рубликации. В таком случае первый множитель должен быть пропорционален 1/возраст поста=1/текущая_дата-дата_публикации+1. Второй множитель должен быть пропорционален количеству просмотров в месяц. В таком случае
CODE (htmlphp):
скопировать код в буфер обмена
  1. релевантность=количество_просмотров_в_единицу_Времени/(текущая_дата-дата_публикации+1)

Например, если пост опубликован сегодня, то его релевантность будет равно количество просмотров_в_единицу_времени/1. Если пост опубликован вчера, то количество просмотров должно быть в 2 раза выше для той же позиции.
Это в простейшем случае. В более сложном случае можно использовать и логарифмы, либо корень квадратный. Например, можно взять логарифм десятичный от количества просмотров для того, чтобы оно так сильно не влияло.

(Отредактировано автором: 28 Октября, 2014 - 17:23:13)

 
 Top
MiksIr
Отправлено: 28 Октября, 2014 - 17:20:53
Post Id


Забанен


Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014  


Помог: 10 раз(а)

[+]


Релевантность должна быть чему-то.

Число просмотров - вообще не показатель для ранжирования, ибо обладает обратной положительной связью.


-----
self-banned
 
 Top
dXdYdZ
Отправлено: 28 Октября, 2014 - 17:22:20
Post Id


Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013  


Помог: 11 раз(а)




Да, я ошибся. Я имею в виду количество просмотров в единицу времени.
(Добавление)
Хотя, конечно, всё равно более старые посты будут более посещаемыми в том числе и по количеству просмотров в единицу времени.
 
 Top
Zuldek
Отправлено: 28 Октября, 2014 - 17:32:38
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




dXdYdZ пишет:
Хотя, конечно, всё равно более старые посты будут более посещаемыми в том числе и по количеству просмотров в единицу времени.

Именно поэтому нужно учитывать не просто просмтры за единицу времени, а и актуальный текущий месяц.

В итоге пришёл к такой формуле пока:


где
a - общее число просмотров поста
b - количество дней с публикации
c - количество просмотров за последний месяц
m - коэфициент важности учета просмотров за месяц в расчётах.

По умолчанию m = 1, если учитывать просмотры за последний месяц нужно ещё больше - увеличиваем этот коэфициент, если меньше - уменьшаем.

Для поста имеющего 500 000 просмотров за 5 лет, но 5 просмотров за текущий месяц, искомый коэфициент будет равен по формуле 2.8.
Для поста имеющего 1000 просмотров, 100 просмотров в день (1000 просмотров за месяц) и опубликованного 10 дней назад, он будет равен 11

(Отредактировано автором: 28 Октября, 2014 - 18:29:35)

 
 Top
dXdYdZ
Отправлено: 28 Октября, 2014 - 17:46:12
Post Id


Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013  


Помог: 11 раз(а)




Не совсем понятно, что такое x и d, если в формуле присутствуют a и b. Наверное, x-это a, а d-это b? В таком случае Вы делите на количество дней с публикации. А если опубликовано сегодня, то количество дней к публикации будет равно 0, и тогда по формуле получится бесконечность.
 
 Top
Tyoma5891
Отправлено: 28 Октября, 2014 - 17:52:36
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




dXdYdZ пишет:
Наверное, x-это a, а d-это b?

наоборот
 
 Top
dXdYdZ
Отправлено: 28 Октября, 2014 - 17:57:02
Post Id


Посетитель


Покинул форум
Сообщений всего: 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 день назад, хотя количество просмотров в день у них одинаковое?

(Отредактировано автором: 28 Октября, 2014 - 17:59:42)

 
 Top
Zuldek
Отправлено: 28 Октября, 2014 - 18:26:56
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




dXdYdZ пишет:
То есть получается, что пост, опубликованный 10 дней назад будет иметь более высокое значение, чем пост, опубликованный 1 день назад, хотя количество просмотров в день у них одинаковое?

(100/10 + 100)/100 > 2 по вашему?
1.1 коэфициент получится.
Потому что количество просмотров за последний месяц у него 100, раз он опубликован 10 дней назад. Поэтому формула отработала правильно.

(Отредактировано автором: 28 Октября, 2014 - 18:30:26)

 
 Top
dXdYdZ
Отправлено: 28 Октября, 2014 - 18:41:14
Post Id


Посетитель


Покинул форум
Сообщений всего: 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 день назад.
(Добавление)
или я что-то не так понял?
 
 Top
Zuldek
Отправлено: 28 Октября, 2014 - 18:50:08
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




dXdYdZ пишет:
То есть пост со 100 просмотров в день, размещённый 10 дней назад, будет выше, чем тот же пост, размещённый 1 день назад.

Разумеется.
Вы считаете это не верно?
Формула учитывает и общее количество просмотров и дату публикации.
Если пост сохранит динамику просмотров, то через 10 дней он получит такой же рейтинг 11.
Если же количество просмотров за 10 дней у него в итоге получится 200 ( к примеру привязанную к дате акцию читали только 2 дня), то рейтинг станет = 2.2

(Отредактировано автором: 29 Октября, 2014 - 12:31:05)

 
 Top
dXdYdZ
Отправлено: 28 Октября, 2014 - 18:55:40
Post Id


Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013  


Помог: 11 раз(а)




Zuldek пишет:
Разумеется.
Вы считаете это не верно?
Формула учитывает и общее количество просмотров и дату публикации.
Если пост сохранит динамику просмотров, то через 10 дней он получит такой же рейтинг 11.
Если же количество просмотров за 10 дней у него в итоге получится 200 ( кпримеру привязанную к дате акцию читали только 2 дня), то рейтинг станет = 2.2

А, ну, я не знал, что так и задумано. Я думал, что более новые посты должны отображаться выше, чем более старые. А если приоритет отдаётся старым постам, то это другое дело. Просто, для чего Вы это делаете, мне точно не известно, поэтому Вам виднее, как правильнее будет.

Получается, что максимальный приоритет при прочих равных условиях Вы отдаёте постам с возрастом от 1 месяца. Это при условии, что количество просмотров будет стабильным.

(Отредактировано автором: 28 Октября, 2014 - 19:00:08)

 
 Top
Zuldek
Отправлено: 29 Октября, 2014 - 12:32:10
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




dXdYdZ пишет:
Получается, что максимальный приоритет при прочих равных условиях Вы отдаёте постам с возрастом от 1 месяца. Это при условии, что количество просмотров будет стабильным.

Похожую по логику используют и поисковые системы отдавая предпочтение более старым ресурсам при прочих равных
(Добавление)
Есть ещё известная IMDb формула
Но под мою задачу её вряд-ли удастся приспособить. Если кому-то покажется что это можно сделать - покажите как.
А нужно мне всего лишь в админке посчитать ориентировочный коэфициент крутости поста на основе указанных показателей для администратора чтобы он пулил лучшие посты в виджет главной страницы как наиболее релевантный по соответствующей тематике. Соответственно считается что посты для которых будет применять формула уже относятся к одной тематике и из них нужно выявить лидеров.
Потому что может быть пост размещённый 5 лет назад имеющий 500 000 просмотрв, и только 1-5 просмотров в месяц, а может быть пост размещённый 10 дней назад и имеющий 1000 просмотров то есть 100 в день и нужно при сохранении веса старым постам дать возможность качественному новому контенту обходить старые по этому коэфициенту.

(Отредактировано автором: 29 Октября, 2014 - 12:43:18)

 
 Top
Panoptik
Отправлено: 29 Октября, 2014 - 12:45:38
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




немного усовершенствую формулу из второго поста

КП - количество просмотров
КПМ - КП за месяц
КофП - коэфициент общего числа просмотров (подбирается эмпирическим путем)
КофМ - коэфициент просмотров за месяц (подбирается)
Д - длительность существования поста в любых удобных вам единицах (днях, часах, секундах) я бы взял в секундах. отпадет необходимость просчитывать нулевые значения

Р - релевантность

Р = (КП*КофП + КПМ*КофМ) / Д

чем таковая не подходит?

(Отредактировано автором: 29 Октября, 2014 - 12:46:38)



-----
Just do it
 
 Top
Zuldek
Отправлено: 29 Октября, 2014 - 12:49:49
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Panoptik пишет:
КофП - коэфициент общего числа просмотров (подбирается эмпирическим путем)
КофМ - коэфициент просмотров за месяц (подбирается)

Пока тем, что у вас две перменные непонятно как подбираются и считаются. Если КофМ == m из формулы, тогда вопрос только по по первой переменной и если она такая же эмпиричиская величина, то вопрос в чем собственно усовершенствование формулы.
Опять же ваша формула учитывает количетсво просмотров за актуальный месяц гораздо меньше чем в моём варианте.

(Отредактировано автором: 30 Октября, 2014 - 12:51:21)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB