Что такое датасет простыми словами

Датасет (Dataset)

Датасет – 1. Набор исследуемых данных, располагаемый на нескольких компьютерах одновременно ввиду большого объема. 2. Выборка из такого массивного объема данных, созданная с целью продемонстрировать тот или иной принцип или концепцию Машинного обучения (ML):

Датасет банка о потребителях кредитных продуктов

Датасеты – основа Науки о данных (Data Science), материал, на котором основаны все исследования. В контексте науки принято рассматривать два их типа: традиционные и Большие данные (Big Data).

Традиционные и Большие данные

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

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

Виды датасетов

Наука разделяет датасеты на три категории:

Простая запись

Существует несколько подвидов простых записей:

Графы

Упорядоченные записи

Некоторые данные упорядочены во времени или пространстве. Их можно разделить на следующие типы:

Атрибуты датасета

Выделяют три основные характеристики датасета:

Специальные методы датасетов

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

Встроенный метод библиотеки Pandas read_csv() позволяет преобразовать файл в Датафрейм (Dataframe), и это один из самых распространенных способов подгрузки данных в код:

Метод позволяет также указать тип разделителя ( sep = ‘:’ ), кодировку ( encoding = ‘utf-8’ ) и многие другие параметры загрузки.

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

С перечнем других встроенных наборов данных в Scikit-learn можно ознакомиться по ссылке.

Источник

Data science и качественный код

Обычно модели машинного обучения строят в jupyter-ноутбуках, код которых выглядит, мягко говоря, не очень — длинные простыни из лапши выражений и вызовов «на коленке» написанных функций. Понятно, что такой код почти невозможно поддерживать, поэтому каждый проект переписывается чуть ли не с нуля. А о внедрении этого кода в production даже подумать страшно.

Поэтому сегодня представляем на ваш строгий суд превью python’овской библиотеки по работе с датасетами и data science моделями. С ее помощью ваш код на python’е может выглядеть так:

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

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

Датасет

Основное назначение Dataset — формирование батчей.

или можно вызвать генератор:

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

Кроме итерирования в Dataset доступна еще одна полезная операция — cv_split — которая делит датасет на train, test и validation. И, что особенно удобно, каждый из них снова является датасетом.

Индекс

Адресация элементов датасета осуществляется с помощью индекса. Это может быть набор идентификаторов (клиентов, транзакций, КТ-снимков) или просто порядковые номера (например, numpy.arange(N) ). Датасет может быть (почти) сколь угодно большим и не помещаться в оперативную память. Но это и не требуется. Ведь обработка данных выполняется батчами.

Создать индекс очень просто:

Когда исходные данные хранятся в отдельных файлах, то удобно строить индекс сразу из списка этих файлов:

Тут элементами индекса станут имена файлов (без расширений) из заданной директории.

Бывает, что элементы датасета (например, 3-мерные КТ снимки) хранятся в отдельных директориях.

Хотя чаще всего вам вообще не придется оперировать индексами — вся нужная работа выполняется внутри, а вы уже работаете только с батчем целиком.

Класс Batch

Во-первых, метод обязательно должен предваряться декоратором @action (чуть позже вы узнаете зачем).

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

То есть метод следует писать так словно он обрабатывает один снимок, и индекс этого снимка передается в первом параметре.

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

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

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

Пайплайн

И поскольку обработка каждого батча может занимать много времени, то было бы неплохо формировать батчи заблаговременно. Это особенно важно, если обучение модели выполняется на GPU, ведь тогда простой GPU в ожидании нового батча может запросто «съесть» все преимущества ее высокой производительности.

Параметр prefetch указывает, что надо параллельно считать 3 батча. Дополнительно можно указать технологию распараллеливания (процессы, потоки).

Объединяем датасеты

В реальных задачах машинного обучения вам редко придется иметь дело с единственным датасетом. Чаще всего у вас будет как минимум два набора данных: X и Y. Например, данные о параметрах домов и данные о их стоимости. В задачах компьютерного зрения кроме самих изображений еще есть метки классов, сегментирующие маски и bounding box’ы.

Читайте также:  капуста брюссельская фото рецепты приготовления на сковороде

JointDataset

Если вам нужна лишь параллельная итерация по батчам, то удобнее будет создать единый датасет:

А дальше все происходит совершенно стандартным образом:

Только теперь next_batch возвращает не один батч, а tuple с батчами из каждого датасета.

Естественно, JointDataset можно состоять и из пайплайнов:

Операция join

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

Это лучше продемонстрировать на примере с КТ-снимками. Загружаем координаты и размеры раковых новообразований и формируем из них 3-мерные маски.

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

И снова отмечу, что никакие загрузки и вычисления, ни с изображениями, ни с масками не будут запущены, пока вы не вызовете pl_images.next_batch

Собираем все вместе

Итак, посмотрим как будет выглядет полный workflow data science проекта.

Выполняем препроцессинг и сохраняем обработанные снимки

Описываем подготовку и аугментацию данных для модели

Формируем тренировочные батчи и обучаем модель

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

А теперь вопрос: что еще стоит добавить в библиотеку? чего вам остро не хватает при работе с данными и моделями?

Источник

Что такое датасет простыми словами

Мы уже рассказывали о важности этапа подготовки данных (Data Preparation), результатом которого является обработанный набор очищенных данных, пригодных для обработки алгоритмами машинного обучения (Machine Learning). Такая выборка, называемая датасет (dataset), нужна для тренировки модели Machine Learning, чтобы обучить систему и затем использовать ее для решения реальных задач. Однако, поскольку в процессе обучения необходимо оценивать качество модели, различают несколько типов выборок. В этом материале мы расскажем, из чего состоит dataset, какие бывают датасеты и как их сформировать.

Что такое датасет для Data Mining и из чего он состоит

Dataset для машинного обучения – это обработанная и структурированная информация в табличном виде. Строки такой таблицы называются объектами, а столбцы – признаками. Различают 2 вида признаков [1]:

Признаковое описание характерно для задач классификации, когда имеется выборка – конечное множество объектов, для которых известно, к каким классам они относятся. Классовая принадлежность остальных объектов неизвестна. В процессе машинного обучения строится модель, способная классифицировать произвольный объект из исходного множества [2]. Практический смысл задач классификации состоит в предсказании возможных исходов на основе совокупности входных переменных, например, диагностика заболеваний, предварительная оценка эффективности месторождений полезных ископаемых, кредитный скоринг, распознавание речи, прогнозирование оттока клиентов (Churn Rate) и т.д.

В зависимости от варианта задачи классификации, целевой признак может выглядеть по-разному [1]:

Каким бывает dataset: типы выборок

Первичный набор исходных данных принято называть генеральной совокупностью. Процесс формирования выборок из генеральной совокупности называется порождение данных [3]. Выборка – это конечное подмножество элементов генеральной совокупности, изучив которое можно понять поведение исходного множества. Например, генеральная совокупность состоит из 150 тысяч посетителей сайта, а в выборку попали 250 из них.

Вероятностная модель порождения данных предполагает, что выборка из генеральной совокупности формируется случайным образом. Если все ее элементы одинаково случайно и независимо друг от друга распределены по исходному множеству (генеральной совокупности), выборка называется простой. Простая выборка является математической моделью серии независимых опытов и, как правило, используется для машинного обучения. При этом для каждого этапа Machine Learning необходим свой набор данных [3]:

Как сформировать выборку для Data Mining

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

При соблюдении этих условий объемы обучающей и оценочных выборок могут существенно различаться. Например, размер валидационного датасета может составлять всего 10% генеральной совокупности. Главное в формировании выборок – ни в коем случае не объединять обучающий датасет и с оценочными (тестовым и валидационным), поскольку это грозит переобучением модели Machine Learning. В этом случае модель получит высокие оценки качества в процессе тренировки, но не покажет такого результата на реальных данных.

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

Формирование выборок – начальный этап Data Preparation

Вся практика Data Preparation в нашем новом курсе для аналитиков Big Data: подготовка данных для Data Mining. Присоединяйтесь!

Источник

Как собрать датасет за неделю: опыт студентов магистратуры «Наука о данных»

Привет, Хабр! Сегодня хотим представить вам некоммерческий открытый датасет, собранный командой студентов магистратуры «Наука о данных» НИТУ МИСиС и Zavtra.Online (подразделении SkillFactory по работе с вузами) в рамках первого учебного Дататона. Мероприятие проходило как один из форматов командной практики. Данная работа заняла первое место из 18 команд.

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

TLTR: Ближе к концу статьи вы найдёте информативные графики, карты и ссылки.

Немного про сам Дататон

Программа магистратуры «Наука о данных» НИТУ МИСиС и Zavtra.Online рассчитана на два года — т.е четыре семестра и раз в семестр для студентов будет проводиться хакатон, делая обучение больше ориентированным на решение практических задач. Первый хакатон был посвящен сбору датасета, поэтому и назвали его соответственно — «Дататон».

Читайте также:  В голове как будто током пробивает что

Всего в Дататоне приняло участие 90 студентов. Перед ними поставили задачу — собрать датасет, который может использоваться в продукте, основанном на Data Science.

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

Оценивать команды позвали менторов — практикующих специалистов по Data Science высокого уровня из таких компаний как: Align Technology, Intellivision, Wrike, Мерлин АИ, Лаборатория Касперского, Auriga, Huawei, SkillFactory.

Начало работы над датасетом

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

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

Фундаментальной идеей нашего датасета является гипотеза, что окрестности перспективных транспортно-пересадочных узлов Москвы (далее — ТПУ) станут хорошими зонами для развития бизнеса. Что вообще представляет из себя концепция ТПУ?

Какие проблемы решает датасет?

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

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

1. Описание источников

1.1 Источники

В датасете были использованы следующие данные с сайта Портал открытых данных правительства города Москвы:

1.2 Структура датасета

Основу структуры данных составляют уникальные объекты торговли и услуг, каждому из которых соответствует набор метаданных, включающих в себя такие сведения, как:

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

Это пример не только объединения, но и неточности отдельных полей, о чем будет следующий раздел

1.3 Качество данных и проблемы при их сборе

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

Пример спорных данных

2. Обработка данных

2.1 Данные об объектах

После предварительной оценки имеющихся в распоряжении первичных данных (а это были данные об объектах торговли, услуг и ТПУ на территории Москвы) мы поняли, что ключевым элементом нашего датасета будут уникальные объекты торговли и услуг, которые мы объединили в единый центральный датасет. Всего мы получили более 78 000 записей, для которых помимо уникального ID и названия имеются сведения о:

2.2 Данные об административном делении

Эту информацию, в том числе географические и демографические параметры, мы обнаружили на Википедии в относительно актуальном состоянии на начало 2020 года. Мы автоматизировали процесс выгрузки сведений путём написания собственной функции для парсинга html-страниц. Незначительными трудностями, с которыми мы столкнулись, стали:

2.3 Данные о зонах охвата

Зоны охвата являются не объективной оценкой, а лишь одной из теоретических методик оценки эффективности того или иного объекта торговли. Мы обнаружили методику оценки, которая разделяет объекты на 4 группы. В нашем случае достаточно было ввести лишь 3 из них — маленькие, средние и большие. Разделение мы осуществляли путем анализа типов и названий объектов. Например, приставка «Гипер-» с большой долей вероятности соответствует большому объекту. Исходя из размера мы определили зону, в радиусе которой торговый объект является привлекательным для клиентов.

2.4 Данные о ТПУ

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

Каждый полученный комплекс центрирован относительно всех включенных объектов, при этом мы сохранили все данные об исходных ТПУ — они хранятся внутри в виде словарей, где ключами выступают оригинальные ID ТПУ.

2.5 Данные о стоимости аренды и покупки коммерческой недвижимости

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

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

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

2.6 Данные о пассажиропотоке на станциях метро

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

Иронично, что обнаруженная ошибка в старом источнике позволила обнаружить подходящие данные. После повторной проверки мы поняли, что в одном из источников использованы данные за 2019 год, при этом подпись содержит указание на 2016 год. Эта подпись и сбила нас при первой оценке. Актуальность подтвердилась наличием данных по построенным в 2019 году объектам метро.

Читайте также:  нейролептик что это такое механизм действия

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

2.7 Новые признаки и данные

Собрать числовые или строковые данные — мало. Эти данные важно уметь трактовать и выделять на их основе новые параметры или свойства. Поскольку наша гипотеза строилась на принадлежности объекта к ближайшему ТПУ, мы написали алгоритм поиска ближайших объектов и для каждого уникального объекта сопоставили:

Небольшой кусок датасета с бинарными признаками

2.8 Итоговый датасет

В результате объединения мы получили датасет размерностью 44 столбца и 78086 строк. В формате Pandas он занимает около 25,9+ MB. Если разбить столбцы на тематические сегменты, то в нём содержатся данные о:

2.9 Корреляционная матрица

Что можно сказать по полученной корреляционной матрице?

3. Немного визуализаций

3.1 Датасет на карте Москвы

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

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

Для большей наглядности на карте реализованы слои в виде административного деления по районам. В нашем случае за стандартное отображение мы приняли плотность объектов на каждый район города.

Пример отображения районов по плотности размещения объектов

Транспортная схема Москвы: здесь отображаются только ТПУ

Пример отображения с объектами — в данной выборке всего 10000 объектов из более чем 78 000

Пример отображения объектов по выделенному адресу — описание сформировано в виде HTML-кода

3.2 (Не)много графиков

Графики — отличный инструмент для анализа. В качестве демонстрации мы подготовили ряд графиков, чтобы наглядно продемонстрировать статистику по наиболее интересным параметрам датасета.

Вот, например, 20 крупнейших торговых сетей Москвы:

А если посмотреть, какие типы объектов самые популярные?

По типам услуг всё не так интересно, зато понятно, сколько всего объектов каждого типа есть в городе.

Теперь чуть более интересные цифры — количество объектов при ТПУ.

Руки чешутся посмотреть на самый верхний ТПУ «Профсоюзная». Почему бы и да? На этом скриншоте размещаются больше 2000 объектов, для которых этот ТПУ ближайший.

Хорошо, как насчёт того, чтобы узнать, сколько из объектов в городе являются сетевыми? Получается красивый пирог с почти идеальной четвертью. Занятно. Пусть 1 и 0 вас не пугают, это как раз и есть пример бинарного признака, где 1 означает, что объект входит в какую-либо крупную сеть.

Раз уж мы решили строить топы, почему бы не узнать адрес, по которому располагается большее число объектов? Легко!

Найти его не так уж сложно. Список впечатляет:

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

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

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

4. Заключение

4.1 Варианты применения

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

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

4.2 Целевая аудитория

Датасет может быть интересен:

4.3 Достоинства и недостатки

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

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

4.4 Вместо резюме

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

Узнать больше про магистратуру можно на сайте data.misis.ru и в Telegram канале.

Участники команды Data SkyScrapers

Артем Филиппенко — Тимлид / Программирование / Автор статьи
Юлия Компаниец — Программирование / Алгоритмизация / Визуализация
Егор Петров — Программирование / Парсинг / Поддержка репозитория
Вячеслав Кандыбин — Парсинг / Поиск источников
Ильдар Габитов — Координация / Анализ
Сергей Гильдт — Помощь в составлении статьи

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

Источник

Портал знаний