Введение:

На протяжении всей истории очевидно, что люди как вид всегда были известны как рассказчики, будь то рисование наших историй на стенах пещер в каменном веке или рассказывание наших историй у костра на Диком Западе; истории, которые мы рассказываем, всегда были отражением того, кто мы есть, откуда пришли и кем хотим быть. В настоящее время рассказывание историй включает в себя множество форм, таких как книги, фильмы, подкасты, музыка и т. д., но есть одна форма среди всех, которая выделяется среди остальных, и это музыка. Не у всех есть время каждый день смотреть фильмы, не всем нравится слушать подкасты, не всем нравится читать книги, но редко можно найти человека, который не слушает хотя бы одну песню в день, будь то добровольно через свои музыкальные приложения, или невольно, когда они входят в ресторан с фоновой музыкой, или смотрят телевизионную рекламу с песней и т. д. Музыка повсюду в нашей жизни, и это наиболее доступная форма повествования, где она может варьироваться от просмотра оркестровой музыки с использованием сотен инструментов до простого прослушивания одного человека, использующего только собственный голос и звуки для преобразования эмоций и идей в слышимую форму. Лично у меня очень теплые отношения с музыкой, так как мой вкус всегда был вне тенденций и норм современной эпохи, когда большинство песен, которые я слушаю, ориентированы на рок и металл, а не на более распространенный коммерческий хип-хоп. R&B и рэп. После многих лет наблюдения за музыкой, которую слушают люди, и сравнения ее с их общими моделями поведения, я пришел к мнению, что музыка является одним из многих факторов, влияющих на нашу жизнь на подсознательном уровне, а это означает, что песни, которые мы слушаем каждый день, , их тексты, их тон, их темы и т. д. действительно имеют прямое влияние на нас и то, как мы воспринимаем

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

1) Сбор и очистка данных:

Первым шагом в проекте была возможность преобразовать мой плейлист Spotify во фрейм данных из строк и столбцов с несколькими функциями для выполнения моего анализа. К счастью, я нашел замечательный бесплатный веб-сайт под названием Exportify (https://watsonbox.github.io/exportify/), где пользователи входят в свои учетные записи Spotify, выбирают список воспроизведения, который они хотели бы экспортировать в виде файла csv, и получают версию csv. из своего плейлиста одним нажатием кнопки. Самой впечатляющей особенностью этого веб-сайта является тот факт, что возвращаемый CSV-файл содержит очень подробную информацию о музыкальных особенностях и элементах песни, таких как Танцевальность, Энергия и Живость, все из которых выражены в числовом выражении.

После импорта CSV и преобразования его во фрейм данных с помощью pandas следующим шагом было избавление от записей, которые вызовут проблемы для нашего анализа и будущих моделей. Например, некоторые песни, которые являются каверами на настоящие песни (обычно от исполнителей YouTube), не имеют значений для функции «Название альбома», что могло бы вызвать проблемы на более поздних этапах проекта. Следовательно, все кавер-версии были удалены из набора данных, чтобы избежать проблем и ошибок на более поздних этапах.

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

2) Исследовательский анализ данных:

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

Очевидно, что мой музыкальный вкус в значительной степени сосредоточен вокруг рока и металла, где мои лучшие 5 жанров в моем плейлисте - это разные типы рока и металла, что является ранним показателем того, насколько важен жанр песни в модели, которую я буду строить. Кроме того, я решил выделить исполнителей с наибольшим количеством песен в плейлисте:

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

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

Приведенные выше 2 графика представляют речливость и инструментальность разных жанров. Речевость определяется как количество произнесенных слов в треке, что определенно объясняет

тот факт, что песни в стиле хип-хоп и рэп доминируют в этой категории, поскольку природа этих песен состоит в том, чтобы произносить много слов в секунду (например, Rap God Эминема). С другой стороны, инструментальность показывает, сколько инструментальных звуков задействовано в песне, что определенно больше присутствует в рок- и техно-песнях, чем в традиционном хип-хопе (например, To Live Is To Die от Metallica). Тот же тип графиков был создан для других музыкальных функций, которые дали мне более полное представление об этих функциях и их значении.

3) Импорт другого плейлиста:

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

и я выбрал его, чтобы иметь окончательный набор данных, который разнообразен по 1 и 0. После импорта его плейлиста, преобразования его в набор данных и очистки, я объединил полученный набор данных со своим и получил окончательный набор данных, состоящий из 813 записей, чего более чем достаточно для построения модели.

4) Сравнение функций:

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

Приведенные выше графики представляют собой графики плотности танцевальности и тональности песен из обоих плейлистов, где одно распределение представлено синим цветом, а другое — оранжевым. Короче говоря, чем больше перекрываются 2 распределения определенной переменной (например, Key), тем меньше разница между средними значениями этой переменной, следовательно, тем меньше влияние этой переменной на целевую переменную. Точно так же

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

1) Самые большие различия связаны с танцевальностью и валентностью песни, где мой плейлист имеет более низкие средние значения в обоих значениях, что имеет смысл, поскольку рок-музыка, как известно, не является «танцевальной», а более низкие валентности указывают на более мрачные/грустные песни, что-то что отражает истинную природу обоих плейлистов.

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

5) Преобразование категорийных данных:

Прежде чем приступить к выбору признаков и построению модели, мне пришлось иметь дело с преобразованием категорийных данных в числовые данные. Двумя категориальными переменными под рукой были имя исполнителя и жанры, обе из которых имеют сотни возможных значений, исключая самый популярный метод, когда дело доходит до такого рода проблем, называемый одним горячим кодированием, поскольку он создает один дополнительный столбец для каждого возможного. категориальная переменная, что приводит к очень большому набору данных с сотнями столбцов. По этой причине я решил придумать свою собственную стратегию, которая присваивает каждому значению число, соответствующее количеству раз, которое оно появляется в столбце. Например, у меня есть 38 песен Avenged Sevenfold, поэтому каждая Avenged Sevenfold в столбце «Имя исполнителя» заменена на

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

6) Выбор функции:

Одним из наиболее распространенных методов выбора признаков является тестирование ANOVA (дисперсионный анализ), при котором каждая переменная сравнивается с целевой переменной (есть ли песня в списке воспроизведения) и проверяется, действительно ли эта переменная оказывает прямое влияние на целевая переменная, все из которых выполняются с использованием статистической концепции p-значений (подробности в полном коде). После выполнения теста на моем наборе данных ненужные функции, которые я позже отбросил, оказались следующими:

• Энергия • Живость • Ключ

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

7) Построение модели:

Как упоминалось ранее, моей основной целью было определить, попадет ли песня в мой плейлист, что сделало проблему проблемой классификации, где 1 означает «да», а 0 — «нет». Я решил подойти к проблеме, используя четыре наиболее распространенных алгоритма классификации и

сравнить их выступления. Выбранными алгоритмами являются K ближайших соседей (KNN), логистическая регрессия, машины опорных векторов и классификаторы случайного леса, все из которых работают по-разному, но имеют одну общую цель — прогнозирование двоичного значения целевой переменной с наименьшей возможной ошибкой. Я разделяю свой набор данных на обучающий и тестовый наборы (80–20 разделений), где я обучаю модели и подгоняю их к первому, а затем проверяю точность и производительность второго, чтобы в конечном итоге определить наиболее эффективные модели. . Ниже приведен небольшой пример модели машины опорных векторов и ее точности:

8) Производительность и оптимизация модели:

Две основные метрики, которые я использую при оценке моделей классификации ML, — это MSE (среднеквадратичная ошибка) и кривая ROC (характеристическая кривая принимающего оператора). MSE в основном измеряет среднюю ошибку моей модели, где ошибка определяется как неправильная классификация записи. Что касается РПЦ.

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

Модели с наивысшей точностью оказались логистической регрессией и машинами опорных векторов, каждая с точностью 88,95% и 88,34% соответственно. Когда дело доходит до моделей классификации, определенный уровень точности нельзя обобщить как «хороший» или «плохой», поскольку он сильно зависит от характера рассматриваемой проблемы. При построении модели, которая классифицирует, будет ли у пациента развиваться раковая опухоль или нет, точность 88% (округление до 90%) будет слабой, поскольку неправильная классификация 10 из каждых 100 пациентов (особенно с высоким уровнем ложноотрицательных результатов) это очень высокая точность, так как результаты определяют жизнь людей. Однако точность в 90% для модели, которая определяет, хочу ли я фильм или нет, на самом деле очень хороша.

так как результат не оказывает на меня большого влияния, а в худшем случае фильм может не понравиться, что определенно не является концом света. В случае с этим проектом он больше смещен в сторону последнего примера, где в наихудшем сценарии не нравится 1 из 10 (приблизительно) песен, которые предсказывала моя модель, поэтому точности предсказания 88% более чем достаточно. для этой проблемы.

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

Результаты моей оптимизации гиперпараметров были следующими:

К моему удивлению, точность обеих моделей снизилась (очень небольшое снижение для LR) после их настройки, что может быть связано с тем, что поиск по сетке выполняется только на обучающем наборе и возвращает наилучшую возможную модель в соответствии с этим набором. Я обязательно продолжу работу над этой проблемой, потому что она показалась мне довольно интересной, но, как упоминалось ранее, 88,96% (90%) действительно хороши для характера этой проблемы, поэтому я решил выбрать логистическую регрессию и настроить Логистическая регрессия как два варианта моей окончательной модели, поскольку их точность очень близка.

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

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

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

9) Заключение:

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

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

10) Заключительные мысли:

Одна из основных причин, по которой я выбрал науку о данных и аналитику в качестве своей карьеры, заключается в том, что она сочетает в себе науку и философию таким образом, что большинство людей не замечают. Чтобы уточнить, основной целью почти каждого проекта является использование математического моделирования и кодирования (науки) для получения информации для улучшения бизнеса, где информация может варьироваться от поведения потребителей при покупке определенного продукта до количества прогнозируемых баллов. звезда НБА забьет в игре, и бизнес также может варьироваться от продуктового магазина, пытающегося привлечь больше клиентов, до компаний высшего уровня, пытающихся найти способы увеличить время, проводимое потребителем за экраном в своих приложениях/платформах. Независимо от цели и задачи, есть одна общая черта для всех проектов: вся информация, которая нам нужна и которую мы хотим использовать, существует в природе и представлена ​​числами, ожидающими передачи алгоритму, который предсказывает будущие результаты решаемой проблемы. Лично я человек, который любит смотреть на мир очень философски, мне нравится смотреть на вещи экзистенциально и глубоко, поэтому этот проект заставил меня погрузиться в кроличью нору того, что это значит для человека. математический алгоритм

чтобы иметь возможность предсказать что-то чисто субъективное, например, мой музыкальный вкус. Как я уже упоминал во введении, музыка повсюду в нашей жизни и принимает несколько форм, таких как обычные песни, песнопения спортивных команд, религиозные хоры и многие другие формы, которые все делают одну общую вещь — объединяют людей. Прекрасным примером этого является просмотр московского концерта Metallica 1991 года, известного как один из крупнейших концертов в истории, когда 1,6 миллиона человек на пару часов забыли обо всех своих политических и идеологических разногласиях и только и делали, что пели и танцевали под некоторые из величайших треков всех времен. Я пытаюсь понять, что что-то настолько эмоциональное и относительное, как музыка, все еще может быть смоделировано с помощью математических алгоритмов, которые были открыты учеными на протяжении всей истории, что заставляет меня задаться вопросом, как что-то столь субъективное может быть сведено к простым числам и модели? Что это означает для человеческих эмоций и сознания, если все, что мы чувствуем и что нам нравится, может быть использовано в числовых моделях, открытых в природе? Моя модель примитивна и была построена для улучшения моих навыков, но что, если кто-то с большим опытом, чем я, создаст продвинутый ИИ с той же целью, кто будет знать больше о моем музыкальном вкусе, обо мне или об ИИ? Все эти вопросы проистекают из одной центральной идеи: мы произошли от природы, но то же самое можно сказать и о математических правилах, лежащих в основе каждой модели машинного обучения и искусственного интеллекта, так кто же в конечном итоге станет превосходящей силой?