"Машинное обучение"
Начните свое путешествие по машинному обучению с K-Nearest Neighbours!
Подробное теоретическое объяснение и реализация scikit-learn с примером!
K-Nearest Neighbours (KNN) - один из элементарных методов машинного обучения и отличный способ познакомиться с миром машинного обучения.
Таблица содержания:
- Введение в K-NN
- Как работает K-NN?
- Как выбрать "К"?
- Псевдокод для KNN
- Внедрение KNN для классификации рака груди как злокачественного и доброкачественного
- Плюсы и минусы KNN
Введение в K-NN
KNN - это алгоритм обучения с учителем, который полагается на входные данные для своего обучения, чтобы производить соответствующие выходные данные, когда в него поступают новые немаркированные данные.
Например, представьте себя опекуном 5-летнего ребенка и вы хотите, чтобы он понял, как выглядит «собака», вы покажете ему несколько фотографий собака и отдых может быть изображением любого другого животного.
Каждый раз, когда вы встречаетесь с «собакой», вы говорите своему ребенку «это собака», а всякий раз, когда встречаются другие животные, вы говорите своему ребенку «нет» это не собака ». Повторение этого процесса несколько раз поможет вашему ребенку понять, что такое собака, и он сможет отличить собак от остальных животных. Это называется алгоритмом обучения с учителем.
Алгоритмы контролируемого машинного обучения используются для решения задач классификации или регрессии. И, как правило, для решения задач кластеризации используется алгоритм обучения без учителя.
K-NN - непараметрический, что означает, что он не делает никаких предположений относительно базовых данных. Он также известен как «алгоритм ленивого обучения», поскольку он не учится на входных данных сразу, а классифицируется во время запроса. Он сохраняет все значения из набора данных, что делает его обучение быстрым и отличается от своего современного SVM, где мы можем отбросить неподдерживаемые векторы. Его свойство ленивого обучения приводит к огромной пространственной и временной сложности. Но, тем не менее, алгоритм отлично работает для небольших наборов данных.
KNN - это наименее точный алгоритм. Каждый раз, когда мы разрабатываем новый алгоритм, мы перекрестно проверяем его точность с точностью KNN. Его точность используется в качестве минимального порога для нового алгоритма, и это как преимущество, так и недостаток KNN.
Результатом, ожидаемым от K-NN, будет принадлежность к классу.
Особенность, которая отличает его от других алгоритмов, заключается в том, что он имеет двойную природу, то есть его можно использовать как для классификации, так и для регрессии.
KNN работает по принципу большинства голосов, то есть объект классифицируется большинством голосов его соседей, причем объект присваивается классу, наиболее распространенному среди его k ближайших соседей.
Голоса определяются с использованием показателей расстояния, и предполагается, что данные находятся в метрическом пространстве.
Наиболее распространенные метрики расстояния:
- Евклидово расстояние: определяется как квадратный корень из суммы квадратов разностей между двумя точками.
2. Манхэттенское расстояние: это расстояние между действительными векторами, вычисленное как сумма их абсолютной разницы.
Как работает K-NN?
- Разделите данные на тестовый и обучающий набор.
- Примите значение «k».
- Предположим метрику расстояния и вычислим расстояние до ее n-обучающих выборок.
- Отсортируйте вычисленное расстояние и возьмите k ближайших отсчетов.
- В соответствии с большинством точек назначьте класс немаркированной точке данных.
Мы пытаемся вычислить расстояние между различными точками от новой неопознанной точки данных.
После вычисления расстояния мы берем k-ближайшую выборку и, согласно большинству голосов, присваиваем класс неопознанной точке данных.
Как выбрать «К»?
Краткий ответ на этот вопрос: не существует оптимального значения для «K». Это гиперпараметр, поэтому он выбирается вами, но помните, что это граница принятия решения, и поэтому его следует выбирать с умом.
Как мы видим, когда K = 1 кривая была слишком резкой, но по мере увеличения K резкость уменьшается, и в игру вступает плавность. И если мы увеличим K до бесконечности, все будет красным, зеленым или синим в зависимости от голосов большинства.
Значение «K» играет действительно важную роль в определении границы принятия решения;
К: слишком большой; все классифицируется по классам (Неадекватно)
К: слишком маленький; набор данных с высокой вариабельностью и нестабильная граница принятия решения (переоснащение)
Значение «K» можно определить двумя способами:
- Ручной метод: нам нужно использовать метод Hit & Trial; варьируйте значение K и наблюдайте за ошибками обучения и проверки.
Если ошибка обучения очень мала, а ошибка теста высока, то наша модель переобучена. И если мы наблюдаем высокую ошибку обучения, но низкую ошибку тестирования, наша модель не подходит.
Чтобы узнать больше о выборе оптимального варианта для вашей модели:
2. Поиск по сетке: Scikit-learn предоставляет функцию GridSearchCV, которая позволяет нам легко проверять несколько значений для K.
Псевдокод для KNN
Здесь мы принимаем параметры как метрики расстояния, а затем вычисляем расстояние от точки данных без метки до каждой точки с меткой.
После вычисления расстояния мы берем уникальные значения и используем argmax
, чтобы найти большинство голосов, позже мы можем классифицировать точку по классам, используя только эти голоса.
Внедрение KNN для классификации рака груди как злокачественного и доброкачественного
Мы собираемся поэкспериментировать с нашей моделью KNN на одном из наиболее распространенных наборов данных, то есть на обнаружении рака груди.
Набор данных содержит 569 строк и 33 столбца. Рак разделен на две части: доброкачественную (B) и злокачественную (M). Наша цель - классифицировать случайных больных раком по признакам B или M.
После импорта всех необходимых библиотек набор данных можно найти по адресу:
Если данные отображаются как Доброкачественные (синий) и Злокачественные (Пурпурный), непомеченные точки данных отображаются красным цветом.
После выполнения алгоритма точка данных может считаться частью семейства доброкачественных.
Код можно найти по адресу:
Выполнение KNN с помощью sci-kit learn
Плюсы и минусы KNN
Плюсы:
- Легко и просто
- Время обучения мало.
- Данные обучения от надежных до зашумленных.
Минусы:
- Определение идеального «К» утомительно.
- Требуется большой объем памяти.
- Чувствителен к выбросам.
- Наименее точный алгоритм.
Заключение
Надеюсь, эта статья поможет вам лучше понять KNN, а также поможет вам в его практическом использовании.
Как всегда, большое спасибо за чтение, и, пожалуйста, поделитесь этой статьей, если вы нашли ее полезной!
Не стесняйтесь подключаться:
LinkedIN ~ https://www.linkedin.com/in/dakshtrehan/
Instagram ~ https://www.instagram.com/_daksh_trehan_/
Github ~ https://github.com/dakshtrehan
Следите за дальнейшими блогами по машинному обучению / глубокому обучению.
Средний ~ https://medium.com/@dakshtrehan
Хотите узнать больше?
Ваше здоровье