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

Рекомендации Нетфликс

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

По мере того, как наша группа продолжала изучать набор данных Netflix Prize, мы поняли, что в наборе данных было несколько ограничений, которые не соответствовали нашему видению создания системы рекомендаций фильмов. В конечном счете, мы решили искать более обширный набор данных, который включает более качественные характеристики (метаданные) о каждом фильме, в дополнение к пользовательским рейтингам фильмов, чтобы иметь больше данных для анализа и создания более точных рекомендаций по фильмам. система. После обнаружения набора данных о фильмах, в котором есть метаданные о более чем 45 000 фильмов и 26 миллионов пользовательских рейтингов от более чем 270 000 пользователей, данные были достаточно полными, и мы начали выполнять базовую обработку данных и EDA.

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

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

Песни и поведение Spotify

Исследовательский вопрос: прогнозирование того, пропустит ли пользователь песню, на основе характеристик

Этот месяц в основном был потрачен на изучение новых пакетов и работу с большими данными. Хотя изначально мы планировали использовать облачный хостинг для хранения нашего набора данных, мы столкнулись с множеством проблем. Закончив наши первоначальные модели в sklearn, мы заметили, что тестовый набор данных имеет большую предвзятость. Учитывая, что большинство песен имеют высокие рейтинги популярности (в среднем 99/100), мы знали, что наша модель, вероятно, была искажена этим предубеждением и что нам нужно будет начать выборку битов фактического набора данных для обучения и тестирования наших моделей. .

Поскольку набор данных составлял около 400 ГБ, наши обычные инструменты обработки данных были неспособны завоевать набор данных такого большого размера. Мы обратились к PySpark, чтобы решить эту проблему. Функция ленивой загрузки PySpark позволит оптимизировать скорость загрузки и выборки нашего набора данных, а такие библиотеки, как Pandas, не могут сделать. Для этого по-прежнему требовалось загрузить набор данных, поэтому с помощью внешнего диска мы загрузили 60-гигабайтный zip-файл, что заняло более 15 часов, разархивировали его (что также заняло несколько часов), а затем начали выборку данных с помощью PySpark. Спасибо приложению Amphetamine на Mac, которое поддерживало работу наших локальных компьютеров во время загрузки и выборки данных.

Снимки НАСА/Марса

Исследовательский вопрос: задача классификации изображений для снимков марсохода

В этом месяце моя команда работала над созданием и улучшением нашей модели классификации изображений. Мы внедрили трансферное обучение, используя функции различных хорошо разработанных CNN, таких как ResNet50 и EfficientNet. Затем мы точно настроили каждую модель, заморозив ее базовые слои. Одной из основных проблем, с которыми мы столкнулись, был дисбаланс наборов данных. Для нашего набора данных у нас есть 25 различных классов изображений; однако один класс (основной) состоит из более чем 60% от общего числа обучающих выборок, в то время как некоторые классы с недостаточной выборкой едва имеют 10 выборок в наборе данных из более чем 3000. Это серьезно снижает точность нашей модели при прогнозировании недопредставленных классов. Для решения этой проблемы мы приняли два основных подхода. Во-первых, мы использовали увеличение изображения, такое как базовые случайные перевороты, масштабирование и повороты, для создания дополненных изображений для недостаточно представленных классов. Однако даже при наличии сгенерированных изображений многие классы по-прежнему представлены недостаточно. Чтобы справиться с этим, мы решили исключить несколько очень недопредставленных классов (менее 20 образцов) и сгруппировать классы, которые очень похожи друг на друга, но были определены как отдельные классы. Затем мы переобучили модель с недопредставленными классами с повышением дискретизации и сравнили результаты для разных моделей. В конце концов, модель ResNet50 с увеличением изображения смогла достичь наивысшей точности проверки, поскольку она сходится около 95%. Для нашего следующего шага мы хотели бы построить матрицу путаницы, чтобы дополнительно выявить слабые места нашей модели.

Распознавание активности человека на смартфоне

Исследовательский вопрос. Какая модель наиболее эффективна для прогнозирования активности человека на основе датчиков смартфона?

В этом месяце мы начали с сосредоточения внимания на том, как уменьшить количество функций, которые у нас есть, чтобы сократить время обучения, но при этом сохранить высокую производительность. Изучив это, мы обнаружили, используя PCA, что нам нужно как минимум 40 основных компонентов, чтобы покрыть как минимум более 90% дисперсии данных, поэтому мы были настроены на использование 40 компонентов при обучении каждой модели. Сначала мы обучили некоторые модели, и на данный момент наивысший результат, который мы получили с помощью SVM, составляет 90%, но нам все еще нужно было выполнить настройку гиперпараметров, чтобы попытаться увеличить баллы. Итак, мы начали кодировать каждый из наших классификаторов, в конечном итоге мы решили протестировать эти модели и сравнить, какая из них работает лучше всего: SVM, KNN, деревья решений, случайный лес, логистическая регрессия, повышение градиента, XGBoost, Наивный Байес и ANN. с помощью последовательного. Для каждой модели мы выполнили настройку гиперпараметров с использованием поиска по сетке, а также использовали k-кратность. Для каждой модели мы также используем эти три показателя: f1, точность и точность. Для наивного байесовского метода у нас была проблема, когда он не принимал отрицательные значения функций, поэтому нам все еще нужно масштабировать функции для этого классификатора, чтобы они находились между 0 и 1. Помимо этого, мы сейчас на шаге где мы готовы обучить каждую модель 5 раз на 5 различных рандомизированных выборках из 5000 из обучающего набора, чтобы мы могли получить 5 различных показателей метрик и, таким образом, иметь возможность получить значения p и проверить значимость.

Гнилые помидоры

Исследовательский вопрос. Изменились ли за последние 20 лет особенности естественного языка рецензий критиков и зрителей на Rotten Tomatoes и существует ли связь между общим рейтингом фильма и его кассовым успехом?

В прошлом месяце мы сосредоточились на НЛП (обработке естественного языка) аспекте нашего проекта, связанном с обзорами фильмов, которые мы собрали за последние месяцы. В частности, наша группа выполнила анализ настроений, TF-IDF, тематическое моделирование и анализ настроений на основе аспектов. Для нашей группы было достаточно просто провести анализ настроений в обзорах с помощью пакета Python NLTK, но мы решили, что более тонкий подход даст нам больше данных. Из-за огромного количества обзоров, которые были прикреплены к каждому из фильмов, мы решили запустить TF-IDF (частота терминов — обратная частота документа), чтобы обобщить текстовые данные. Этот метод можно использовать для обобщения текстовых данных, присваивая оценку каждому слову на основе его частоты в наборе документов и его относительной важности для конкретного документа. В нашем случае мы рассматривали объединенные обзоры всех фильмов в нашем наборе данных как текстовый корпус, а обзоры одного фильма — как документ. После этого мы использовали два разных подхода. Первым из них было создание резюме с использованием самих слов. Мы выбрали первые несколько слов для каждого фильма, получившего наивысший балл TF-IDF во всех обзорах. Второй подход заключался в извлечении первых нескольких полных обзоров, которые превышали определенный средний балл TF-IDF, а затем их объединении. После этого наша команда выполнила тематическое моделирование для каждого обзора фильма с использованием библиотек Python NLTK и Gensim. Используемая модель была обучена генерировать 15 отдельных тем, каждая из которых основана на ключевых токенах из текста, характеризующих темы. Затем мы собрали пять лучших ключевых токенов из каждого фильма, используя сводки, которые мы нашли заранее с помощью TF-IDF. Наконец, используя эти темы, мы смогли запустить анализ настроений на основе аспектов для каждого отдельного обзора фильмов, используя пакет от stanford nlp под названием анализ настроений на основе аспектов. Объединение всех этих данных на основе средних значений для каждого фильма приводит к более связному и информативному набору данных, чем в предыдущем месяце. Теперь мы планируем использовать этот набор данных для обучения регрессионной модели случайных лесов, которую мы будем использовать для прогнозирования прибыльности фильмов в зависимости от ряда различных факторов. Одна из моделей будет создана только с данными, которые были известны до выхода фильма, а другая — с данными как до, так и после. С помощью этих моделей мы надеемся получить более глубокое представление о различных факторах, которые могут определять успех фильма.

Актер/Распознавание речи

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

После этапа EDA у нас было две основные цели на лето:

  1. Построение модели распознавания говорящего
  2. Построение модели обнаружения эмоций

В настоящее время мы приближаемся к нашей окончательной модели для распознавания говорящего. За последние полтора месяца мы провели тщательное исследование моделей, доступных для тестирования на нашем наборе данных. Для нашего базового уровня мы решили попробовать две разные модели — одномерную свёрточную нейронную сеть (CNN) и гауссовскую смешанную модель (GMM). В обоих случаях мы решили использовать MFCC (кепстральные коэффициенты Mel-Frequency) в качестве нашего метода извлечения признаков. Наша одномерная модель CNN дала нам окончательную точность теста всего 17%, в то время как наша модель GMM дала нам окончательную точность 52%. Теперь при создании улучшенной окончательной модели для этой задачи нужно было учитывать два разных подхода — метод извлечения признаков и структура модели. Для извлечения признаков мы протестировали метод, известный как Linear Predictive Coding (LPC), который немного улучшил производительность 1D CNN, но привел к снижению производительности GMM.

Для структуры модели мы исследовали два разных пути для нашей окончательной модели:

  1. ResNet, используемый сверточно для кодирования функций, и уровень NetVLAD, который обеспечивает агрегацию функций.
  2. Модель SincNet: эта модель использует необработанную форму волны аудиосэмплов и обеспечивает более компактное и значимое представление данных. Мы закончили программировать обе модели и теперь изучаем как Google Colab, так и графические процессоры NVIDIA в учебных целях. Мы надеемся завершить это через несколько дней и перейти к фазе Эмоции-Настроения.

Анализ цепочки NFT

Исследовательский вопрос: мы заинтересованы в обнаружении незаконных сделок в сети транзакций WAX, особенно в пространстве NFT.

После нашего предыдущего обновления проекта наша группа обсуждала, что одним из наших препятствий является поиск эффективного и действенного метода получения данных из блокчейна WAX-EOS. К счастью, мы добились существенного прогресса в потенциальном решении этой проблемы с помощью в основном двух методов сбора данных. Наш первый метод включает в себя создание и запуск нашего собственного полного узла в блокчейне WAX, метод, который был затронут ранее. Несмотря на крутую кривую обучения использованию узла, нам удалось устранить различные возникшие бурные ошибки. Наш следующий шаг в отношении реализации узла — ознакомиться с документацией, чтобы мы могли выполнять правильные команды для запроса данных, соответствующих нашим аналитическим потребностям. В качестве альтернативы, наш второй метод сбора данных заключается в запуске скрипта Python, который извлекает блоки активов NFT вместе с их реестрами, содержащими истории транзакций, посредством запросов к API Atomic Asset и Atomic Market соответственно. Этот скрипт работает, сначала получая случайный блок активов по запросу от Atomic Asset API. Затем для каждого актива мы можем использовать его уникальный идентификатор актива в качестве параметра в запросе, который будет отправлен в API Atomic Market, выводя транзакции только этого данного актива. Мы планируем запускать этот сценарий удаленно в экземпляре, размещенном в Суперкомпьютерном центре Сан-Диего. Имея две отдельные опции для сбора данных, в идеале это позволяет нам экономить время, так как скрипт будет собирать некоторые исходные данные для быстрой проверки нашего анализа в небольшом масштабе, пока мы продолжаем разработку узла, который будет предоставить данные о гораздо большем объеме.

Что касается нашего анализа, наша группа по-прежнему привержена цели обнаружения незаконных сделок в сети транзакций WAX, уделяя особое внимание NFT. Учитывая, что рынок NFT состоит из транзакций между пользователями, мы посчитали, что использование теории графов было бы интуитивно понятным и подходящим подходом. В частности, для моделирования наших данных мы планируем использовать взвешенный неориентированный граф. Разрабатывая компоненты этого конкретного типа графа, каждый узел представляет отдельного пользователя, ребро между двумя узлами означает транзакцию между двумя пользователями, и, наконец, вес ребра — это количество транзакций, совершенных между парой пользователей. Чтобы идентифицировать транзакции, которые кажутся незаконными, мы стремимся изолировать только ребра с аномально высокими весами, что подразумевает серию транзакций, предназначенных для искусственного завышения стоимости NFT. Один из методов, который мы планируем использовать для этого анализа, — использование модифицированного алгоритма Крускала, который сведет наш широкосвязный граф только к его максимальному остовному дереву.

Лесные пожары Геологической службы США

Исследовательский вопрос. Какие факторы влияют на размер и интенсивность лесных пожаров?

Наш исходный набор данных от Kaggle содержит информацию о лесных пожарах с течением времени, но пространственная информация для каждого лесного пожара не подходит для целей визуализации. У нас есть данные, связанные с точками данного пожара, но наличие MultiPolygons позволяет улучшить визуализацию и представление пользователю. Таким образом, мы работали над поиском дополнительных наборов данных, содержащих информацию о периметре пожаров, а также другие информативные признаки, связанные с лесными пожарами и/или соответствующими регионами. Благодаря данным FRAP GIS мы можем начать агрегировать наши данные Kaggle, поступающие конкретно из Калифорнии, и стремиться добавить дополнительные функции на нашу панель инструментов. Примеры включают границы округов и городов, пожароопасные и приоритетные ландшафты, а также информацию о растительности в каждом регионе.