Персонализация: наш случай
Горохов Антон
Мезенцев Павел
Рамблер 2013
Персонализация: что это?
Контент, подходящий пользователю:
• Новости
• Баннеры
• Статьи
Персонализация: что это?
Контент, подходящий пользователю:
• Новости
• Баннеры
• Статьи
А зачем?
• деньги
• лояльность
• деньги
• и т.д.
План действий
логи
План действий
логи hadoop
План действий
логи hadoop математики
План действий
логи hadoop математики
чудесное средство
… добавляем в наши проекты
• Демографию
• Интересы
• Новостные сюжеты
Что считать?
• Скорость ответа: 20 мс
• Актуальность данных
• Емкость 300 млн. профилей
Требования к сервису
Общая схема
 база в памяти ключ-значение
 значение: строка, массив, хеш-
таблица, множество
 удобный интерфейс + API
 expire ключей
o репликация
o дамп на диск
Online часть: база Redis
• скорость ответа (логи nginx)
• что отдаем и сколько
• какого качества
Online часть: мониторинг
• MapReduce задача (!)
• шардинг по user_id – каждый сервер
Redis – свой диапазон
• mapper отправляет пачки ключей на
каждый сервер redis
• можно загружать в бою
Загрузчик в Redis
Как определить пол человека?
• Логи → фичи пользователей
(URLы, домены, рубрики, число
посещений)
• Train/test – пользователи с известным
полом
• Обучение и построение классификатора
• Классификация test выборки
Offline часть: машинное обучение
Качество классификации
13 мужчин, 13 женщин
Качество классификации
13 мужчин, 13 женщин
• классификатор
выдает вероятность
0.75
0.9
0.6 0.4
0.8
0.97
0.2
Качество классификации
13 мужчин, 13 женщин
• классификатор
выдает вероятность
• из 13 мужчин
определили 9 =>
полнота = 9/13 = 69%
• из 12 «мужчин» ими
являются 9 =>
точность = 9/12 = 75%
тут
настоя
щие
мужчи
ны
тут
настоящие
мужчины 0.75
0.9
0.6 0.4
0.8
0.97
0.2
Компромисс точность/полнота
0.5
0.6
0.7
0.8
0.9
1
0 0.2 0.4 0.6 0.8 1
полнота (recall)
точность(precision)
Компромисс точность/полнота
0.5
0.6
0.7
0.8
0.9
1
0 0.2 0.4 0.6 0.8 1
полнота (recall)
точность(precision)
Компромисс точность/полнота
0.5
0.6
0.7
0.8
0.9
1
0 0.2 0.4 0.6 0.8 1
полнота (recall)
точность(precision)
• Цель: выбрать фичи, классификатор и
параметры
• Работаем с семплом (1-3% аудитории)
• Можно без MapReduce
▫ проще и быстрее
▫ стандартные инструменты (weka)
Эксперименты
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
М
Ж
Результаты метода Байеса
точность
полнота
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
М
Ж
Результаты метода Байеса
точность
полнота
prec_m =
0.55
prec_f =
0.45
В тестовой выборке:
45% ж + 55% м
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
М
Ж
Результаты метода Байеса
точность
полнота
c
точностью
≥ 0.75
классифицируем
40%
мужчин9%
женщин
• Фильтрация фич (выделение значимых):
▫ число посещений
▫ число пользователей
• Поиск новых фич
• Фильтрация пользователей для train/test:
▫ боты (>3000 посещений в сутки)
▫ «вялые» (мало посещений, мало «хороших» фич)
• Параметры метода Байеса:
▫ нормировка
▫ параметр сглаживания
▫ веса
▫ …
• Эксперименты, проверка, анализ результатов
Как улучшить качество?
• Классификатор выдает вероятность
• Нам хочется точность для каждого
элемента
• Отображение «вероятность → точность»
строится по классификации на test:
▫ график точность/полнота
▫ график вероятность/полнота
▫ через полноту строим отображение
Как избавиться от вероятности?
логи
пользователи + фичи
классификатор
train set
Построение классификатора
test set
точность/полнота
обучение
классификация
фильтрация
вероятность →
точность
пользователи + фичи
классификатор
Работа классификатора
пользователи – класс +
вероятность
классификация
вероятность →
точность
пользователи – класс + точность
преобразование
вероятности в
точность
1. Обработка логов
2. Анализ фич и пользователей
3. Фильтрация
4. Построение выборок (train/test)
5. Обучение – нет, но это надо доказать
6. Классификация всех пользователей
7. Перевод вероятности в точность
Где тут Big Data?
Метод снижения размерности (grid):
если 2 домена имеют схожую
посещаемость и схожее соотношение
мужчин и женщин, то это одна фича
Проблема 1: много фич
Пример: построение списка всех user_id для
данного домена за 30 дней
Решение: datanode с большим RAM
использует общий HDFS, задачи выполняет
локально
За:
▫ если задача не ложится на MR
▫ может работать быстро
Против:
▫ плохо расширяемо
▫ трудно поддерживать
Проблема 2: «тяжелые» задачи
• Зависимости между задачами
• Юнит-тесты
• Развертывание
• Поддержка
• Мониторинг
• …
Проблема 3: надежность
• 1 000 000 000 событий в день
• 300 млн. пользователей
• 2 млн с известным полом
Как узнать пол остальных?
Задача
• Посещенным доменам
• Посещенным урлам
• По условным "рубрикам"
• Как нибудь еще?
Как классифицировать?
• Входные значения крайне разрежены
• У нас получилось ~400 тыс фич
• Пользователь имеет от 10 до 1000 фич
Проблема
• Определяем отношение мужчин/женщин на
фиче
• Делим все фичи на N квантилей по полу
Grid. Построение оси X
• Строим распределение фич по
посещаемости
• Находим границы M квантилей
Grid. Построение оси Y
Заполнение грида
• Шаг 1. Статистика по пользователям
• Шаг 2. Выкинуть «слабых» пользователей
• Шаг 3. Выкинуть «слабые» фичи
• Шаг 4. Найти квантили по полу
• Шаг 5. Найти квантили по возрасту
• Шаг 6. Отнести каждого пользователя к
своей квантили
Перенос на mapReduce
Как считать квантили
map (id, data):
write (feature, sex)
reduce (feature, sexList):
write (feature, length (males(sexList))/(length (sexList))
# Находим отношение по полу для каждой из фич
Как считать квантили
# Считаем число фич
map (feature, ratio):
write (count (feature))
reduce (countsList):
write (sum (countsList))
# Или используем счетчик на шаге 1
map (id, data):
write (feature, sex)
reduce (feature, sexList):
write (feature, length (males)/(length (sexList))
count ("features", +1)
Как считать квантили
# Сортируем и выписываем каждое N-ое соотношение
map (feature, ratio):
write (ratio)
reduce (ratioList):
for i in 1 .. N-1:
write (ratioList [i / N * count])
•Train: 2 млн человек
•Full: 300 млн человек
• Машинное обучение
на mahout
•«Математиками» предложен
алгоритм random forest
Использование классификатора
Random Forest
Random Forest
= + +
•Классический алгоритм: каждое дерево
строится на своей случайной подвыборке
•Mahout реализация: подвыборка
делается из входных значений маппера
Random Forest
При классификации:
• Каждое дерево определяет пол
• Лес выдает «самый популярный» ответ
• Мы добавили в классификатор %
проголосовавших деревьев
Random Forest
BigData Week Moscow 2013 - Case: Personalization
• FreeBSD
• 70 серверов 8-16 cores, 64RAM, 4HDD
• NN и JT практически идентичны
• сервера для запуска задач и локальных
вычислений с доступом в HDFS
• Python – основной язык разработки
• много Java, немного R и shell
• Hive и streaming
• pydoit для зависимостей
• тестовый кластер
Что используем
• отсутствие прав (чтение/запись в HDFS)
• firewall на машинах кластера
• отсутствие необходимых пакетов на
нодах
• нехватка места в HDFS
• электричество и сетевой канал
• java heap size
• кривые руки
• холивар FreeBSD/Linux
Типичные проблемы
• Внутренний мониторинг
• Внешний аудит (TNS):
▫ c точностью 82% определяем пол 83%
пользователей
▫ c точностью 79% - возраст (3 группы) 55%
пользователей
Качество сервиса
Проект «Нового мира»
удобная
фильтрация
фич и
пользователей
«коктейль»
из фич на
любой вкус
сокращение
train
выборок
python + hiveпростое
тестирование
классификато
ров
Антон
техлид
Команда
Паша (А)
менеджер-
математик
Слава
программист-
математикЛеха
хадуп-админ
Антон’
программист
Леша
математик-
программист
Рома
программист
Паша (М)
программист-
математик
математик-
программист
Вопросы?
anton@rambler-co.ru
pavel@mezentsev.org

More Related Content

PPTX
Big Data - первые шаги
PPTX
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
PPTX
Эксплуатация ML в Почте Mail.ru
PDF
Потоковые алгоритмы в задачах обработки больших данных / Виктор Евстратов (Se...
PDF
Социальный граф Одноклассников в Target Mail.Ru
PDF
Cоциальный граф "Одноклассников" в myTarget
PDF
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
PDF
Thumbtack Expertise Days # 5 - Dataset
Big Data - первые шаги
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Эксплуатация ML в Почте Mail.ru
Потоковые алгоритмы в задачах обработки больших данных / Виктор Евстратов (Se...
Социальный граф Одноклассников в Target Mail.Ru
Cоциальный граф "Одноклассников" в myTarget
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
Thumbtack Expertise Days # 5 - Dataset

What's hot (8)

PDF
2014.10.15 блиц-доклад PostgreSQL kNN search
PPTX
MongoDB в продакшен - миф или реальность?
PDF
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
PPT
Методы поиска уязвимостей
PPT
Методы поиска уязвимостей в программах
PDF
DUMP-2015: «Искусственный искусственный интеллект» Дмитрий Усталов, ИММ УрО РАН
PPTX
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
PDF
Alexey Tokar To find a needle in a haystack
2014.10.15 блиц-доклад PostgreSQL kNN search
MongoDB в продакшен - миф или реальность?
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Методы поиска уязвимостей
Методы поиска уязвимостей в программах
DUMP-2015: «Искусственный искусственный интеллект» Дмитрий Усталов, ИММ УрО РАН
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
Alexey Tokar To find a needle in a haystack
Ad

Viewers also liked (15)

PPTX
Final project
PPTX
SITS15 - Next Generation IT Service Skills
PPTX
печа куча
PPTX
Unidad educativa municipal compu
PDF
English Dept Grad Student RESOURCE GUIDE
PPT
ingles
PDF
artikel iedereen denkt mee vanuit zijn eigen werkveld
PPTX
SITS14 - A view from the Project Manager by Duncan Watkins
PPTX
печа куча
PDF
How improving change management can help improve your business duncan watkins
PPTX
Responsive
PDF
2016SPRING
PPTX
Responsive Web Design - Bridging the Gap Between Art Directors
PPT
Celtrixa
PPTX
Price elasticity of demand in the real world case study presentation
Final project
SITS15 - Next Generation IT Service Skills
печа куча
Unidad educativa municipal compu
English Dept Grad Student RESOURCE GUIDE
ingles
artikel iedereen denkt mee vanuit zijn eigen werkveld
SITS14 - A view from the Project Manager by Duncan Watkins
печа куча
How improving change management can help improve your business duncan watkins
Responsive
2016SPRING
Responsive Web Design - Bridging the Gap Between Art Directors
Celtrixa
Price elasticity of demand in the real world case study presentation
Ad

BigData Week Moscow 2013 - Case: Personalization