Управляем эволюцией на лету

57
DSC2016 УПРАВЛЯЕМ ЭВОЛЮЦИЕЙ НА ЛЕТУ

Upload: vitebsk-dsc

Post on 13-Apr-2017

137 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Управляем эволюцией на лету

DSC2016

УПРАВЛЯЕМ

ЭВОЛЮЦИЕЙ

НА ЛЕТУ

Page 2: Управляем эволюцией на лету

Немного о себе

• Дадеркин Максим

• Ведущий инженер-

программист

в компании EPAM Systems

Page 3: Управляем эволюцией на лету

Эволюция

Page 4: Управляем эволюцией на лету
Page 5: Управляем эволюцией на лету
Page 6: Управляем эволюцией на лету
Page 7: Управляем эволюцией на лету
Page 8: Управляем эволюцией на лету

Естественный

отбор

Page 9: Управляем эволюцией на лету

А/В

кампания

Естественный

отбор==

Page 10: Управляем эволюцией на лету

Термины

• A/B-кампания (эксперимент)

Page 11: Управляем эволюцией на лету

Термины

• A/B-кампания (эксперимент)

• Рецепт (вариант)

Page 12: Управляем эволюцией на лету

Термины

• A/B-кампания (эксперимент)

• Рецепт (вариант)

• Цель

Page 13: Управляем эволюцией на лету

Термины

• A/B-кампания (эксперимент)

• Рецепт (вариант)

• Цель

• A/B-тестирование

Page 14: Управляем эволюцией на лету

Зачем нужно проводить

A/B-тестирование?

Page 15: Управляем эволюцией на лету
Page 16: Управляем эволюцией на лету

Как внедрить

A/B-тестирование

в проект?

Page 17: Управляем эволюцией на лету

Простейшее приложение

Front End

Back End

DB

Mobile

Page 18: Управляем эволюцией на лету

1. Добавляем метрики

Внедряем A/B тестирование

Page 19: Управляем эволюцией на лету

Добавляем метрики

Page 20: Управляем эволюцией на лету

Front End

Back End

DB

Mobile

Метрика

Метрика

Page 21: Управляем эволюцией на лету

Front End

Back End

DB

Mobile

Метрика

Метрика

Метрика

Page 22: Управляем эволюцией на лету

Что измерять? (Примеры метрик)

• Время работы сервисов (Performance)

• Начало/конец отрисовки контента (WEB)

• Количество JS-скриптов

• Количество картинок

• …

Page 23: Управляем эволюцией на лету

Можно использовать

• Google Analytics

• Yandex Metrika

• Ваша библиотека*

Page 24: Управляем эволюцией на лету

1. Добавляем метрики

2. Изменяем компоненты

Внедряем A/B-тестирование

Page 25: Управляем эволюцией на лету

Требования к приложению

• Архитектура должна быть гибкой

• Компоненты должны быть легко заменяемы

Page 26: Управляем эволюцией на лету

1. Добавляем метрики

2. Изменяем компоненты

3. Запускаем A/B-кампанию

Внедряем A/B-тестирование

Page 27: Управляем эволюцией на лету

1. Добавляем метрики

2. Изменяем компоненты

3. Запускаем A/B-кампанию

4. Подводим итоги

Внедряем A/B-тестирование

Page 28: Управляем эволюцией на лету

1. Добавляем метрики

2. Изменяем компоненты

3. Запускаем A/B-кампанию

4. Подводим итоги

5. Фиксируем изменения

Внедряем A/B-тестирование

Page 29: Управляем эволюцией на лету

1. Добавляем метрики

2. Изменяем компоненты

3. Запускаем A/B-кампанию

4. Подводим итоги

5. Фиксируем изменения

Внедряем A/B-тестирование

Page 30: Управляем эволюцией на лету

1. Добавляем метрики

2. Изменяем компоненты

3. Запускаем A/B-кампанию

4. Подводим итоги

5. Фиксируем изменения

Внедряем A/B-тестирование

Page 31: Управляем эволюцией на лету

Кто использует

Google Analytics и (или)

Яндекс Метрика

вместе с A/B-тестированием?

Page 32: Управляем эволюцией на лету

Google Analytics

• Просто интегрировать

• Различные цели для

тестирования

• Широкий список

элементов для

тестирования

• Позволяет создавать

специализированные

отчёты

Page 33: Управляем эволюцией на лету

Яндекс Метрика

• Функционал похож на

Google Analytics

• A/B-тестирование не

присутствует в явном

виде

Page 34: Управляем эволюцией на лету
Page 35: Управляем эволюцией на лету

• Выбрать сервер для обработки запроса

• Запустить A/B-кампанию в мобильном

приложении

• Генерировать случайные значения

Что GA/YM не умеют?

Page 36: Управляем эволюцией на лету

• Модуль: ngx_http_split_clients_module

• Пример конфигурации:

Page 37: Управляем эволюцией на лету

• Real-Time база данных

• Удаленная конфигурация (Remote Config)

Page 38: Управляем эволюцией на лету

• Библиотека, позволяющая проводить

эксперименты над полями.

• Пример:

button_color = uniformChoice(choices=["red", "green"], unit=userid);

button_text = "Ok";is_change_text = bernoulliTrial(p=0.3, unit=userid);if (is_change_text) {

button_text = "Apply";}

Page 39: Управляем эволюцией на лету

Многорукий бандит(Multi-armed bandit)

Page 40: Управляем эволюцией на лету

MAB

“Многорукий Бандит”– это эксперимент, в

рамках которого:

• Ставится цель определить оптимальное

или наиболее прибыльное действие

• Распределение трафика по вариантам

можно изменить в ходе эксперимента

Page 41: Управляем эволюцией на лету

• Позволяют быстрее получить результат

• Трафик распределяется на наиболее

перспективный вариант

• Трафик распределяется постепенно

MAB

Page 42: Управляем эволюцией на лету

А что улучшать?

Page 43: Управляем эволюцией на лету
Page 44: Управляем эволюцией на лету

Найти решение мне помогла

программа интуитивного типа,

специально созданная для изучения

определенных сторон человеческой

души. Меня можно назвать отцом

Матрицы, а ее без преувеличения —

матерью.

Архитектор

Page 45: Управляем эволюцией на лету

Что такое машинное обучение?

Page 46: Управляем эволюцией на лету

Что-то

на входе

Что-то

на выходе

Page 47: Управляем эволюцией на лету

Что-то

на входе

Что-то

на выходе𝑥 + 𝑎 𝑛 =

𝑘=0

𝑛𝑛

𝑘𝑥𝑘𝑎𝑛−𝑘

Page 48: Управляем эволюцией на лету

Машинное обучение

• Машинное обучение – область обучения,

которая дает компьютерам возможность

учиться не будучи явно

запрограммированными.

Page 49: Управляем эволюцией на лету

Задачи машинного обучения:

• Регрессия (ответ - числа, задачи

прогнозирования)

• Классификация

• Ранжирование (поисковые системы)

Машинное обучение

Page 50: Управляем эволюцией на лету

Как определить метрики,

важные для вашего

приложения?

Page 51: Управляем эволюцией на лету

Постановка задачи

• У нас есть страница, которую мы хотим

улучшить.

• Цель: пользователь совершает покупку.

Page 52: Управляем эволюцией на лету

Метрики страницы (Бинарные)

• наличие или отсутствие определенного

элемента на странице

• совершил пользователь покупку или нет

• использование http(s)

• http/2

• мобильный клиент

• планшет

• …

Page 53: Управляем эволюцией на лету

• время ответа сервера

• время загрузки страницы (DOM ready)

• разрешение экрана

• …

Метрики страницы (Количественные)

Page 54: Управляем эволюцией на лету

Случайный лесRandom Forest

Page 55: Управляем эволюцией на лету

Набор средств

• TensorFlow

• Apache Spark Mlib

• Microsoft CNTK

• …

Page 56: Управляем эволюцией на лету

Итоги

Page 57: Управляем эволюцией на лету

Вопросы?