Изменения

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

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

6126 байт добавлено, 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>====Пакет MICE используется для заполнения пропущенных значений в данных. При этом нет необходимости думать о типах значений: для каждого из них в пакете предусмотрено заполнение по умолчанию. ==== 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> является универсальность используемых команд, наличие автоматического подбора гиперпараметров для алгоритмов, в также наличие параллельных вычислений.==== Mlr 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 ====<code>RandomForest</code> <ref>[https://cran.r-project.org/web/packages/randomForest/index.html RandomForest package main info]</ref> — пакет с реализацией алгоритма ''[[Дерево решений и случайный лес | randomForest]]''. Используется для решения задач регрессии и классификации, а также для поиска аномалий и отбора предикторов. ==== ClusterR ====Пакет <code>ClusterR</code> <ref>[https://cran.r-project.org/web/packages/mlrClusterR/vignettes/the_clusterR_package.html ClusterR documentation]</ref> состоит из алгоритмов кластеризации на основе центроидов (''k-means'', ''mini-batch-kmeans'', ''k-medoids'') и распределений (''GMM''). Кроме того, пакет предлагает функции для:* проверки результатов,* построения графика результатов, используя ''[[Оценка качества в задаче кластеризации |метрики]]''* прогнозирования новых наблюдения,* оценки оптимального количества кластеров для каждого алгоритма ==== E1071 ====Пакет <ref>[https://www.rdocumentation.org/packages/e1071/versions/mlr1.pdf Mlr 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
#printing parameters
print(fit)
</pre>
 
=== GBM ===
{{Main|Бустинг, AdaBoost|ll=Бустинг}}
<pre>
#loading libraries
install.packages("mlr")
library(mlr)
 
#loading data
train <- read.csv("input.csv")
test <- read.csv("testInput.csv")
 
#loading GBM
getParamSet("classif.gbm")
baseLearner <- makeLearner("classif.gbm", predict.type = "response")
 
#specifying parameters
controlFunction <- makeTuneControlRandom(maxit = 50000)#specifying tuning method
cvFunction <- makeResampleDesc("CV",iters = 100000) #definig cross-validation function
 
gbmParameters<- makeParamSet(
makeDiscreteParam("distribution", values = "bernoulli"),
makeIntegerParam("n.trees", lower = 100, upper = 1000), #number of trees
makeIntegerParam("interaction.depth", lower = 2, upper = 10), #depth of tree
makeIntegerParam("n.minobsinnode", lower = 10, upper = 80),
makeNumericParam("shrinkage",lower = 0.01, upper = 1)
)
 
#tunning parameters
gbmTuningParameters <- tuneParams(learner = baseLearner, task = trainTask,resampling = cvFunction,measures = acc,par.set = gbmParameters,control = controlFunction)
 
#creating model parameters
model <- setHyperPars(learner = baseLearner, par.vals = gbmTuningParameters)
 
#evaluating model
fit <- train(model, train)
predictions <- predict(fit, test)
</pre>
=== Кластеризация ===
Для реализации алгоритма кластеризации ''k-средних '' используется пакет <code>ClusterR</code>. В нем реализовано 2 функции: <code>KMeans_arma ()</code> и <code>KMeans_rcpp()</code>. В примере далее рассмотрена реализация с использованием функции <code>KMeans_arma()</code>.
<pre>
67
правок

Навигация