2010-02-07 19 views
11

Tôi đang cố viết chương trình dự báo thời tiết bằng cách sử dụng backpropagation. Tôi là người mới bắt đầu trong lĩnh vực này. Tôi có dữ liệu lịch sử với các thông số khác nhau như nhiệt độ, độ ẩm, tốc độ gió, lượng mưa, v.v.Dự báo thời tiết sử dụng mạng thần kinh

Tôi nhầm lẫn về cách cung cấp dữ liệu này cho lớp đầu vào. Mỗi nút đầu vào có được cung cấp toàn bộ dữ liệu cho một ngày nhất định hay tôi cần phải có một mạng khác nhau cho mỗi thông số? Tôi cũng nhầm lẫn về lớp đầu ra.

Trả lời

1

Dường như với tôi, cây quyết định đó có thể là giải pháp tốt hơn cho vấn đề này so với mạng thần kinh. Here là mô tả về cách cây quyết định hoạt động. Ngoài ra, có sẵn phần mềm có triển khai các phân loại khác nhau bao gồm cả mạng nơron. Tôi đã làm việc với Weka và nó hoạt động rất tốt. Ngoài ra còn có các thư viện mà bạn có thể sử dụng để sử dụng chức năng của Weka với các ngôn ngữ lập trình như Java và C#. Nếu bạn quyết định làm việc với Weka, hãy đảm bảo bạn tự làm quen với định dạng .arff được mô tả here.

+0

Nếu bạn quan tâm đến việc sử dụng Weka, một tùy chọn có thể là thử Knime, gói luồng công việc dựa trên nhật thực bao gồm nguyên thủy Weka. –

+0

Tôi tò mò về cách bạn áp dụng cây quyết định cho vấn đề này. – brian

+0

Rừng ngẫu nhiên thú vị – ron

2

Trong lớp đầu vào có X nút riêng biệt cho từng thứ nguyên (thời tiết, gió, vv) của dữ liệu đầu vào, trong đó X là số ngày cần xem lại (giả sử 4-7). Sau đó, bạn nên bình thường hóa từng thứ nguyên đầu vào trong một phạm vi phù hợp, giả sử [-1.0, 1.0].

Có lớp "ẩn" thứ hai được kết nối hoàn toàn với lớp đầu tiên (và cũng với nút "thiên vị" đầu vào cố định 1.0 để phục vụ như điểm cố định). Sẽ có ít nút hơn ở đây trong lớp đầu vào, nhưng đó chỉ là một quy tắc nhỏ, bạn có thể cần phải thử nghiệm.

Lớp cuối cùng là lớp đầu ra của bạn được kết nối hoàn toàn với lớp thứ hai (và cũng giảm độ lệch). Có một nơron đầu ra riêng biệt cho mỗi chiều.

Đừng quên đào tạo với các giá trị chuẩn hóa trên cả đầu vào và đầu ra. Vì đây là chuỗi thời gian, bạn có thể không cần phải ngẫu nhiên hóa thứ tự dữ liệu đào tạo nhưng cho chúng ăn theo thời gian - mạng của bạn cũng sẽ tìm hiểu các mối quan hệ thời gian (với may mắn :)

(Cũng lưu ý rằng có một phương pháp gọi là "thời gian lan truyền ngược" được điều chỉnh cho dữ liệu chuỗi thời gian)

+0

Có đúng là giả sử các biến liên quan hơn có bao gồm chính xác hơn không? tức là sử dụng {Temp, Pressure, Humidity}, tốt hơn {Rainfall, Windspeed, UV Index}? –

+0

@Aaron: Tốt hơn hết là nên sử dụng nhiều biến có liên quan hơn, tuy nhiên nếu có mối quan hệ mạnh, mạng cũng có thể tìm hiểu bằng cách sử dụng các biến khác. Cũng lưu ý rằng việc chuyển đổi một số dữ liệu có thể được yêu cầu (ví dụ như log-scale, vv) cho mạng để nghiên cứu tốt hơn. – ron

1

tôi đã sử dụng (và riêng) cuốn sách này:. Introduction to Neural Networks with Java

tôi tìm thấy nó một tài liệu tham khảo hữu ích. Nó bao gồm khá nhiều các chủ đề về NN, bao gồm cả backpropogation.