2017-02-07 15 views
3

Я тренировал свою модель по алгоритму классификации KNN, и я получал около 97% точности. Тем не менее, я позже заметил, что я пропустил, чтобы нормализовать свои данные, и я нормализовал свои данные и переучивал свою модель, теперь я получаю точность всего лишь 87%. Что может быть причиной? И я должен придерживаться использования данных, которые не нормализованы, или я должен переключиться на нормализованную версию.Разница в точности при нормализации в KNN

+0

Это вопрос для http://stats.stackexchange.com. –

+0

Точность только в наборе учебных материалов сама по себе не является хорошей мерой качества модели. Чтобы ответить на ваши вопросы и вести свою работу, вам также необходимо использовать другой набор данных, чем то, на что вы обучали модель, так называемый набор данных проверки или набор данных тестирования. –

ответ

2

Чтобы ответить на ваш вопрос, вам сначала нужно понять, как работает KNN. Вот простая схема:

http://www.vias.org/tmdatanaleng/img/hl_knn.png

предполагало? это то, что вы пытаетесь классифицировать как красным, так и синим. В этом случае предположим, что вы не нормализировали ни одну из данных. Как вы можете ясно видеть? ближе к более красным точкам, чем синие боты. Поэтому этот пункт считается красным. Предположим также, что правильная метка красная, поэтому это правильное совпадение!

Теперь, чтобы обсудить нормализацию. Нормализация - это способ получения данных, которые немного отличаются друг от друга, но придают ему общее состояние (в вашем случае подумайте о том, как сделать функции более похожими). Предположим в приведенном выше примере, что вы нормализуете функции?, И поэтому выходное значение y становится меньше. Это поставило бы знак вопроса ниже текущей позиции и окружили более синими точками. Поэтому ваш алгот будет обозначать его как синий, и это было бы неправильно. Ой!

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

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

2

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

1

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

В этом случае наблюдается противоположный эффект: KNN получает ИСКУССТВО с масштабированием, по-видимому.

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

Затем вы узнаете, соответствует ли точность KNN или нет.

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

  • Эндрю Нг, в онлайн Coursera курс Machine Learning

  • Tibshirani и Гест, в онлайн-курс Стэнфорда «Статистическое обучение».

+0

Благодарим вас за ответ, я использую k-кратную проверку и пытаюсь обучить данные на разных наборах данных, и даже тогда для каждой складки я получаю подобную точность. –