Въведение в алгоритма на KNN

Алгоритъмът на най-близкия съсед, известен като KNN е основният алгоритъм за машинно обучение. Разбирането на този алгоритъм е много добро място за започване на машинно обучение, тъй като логиката зад този алгоритъм е включена в много други модели на машинно обучение. Алгоритъмът на K Най-близкият съсед попада в класификационната част при контролираното обучение.

Какво е контролирано обучение?

Контролираният алгоритъм за обучение е вид алгоритъм, при който се разчита на етикетиран вход, за да се учи и прогнозира въз основа на функцията, когато се предоставят незабелязани данни. Тъй като разбрахме какво е контролираното обучение, нека видим какво е класификация, алгоритъмът за класификация дава дискретна стойност като изход, а не непрекъснати стойности.

Как работи алгоритъмът KNN?

K Най-близки съседи е основен алгоритъм, който съхранява всички налични и прогнозира класификацията на незабелязаните данни въз основа на мярка за сходство. При линейна геометрия, когато са начертани два параметъра върху 2D декартова система, ние идентифицираме мярката за прилика, като изчисляваме разстоянието между точките. Същото важи и тук, алгоритъмът на KNN работи при предположението, че подобни неща съществуват в непосредствена близост, просто можем да вложим в едни и същи неща да бъдат близо един до друг.

Пример: Ако имаме набор от данни, когато графиката изглежда така, да класифицираме тези точки от данни K Алгоритъмът на най-близките съседи първо ще идентифицира разстоянието между точките и ще види дали са сходни или не.

В геометрията според Евклидова функция на разстоянието може да се изчисли по следното уравнение,

Ако K = 1, случаят просто се присвоява на клас на най-близкия му съсед (използваме „1“ в почти всяка ситуация в математиката, можем да променим стойността на K, докато тренираме моделите в машинно обучение и ще обсъдете това по-нататък в статията) X и Y са стойностите на координатните оси.

Ако забележим тук, всички мерки за разстояние, които получаваме, ще бъдат непрекъснати променливи, но имаме нужда от дискретни стойности, докато правим класификация, така че трябва да използваме дистанция на чукане, за да постигнем това.

Това уравнение ни носи и стандартизацията на числови стойности между 0 до 1, когато в набора от данни има смес от числови и категорични стойности.

х Y разстояние
С Рак С Рак X = Y → D = 0
Без рак Без рак X! = Y → D = 1

По този начин алгоритъмът работи и сега, нека се потопим в това как да изберем стойността на K в KNN.

Избор на стойност K в алгоритъм KNN

Преди да видим какви са факторите, които трябва да се вземат предвид при избора на стойност на K, трябва да разберем как стойността на K влияе на алгоритъма.

Това са диаграмите от един и същ набор от данни с различни K стойности, K-стойността е 1 за графиката в левия горен ъгъл и най-високата за графиката в десния долен ъгъл. Ако проучим внимателно, можем да разберем, че границата на класификационния алгоритъм става гладка с увеличаване на стойността на K. Тоест Стойността на K е пряко пропорционална на гладкостта на границата. Така че от това можем да разберем, че ако стойността на K е настроена на 1, тогава моделът на обучение ще надхвърли данните и ако стойността на K е настроена на голямо число, тогава тя ще бъде недостатъчна за данните. За да изберем оптимална стойност на K, трябва да проверим грешката на валидиране с множество K - стойности и да изберем една с минималната грешка.

Стъпки за внедряване на алгоритъма на KNN в Python

Дотук тук научихме теоретичната част от алгоритъма на K Най-близкият съсед сега да видим практически, като се научим как да прилагаме в python.

Стъпка 1: Импортиране на библиотеки

По-долу ще видим Импортиране на библиотеки, които трябва да стартираме KNN.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Стъпка 2: Импортиране на набор от данни

Тук ще видим данните се импортират.

file = "/path/to/the/dataset"
#Push dataset into Pandas dataframe
dataset = pd.read_csv(file)

Стъпка 3: Разделяне на набор от данни

Следващата стъпка е да разделим нашата база данни на тест и да разделим обучението.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)

Забележка: Наборът от данни, който използвам за демонстрация, е предварително обработен с дефиниране на стойностите X и Y. Ако това не е направено първо, трябва да се направи, защото докато моделът за класификация се обучава, ние трябва да предадем етикетирани данни за това, за да изчислим разстоянията.

Стъпка 4: Модел за обучение

Сега в тази стъпка ще видим обучение по модели.

from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors=3)
classifier.fit(X_train, y_train)

Забележка: Тук използваме K съседен класификатор, импортиран от модула sklearn.neighbours.

Стъпка 5: Изпълнение на прогнози

Изпълнение на прогнози за тестовите сплит данни.

y_pred = classifier.predict(X_test)

Стъпка 6: Проверете валидирането

Следващата стъпка е да оценим алгоритъма и да проверим грешката на валидиране, да стартираме отново с различна K стойност и да вземем предвид k стойността, където получаваме минималната грешка на валидиране. Ето как можем практически да приложим класификатора K Най-близки съседи, има множество начини за реализиране на този алгоритъм, това е само един от тях и в тази статия описах много накратко стъпките, тъй като основната ни програма е да разберем как работи алгоритъмът.

заключение

Както беше казано по-рано, алгоритъмът на K Най-близките съседи е един от най-простите и лесни алгоритми, използвани за класификация. Въз основа на това как работи, той също попада под „Алгоритъм на мързеливо обучение“. Като цяло K-стойността, която всеки преминава, докато тренира модела, е нечетно число, но това не е принуда. Въпреки това има малко минуси, докато използвате KNN, малко от тях са

  • Това не върви добре с категоричните данни, защото не можем да намерим разстоянието между две категорични характеристики.
  • Освен това не работи добре с данни с големи размери, тъй като алгоритъмът ще бъде трудно да изчисли разстоянието във всяко измерение.

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

Препоръчителни статии

Това е ръководство за алгоритма на KNN. Тук обсъждаме въвеждането и работата на алгоритъма на K Най-близки съседи с стъпки за реализиране на kNN алгоритъма в python. Можете също да разгледате следните статии, за да научите повече-

  1. Как работи алгоритъмът SVM?
  2. Алгоритъм на MD5 (предимства и недостатъци)
  3. K- означава алгоритъм за клъстериране
  4. Видове обучение за усилване
  5. Пълно ръководство за C ++ алгоритъм

Категория: