Доступное введение в машинное обучение - не требуется программирования или математики.

К концу этого руководства вы реализуете свой первый алгоритм, не касаясь ни единой строчки кода. Вы будете использовать методы машинного обучения для классификации реальных данных с помощью основных функций Excel. Необязательно быть гением или программистом, чтобы понять машинное обучение. Несмотря на популярность применения беспилотных автомобилей, роботов-убийц и распознавания лиц, основы машинного обучения (ML) довольно просты. Это шанс намочить ноги и понять силу этих новых техник.

Заявление об ограничении ответственности в отношении Excel

Все специалисты по данным, вероятно, недовольны названием этого руководства. Excel обычно считается ужасным инструментом для серьезной аналитики данных. Он не масштабируется для обработки больших наборов данных, с которыми мы имеем дело в реальном мире, и ему не хватает некоторых ключевых функций языков программирования и библиотек машинного обучения. Вы увидите, что многие формулы, приведенные в этом руководстве, сложно учесть недостатки и особенности Excel. Я использую Excel, чтобы сделать это введение доступным для непрограммистов, поскольку большинство из нас имеет базовые знания об этом инструменте. Те, кто решит более серьезно заняться машинным обучением и наукой о данных, в конечном итоге перейдут на Python или R, но начать с простого не повредит.

Наша конечная цель

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

Машинное обучение

Машинное обучение - это набор методов оптимизации моделей. Другими словами, машинное обучение берет модели, которые мы построили, и использует данные из реального мира, чтобы «научиться» точно настраивать параметры модели, чтобы они были наиболее полезными в реальном сценарии на основе данных обучения. В этом руководстве мы применим машинное обучение к модели классификации. Не волнуйтесь, если вам не совсем понятно прямо сейчас, к концу урока вы точно поймете, о чем я говорю.

Учебный набор против тестового набора

Алгоритмы машинного обучения адаптируют модель на основе набора обучающих данных. Данные обучения - это набор данных, который содержит все доступные нам переменные, а также правильную классификацию. Учебные наборы могут быть разработаны различными способами, но в этом руководстве мы будем использовать обучающие наборы, которые были классифицированы экспертом-человеком. Важно помнить, что модели машинного обучения хороши ровно настолько, насколько хороши данные для обучения. Чем точнее ваши данные о тренировках и чем их больше, тем лучше. Другими словами - мусор на входе, мусор на выходе.

Набор тестов обычно является подмножеством обучающих данных, поскольку он также содержит все переменные и правильные классификации. Разница в том, как мы его используем. В то время как обучающий набор помогает разработать модель, набор тестов испытывает ее в реальном сценарии и проверяет, насколько хорошо она работает. Существует множество сложных способов измерения ошибок и тестирования моделей, но пока вы понимаете основную идею, мы можем продолжать работу.

Классификационные модели

Модель классификации - это просто математический инструмент, позволяющий определить, с какой категорией или классом чего-либо вы имеете дело, на основе набора переменных или входных данных. Например, если я хочу классифицировать, было ли животное кошкой или рыбой, я мог бы использовать такие переменные, как плавает ли животное, есть ли у него шерсть или нет, и ест ли оно, чтобы определить, к какому классу оно относится. под. Вы заметите две вещи. Во-первых, чем больше у вас переменных, тем лучше. Обладая дополнительной информацией, вы можете быть более уверены в правильности своей классификации. Во-вторых, некоторые переменные более полезны или предсказуемы, чем другие. Возьмем последний пример, ест ли животное. Сторонний наблюдатель знает, что едят и рыба, и кошки, поэтому наличие этих данных не помогает при определении класса животного. Цель машинного обучения в этом контексте - создать наиболее полезную модель классификации с учетом доступных данных и отсеять входные данные, которые не повышают эффективность модели.

K Ближайшие соседи

K-ближайшие соседи (KNN) - это особый тип модели классификации. Интуиция проста для понимания. Модель берет все доступные данные о неизвестной точке данных и сравнивает их с обучающим набором данных, чтобы определить, с какими точками в этом обучающем наборе неизвестная точка наиболее похожа или наиболее близка. Идея состоит в том, что неизвестная точка данных, скорее всего, попадет в тот же класс, что и известные точки данных, на которые она наиболее похожа. KNN - это просто математический способ определения сходства между двумя точками данных.

Набор данных Iris

В этом руководстве мы будем использовать классический набор данных, используемый для обучения машинному обучению, который называется набор данных Iris. Это набор данных о трех видах цветка ириса и четырех частях данных о них: длине чашелистика, ширине чашелистика, длине лепестка и ширине лепестка. Набор данных уже подготовлен, чтобы новичкам было легко приступить к работе. Вы можете загрузить данные в совместимом формате Excel по этой ссылке, щелкнув загрузить zip в правом верхнем углу и открыв содержимое в Excel.

Подготовка наших данных

Как я уже упоминал, этот набор данных предназначен для того, чтобы с ним было легко работать. Каждый из первых 4 столбцов (A – D) представляет собой измерение или функцию данных. Пятая колонка E - это разновидность или класс цветка. Каждая строка представляет собой отдельную запись или точку данных. Как видите, у нас есть 150 известных точек данных, с которыми нужно работать.

Нам нужно принять важное решение: как мы хотим разделить этот набор данных на обучающий набор и тестовый набор. Учитывая больший набор данных, есть методы оптимизации, которые мы могли бы использовать, чтобы принять это решение. Поскольку этот набор данных небольшой и предназначен для начинающих, мы просто условно разделим его на 70/30. Другими словами, мы будем использовать 70% данных или 105 точек данных в качестве обучающего набора, а оставшиеся 45 точек данных - в качестве тестового набора.

Теперь мы будем использовать Excel для случайной выборки 70% данных. Сначала добавьте на лист столбец под названием «Случайное значение» и используйте функцию RAND (), чтобы случайным образом выбрать значение от 0 до 1. Имейте в виду, что функция RAND () будет повторно выбирать новое число каждый раз, когда ваш лист пересчитывает. Чтобы этого избежать, после генерации чисел я скопирую их (Ctrl + C), а затем специально вставлю их как значения (Ctrl + Shift + V), чтобы они оставались неизменными. Мы начнем с ячейки F2 и перетащим вниз до последней точки данных.

=RAND()

Затем я ранжирую их от 1 до 150 с помощью функции RANK () в Excel, начиная с ячейки G2, как показано ниже, и перетаскивая ее вниз до последней точки данных. Обязательно заблокируйте опорный фрейм, как показано, нажав F4 или добавив знаки $ вручную, иначе эта формула не будет работать так, как мы предполагали.

=RANK(F2, $F$2:$F$15)

Теперь у нас есть уникальное значение от 1 до 150 для каждой точки данных. Поскольку нам нужно 105 значений для нашего обучающего набора, мы собираемся добавить еще один столбец и выбрать значения от 1 до 105 для нашего обучающего набора с помощью быстрой функции IF (). В противном случае мы добавим значение в наш тестовый набор. Опять же, мы начнем с H2 и перетащим вниз до последней точки данных.

=IF(G2<=105,”Training”, “Test”)

На этом этапе ваш набор данных должен быть настроен, как показано на скриншоте. Помните, что, поскольку каждый из нас взял разную случайную выборку, конкретные значения в столбцах F-H будут выглядеть для вас по-разному. Вам также следует потратить минуту, чтобы добавить фильтры для нашего следующего шага.

Затем мы разделим наши два набора данных на их собственные рабочие листы (или вкладки), чтобы все было организовано. Создайте новый рабочий лист под названием «Учебный набор» и отфильтруйте данные «Обучение» в исходном листе. Скопируйте эти данные вместе с заголовками и вставьте их в свой «Учебный набор». У вас должно получиться 106 строк (105 значений + строка заголовка). Сделайте то же самое с листом «Тестовый набор». У вас должно получиться 46 строк (45 значений + строка заголовка).

На этом этапе вы можете избавиться от листа «Радужная оболочка» и удалить столбцы F-H на обоих оставшихся листах, поскольку мы уже разделили наши данные. Наконец, я добавлю столбец «ID» в начале каждого рабочего листа и обозначу каждую точку данных 1–105 и 1–45 соответственно, просто введя номер (перетаскивание маркера заполнения будет здесь вашим другом, чтобы сэкономить вашу работу. ). Это поможет нам выполнить наши расчеты в следующих разделах. Убедитесь, что каждый из ваших наборов устроен, как в примере ниже.

Построение модели

Теперь наши данные готовы, и мы можем приступить к построению нашей модели. Напоминаем, что эта модель работает путем сравнения неизвестной точки данных, которую мы хотим классифицировать, с ее ближайшими или наиболее похожими соседями. Для этого нам нужно взять каждую точку в нашем тестовом наборе и вычислить от нее расстояние до каждой точки в обучающем наборе.

Понятие расстояния

Расстояние - это способ, которым математики определяют, какие точки наиболее похожи в n-мерном пространстве. Интуиция подсказывает, что чем меньше расстояние между точками, тем они больше похожи. Большинство из нас привыкли рассчитывать расстояние в двухмерном пространстве, например в системе координат x, y или используя долготу и широту. Есть несколько способов рассчитать расстояние, но для простоты мы будем использовать евклидово расстояние. Ниже представлена ​​визуализация формулы евклидова расстояния в 2-мерном пространстве. Как видите, формула работает путем создания прямоугольного треугольника между двумя точками и определения длины гипотенузы, самой длинной стороны треугольника, указанной стрелкой.

Наш набор данных четырехмерный. Нам сложно визуализировать пространства за пределами трех измерений, но независимо от того, можете ли вы это визуализировать, мы все равно можем рассчитать расстояние между двумя точками одинаково, независимо от количества измерений. Вот общая формула для евклидова расстояния:

Проще говоря, это означает, что евклидово расстояние между двумя точками, q и p, может быть определено путем взятия каждого измерения для каждой точки, начиная с первого измерения, и многократного возведения разницы между ними в квадрат, пока вы не сделаете это для все размеры и сложили различия вместе. Затем мы извлекаем квадратный корень из этой суммы и получаем евклидово расстояние. Это звучит сложно, но вы увидите, что на самом деле им довольно просто пользоваться, когда мы вернемся к нашим данным.

Расчет расстояния

В нашей книге создайте новый рабочий лист под названием «Расстояние». Наша цель для этого листа - создать матрицу 45X105 расстояний между каждой точкой данных в тестовом наборе и обучающем наборе. В нашем случае каждая строка будет соответствовать одной точке данных в тестовом наборе, а каждый столбец будет соответствовать одной точке данных в обучающем наборе. Начиная с A2 и постепенно, пока не дойдете до A46, заполните каждую ячейку числами 1–45. Опять же, здесь полезен маркер заполнения, так что вам не нужно вводить числа один за другим. Теперь, работая с B1, а затем столбец за столбцом по горизонтали, пока вы не нажмете DB1, заполните каждый столбец числами 1–105. Ваша матрица должна выглядеть примерно так, как на скриншоте ниже, на котором показана ее небольшая часть.

Прежде чем двигаться дальше, вам нужно преобразовать вашу матрицу в таблицу, чтобы мы могли упорядочить ее. Выделите всю матрицу и нажмите Ctrl + T, затем назовите таблицу «Distance_Table» и выберите создание таблицы с заголовками. Затем вы захотите назвать свой первый столбец «Идентификатор теста», введя его в ячейку A1.

Теперь, когда наша таблица настроена, мы можем начать наши вычисления. Мы начнем с ячейки B2, которая будет вычислять расстояние между первой точкой в ​​нашем обучающем наборе (ID # 1) и первой точкой в ​​нашем тестовом наборе (ID # 1). Мы можем быстро применить формулу Евклидова расстояния, используя функцию ВПР в Excel, чтобы найти значения для каждого измерения, а затем выполнить вычисления по мере необходимости. Лучше всего скопировать и вставить эту формулу в строку формул в ячейке B2, поскольку она обрабатывает несколько особенностей функции таблицы в Excel, но убедитесь, что вы понимаете, что все, что делает эта формула, - это применение формулы Евклидова расстояния, которую мы обсуждали ранее. Как написано, вы можете перетащить это, чтобы заполнить всю таблицу.

=SQRT(((VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 2, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 2, FALSE)) ^ 2+(VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 3, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 3, FALSE)) ^ 2+(VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 4, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 4, FALSE)) ^ 2+(VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 5, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 5, FALSE)) ^ 2))

У вас должно получиться что-то вроде этого:

Поиск ближайших соседей

На этом этапе мы вычислили расстояние между каждой точкой в ​​нашем тестовом наборе и каждой точкой в ​​нашем обучающем наборе. Теперь нам нужно определить ближайших соседей к каждой точке в нашем тестовом наборе. Создайте новый рабочий лист под названием «Ближайшие соседи» и, начиная с A2, работайте постепенно, чтобы заполнить ячейки числами 1–45, чтобы они соответствовали точкам в нашем тестовом наборе. Наши столбцы не будут представлять обучающий набор, как на предыдущих листах. Вместо этого они будут представлять 6 ближайших соседей, начиная с первого, затем второго и так далее. У 1-го ближайшего соседа наименьшее расстояние, для 2-го ближайшего соседа - второе наименьшее расстояние и так далее. Ваш лист должен выглядеть так:

Как и раньше, мы напишем формулу в ячейку B2, которую можно перетащить, чтобы заполнить остальную часть нашей матрицы. Наш подход состоит в том, чтобы определить наименьшее значение в нашей соответствующей строке (2) в таблице расстояний, найти номер столбца для этого значения, а затем вернуть имя столбца, поскольку это даст нам идентификатор значения в обучающем наборе. Для этого мы воспользуемся комбинацией функций Указатель и соответствие. Обратите внимание, что мы можем упростить эту формулу, потому что мы предусмотрительно настроили нашу матрицу расстояний в виде таблицы в Excel, чтобы мы могли легко извлекать заголовки.

=INDEX(Distance_Table[#Headers], MATCH(SMALL(Distance!$B2:$DB2, 1), Distance!2:2, FALSE))

Перетащите эту формулу, чтобы заполнить верхнюю строку матрицы ближайших соседей. Вам нужно будет вручную настроить полужирное значение в функции SMALL (), чтобы обозначить соседа, которого мы ищем. Так, например, чтобы найти второго ближайшего соседа, формула будет выглядеть следующим образом.

=INDEX(Distance_Table[#Headers], MATCH(SMALL(Distance!$B2:$DB2, 2), Distance!2:2, FALSE))

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

На этом этапе я обычно беру минуту, чтобы дважды проверить одну из строк вручную, когда это возможно, просто чтобы убедиться, что мои формулы работают должным образом. В любом масштабе вы захотите использовать автоматическое тестирование, но пока мы делаем его простым.

У нас есть последний шаг: нам нужно определить классификацию каждого из наших ближайших соседей. Мы вернемся к формуле в B2 и изменим ее, чтобы выполнить ВПР для идентификатора в обучающем наборе и вернуть классификацию. Затем мы перетащим его, чтобы заполнить матрицу.

=VLOOKUP(NUMBERVALUE(INDEX(Distance_Table[#Headers], MATCH(SMALL(Distance!$B2:$DB2, 1), Distance!2:2, FALSE))), ‘Training Set’!$A$1:$F$106, 6, FALSE)

Делая шаг назад

Давайте сделаем шаг назад и посмотрим, чего мы достигли. Теперь вы определили для каждой точки в вашем тестовом наборе классификацию 6 ближайших соседей. Вы, вероятно, заметите, что для всех или почти всех ваших точек данных 6 ближайших соседей попадут в одну и ту же классификацию. Это означает, что наш набор данных сильно сгруппирован. В нашем случае наши данные сильно кластеризованы по двум причинам. Во-первых, как мы обсуждали в начале руководства, набор данных разработан таким образом, чтобы с ним было легко работать. Во-вторых, это низкоразмерный набор данных, поскольку мы работаем только с четырьмя измерениями. Когда вы работаете с реальными данными, вы обычно обнаруживаете, что они гораздо менее кластеризованы, особенно по мере увеличения количества измерений. Чем меньше кластеризованы ваши данные, тем больше потребуется обучающий набор для построения полезной модели.

Оптимизация с помощью машинного обучения

Если бы наши данные всегда были так же аккуратно кластеризованы, как набор данных Iris, не было бы необходимости в машинном обучении. Мы просто нашли бы ближайшего соседа, используя нашу формулу, и использовали бы это для определения классификации каждой неизвестной точки данных. Поскольку это обычно не так, машинное обучение помогает нам более точно предсказать классификацию неизвестной точки данных, просматривая сразу несколько соседей. Но на скольких соседей мы должны смотреть? Вот где появляется буква K в K-Nearest Neighbours. K описывает количество соседей, которые мы будем учитывать при прогнозировании классификации неизвестной точки данных.

Слишком мало или слишком много соседей

Интуитивно важно понимать, почему эта проблема сложна. Можно смотреть на слишком мало соседей, а также на слишком много соседей. Тем более, что количество измерений увеличивается, возможно, что ближайший сосед не всегда является правильной классификацией. Изучение слишком малого числа соседей ограничивает объем информации, доступной вашей модели для ее определения. Учет слишком большого количества соседей фактически ухудшит качество информации, которую ваша модель использует в качестве входных данных. Это связано с тем, что по мере того, как появляется больше соседей, вы также вносите шум в данные. Подумайте только - в нашем примере нет смысла рассматривать все 104 соседа! См. Визуальное представление этой концепции ниже.

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

Использование тестового набора

В этом руководстве мы воспользуемся очень простым методом проб и ошибок, чтобы определить оптимальное значение K. Прежде чем мы продолжим, я рекомендую взглянуть на ваш рабочий лист ближайших соседей и сделать предположение, какое может быть наилучшее значение k, просто для удовольствия. Мы скоро узнаем, правы ли вы!

Настройка алгоритма

Алгоритм - это просто набор шагов, которые компьютер повторяет снова и снова в соответствии с определенным набором правил. В этом случае мы прикажем компьютеру попробовать разные значения K, вычислить частоту ошибок для каждого из них, используя наш тестовый набор, а затем в конечном итоге вернуть значение, которое дает наименьшую частоту ошибок. Для этого нам нужно создать новый рабочий лист под названием «Модель KNN». Мы настроим его следующим образом, пометив строки с A4 по A48 цифрами 1–45 для каждой из точек тестовых данных.

Давайте начнем с прогнозируемого значения в столбце B. Нам нужна эта формула для корректировки на основе значения K. В случае, если значение K равно 1, формула проста, мы просто берем ближайшего соседа.

=’Nearest Neighbors’!B2

В случае, если значение K больше 1, мы возьмем наиболее распространенного соседа, который появляется. Если наличие соседей равномерно распределено, например, если 3 из соседей - это Сетоса, а 3 соседа - Вирджиния, когда K = 6, мы примем сторону классификации ближайшего соседа. Формула для K = 2 будет следующей. Мы используем ЕСЛИОШИБКА, потому что эта формула возвращает ошибку, когда есть два соседа, которые встречаются равное количество раз для данного значения K.

=IFERROR(INDEX(‘Nearest Neighbors’!B2:C2,MODE(MATCH(‘Nearest Neighbors’!B2:C2,’Nearest Neighbors’!B2:C2,0))), ‘Nearest Neighbors’!B2)

Вам нужно будет использовать развернутую формулу ниже в ячейке B4, которая позволяет использовать значения K до K = 6 включительно. Не нужно беспокоиться о специфике этой формулы, просто скопируйте и вставьте ее. Кстати, необходимость использования сложных, привередливых и трудных для понимания формул, подобных этим, является одним из ограничений Excel, о котором я говорил ранее. В Python это было бы несложно. Обратите внимание, что эта формула вернет ошибку, если в K нет значения или значение не находится между 1 и 6. Вы должны скопировать эту формулу из ячейки B4 в столбец B.

=IFS($B$1=1, 'Nearest Neighbors'!B2, $B$1=2, IFERROR(INDEX('Nearest Neighbors'!B2:C2,MODE(MATCH('Nearest Neighbors'!B2:C2,'Nearest Neighbors'!B2:C2,0))), 'Nearest Neighbors'!B2), $B$1=3, IFERROR(INDEX('Nearest Neighbors'!B2:D2,MODE(MATCH('Nearest Neighbors'!B2:D2,'Nearest Neighbors'!B2:D2,0))), 'Nearest Neighbors'!B2), $B$1=4, IFERROR(INDEX('Nearest Neighbors'!B2:E2,MODE(MATCH('Nearest Neighbors'!B2:E2,'Nearest Neighbors'!B2:E2,0))), 'Nearest Neighbors'!B2), $B$1=5, IFERROR(INDEX('Nearest Neighbors'!B2:F2,MODE(MATCH('Nearest Neighbors'!B2:F2,'Nearest Neighbors'!B2:F2,0))), 'Nearest Neighbors'!B2),$B$1=6, IFERROR(INDEX('Nearest Neighbors'!B2:G2,MODE(MATCH('Nearest Neighbors'!B2:G2,'Nearest Neighbors'!B2:G2,0))), 'Nearest Neighbors'!B2))

Затем мы хотим получить фактическую известную классификацию каждой тестовой точки, чтобы мы могли определить, правильна наша модель или нет. Для этого мы используем быструю ВПР в столбце C, начиная с ячейки C4 и перетаскивая ее вниз.

=VLOOKUP(A4, ‘Test Set’!$A$1:$F$46, 6, FALSE)

Затем мы создадим формулу в столбце D, чтобы возвращать 1, если прогноз был неверным или ошибочным, и 0, если прогноз был правильным. Вы начнете с ячейки D4 и перетащите формулу вниз.

=IF(B4=C4, 0, 1)

Наконец, мы вычислим коэффициент ошибок, разделив количество ошибок на общее количество точек данных, используя эту формулу в ячейке B2. Условно мы будем форматировать это в процентах.

=SUM(D4:D48)/COUNT(D4:D48)

Запуск алгоритма

Теперь мы готовы запустить наш алгоритм для разных значений K. Поскольку мы тестируем только 6 значений, мы можем сделать это вручную. Но это было бы неинтересно и, что более важно, не масштабировалось. Вам нужно будет включить надстройку Solver для Excel, следуя инструкциям в этой статье, прежде чем мы продолжим.

Теперь перейдите на ленту Данные и нажмите кнопку Решатель. Кнопка решателя выполняет за нас метод проб и ошибок автоматически в соответствии с нашими инструкциями. У вас появится диалоговое окно с параметрами или инструкциями, которые вы хотите настроить, как показано ниже. Мы настроили его таким образом, чтобы минимизировать частоту ошибок при тестировании значений от 1 до 6, проверяя только целые значения.

Excel будет вращаться в течение минуты, и вы можете увидеть, как на экране мигают несколько значений, прежде чем появится это диалоговое окно. Вы должны нажать OK, чтобы сохранить решение для решения.

Интерпретация частоты ошибок и решающего решения

Многие алгоритмы оптимизации имеют несколько решений из-за того, что данные имеют несколько минимумов или максимумов. Так было в моем случае. Фактически, в моем конкретном случае все целочисленные значения от 1 до 6 представляют минимумы с частотой ошибок примерно 2%. Итак, что нам теперь делать?

Несколько вещей проносятся в моей голове. Во-первых, этот тестовый набор не очень хорош. Модель не получила никаких преимуществ по оптимизации от набора тестов, и поэтому я, вероятно, повторно проведу набор тестов и попробую еще раз, чтобы увидеть, получу ли я другие результаты. Я бы также подумал об использовании более сложных методов тестирования, таких как перекрестная проверка.

При таком низком уровне ошибок в моем тестовом наборе я также начинаю беспокоиться о чрезмерной подгонке. Чрезмерная подгонка - это проблема, которая возникает в машинном обучении, когда модель слишком адаптирована к нюансам определенного набора обучающих или тестовых данных. Когда модель чрезмерно подходит, она не так предсказуема или эффективна при обнаружении новых данных в дикой природе. Конечно, с таким набором академических данных мы ожидаем, что уровень ошибок будет довольно низким.

Следующее соображение - какое значение выбрать, если я определил несколько минимумов. Хотя в этом конкретном примере тест оказался неэффективным, обычно я бы выбрал наименьшее количество соседей, которое является минимальным для экономии вычислительных ресурсов. Моя модель будет работать быстрее, если ей придется учитывать меньше соседей. Это не имеет значения для небольшого набора данных, но такие решения позволяют сэкономить значительные ресурсы при масштабировании.

Заключение

Престижность! Вы изучили основы машинного обучения и реализовали алгоритм KNN, не выходя за рамки Excel. Помните, что Excel - это всего лишь инструмент, и что важно то, что вы понимаете интуицию и концепции, благодаря которым этот подход работает. Понимание основ поможет вам глубже погрузиться в науку о данных и машинное обучение и начать разрабатывать свои собственные модели.