زبان برنامه نویسی R – معرفی و کاربردها
امروزه، استفاده از رایانهها برای انجام تحلیل دادهها، امری اجتناب ناپذیر است. در این بین زبانهای برنامهنویسی برای انجام عملیات محاسباتی، توسعه یافته، به طوری که هر روز دارای امکانات بیشتری شده و روزآمد (Update) میشوند. در این بین زبانهای برنامهنویسی محاسباتی مانند R و «پایتون» Python از محبوبیت زیادی برخوردارند. همچنین، زبان برنامه نویسی Cobol نیز یکی از زبانهای برتر در حوزه برنامه نویسی تجاری محسوب میشود. در این نوشتار از مجله فرادرس به زبان برنامه نویسی R پرداخته شده است و علاوه بر معرفی آن، کاربردهای آن در حوزه تحلیل داده مورد بررسی قرار میدهیم. در انتهای این متن، مزایا و معایب استفاده از این زبان برنامهنویسی نیز برای خوانندگان ارائه خواهد شد.
برای آشنایی بیشتر با زبانهای برنامهنویسی و تحلیل داده، نوشتارهای زبان برنامه نویسی پایتون (Python) — از صفر تا صد و توابع Apply در زبان برنامهنویسی R — راهنمای کاربردی را مطالعه کنید. همچنین خواندن کاهش رنگ تصویر با خوشه بندی | پیاده سازی در R و چگونه نرم افزار تحلیل آماری خود را انتخاب کنیم؟ — راهنمای جامع نیز خالی از لطف نیست.
زبان برنامه نویسی R
R یک زبان برنامهنویسی و نرم افزار رایگان است که توسط «راس ایهاکا» (Ross Ihaka) و «رابرت جنتلمن» (Robert Gentleman) در سال 1993 تهیه شده است. R دارای کتابخانههای گستردهای از انواع روشهای آماری و شیوههای ترسیم نمودارها است. در این زبان برنامه نویسی، «الگوریتمهای یادگیری ماشین» (Machine Learning Algorithm)، «رگرسیون خطی» (Linear Regression)، «سریهای زمانی» (Time Series) و «استنباط آماری» (Statistical Inference) قابل استفاده هستند.
بیشتر «کتابخانههای» (Library) یا «بستههای» (Package) قابل دسترس در R، با خود زبان برنامه نویسی R نوشته شدهاند، اما برای کارهای محاسباتی سنگین، کدهایی به زبانهای C++ ،C و زبان برنامه نویسی Fortran نیز قابل دسترس بوده و کتابخانههایی با این زبانها، نوشته شدهاند.
زبان برنامهنویسی R نه تنها در بین دانشگاهیان و محققین مورد اقبال قرار گرفته است، بلکه بسیاری از شرکتهای بزرگ نیز از زبان برنامه نویسی R استفاده میکنند. در این بین میتوان به شرکتهایی مانند Uber ،Google ،Airbnb و Facebook اشاره کرد.
«تحلیل دادهها» (Data Analysis) با R در گامهایی به شکل زیر صورت میگیرد. «برنامه نویسی» (Programming)، «تبدیلات» (Transform)، «کشف» (Discover)، «مدل سازی» و «گزارش نتایج». هر یک از این مراحل به ترتیب در ادامه معرفی شدهاند.
- برنامه نویسی: R یک ابزار برنامه نویسی روشن و قابل دسترسی است که برای تجزیه و تحلیل دادهها، بهینه شده است.
- تبدیلات: مجموعهای از کتابخانههای به هم پیوسته و دستورات، زبان برنامه نویسی R را ساختهاند که به طور خاص برای «علم داده» (Data Science) طراحی شدهاند.
- کشف: به کمک زبان R، مدل مناسب برای دادهها را جستجو کنید، فرضیههای خود را مورد بررسی قرار داده و آنها را مورد آزمون قرار دهید.
- مدلسازی: در زبان برنامهنویسی R، مجموعه وسیعی از ابزارها برای ارزیابی مدل ساخته شده و انتخاب بهترین مدل برای دادهها، فراهم شده است.
- گزارش نتایج: تلفیق کدها، نمودارها و خروجیها با ابزار پیشرفته R Markdown یا ساخت برنامههای کاربردی در محیط وب، از امکاناتی است که توسط زبانبرنامه نویسی R قابل پیادهسازی است.
با توجه به مطالب گفته شده، میتوان زبان برنامهنویسی R را ابزاری مناسب برای انجام کارهای زیر در نظر گرفت.
- استنباط آماری (Statistical inference)
- تحلیل داده (Data analysis)
- اجرای یا ایجاد الگوریتمهای یادگیری ماشین (Machine learning algorithm)
سهم زبان R در صنعت و کسب و کارها
با توجه به بررسی صنایع و کسب و کارها، نموداری مطابق با تصویر ۲، ایجاد شده است. همانطور که مشخص است بیشترین استفاده کنندگان از زبان برنامهنویسی R، متعلق به بخش آموزش عالی و دانشجویان تحصیلات تکمیلی (Academic) است. در رتبه دوم میتوان به بخش «بهداشت» (Healthcare) اشاره کرد. همچنین تهیه مقالههای علمی در حوزه پزشکی به همراه ارائه نتایج آماری حاصل از تحقیق، توسط زبان برنامهنویسی R، به اعتبار بیشتر آنها منجر میشود. از طرفی شاید تمایل و آشنایی بیشتر مهندسین برق به نرمافزار MATLAB، آنها را از به کارگیری R باز داشته است. به همین علت در انتهای لیست مربوط به نمودار زیر قرار گرفتهاند.
بستهها یا کتابخانههای پرطرفدار R
همانطور که اشاره کردیم، برای اجرای الگوریتمها یا بسیاری از توابع در حوزههای مختلف علمی، کتابخانه یا بستههایی از امکانات (Utility)، در زبان برنامهنویسی R گنجانده شده که در تصویر ۳، به ترتیب استفاده کننده، برحسب تعداد پرسش و پاسخهای مطرح شده در سایت Stack Overflow (+)، ایجاد شده است. کتابخانه dplyr و ggplot2، که اولی به اجرای تغییر روی دادهها و دومی به رسم نمودار، اختصاص دارد، در بین پر طرفدارترینها دیده میشوند. از طرفی کتابخانههای scales و gridExtra کمتر مورد استفاده قرار گرفتهاند.
تمام کتابخانههای R، که تقریباً تا به امروز بیش از ۱۲ هزار بسته را شامل میشود، رایگان بوده و از طریق سایت CRAN (+) قابل دریافت هستند. CRAN یک سایت منبع باز و رایگان است. برای اجرای الگوریتمهای «یادگیری ماشین» یا تجزیه و تحلیل سریهای زمانی میتوانید کتابخانههای متعدد را بارگیری و استفاده کنید.
چرا از R استفاده کنیم؟
علم داده در حال شکل دادن به نحوه فعالیت شرکتها است. بدون شک استفاده نکردن از هوش مصنوعی و یادگیری ماشین باعث شکست شرکتها در فعالیتهای تجاری خواهد شد. سوال اصلی این است که از کدام ابزار یا زبان برای تحلیل دادهها استفاده کنیم؟
تعداد زیادی از ابزارهای تجاری برای اجرای تعاملات مالی و تجزیه و تحلیل آنها وجود دارد. ولی متاسفانه اغلب آنها پولی هستند. از طرفی ممکن است سازگاری لازم با نحوه کار شرکت شما یا روند دادههایتان را نداشته باشند. از جنبه دیگر، آموختن یک زبان برنامهنویسی جدید، کار طولانی و پیچیدهای است.
آیا واقعاً آموختن زبان برنامهنویسی R پیچیده است؟ توجه داشته باشید که باید یک توازن بین پیچیدگی و کارایی در نظر گرفت و بهترین زبان برنامهنویسی را برای امور شرکت انتخاب کرد. در تصویر ۴، نموداری را مشاهده میکنید که به مقایسه کارایی و سادگی در آموزش بین زبانها و نرمافزارهای تحلیل مالی پرداخته است. اگر میخواهید بهترین اطلاعات را از دادهها کسب کرده و به نمایش بگذارید، باید مدتی را صرف یادگیری ابزار مناسب آن، یعنی زبان برنامه نویسی R کنید.
در سمت چپ بالای نمودار مربوط به تصویر ۴، اکسل (Excel) و PowerBI را مشاهده میکنید. یادگیری این دو ابزار بسیار ساده است اما توانایی عملکرد حرفهای، خصوصاً از نظر مدلسازی را کمتر به کاربر ارائه میدهند. در وسط نمودار پایتون و بسته تحلیل آماری SAS قابل توجه هستند. SAS ابزاری اختصاصی برای اجرای تجزیه و تحلیل آماری به صورت حرفهای است، اما متاسفانه رایگان نیست. در مقابل «پایتون» (Python) زبانی است که دارای منحنی یادگیری یکنواخت است. پایتون ابزاری خارق العاده برای استقرار الگوریتمهای یادگیری ماشین و هوش مصنوعی است اما فاقد ویژگیهای ارتباطی است. R با یک منحنی یادگیری مشابه با آن، تعادل خوبی بین پیادهسازی و تجزیه و تحلیل دادهها دارا است.
وقتی نوبت به «تجسم داده» یا «مصور سازی دادهها» (Data Visualization) میرسد، احتمالاً به دنبال بسته نرمافزاری «تابلو» (Tableau) خواهید بود. بدون شک Tableau ابزاری عالی برای کشف الگوها از طریق نمودارها و گرافها است. علاوه بر این، یادگیری Tableau وقتگیر نیست. یک مشکل بزرگ در تجسم دادهها این است که ممکن است در نهایت هرگز الگویی پیدا نکنید یا فقط نمودارهای بیفایده زیادی در اختیارتان قرار گیرد. بسته Tableau ابزاری مناسب برای تجسم سریع دادهها یا «هوش تجاری» (Business Intelligence) است. ولی زمانی که نوبت به آمار و ابزار تحلیلهای آماری میرسد، R مناسبتر است.
آیا باید زبان برنامه نویسی R را برای کار انتخاب کرد؟
معمولاً یک «متخصص داده» (Data Scientist) میتواند از دو ابزار برای برنامهنویسی و اجرای تحلیلها استفاده کند: زبان برنامه نویسی R و پایتون. شاید وقت نداشته باشید که هر دو را یاد بگیرید، به خصوص اگر به تازگی شروع به یادگیری علم داده (Data Science) کردهاید. یادگیری ماشین، مدل سازی آماری و الگوریتمهای مختلف، ابزارهای موثر برای تحلیل داده محسوب میشوند که در اغلب زبانهای برنامهنویسی مدرن به کار رفتهاند. داشتن تسلط کافی در این امور بسیار موثرتر از یادگیری زبان برنامهنویسی است. در حقیقت، زبان برنامه نویسی، ابزاری برای محاسبه و برقراری ارتباط دادهها و شناخت آنها است.
مهمترین کار در علم داده، نحوه برخورد شما با دادهها است. «ورود» (Import)، «پاکسازی» (ٰClean)، «آماده سازی» (Data Preparation)، «مهندسی ویژگی» (Feature Engineering) و «انتخاب ویژگی» (Feature Selection)، همگی گامهای اصلی فعالیتهای علم داده را تشکیل میدهند.
این فعالیتها باید تمرکز اصلی شما را تشکیل بدهند. اگر می خواهید R و Python را همزمان و بدون پیشینه آماری بیاموزید، به کاری عبث دست زدهاید. توجه داشته باشید که متخصص داده، یک برنامه نویس نیست. وظیفه چنین فردی، درک دادهها، دستکاری آنها و پیدا کردن بهترین مدل یا روش برای شناخت رفتار آنها است.
آموختن زبان برنامه نویسی R مشکل نیست
سالها پیش، تسلط بر زبان R دشوار بود. زبان برای مبتدیان گیج کننده محسوب میشد و ساختار آن مانند سایر ابزارهای برنامه نویسی به نظر نمیرسید. برای غلبه بر این مسئله مهم، «هادلی ویكام» (Hadley Wickham) مجموعهای از دستورات و امکانات را در کتابخانه یا بستهای به نام tidyverse تهیه كرد. به این ترتیب تغییرات و تبدیل دادهها شهودیتر شده و خوانایی آن افزایش یافت. از طرفی ترسیم و ایجاد نمودارهای تحلیلی دیگر امری پیچیده و سخت محسوب نمیشد.
خوشبختانه بهترین الگوریتمهای یادگیری ماشین را میتوان با R اجرا کرد. بستههایی مانند Keras و TensorFlow امکان ایجاد تکنیک پیشرفته یادگیری ماشین را دارند. R همچنین یک بسته برای انجام Xgboost، یکی از بهترین الگوریتمها برای شرکت در رقابتهای Kaggle دارد.
R میتواند با زبانهای برنامهنویسی دیگر ارتباط برقرار کند. امکان ارتباط با ++Python ،Java ،C در R وجود دارد. انجام عملیات و تحلیل روی کلان داده نیز برای R در نظر گرفته شده است. حتی میتوانید R را با پایگاه دادههای مختلف مانند Spark یا Hadoop متصل کنید.
در انتها میتوان به قدرت اجرای عملیات موازی سازی در R اشاره کرد. در گذشته زبان برنامهنویسی R به دلیل استفاده از فقط یک CPU مورد انتقاد قرار میگرفت. خوشبختانه بستهها و کتابخانههای اجرای محاسبات موازی ایجاد شده که به شما امکان میدهد وظایف خود را در هستههای جداگانه پردازشگر انجام دهید.
به طور خلاصه، میتوان گفت که R ابزاری عالی برای کاوش و بررسی دادهها است. تجزیه و تحلیل مدرن در یادگیری ماشین مانند «تحلیل خوشهبندی» (Clustering Analysis)، «همبستگی» (Correlation) و «کاهش بُعد دادهها» (Dimension Reduction) با R به سادگی و سرعت انجام میشوند.
مزایا و معایب زبان برنامه نویسی R
در این بخش به برخی از ویژگیها و البته معایب زبان برنامهنویسی R خواهیم پرداخت. البته نباید از مزایای آن شگفت زده و از معایب آن دلسرد شد. همیشه جا برای رقابت با رقبای دیگر وجود دارد. مهم آن است که درک درستی از امکانات و محدودیتهای ابزارمان داشته باشیم.
مزایای زبان برنامه نویسی R
- منبع باز (Open Source): زبان R یک زبان برنامه نویسی منبع باز است. این بدان معنی است که هر کسی میتواند بدون نیاز به مجوز یا هزینه با R کار کند. بعلاوه، شما میتوانید با سفارشی کردن بستههای R، بستههای جدید را توسعه داده و در حل مشکلات و ایجاد الگوریتمهای جدید، سهیم شوید.
- پشتیبانی کامل از دادههای مختلف: در R میتوانید هر گونه اطلاعاتی را مورد بررسی و تجزیه و تحلیل قرار دهید. به کمک کتابخانههای مختلف مانند dplyr یا readr، این امکان وجود دارد که دادههای غیرساختاری را به ساخت یافته تبدیل کرده و مورد آنالیز قرار دهید.
- انبوهی از بسته یا کتابخانههای کاربردی: با کمک کتابخانههای R مجموعه گستردهای از عملیات محاسباتی با بیش از 10 هزار بسته در مخزن CRAN در اختیارتان قرار میگیرد. این تعداد به طور مداوم در حال افزایش است. این بستهها همه حوزهها از تجارت و یا کاربردهای علمی را شامل میشود.
- رسم نمودار با کیفیت: اگر به دنبال ترسیم یک نمودار با کیفیت و دقیق هستید، زبان R دستورات ترسیمی مناسبی دارد. توابع و دستورات کتابخانه مشهور ggplot2، امکان رسم تقریبا همه گونه نموداری را به شما میدهد. به علاوه تغییر قالببندی روی چنین نمودارهای به کمک ابزارهای بسته ggplot به سادگی صورت گرفته و نمودارهای زیبا و چشمنوازی تولید میشود. بسته یا کتابخانه ggplot2، از نقاط قوت و موثر زبان برنامهنویسی R در بحث مصورسازی دادهها محسوب میشود.
- سازگاری: برنامههایی که به زبان R مینویسید، قابلیت هماهنگی با دستورات و برنامههایی را دارد که با زبانهای برنامه نویسی دیگر مانند C ، C ++ ، Java و Python نوشتهاید. همچنین برای کار روی مجموعه دادههای بزرگ، میتوان با فناوریهایی جدید برای پایگاه مانند Hadoop ارتباط برقرار کرده و از آنها به عنوان منبع داده استفاده کرد.
- بستر مستقل: زبان برنامهنویسی R، یک زبان مستقل از سیستم عامل است. بنابراین میتوان آن را یک زبان برنامه نویسی «چندسکویی» (Cross-platform software) در نظر گرفت. به این معنی که به راحتی در «ویندوز» (Windows)، «لینوکسن» (Linux) و «سیستم عامل مک» (Mac OS) قابل اجرا است.
- گزارشهای چشم نواز: با بستههایی مانند Shiny و Markdown، تهیه گزارش مربوط به نتایج حاصل از تجزیه و تحلیل دادهها با R بسیار ساده صورت میگیرد. شما میتوانید گزارشها را با دادهها، نمودارها و کدهای R، ترکیب کرده و به صورت یک سند (Markdown Document) منتشر کنید. حتی میتوانید برنامههای وب تعاملی ایجاد کنید که به کاربر اجازه میدهد، دادهها را تغییر داده و نتایج حاصل از الگوریتم شما را مشاهده کنید.
- عملیات یادگیری ماشین: در زبان R امکانات مختلفی را برای انجام عملیات یادگیری ماشین مانند «طبقه بندی» (Classification)، «رگرسیون» (Regression) فراهم است. همچنین ویژگیهایی برای ایجاد و توسعه «شبکههای عصبی مصنوعی» (Artificial Neural network) در کتابخانههای R فراهم شده است.
- آمار: هدف از ایجاد زبان برنامهنویسی R اجرای محاسبات آماری است. R به طور برجسته به عنوان زبان بین المللی آمار شناخته میشود. همین امر دلیل اصلی آن است که R بر سایر زبانهای برنامه نویسی برای توسعه ابزارهای آماری غلبه کرده است.
- رشد و توسعه مداوم: منبع باز و رایگان بودن R به توسعه مداوم آن کمک کرده است. این زبان برنامهنویسی در حال تکامل است و هر روز نسخه جدیدی از کتابخانهها یا خود نرمافزار منتشر میشود. در زمانی که این مقاله نوشته شده است، آخرین نسخه این نرمافزار 4٫0٫3 است که مربوط به ۲۰۲۰٫۱۰٫۱۰ است. در تصویر 6، رشد کتابخانههای R را مشاهده میکنید.
در تصویر 7 نیز آخرین نسخه این نرمافزار در تاریخ انتشار این نوشتار، معرفی شده است.
معایب زبان برنامه نویسی R
هر چند در بالا به مزایای زبان برنامه نویسی R اشاره کردیم، ولی متاسفانه بعضی از مشکلات نیز در این زبان برنامهنویسی وجود دارد.
- منشا ضعیف: R از زبان برنامه نویسی قدیمی به نام S گرفته شده که از ساختار محکمی برخوردار نبود. این بدان معنی است که کتابخانههای پایهای در R از گرافیک پویا یا تصاویر سه بعدی پشتیبانی نمیکند. البته با به کارگیری کتابخانههای پیشرفته مانند ggplot2 و Plotly، امکان ایجاد گرافیک پویا و سه بعدی بوجود آمده است.
- مدیریت دادهها: در R، همه متغیرها در حافظه فیزیکی ذخیره میشوند. بنابراین به حافظه سختافزاری دستگاهتان وابسته هستید. این در تضاد با زبانهای دیگر مانند پایتون است. علاوه بر این، R در مقایسه با پایتون از حافظه بیشتری استفاده میکند. همچنین، R برای دسترسی به دادهها، به یک مکان واحد یعنی حافظه توجه دارد و نمیتواند به صورت همزمان، از منابع مختلف، دادهها را پردازش کند. بنابراین، هنگام کار روی کلان داده گزینه ایده آل نیست. با این وجود، با وجود بستههای مدیریت داده و امکان ادغام با سرورهای Hadoop، این امر را به خوبی پوشش داده است.
- امنیت اساسی: R فاقد امنیت پایه برای دادهها است. این ویژگی قسمت اساسی اکثر زبانهای برنامه نویسی مانند پایتون است. به همین دلیل، محدودیتهای مختلفی با R وجود دارد زیرا نمیتواند در یک برنامه وب از آن استفاده کرده، بطوری که اطلاعات در امنیت کامل باشند.
- زبان پیچیده: زبان R برای یادگیری زبان آسانی نیست. به همین دلیل، افرادی که سابقه برنامه نویسی قبلی ندارند، ممکن است یادگیری R برایشان قدری دشوار باشد.
- سرعت کم در اجرا: بستههای R و زبان برنامه نویسی R بسیار کندتر از سایر زبانها مانند MATLAB و Python عمل میکنند ولی خوشبختانه، بعضی از بستهها، امکان به کارگیری در پردازشهای موازی را دارند.
- تعداد انبوه بستههای محاسباتی: الگوریتمهای موجود در R در بستههای مختلفی پخش شدهاند. برنامهنویسی بدون اطلاع قبلی از وجود چنین بستههایی ممکن است پیادهسازی الگوریتمها را بسیار دشوار کند.
نرمافزار RStudio
یکی از محیطهای مناسب برای توسعه برنامههای R، نرمافزار RStudio است. به طور کلی RStudio یک IDE یا «محیط یکپارچه توسعه نرمافزار» (Integrated Development Environment) است. در این نرمافزار، بسیاری از امکانات برنامهنویسی، مانند مشاهده متغیرهای محیطی، قاب ترسیم نمودارها و ... وجود دارد.
در تصویر 8، نمایی از این نرمافزار را مشاهده میکنید. دسترسی به ترمینال و همچنین کنسول در این پنجره وجود دارد. از طرفی میتوانید به طور همزمان با بیش از یک برنامه سروکار داشته باشید و هر یک از برگههای ویرایشگر، به یک قطعه کد یا برنامه اختصاص داشته باشید.
راهنما (Help) و نمودارهای ترسیم شده، برای خود جایگاه مشخصی درRStudio دارند. از این طریق میتوانید بدون ثبت دستورات ذخیرهسازی در کد، مستقیماً نمودارهای ترسیم شده را با قالب فایلهای دلخواه (PNG, PDF, SVG) ذخیره کنید.
در RStudio، امکان بارگذاری کتابخانهها، فایلهای داده، نمایش اطلاعات متغیرها، جدول دادهها، همچنین فایلها و تاریخچه دستورات وجود دارد. همچنین میتوانید از چندین نشست R که به R Session معروف است، استفاده کرده، بیش از یک پردازشگر (هسته) را به کار بگیرید. امکان دسترسی همزمان به چندین کد برنامه، به همراه ویرایش آنها نیز از ویژگیهایی است که در RStudio در نظر گرفته شده است. پیشنهاد میشود، اگر میخواهید تجربه موفقی از برنامه نویسی در زبان R داشته باشید، از محیط توسعه RStudio استفاده کنید. توجه داشته باشید که میتوانید در RStudio با هر نسخهای از زبان برنامه نویسی R به کد نویسی بپردازید.
خلاصه و جمعبندی
در این متن به بررسی زبان برنامه نویسی R و همچنین قابلیتهای آن پرداختیم. البته در بخشی هم به مزایا و معایب آن اشاره کردیم. امکانات وسیعی که در این زبان برنامه نویسی مانند Markdown یا Shiny قرار دارد، آن را به یک مجموعه جذاب برای تهیه برنامههای محاسباتی یا تجزیه و تحلیل به همراه مصور سازی داده تبدیل کرده است. روند رو به رشد کاربران و همچنین منبع باز بودن (Open Source) آن، از موضوعات دیگری است که بیشتر کاربران را به سمت برنامه نویسی با R جذب کرده است. سرعت انجام محاسبات ماتریسی و برداری در R همه را شگفت زده کرده و به عنوان یک ابزار بیرقیب شناسانده است