Yellowbrick

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 11:28, 22 июня 2020.
Yellowbrick
Yb-color-square-flat.png
Создатели: разработчики scikit-yb
Разработчики: разработчики scikit-yb
Написана на: Python
Лицензия: Apache Software License (Apache 2)
Веб-сайт www.scikit-yb.org/en/latest/

Yellowbrick - это набор инструментов для визуального анализа и диагностики, предназначенных для облегчения машинного обучения с помощью scikit-learn. Библиотека реализует новый базовый объект API, Visualizer, который является оценщиком scikit-learn - объект, который учится на основе данных. Подобно преобразователям или моделям, визуализаторы изучают данные, создавая визуальное представление рабочего процесса выбора модели. В дополнение ко всему, Yellowbrick может помочь с диагностикой проблем во всем машинном обучении.

История происхождения

Происхождение названия

Библиотека Yellowbrick была названа в честь вымышленного элемента детского романа Л. Фрэнка Баума «Чудесный волшебник страны Оз». В книге дорого из желтого кирпича – путь, который должен пройти главный герой для достижения своей цели в изумрудном городе.

Команда

Yellowbrick разработан добровольной командой разработчиков, использовавших открытый код, благодаря этому проект дополняется вкладами разработчиков Python по всему миру. Проект был начат Ребеккой Билбро и Бенджамином Бенгфортом как попытка лучше объяснить концепции машинного обучения своим студентам в Джорджтаунском университете. Однако они быстро поняли, что потенциал визуального управления может оказать большой влияние на практическую науку о данных и превратили ее в готовую к использованию библиотеку Python.

Затем Yellowbrick был доработан Окружной лабораторией данных (District Data Labs – DDL) в партнерстве с Джорджтаунском университетом. DDL – организация, которая занимается разработкой открытого исходного кода и образованием в области наук о данных и предоставляет ресурсы, стимулируя рост Yellowbrick. Впервые Yellowbrick был представлен сообществу Python на PyCon 2016. Затем проект осуществлялся в исследовательских лабораториях DDL – спринты, продолжительностью в семестр, где члены сообщества DDL участвуют в различных проектах, связанных с данными.

С тех пор в Yellowbrick приняло участия огромное количество участников со всего мира, а поддержка сообщества PyData только растет.

Установка

У Yellowbrick есть две основные зависимости: scikit-learn и matplotlib. Если у вас нет этих пакетов Python, они будут установлены вместе с Yellowbrick. Важно, что Yellowbrick лучше всего работает с scikit-learn версии 0.20 или новее и matplotlib версии 3.0.1 или новее. Оба этих пакета требуют компиляции кода на C, что может быть сложно в некоторых системах, таких как Windows. Если у вас возникли проблемы, попробуйте использовать дистрибутив Python, который включает в себя такие пакеты, как Anaconda.

Yellowbrick - это пакет Python 3, который хорошо работает с 3.4 или более поздней версией. Самый простой способ установить Yellowbrick - это PyPI с pip , предпочтительным установщиком пакетов Python.

 pip install yellowbrick

Стоит обратить внимание на то, что Yellowbrick является активным проектом и регулярно публикует новые выпуски с большим количеством визуализаторов и обновлений. Чтобы обновить Yellowbrick до последней версии, используйте pip:

 pip install -U yellowbrick 

Флаг -U также используется для обновления scikit-learn, matplotlib или любых других сторонних утилит, которые хорошо работают с Yellowbrick, до их последних версий.

Если используется Anaconda, можно воспользоваться утилитой conda для установки пакета Anaconda Yellowbrick:

 conda install -c districtdatalabs yellowbrick 

Визуализаторы и API

Библиотека Yellowbrick - это диагностическая платформа визуализации для машинного обучения, которая позволяет ученым управлять процессом выбора модели. Он расширяет API scikit-learn новым базовым объектом: визуализатором. Визуализаторы позволяют подгонять и преобразовывать визуальные модели как часть процесса конвейера scikit-learn, обеспечивая визуальную диагностику в процессе преобразования многомерных данных. [Источник 1]

У визуализаторов Yellowbrick есть несколько вариантов использования:

  • Для исследователей данных они могут помочь оценить стабильность и прогностическую ценность моделей машинного обучения и повысить скорость экспериментального рабочего процесса.
  • Для инженеров данных Yellowbrick предоставляет визуальные инструменты для мониторинга производительности моделей в реальных приложениях.
  • Для пользователей моделей Yellowbrick предоставляет визуальную интерпретацию поведения модели в пространстве пространственных объектов.
  • Для преподавателей и студентов Yellowbrick – основа для обучения и понимания широкого спектра алгоритмов и методов.

API Yellowbrick специально разработан для удобной работы с scikit-learn. Визуализаторы являются оценщиками - объектами, которые учатся на основе данных - основной задачей которых является создание визуализаций, позволяющих лучше понять процесс выбора модели. Чтобы использовать визуализаторы, просто используется тот же рабочий процесс, что и в модели scikit-learn, импортируется визуализатор, создается его экземпляр, вызывается метод визуализатора fit(), а затем для визуализации вызывается метод визуализатора show().

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

from yellowbrick.features import ParallelCoordinates

visualizer = ParallelCoordinates()
visualizer.fit_transform(X, y)
visualizer.show()

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

Метод show() дорабатывает чертеж (добавление титров и т.д.), а затем делает изображение от имени пользователя. Если написание программ идет в блокноте Jupyter, изображение должно просто появиться в выводе блокнота. Если код находится в скрипте Python, окно GUI должно открываться с визуализацией в интерактивной форме. Однако также можно сохранить образ на диск, передав путь к файлу следующим образом:

visualizer.show(outpath="pcoords.png")

Расширение имени файла будет определять способ визуализации изображения. В дополнение к .png расширению, .pdf также обычно используется для качественной публикации готовых изображений. [Источник 2]

Визуализатор классификаций

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

  • Классификационный отчет : визуальный классификационный отчет, который отображает точность, отзыв и F1 для класса в виде тепловой карты.
  • Матрица смешения: представление тепловой карты матрицы смешения пар классов в мультиклассовой классификации.
  • ROCAUC : график рабочих характеристик приемника и площади под кривой.
  • Кривые точного восстановления: отображает точность и отзыв для различных порогов вероятности.
  • Баланс класса : Визуальный осмотр цели, чтобы показать поддержку каждого класса окончательной оценке.
  • Ошибка прогнозирования класса : альтернатива матрице путаницы, которая показывает как поддержку, так и разницу между фактическим и прогнозируемым классами.
  • Порог дискриминации : Показывает точность, отзыв, f1 и скорость очереди по всем порогам для двоичных классификаторов, которые используют вероятность дискриминации или оценку.
# Classifier Evaluation Imports

from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

from yellowbrick.target import ClassBalance
from yellowbrick.classifier import ROCAUC
from yellowbrick.classifier import PrecisionRecallCurve
from yellowbrick.classifier import ClassificationReport
from yellowbrick.classifier import ClassPredictionError
from yellowbrick.classifier import DiscriminationThreshold

Визуализаторы кластреризации

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

  • KElbow Visualizer : визуализируйте кластеры в соответствии с какой-либо функцией подсчета, ищите «колено» на кривой.
from sklearn.cluster import KMeans

from sklearn.datasets import make_blobs
from yellowbrick.cluster import KElbowVisualizer

# Generate synthetic dataset with 8 random clusters
X, y = make_blobs(n_samples=1000, n_features=12, centers=8, random_state=42)

# Instantiate the clustering model and visualizer
model = KMeans()

visualizer = KElbowVisualizer(model, k=(4,12))
visualizer.fit(X)        # Fit the data to the visualizer
visualizer.show()        # Finalize and render the figure
Рисунок 1 - Пример использования KElbow Visualizer
  • Визуализатор силуэтов: визуализация силуэтов каждого кластера в одной модели.
from sklearn.cluster import KMeans

from yellowbrick.cluster import SilhouetteVisualizer
from yellowbrick.datasets import load_nfl

# Load a clustering dataset
X, y = load_nfl()

# Specify the features to use for clustering
features = ['Rec', 'Yds', 'TD', 'Fmb', 'Ctch_Rate']
X = X.query('Tgt >= 20')[features]

# Instantiate the clustering model and visualizer
model = KMeans(5, random_state=42)
visualizer = SilhouetteVisualizer(model, colors='yellowbrick')

visualizer.fit(X)        # Fit the data to the visualizer
visualizer.show()        # Finalize and render the figure
  • Карты расстояний между кластерами: визуализируйте относительное расстояние и размер кластеров.
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

from yellowbrick.cluster import InterclusterDistance

# Generate synthetic dataset with 12 random clusters
X, y = make_blobs(n_samples=1000, n_features=12, centers=12, random_state=42)

# Instantiate the clustering model and visualizer
model = KMeans(6)
visualizer = InterclusterDistance(model)

visualizer.fit(X)        # Fit the data to the visualizer
visualizer.show()        # Finalize and render the figure
Рисунок 2 - Пример использования карт расстояний между кластерами

Поскольку score модель кластеризации очень сложна , визуализаторы Yellowbrick оборачивают оценки кластеризованного scikit-learn своим fit() методом. После того как модель кластеризации обучена, визуализатор может вызвать show() отображение метрики оценки кластеризации.

Визуализаторы выбора модели

Визуализаторы Yellowbrick предназначены для управления процессом выбора модели. Как правило, выбор модели представляет собой проблему поиска, определяемую следующим образом: с учетом N экземпляров, описываемых числовыми свойствами, и (необязательно) цели для оценки, найти модель, описываемую тройкой, состоящей из признаков, алгоритма и гиперпараметров, которые наилучшим образом соответствуют данным. Для большинства целей «лучшая» тройка относится к тройке, которая получает лучший перекрестно-проверенный балл для типа модели.

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

В настоящее время реализованы следующие визуализаторы выбора модели:

  • Кривая валидации : визуализирует, как корректировка гиперпараметра влияет на результаты обучения и тестирования для настройки компромисса смещения / дисперсии.
import numpy as np

from yellowbrick.datasets import load_energy
from yellowbrick.model_selection import ValidationCurve

from sklearn.tree import DecisionTreeRegressor

# Load a regression dataset
X, y = load_energy()

viz = ValidationCurve(
    DecisionTreeRegressor(), param_name="max_depth",
    param_range=np.arange(1, 11), cv=10, scoring="r2"
)

# Fit and show the visualizer
viz.fit(X, y)
viz.show()
Рисунок 3 - Пример использования визуализатора кривой валидации
  • Кривая обучения : показывает, как размер обучающих данных влияет на модель для диагностики, если модель больше страдает от ошибки отклонения от ошибки смещения.
from sklearn.linear_model import RidgeCV

from yellowbrick.datasets import load_energy
from yellowbrick.model_selection import LearningCurve

# Load a regression dataset
X, y = load_energy()

# Instantiate the regression model and visualizer
model = RidgeCV()
visualizer = LearningCurve(model, scoring='r2')

visualizer.fit(X, y)        # Fit the data to the visualizer
visualizer.show()           # Finalize and render the figure
Рисунок 4 - Пример использования визуализатора кривой обучения(регрессия)
  • Результаты перекрестной проверки : отображает результаты перекрестной проверки в виде гистограммы со средним значением в виде горизонтальной линии.
from sklearn.model_selection import StratifiedKFold
from sklearn.naive_bayes import MultinomialNB

from yellowbrick.datasets import load_occupancy
from yellowbrick.model_selection import CVScores

# Load the classification dataset
X, y = load_occupancy()

# Create a cross-validation strategy
cv = StratifiedKFold(n_splits=12, random_state=42)

# Instantiate the classification model and visualizer
model = MultinomialNB()
visualizer = CVScores(model, cv=cv, scoring='f1_weighted')

visualizer.fit(X, y)        # Fit the data to the visualizer
visualizer.show()           # Finalize and render the figure
Рисунок 5 - Пример использования визуализатора результатов перекрестной проверки
  • Важности фунуций: ранжируйте функции по относительной важности в модели
from sklearn.ensemble import RandomForestClassifier

from yellowbrick.datasets import load_occupancy
from yellowbrick.model_selection import FeatureImportances

# Load the classification data set
X, y = load_occupancy()

model = RandomForestClassifier(n_estimators=10)
viz = FeatureImportances(model)
viz.fit(X, y)
viz.show()
Рисунок 6 - Пример использования визуализатора важности функций
  • Удаление рекурсивных функций : выберите подмножество функций по важности
from sklearn.svm import SVC
from sklearn.datasets import make_classification

from yellowbrick.model_selection import RFECV

# Create a dataset with only 3 informative features
X, y = make_classification(
    n_samples=1000, n_features=25, n_informative=3, n_redundant=2,
    n_repeated=0, n_classes=8, n_clusters_per_class=1, random_state=0
)

# Instantiate RFECV visualizer with a linear SVM classifier
visualizer = RFECV(SVC(kernel='linear', C=1))

visualizer.fit(X, y)        # Fit the data to the visualizer
visualizer.show()           # Finalize and render the figure
Рисунок 7 - Пример использования визуализатора удаления рекурсивных функций

Визуализаторы моделирования текста

Yellowbrick обеспечивает yellowbrick.text модуль для текстовых визуализаторов. Класс TextVisualizer специально работает с наборами данных, которые являются корпусами, а не простыми числовыми массивами или DataFrames, предоставляя утилиты для анализа дисперсии и распределения слов, отображения сходства документов или просто обертывания некоторых других стандартных визуализаторов специфичными для текста свойствами отображения.

В настоящее время реализовано пять текстовых визуализаций:

  • Распределение частот токенов: построите график частоты токенов в корпусе
  • t-SNE Corpus Visualization : расположите похожие документы ближе друг к другу, чтобы обнаружить кластеры
  • UMAP Corpus Visualization : расположите похожие документы ближе друг к другу, чтобы обнаружить кластеры
  • График рассеивания: нанесите дисперсию целевых слов по всему корпусу
  • Визуализация PosTag : построение подсчета различных частей речи в помеченном корпусе
from yellowbrick.text import FreqDistVisualizer
from yellowbrick.text import TSNEVisualizer
from yellowbrick.text import UMAPVisualizer
from yellowbrick.text import DispersionPlot
from yellowbrick.text import PosTagVisualizer

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import CountVectorizer

Визуализаторы анализа возможностей

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

Список визуализаторов функций:

  • Особенности ранга : ранжируйте одиночные и пары функций для определения ковариации
  • RadViz Visualizer : нанесение точек данных вдоль осей, упорядоченных по кругу, для определения отделимости
  • Параллельные координаты : построение экземпляров в виде линий вдоль вертикальных осей для обнаружения классов или кластеров
  • PCA Projection : проецируйте большие размеры в визуальное пространство, используя PCA
  • Визуализация коллектора : визуализация многомерных данных с помощью обучения коллектору
  • Прямая визуализация данных : (так называемые Jointplots) график 2D-корреляции между объектами и целью

Визуализаторы анализа возможностей реализуют TransformerAPI из scikit-learn, что означает, что они могут использоваться как промежуточные этапы преобразования в Pipeline(в частности, a VisualPipeline). Они создаются аналогичным образом, а затем к ним вызываются аппроксимация и преобразование, что правильно рисует экземпляры. Наконец, showвызывается, который завершает и отображает изображение.

# Feature Analysis Imports
# NOTE that all these are available for import directly from the ``yellowbrick.features`` module
from yellowbrick.features.rankd import Rank1D, Rank2D
from yellowbrick.features.radviz import RadViz
from yellowbrick.features.pcoords import ParallelCoordinates
from yellowbrick.features.jointplot import JointPlotVisualizer
from yellowbrick.features.pca import PCADecomposition
from yellowbrick.features.manifold import Manifold

Целевые визуализаторы

Целевые визуализаторы специализируются на визуальном описании зависимой переменной для контролируемого моделирования, часто называемой y или целью.

Список целевых визуализаторов:

  • Справочник по сбалансированному бинингу : создайте гистограмму с вертикальными линиями, показывающими рекомендуемое значение, чтобы поместить данные в бины в равномерно распределенные бины.
  • Баланс класса : Визуальный осмотр цели, чтобы показать поддержку каждого класса окончательной оценке.
  • Корреляция признаков: зависимость графика между признаками и зависимыми переменными.
# Target Visualizers Imports
from yellowbrick.target import BalancedBinningReference
from yellowbrick.target import ClassBalance
from yellowbrick.target import FeatureCorrelation

Визуализаторы регрессии

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

  • График остатков : построите график разницы между ожидаемыми и фактическими значениями
  • График ошибки прогноза : построите график ожидаемых и фактических значений в пространстве модели
  • Alpha Selection : визуальная настройка регуляризационных гиперпараметров

Оценщик оценка визуализаторы завернуть Scikit-Learn оценщиков и подвергать API оценщик таким образом, что у них есть fit(), predict() и score() методы , которые вызывают соответствующие методы Оценщика под капотом. Визуализаторы баллов могут обернуть оценщик и быть переданы как последний шаг в Pipeline или VisualPipeline.

# Regression Evaluation Imports

from sklearn.linear_model import Ridge, Lasso
from sklearn.model_selection import train_test_split

from yellowbrick.regressor import PredictionError, ResidualsPlot
from yellowbrick.regressor.alphas import AlphaSelection

Источники

  1. Описание проекта Yellowbrick URL: https://pypi.org/project/yellowbrick/ (дата обращения: 10.06.2020).
  2. Документация Yellowbrick URL: https://www.scikit-yb.org/en/latest/api/index.html (дата обращения: 10.06.2020).