So sánh hai thuật toán di truyền


9

Tôi có hai triển khai thuật toán di truyền được cho là hành xử tương đương. Tuy nhiên do các hạn chế kỹ thuật không thể giải quyết, đầu ra của chúng không hoàn toàn giống nhau, được đưa ra cùng một đầu vào.

Tuy nhiên, tôi muốn chứng minh rằng không có sự khác biệt đáng kể về hiệu suất.

Tôi có 20 lần chạy với cùng một cấu hình cho mỗi hai thuật toán, sử dụng các hạt số ngẫu nhiên ban đầu khác nhau. Cho mỗi lần chạy và thế hệ các lỗi tối thiểu thể dục của cá nhân tốt nhất trong dân số được ghi nhận. Thuật toán sử dụng một cơ chế bảo tồn ưu tú, do đó, thể lực của cá nhân tốt nhất đang giảm đi một cách đơn điệu. Một lần chạy bao gồm 1000 thế hệ, vì vậy tôi có 1000 giá trị mỗi lần chạy. Tôi không thể lấy thêm dữ liệu, vì các tính toán rất tốn kém.

Tôi nên sử dụng bài kiểm tra nào? Một cách dễ dàng có lẽ là chỉ so sánh lỗi trong các thế hệ cuối cùng (một lần nữa, tôi sẽ sử dụng thử nghiệm nào ở đây)? Nhưng người ta cũng có thể nghĩ về việc so sánh hành vi hội tụ nói chung.


Cũng giống như một sự làm rõ: không phải là trường hợp thuật toán di truyền tìm kiếm ngẫu nhiên một giải pháp, do đó, phân đoạn ban đầu của bất kỳ lần chạy nào không có khả năng tạo ra bất kỳ giải pháp đáng giá nào? Ngoài ra, chính xác những gì bạn có nghĩa là "lỗi tối thiểu trong dân số"? Nếu bạn có nghĩa là sự khác biệt tối thiểu giữa một giá trị thực đã biết và bất kỳ giải pháp nào trong số 1000 giá trị trong một lần chạy, thì đó có phải là dấu hiệu sai lệch về kết quả của lần chạy không? Rốt cuộc, trong thực tế, bạn sẽ chấp nhận giải pháp cuối cùng trong mỗi lần chạy và từ chối mọi thứ đi trước nó, phải không?
whuber

Do lỗi cơ bản tôi có nghĩa là 1 / thể dục, vì vậy tôi đang nói về giá trị của cá nhân tốt nhất trong một thế hệ. Tôi đã ghi lại giá trị thể lực của cá nhân tốt nhất cho mọi thế hệ. Vì vậy, tôi có 1000 * 20 * 2 số, mỗi số tương ứng với "thể lực" của cá nhân tốt nhất trong một thế hệ cụ thể của một lần chạy cụ thể.
NISC

Tôi đoán câu hỏi ban đầu đã bị bệnh gây ra, tôi đã thêm một số giải thích ..
NISC

Câu trả lời:


9

Kiểm tra thuật toán ngẫu nhiên có thể khá khó khăn!

Tôi làm việc trong hệ thống sinh học và có nhiều mô phỏng ngẫu nhiên có sẵn để sử dụng để mô phỏng một mô hình. Kiểm tra các trình giả lập này là khó khăn vì bất kỳ hai nhận thức từ một mô hình duy nhất sẽ khác nhau.

Trong các dsmts, chúng tôi đã tính toán (phân tích) giá trị và phương sai dự kiến ​​của một mô hình cụ thể. Sau đó chúng tôi thực hiện kiểm tra giả thuyết để xác định xem một trình giả lập có khác với sự thật hay không. Phần 3 của userguide cung cấp cho các chi tiết. Về cơ bản, chúng tôi thực hiện kiểm tra t cho các giá trị trung bình và kiểm tra chi bình phương cho phương sai.

Trong trường hợp của bạn, bạn đang so sánh hai trình giả lập, vì vậy bạn chỉ nên sử dụng thử nghiệm t hai mẫu để thay thế.


Làm thế nào tôi có thể sử dụng thông tin từ tất cả các thế hệ?
NISC

Cách dễ nhất là thực hiện nhiều thử nghiệm, tức là thử nghiệm ở mọi thế hệ, sau đó sử dụng hiệu chỉnh Bonferroni hoặc fdr.
csgillespie

Khi so sánh ở mọi thế hệ, tôi sẽ phải kiểm tra ở mức ý nghĩa 1/1000 * 0,05? Điều đó có hơi khắc nghiệt không?
NISC

Đúng, nhưng bạn cũng đang thực hiện nhiều thử nghiệm - không thể có mọi thứ;) Bạn có thể xếp hạng các giá trị p, sử dụng chúng làm hướng dẫn để xem các lỗi có thể xảy ra ở đâu.
csgillespie

1
Thay vì điều chỉnh bonferroni, bạn luôn có thể sử dụng holm bonferroni mạnh hơn. Xem anyswer của tôi ở đây: stats.stackexchange.com/questions/575/ cường
Henrik

4

Có lẽ bạn có thể đo sự khác biệt trung bình giữa hai lần chạy của cùng một thuật toán với sự khác biệt trung bình giữa hai lần chạy từ các thuật toán khác nhau. Không giải quyết vấn đề làm thế nào để đo lường sự khác biệt đó, nhưng có thể là một vấn đề dễ xử lý hơn. Và các giá trị riêng lẻ của chuỗi thời gian sẽ đưa vào tính toán chênh lệch thay vì phải được coi là các điểm dữ liệu riêng lẻ để được đánh giá với nhau (Tôi cũng không nghĩ rằng sự khác biệt cụ thể ở bước thứ n là điều bạn thực sự muốn đưa ra tuyên bố về).

Cập nhật chi tiết liên quan - bạn cũng quan tâm đến tính năng nào của chuỗi thời gian, ngoài lỗi cuối cùng? Tôi đoán bạn thực sự có ba câu hỏi khác nhau để giải quyết:

  1. Điều gì tạo nên sự tương đồng cho bạn, tức là bạn có ý gì khi bạn nói rằng bạn không tin hai phương pháp này khác nhau?
  2. Làm thế nào để bạn định lượng nó - có thể được trả lời sau 1, và
  3. Làm thế nào bạn có thể kiểm tra sự khác biệt đáng kể giữa hai phương pháp của bạn?

Tất cả những gì tôi đã nói trong bài đầu tiên là câu trả lời cho (1) có lẽ không xem xét sự khác biệt cá nhân ở mỗi 1000 thế hệ. Và tôi khuyên bạn nên đưa ra một giá trị vô hướng cho từng chuỗi thời gian hoặc ít nhất là tương tự giữa các chuỗi thời gian. Chỉ sau đó bạn mới có được câu hỏi thống kê thực tế (mà tôi biết ít nhất về cả ba điểm, nhưng tôi được khuyên nên sử dụng bài kiểm tra t cặp trong một câu hỏi tương tự tôi vừa hỏi, khi có giá trị vô hướng cho mỗi phần tử).


Nghe có vẻ hợp lý, còn chi tiết nào nữa không?
NISC
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.