www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Выборочные алгоритмы машинного обучения в R (алгоритмы, которые можно примерить на следующем проекте)

Дата публикации 2016-02-15

Выборочные алгоритмы машинного обучения - это то, как вы находите лучший алгоритм для своего набора данных.

Но какие алгоритмы вы должны проверить?

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

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

Давайте начнем.

Лучший алгоритм для вашего набора данных

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

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

Вопрос не в том:

Какой алгоритм я должен использовать в моем наборе данных?

Вместо этого это:

Какие алгоритмы я должен проверить на моем наборе данных?

Какие алгоритмы для выборочной проверки

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

Я рекомендую попробовать смесь алгоритмов и посмотреть, что хорошо в выборе структуры в ваших данных.

  • Попробуйте смесь представлений алгоритма (например, экземпляры и деревья).
  • Попробуйте смесь алгоритмов обучения (например, разные алгоритмы для обучения одного и того же типа представления).
  • Попробуйте смешать типы моделирования (например, линейные и нелинейные функции или параметрические и непараметрические).

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

Алгоритмы для выборочной проверки в R

Есть сотни алгоритмов машинного обучения, доступных в R.

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

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

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

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

  1. Пакет и функция, используемые для обучения и прогнозирования алгоритма.
  2. Каретка для алгоритма.

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

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

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

Для демонстрации алгоритмов используются два стандартных набора данных:

  • Boston Housing набор данныхдля регрессии (BostonHousing отmlbenchбиблиотека).
  • Набор данных диабета индейцев Пимадля классификации (PimaIndiansDiabetes отmlbenchбиблиотека).

Алгоритмы представлены в двух группах:

  • Линейные алгоритмыЭто более простые методы, которые имеют сильный уклон, но быстро обучаются.
  • Нелинейные алгоритмыэто более сложные методы, которые имеют большую дисперсию, но часто являются более точными.

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

Давайте начнем.

Линейные алгоритмы

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

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

1. Линейная регрессия

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

# load the library
library(mlbench)
# load data
data(BostonHousing)
# fit model
fit <- lm(medv~., BostonHousing)
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, BostonHousing)
# summarize accuracy
mse <- mean((BostonHousing$medv - predictions)^2)
print(mse)

Реализацию lm можно использовать следующим образом:

# load libraries
library(caret)
library(mlbench)
# load dataset
data(BostonHousing)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.lm <- train(medv~., data=BostonHousing, method="lm", metric="RMSE", preProc=c("center", "scale"), trControl=control)
# summarize fit
print(fit.lm)

2. Логистическая регрессия

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

# load the library
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# fit model
fit <- glm(diabetes~., data=PimaIndiansDiabetes, family=binomial(link='logit'))
# summarize the fit
print(fit)
# make predictions
probabilities <- predict(fit, PimaIndiansDiabetes[,1:8], type='response')
predictions <- ifelse(probabilities > 0.5,'pos','neg')
# summarize accuracy
table(predictions, PimaIndiansDiabetes$diabetes)

Алгоритм GLM может быть использован в карете следующим образом:

# load libraries
library(caret)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.glm <- train(diabetes~., data=PimaIndiansDiabetes, method="glm", metric="Accuracy", preProc=c("center", "scale"), trControl=control)
# summarize fit
print(fit.glm)

3. Линейный дискриминантный анализ

Функция lda находится в библиотеке MASS и создает линейную модель задачи классификации.

# load the libraries
library(MASS)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# fit model
fit <- lda(diabetes~., data=PimaIndiansDiabetes)
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, PimaIndiansDiabetes[,1:8])$class
# summarize accuracy
table(predictions, PimaIndiansDiabetes$diabetes)

Алгоритм lda может быть использован в карете следующим образом:

# load libraries
library(caret)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.lda <- train(diabetes~., data=PimaIndiansDiabetes, method="lda", metric="Accuracy", preProc=c("center", "scale"), trControl=control)
# summarize fit
print(fit.lda)

4. Регулярная регрессия

Функция glmnet находится в библиотеке glmnet и может использоваться для классификации или регрессии.

Пример классификации:

# load the library
library(glmnet)
library(mlbench)
# load data
data(PimaIndiansDiabetes)
x <- as.matrix(PimaIndiansDiabetes[,1:8])
y <- as.matrix(PimaIndiansDiabetes[,9])
# fit model
fit <- glmnet(x, y, family="binomial", alpha=0.5, lambda=0.001)
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, x, type="class")
# summarize accuracy
table(predictions, PimaIndiansDiabetes$diabetes)

Пример регрессии:

# load the libraries
library(glmnet)
library(mlbench)
# load data
data(BostonHousing)
BostonHousing$chas <- as.numeric(as.character(BostonHousing$chas))
x <- as.matrix(BostonHousing[,1:13])
y <- as.matrix(BostonHousing[,14])
# fit model
fit <- glmnet(x, y, family="gaussian", alpha=0.5, lambda=0.001)
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, x, type="link")
# summarize accuracy
mse <- mean((y - predictions)^2)
print(mse)

Он также может быть настроен на выполнение трех важных типов регуляризации: лассо, гребень и эластичная сетка путем настройки альфа-параметра на 1, 0 или в [0,1] соответственно.

Реализация glmnet может использоваться в каретке для классификации следующим образом:

# load libraries
library(caret)
library(mlbench)
library(glmnet)
# Load the dataset
data(PimaIndiansDiabetes)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.glmnet <- train(diabetes~., data=PimaIndiansDiabetes, method="glmnet", metric="Accuracy", preProc=c("center", "scale"), trControl=control)
# summarize fit
print(fit.glmnet)

Реализация glmnet может быть использована в качестве каретки для регрессии следующим образом:

# load libraries
library(caret)
library(mlbench)
library(glmnet)
# Load the dataset
data(BostonHousing)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.glmnet <- train(medv~., data=BostonHousing, method="glmnet", metric="RMSE", preProc=c("center", "scale"), trControl=control)
# summarize fit
print(fit.glmnet)

Нелинейные алгоритмы

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

1. k-Ближайшие соседи

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

Пример классификации:

# knn direct classification

# load the libraries
library(caret)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# fit model
fit <- knn3(diabetes~., data=PimaIndiansDiabetes, k=3)
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, PimaIndiansDiabetes[,1:8], type="class")
# summarize accuracy
table(predictions, PimaIndiansDiabetes$diabetes)

Пример регрессии:

# load the libraries
library(caret)
library(mlbench)
# load data
data(BostonHousing)
BostonHousing$chas <- as.numeric(as.character(BostonHousing$chas))
x <- as.matrix(BostonHousing[,1:13])
y <- as.matrix(BostonHousing[,14])
# fit model
fit <- knnreg(x, y, k=3)
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, x)
# summarize accuracy
mse <- mean((BostonHousing$medv - predictions)^2)
print(mse)

Реализация knn может использоваться в функции caret train () для классификации следующим образом:

# load libraries
library(caret)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.knn <- train(diabetes~., data=PimaIndiansDiabetes, method="knn", metric="Accuracy", preProc=c("center", "scale"), trControl=control)
# summarize fit
print(fit.knn)

Реализация knn может использоваться в функции caret train () для регрессии следующим образом:

# load libraries
library(caret)
data(BostonHousing)
# Load the dataset
data(BostonHousing)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.knn <- train(medv~., data=BostonHousing, method="knn", metric="RMSE", preProc=c("center", "scale"), trControl=control)
# summarize fit
print(fit.knn)

2. Наивный байесовский

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

# load the libraries
library(e1071)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# fit model
fit <- naiveBayes(diabetes~., data=PimaIndiansDiabetes)
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, PimaIndiansDiabetes[,1:8])
# summarize accuracy
table(predictions, PimaIndiansDiabetes$diabetes)

Очень похожая реализация наивного байесовского алгоритма (NaiveBayes из библиотеки klaR) может быть использована со следующим:

# load libraries
library(caret)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.nb <- train(diabetes~., data=PimaIndiansDiabetes, method="nb", metric="Accuracy", trControl=control)
# summarize fit
print(fit.nb)

3. Опорная векторная машина

Функция ksvm находится в пакете kernlab и может использоваться для классификации или регрессии. Это оболочка для библиотеки LIBSVM и предоставляет набор типов ядра и параметров конфигурации.

В этом примере используется ядро ​​Radial Basis.

Пример классификации:

load the libraries
library(kernlab)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# fit model
fit <- ksvm(diabetes~., data=PimaIndiansDiabetes, kernel="rbfdot")
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, PimaIndiansDiabetes[,1:8], type="response")
# summarize accuracy
table(predictions, PimaIndiansDiabetes$diabetes)

Пример регрессии:

# load the libraries
library(kernlab)
library(mlbench)
# load data
data(BostonHousing)
# fit model
fit <- ksvm(medv~., BostonHousing, kernel="rbfdot")
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, BostonHousing)
# summarize accuracy
mse <- mean((BostonHousing$medv - predictions)^2)
print(mse)

SVM с реализацией ядра Radial Basis можно использовать вместе с кареткой для классификации следующим образом:

# load libraries
library(caret)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.svmRadial <- train(diabetes~., data=PimaIndiansDiabetes, method="svmRadial", metric="Accuracy", trControl=control)
# summarize fit
print(fit.svmRadial)

SVM с реализацией ядра Radial Basis можно использовать с кареткой для регрессии следующим образом:

# load libraries
library(caret)
library(mlbench)
# Load the dataset
data(BostonHousing)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.svmRadial <- train(medv~., data=BostonHousing, method="svmRadial", metric="RMSE", trControl=control)
# summarize fit
print(fit.svmRadial)

4. Деревья классификации и регрессии

Функция rpart в библиотеке rpart обеспечивает реализацию CART для классификации и регрессии.

Пример классификации:

# load the libraries
library(rpart)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# fit model
fit <- rpart(diabetes~., data=PimaIndiansDiabetes)
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, PimaIndiansDiabetes[,1:8], type="class")
# summarize accuracy
table(predictions, PimaIndiansDiabetes$diabetes)

Пример регрессии:

# load the libraries
library(rpart)
library(mlbench)
# load data
data(BostonHousing)
# fit model
fit <- rpart(medv~., data=BostonHousing, control=rpart.control(minsplit=5))
# summarize the fit
print(fit)
# make predictions
predictions <- predict(fit, BostonHousing[,1:13])
# summarize accuracy
mse <- mean((BostonHousing$medv - predictions)^2)
print(mse)

Реализация rpart может использоваться с кареткой для классификации следующим образом:

# load libraries
library(caret)
library(mlbench)
# Load the dataset
data(PimaIndiansDiabetes)
# train
set.seed(7)
control <- trainControl(method="cv", number=5)
fit.rpart <- train(diabetes~., data=PimaIndiansDiabetes, method="rpart", metric="Accuracy", trControl=control)
# summarize fit
print(fit.rpart)

Реализация rpart может использоваться с кареткой для регрессии следующим образом:

# load libraries
library(caret)
library(mlbench)
# Load the dataset
data(BostonHousing)
# train
set.seed(7)
control <- trainControl(method="cv", number=2)
fit.rpart <- train(medv~., data=BostonHousing, method="rpart", metric="RMSE", trControl=control)
# summarize fit
print(fit.rpart)

Другие алгоритмы

Есть много других алгоритмов, предоставляемых R и доступных в карете.

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

Вы можете найти отображение функций машинного обучения и пакетов по их названию в пакете каретки на этой странице:

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

Эта страница также полезна, если вы используете алгоритм машинного обучения непосредственно в R и хотите знать, как его можно использовать в каретке.

Резюме

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

  • Линейная регрессия
  • Логистическая регрессия
  • Линейный Дискриминантный Анализ
  • Регулярная регрессия
  • k-Ближайшие соседи
  • Наивный байесовский
  • Машина опорных векторов
  • Деревья классификации и регрессии

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

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

Ваш следующий шаг

Вы пробовали эти рецепты?

  1. Начните свою интерактивную среду R
  2. Введите или скопируйте рецепты выше и попробуйте их.
  3. Используйте встроенную справку в R, чтобы узнать больше об используемых функциях.

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

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map