2015-12-11 1 views
3

Рассмотрит эту регрессионную проблему со следующим обучающим:Постоянно получать различные предсказания для небольшого набора данных при использовании Knn (к = 2) в R

enter image description here

Я хочу, чтобы предсказать 2-ближайший сосед предсказание для каждого объекта - однако я постоянно получаю разные предсказания каждый раз, когда я вызываю функцию knn. Если это так? Вот код, я использую:

library(class) 
test <- train <- matrix(c(-1, 0, 2, 3),,1) 
cl <- c(0, 1, 2, 1) 
knn(train, test, cl, k=2) 

Выход:

> knn(train, test, cl, k=2) 
[1] 1 1 2 2 
Levels: 0 1 2 
> knn(train, test, cl, k=2) 
[1] 0 0 1 2 
Levels: 0 1 2 
> knn(train, test, cl, k=2) 
[1] 1 1 1 2 
Levels: 0 1 2 
> knn(train, test, cl, k=2) 
[1] 0 0 1 2 
Levels: 0 1 2 

бы реально оценить какие-либо разъяснения.

ответ

0

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

+0

Извините, теперь вы можете отредактировать его действие. Я устанавливаю k = 3 и все равно получаю разные результаты, я не уверен, что не так – v0vk

+0

'k = 3' не поможет: вы всегда получите' 1' за последние две строки, потому что единственная метка, которая встречается дважды (и таким образом, может выиграть сразу) составляет '1', и только последние две строки достаточно близки, чтобы выбрать оба. Первые две строки всегда будут иметь 3 разных ярлыка и, таким образом, всегда будут случайным выбором среди них. –

4

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

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

+0

Ах, хорошо, это имеет смысл. Я работаю над упражнением в своей книге, в котором рассказывается, как построить предсказание 2-ближайшего соседа для каждого объекта против объекта (в R). Он не предоставляет решений, но был бы ли я прав, предполагая, что для этого конкретного сценария будет несколько правильных участков? – v0vk

+0

Ну, все графики правильные;). Но, да, на таком небольшом тренировочном наборе предсказание будет меняться для каждого вызова, так как для 'k = 2' будут связи, поэтому вы получите разные сюжеты. –

+0

Прохладный. Из любопытства, если я буду делать это на бумаге вместо R, мои результаты все равно будут варьироваться в широких пределах? Смогу ли я по-прежнему собирать ярлыки? Машинное обучение - это не то, что я изучаю, поэтому я не совсем знаком с алгоритмом (но пока), но я планирую изучить его немного глубже завтра. – v0vk

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