2014-02-13 3 views
4

1) Как мы знаем, KNN не выполняет вычислений на этапе обучения, а откладывает все вычисления для классификации, из-за которых мы называем это ленивым учеником. Это займет больше времени в классификации, чем обучение, однако я нашел это предположение почти противоположным относительно weka. В котором KNN занимает больше времени на тренировках, чем тестирование.Почему реализация KNN в weka работает быстрее?

Почему и как KNN в weka выполняют намного быстрее в классификации, тогда как в целом он должен выполнять медленнее?

Это также приводит к ошибкам вычислений?

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

ответ

4

Ответ на вопрос 1

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

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

Примерами таких структур данных являются KD tree и SR Tree.

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

Ответ на вопрос 2

(я не уверен, если вы обратитесь к предсказанием производительности или производительности, как в скорости до. Так как актуальны, я обращусь они оба в моем ответе.)

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

Другой способ улучшения Прогнозирование производительности предназначено для выполнения выбора функции. Использование Mutual Information или какой-либо другой одномерной ассоциации (например, Pearson correlation для непрерывных переменных) является самым простым и простым способом для выбора функций. Следует отметить, что сокращение числа переменных может предложить значительное ускорение с точки зрения времени вычислений.

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

+0

Также неясно, что означает фаза обучения, отличная от построения структуры данных соседства.Так как это ленивый алгоритм обучения, как комментарии OP, то нет набора параметров, которые бы соответствовали или откалибровали на любом этапе обучения. Вы просто вычисляете вещи о любом входящем наблюдении (хотите ли вы назвать это «тренировочным» наблюдением или нет) против набора данных, составляющих классификатор. – ely

+0

@George, спасибо за то, что вы пропустили. Можете ли вы немного подробнее рассказать о своем втором ответе, так как одним из способов является удаление нерелевантной функции путем выбора функции с помощью повышения информации и т. Д., Это также может улучшить производительность. Где-то я прочитал, чтобы умножить вес (TF-IDF), который также может сделать функцию с большим весом более важной. Thanx заранее :) –

+0

@EMS хорошо то, что меня больше волнует, это K-Neighbors, даже если мы предположим, что он реализует эффективную структуру данных внутри, как сказал Джордж, даже тогда, в расчете вычисления расстояния для 10 (K = 10) соседей должно занимать больше времени, чем установка функции маржи (SVM), но я заметил, что оба они почти одинаковы. Если мы не увидим, что происходит, мы не можем определить своих соседей –

Смежные вопросы