Изменения

Перейти к: навигация, поиск

Примеры кода на R

1308 байт добавлено, 19:35, 19 апреля 2020
Нет описания правки
== Особенности написания кода на R ==
R изначально создавался как интерпретируемый мультипарадигменный язык программирования для статистической обработки данных и работы с графикой. R поддерживает широкий спектр статистических и численных методов, а также расширяется за счёт новых библиотек (пакетов).
 
Для использования любого из пакетов необходимо в начале файла прописать
install.packages("packageName")
require("packageName)
 
Среда статистических вычислений R отличается особенно высоким количеством реализованных в ней алгоритмов машинного обучения, на основе которых можно создавать подобные модели. Однако вместе с явным преимуществом наличия такого большого количества алгоритмов возникают и некоторые проблемы. В частности, для аналитика становится все сложнее помнить особенности применения и синтаксиса соответствующих R-функций. Кроме того, функции, позволяющие реализовать полный цикл разработки предсказательных моделей, часто "разбросаны" по разным пакетам, что требует времени для поиска необходимых функций и их освоения.
== Описание основных пакетов ==
===Пакеты для обработки данных===
 
==== pipelearner ====
Пакет предоставляет базовые возможности по разбивке для разбиения набора данных на блоки и для обучения моделей. В основе пакета лежит концепция конвейеров и аккуратных данных. Пакет хорошо документирован, все непонятные моменты можно прояснить, просто изучив структуру объекта с моделями на каждом этапе.
==== MICE ====
Пакет MICE используется для заполнения пропущенных значений в данных. При этом нет необходимости думать о типах значений: для каждого из них в пакете предусмотрено заполнение по умолчанию.
Если необходимо решить, что делать ===Пакеты с пропущенными значениями, MICE — именно то, что вам нужно. Когда возникает проблема пропущенных значений, наиболее частый способ ее решения — простые замены: нулями, средним, модой, т.д. Однако, ни один из этих методов не гибок и может привести к несоответствиям в данных. Пакет MICE поможет заменить пропущенные значения, используя разнообразные техники, в зависимости от данных, с которыми вы работаете.реализованными алгоритмами машинного обучения===
==== Caret ====
В данном пакете представлены модели для регрессии и классификации, реализовано достаточно много популярных метрик.
===Пакеты с реализованными алгоритмами машинного Пакет caret обладает следующими отличительными особенностями:использование универсального синтаксиса команд, вне зависимости от синтаксиса исходной функции, реализующей тот или иной алгоритм;автоматизированное нахождение оптимальных значений гиперпараметров моделей ("tuning parameters"), которые обычно невозможно вычислить аналитически;возможность организации параллельных вычислений, значительно ускоряющих процесс обучения=== моделей.
В состав caret входят функции, способствующие реализации полного цикла разработки предсказательных моделей. основные из них:
featurePlot, findCorrelation, preProcess.
train(): главная "рабочая лошадка" пакета caret, одновременно выполняющая обучение моделей, нахождение оптимальных гиперпараметров и оценку предсказательной силы моделей. Последние две задачи реализуются с использованием разнообразных методов создания повторных выборок (бутстреп, многократный бутстреп, несколько видов перекрестной проверки). Параметры процесса обучения задаются аргументом trControl, на который подается список с параметрами, предварительно созданный при помощи функции trainControl(). Оценка качества модели выполняется на основе критерия, задаваемого аргументом metric (в частности, общая верность классификации - "Accuracy", каппа-статистика - "Kappa", квадратный корень из среднеквадратичной ошибки - "RMSE" и коэффициент детерминации - "Rsquared"). Алгоритм, при помощи которого происходит обучение модели, указывается с помощью аргумента method. В настоящее время имеется возможность использовать более 180 различных алгоритмов.
1. caret
Помимо встроенной справки и руководства на сайте имеется книга от разработчика, которая может служить еще и отличным учебником по машинному обучению: Applied Predictive Modeling. Много примеров в интернете, много вопросов и ответов на StackOverflow.
На момент написания этого сообщения доступно 233 модели: Available Models. Недостатком можно считать то, что представлены только модели для регрессии и классификации. Реализовано достаточно много популярных метрик. Есть несколько способов отбора признаков: от исключения признаков с околонулевой дисперсией до генетических алгоритмов.
Можно писать свои собственные метрики качества и обертки для моделей. Это особенно полезно с учетом того, что не все гиперпараметры сделаны настраиваемыми в имеющихся обертках.
Возможности имеются, но ограниченные: можно выполнить стандартизацию или трансформацию при помощи PCA, импутацию средним или при помощи метода k-ближайших соседей. Однако новые варианты предобработки так просто не добавить. UPD: если верить Custom preprocessing in caret, скоро все будет (за ссылку спасибо S.Skripko).
Ансамбли моделей можно обучать при помощи пакета caretEnsemble. Правильно реализован стекинг: Understanding caretEnsemble.
Есть поддержка параллельных вычислений с использованием foreach. В остальном производительность зависит от используемой реализации того или иного алгоритма.
2. mlr==== Mlr ====
Пакет более новый, материалов и примеров по нему меньше. Документирован хорошо, разобраться в любом вопросе можно без проблем.
Количество моделей меньше, чем для caret, но список более разнообразен. В частности, можно использовать модели для кластеризации и анализа выживаемости, чего нет в caret. Более широкие возможности для оценки качества, в том числе функции для анализа ROC-кривых.
Есть поддержка параллельных вычислений, см. Parallelization.
3. H2OОбширная документация, примеры и книга Practical Machine Learning with ==== H2O.====Моделей немного, и все они реализованы на Java (пакеты для R и Python просто используют API). Есть линейные модели, "случайный лес", градиентный бустинг, нейросети прямого распространения (включая автокодировщики), PCA, GLRM, KNN, наивный байесовский классификатор и Word2vec. Также существует отдельная "обертка" для использования deep learning-библиотек, в т.ч. mxnet. Для отбора признаков алгоритмов нет.Возможности кастомизации нулевые.Предобработку нужно делать до загрузки данных в H2O.Есть функция h2o.stackedEnsemble().Сильная сторона этой библиотеки – работа с большими объемами данных. Есть поддержка многопоточных вычислений, Недостатком пакета можно создавать кластеры из нескольких ПК (смсчитать невозможность задать параметры для используемых алгоритмов. сообщение) или же использовать H2O вместе со Spark-ом. 
Сильная сторона этой библиотеки – работа с большими объемами данных, есть поддержка многопоточных вычислений.
== Примеры алгоритмов ==
=== Регрессия ===
=== Кластеризация ===
67
правок

Навигация