0% found this document useful (0 votes)
3 views

Weather prediction using Recurrent Neural Network

Uploaded by

sqqqqs78
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Weather prediction using Recurrent Neural Network

Uploaded by

sqqqqs78
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

‫‪Weather Prediction Using Recurrent Neural Network‬‬

‫‪Dr. Tirthajyoti Sarkar, Fremont, CA‬‬

‫در این ‪ ، Notebook‬ما نشان می دهیم که چگونه روند طوالنی مدت پارامترهای آب و هوا (رطوبت‪ ،‬دما‪،‬‬
‫فشار اتمسفر و ‪ ) ...‬را می توان با دقت مناسب با استفاده از شبکه عصبی بازگشتی ساده (‪ )RNN‬پیش بینی‬
‫کرد‪ .‬ما حتی نیازی به استفاده از ماژول حافظه پیچیده مانند ‪ GRU‬یا ‪ LSTM‬برای این کار نداریم‪ .‬به نظر‬
‫میرسد یک مدل مبتنی بر ‪ RNN‬یک الیه ساده برای پیشبینی روندهای بلندمدت از دادههای آموزشی محدود‬
‫به طرز قابل توجهی کافی به نظر میرسد‪.‬‬

‫این تقریباً دلیلی است بر چیزی که ‪ Andrej Karpathy‬به نام (اثربخشی غیرمعمول شبکه های عصبی‬
‫مکرر) تعریف کرده است‪.‬‬

‫داده ها (‪: )Dataset‬‬

‫مجموعه داده ها شامل پارامترهای آب و هوا برمبنای تاریخ (دما‪ ،‬فشار‪ ،‬رطوبت نسبی) برای شهرهای بزرگ‬
‫آمریکای شمالی و دیگر شهرهای سراسر جهان در یک دوره زمانی طوالنی از ‪ 2012‬تا ‪ 2017‬است‪ .‬داده ها‬
‫ساعتی ثبت میشوند و در مجموع بیش از ‪ 45000‬داده را ارائه میدهند‪.‬‬

‫با تالش برای انجام یک پیشبینی سری زمانی‪ ،‬به طور ضمنی فرض میکنیم که الگوی آبوهوای گذشته‬
‫شاخص خوبی از آینده است‪.‬‬

‫برای این تجزیه و تحلیل‪ ،‬ما فقط بر روی داده های شهر سانفرانسیسکو تمرکز می کنیم‪.‬‬

‫مجموعه داده کامل را می توان در اینجا یافت‪:‬‬

‫‪https://www.kaggle.com/selfishgene/historical-hourly-weather-data‬‬
‫بارگذاری و پیش پردازش داده ها (‪:)Data loading and pre-processing‬‬

‫مقادیر (‪ )NaN‬زیادی در مجموعه داده وجود دارد‪.‬‬

‫چند (‪ )NaN‬در مجموعه داده رطوبت وجود دارد؟ ‪942‬‬

‫چند (‪ )NaN‬در مجموعه داده دما وجود دارد؟ ‪793‬‬

‫چند (‪ )NaN‬در مجموعه داده فشار وجود دارد؟ ‪815‬‬

‫انتخاب نقطه ای در سری زمانی برای داده های آموزشی( ‪Choosing a point in the time-series for‬‬
‫‪:)training data‬‬

‫ما در اینجا ‪ Tp=7000‬را انتخاب می کنیم که به این معنی است که ‪ RNN‬را فقط با ‪ 7000‬داده اول‬
‫آموزش می دهیم و سپس اجازه می دهیم روند بلندمدت را پیش بینی کند (برای ‪ 35000‬داده بعدی یا بیشتر)‪.‬‬
‫در مقایسه با تعداد امتیازات (مقادیر) آزمون‪ ،‬داده های آموزشی زیادی نیست‪ ،‬اینطور است؟‬

‫برای پرکردن مقادیر (‪ ، )NaN‬نقاط داده را درونیابی کنید (تقریب بزنید)‬

‫ما برخی از مقادیر (‪ )NaN‬را در مجموعه داده مشاهده کردیم‪ .‬میتوانیم این نقاط را به سادگی حذف کنیم‪ .‬اما‬
‫با فرض اینکه تغییرات پارامترها بسیار ناگهانی نباشند‪ ،‬میتوانیم سعی کنیم آنها را با استفاده از تقریب خطی‬
‫ساده پر کنیم‪.‬‬

‫تقسیمات آموزشی و آزمایشی در «‪:)Train and test splits on the Tp=7000(»Tp=7000‬‬

‫اندازه جاسازی یا مرحله را انتخاب کنید‪:‬‬

‫مدل ‪ RNN‬به یک مقدار گام نیاز دارد که شامل ‪ n‬عدد عنصر به عنوان یک دنباله ورودی باشد‪.‬‬

‫}‪Suppose x = {1,2,3,4,5,6,7,8,9,10‬‬
‫در اینجا‪ )step=8( ،‬را انتخاب می کنیم‪ .‬در ‪ RNN‬پیچیده تر و به ویژه برای پردازش متن‪ ،‬به آن (اندازه گام‬
‫یا اندازه جاگذاری) نیز می گویند‪ .‬ایده اینجا این است که ما فرض می کنیم که داده های آب و هوای ‪ 8‬ساعته‬
‫می تواند به طور موثر داده های ساعت ‪ 9‬را پیش بینی کند و غیره‪.‬‬

‫اضافه کردن عناصر مرحله به آموزش و تست ( ‪:)add step elements into train and test‬‬

‫تبدیل به یک آرایه چند بعدی (‪:)Converting to a multi-dimensional array‬‬

‫در مرحله بعد‪ ،‬داده های آزمون و آموزش را به ماتریس با مقدار گام تبدیل می کنیم‪ ،‬همانطور که در مثال باال‬
‫نشان داده شده است‪.‬‬

‫مدل سازی(‪:)Modeling‬‬

‫مدل ‪ Keras‬با الیه (‪:)Keras model with “SimpleRNN” layer( )SimpleRNN‬‬

‫ما یک تابع ساده برای تعریف مدل ‪ RNN‬می سازیم‪ .‬از یک نورون برای الیه خروجی استفاده می کند زیرا ما‬
‫در اینجا یک عدد با ارزش واقعی را پیش بینی می کنیم‪ .‬به عنوان فعال سازی‪ ،‬از تابع ‪ ReLU‬استفاده می کند‪.‬‬
‫استدالل های زیر پشتیبانی می شوند‪.‬‬

‫‪ .1‬نورون ها در الیه ‪RNN‬‬


‫‪ .2‬طول گام (یعنی طول مرحله ای که انتخاب کردیم)‬
‫‪ .3‬ننورون ها در الیه به هم پیوسته متراکم‬
‫‪ .4‬میزان یادگیری‬
‫یک کالس ساده(‪ )Keras Callback‬برای چاپ پیشرفت آموزش در فواصل زمانی منظم‪:‬‬

‫از آنجایی که آموزش ‪ RNN‬معموال طوالنی است‪ ،‬میخواهیم بهروزرسانیهای منظم درباره پایان ‪ Epochs‬ها‬
‫را ببینیم‪ .‬با این حال‪ ،‬ممکن است نخواهیم این بهروزرسانی را در هر ‪ Epochs‬ببینیم زیرا ممکن است‬
‫خروجی را تحت تاثیر قرار دهد‪ .‬بنابراین‪ ،‬ما یک تابع «بازگشت» مینویسیم تا بهروزرسانی نهایی را در هر دوره‬
‫(‪ 50 )Epochs‬چاپ کنیم‪ .‬میتوانید به اضافه کردن ‪ bells‬و ‪ whistles‬های دیگری به این تابع فکر کنید‬
‫تا خطاها و سایر معیارها را به صورت پویا چاپ کنید‪.‬‬

‫ترسیم از دست دادن ‪ RMSE‬در طول ‪ Epochs‬ها‪:‬‬

‫توجه داشته باشید که معیار (از دست دادن ‪ ) loss‬موجود در ویژگی (‪ )history‬مدل‪ ،‬از دست دادن ‪MSE‬‬
‫است و برای محاسبه از دست دادن ‪ RMSE‬باید یک ریشه مربع (‪ )square-root‬بگیرید‪.‬‬

‫نتیجه و تحلیل(‪:)Result and analysis‬‬

‫مدل در حین آموزش چگونه بود(چه دید)؟‬

‫ما تاکید می کنیم و دوباره نشان می دهیم که مدل در طول آموزش دقیقاً چه چیزی می بیند‪ .‬اگر به باال نگاه‬
‫کنید‪ ،‬کد برازش مدل به این صورت است‪:‬‬

‫بنابراین‪ ،‬مدل با (‪ )trainX‬که در زیر رسم شده است‪ ،‬و (‪ )trainY‬که فقط بردار ‪ 8‬مرحله ای جابجا شده و‬
‫به شکل زیر داده شده است‪ ،‬برازش داده شد‪.‬‬

‫حال نقاط آینده را پیش بینی کنید( ‪:)Now predict the future points‬‬

‫اکنون‪ ،‬میتوانیم با انتقال (‪ )testX‬به مدل آموزشدیده‪ ،‬پیشبینیهایی برای آینده ایجاد کنیم‪.‬‬
‫جادو را ببینید!(‪:) See the magic‬‬

‫وقتی بردار پیشبینیشده را رسم میکنیم‪ ،‬میبینیم که با مقادیر واقعی مطابقت دارد و این شگفتانگیز است با‬
‫توجه به اینکه چقدر دادههای آموزشی استفاده شده است و چقدر در آینده باید پیشبینی کند‪ .‬تکنیک های‬
‫سری زمانی مانند ‪ ، ARIMA‬هموارسازی نمایی‪ ،‬نمی توانند آینده بسیار دور را پیش بینی کنند و فاصله‬
‫اطمینان آنها به سرعت به گونهای بزرگ میشود که دیگر مفید نیست‪.‬‬

‫به دقت توجه داشته باشید که مدل چگونه میتواند افزایش ناگهانی رطوبت را در نقاط زمانی ‪12000‬‬
‫پیشبینی کند‪ .‬هیچ نشانهای از چنین شکل یا الگوی دادهها در مجموعه آموزشی وجود نداشت‪ ،‬با این حال‪،‬‬
‫میتواند شکل کلی را به خوبی از روی دادهها پیشبینی کند‪ .‬اولین ‪ 7000‬نقطه داده!‬

‫رسم نمودار مناسب و پیشبینیهای مدل به صورت همزمان‪:‬‬

‫ما داده مرجع و پیشبینیهای مدل را با هم ترسیم میکنیم تا نشان دهیم که روندهای کلی در دادههای مرجع را‬
‫به خوبی دنبال میکند‪ .‬با توجه به اینکه کمتر از ‪ 25‬درصد از داده ها برای آموزش استفاده شده است‪ ،‬این‬
‫شگفت انگیز است‪ .‬مرز بین تقسیمبندیهای آموزش و آزمون با خط قرمز عمودی مشخص میشود‪.‬‬

‫البته برخی از اشتباهات آشکار در پیش بینی مدل وجود دارد‪ ،‬مانند مقادیر رطوبت باالی ‪ 100‬و برخی از‬
‫مقادیر بسیار پایین‪ .‬اینها را می توان با پس پردازش (‪ )post-processing‬هرس کرد یا با تنظیم هایپرپارامتر‬
‫مناسب مدل بهتری ساخت‪.‬‬

‫مدل سازی داده های دما‪:‬‬

‫از آنجایی که مدلسازی دادههای رطوبت را گام به گام با جزئیات پوشش دادهایم‪ ،‬مدلسازی را با دو پارامتر‬
‫دیگر (دما و فشار) به سرعت با کد مشابه اما نه با متن دقیق نشان خواهیم داد‪.‬‬

‫مدل سازی داده های فشار اتمسفر‪:‬‬

‫در پایان‪:‬‬
‫مجدداً توجه کنید که چگونه مدل قادر است افزایش ناگهانی فشار را در نقاط زمانی ‪ 22000-18000‬پیش‬
‫بینی کند‪ .‬هیچ نشانه ای از چنین شکل یا الگوی داده در مجموعه آموزشی وجود نداشت (مرز با خط قرمز‬
‫عمودی مشخص می شود)‪ ،‬با این حال‪ ،‬می تواند شکل کلی را به خوبی از ‪ 7000‬نقطه داده اول پیش بینی‬
‫کند!‬

You might also like