Description
دوره آفلاین جامع برنامه نویسی پیشرفته R سطح ۱(TCGA)
امروزه، استفاده از رایانهها برای انجام تحلیل دادهها، امری اجتناب ناپذیر است. در این بین زبانهای برنامهنویسی برای انجام عملیات محاسباتی، توسعه یافته، به طوری که هر روز دارای امکانات بیشتری شده و روزآمد (Update) میشوند. در این بین زبانهای برنامهنویسی محاسباتی مانند R و «پایتون» Python از محبوبیت زیادی برخوردارند. همچنین، زبان برنامه نویسی Cobol نیز یکی از زبانهای برتر در حوزه برنامه نویسی تجاری محسوب میشود. در این نوشتار از مجله فرادرس به زبان برنامه نویسی 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 را برای کار انتخاب کرد؟
معمولاً یک «متخصص داده» (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 است که مربوط به ۲۰۲۰٫۱۰٫۱۰ است. در تصویر زیر، رشد کتابخانههای R را مشاهده میکنید.
معایب زبان برنامه نویسی R
هر چند در بالا به مزایای زبان برنامه نویسی R اشاره کردیم، ولی متاسفانه بعضی از مشکلات نیز در این زبان برنامهنویسی وجود دارد.
- منشا ضعیف: R از زبان برنامه نویسی قدیمی به نام S گرفته شده که از ساختار محکمی برخوردار نبود. این بدان معنی است که کتابخانههای پایهای در R از گرافیک پویا یا تصاویر سه بعدی پشتیبانی نمیکند. البته با به کارگیری کتابخانههای پیشرفته مانند ggplot2 و Plotly، امکان ایجاد گرافیک پویا و سه بعدی بوجود آمده است.
- مدیریت دادهها: در R، همه متغیرها در حافظه فیزیکی ذخیره میشوند. بنابراین به حافظه سختافزاری دستگاهتان وابسته هستید. این در تضاد با زبانهای دیگر مانند پایتون است. علاوه بر این، R در مقایسه با پایتون از حافظه بیشتری استفاده میکند. همچنین، R برای دسترسی به دادهها، به یک مکان واحد یعنی حافظه توجه دارد و نمیتواند به صورت همزمان، از منابع مختلف، دادهها را پردازش کند. بنابراین، هنگام کار روی کلان داده گزینه ایده آل نیست. با این وجود، با وجود بستههای مدیریت داده و امکان ادغام با سرورهای Hadoop، این امر را به خوبی پوشش داده است.
- امنیت اساسی: R فاقد امنیت پایه برای دادهها است. این ویژگی قسمت اساسی اکثر زبانهای برنامه نویسی مانند پایتون است. به همین دلیل، محدودیتهای مختلفی با R وجود دارد زیرا نمیتواند در یک برنامه وب از آن استفاده کرده، بطوری که اطلاعات در امنیت کامل باشند.
- زبان پیچیده: زبان R برای یادگیری زبان آسانی نیست. به همین دلیل، افرادی که سابقه برنامه نویسی قبلی ندارند، ممکن است یادگیری R برایشان قدری دشوار باشد.
- سرعت کم در اجرا: بستههای R و زبان برنامه نویسی R بسیار کندتر از سایر زبانها مانند MATLAB و Python عمل میکنند ولی خوشبختانه، بعضی از بستهها، امکان به کارگیری در پردازشهای موازی را دارند.
- تعداد انبوه بستههای محاسباتی: الگوریتمهای موجود در R در بستههای مختلفی پخش شدهاند. برنامهنویسی بدون اطلاع قبلی از وجود چنین بستههایی ممکن است پیادهسازی الگوریتمها را بسیار دشوار کند.
خلاصه و جمعبندی
در این متن به بررسی زبان برنامه نویسی R و همچنین قابلیتهای آن پرداختیم. البته در بخشی هم به مزایا و معایب آن اشاره کردیم. امکانات وسیعی که در این زبان برنامه نویسی مانند Markdown یا Shiny قرار دارد، آن را به یک مجموعه جذاب برای تهیه برنامههای محاسباتی یا تجزیه و تحلیل به همراه مصور سازی داده تبدیل کرده است. روند رو به رشد کاربران و همچنین منبع باز بودن (Open Source) آن، از موضوعات دیگری است که بیشتر کاربران را به سمت برنامه نویسی با R جذب کرده است. سرعت انجام محاسبات ماتریسی و برداری در R همه را شگفت زده کرده و به عنوان یک ابزار بیرقیب شناسانده است.
Reviews
There are no reviews yet.