Из оригинальной работы создателей Random Forests исходит визуализация Random Forests в R.

В сентябре прошлого года я написал эту статью. Он представил Rfviz: пакет интерактивной визуализации для интерпретации случайных лесов в R. Это перевод оригинального пакета визуализации Лео Бреймана и Адель Катлер, основанный на Java, на R (Breiman and Cutler, 2004). Серверная часть этого пакета построена с использованием пакета R loon и расширяемой интерактивной системы визуализации данных, предназначенной для исследовательской визуализации. (Олдфорд и Уодделл, 2018 г.).

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

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

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

Данные

В этом руководстве мы будем использовать Набор данных Iris и Набор данных Fish Market. Оба они представляют собой наборы данных классификации нескольких классов.

Набор данных Iris находится под лицензией Creative Commons Attribution 4.0 International (CC BY 4.0). Это позволяет совместно использовать и адаптировать набор данных для любых целей при условии, что будет предоставлено соответствующее доверие. Набор данных Fish Market является бесплатным и выпущен под лицензией GPL2.

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

Данные Ирис

library(rfviz)
library(tidyverse)
head(iris)
unique(iris$Species)

Набор данных Iris содержит 3 вида цветов, а также соответствующие характеристики размеров чашелистиков и лепестков.

Fish <- read_csv('Fish.csv')
head(Fish)
unique(Fish$Species)

Набор данных Fish содержит 7 видов рыб вместе с соответствующими измерениями веса, длины, высоты и ширины.

Используя эти наборы данных, давайте выполним неконтролируемую кластеризацию в R с использованием Random Forests и визуализируем ее с помощью Rfviz.

Случайные леса Близости +PCA

Процесс выглядит следующим образом:

  1. Постройте n деревьев Random Forests.
  2. После того, как деревья построены, передайте все данные (как обучающие, так и внеплановые) обратно вниз по деревьям и запишите, сколько раз два наблюдения оказываются в одном и том же конечном узле по всем деревьям.
  3. Разделите количество раз, когда два наблюдения попадают в один и тот же конечный узел, на общее количество деревьев. Это оценка близости между этими двумя наблюдениями.
  4. Повторите это для всех пар наблюдений, чтобы получить матрицу близости.
  5. Примените анализ основных компонентов к матрице близости и возьмите первые 3 основных компонента.

Пакет Rfviz в R выполняет эти шаги, а затем отображает данные в инструменте визуализации.

Пример данных Iris

set.seed(123)
#Run unsupervised Random Forests and calculate the proximity matrix
rfprep <- rf_prep(x=iris[,1:4], y=NULL)
#Plot the data in the visualization tool
myrfplots <- rf_viz(rfprep, input=TRUE, imp=FALSE, cmd=TRUE)

Этот экземпляр инструмента визуализации состоит из инструмента Loon Inspector и двух графиков. В Rfviz есть третий график, график значений важности, но он не используется здесь с неконтролируемым случаем случайных лесов.

  1. Инструмент Loon Inspector:утилита, помогающая взаимодействовать с данными.
  2. График входных данных:график с параллельными координатами входных данных.
  3. График метрического многомерного масштабирования: график первых трех основных компонентов матрицы близости.

Далее выполните следующие действия:

  1. Нажмите на график приближений метрического многомерного масштабирования.
  2. Нажмите «r» на клавиатуре, чтобы войти в режим вращения. В верхней части графика появится небольшое текстовое поле с «режимом вращения».
  3. Нажмите и перетащите мышь, чтобы изменить положение на графике.
  4. Нажмите «r» еще раз, чтобы выйти из режима вращения.

5. Выберите группу данных в верхней части графика Proximities, щелкнув и перетащив мышь.

7. Вернувшись в R, запустите:

group1 <- iris[myplots$cmd['selected'],]
head(group1)

summary(iris[myplots$cmd['selected'],]) 
#or
summary(group1)

Не зная заранее, что это за вид, Random Forests сгруппировали виды Setosa вместе.

8. Когда эта группа выбрана, щелкните синий цвет под разделом изменения.

9. Снова поверните график.

10. Выберите другую группу.

11. Посмотрите на выбранные данные в R:

group2 <- iris[myplots$cmd['selected'],]
summary(group2)

Таким образом, вторая группа состояла в основном из виргинских видов.

12. Перекрасьте и выберите последний раздел данных.

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

13. Посмотрите на выбранные данные в R:

group3 <- iris[myplots$cmd['selected'],]
summary(group3)

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

Затем мы можем сравнить эти три группы. Глядя на сводки групп 1, 2 и 3, мы можем увидеть точные различия в значениях данных, которые мы визуально видели на графике входных данных.

Группа 1:

Группа 2:

Группа 3:

Уникальные особенности 4 групп:

Группа 1: виды setosa, у которых более низкие значения Petal.Length, Petal.Width и Sepal.Length, а также более высокие значения Sepal.Width.

Группа 2:в основном виды virginica с более высокими значениями Petal.Length, Petal.Width и Sepal.Length.

Группа 3:в основном виды лишай с более низкими значениями ширины чашелистика и средними значениями длины чашелистика, длины лепестка и ширины лепестка.

Вывод из примера Iris

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

Однако не каждый случай может быть таким простым. Давайте попробуем набор данных Fish, в котором есть 7 различных видов рыб.

Пример данных о рыбе

set.seed(123)
#Calculate Proximity Matrix and prepare for visualization
rfprep <- rf_prep(x=Fish %>% select(-Species), y=NULL)
myrfplots <- rf_viz(rfprep, input=TRUE, imp=FALSE, cmd=TRUE)

Вращая график Proximities, мы видим, что он выглядит как спираль.

С чего начать? давайте выберем некоторые из очевидных группировок на графике входных данных.

  1. Перетащите и выберите более высокие значения данных высоты на графике входных данных.
  2. Перекрасьте данные в зеленый цвет.
  3. Выберите данные еще раз, щелкнув зеленый квадрат в разделе «по цвету» Loon Inspector.

После некоторого дополнительного поворота мы можем видеть, как данные сгруппированы в основном отдельно от других данных на графике Proximities.

group1 <- Fish[myplots$cmd['selected'],]
summary(Fish[myplots$cmd['selected'],])

Выбранная рыба относится к одному виду, Лещ.

4. Нажмите «деактивировать» в разделе «изменить» Loon Inspector. Это позволит опустить данные из графика на данный момент. В любой момент вы можете нажать «повторно активировать», и данные снова появятся на графике.

5. Выберите более высокие значения «ширины», оставшиеся на графике входных данных.

group2 <- Fish[myplots$cmd['selected'],]
summary(group2)

Заключение по данным о рыбе

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

Общий вывод

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

Этот же метод может быть применен к различным проблемам, таким как:

  1. Визуальное определение оптимального количества кластеров на основе того, как выглядит группировка. Это можно использовать вместе с другими стандартными методами неконтролируемой кластеризации.

2. Создание персонажей для маркетинговых целей путем определения групп клиентов.

3. Быстро определить ключевые различия между классами или группами данных в наборе данных.

Общий вывод

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

Если вам интересно, здесь — еще один пример использования этого пакета R.

Ссылки:

Брейман, Л. 2001. Случайные леса. Машинное обучение. http://www.springerlink.com/index/u0p06167n6173512.pdf.

Брейман, Л., и А. Катлер. 2004. Случайные леса. https://www.stat.berkeley.edu/~breiman/RandomForests/cc_graphics.htm.

C Beckett, Rfviz: пакет интерактивной визуализации для случайных лесов в R, 2018 г., https://chriskuchar.github.io/Rfviz.

Фишер, Р.А. (1988). Ирис. Репозиторий машинного обучения UCI.

Олдфорд, Р. В., и Уодделл, А. (2018). Cran/Loon: доступное только для чтения зеркало репозитория пакетов R cran. Loon — интерактивная визуализация статистических данных. домашняя страница: Https://great-northern-diver.github.io/loon/ сообщить об ошибках для этого пакета: Https://github.com/great-northern-diver/loon/issues. Гитхаб. Получено 23 февраля 2022 г. с https://github.com/cran/loon.

Пьяэ, А. (2019, 13 июня). Рыбный рынок. Каггль. Получено 21 февраля 2022 г. с https://www.kaggle.com/aungpyaeap/fish-market.