3

Недавно я изучил k-ближайший сосед и деревья принятия решений, и мне очень интересно узнать о различии между ними, т. Е. Для задачи, как разделение целевой функции «return 1 if x2> x1, return 0 в противном случае ", тогда выбор Nearest Neighbor был бы хорош здесь, так как дерево решений вызывает слишком много разрывов. Итак, я просто рассматриваю вопрос о том, в каких случаях чешуя дерево решений было бы более подходящим, чем ближайший сосед?Вопросы по некоторым алгоритмам интеллектуального анализа данных

Другой вопрос касается только ближайшего соседа K, я понимаю, что когда K = 1, то это просто базовая классификация (классифицировать экземпляр класса ближнего соседа). Может ли кто-нибудь дать мне идея о том, какая задача классификации, будет ли 3-ближайший сосед определенно outperfom 1-ближайший neightbour классификатор?

Заранее благодарен!

ответ

10

к-NN против Дерева Решений

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

alt text

Если функция разделения данных является x1 - x2 = 0. Проблема состоит в том, что, как правило, деревья решений только функции одной переменной в узлах, поэтому функции решения в узлах выравниваются по оси. Я изображение дерево решений узнали об этом наборе данных будет делать что-то вроде этого:

alt text

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

Фактически, я сказал, что деревья решений обычно используют одиночные переменные функции в узлах, но есть другой подход, описанный в вопросе StackOverflow о multivariate decision trees (который я не смог ответить).

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

решение, действие к в к-NN

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

Чтобы подумать о k-NN, нам нужно немного больше сложного набора данных. Для к = 1, модель K-NN может принимать решения немного так:

alt text

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

alt text

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

Практическая перспектива

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

+0

Отличный Answesr, спасибо много топа. – Kevin

0

Ответ на второй вопрос.

(я предполагаю, что определенно опережать вы имеете в виду всегда опережать.)

Я не уверен, что это возможно - потому, что, учитывая набор данных и алгоритм Knn, для каждого экземпляра в котором предсказание лучше с k = 3 (против k = 1), легко перевернуть этот результат, изменив либо настройку модели, либо изменение описания данных (в частности, плотность данных в пространстве решений).

Вот простой пример. Несмотря на то, что kNN - это, пожалуй, самый простой алгоритм машинного обучения, есть еще несколько важных деталей конфигурации за пределами вычисления матрицы расстояния, а затем вычисление минимальных расстояний против него. Одним из этих параметров конфигурации является весовое значение - i.e., Вклад каждого соседнего пункта в взвешенное взвешенное значение. Некоторые общие весовые функции являются гауссовыми и обратными. Например, одной общей весовой функцией является «функция вычитания», которая для каждого соседа просто вычитает расстояние от константы при условии, что расстояние больше постоянной. В то время как эта функция прекрасно избегает перенапряжения точек данных, очень близких к неизвестной точке (точка, значение которой вы пытаетесь предсказать), вес точки приближается к нулю, так как его расстояние от неизвестной точки приближается к значению выбранной константы. Другими словами, предсказания с использованием k = 3 могут быть намного лучше, чем k = 1, используя эту функцию, но они также могут быть почти одинаковыми, если две из трех соседних точек находятся достаточно далеко, так что их вес приближается к нулю.

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

Конечно, то же самое относится и к другим параметрам первичной конфигурации в алгоритме Knn -. Например, показатель расстояния, размер масштабирования, распределения вероятностей и т.д.

Хороший вопрос, кстати.