Например, если P1 – наша первая точка данных, а P2 – вторая, как показано на графике (рис. 6.4), то евклидово расстояние будет измеряться по формуле:
Вы, наверное, помните теорему Пифагора из школьной программы, и это точно такой же принцип. Две точки на этом графике являются двумя вершинами прямоугольного треугольника. Гипотенузу можно найти, сначала определив квадрат ее длины: для этого сложите квадраты двух других сторон.
3. Подсчитайте количество точек данных в каждой категории. После того как вы нашли евклидово расстояние между новой точкой данных и каждой из старых точек данных, вы должны ранжировать эти расстояния в порядке возрастания. На данном этапе будет легко определить k-ближайших соседей – это просто первые пять пунктов в вашем списке. Визуально мы можем обвести ближайшие точки данных следующим образом (рис. 6.5):
4. Отнесите точку данных к категории с наибольшим количеством соседей. Мы видим, что для нашей новой точки данных есть три ближайших соседа в категории 1 – страдающих диабетом и только два ближайших соседа в категории 2 – здоровых. Поскольку в категории 1 больше близких соседей, мы отнесем новую точку данных к этой же категории, что означает, что этот конкретный пациент, учитывая его вес и количество выполняемых физических упражнений, подвержен риску развития диабета второго типа. Так мы классифицировали новую точку, модель готова[47].
Многомерные пространства
Что происходит, если у нас более двух переменных для описания точек данных? Что, если в дополнение к весу и количеству физических упражнений у нас также была бы информация о возрасте пациентов и их среднем ежедневном потреблении калорий? Поскольку у нас есть несколько переменных, мы уже не можем рисовать двумерную диаграмму рассеяния. Вместо этого нам нужна четырехмерная диаграмма.
Представить или визуализировать точечную диаграмму 4D практически невозможно, но хорошая новость в том, что k-NN будет работать независимо от этого, поскольку алгоритм основан на подобии, зависящем от расстояния, – и формула, которую мы ввели для расстояния, может быть переписана для любого количества измерений. Просто будет больше элементов под квадратным корнем.
Тестирование
Как бы ни был хорош k-NN для создания точных прогнозов, важно отметить, что результаты применения этого метода не всегда будут правильными. Это совершенно нормально – всегда будет несколько неверных прогнозов и ни один алгоритм не сможет всегда давать правильные ответы. Ключ к созданию хорошей модели состоит в том, чтобы проверить ее несколько раз, изменяя функции (в нашем случае – значение k), пока вы не найдете лучшее решение для своей задачи.
Плюсы и минусы использования алгоритма k-NN
Алгоритм k-NN часто является правильным выбором, потому что он интуитивно понятен и, в отличие от наивного байесовского классификатора, как мы увидим ниже, не разрешает допущения о данных. Однако основным недостатком k-NN является то, что вычисление занимает очень много времени. Необходимость вычислять расстояние до каждой точки в массиве данных чревата тем, что чем больше у вас точек, тем медленнее k-NN будет работать.