"Машинное обучение"

Начните свое путешествие по машинному обучению с K-Nearest Neighbours!

Подробное теоретическое объяснение и реализация scikit-learn с примером!

K-Nearest Neighbours (KNN) - один из элементарных методов машинного обучения и отличный способ познакомиться с миром машинного обучения.

Таблица содержания:

  1. Введение в K-NN
  2. Как работает K-NN?
  3. Как выбрать "К"?
  4. Псевдокод для KNN
  5. Внедрение KNN для классификации рака груди как злокачественного и доброкачественного
  6. Плюсы и минусы KNN

Введение в K-NN

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

Например, представьте себя опекуном 5-летнего ребенка и вы хотите, чтобы он понял, как выглядит «собака», вы покажете ему несколько фотографий собака и отдых может быть изображением любого другого животного.

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

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

K-NN - непараметрический, что означает, что он не делает никаких предположений относительно базовых данных. Он также известен как «алгоритм ленивого обучения», поскольку он не учится на входных данных сразу, а классифицируется во время запроса. Он сохраняет все значения из набора данных, что делает его обучение быстрым и отличается от своего современного SVM, где мы можем отбросить неподдерживаемые векторы. Его свойство ленивого обучения приводит к огромной пространственной и временной сложности. Но, тем не менее, алгоритм отлично работает для небольших наборов данных.

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

Результатом, ожидаемым от K-NN, будет принадлежность к классу.

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

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

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

Наиболее распространенные метрики расстояния:

  1. Евклидово расстояние: определяется как квадратный корень из суммы квадратов разностей между двумя точками.

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

Как работает K-NN?

  1. Разделите данные на тестовый и обучающий набор.
  2. Примите значение «k».
  3. Предположим метрику расстояния и вычислим расстояние до ее n-обучающих выборок.
  4. Отсортируйте вычисленное расстояние и возьмите k ближайших отсчетов.
  5. В соответствии с большинством точек назначьте класс немаркированной точке данных.

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

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

Как выбрать «К»?

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

Как мы видим, когда K = 1 кривая была слишком резкой, но по мере увеличения K резкость уменьшается, и в игру вступает плавность. И если мы увеличим K до бесконечности, все будет красным, зеленым или синим в зависимости от голосов большинства.

Значение «K» играет действительно важную роль в определении границы принятия решения;

К: слишком большой; все классифицируется по классам (Неадекватно)

К: слишком маленький; набор данных с высокой вариабельностью и нестабильная граница принятия решения (переоснащение)

Значение «K» можно определить двумя способами:

  1. Ручной метод: нам нужно использовать метод Hit & Trial; варьируйте значение K и наблюдайте за ошибками обучения и проверки.

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

Чтобы узнать больше о выборе оптимального варианта для вашей модели:



2. Поиск по сетке: Scikit-learn предоставляет функцию GridSearchCV, которая позволяет нам легко проверять несколько значений для K.

Псевдокод для KNN

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

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

Внедрение KNN для классификации рака груди как злокачественного и доброкачественного

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

Набор данных содержит 569 строк и 33 столбца. Рак разделен на две части: доброкачественную (B) и злокачественную (M). Наша цель - классифицировать случайных больных раком по признакам B или M.

После импорта всех необходимых библиотек набор данных можно найти по адресу:

Данные рака груди

Если данные отображаются как Доброкачественные (синий) и Злокачественные (Пурпурный), непомеченные точки данных отображаются красным цветом.

После выполнения алгоритма точка данных может считаться частью семейства доброкачественных.

Код можно найти по адресу:



Выполнение KNN с помощью sci-kit learn

Плюсы и минусы KNN

Плюсы:

  1. Легко и просто
  2. Время обучения мало.
  3. Данные обучения от надежных до зашумленных.

Минусы:

  1. Определение идеального «К» утомительно.
  2. Требуется большой объем памяти.
  3. Чувствителен к выбросам.
  4. Наименее точный алгоритм.

Заключение

Надеюсь, эта статья поможет вам лучше понять KNN, а также поможет вам в его практическом использовании.

Как всегда, большое спасибо за чтение, и, пожалуйста, поделитесь этой статьей, если вы нашли ее полезной!

Не стесняйтесь подключаться:

LinkedIN ~ https://www.linkedin.com/in/dakshtrehan/

Instagram ~ https://www.instagram.com/_daksh_trehan_/

Github ~ https://github.com/dakshtrehan

Следите за дальнейшими блогами по машинному обучению / глубокому обучению.

Средний ~ https://medium.com/@dakshtrehan

Хотите узнать больше?

























Ваше здоровье