Số ngẫu nhiên - Set.seed (N) trong R [trùng lặp]


37

Câu hỏi này đã có câu trả lời ở đây:

Tôi nhận ra rằng người ta sử dụng set.seed()trong R để tạo số giả ngẫu nhiên. Tôi cũng nhận ra rằng sử dụng cùng một số, như set.seed(123)bảo hiểm bạn có thể tái tạo kết quả.

Nhưng những gì tôi không nhận được là ý nghĩa của các giá trị. Tôi đang chơi với một số chức năng, và một số sử dụng set.seed(1)hoặc set.seed(300)hoặc set.seed(12345). Con số đó có nghĩa là gì (nếu có gì) - và khi nào tôi nên sử dụng một số khác.

Ví dụ, trong một cuốn sách tôi đang thực hiện - họ sử dụng set.seed(12345)khi tạo tập huấn luyện cho cây quyết định. Sau đó, trong một chương khác, họ đang sử dụng set.seed(300)để tạo một Khu rừng ngẫu nhiên.

Chỉ không nhận được số.


6
không giúp đỡ à? stackoverflow.com/questions/14684437/ Ngoài ra? set.seed () trong R cung cấp thông tin khá tốt.
doug.numbers

6
Điểm chính của việc sử dụng hạt giống là có thể tái tạo một chuỗi các số 'ngẫu nhiên' cụ thể. Nói chung, nếu bạn không cần phải làm điều đó, bạn sẽ không đặt hạt giống. Hạt giống không mang ý nghĩa vốn có ngoại trừ đó là cách nói với trình tạo số ngẫu nhiên 'bắt đầu từ đâu'. Bạn có thể nghĩ về nó một chút giống như mối quan hệ giữa số PIN và tài khoản ngân hàng của bạn. Mã PIN được liên kết với một chuỗi số dài (số tài khoản của bạn), nhưng nó không phải là một số lượng có thể hiểu được (có một cách hiểu, nhưng khi cài đặt nó, bạn bỏ qua điều đó).
Glen_b -Reinstate Monica

4
Đối với hồ sơ, 42 luôn là hạt giống phù hợp
Repmat

Chỉ cần một nhận xét: Tôi khuyên bạn chỉ nên đặt trình tạo ngẫu nhiên (i) để gỡ lỗi tập lệnh, để tìm một số lỗi cụ thể, v.v. hoặc (ii) để gửi / xuất bản kết quả để có thể kiểm tra chúng.
AADF

Câu trả lời:


38

Số hạt giống bạn chọn là điểm bắt đầu được sử dụng trong việc tạo ra một chuỗi các số ngẫu nhiên, đó là lý do (với điều kiện bạn sử dụng cùng một trình tạo số giả ngẫu nhiên), bạn sẽ nhận được cùng một kết quả với cùng số hạt giống. Theo như câu hỏi thứ hai của bạn, đoạn trích ngắn này từ phần mô tả chức năng tương đương trong Stata có thể hữu ích:

Chúng ta không thể nhấn mạnh điều này đủ: Đừng đặt hạt giống quá thường xuyên. Để xem lý do tại sao đây là một ý tưởng tồi, hãy xem xét trường hợp giới hạn: Bạn đặt hạt giống, vẽ một số giả ngẫu nhiên, đặt lại hạt giống, vẽ lại, và tiếp tục. Số giả ngẫu nhiên bạn có được sẽ không có gì nhiều hơn những hạt giống bạn chạy qua một hàm toán học. Kết quả bạn nhận được sẽ không vượt qua ngẫu nhiên trừ khi các hạt bạn chọn vượt qua ngẫu nhiên. Nếu bạn đã có những con số như vậy, tại sao bạn thậm chí còn bận tâm sử dụng trình tạo số giả ngẫu nhiên?

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


15
Ai biết Stata có tài liệu thú vị như vậy: "Những người khác cố gắng tạo một số ngẫu nhiên, cho biết nếu chúng bao gồm đủ chữ số, kết quả chỉ là ngẫu nhiên. Đây là một biến thể của quy tắc năm giây đối với thực phẩm bị bỏ rơi và chúng tôi thừa nhận sử dụng cả hai quy tắc này "
hessian thoái hóa

4

Nói tóm lại, những con số không thực sự có ý nghĩa gì cả! Nếu bạn đang xem mã của người khác (như trong hai ví dụ bạn đã nêu ở trên), các số không làm thay đổi chức năng của hàm; không có số "tốt" cho các chức năng cụ thể. Đó chỉ là sự lựa chọn của các tác giả.

Hơn nữa, nếu bạn chỉ đặt hạt giống một lần trong mã của mình, thì bạn có thể chọn bất kỳ số nào bạn muốn. Điều duy nhất bạn cần cẩn thận một chút là, nếu bạn giao tiếp với bất kỳ chức năng nào khác cũng sử dụng các số ngẫu nhiên, thì tốt nhất là chọn một hạt giống không rõ ràng (vì vậy cả hai bạn sẽ ít sử dụng cùng một hạt giống ).

Tuy nhiên, như Corcovado thực sự chỉ ra, đối với một số ứng dụng, bạn cần thực sự cẩn thận về lựa chọn bạn đưa ra. Nếu về mặt toán học, bạn yêu cầu một số số giả ngẫu nhiên được tạo, thì không thể có mẫu cho các số bạn chọn.


1

Hàm set.seed () trong R nhận một đối số nguyên (tùy ý). Vì vậy, chúng ta có thể lấy bất kỳ đối số nào, giả sử, 1 hoặc 123 hoặc 300 hoặc 12345 để lấy các số ngẫu nhiên có thể lặp lại.

Ngoài ra, trong góiTeachingDemos, hàm char2seed cho phép người dùng đặt hạt giống dựa trên chuỗi ký tự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.