Что такое регрессия опорных векторов?

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

Давайте разберемся с регрессией опорных векторов, используя набор данных Position_Salaries, который доступен на Kaggle. Этот набор данных состоит из списка должностей в компании, а также уровней диапазона и связанной с ними заработной платы. Набор данных включает столбцы для должности со значениями от бизнес-аналитика, младшего консультанта до генерального директора, уровень от 1 до 10 и, наконец, зарплата, связанная с каждой должностью, в диапазоне от 45000 до 1000000 долларов.

Требуемый пакет R

Во-первых, вам необходимо установить пакет e1071 и ggplot2 и загрузить библиотеку e1071 и ggplot2, после чего вы сможете выполнить следующие операции. Итак, приступим к реализации нашей модели нелинейной регрессии.

  • Импорт библиотек
install.packages('e1071')   
install.packages('ggplot2')
library(e1071)
library(ggplot2)

Примечание. Если вы используете R studio, пакеты нужно устанавливать только один раз.

  • Импорт набора данных
dataset <- read.csv('../input/position-salaries/Position_Salaries.csv')
dataset <- dataset[2:3]
dim(dataset)

Функция read.csv () используется для чтения файла csv, а функция dim () используется для определения количества строк и столбцов в файле csv. В этом наборе данных столбцы Position и Level имеют одинаковое значение, поэтому мы выбираем столбец Level. Кроме того, набор данных очень мал, поэтому не разбивайте его на набор для обучения и тестирования.

Суть проблемы заключается в том, что у кандидата с уровнем 6.5 предыдущая зарплата составляла 160000. Чтобы нанять кандидата на новую должность, компания хотела бы подтвердить, честен ли он в отношении своей последней зарплаты, чтобы она могла принять решение о приеме на работу. . Для этого мы будем использовать регрессию вектора поддержки, чтобы предсказать точную зарплату сотрудника.

  • Применить регрессию опорных векторов к набору данных
regressor <- svm(formula <- Salary ~ ., data <- dataset, type <- 'eps-regression', kernel <- 'radial')

Функция svm (), используемая для создания модели регрессии опорного вектора. Если вы посмотрите на набор данных, у нас есть одна зависимая переменная зарплата и одна независимая переменная Уровень. Следовательно, обозначение formula <- Salary ~ . означает, что зарплата пропорциональна Уровню. Точка представляет все независимые переменные. Теперь второй аргумент принимает набор данных, на котором вы хотите обучить свою регрессионную модель. Третий аргумент является наиболее важным, потому что этот тип аргумента будет указывать, создаете ли вы модель SVM, которая используется для регрессии или классификации. Здесь мы строим модель нелинейной регрессии, поэтому мы выберем тип eps-regression. Последний аргумент - добавить аргумент ядра. Если вы не выберете ни один аргумент ядра, по умолчанию будет выбрано гауссово ядро.

  • Прогнозирование нового результата с помощью регрессии опорных векторов
y_pred <- predict(regressor, data.frame(Level = 6.5))

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

  • Визуализируйте результаты регрессии опорных векторов
ggplot() +
geom_point(aes(x <- dataset$Level, y <- dataset$Salary), colour = 'red') +
geom_line(aes(x <- dataset$Level, y <- predict(regressor, dataset)), colour = 'blue') +
ggtitle('Support Vector Regression') +
xlab('Level') +
ylab('Salary')

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

Код доступен в моей учетной записи GitHub.

Предыдущая часть серии part1, part2 и part3 охватывала линейную регрессию, множественную линейную регрессию и полиномиальную линейную регрессию. .

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

Спасибо.