Нежное введение в kNN и применение к классификации качества красного вина

Введение:

Предположим, у меня есть набор данных с образцами красного вина и их качеством, например, низкое, среднее, высокое. Мне дают тестовый образец с неизвестным качеством, и задача состоит в том, чтобы правильно классифицировать вино по набору физико-химических признаков, например. кислотность, плотность, спирт, pH.

k-Ближайшие соседи определяют k количество наблюдений, наиболее близких к тестовой выборке, как определено некоторой метрикой расстояния, например. Евклидово. Из этого набора k-соседей правило большинства используется для предсказания класса. Если k=3 и качество ближайших соседних вин {низкое, низкое, среднее}, то мы бы классифицировали тестовый образец как вино низкого качества. Тот же подход распространяется на последующие тестовые образцы.

Чтобы предоставить наглядный пример, на иллюстрации ниже показаны 17 наблюдений, для которых мы знаем правильный класс (зеленый и синий). Красная звезда — тестовый образец. Если k=3, соседями являются {синие, синие, зеленые}, поэтому мы классифицируем тестовый образец как синий. Если k=5, соседями будут {синие, синие, зеленые, зеленые, зеленые}, и мы выберем зеленый.

Количество соседей, k:

Количество соседей, k, является единственным параметром, который может регулировать сложность. Чем выше значение k, тем ниже сложность (более гладкие границы), а чем ниже значение k, тем выше сложность.

Графики ниже показывают сравнение границ решения 15-нн классификатора и 1-нн классификатора, примененных к смоделированным данным. Фиолетовая пунктирная линия — граница байесовского решения. Например, тестовые образцы, находящиеся в зеленой области, будут классифицироваться как зеленые.

Как правило, выберите нечетное число для k, чтобы избежать равенства, хотя все же возможны трехсторонние совпадения — например, {зеленый, оранжевый, синий} . В случае ничьей класс выбирается случайным образом.

Расстояние:

Наиболее распространенной метрикой расстояния, используемой в kNN, является евклидово расстояние.

Для двух наблюдений p и q:

Псевдокод kNN:

Для каждого x в тестовом наборе:

  1. Вычислите расстояние между x и каждым наблюдением в наборе поездов.
  2. Отсортируйте расстояния в порядке возрастания и получите классы k- ближайших соседей.
  3. Используя правило большинства, присвойте x предсказанному классу.

Предварительная обработка:

Лучше всего масштабировать функции перед запуском kNN. Евклидово расстояние не является масштабно-инвариантным, и признаки высокой нормы будут доминировать в определении близости.

Применение kNN для прогнозирования качества вина

Набор данных о качестве вина доступен в Хранилище машинного обучения UCI. Для каждого вина в наборе данных представлены физико-химические свойства и качество (низкое, среднее, высокое). Качество — это среднее из трех оценок критиков.

Загрузить данные:

Использование пакета «Caret», разделов поезда и наборов тестов:

Установите метод перекрестной проверки:

Модель поезда:

Чтобы определить оптимальное количество соседей, я проверяю нечетные значения k от 5 до 83, используя 10-кратную перекрестную проверку. График ниже предполагает, что использование 77 ближайших соседей дает самую высокую точность (62,4%).

На тестовом наборе модель, использующая 77 ближайших соседей, классифицирует качество вина с точностью 62,85%.