Вопросы по некоторым алгоритмам интеллектуального анализа данных - PullRequest
3 голосов
/ 03 ноября 2010

Недавно я изучил k-ближайшего соседа и деревья решений, и мне довольно любопытно различие между ними, т. Е. Для такой задачи, как разделение целевой функции: «вернуть 1, если x2> x1, вернуть 0 в противном случае», затем выбратьБлижайший Сосед был бы хорош здесь, так как дерево решений будет включать слишком много расщеплений.Поэтому я просто рассматриваю, в каких случаях выбор дерева решений будет более подходящим, чем k-ближайший сосед?

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

Заранее спасибо!

Ответы [ 2 ]

10 голосов
/ 03 ноября 2010

k-NN против дерева решений

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

alt text

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

alt text

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

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

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

Эффект k в к-нн

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

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

alt text

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

alt text

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

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

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

0 голосов
/ 03 ноября 2010

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

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

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

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

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

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

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

...