[Перевод] Лучшие пакеты для машинного обучения в R, часть 1

Один из наиболее частых вопросов, с которыми сталкиваются специалисты по обработке и анализу данных — «Какой язык программирования лучше всего использовать для решения задач, связанных с машинным обучением?» Ответ на этот вопрос всегда приводит к сложному выбору между R, Python и MATLAB. Вообще говоря, никто не может дать объективный ответ, какой же язык программирования лучше. Конечно, язык, который вы выбираете для машинного обучения, зависит от ограничений конкретной задачи и данных, предпочтений самого специалиста и тех методов машинного обучения, которые нужно будет применить. Согласно опросу о любимом инструменте пользователей Kaggle для решения задач анализа данных R предпочитают 543 из 1714.

Сейчас в CRAN доступен 8341 пакет. Кроме CRAN, есть и другие репозитории с большим количеством пакетов. Синтаксис для установки любого из них прост: install.packages("Name_Of_R_Package”).

Вот несколько пакетов, без которых вы вряд ли обойдетесь, как специалист по анализу данных: dplyr, ggplot2, reshape2. Безусловно, это не полный список. В этой статье мы подробнее остановимся на пакетах, применяемых в машинном обучении.

1. Пакет MICE — позаботиться о пропущенных значениях


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

Пакет MICE поможет заменить пропущенные значения, используя разнообразные техники, в зависимости от данных, с которыми вы работаете.

Давайте рассмотрим пример использования MICE.

dataset <- data.frame(var1=rnorm(20,0,1), var2=rnorm(20,5,1))
    dataset[c(2,5,7,10),1] <- NA
    dataset[c(4,8,19),2] <- NA
    summary(dataset)

image

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

    install.pckages("mice”)
    require(mice)
    dataset2 <- mice(dataset)
    dataset2<-complete(dataset2)
    summary(dataset2)

image

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

2. Пакет rpart: давайте разделим данные


Пакет rpart в языке R используется для построения классификационных и регрессионных моделей с применением двухшаговой процедуры, а результат представляется в виде бинарных деревьев. Самый простой способ построить регрессионное или классификационное дерево с применением rpart — вызвать функцию plot(). Сама по себе функция plot() может не дать достаточно красивый результат, поэтому есть альтернатива — prp() — мощная и гибкая функция. prp() в пакете rpart.plot часто называют настоящим швейцарским ножом для построения регрессионных деревьев.

Функция rpart() позволяет установить отношение между зависимой и независимыми переменными, чтобы показать дисперсию зависимой переменной на основании независимых. Например, если компания, предоставляющая онлайн-обучение, хочет узнать, как на их продажи (зависимая переменная) влияет продвижение в соц.сетях, газетах, реферальных ссылках, по сарафанному радио, т.д., в rpart есть несколько функций, которые могут помочь с анализом этого явления.

rpart — аббревиатура, которая расшифровывается, как Recursive Partitioning and Regression Trees (рекурсивное разбиение и регрессионные деревья). С помощью rpart можно применять как регрессию, так и классификацию. Если говорить о синтаксисе, то он довольно простой:

rpart(formula, data=, method=,control=)
Здесь formula содержит комбинацию зависимых и независимых переменных; data — название массива данных, method зависит от цели, т.е. для классификационного дерева это будет class; control зависит от ваших требований, например, нужно, чтобы переменная с минимальным значением разделяла вершины.

Давайте рассмотрим массив данных iris, который выглядит так:
image
Допустим, наша цель — прогнозировать Species по дереву решений; это можно реализовать одной строчкой кода:

    rpart_tree <- rpart(formula = Species~., data=iris, method = ‘class’)
    summary(rpart_tree)
    plot(rpart_tree)
Вот как выглядит построенное дерево:

image

Здесь можно увидеть разделение разных вершин и прогнозируемый класс.

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

3. PARTY: давайте снова разделим данные


Пакет PARTY в R используется для рекурсивного разделения и отображает непрерывное улучшение ансамблевых методов. PARTY — еще один пакет для построения деревьев решений на основании алгоритма условного умозаключения. ctree() — главная функция пакета PARTY, она имеет широкое применение и сокращает время на обучение и возможные отклонения.

PARTY имеет синтаксис, схожий с другими функциями прогнозной аналитики в R, т.е.

ctree(formula,data)
Функция построит дерево решений, взяв значения по умолчанию для многочисленных аргументов, их при необходимости можно изменить.

Давайте построим дерево, воспользовавшись тем же примером, что и выше.

    party_tree <- ctree(formula=Species~. , data = iris)
    plot(party_tree)

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

4. CARET: Classification And REgression Training (классификация и регрессионное обучение)


Пакет CARET — Classification And REgression Training (классификация и регрессионное обучение) — разработан для комбинирования моделей обучения и прогнозирования. В пакете есть несколько алгоритмов, подходящих для разных задач. Специалист по анализу данных не всегда может точно сказать, какой алгоритм лучше для решения той или иной задачи. Пакет CARET позволяет подобрать оптимальные параметры для алгоритма с помощью контролируемых экспериментов. Метод перекрестного поиска, реализованный в этом пакете, ищет параметры, комбинируя различные методы оценки производительности модели. После перебора всех возможных комбинаций метод перекрестного поиска находит комбинацию, которая дает наилучшие результаты.

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

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

После установки пакета CARET можно выполнить names(getModelInfo()) и увидеть список из 217 доступных методов.

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

train(formula, data, method)
Здесь method — модель прогнозирования, которую вы пытаетесь построить. Давайте воспользуемся массивом данных iris и линейной регрессионной моделью для предсказания Sepal.Length.
    Lm_model <- train(Sepal.Length~Sepal.Width + Petal.Length + Petal.Width, data=iris, method = "lm”)
    summary(lm_model)

image

Пакет CARET не только строит модели, но и разбивает данные на тестовые и обучающие, производит необходимые преобразования и т.д.

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

Комментарии (0)

© Habrahabr.ru