Дата публикации 2016-02-15
Выборочные алгоритмы машинного обучения - это то, как вы находите лучший алгоритм для своего набора данных.
Но какие алгоритмы вы должны проверить?
В этом посте вы познакомитесь с 8 алгоритмами машинного обучения, которые вы должны проверить на своих данных.
Вы также получаете рецепты каждого алгоритма, которые вы можете скопировать и вставить в свой текущий или следующий проект машинного обучения в R.
Давайте начнем.
Вы не можете знать, какой алгоритм лучше всего подойдет к вашему набору данных, до этого.
Вы должны использовать метод проб и ошибок, чтобы найти краткий список алгоритмов, которые хорошо справляются с вашей проблемой, которые затем можно удвоить и настроить дальше. Я называю этот процесс выборочной проверкой.
Вопрос не в том:
Какой алгоритм я должен использовать в моем наборе данных?
Вместо этого это:
Какие алгоритмы я должен проверить на моем наборе данных?
Вы можете догадаться, какие алгоритмы могут хорошо работать с вашим набором данных, и это может быть хорошей отправной точкой.
Я рекомендую попробовать смесь алгоритмов и посмотреть, что хорошо в выборе структуры в ваших данных.
Давайте определимся. В следующем разделе мы рассмотрим алгоритмы, которые вы можете использовать для выборочной проверки вашего следующего проекта машинного обучения в R.
Есть сотни алгоритмов машинного обучения, доступных в R.
Я бы порекомендовал изучить многие из них, особенно если важно делать точные прогнозы для вашего набора данных и у вас есть время.
Часто у вас нет времени, поэтому вам нужно знать несколько алгоритмов, которые вы обязательно должны проверить на своей проблеме.
В этом разделе вы узнаете о линейных и нелинейных алгоритмах, которые вы должны проверить на вашей проблеме в R. Это исключает ансамблевые алгоритмы, такие как бустинг и пакетирование, которые могут появиться позже, когда у вас будет базовый уровень.
Каждый алгоритм будет представлен с двух точек зрения:
Вы должны знать, какой пакет и функцию использовать для данного алгоритма. Это необходимо, когда:
Вы должны знать, как использовать каждый алгоритм с кареткой, чтобы вы могли эффективно оценить точность алгоритма на невидимых данных, используя возможности предварительной обработки, оценки алгоритма и настройки каретки.
Для демонстрации алгоритмов используются два стандартных набора данных:
Алгоритмы представлены в двух группах:
Каждый рецепт, представленный в этом разделе, завершен и даст результат, так что вы можете скопировать и вставить его в свой текущий или следующий проект машинного обучения.
Давайте начнем.
Это методы, которые делают большие предположения о форме моделируемой функции. Как таковые, они имеют высокий уклон, но часто бывают быстрыми для обучения.
Окончательные модели также часто легко (или проще) интерпретировать, что делает их желательными в качестве конечных моделей. Если результаты достаточно точны, вам может не понадобиться переходить на нелинейные методы, если используется линейный алгоритм.
лм ()функция находится встатистикабиблиотека и создает модель линейной регрессии с использованием обычных наименьших квадратов.
# 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)
Функция 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)
Функция 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)
Функция 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)
Это алгоритмы машинного обучения, которые делают меньше предположений о моделируемой функции. Как таковые, они имеют более высокую дисперсию, но часто приводят к более высокой точности. Повышенная гибкость также может замедлить обучение или увеличить требования к памяти.
Функция 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)
Функция 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)
Функция 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)
Функция 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 алгоритмов, которые вы можете использовать для выборочной проверки ваших наборов данных. В частности:
Вы узнали, какие пакеты и функции использовать для каждого алгоритма. Вы также узнали, как можно использовать каждый алгоритм с пакетом каретки, который предоставляет возможности оценки и настройки алгоритма.
Вы можете использовать эти алгоритмы в качестве шаблона для выборочной проверки вашего текущего или следующего проекта машинного обучения в R.
Вы пробовали эти рецепты?
У вас есть вопрос. Спросите это в комментариях, и я сделаю все возможное, чтобы ответить на него.
© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map