Изменения

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

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

1806 байт добавлено, 18:13, 23 апреля 2020
GBM
== Особенности написания кода на R ==
<code>Язык R </code> изначально создавался как язык программирования для работы с графикой и статистической обработки данных. Поэтому он отличается большим количеством реализованных статистических алгоритмов, на основе которых можно создавать модели и алгоритмы машинного обучения.
Язык постоянно расширяется за счёт новых библиотек (пакетов). Для импорта одного пакета необходимо прописать в файле следующие строки:
== Описание известных пакетов ==
Для языка <code>R </code> написано много пакетов, каждый из которых предназначен для решения определенного круга проблем. Например, для обработки данных или реализации основных алгоритмов. В статье представлено несколько наиболее часто используемых пакетов.
===Пакеты для обработки данных===
==== Pipelearner ====
Пакет <code>Pipelearner</code><ref>[https://github.com/drsimonj/pipelearner Pipelearner github repository]</ref> предоставляет базовые возможности для разбиения набора данных на блоки для обучения моделей. В основе пакета лежит концепция работы конвейера. Пакет хорошо документирован, все непонятные моменты можно прояснить, просто изучив структуру объекта на каждом этапе работы алгоритма.
==== MICE ====
Пакет <code>MICE</code><ref>[https://cran.r-project.org/web/packages/mice/mice.pdf MICE package documentation]</ref> используется для заполнения пропущенных значений в данных. При этом нет необходимости думать о типах значений: для каждого из них в пакете предусмотрено заполнение по умолчанию.
==== Ggplot2 ====
Данный пакет<ref>[https://cran.r-project.org/web/packages/ggplot2/index.html Ggplot2 main info page]</ref> используется для отрисовки данных и графиков.
==== Caret ====
В данном пакете <ref>[http://topepo.github.io/caret/index.html Caret guide book]</ref> представлены модели для регрессии и классификации, а также большая часть популярных метрик. В настоящее время имеется возможность использовать более 180 различных алгоритмов.
Основная функция в составе <code>Caret - </code> — функция <code>train()</code>. Параметры обучения в ней задаются аргументом <code>trControl</code>, а оценка качества модели - аргументом <code>metric</code>.Отличительными особенностями <code>Caret </code> является универсальность используемых команд, наличие автоматического подбора гиперпараметров для алгоритмов, в также наличие параллельных вычислений.
==== Party ====
Пакет <code>Party </code> <ref>[https://cran.r-project.org/web/packages/party/index.html party package main info page]</ref> содержит в себе инструменты для рекурсивного разбиения данных на классы. В пакета также доступна расширяемая функциональность для визуализации древовидных регрессионных моделей. Основная функция пакета - — <code>ctree ()</code>, которая используется для создания деревьев решения для таких задач регрессии как номинальные, порядковые, числовые а также многовариантные переменные отклика. На основе деревьев условного вывода <code>cforest () </code> предоставляет реализацию ''случайных лесов Бреймана''. Функция <code>mob () </code> реализует алгоритм рекурсивного разделения на основе параметрических моделей (например, ''линейных моделей'', ''GLM '' или ''регрессии выживания''), использующих тесты нестабильности параметров для выбора разделения. 
==== RandomForest ====
Random Forest <code>RandomForest</code> <ref>[https://cran.r-project.org/web/packages/randomForest/index.html RandomForest package main info]</ref> - пакет с реализацией алгоритма random Forest''[[Дерево решений и случайный лес | randomForest]]''. Используется для решения задач регрессии и классификации, а также для поиска аномалий и отбора предикторов.  
==== ClusterR ====
Пакет <code>ClusterR </code> <ref>[https://cran.r-project.org/web/packages/ClusterR/vignettes/the_clusterR_package.html ClusterR documentation]</ref> состоит из алгоритмов кластеризации на основе центроидов (''k-means'', ''mini-batch-kmeans'', ''k-medoids'') и распределений (''GMM''). Кроме того, пакет предлагает функции для:* проверки результатов,* построения графика результатов, используя либо силуэт, либо 2-мерный график,''[[Оценка качества в задаче кластеризации |метрики]]''
* прогнозирования новых наблюдения,
*оценки оптимального количества кластеров для каждого алгоритма  
==== E1071 ====
Пакет <ref>[https://www.rdocumentation.org/packages/e1071/versions/1.7-3 1071 package documentation]</ref> содержит в себя функции для анализа классов, ''кратковременного преобразование Фурье'', ''нечеткой кластеризации'', реализации ''[[Метод опорных векторов (SVM) | SVM]]'', ''вычисления кратчайшего пути'', а также реализации ''наивного байесовского классификатора''
==== Mlr ====
В пакете <code>Mlr </code> <ref>[https://cran.r-project.org/web/packages/mlr/mlr.pdf Mlr package documentation]</ref> представлены модели для регрессии, классификации, кластеризации и анализа выживаемости, а также широкие возможности для оценки качества (в том числе функции для анализа ''[https://en.wikipedia.org/wiki/Receiver_operating_characteristic ROC-кривых]'').
Есть поддержка параллельных вычислений и конвейерных операций.
 
==== H2O ====
В пакете <code>H20 </code> <ref>[https://cran.r-project.org/web/packages/h2o/index.html H20 main info page]</ref> представлены линейные модели, такие как ''[[Бустинг, AdaBoost |градиентный бустинг]]'', ''[[Метод главных компонент (PCA)|PCA]]'', ''GLRM'', ''KNN'', Radom forest''[[Дерево решений и случайный лес|RadomForest]]'', ''наивный Байесовский классификатор''. Сильная сторона этой библиотеки – работа с большими объемами данных и поддержка многопоточных вычислений.Однако в ней нет возможности задавать параметры используемых алгоритмов
== Примеры алгоритмов ==
В интернете много хороших примеров реализации алгоритмов на <code>R</code>, но среди них хотелось бы особо отметить один учебник<ref>[https://coderlessons.com/tutorials/kompiuternoe-programmirovanie/learn-r-programmirovanie/uchebnik-po-r Учебник по R]</ref> c портала coderlessons.com. В нем представлена реализация основных алгоритмов в порядке, удобном для изучения.
=== Задачи регрессии ===
==== Линейная регрессия ====
{{Main|Линейная регрессия|ll=Линейная регрессия}}
<pre>
#$$reading data
==== Логистическая регрессия ====
{{Main|Логистическая регрессия|ll=Логистическая регрессия}}Логистическая регрессия – это модель регрессии, в которой переменная ответа принимает значения 0 или 1 (True или False). Реализация на языке <code>R </code> представлена в следующем фрагменте:
<pre>
#printing summary
print(summary(model))
</pre>
 
=== PCA ===
{{Main|Метод главных компонент (PCA)|ll=PCA}}
<pre>
#importing library and its' dependencies
library(h2o)
h2o.init()
 
path <- system.file("extdata", "data.csv", package = "h2o")
data <- h2o.uploadFile(path = data)
 
#evaluating
h2o.prcomp(training_frame = data, k = 8, transform = "STANDARDIZE")
</pre>
=== Деревья решений, случайный лес ===
{{Main|Дерево решений и случайный лес |ll=деревьев решений}}
==== Деревья решений ====
Для создания ''[[Дерево решений и случайный лес |деревьев решений ]]'' в <code>R </code> используется функция <code>ctree ()</code> из пакета <code>party</code>.
<pre>
==== Случайный лес ====
Для создания ''[[Дерево решений и случайный лес|случайного леса ]]'' необходимо импортировать пакет <code>randomForest</code>
<pre>
=== Наивный Бейесовский классификатор ===
{{Main|Байесовская классификация|ll=Байесовская классификация}}
<pre>
#$$importing package and it's dependencies
=== SVM ===
{{Main|Метод опорных векторов (SVM)|ll=SVM}}
<pre>
#$$ importing package and its' dependencies
=== GBM ===
{{Main|Бустинг, AdaBoost|ll=Бустинг}}
<pre>
#loading libraries
=== Кластеризация ===
Для реализации алгоритма кластеризации ''k-средних '' используется пакет <code>ClusterR</code>. В нем реализовано 2 функции: <code>KMeans_arma ()</code> и <code>KMeans_rcpp()</code>. В примере далее рассмотрена реализация с использованием функции <code>KMeans_arma()</code>.
<pre>
67
правок

Навигация