Upload
pavel-kalaidin
View
339
Download
4
Embed Size (px)
DESCRIPTION
Слайды к лекции для студентов Data Mining Labs http://vk.com/datamininglabs 7 апреля 2014
Citation preview
Аналитика данных в RTB
Павел Калайдин @facultyofwonderМарат Зайнутдинов @tsundokum
Ян ЛеКун* @ylecun
* на самом деле нет
<скриншот нашей рекламы в ретаргетинге>
http://cmsummit.com/behindthebanner/credits: http://cmsummit.com/behindthebanner/
RTB - аукцион рекламных показов в реальном времени
A CIKM '13 Tutorial: Real-time Bidding: A New Frontier of Computational Advertising Researchhttp://tutorial.computational-advertising.org/
Computational AdvertisingStanford University MS&E 239: Introduction to Computational Advertising
https://www.stanford.edu/class/msande239/
Фундаментальные задачи:
Best match: кому что когда показывать?
Campaign performance: как достичь максимальных показателей в рамках
бюджета рекламной кампании?
Most revenue: как получить максимум прибыли при текущем трафике?
не раздражая пользователя (healthy environment)?
http://www.slideshare.net/shuaiyuancn/cikm-2013-tutorial
А также:
Как найти похожую аудиторию (Look-alike)?
улучшение эффективности системы пресказания целевых действий за счёт использования данных о переходах таргетирование на похожую аудиторию за счёт использования информации о переходах (увеличение охвата).
Обзор метрик, позволяющих сравнивать, насколько пользователи похожи на друг друга, основываясь на их физическом передвижении (что в нашем случае посещенные сайты).
http://www.barabasilab.com/pubs/CCNR-ALB_Publications/201108-21_KDD-HumanSocialTies/201108-21_KDD-HumanSocialTies.pdf
Подсчет статистики
Map-reduce задачиСкетчи
A/B тестыDOE (design of experiment)
Медиапланирование, прогнозы,оценка хода кампании
Мониторинг: как понять, когда что-то идет не так?
Рекомендации: что показать на баннере?
Предсказание стоимости покупкиCPA ~ чек
Поиск закономерностей и аномалий
и так далее.Это все задачи отдела Data Science
Но вернемся к аукционам
Голландский (цена вверх)
Английский (цена вниз)
Закрытый первой цены
Закрытый второй цены
Закрытый первой цены = английскийЗакрытый второй цены = голландский
RTB - закрытый аукцион второй цены
Еще бывают:все платят (архитектурный тендер)обобщенный второй цены (adwords)
Как рассчитать ставку?
Credits: http://www.cs.cornell.edu/home/kleinber/networks-book/networks-book-ch09.pdf
Истинная ценность?
“The best minds of my generation are thinking about how to make people click ads…That sucks.” - Jeff Hammerbacher, co-founder and chief scientist, Cloudera (source)
Common-value аукционЦенность одна и та же, но участники имеют разные
оценки
Например, несколько ретаргетеров на одном магазине
Больше информации про аукционы: http://www.cs.cornell.
edu/home/kleinber/networks-book/networks-book-ch09.pdf
Предсказание второй цены
Т.е. так называемая задача distribution fitting
Управление скоростью кампании
Предиктор
Что делать?
то же самое для data mining
posterior
likelihood evidence
prior
Для чего нам нужен posterior?
Чтобы найти
likelihood (binomial distribution)
для одного наблюдения:
для нескольких наблюдений:
prior (beta distribution)
можно использовать данные, чтобы найти параметры бета-распределения
Используем данные дважды? Переобучаем?
empirical bayes: с удовольствием!
pseudosample size
evidence (???)
posterior
analytical solutiongrid methodsimulations
Бета-распределение любит биномиальное
это называется conjugate priors
А ещё бета-распределение “любит” бета-распределение, а нормальное - нормальное.
Что делать с результатом?
Правильный подсчёт CTR
Задача
Найдите формулу для подсчёта CTR по adhost:bannerPlacement (с prior по adhost)
Пусть sa - величина псевдовыборки, тогда
где
Задача
Найдите формулу для подсчёта adhost:banner_id (с независимыми prior по adhost и banner_id)
Перерыв,после которого мы обсудим решение задачи
Нужны данные для экспериментов?7.5Gb
аукционы, показы, клики, конверсии: https://www.dropbox.com/sh/xolf5thu8jsbmfu/kBrAsSxtAN
thanks to: Global Bidding Algorithm Competition, Apr-Dec, 2013.http://contest.ipinyou.com/
Коснемся архитектуры
логи, логи, логи
Крутая статья сотрудника LinkedIn о том, что всё логи http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying
детерминированная машина
Презентация функциональной базы данных от создателя языка Clojure и одного из ключевых разработчиков Datomic https://www.youtube.com/watch?v=Cym4TZwTCNU
потоки логов
Storm, Samza, S4, Akka
Видео с создателем Storm, на котором он очень кратко рассказывает про своё видение архитектуры для bid data http://www.infoq.com/interviews/marz-lambda-architecture
Couchbase, Redis
программисты не знают характер работ по анализу данных
поэтому доставайте архитектора
каждый день
пробуйте разные способы для одной и той же задачи
инвестируйте в свои инструменты
</архитектура>
Вернемся к подсчету статистики
Примеры запросов
- выдайте персентили числа показов на человека- какое число уникальных пользователей по сайтам?- рассчитываемся с SSP за месяц. Нужна выгрузка трат за весь март
В большинстве случаев нас устроит примерная оценка
Вероятностные структуры данных (скетчи)
Памятьversus
ошибка в оценке
- проверка на вхождение в множество - сколько различных элементов в потоке (мощность) - какие элементы встречаются чаще всего (heavy-hitters) и как часто? (частоты) - сколько элементов попадает в заданный интервал (интервалы)
Исправленная и дополненная версия картинки, опубликованной в этом посте
Frugal streaming: обработка по мере поступления,
требуется супер мало памяти
Свежая статья (2013 г.) http://link.springer.com/chapter/10.1007/978-3-642-40273-9_7 ($)Обсуждение: http://blog.aggregateknowledge.com/2013/09/16/sketch-of-the-day-frugal-streaming/
Посчитаем медиану
frugal <- function(stream) {
m <- 0
for (val in stream) {
if (val > m)
m = m + 1
else if (val < m)
m = m - 1
}
return(m)
}
Требование по памяти: 1 int
А персентили?
frugal_1u <- function(stream, m = 0, q = 0.5) {
m <- 0
for (val in stream) {
if (val > m && runif(1) > 1 - q)
m = m + 1
else if (val < m && runif(1) > q)
m = m - 1
}
return(m)
} Есть еще улучшенный frugal_2u с переменным шагомКод на R: https://gist.github.com/kalaidin/9974919
IPython notebook: http://nbviewer.ipython.org/gist/kalaidin/9976120
Частоты: Count-Min sketch
An Improved Data Stream Summary: The Count-Min Sketch and its Applications
w
i
+1
+1
+1
h1 h
4
hd
d
Оценка - возьмем минимум из d значений.
Мощность множества (количество уникальных элементов):
LogLogCounter&Co
Представьте, что сегодня утром я бросал монетку и записал, какое максимальное
число раз подряд выпала решка
Что если я скажу, что это число 2?
А если это число 100?
В каком случае я бросал дольше?
Нас интересуют паттерны в хешах (число 0 = решек в начале)
оценка - 2R, где R - максимальное число лидирующих нулей
LogLog: используем M корзин, в каждой из которой храним свой R
Оригинальная статья: LogLog Counterhttp://algo.inria.fr/flajolet/Publications/DuFl03-LNCS.pdf
HyperLogLog - среднее гармоническое R по корзинам
Оригинальная статья: HyperLogLog Counterhttp://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf
Серия постов на тему HLL в блоге AggregateKnowledge:http://blog.aggregateknowledge.com/tag/hll/
Проверка на вхождение: старый добрый фильтр Блума
Bloom Filters: How I learned to stop worrying about errors and love memory efficient data structures3 Rules of thumb for Bloom Filters (оценка ошибки)
Попробуйте погуглить фото Бертона Говарда Блума - его не найти!
ih1
h2
hk
1 1 10 0 0 0 0 0 0 0 0 0 0 0 0
Вопросы и ответы
Спасибо за внимание!