2013-09-27 4 views
0

Я выполняю kNN-предсказание числовой переменной (регрессия knn или среднеарифметическое значение). Я использую эвклидовое расстояние и 1/расстояние в качестве весов, но я не знаю, как это применяется. и у меня есть вопрос:Что такое весовая функция в weka IBk?

Как точно выполняется взвешивание в WEKA IBk для регрессии? Является ли это простой функцией, например, расстоянием или чем-то более сложным? Я посмотрел в исходном коде, но ничего не мог понять. И как точно определяется расстояние - это евклидова или какая-то модификация? Что что кодовые средства (это линии 867 и 868 из исходного кода ИКА):

distances[i] = distances[i]*distances[i]; 
distances[i] = Math.sqrt(distances[i]/m_NumAttributesUsed); 

ответ

1

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

Для численной регрессии в Weka с IBk взвешивание выполняется, как показано в ссылке method.

Я кратко изложил шаги в следующем псевдокоде.

Шаг 0: предсказания = 0, всего = 0

Шаг 1:

Для каждого из K-соседей:

  1. рассчитать расстояние до соседа i

  2. Вычислить вес: вес = 1/(расстояние)

  3. Обновления предсказания: предсказание = предсказания + сосед я свой класс значение * вес

  4. Обновление всего: общие = общие + Вес

Шаг 2: предсказание = предсказание/общее

Шаг 3: возвращение (предсказание)

+0

Да, это должно быть! Это стандартный алгоритм. Я пытаюсь воспроизвести метод в чистом KNIME (без узлов WEKA), чтобы добавить некоторые функции. Но я не могу получить тот же результат, что и IBk !!! Я вычислил его вручную, и снова он не работает. Я не уверен, но на строках 867 и 868 есть код, который каким-то образом изменяет расстояние. Это матер? Есть идеи?! –

+0

Я не могу понять, почему, но похоже, что они включают количество используемых атрибутов в меру расстояния. Вы пробовали читать бумагу, на которой основана IBk? Его можно найти здесь (http://sci2s.ugr.es/pr/pdf/1991-Aha-ML.pdf). Так же, как побочная заметка, ваш первоначальный вопрос касался взвешивания. Я рад попытаться помочь, но если вас беспокоят конкретные строки кода, которые вы указали, вы можете получить более полезные ответы, если вы упомянули их в вопросе! – Walter

+0

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

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