R의 난수 집합 시드 (N) [중복]


37

이 질문에는 이미 답변이 있습니다.

나는 set.seed()의사 난수 생성을 위해 R에서 사용한다는 것을 알고 있습니다. 또한 같은 숫자를 사용하면 set.seed(123)결과를 재현 할 수 있습니다.

그러나 내가 얻지 못하는 것은 값 자체가 의미하는 것입니다. 나는 몇 가지 기능을 재생, 일부 사용하고 set.seed(1)또는 set.seed(300)set.seed(12345). 그 숫자는 무엇을 의미합니까? 그리고 언제 다른 것을 사용해야합니까?

예를 들어, 제가 연구하고있는 책 set.seed(12345)에서 의사 결정 트리에 대한 훈련 세트를 만들 때 사용 합니다. 그런 다음 다른 장에서는 set.seed(300)랜덤 포레스트를 만드는 데 사용 합니다.

그냥 숫자를 얻지 마십시오.


6
도움이 되나요? stackoverflow.com/questions/14684437/… 또한 R 내의? set.seed ()는 꽤 좋은 정보를 제공합니다.
doug.numbers

6
시드를 사용하는 주요 요점은 특정 '무작위'숫자 시퀀스를 재현 할 수있는 것입니다. 일반적으로, 그렇게 할 필요가 없다면 씨앗을 설정 하지 않아도 됩니다. 시드 자체는 난수 생성기에 '시작 위치'를 알려주는 방법 외에는 고유 한 의미가 없습니다. PIN 번호와 은행 계좌의 관계와 비슷하다고 생각할 수 있습니다. PIN을이 숫자의 긴 문자열 (계좌 번호)와 관련, 그러나 그것은 본질적으로 해석 가능한 양 (가 아니다됩니다 해석이 있지만, 설정, 당신은 그것을 무시).
Glen_b

4
기록을 위해 42는 항상 올바른 씨앗입니다
Repmat

단지 주석 : 나는 무작위 생성기 만 설정하는 것이 좋습니다 (i) 스크립트를 디버깅하거나 특정 오류를 찾는 등 또는 (ii) 결과를 보내거나 게시하여 확인할 수 있도록하는 것이 좋습니다.
AADF

답변:


38

선택한 시드 번호는 일련의 난수 생성에 사용되는 시작점이므로 동일한 시드 번호로 동일한 결과를 얻을 수 있습니다 (동일한 의사 난수 생성기를 사용하는 경우). 두 번째 질문과 관련하여 Stata의 해당 기능에 대한 설명에서이 짧은 스 니펫이 도움이 될 수 있습니다.

우리는 이것을 충분히 강조 할 수 없습니다 : 씨앗을 너무 자주 설정하지 마십시오. 이것이 왜 그렇게 나쁜 생각인지 보려면 제한 사례를 고려하십시오. 시드를 설정하고 하나의 의사 난수를 그리고 시드를 재설정하고 다시 그립니다. 당신이 얻는 의사 난수는 수학 함수를 통해 실행되는 씨앗에 지나지 않습니다. 선택한 씨앗이 무작위로 통과하지 않으면 얻은 결과는 무작위로 전달되지 않습니다. 이미 그러한 숫자가 있다면 의사 난수 생성기를 사용하는 것이 왜 귀찮습니까?

http://www.stata.com/manuals13/rsetseed.pdf


14
Stata가 다음과 같은 흥미로운 문서를 가지고 있다는 사실을 알고있는 사람 : "다른 사람들은 숫자가 충분한 지 알아 내기 위해 임의의 숫자를 만들려고 노력합니다. 결과는 무작위 여야합니다. 이것은 음식을 떨어 뜨리는 5 초 규칙의 변형이며, 우리는 인정합니다 이 규칙을 모두 사용하는 것 "
hessian을 퇴화시키다

4

간단히 말해서 숫자 자체는 실제로 아무 의미가 없습니다! 다른 사람의 코드를보고있는 경우 (위의 두 예제에서와 같이) 숫자는 함수의 기능을 변경하지 않습니다. 특정 기능에 대한 "좋은"숫자도 없습니다. 저자의 선택에 달려 있습니다.

또한 코드에서 시드를 한 번만 설정하면 원하는 숫자를 선택할 수 있습니다. 약간주의해야 할 유일한 점은 임의의 숫자를 사용하는 다른 함수와 인터페이스하는 경우 분명하지 않은 시드를 선택하는 것이 좋습니다 (따라서 동일한 시드를 사용할 가능성이 적습니다) ).

그러나 Corcovado가 실제로 지적한 것처럼 일부 응용 프로그램의 경우 선택에 신중해야합니다. 수학적으로 많은 수의 의사 난수 생성 숫자가 필요한 경우 선택한 숫자에 패턴이있을 수 없습니다.


1

R의 set.seed () 함수는 (임의의) 정수 인수를 취합니다. 따라서 1 또는 123 또는 300 또는 12345와 같은 인수를 사용하여 재현 가능한 난수를 얻을 수 있습니다.

또한 TeachingDemos 패키지에서 char2seed 함수를 사용하면 문자열을 기반으로 시드를 설정할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.