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

Пожалуйста, потерпите меня, потому что это будет звучать безумно.

Есть эта песня Tyler, The Creator и A $ AP Rocky под названием Potato Salad, и она мне нравится. Моя девушка говорит, что я много играю, подожди, скрою это, моя девушка И друзья настаивают, чтобы я много в нее играю, а мои коллеги в офисе довольно часто спрашивают меня, есть ли у меня ежедневный прием картошки. Так что, видимо, мне это очень нравится.

Чтобы дать немного контекста, Potato Salad - это забавная, освежающая, откровенная и даже веселая песня, в которой Тайлер и Рокки рассказывают о состоянии хип-хопа, о том, сколько у них денег (классика!) И их выборе моды. (например, Рокки указывает, что его сумка Chanel не кошелек, а сумка. Дважды.). Что меня очаровывает в песне, так это ее ритм и то, как плавно и учтиво он сочетается с полосами GOLF Boy и A $ AP; также название довольно забавное. Вдобавок ко всему, музыкальное видео похоже на воскресный дневной проект двух друзей, добавляя дополнительный оттенок глупости и реальности к и без того классной песне. Что в нем не нравится :)?

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

  1. Сколько раз я слушал картофельный салат?
  2. Каковы мои модели прослушивания?
  3. Насколько вероятно, что я буду слушать картофельный салат в определенный день и время?
  4. Можно ли предсказать, буду ли я играть в картофельный салат, используя прогнозирующую модель машинного обучения?

В этой статье я поделюсь своими выводами.

Данные

Важной частью этого эксперимента являются данные, в частности данные о том, «когда» я слушал Potato Salad. К счастью, с октября 2017 года я захожу в BigQuery каждую песню, которую играю на Spotify, используя скрипт, который с тех пор работает в облаке. Этот скрипт, написанный на Python, использует библиотеку Spotify с именем Spotipy для вызова конечной точки API Spotify «Recent_played» каждые три часа для получения всех песен. Я играл последние три часа. С данными, хранящимися в BigQuery, оставалось просто выполнить простой запрос, чтобы выбрать все песни, идентификатор которых равен 1jzIJcHCXneHw7ojC6LXiF (это идентификатор картофельного салата в Spotify).

Сколько раз я слушал 🥔 🥗?

Начнем с самого простого вопроса: сколько раз я слушал эту песню? Ответ: 104, неплохое число (честно говоря, я ожидал большего), поэтому эта песня стала моей самой популярной песней. Само по себе это значение мало что говорит; однако в процентном отношении картофельный салат составляет 0,57% от всей моей истории прослушивания. Еще лучше, если я буду рассматривать только песни, сыгранные после моей первой картошки (2018–10–12), процент увеличится до 2,05%.

Вторая важная информация, которую я хотел знать, - это количество дней, в течение которых я слушал картофельный салат с тех пор, как впервые был им восхищен. Значение равно 66 или 35,86% дней с 10 октября 2018 г. по 13 апреля 2019 г. Проще говоря, это означает, что с 10 октября 2018 г. Я слушал «Картофельный салат» в среднем не реже одного раза в три дня. Чтобы визуализировать это, я создал следующий календарь, чтобы показать, в какие дни я играл эту песню.

На этой визуализации синие квадраты обозначают мои «Картофельные дни», а красные - нехватку картофеля. Что интересно, в феврале 2019 года я эту песню почти не слушал.

Каковы мои модели прослушивания?

Цель этого раздела эксперимента - найти какие-либо удивительные идеи относительно «как» или обстоятельств, при которых я решаю порадовать свои уши картофельным салатом.

В первую очередь я хотел выяснить, сколько моих «музыкальных сессий» начинаются с картофельного салата. Под «музыкальной сессией» я имею в виду сессии или моменты, когда я решаю поиграть в Spotify. Например, открытие приложения в 8 утра - это сеанс. Чтобы добавить глубины моему определению сессий, я считаю, что песня, проигранная по крайней мере через два часа после предыдущей, представляет собой начало новой сессии. В последнем примере я открыл приложение в 8 часов утра. Теперь предположим, что я включаю музыку до 11 часов утра (трехчасовая сессия), делаю перерыв и играю другую песню в 14 часов. В таком случае, поскольку время, прошедшее с предыдущей прослушанной песни (которая закончилась в 11 часов утра) и новой песни, превышает два часа, эта новая песня представляет собой начало сеанса.

Итак, сколько раз я начинаю сеанс с картофельного салата? Из всех моих 808 музыкальных сеансов 24 (2,97%) - это сеансы картофеля, и, как ни странно (не совсем), это моя лучшая песня о том, что сессия началась. С некоторой точки зрения на это значение, песня на второй позиции была воспроизведена 13 раз (1,60%) в качестве начала сеанса.

Еще одна деталь, которую я хотел знать, - это самая длинная цепочка повторов, и опять же, как ни удивительно (на этот раз для реалов), число всего 3! Довольно низкое число по сравнению с моей самой длинной повторяющейся песней, которую играли восемь раз подряд.

Насколько вероятно, что я буду слушать картофельный салат в определенный день и время?

Пора дать свой первый ответ на заголовок этой статьи «Я собираюсь сегодня послушать картофельный салат?» В моем первом из двух подходов (второй - в следующем разделе) Чтобы ответить на этот вопрос, у меня есть ресурсы, чтобы использовать простую, ясную и прямую вероятность.

Небольшой отказ от ответственности перед продолжением: я хотел, чтобы этот веселый и ночной проект был простым, ясным и понятным даже для тех, кто не знаком с терминами, которые я здесь ввел. Следовательно, я знаю, что в применяемых мною методах есть несколько недостатков, недостатков, допущений и чрезмерных упрощений.

Ok? Вернемся к этому.

Моя процедура включает в себя вычисление вероятности того, что я слушаю PS в определенный день недели, вероятности того, что я буду слушать PS в определенном часовом интервале дня (например, С 10:00 до 10:59 или с 19:00 до 19:59), а затем умножив эти два значения, чтобы получить вероятность игры 🥔 🥗 в день и временной интервал x. Позвольте мне объяснить весь процесс.

Чтобы получить вероятность воспроизведения песни в определенный день недели, я посчитал, сколько раз я играл ее в этот конкретный день недели, разделенный на количество раз, когда этот будний день появляется в моем наборе данных, но только после этого дня. когда я впервые послушала "Картофельный салат". Например, с 10 октября 2018 г. в моем наборе данных я проигрывал песню по 11 разным вторникам из 21 вторников. Следовательно, вероятность того, что я буду играть в PS во вторник, составляет 21 ноября = 0,52 или 52%. В следующих таблицах показаны все семь шансов.

Хммм, а что будет в четверг? Вероятность всего 13%? Может быть, ощущение почти выходных заставляет меня играть другую музыку? Каким бы захватывающим и интригующим это ни звучало, ответ далеко выходит за рамки данной статьи. Тем не менее, хорошая новость заключается в том, что после двух дней низкой активности картофеля наступает суббота, день, когда я искупаю себя, играя - с вероятностью 68% - сладким PS.

Для определения вероятности воспроизведения песни в определенный час дня используется тот же подход, что и раньше. Единственная разница в том, что вместо того, чтобы использовать дни недели, как раньше, теперь я использую час дня, например, 12 утра, 1 час ночи… до 23 часов вечера. В таблице ниже показаны 24 вероятности, каждая из которых соответствует часу дня. Кроме того, помните, что я смотрю на вероятность воспроизведения песни не в, скажем, ровно 11 часов утра, а в период с 11 утра до 11:59 утра.

Любопытная деталь здесь заключается в том, что вероятность в 4 часа утра составляет 100%, что указывает на то, что Potato Salad - единственная песня, которую я когда-либо играл в это время (и я горжусь этим).

Теперь, когда мы знаем вероятность воспроизведения песни в определенный день, а также возможность прослушивания ее в определенное время, мы можем определить ее совместную вероятность, под которой я подразумеваю вероятность того, что два события произойдут вместе. В этом случае совместная вероятность - это вероятность воспроизведения песни в определенный день И конкретный час. Мы можем рассчитать это, умножив обе вероятности - например, вероятность того, что вы попробуете «Картофельный салат» во вторник в период с 10:00 до 10:59, составляет 4,66% (0,5238 * 0,089). Круто, а?

В двух таблицах ниже представлены совместные вероятности.

Итак, как мы интерпретируем эту связку чисел? Период с наибольшей вероятностью - суббота в 4 часа утра (до 4:59 утра) с вероятностью 68%. Эта оценка важна из-за прекрасных шансов воспроизвести песню в 4 часа утра, поэтому, естественно, все совместные вероятности этого временного диапазона будут значительно выше по сравнению с остальными. На противоположном конце - ужасный четверг, день с наименьшими возможностями, а в не столь крайних случаях, но вполне приемлемых, у нас есть понедельник и суббота в 8 часов утра со значениями 13,63% и 17,04%.

Итак, я собираюсь сегодня послушать «Картофельный салат»? Что ж, если сейчас не четверг, есть небольшая, но все же реальная возможность, что я сделаю это.

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

Алгоритм, который я применил для построения моей прогнозной модели, известен как машина опорных векторов (SVM), модель машинного обучения, которая в основном используется для классификации вещей в один из двух классов, например, да или нет. , хорошо или плохо, спам и без спама. Для этой конкретной проблемы я применил специальный вариант SVM, называемый One Class SVM, метод, используемый для обнаружения выбросов. Теперь вы можете спросить: «Эй, Хуан, почему ты сформулировал эту проблему как проблему обнаружения выбросов?» Хороший вопрос. Взгляните на следующее изображение.

На этом изображении показан день недели и время суток, когда я слушаю картофельный салат. Исходя из этого, мы можем заметить, что мои моменты прослушивания обычно довольно регулярны с точки зрения дней и времени, другими словами, в данных не так много выбросов (случаев, которые не являются обычными) (за исключением того раза, когда я играл песню на Суббота в полночь). Из-за этого система обнаружения выбросов, такая как One Class SVM, может использоваться для изучения границы принятия решения - «барьера», который отделяет выбросы от выбросов, также известный как мое обычное время для картофеля, - который знает, когда я могу послушать Ensalada de Papa . Таким образом, чтобы предсказать, буду ли я слушать песню, нам нужно увидеть, находится ли пара времени и дня внутри барьера принятия решений, который я покажу на следующем изображении.

Точки данных, заключенные в темно-красную линию, формально известную как граница принятия решения, являются промежуточными или обычными моментами, когда я играю в PS, а точки, которые не находятся внутри нее, являются выбросами или необычными временами, в которые я играл. песня, например В субботу в полночь, в 4 утра в воскресенье и в 7 утра в понедельник.Главный вывод здесь заключается в том, что большая часть моего времени прослушивания выходит за рамки, а это означает, что мое время прослушивания вполне стандартное и ожидаемое.

Я еще раз спрошу: я сегодня буду слушать «Картофельный салат»? Если день и время находятся внутри красной линии, то, возможно, в противном случае «может быть меньше».

Резюме

В этой статье я показал, что происходит, когда информационный человек наполовину одержим хип-хоп песней под названием Potato Salad. Чтобы доказать упомянутый умеренный уровень одержимости, я создал и проанализировал набор данных, состоящий из каждого случая, когда я играл песню на Spotify, и обнаружил следующие факты:

  • С 10 октября 2018 г. по 13 апреля 2019 г. я прослушал «Картофельный салат» 104 раза.
  • 2.97% моих музыкальных сессий начинаются с PS.
  • Есть 100% шанс, что я буду играть в PS, если открою Spotify в 4 часа утра.
  • Обычно я играю песню примерно в одно и то же время.

В последний раз: я собираюсь сегодня послушать «Картофельный салат»? Надеюсь, да. Настоящий вопрос здесь в том, а вы?

Код, использованный для проведения этого эксперимента, доступен на моем GitHub по следующей ссылке:



Спасибо за прочтение. Надеюсь, вам понравилось :)
Если у вас есть какие-либо вопросы, комментарии, сомнения, вы хотите пообщаться или сказать мне, нравится ли вам песня (я уверен, что понравилось), оставьте комментарий здесь или в Твиттере, и я буду рад помочь.



О, я был бы признателен, если вы поделитесь этой историей в Твиттере или ретвитните мой твит с этой историей. Если мне повезет, Тайлер это увидит :).