- Оригинальный адрес:Визуализация наборов данных машинного обучения с помощью Google FACETS.
- Оригинальный автор:Parul Pandey
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:QiaoN
- Корректор:lsvih, Mcskiller
Визуализация наборов данных машинного обучения с помощью Google FACETS
FACETS — это инструмент с открытым исходным кодом от Google, который позволяет легко изучать закономерности из больших объемов данных.
Много данных полезнее хорошего алгоритма, но хорошие данные полезнее большого количества данных: Питер Норвиг
Было много дискуссий о том, как большие объемы обучающих данных могут оказать огромное влияние на результаты моделей машинного обучения. Однако по мере увеличения объема данных качество данных также имеет решающее значение для создания надежной и надежной системы машинного обучения. В конце концов, "отбросы, отбросы", то есть то, что вы получаете от системы, будет отражать то, что вы предоставляете системе.
Набор данных машинного обучения иногда содержит от тысяч до миллионов точек данных, и они могут содержать сотни или тысячи функций. Кроме того, реальные данные беспорядочны, с пропущенными значениями, несбалансированными данными, выбросами и т. д. Поэтому, прежде чем приступить к построению модели, мы должны очистить данные. Визуализация данных помогает найти эти выбросы и найти данные, которые нуждаются в очистке. Визуализация данных обеспечивает общий обзор данных (независимо от объема) и способствует быстрому и точному EDA (исследовательскому анализу данных).
FACETS
В словаре аспект означает особый аспект или характеристику чего-либо. такой же,FACETSИнструменты позволяют нам понимать и исследовать особенности данных без явного кодирования.
Facets — это поддержка GooglePAIR (People + AI Research)Инструмент визуализации с открытым исходным кодом, выпущенный проектом, чтобы помочь нам понять и проанализировать наборы данных машинного обучения. Facets включает в себя две части визуализации, каждая из которых может углубляться в данные и давать хорошее представление, не требуя большой работы со стороны пользователя.
- Facets Overview
Как следует из названия, в этом разделе визуализации представлен обзор всего набора данных и распределения каждой функции данных. Обзор фасетов обобщает статистику по каждой функции и сравнивает наборы данных для обучения и тестирования.
- Facets Dive
Эта функция помогает пользователям получить представление об отдельных характеристиках данных и получить больше информации, наблюдая за отдельными характеристиками. Это облегчает интерактивное исследование большого количества точек данных одновременно.
Эти визуализации являютсяTypescriptнаписаноPolymerРеализация веб-компонентов, которые можно легко встроить в блокноты Jupyter или веб-страницы.
использовать и установить
Существует два способа обработки данных с помощью FACETS:
веб приложение
Его можно использовать непосредственно на демо-странице по ссылке ниже:
Facets — визуализация наборов данных машинного обучения
Сайт позволяет любому визуализировать свои собственные наборы данных прямо в своем браузере без необходимости установки или настройки какого-либо программного обеспечения, и ваши данные не будут загружены.
В Jupyter Notebooks/Colaboratory
FACETS также можно использовать в Jupyter Notebook или Colaboratoty. Это обеспечивает большую гибкость для выполнения всего EDA и моделирования в одном ноутбуке. Полную информацию по установке смотрите на официальномРепозиторий на гитхабе. Однако далее мы опишем, как использовать FACETS в colab.
данные
Хотя вы можете использовать данные, предоставленные на демонстрационной странице, я собираюсь использовать другой набор данных. Я буду использовать FACETS дляНабор данных прогнозирования кредитаВыполнить ЭДА. Постановка задачи состоит в том, чтобы предсказать, погасит ли заявитель, взявший корпоративный кредит, кредит. Это очень известный пример в сообществе машинного обучения.
здесьделится на тренировочный набор и тестовый наборнабор данных. Давайте загрузим данные в Colab.
import pandas as pd
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
Теперь давайте посмотрим, как использовать обзор фасетов для этих данных.
FACETS Overview
Обзор автоматически позволяет пользователям быстро понять распределение каждого значения функции данных. Также есть возможность сравнивать распределения сразу в обучающей и тестовой выборках. Если в данных есть какая-то аномалия, она всплывает из местоположения аномальных данных.
Некоторая информация, которую можно легко получить с помощью этой функции, выглядит следующим образом:
- Статистические данные, такие как среднее значение, медиана и стандартное отклонение
- Минимальные и максимальные значения столбцов
- отсутствующие данные
- значение с нулевым значением
- Поскольку мы также можем видеть распределение тестового набора данных, мы можем легко подтвердить, что данные обучения и тестирования следуют одному и тому же распределению.
Кто-то скажет, что мы можем легко выполнять эти задачи с помощью Pandas, зачем вкладывать средства в другой инструмент? Правда, в этом может не быть необходимости, когда у нас есть только небольшое количество точек данных с небольшим количеством функций. Однако ситуация отличается, когда мы имеем дело с большими наборами данных, и с помощью Pandas сложно анализировать каждую точку данных в нескольких столбцах.
Google Colaboaratory делает FACETS простым в использовании, потому что нам не нужна дополнительная установка, достаточно написать несколько строк кода.
# Clone the facets github repo to get access to the python feature stats generation code
!git clone https://github.com/pair-code/facets.git
Чтобы рассчитать статистику функции, нам нужно использовать функцию GenericFeatureStatisticsGenerator() в скрипте Python.
# Add the path to the feature stats generation code.
import sys
sys.path.insert(0, '/content/facets/facets_overview/python/')
# Create the feature stats for the datasets and stringify it.
import base64
from generic_feature_statistics_generator import GenericFeatureStatisticsGenerator
gfsg = GenericFeatureStatisticsGenerator()
proto = gfsg.ProtoFromDataFrames([{'name': 'train', 'table': train},
{'name': 'test', 'table': test}])
protostr = base64.b64encode(proto.SerializeToString()).decode("utf-8")
Теперь с помощью следующего кода мы можем легко отобразить визуализацию в блокноте.
# Display the facets overview visualization for this data
from IPython.core.display import display, HTML
HTML_TEMPLATE = """<link rel="import" href="https://raw.githubusercontent.com/PAIR-code/facets/master/facets-dist/facets-jupyter.html" >
<facets-overview id="elem"></facets-overview>
<script>
document.querySelector("#elem").protoInput = "{protostr}";
</script>"""
html = HTML_TEMPLATE.format(protostr=protostr)
display(HTML(html))
Когда вы нажимаете «Shift + Enter», вы можете увидеть красивую интерактивную визуализацию:
На рисунке мы видим, что обзор граней визуализирует пять числовых характеристик набора данных прогнозирования ссуды. Функции отсортированы по неравномерности, причем наиболее неравномерно распределенные функции находятся вверху. Красные числа представляют возможные выбросы, где имеется высокий процент числовых признаков 0. С помощью гистограммы справа вы можете сравнить распределение тренировочных данных (синий цвет) и тестовых данных (оранжевый цвет).
Визуализация выше показывает одну из восьми категориальных характеристик набора данных. Функции упорядочены по расстоянию распространения. Функции с наибольшим отклонением между обучающим набором данных (синий) и тестовым набором данных (оранжевый) ранжируются вверху.
FACETS Dive
Facets DiveПредоставляет интуитивно понятный настраиваемый интерфейс для изучения взаимосвязей между точками данных различных объектов в наборе данных. С помощью Facets Dive вы можете управлять положением, цветом и визуальными эффектами каждой точки данных на основе ее собственных значений. Если точка данных имеет связанное изображение, это изображение также можно использовать в визуализации.
Данные должны быть преобразованы в формат JSON, чтобы использовать визуализацию Dive.
# Display the Dive visualization for the training data.
from IPython.core.display import display, HTML
jsonstr = train.to_json(orient='records')
HTML_TEMPLATE = """<link rel="import" href="https://raw.githubusercontent.com/PAIR-code/facets/master/facets-dist/facets-jupyter.html">
<facets-dive id="elem" height="600"></facets-dive>
<script>
var data = {jsonstr};
document.querySelector("#elem").data = data;
</script>"""
html = HTML_TEMPLATE.format(jsonstr=jsonstr)
display(HTML(html))
После запуска кода вы должны увидеть:
Теперь, когда мы можем легко выполнять одномерный и двумерный анализ, давайте посмотрим на некоторые из полученных результатов:
Одномерный анализ
Здесь мы отдельно рассмотрим целевую переменную, т. е. Loan_Status, и другие категориальные характеристики, такие как пол, семейное положение, статус занятости и кредитная история. Кроме того, вы также можете посмотреть на другие функции.
вывод:
- Большинство заявителей в наборе данных — мужчины.
- Аналогичным образом, большинство заявителей в наборе данных состоят в браке и выплатили свои долги.
- Кроме того, большинство заявителей не имеют иждивенцев, являются выпускниками колледжей и приезжают из пригородов.
Теперь давайте визуализируем порядковые переменные, а именно семью, образование и площадь собственности.
Из гистограммы выше можно сделать следующие выводы:
- У большинства заявителей нет иждивенцев.
- Большинство абитуриентов являются выпускниками колледжей.
- Большинство соискателей из пригородных районов.
Теперь можно приступить к анализу, используя числовые данные.
двумерный анализ
Давайте найдем связь между целевой переменной и категориальной независимой переменной.
Из гистограммы выше можно сделать вывод, что:
- Среди одобренных кредитов выше процент женатых заявителей.
- Заявители с 1 или более 3 иждивенцами имеют одинаковое распределение по обеим категориям Loan_Status.
- Люди с кредитной историей 1, скорее всего, будут одобрены для кредита.
- Одобрение кредита выше в пригородных районах, чем в сельской или городской местности.
в заключении
FACETS предоставляет простую и интуитивно понятную среду для EDA наборов данных, помогая нам достигать значимых результатов. Единственная проблема в том, что в настоящее время он работает только сChrome.
Прежде чем закончить эту статью, давайте рассмотримзабавные факты: На рисунке ниже показано, как можно использовать FACETS Dive для обнаружения небольшой ошибки маркировки, связанной с человеческим фактором, в наборе данных CIFAR-10. При анализе набора данных было обнаружено, что изображение лягушки было неправильно помечено как кошка. Это действительно определенное достижение, потому что это невыполнимая задача для человеческого глаза.
исходные данныеЕсли вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.