Разные значения, подгоняя усиленное дерево дважды

Я использую adabag в R-пакете для подгонки расширенных деревьев к (большому) набору данных (140 наблюдений с 3 845 предикторами).

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

функция, которая возвращает точность с учетом прогнозируемых значений и истинных значений тестового набора.

    err<-function(pred_d, test_d)
{
  abs.acc<-sum(pred_d==test_d)
  rel.acc<-abs.acc/length(test_d)

  v<-c(abs.acc,rel.acc)

  return(v)
}

Новое редактирование (9.1.2017): важно после вопроса вышеупомянутого контекста.

Насколько я вижу, я не использую никаких "объектов псевдослучайности" (таких как генерация случайных чисел и т. Д.) В своем коде, потому что я в основном подгоняю деревья (используя r-package rpart) и повышенные деревья (использую adabag r-package) к большому набору данных. Можете ли вы объяснить мне, куда входит "псевдослучайность", когда я выполняю свой код?

Редактировать 1: Подобное явление происходит также с деревом (используя R-пакет rpart).

Редактировать 2: Подобное явление не произошло с деревьями (используя rpart) на наборе данных радужной оболочки.

1 ответ

Решение

Нет никаких причин, по которым вы должны ожидать того же результата, если вы не установили свое семя (с set.seed()).

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

Это вездесуще в статистике; это влияет на все вероятностные модели и процессы на всех языках.

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

https://en.wikipedia.org/wiki/Random_seed

http://www.grasshopper3d.com/forum/topics/what-are-random-seed-values

Другие вопросы по тегам