CoderCastrov logo
CoderCastrov
Наборы данных

Где находятся данные? Создайте свой собственный набор данных

Где находятся данные? Создайте свой собственный набор данных
просмотров
6 мин чтение
#Наборы данных

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

Данные повсюду.

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

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

Некоторые из наиболее распространенных источников:

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

  • Amazon: Компании, такие как Amazon и Google, обычно публикуют общедоступные наборы данных.
  • Google Dataset: это мощный поисковик наборов данных.
  • Stanford: университет Стэнфорда имеет очень важное отделение NLP. Очень известная многоязычная библиотека (stanza) разработана ими.
  • John Hopkings: Университет Джона Хопкинса также находится в авангарде NLP и обычно делится наборами данных и статьями SOTA.
  • IMDB известный сайт о фильмах имеет огромный набор данных, который обычно используется для анализа настроений.
  • Machine Learning Repository
  • Kaggle: Мекка для специалистов по обработке данных. Там обычно делятся не только тысячи наборов данных, но и способы их анализа, вызовы и имеется большое сообщество.
  • Данные государственных учреждений: Здесь слишком много источников, оставлю это для вас, чтобы вы нашли... большинство правительств имеют репозитории данных на основе своих статистических учреждений. Например, Аргентина: https://datos.gob.ar/ или Мексика: https://datos.gob.mx/

Получение / создание набора данных, который не существует

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

Использование готового набора данных или модели и его адаптация

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

Похожий подход - это fine tuning и transfer learning, процесс, при котором мы можем использовать модель, обученную для одной цели, и приспособить ее для другой. Этот подход был широко использован в последние два года, особенно для изображений. Мы можем взять модель классификации изображений, обученную на тысячах или миллионах фотографий объектов или животных (собаки, кошки, лошади), среди которых, возможно, нет классификации, которую мы хотим сделать (допустим, красные и зеленые единороги). В этом случае мы можем взять уже обученную модель и передать ее веса нашей модели, затем повторно обучить нашу модель с небольшим количеством данных и получить очень удовлетворительный результат. В общем (и очень кратко) процесс transfer learning заключается в том, чтобы взять уже обученную модель и добавить слой обучения с признаками нашего набора данных (красные единороги против зеленых), при этом модель будет использовать предыдущие слои для определения форм, границ, текстур, а наш слой добавит информацию о цвете или роге единорога для различения его формы от тех, которые модель уже умеет распознавать (лошади).


Парсинг данных

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

Нужно проанализировать цены на товары на рынке? Можно сделать парсинг товаров у ритейлеров. Нужны комментарии к конкретной новости? Парсинг новостных страниц (обычно это проще, потому что они предлагают версии в формате XML и/или другие каналы).

Среди наиболее распространенных библиотек для парсинга данных можно найти:

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

Креативность

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

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