Научная статья на тему 'Реализация регрессионных и классификационных задач с помощью метода Random Forest'

Реализация регрессионных и классификационных задач с помощью метода Random Forest Текст научной статьи по специальности «Математика»

CC BY
646
93
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
E-Scio
Область наук
Ключевые слова
RANDOM FOREST / REGRESSION / CLASSIFICATION / MACHINE LEARNING

Аннотация научной статьи по математике, автор научной работы — Летова Марина Сергеевна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Реализация регрессионных и классификационных задач с помощью метода Random Forest»

УДК 519.673

Физико-математические науки

Летова Марина Сергеевна, студентка Факультет прикладной математики и механики, Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Пермский национальный исследовательский политехнический университет»

РЕАЛИЗАЦИЯ РЕГРЕССИОННЫХ И КЛАССИФИКАЦИОННЫХ ЗАДАЧ С ПОМОЩЬЮ МЕТОДА RANDOM FOREST

Аннотация: Данная статья является небольшим руководством по применению алгоритмов машинного обучения для решения задач регрессионного и классификационного анализа. В частности, статья посвящена алгоритму Random Forest. Далее будут приведены примеры использования алгоритма и некоторые теоретические пояснения.

Ключевые слова: Random Forest, регрессия, классификация, машинное обучение.

Abstract: This article is a small guide to the application of machine learning algorithms to solve the problems of regression and classification analysis. In particular, the article is devoted to the Random Forest algorithm. Below are examples of using the algorithm and some theoretical explanations.

Keywords: Random Forest, regression, classification, machine learning.

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

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

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

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

1. Выбор случайной записи: каждое дерево обучается примерно на 2/3 всех данных обучения (ровно 63,2%). Выборка делается случайным образом с заменой исходных данных. Этот образец будет обучающим набором для выращивания дерева [1];

2. Подготовка случайной выборки. Некоторые предикторные переменные (например, т) выбираются случайным образом из всех переменных-предикторов, и наилучшее разделение на них используется для разделения узла.По умолчанию т является квадратным корнем из общего числа всех предикторов для классификации. Для регрессии т - общее количество всех предикторов, деленное на 3. Величина т остается постоянной при выращивании леса. Примечание: В стандартном дереве каждый раздел создается после изучения каждой переменной и выбора наилучшего разделения всех переменных;

3. Для каждого дерева, используя оставшиеся данные (36,8%), подсчитывается коэффициент - ошибочная классификация вне суммы. Это совокупная ошибка всех деревьев, чтобы определить общий коэффициент ошибок в сумме для классификации;

4. Каждое дерево дает классификацию оставшихся данных, это значит, что дерево «голосует» за этот класс. Лес выбирает классификацию, набрав наибольшее количество голосов по всем деревьям в лесу. Для двоичной зависимой переменной голосование будет ДА или НЕТ. Подсчитываются все

голоса ДА. Это оценка RF, и процент голосов, полученных от ДА, является прогнозируемой вероятностью. В случае регрессии это среднее значение зависимой переменной.

Например, предположим, что мы подходим к 500 деревьям, а случай - вне суммы в 200 из них:

- 160 деревьев голосов кла^ 1;

- 40 деревьев голосов класс 2;

В этом случае оценка RF является классом1. Вероятность этого случая составит 0,8, что составляет 160/200. Аналогично, это будет среднее значение целевой переменной для проблемы регрессии.

Алгоритм реализации метода в R:

Шаг I: Подготовка данных:

#Импорт данных

mydata <- read.table ("C: /User/Library/Desktop/study.txt", sep = ",", header =T)

#Исследование данных nrow (mydata) summary (mydata)

# Определение типов переменных Mydata$study _flg <- as.factor (mydata $study _flg) mydata$Degree_Flg <- as.factor (mydata $Degree_Flg) mydata$Discipline_flg <- as.factor (mydata $Discipline_flg) mydata$specialization <- as.numeric (mydata$specialization) mydata$rating <- as.integer (mydata$rating)

# Устанавка и загрузка пакетов, необходимых для случайного леса install.packages ("party")

install.packages ("randomForest") install.packages ("ROCR")

library ( RandomForest) library (ROCR)

Шаг II: Запуск следующего кода несколько раз с различными значениями числа деревьев (ntree)

set.seed (71)

rf <-randomForest (income data = mydata, ntree = 200) print (rf)

Примечание: если зависимая переменная является фактором, предполагается классификация, в противном случае предполагается регрессия. Если этот параметр опущен, randomForest будет работать в неконтролируемом режиме.

Параметры случайного леса в R:

1. mtry: количество переменных, выбранных для каждого разделения. По умолчанию mtry = floor (sqrt количества независимых переменных) для модели классификации. mtry = floor of (число переменных, деленное на 3) для модели регрессии.

2. ntree: количество деревьев для роста: default = 500

3. nodeize: минимальный размер конечных узлов по умолчанию=1

4. replace: Чтобы проверить выборку с / без

замены. TRUE подразумевает замену. FALSE подразумевает без замены. TRUE устанавливается по умолчанию.

5. sampsize: размер выборки, который нужно извлечь из данных для выращивания каждого дерева решений. По умолчанию он принимает 63,2% данных

6. importance: требуется ли значение показателей переменных.

Шаг III: Нахождение количества деревьев, где коэффициент ошибок в сумме стабилизируется и достигнет минимума.

Шаг IV: Нахождение оптимального количества переменных, выбранных для каждого разделения. Для этого нужно выбрать mtry значение с минимальной ошибкой вне суммы. Это возвращает оптимальное количество mtry (параметр, используемый в пакете randomforest). Используйте номер в приведенном ниже коде.

mtry <- tuneRF (mydata [-13], mydata$income, ntreeTry = 200, stepFactor = 1.5, improve = 0.01, trace = TRUE, plot = TRUE) best.m <- mtry [mtry [, 2] == min (mtry [, 2]), 1] print (mtry) print (best.m)

Спецификация mydata [-13] означает «Все, кроме 13-го столбца в наборе mydata». Это означает, что все переменные, кроме 13-го столбца, являются независимыми переменными .

В качестве зависимой переменной дается алгоритм «mydata$income», который является столбцом income на наборе mydata.

ntreeTry определяет количество деревьев , пробуя различные номера для mtry, чтобы сделать с помощью этой функции,

stepFactor указывает на каждой итерации, mtry увеличивается (или уменьшается) этим значением.

improve определяет (относительное) улучшение ошибки вне суммы, которая должна быть большой для продолжения поиска. trace указывает, следует ли печатать ход поиска

plot указывает , следует ли строить ошибку вне суммы как функцию mtry doBest говорит , следует ли запускать лес, используя оптимальный найденного mtry. Если doBest = FALSE (по умолчанию), он возвращает

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

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

set.seed (71)

rf <-randomForest (income-., Data = mydata, mtry = best.m, importance = TRUE, ntree = 200) print (rf)

Шаг VI: вычислить значение переменной

# Оценка значения

importance(rf)

varlmpPlot(rf)

Чем выше значение средней точности снижения или среднего снижения балла От1, тем выше значение переменной в модели. В приведенном выше графике ОРЛ является наиболее важной переменной.

Среднее снижение точности - насколько точность модели уменьшается, если будет отброшена эту переменную.

Среднее снижение балла Gini - мера переменной importance, основанная на индексе примесей Gini, используемом для вычисления расщепления в деревьях [2].

# Частичная зависимость участка от каждого параметра-предиктора par(mfrow = c (3, 5), mar = c (2, 2, 2, 2), pty = "s");

for (i в 1: (ncol (mydata) - 1)) {

partialPlot (rf, mydata, names (mydata) [i], xlab = names (mydata) [i],

main = NULL); }

Random Forest является одним из наиболее широко используемых алгоритмов машинного обучения. Его можно использовать для модели регрессии (т. е. непрерывной целевой переменной), а так же метод хорошо работает на модели классификации (т. е. категориальной целевой переменной). Это стало важным оружием современных ученых-исследователей для уточнения прогностической модели.

Библиографический список:

1. Hastie, T., Tibshirani R., Friedman J. Chapter 15. Random Forests // The Elements of Statistical Learning: Data Mining, Inference, and Prediction// Springer-Verlag, 2009.

2. Случайный лес (Random Forest) [Электронный ресурс]. - Режим доступа: https://alexanderdyakonov.wordpress.com/2016Z11/14/random-forest/ -Заглавие с экрана. - (Дата обращения: 28.07.2017).

i Надоели баннеры? Вы всегда можете отключить рекламу.