شبکه عصبی در R

معرفی

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

یک مدل شبکه عصبی ساده

مزیت شبکه عصبی این است که یادگیرنده است، یعنی پارامترهای تابع را برای پیش بینی بهتر در موقعیت هایی با نتیجه ناشناخته بهینه می کند. قوانین یادگیری بسیاری وجود دارد که با شبکه عصبی مورد استفاده قرار می گیرند. حداقل مربع متوسط، gradient descent ، قانون نیوتن و … از جمله این قوانین هستند.

حال یک مدل شبکه عصبی را در R بررسی می کنیم. در این مطلب، ما از زیر مجموعه ای از مجموعه داده های غلات به اشتراک گذاشته شده توسط دانشگاه Carnegie Mellon استفاده می کنیم که می توانید آنها را در فرمت CSV از لینک زیر دانلود کنید:

هدف پیش بینی میزان متغیرهای غلات مانند کالری، پروتئین، چربی و غیره است. working directory را در R با استفاده از setwd تنظیم کرده و فایل cereal.csv را به آن منتقل کنید. ما از متغیر «rating» به عنوان متغیر وابسته استفاده می کنیم و سایر متغیرها متغیر مستقل هستند. داده ها را به دو مجموعه داده training و test تقسیم می کنیم. مجموعه training برای پیدا کردن رابطه بین متغیرهای وابسته و مستقل استفاده می شود در حالی که مجموعه test عملکرد مدل را ارزیابی می کند. ما ۶۰ درصد از مجموعه داده ها را به روش نمونه گیری تصادفی به عنوان مجموعه training در نظر می گیریم. از تابع sample برای نمونه برداری تصادفی استفاده می شود. از set.seed برای تولید یک نمونه تصادفی یکسان استفاده میکنیم.

تقسیم داده ها به دو مجموعه training و test

نرمالسازی داده ها

حال باید مجموعه داده های خود را مقیاسبندی کنیم. مقیاسبندی داده ها ضروری است زیرا در غیر این صورت ممکن است یک متغیر پیش بینی تاثیر بیش از اندازه بر نتیجه داشته باشد. استفاده از داده هایی که مقیاسبندی نشده اند، ممکن است منجر به نتایج بی معنی شود. تکنیک های رایج برای نرمالسازی داده ها عبارتند از: نرمالسازی کمینه-بیشینه، نرمالسازی Z-Score، نرمالسازی میانه و برآوردگرهای tan-h.
نرمالسازی کمینه-بیشینه ، داده ها را به یک دامنه مشترک تبدیل می کند و بر خلاف روشهای دیگر توزیع اولیه متغیرها را حفظ می کند. در اینجا ما با استفاده از زیر در زبان R، از روش نرمالسازی کمینه-بیشینه استفاده می کنیم.

نرمالسازی داده ها به روش کمینه- بیشینه

مدلسازی

حال یک شبکه عصبی را بر روی داده هایمان قرار می دهیم. بدین منظور مطابق کد زیر در زبان R از توابع کتابخانه neuralnet  استفاده می کنیم.

ایجاد یک شبکه عصبی

شکل زیر شبکه عصبی محاسبه شده را نشان می دهد. مدل ما دارای ۳ نورون در لایه پنهان آن است. خطوط سیاه نشان دهنده اتصالات با وزن هستند.

نمودار شبکه عصبی

ما متغیر rating را با استفاده از مدل شبکه عصبی پیش بینی کردیم. به یاد دارید که قبلا داده ها را مقیاسبندی کردیم، لذا باید rating پیش بینی شده را برای مقایسه با rating واقعی تبدیل کنیم. در کد برنامه R زیر برای این کار از شاخص میانگین مجذور مربعات خطا (Root Mean Square Error= RMSE) استفاده کرده ایم و این دو مقدار را بصورت دیداری با استفاده از نمودار با هم مقایسه کرده ایم.

مقایسه rating پیش بینی شده با rating واقعی
نمودار مقایسه rating پیش بینی شده با rating واقعی

همچنین می توانیم این دو را بصورت دیداری و با استفاده از نمودار مقایسه کنیم.

منبع مطالب :
https://www.analyticsvidhya.com/blog/2017/09/creating-visualizing-neural-network-in-r/

مطالب مرتبط