Обзор

Для университетского проекта я разрабатываю классификатор музыкальных рекомендаций на основе Spotify API. Основная идея состоит в том, чтобы рекомендовать пользователю новую музыку на основе песен, которые ему лично нравятся или не нравятся, на основе музыкальных компонентов песни (скорость, тональность, инструментальность и многое другое).

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

Что такое маркировка (аннотация)?

Маркировка или аннотация - это процесс оценки отдельных точек данных и предоставления базовой истины для модели машинного обучения, на которой можно учиться. В основном он используется в контролируемых приложениях машинного обучения. Если у вас есть набор данных с изображениями животных и вы хотите, чтобы ваша модель научилась определять кошек. Затем вы должны пометить все изображения соответствующими животными. Если доступно только два класса, это называется двоичной классификацией. Например, если у вас есть модель фильтра спама и вы хотите решить, спам это (1) или нет (0).

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

В моем случае мне пришлось пометить свой набор данных, решив, нравится мне песня (1) или мне не нравится песня (0). Таким образом, мой набор данных будет состоять из различных характеристик (энергия, танцевальность и т. Д.) И метки, которую я вручную присвоил набору данных (понравилось = {True, False}).

Приложение

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

Смахивание

Итак, как это работает? Сначала вам нужно войти в свою учетную запись Spotify, затем приложение извлечет последние 30 песен, которые вы слушали, и отобразит их в виде карточек. Отсюда он очень похож на Tinder: если вы проведете пальцем по карточке влево, песня вам не нравится, а если проведете вправо, она вам понравится. Если вы нажмете карту, он запустит Spotify на вашем телефоне и воспроизведет песню (работает, только если Spotify установлен). Я предоставил эту функцию, потому что я всегда забывал, как звучит песня, поэтому я мог просто проверить ее очень быстро.

Кроме того, у вас есть обзор, в котором вы можете увидеть песни, которые вы прокрутили, и изменить текущий статус песни (понравилось или не понравилось), нажав на соответствующую песню.

Также есть экран, на котором вы можете выбрать свой плейлист Spotify. Песни, которые вы проведете пальцем влево, будут автоматически добавлены в ваш плейлист. Я удалил эту функцию, потому что не был уверен, нужна ли мне эта функция в приложении. Теперь основное внимание уделяется маркировке.

API Spotify

Я использую Spotify API, потому что считаю их анализ звука для разных песен довольно точным, а также потому, что я использую Spotify ежедневно и подумал, что было бы действительно интересно поиграть с ним. Позже в своих проектах машинного обучения я буду использовать другую музыкальную базу данных под названием MusicBrainz. Но я расскажу об этом в другом посте.

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

Я думаю, что API действительно прост и интересен в использовании. Вы действительно можете поиграть с базой данных и музыкой.

Чтобы поэкспериментировать, я добавил в свое приложение несколько дополнительных функций. Если вы проведете пальцем вправо или влево, вы можете автоматически добавить их в список воспроизведения (слева) или понравившиеся песни (справа) в своей медиатеке. Таким образом, приложение также можно использовать для быстрого добавления песен в список воспроизведения и даже удаления их через обзорный экран. Вы можете найти дополнительную информацию о Spotify API в разделе



Firebase как серверная часть

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

Если вы не знакомы с базой данных Firebase Realtime, это, по сути, облачная база данных NoSQL. Данные хранятся в формате JSON и синхронизируются в реальном времени с каждым подключенным клиентом. В настоящее время я сохраняю только самые важные данные, то есть Spotify Track ID, нравится мне это или нет, время, когда я пролистал песню, и некоторую дополнительную информацию, такую ​​как имя и изображение, для отображения в приложении. В противном случае мне пришлось бы сделать еще один вызов Spotify API, и я подумал, что было бы более изобретательно сделать это таким образом.

Резюме

Для меня это был забавный небольшой проект, чтобы поближе познакомиться с Spotify API, который я позже использовал в своем проекте машинного обучения.

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

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

Этот пост был введением в мое приложение для маркировки с помощью Spotify API. В следующем сообщении блога мы перейдем к техническим вопросам, и я подробно расскажу вам, как я разработал приложение и какие подводные камни следует избегать.

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

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

Если вы хотите создать собственное классификационное приложение, мой проект опубликован на моем Github. Не стесняйтесь использовать это!