Анализ логов с помощью Hadoop/Python. Часть 1

от автора

Привет, Хабр! В этой серии постов из двух частей я хотел бы рассказать вам о том, как мы вместе с компанией Data-centric Alliance смогли сконструировать несколько лабораторных работ, посвященных обработке и анализу веб-логов. Эти лабораторные работы являются ключевыми в рамках первого кейса нашей образовательной программы "Специалист по большим данным". Меня зовут Артем Пичугин, и я являюсь ее координатором.

Задача
Представьте, что вы компания, продающая автомобили. У вас есть масса вопросов. Кому показать рекламу автомобиля? На каких сайтах? Так, чтобы недорого и эффективно? Казалось бы, ответ очевиден: пользователям, которые заходят на страницы покупки автомобилей на сайтах компаний, а также на досках объявлений типа Avito и т. д.

Но в этом и заключается проблема: именно в этом месте, ровно этим пользователям показывать рекламу хотят все — большой спрос на маленьком количестве известных площадок, такие показы будут дорогими! Есть второй вариант: найти менее популярные сайты, на которых сидят интересующие вас пользователи (просматривающие страницы покупки автомобилей), и показывать рекламу на этих сайтах. В таком случае стоимость показа рекламы будет ниже, при том, что конверсия может оставаться неплохой. Может даже возникнуть ситуация, когда человек ещё ничего не смотрел на тему покупки авто, а лишь задумывался об этом – и первое, что он увидит – ваше предложение!

Анализ логов
image

Подобную задачу решают компании-игроки RTB-рынка, который сейчас переживает активный рост (на днях платформа GetIntent привлекла раунд инвестиций в $1 млн, в начале года Сбербанк купил платформу Segmento, а новые игроки появляются, как грибы после дождя). Аналитический компонент RTB-платформы, отвечающий за сбор информации о пользователе, выполняет DMP-система. Собственные DMP необходимы не только RTB-компаниям, но и всем, кто обладает большим объемом данных (например, банкам, телекомам, интернет-порталам), а также всем, кто хочет обогатить свои данные с помощью покупки внешних данных в формате веб-логов. В основе DMP-системы лежит работа с большими объёмами данных о посещении пользователями сайтов на основе логов. Эти логи тщательно собираются с привлечением множества партнёров.

Ниже я хочу описать пошаговый сценарий обработки и анализа логов с помощью Hadoop и Python, которые в упрощённом виде повторяют работу ключевого компонента DMP-системы. Мы используем этот сценарий во время обучения обработке и анализу больших данных в Лаборатории новых профессий. При проектировании этого сценария мы старались быть максимально близкими к решению конкретной бизнес-задачи построения DMP-системы. Большая заслуга в этом принадлежит Александру Петрову, R&D-директору компании Data-centric Alliance. Слушатели курса выполняют эти работы с реальными данными на Hadoop-кластере от 4 до 20 серверов.

Последовательность действий
Итак, как можно использовать логи для оптимизации показа рекламы (казалось бы: userid, url, timestamp – скука смертная, только поглядите)? Для этого необходимо проделать несколько операций.

Дано: несколько терабайт логов посещений сайтов.

Что мы делаем:

  1. Простейшей эвристикой определяем «нужных пользователей», например, по числу заходов на сайт auto.ru за неделю или две. В итоге получаем список нужных пользователей.
  2. Теперь для каждого сайта считаем его посещаемость нужными пользователями и всеми пользователями вообще. И долю «правильных» от числа всех посетителей сайта. У каких-то сайтов это будет 0.01% (мало нашей целевой аудитории), а у каких-то 5% (много нашей целевой аудитории).
  3. Сортируем сайты по убыванию рассчитанного показателя и выбираем топ-300 сайтов, на которых находится наша целевая аудитория. Смотрим их глазами.

Наблюдаем, что в топе таких сайтов оказываются сайты «подготовка к ПДД», сайты автошкол. Вы скажете – это очевидный вывод, можно было и так догадаться, безо всяких веб-логов. Тогда ответьте — какие? На каких именно сайтах автошкол и подготовки к ПДД нужно рекламировать Ладу Калину? А Форд Фокус? А Mercedes ML? Именно на этом этапе и требуются более глубокие знания о клиенте, которые «поставляет» DMP-система, о чем я расскажу в следующей части.

Инструменты Big Data
Для того, чтобы выполнить описанную выше, казалось бы, несложную задачу, необходимо уже уметь работать с инструментами Big Data.

  1. Логи нужно где-то хранить – можно положить их напрямую в HDFS, причём таким образом, чтобы с ними мог хорошо работать MapReduce.
  2. Необходимо уметь эти логи обрабатывать – сортировать по разным параметрам, находить топ-100/300/1000 сайтов, определять долю целевых пользователей в общем трафике. Тут уже понадобится парадигма MapReduce и умение писать распредёленные алгоритмы с использованием:
    1. фильтрации (map-only jobs),
    2. оптимизации: соединения map-join (использование distributed cache),
    3. оптимизации: применения combiner (требования реализации reducer),
    4. соединения reduce-join,
    5. поиск top-100 (single reducer).
  3. Хотя это верно и не только для Big Data, но для большого объёма данных становится особенно критично, необходимо построить грамотный процесс предобработки данных.

В следующей части я расскажу как наши слушатели по логам посещения определяют пол и возрастную категорию пользователей, используя machine learning.

ссылка на оригинал статьи http://habrahabr.ru/post/267065/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *