Система управления показами баннеров
Из прошлого «творчества» — Система Динамического Управления Показами Баннеров, или «крутилка» баннеров, придуманная для http://www.commercialrealty.ru/, но так и не реализованная по причине передачи оного каким-то УГ и плавного умирания. Представляет из себя набор скриптов, предоставляющих возможности гибкого управления показом разных баннеров на одном и том же месте, а так же сбора статистики показов и переходов по баннерам.
Содержание
Подробно
На всех страницах возможно размещение различных типов баннеров.
Требуется реализация следующих возможностей:
- базовая характеристика баннера:
- вес (целое число) — количество показов баннера всегда должно быть пропорционально его весу.
- ограничения:
- размещение баннера на заданный срок
- размещение баннера на заданного число показов
- размещение баннера на заданное число переходов
- в случае размещения на заданное число показов или переходов — также задание сроков («дедлайнов»), до которых показы/переходы «должны» произойти.
- Так как очевидным является тот факт, что гарантию заданного ненулевого количества показов до заданного срока программно обеспечить принципиально невозможно, слова «дедлайн» и «должны» взяты в кавычки. Слово «должны» означает в данном случае «следовало бы», то есть программа должна стараться обеспечить выполнение этих условий, однако не гарантировать их выполнение…
- сбор статистики по всему сайту, отдельным типам баннеров или отдельным местам размещения баннеров; по дням или месяцам:
- статистика показов
- статистика переходов
- CTR (отношение количества переходов к количеству показов)
- простое прогнозирование всех характеристик (очевидно, потребуется для размещения по «дедлайнам»)
Вычисление прогноза
Недели разбиваются на дни, дни — на часы. Каждый час бывает двух «типов» — либо час № такой-то рабочего дня, либо час № такой-то выходного дня.
Далее, каждый час прогноз вычисляется по следующей формуле (отдельно для каждого часа каждого типа):
Где — элемент соответствующего временного ряда, отстоящий от прогнозируемого на i элементов назад, а — момент начала ведения прогноза, при этом максимальное значение n задаётся из панели управления и старые данные просто удаляются, за ненадобностью.
А вот по-научному данный простой «метод-в-лоб» называется «трендовый анализ с экспоненциальным сглаживанием».
Размещение «по дедлайнам»
В основе схемы размещения по дедлайнам лежит периодический пересчёт весов баннеров, размещённых по дедлайну, на основе прогноза количества показов.
Рассмотрим баннеры, размещаемые по дедлайну количества показов. Случай размещения по дедлайну количества переходов сводится к нему методом деления числа переходов на текущий CTR сайта (т.е сайта полностью), и присвоения получаемого числа требуемому количеству показов. При этом ещё и увеличится точность, так как в случае кликов мы имеем дело с гораздо менее редким событием => мало прецедентов.
Рассмотрим некоторый отдельный тип баннеров. Рассматриваем именно тип по той причине, что внутри одного типа все баннеры равнозначны, а для разных типов прогнозирование ведётся раздельно.
- Пусть есть k баннеров, размещённых просто с весом и/или также простыми ограничениями, пусть сумма их весов равна .
- Пусть всего есть n баннеров, тогда n-k — число баннеров, размещённых по дедлайнам.
- Пусть — требуемое до дедлайна число показов j-ого баннера, размещённого по дедлайну.
- Пусть — неизвестный вес j-ого баннера, размещённого по дедлайну.
Обозначим сумму всех неизвестных весов за W.
- Пусть — время в часах до наступления дедлайна.
- Пусть — количество «типов часов».
- Пусть — количество часов i-ого типа до наступления дедлайна.
- Пусть — текущий прогноз суммарного числа показов баннеров для i-ого «типа часа».
Тогда — прогнозируемое суммарное количество показов баннеров выбранного типа на страницах сайта за время, оставшееся до дедлайна.
Далее для каждого j-ого баннера запишем уравнение:
Или:
Или:
Таким образом, мы получили СЛАУ из n-k уравнений относительно n-k неизвестных , к решению которой мы должны построить наилучшее приближение — именно приближение, так как неизвестно, разрешима ли система при текущем раскладе, а веса-то считать надо! (:
Замечания
Для упрощения модели вместо типов часов можно рассмотреть типы дней — рабочий/нерабочий. При этом точность прогноза, естественно, снизится, но зато запуск пересчёта весов потребуется раз в день, а не раз в час. Вероятно, оставим всё же часы.
Панель управления
Из панели управления должно быть возможно:
- добавить/удалить/изменить баннер
- временно отключить его вовсе
- просмотреть всю собираемую статистику
- изменить значение «n», после которого прекращается хранение данных для прогнозирования
- добавление/правка/удаление выходного дня, повторяющегося из года в год / из месяца в месяц / из недели в неделю
Также в дальнейшем на основе «базы данных праздников» возможно будет сделать автоматизированное управление crontab-ом — расписанием автоматического запуска различных заданий таких, как рассылка почты.