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

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

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

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

Ниже кратко обсуждаются три типа машинного обучения:

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

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

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

Теперь, переходя к нашей основной теме блога, что такое алгоритм KNN?

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

Давайте попробуем понять алгоритм KNN на примере эссе. Допустим, мы хотим, чтобы машина различала настроение твитов, публикуемых разными пользователями. Для этого мы должны ввести набор данных настроений пользователей (комментариев). И теперь нам нужно обучить нашу модель обнаруживать настроения на основе определенных признаков. Например, такие функции, как пометка настроений твитов, то есть как положительные или отрицательные твиты соответственно. Если твит положительный, он помечен как 1, а если отрицательный, как 0.

Возможности алгоритма KNN:

  • KNN — это алгоритм обучения с учителем, основанный на сходстве признаков.
  • В отличие от большинства алгоритмов, KNN — это непараметрическая модель, что означает, что она не делает никаких предположений о наборе данных. Это делает алгоритм более простым и эффективным, поскольку он может обрабатывать реалистичные данные.
  • KNN считается ленивым алгоритмом, т. Е. Он предполагает, что он запоминает набор обучающих данных, а не изучает дискриминационную функцию из обучающих данных.
  • KNN часто используется для решения задач как классификации, так и регрессии.

Недостатки алгоритма KNN:

  • После нескольких реализаций было замечено, что алгоритм KNN не работает с хорошей точностью при сборе больших наборов данных, потому что стоимость вычисления расстояния между новой точкой и каждой существующей точкой огромна, и, в свою очередь, это снижает производительность алгоритма. алгоритм.
  • Также было замечено, что с этим алгоритмом довольно сложно работать с многомерными данными, потому что вычисление расстояния в каждом измерении неверно.
  • Весьма необходимо выполнить масштабирование функций, т. Е. Стандартизацию и нормализацию, прежде чем фактически применять алгоритм KNN к любому набору данных. Исключение этих шагов может привести к неверным предсказаниям алгоритма KNN.
  • Чувствителен к зашумленным данным, отсутствующим значениям и выбросам: KNN чувствителен к шуму в наборе данных. Нам нужно вручную ввести пропущенные значения и удалить выбросы.

Пример алгоритма KNN

Чтобы понять, как работает алгоритм KNN, давайте рассмотрим следующий сценарий:

На изображении у нас есть два класса данных, а именно класс A и класс B, представляющие квадраты и треугольники соответственно. Постановка задачи состоит в том, чтобы присвоить новую точку входных данных одному из двух классов с помощью алгоритма KNN.

Первым шагом в алгоритме KNN является определение значения «K», которое обозначает количество ближайших соседей.

На этом изображении давайте рассмотрим «K» = 3, что означает, что алгоритм будет рассматривать трех соседей, которые находятся ближе всего к новой точке данных. Близость между точками данных рассчитывается с использованием таких мер, как евклидово или манхэттенское расстояние. Теперь при ‘K’ = 3 два квадрата и 1 треугольник считаются ближайшими соседями. Итак, чтобы классифицировать новую точку данных на основе «K» = 3, ей будет присвоен класс A (квадраты).

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

Евклидово расстояние. Всегда дает кратчайшее расстояние между двумя точками.

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

Практическая реализация алгоритма KNN в R

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

Шаг 1. Импортируйте набор данных, а затем просмотрите структуру набора данных:

loan <- read.csv(“C:/Users/zulaikha/Desktop/DATASETS/knn dataset/credit_data.csv”)
str(loan)

Шаг 2. Очистка данных

Из структуры набора данных мы видим, что существует 21 предикторная переменная, но некоторые из этих переменных не важны для прогнозирования кредита. Таким образом, лучше отфильтровать переменные-предикторы, сузив 21 переменную до 8 переменных-предикторов.

loan.subset <- loan[c(‘Creditability’, ‘Age..years.’, ‘Sex…Marital.Status’, ‘Occupation’, ‘Account Balance’, ‘Credit.Amount’, Length.of.current.employment’)]
head(loan.subset)

Шаг 3. Нормализация данных

Очень важно всегда нормализовать набор данных, чтобы выходные данные оставались беспристрастными. В приведенном ниже фрагменте кода мы сохраняем нормализованный набор данных в переменной «loan.subset.n», а также удаляем переменную «Доверие», поскольку это переменная ответа, которую необходимо предсказать.

normalize <- function(x){
return ((x — min(x)) / (max(x) — min(x)))}
loan.subset.n <- as.data.frame(lapply(loan.subset[,2:8], normalize))

Шаг 4. Объединение данных

В основном это включает в себя разделение набора данных на набор данных для обучения и тестирования. Затем необходимо создать отдельный фрейм данных для переменной «Кредитность», чтобы наш окончательный результат можно было сравнить с фактическим значением.

set.seed(123)
dat.d <- sample(1:nrow(loan.subset.n),size=nrow(loan.subset.n)*0.7,replace = FALSE) #random selection of 70% data.
train.loan <- loan.subset[dat.d,] # 70% training data
test.loan <- loan.subset[-dat.d,] # remaining 30% testing data
train.loan_labels <- loan.subset[dat.d,1]
test.loan_labels <-loan.subset[-dat.d,1]

Шаг 5. Создание модели машинного обучения

На этом этапе мы должны построить модель, используя набор обучающих данных. Поскольку мы используем алгоритм KNN для построения модели, мы должны сначала установить пакет class, предоставленный R. Затем мы собираемся подсчитать количество наблюдений в наборе обучающих данных.

install.packages(‘class’)
library(class)
NROW(train.loan_labels)
knn.26 <- knn(train=train.loan, test=test.loan, cl=train.loan_labels, k=26)
knn.27 <- knn(train=train.loan, test=test.loan, cl=train.loan_labels, k=27)

Шаг 6. Оценка модели

После построения модели пришло время рассчитать точность созданных моделей:

ACC.26 <- 100 * sum(test.loan_labels == knn.26)/NROW(test.loan_labels)
ACC.27 <- 100 * sum(test.loan_labels == knn.27)/NROW(test.loan_labels)

Как показано выше, точность для K = 26 составляет 67,66, а для K = 27 – 67,33. Итак, из вывода мы видим, что наша модель предсказывает результат с точностью 67,67%, что хорошо, поскольку мы работали с небольшим набором данных.

Обобщающие слова…

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

Ознакомьтесь с другими статьями:

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

Я хотел бы услышать от вас. Оставайтесь на связи, подписавшись на меня…

Ознакомьтесь с другими статьями @ https://medium.com/@Eshita_Nandy