Автор оригинала: Alex Polymath.
Здравствуйте, меня зовут Алекс. И эта статья посвящена алгоритму KNN. Прошло много времени с тех пор, как я впервые встретил термин “машинное обучение”. Для меня, как разработчика переднего плана, всегда было трудно понять это. Есть так много вещей, таких как контролируемое, неконтролируемое, обучение с подкреплением . Сотни типов алгоритмов и нейронных сетей.
Поэтому я искал какой-нибудь нежный старт . Алгоритм, который легко понять с базовым уровнем математики.
Как это работает?
Прежде всего. Давайте определим простую проблему, чтобы было легче понять дальнейшее объяснение.
У нас есть поле. Допустим, в одной части этого поля есть в основном круги. А с другой стороны в основном треугольники. Все они имеют координаты (X, Y). Не квантовая физика, ха.
К какому типу относится точка с выбранными координатами (x, y)?
Шаг 1 – давайте измерим расстояние
Очевидно , что чем ближе точка к группе кругов , тем выше вероятность того, что это также круг. То же самое для треугольников. Поэтому все, что нам нужно понять, – это** как далеко** эта точка от каждой из этих групп.
Дело в том, что мы не можем реально измерить расстояние от точки до целой группы. Таким образом, мы рассчитаем расстояние от выбранной точки до всех других элементов на поле.
Формула евклидова расстояния для 2-мерного пространства
высокий звук
Треугольник | 3.4 |
Треугольник | 3.7 |
Треугольник | 3.7 |
Треугольник | 4.1 |
Треугольник | 4.3 |
Круг | 5.0 |
Круг | 2.7 |
Круг | 2.9 |
Круг | 3.3 |
Круг | 4.1 |
Круг | 3.9 |
Шаг 2 – сортировка списка
Теперь у нас есть список расстояний до всех точек на поле. Все, что осталось сделать, – это просто отсортировать его по возрастанию.
2.7 Круг 2.9 Круг 3.3 Круг 3.4 Треугольник …
Шаг 3 – выберите K
Последний шаг – возьмите сначала K элементов из списка и вычислите, есть ли еще круг или треугольники . Исходя из этого, мы можем определить тип выбранной точки.
Поэтому, если мы возьмем, выбранная точка будет иметь тип кругов. Потому что первые 3 элемента-это круги, и только один из них-треугольник. Важное примечание – может возникнуть ситуация, когда у вас будет равное количество из каждой категории. Вот почему лучше использовать значение odd K (3, 7, 9, …).
Теперь вы можете спросить – как выбрать K значение. Ну, чем он меньше, тем выше влияние зашумленных данных. И если значение слишком велико, прогноз может быть менее точным. Таким образом, для каждого набора данных значение уникально.
Как работать с нечисловыми значениями?
Может возникнуть ситуация, когда у вас не 2 измерения, а 10. И некоторые из них вовсе не числа . Это могут быть категории, такие как форма (“квадрат”, “круглый”,…) и т. Д.
В этом случае мы можем представить его числами 0 и 1. Итак, если параметр имеет 2 возможных значения (“квадрат”, “круглый”). Мы заменим его 2 параметрами – ” square “, ” round ” Поэтому, если элемент типа “square”, он будет иметь значения (1, 0). И если элемент типа “round”, он будет иметь значения (0, 1).
Нормализация
Если мы работаем с несколькими измерениями, которые имеют различный диапазон, нам нужно применить регуляризацию. Например, одно измерение имеет диапазон 0-1. Его влияние на результаты будет крайне незначительным по сравнению с тем, которое имеет диапазон (0-255). И это неправильно.
Алгоритм очень прост.
- Выберите размер с наименьшим диапазоном (0-1 dimension_A)
- Пройдите через все другие измерения и измените их значение
dimension_B_value/(dimension_B_range/dimension_A_range)
Таким образом, если размер B имеет диапазон от 0 до 200, это в 200 раз больше небольшого диапазона размера A. Таким образом, все значения для измерения B должны быть разделены на 200. Если значение было 100, оно станет 0,5. То же самое для всех других измерений.
Хочешь строить крутые вещи?
Проверьте мой курс – Взлом карьеры JavaScript . https://www.udemy.com/javascript-career-jump-start/