к-NN против Дерева Решений
Я всегда нахожу картину является лучшим способом, чтобы получить интуиции алгоритма.Целевая функция, которую вы бы предложить дать начало набора данных немного, как это:
![alt text](https://i.stack.imgur.com/RLbCr.png)
Если функция разделения данных является x1 - x2 = 0. Проблема состоит в том, что, как правило, деревья решений только функции одной переменной в узлах, поэтому функции решения в узлах выравниваются по оси. Я изображение дерево решений узнали об этом наборе данных будет делать что-то вроде этого:
![alt text](https://i.stack.imgur.com/xyVck.png)
Надеюсь, вы получите представление, очевидно, вы можете приблизиться к оптимальной границы решения, делая это с достаточным количеством узлов в дереве решений, но это означает, что вы рискуете перегрузить данные.
Фактически, я сказал, что деревья решений обычно используют одиночные переменные функции в узлах, но есть другой подход, описанный в вопросе StackOverflow о multivariate decision trees (который я не смог ответить).
Кстати, лучший классификатор для такого рода данных будет линейный классификатор, возможно логистическую регрессию, которая бы найти оптимальные граничные
решение, действие к в к-NN
Лучшее описание, которое я могу дать для k в ближайшем сосете k, состоит в том, что высокие значения k выравнивают границу решения. Также не так, что более высокий k всегда лучше, чем более низкий.
Чтобы подумать о k-NN, нам нужно немного больше сложного набора данных. Для к = 1, модель K-NN может принимать решения немного так:
![alt text](https://i.stack.imgur.com/sUzKp.png)
Если мы увеличили значение к, то решения будут затронуты в больших окрестностях точек и поэтому решение границы станут более плавными. В частности, эти маленькие красные и синие острова будут перегружены окружающими точками данных:
![alt text](https://i.stack.imgur.com/qWKJU.png)
ли с помощью высокой K лучше, зависит от уровня шума на наборе данных. Были ли эти маленькие острова действительно важными, и мы узнали слишком простую модель, которая не очень хорошо подходила к данным, или они были просто шумными, и мы избежали переобучения?
Практическая перспектива
К сожалению, учитывая некоторые большие, сложные, в реальном мире набор данных вы, вероятно, не очень хорошей основой для принятия решения, какой алгоритм будет работать лучше (если не опираться на предыдущая работа над теми же или аналогичными данными). То, что большинство людей делает, это тщательно сегментировать данные в процессе обучения, настройке параметров и наборах тестов, а затем запускать столько алгоритмов, сколько они могут себе представить. Вы также можете обнаружить, что определенная ситуация определяет некоторые свойства, которые должен иметь алгоритм (быстрый, инкрементный, вероятностный и т. Д.)
Отличный Answesr, спасибо много топа. – Kevin