В этой статье мы поговорим об очень известном алгоритме машинного обучения, который используется как для классификации, так и для регрессии.
"Рыбак рыбака слетается в стаю"
Алгоритм KNN работает на предположении, что данные, имеющие аналогичные входные данные, будут иметь аналогичные выходные данные. Алгоритм KNN предполагает, что подобные вещи существуют в непосредственной близости. Другими словами, подобные вещи ближе друг к другу.
Теперь вопрос в том, как измерить сходство между точками?
Есть много методов, чтобы найти это, и вы можете быть знакомы с некоторыми из них. Но чаще используется расстояние между точками.
Измерение расстояния:-
Один из элементарных методов поиска похожих точек данных — найти расстояние между ними, если они близки, расстояние будет меньше, что означает, что они принадлежат к одному и тому же классу. Наоборот, если расстояние очень велико, это означает, что они не похожи и не принадлежат к одному и тому же классу.
Как теперь измерить расстояние между точками?
Евклидово расстояние:-
Подождите, разве мы не использовали это раньше? Да, вы правы, мы используем его уже целую вечность. Это самый простой и самый короткий метод определения расстояния, определяемый следующим образом:
Он очень чувствителен к большим различиям. Так как он возводит в квадрат расстояния с большими различиями и оказывает огромное влияние на расчет.
Манхэттен Расстояние:-
Его также называют City Block, Taxi Cab Distance, Snake Distance или L1-Norm, где он подсчитывает сумму абсолютных разностей между координатами точек.
Расстояние Минковского:-
Обобщенная форма для нахождения расстояния между любыми двумя точками pи qзадается следующим образом и также называется 'Расстояние Минковского':
Разве эта форма не похожа на евклидову и манхэттенскую?
Вы можете назвать эту формулу корневой формулой для нахождения расстояния между двумя точками. Евклидов и Манхэттен являются потомками этой корневой формулы.
Если a = 1, то это называется манхэттенским расстоянием.
Если a = 2, то это называется евклидовым расстоянием.
если a =∞, то это называется расстоянием Чебышева.
Чебышев Расстояние:-
Для расстояния Чебышева расстояние между двумя точками равно наибольшей их разности по любому координатному измерению.
Алгоритм КНН: -
- Загрузите набор данных с m примерами в обучающем наборе с n функциями и разными классами/метками.
- Инициализируйте K (гиперпараметр), количество соседей.
- Вычислите расстояние между точками тестовых данных и точками обучающих данных.
- Добавьте расстояние и индекс примера в упорядоченную коллекцию.
- Отсортируйте упорядоченный набор расстояний и индексов от наименьшего к наибольшему (в порядке возрастания) по расстояниям.
- Выберите первые K записей из отсортированной коллекции.
- Получите метки выбранных записей K.
- Если регрессия, верните среднее значение K меток.
- Если классификация, верните режим (класс, имеющий наибольшее количество голосов) меток K.
Как выбрать лучшее значение для K?
- Если K = 1, посмотрите на соседа и сопоставьте точки данных с тем же классом (для классификации)/значением (для регрессии), что и сосед.
- Если K = 100, то это сделает модель слишком обобщенной с высоким смещением и недообучение. Производительность как на тестовых, так и на обучающих данных будет невысокой.
- если K = m (количество примеров в наборе данных), то сопоставьте все точки данных с самым большим классом в наборе данных.
Настройка параметра K:-
- Всегда старайтесь выбирать нечетные значения для K. Это помогает разорвать связь между классами.
- Попробуйте построить график коэффициента ошибок в точках данных проверки в зависимости от различных значений K.
Когда вы строите график между коэффициентом ошибок и различными значениями K , вы найдете определенные точки, после которых коэффициент ошибок не показывает существенного падения.
- Вы также можете попробовать K =floor(sqrt(m)), где m — количество примеров в наборе данных. Это просто волшебное число, которое работает в большинстве случаев.
Важный :-
Перед использованием KNN убедитесь, что ваш набор данных полностью масштабирован.
Плюсы:-
- KNN — это простой способ классификации данных.
- KNN можно использовать как для классификации, так и для регрессии.
- Это непараметрическое обучение. Он не делает никаких предположений о базовом распределении и не пытается его оценить.
Минусы:-
- На него легко влияют выбросы или несбалансированный набор данных.
- Вычислительно дорого.
- Плохо работает с огромными наборами данных.
Достаточно, давайте закодируем это.