Введение в проект интернет-магазина

Введение в проект интернет-магазина

В этой лекции мы ознакомимся с нашим курсовым проектом. Кроме того, на лекции вы ознакомитесь с данными, которые мы впоследствии используем, я расскажу вам, откуда они взялись, а также что мы будем делать и какова ценность этого проекта для бизнеса. Надеюсь, проект поможет вам полностью понять теорию и код и научиться применять их в реальной жизни. Очень важно уметь использовать реальные данные, которые могут быть в форме таблиц Excel, SQL-таблиц или просто log-файлами. Кроме того, важно уметь отформатировать их таким образом, чтобы они были пригодны для использования в вашем алгоритме глубокого обучения. Если вы не привыкли к таким вещам, этот проект определённо поможет вам.

Итак, перейдём к постановке задачи.

Представьте, что вы – специалист по обработке данных в интернет-магазине и хотите уметь прогнозировать поведение посетителей на вашем сайте. Это может иметь непосредственное отношение к прибыльности, поскольку, скажем, если вы можете предсказать, когда люди собираются уйти с сайта, вы можете показать им всплывающее окно и тем самым побудить их остаться и заняться чем-нибудь ещё, но не покидать сайт.

Вы сможете также увидеть, какие стороны вашего сайта слабы и должны быть улучшены. Например, вы можете посмотреть, когда люди начинают процесс оплаты, но не завершают его. Проанализировав причины такой ситуации, вы можете подправить свой сайт. Другой пример – возможно, ваше мобильное приложение неудобно для пользователей, и поэтому они вообще ничего не покупают, когда посещают мобильную версию вашего сайта.

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

Теперь посмотрим на наши данные. Они в формате CSV, с которым, надеюсь, вы уже знакомы. Это просто таблица, в которой каждый элемент в строке отделяется запятой.

Первая строка нашего файла – заголовок, показывающий, что означает каждый столбец.

Первым столбцом идёт Is_mobile. Этот столбец показывает, заходит ли пользователь на наш сайт с мобильного устройства или нет. Конечно же, он двоичный и принимает значения нуль, если пользователь заходит с мобильного устройства, и единица – если с мобильного.

Следующий столбец N_products_viewed. Он показывает количество товаров, которые просмотрел пользователь на протяжении сеанса, когда происходили действия пользователя (являющиеся меткой). Это числовые данные, состоящие из целых чисел, которые могут принимать значения только больше или равными нулю. Что с ними делать, мы обсудим позже.

Далее идёт Visit_duration. Здесь указывается, сколько времени (в минутах) провёл посетитель на нашем сайте. Это также числовые данные, принимающие значения только больше или равные нулю, но это не целые числа.

Следующим столбцом идёт Is_returning_visitor. Это ещё одна двоичная переменная, принимающая значение нуль, если это новый посетитель, и единица, если пользователь уже бывал на сайте и возвращается.

Очередной столбец Time_of_day. Время – число, но мы его будем обрабатывать в качестве категории. В общем случае время обозначается числами по-разному, поскольку оно идёт по кругу. К примеру, 11 часов вечера наступают через 23 часа после предыдущей полуночи, но они же означают, что это час до следующей полуночи. Когда мы работаем с геометрическими понятиями, как в машинном обучении, это важно.

Есть простой способ обработки таких данных – разбить их по категориям. Так, мы используем значение 0 для обозначения времени от полуночи до 6 утра, значение 1 для времени от 6 утра до полудня, значение 2 для обозначения времени от полудня до 6 вечера, и значение 3 для обозначения времени от 6 вечера до полуночи. При этом предполагается, что пользователи в одной и той же категории ведут себя одинаково.

Последний столбец User_action является меткой. Она принимает четыре значения – bounce, add_to_cart, begin_checkout и finish_checkout. Bounce означает, что пользователь просто покинул сайт, add_to_cart означает, что он добавил товар в корзину, но не начал оплату, begin_checkout означает ситуацию, когда пользователь уже начал процесс оплаты, но так его и не завершил, finish_checkout означает, что пользователь оплатил товар, а вы успешно получили заказ.

Ясно, что это задача на классификацию, поэтому мы можем использовать логистическую регрессию и нейронные сети. В курсе логистической регрессии я покажу вам только двоичную классификацию, тогда как в курсе по глубокому обучению продемонстрирую, как классифицировать произвольное количество классов. Так сделано потому, что там математические выкладки несколько сложнее. Это значит, что в курсе логистической регрессии мы отбросим два последних класса меток и будем учиться прогнозировать только данные с метками bounce и add_to_cart. Конечно же, вы можете читать сразу дальше или создать множественные двоичные классификаторы. Я всегда это только приветствую. Практика – это хорошо.

Поговорим теперь об обработке данных. Конечно же, вы не можете использовать категории в вашей логистической модели или нейронной сети, поскольку они работают с числовыми векторами. Возможно, вы уже слышали о решении этой проблемы в моём курсе линейной регрессии, но будем считать, что нет. Это прямое кодирование (one-hot encoding).

Суть в том, что если у нас есть, скажем, три различных категории, мы используем три различных столбца для их отображения. Затем мы просто устанавливаем значение столбца, который отображает категорию в каждом наблюдении, равной единице.

Например, у нас есть четыре категории для времени: 0, 1, 2 и 3. Это значит, что у нас есть четыре столбца. Если значение категории равно 3, то пишем единицу в четвёртом столбце. Если значение категории равно 2, пишем единицу в третьем столбце и так далее. Естественно, что в любом наблюдении единица будет находиться лишь в одном из этих четырёх столбцов. В этом и заключается прямое кодирование в отношении показателя времени.

А что с Is_mobile и Visit_duration?

Разве это не такие же категории? Да, категории, и технически мы можем преобразовать их в два столбца, но это совершенно необязательно. Не забывайте, что каждый весовой коэффициент показывает нам эффект действия переменной. Если у нас есть столбец с нулевым значением переменной, то весовой коэффициент этой размерности указывает на влияние нулевого значения этой переменной. Если же у нас нет такого столбца, то мы просто вводим эффект нулевого значения переменной в свободный член.

И наконец, давайте поговорим о числовых столбцах – N_products_viewed и Visit_duration. Мы знаем, что в обоих столбцах числа должны быть равны нулю или больше. По сути, N_products_viewed имеет значения целых чисел, что значит, что технически мы можем обрабатывать его как категорию, но лучше его рассматривать именно как число на числовой шкале, имеющее смысл. Мы знаем, что 0 ближе к 1, чем 2, что все они имеют смысл. Мы можем ожидать, что 1,5 будет иметь значение между 1 и 2. Предположим, например, что все пользователи, которые просмотрели три и меньше товаров, считаются не заинтересовавшимися, а все пользователи, просмотревшие более трёх товаров, – заинтересовавшимися; тогда пользователь, просмотревший 2,5 или 0,1 товара, также считается не заинтересовавшимися. Но, пользуясь вышеприведенным правилом, вы не ожидаете, что пользователь, просмотревший 0,5 товара, внезапно оказывается заинтересовавшимся, потому что 0,5 – это особое значение величины. Поэтому здесь очень важны масштаб и значение величины.

Одним из простейших способов обработки чисел – сначала их нормализовать. Это значит вычесть среднее значение и поделить на стандартное отклонение:

Z = \frac{X - \mu}{\sigma}.

Это приведёт данные к центрированию вокруг нуля со стандартным отклонением, равным единице. Помещение значений данных в малый диапазон означает, что функции, подобные сигмоиде, будут оказывать на них более выраженное влияние, например:

\sigma(10) \approx \sigma (11) \approx \sigma (12).

Это не очень хорошо, поэтому лучше сначала нормализовать данные.

Итак, как же этот проект будет включён в наш курс?

Каждая модель контролируемого машинного обучения, как правило, имеет две основные задачи.

Первая задача – прогнозирование. Мы получаем входные данные и пытаемся точно вычислить значение исходящей переменной. Вторая задача – обучение, когда мы вычисляем значение весовых коэффициентов, чтобы модель могла как можно точнее вычислить значение исходящей переменной. Как вы увидите, для каждой задачи есть соответствующий раздел в этом курсе.

Сначала мы разберём прогнозирование, иначе говоря – как получить от модели значение исходящих данных. Поэтому как только мы изучим соответствующие теоретические основы, мы вернёмся к нашему проекту интернет-магазина, создадим модель и попробуем получить от неё прогноз.

Следующий раздел будет посвящён обучению, то есть как можно обучить модель, чтобы она давала действительно точные прогнозы и насколько точными они получатся. После изучения теории обучения, мы вновь вернёмся к проекту интернет-магазина, обучим модель и посмотрим, насколько точной она у нас получилось.

Понравилась статья? Поделить с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: