پروژه: پیش‌بینی فروش BigMart با کمک مدل یادگیری ماشین در پایتون

تومان

هدف پروژه پیش‌بینی فروش BigMart با یادگیری ماشین، ساخت و ارزیابی مدل‌های پیش‌بینی مختلف و تعیین میزان فروش هر محصول در یک فروشگاه است.

  •  درجه سختی: Moderate
  •  نوع بیزینس: Retail & Ecommerce
  •  ابزار مورد استفاده: Python
  •  کلاس الگوریتم: Regression

قابل سفارش نیست

شناسه محصول: p-014 دسته: برچسب: , , ,

توضیحات

آنچه که در این پروژه یاد می‌گیرید:

            • درک مسئله پیش‌بینی فروش
            • انجام کاوش داده‌ها با استفاده از Amazon Redshift
            • آشنایی با کوئری نویسی SQL برای پیش‌پردازش داده‌ها
            • پاک‌سازی داده‌ها و جای‌گذاری مقادیر گم‌شده با SQL
            • تحلیل اکتشافی داده‌ها برای داده‌های دسته‌ای و پیوسته
            • درک تحلیل همبستگی
            • بررسی همبستگی داده‌های دسته‌ای با آزمون کای-اسکوئر و معیار Cramer’s V
            • تحلیل همبستگی بین داده‌های دسته‌ای و متغیر هدف با آزمون ANOVA
            • رمزگذاری برچسب‌ها برای داده‌های دسته‌ای
            • پیاده‌سازی رگرسیون خطی
            • پیاده‌سازی رگرسیون Elastic Net
            • پیاده‌سازی مدل Random Forest
            • پیاده‌سازی مدل Extra Trees
            • پیاده‌سازی مدل Gradient Boosting
            • پیاده‌سازی مدل پرسپترون چندلایه (MLP)
            • پیاده‌سازی Splines و رگرسیون چندمتغیره تطبیقی (MARS)
            • پیاده‌سازی مدل‌های خطی تعمیم‌یافته (GAM) شامل LinearGAM، PoissonGAM و GammaGAM
            • درک و پیاده‌سازی Voting Regressor
            • آشنایی با مدل‌های Stacking و Blending
            • پیاده‌سازی Stacking Regressor
            • پیاده‌سازی Blending مدل‌ها از صفر
            • ارزیابی مدل‌ها با معیار رگرسیون R-squared

توضیحات پروژه

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

این پروژه به شما کمک می‌کند تا فرآیند ایجاد پروژه در یک محیط حرفه‌ای را درک کنید. نکات کلیدی این پروژه عبارتند از:

      • این پروژه به شما آموزش می‌دهد که چگونه داده‌ها را از پایگاه داده Amazon Redshift استخراج و پردازش کنید و سپس مدل‌های مختلف یادگیری ماشین را برای پیش‌بینی فروش بسازید.
      • با تکنیک‌های مختلف پردازش داده، تحلیل داده‌های اکتشافی (EDA)، و تحلیل همبستگی متغیرهای دسته‌بندی‌شده با استفاده از آزمون‌های خی-دو (Chi-squared)، مقدار کرامر (Cramer’s V) و آنوا (ANOVA) آشنا خواهید شد.
      • علاوه بر مدل‌های آماری پایه مانند رگرسیون خطی، یاد می‌گیرید چگونه مدل‌های پیشرفته‌ای مانند Gradient Boosting و مدل‌های افزودنی تعمیم‌یافته (Generalized Additive Models) طراحی کنید.
      • با کار روی این پروژه، با مفاهیمی مانند اسپلاین‌ها (Splines) و رگرسیون تطبیقی چندمتغیره (MARS) و همچنین تکنیک‌های ترکیبی (Ensemble) مانند مدل استکینگ (Stacking) و مدل ترکیبی (Blending) آشنا خواهید شد و یاد می‌گیرید چگونه این مدل‌ها را با استفاده از معیارهایی مانند MAE و RMSE برای بهترین نتایج ارزیابی کنید.
هدف این پروژه علم داده، ساخت و ارزیابی مدل‌های پیش‌بینی مختلف برای تعیین میزان فروش هر محصول در یک فروشگاه خاص است. این تحلیل به BigMart کمک می‌کند تا ویژگی‌های محصولات را بهتر درک کرده و دسته‌بندی‌ها و فروشگاه‌ها را به گونه‌ای اصلاح کند که نقش مهمی در افزایش فروش و توسعه استراتژی‌های بهتر کسب‌وکار داشته باشد.

مجموعه داده پروژه

برای این پروژه پیش‌بینی فروش با استفاده از یادگیری ماشین، از مجموعه داده‌های پیش‌بینی فروش BigMart استفاده خواهیم کرد. این مجموعه داده شامل سوابق فروش سالانه 1559 محصول در سال 2013 در ده فروشگاه واقع در شهرهای مختلف است. چنین داده‌های گسترده‌ای می‌تواند بینش‌هایی درباره ترجیحات آشکار مشتریان نسبت به یک محصول خاص و یک فروشگاه خاص ارائه دهد که ویژگی‌های آن‌ها در مجموعه داده‌های فروش BigMart تعریف شده است.

این مجموعه داده شامل ترکیبی از شناسه فروشگاه و شناسه محصول (Item_ID) و چندین ویژگی دیگر است و اطلاعاتی درباره فروش محصولات در فروشگاه خیالی BigMart فراهم می‌کند و شامل داده‌هایی است که می‌توانند به ما کمک کنند بفهمیم چگونه عوامل مختلف بر فروش محصولات تأثیر می‌گذارند.

مجموعه داده اطلاعات مختلفی را درباره هر محصول فروخته‌شده در BigMart ارائه می‌دهد، از جمله:

      • شناسه منحصربه‌فرد محصول
      • نوع محصول (مانند میوه‌ها، سبزیجات یا اقلام خانگی)
      • اندازه یا وزن محصول
      • قیمت خرده‌فروشی محصول
      • سایر ویژگی‌هایی که محصول را توصیف می‌کنند

این مجموعه داده به دانشمندان داده کمک می‌کند به سوالات زیر پاسخ دهند:

      • چه عواملی بر فروش یک محصول خاص تأثیر می‌گذارند؟ آیا قیمت محصول، اندازه آن یا مکان فروشگاه؟
      • آیا انواع خاصی از محصولات در برخی فروشگاه‌ها یا مناطق محبوب‌تر هستند؟
      • آیا می‌توان فروش یک محصول را بر اساس ویژگی‌ها و متغیرهای دیگر مانند مکان و اندازه فروشگاه پیش‌بینی کرد؟
      • آیا الگوها یا روندهای خاصی در داده‌های فروش وجود دارد که می‌توانند به ما در بهینه‌سازی مدیریت موجودی یا استراتژی‌های قیمت‌گذاری کمک کنند؟

مجموعه داده همچنین جزئیاتی درباره فروشگاه و معاملات فروش ارائه می‌دهد. برای مثال:

      • اطلاعاتی درباره مکان فروشگاه
      • نوع فروشگاه (سوپرمارکت یا خواربارفروشی)
      • سال تأسیس فروشگاه
      • اندازه فروشگاه

کل مجموعه داده (8523 سطر) در پایگاه داده Redshift ذخیره شده است. شما از SQL برای اجرای کوئری‌ها و بررسی مقادیر گمشده و null استفاده خواهید کرد. همچنین لازم است داده‌های تمیز را در پایتون پیش‌پردازش کرده و از آزمون‌های آماری برای بررسی وجود رابطه معنادار بین متغیرهای دسته‌بندی‌شده استفاده کنید.

ویژگی‌های تعریف‌شده در مجموعه داده پیش‌بینی فروش BigMart:

      • item_identifier: شناسه منحصربه‌فرد برای هر آیتم
      • item_weight: وزن آیتم
      • item_fat_content: محتوای چربی آیتم، مانند کم‌چرب یا چرب معمولی
      • item_visibility: میزان دیده‌شدن محصول در فروشگاه
      • item_type: دسته‌بندی محصول، مانند لبنیات، نوشابه، اقلام خانگی و غیره
      • item_mrp: حداکثر قیمت خرده‌فروشی محصول
      • outlet_identifier: شناسه منحصربه‌فرد برای هر فروشگاه
      • outlet_establishment_year: سال تأسیس فروشگاه
      • outlet_size: اندازه فروشگاه (کوچک، متوسط، بزرگ)
      • outlet_location_type: نوع مکان فروشگاه، مانند Tier 1، 2 و 3
      • outlet_type: نوع فروشگاه، مانند خواربارفروشی یا سوپرمارکت
      • item_outlet_sales: کل فروش محصول در فروشگاه

فناوری‌های استفاده‌شده

      • زبان: پایتون
      • کتابخانه‌ها: Pandas, NumPy, matplotlib, sklearn, AWS Redshift connector, Pyearth, Pygam

مراحل حل پروژه

      • کاوش داده‌ها با Amazon Redshift
      • پاک‌سازی و جایگذاری داده‌های مفقود
      • تحلیل اکتشافی داده‌ها
        • داده‌های دسته‌بندی‌شده
        • داده‌های پیوسته
        • همبستگی
          • همبستگی پیرسون
          • آزمون خی-دو و جداول توافقی
          • آزمون Cramer’s V
          • تحلیل واریانس یک‌طرفه (ANOVA)
      • مهندسی ویژگی‌ها
        • سن فروشگاه
        • کدگذاری برچسبی برای متغیرهای دسته‌بندی‌شده
      • تقسیم داده‌ها
      • ساخت و ارزیابی مدل‌ها
        • رگرسیون خطی
        • رگرسیون Elastic Net
        • رگرسیون جنگل تصادفی (Random Forest)
        • رگرسیون درخت‌های اضافی (Extra Trees)
        • رگرسیون تقویتی گرادیان (Gradient Boosting)
        • رگرسیون شبکه عصبی چندلایه (MLP)
        • رگرسیون اسپلاین تطبیقی چندمتغیره (MARS)
        • رگرسیون اسپلاین
        • مدل‌های افزایشی تعمیم‌یافته (Generalized Additive Models)
          • LinearGAM
          • PoissonGAM
          • GammaGAM
        • رگرسیون ترکیبی (Voting Regressor)
        • رگرسیون انباشته (Stacking Regressor)
        • ترکیب مدل‌ها (Model Blending)

پاک‌سازی و پردازش داده‌ها

در این پروژه یادگیری ماشین پیش‌بینی فروش BigMart، پاک‌سازی داده‌ها با استفاده از کوئری‌های SQL انجام می‌شود. پس از ورود به پایگاه داده Redshift، شما می‌توانید مجموعه داده خود را با استفاده از کوئری‌های SQL بررسی کرده و مقادیر گمشده یا null را شناسایی کنید. مدیریت مقادیر گمشده یا null شامل شناسایی ستون‌هایی است که دارای این مقادیر هستند، مانند ستون “Item_Weight” که ممکن است مقادیر گمشده داشته باشد. شما باید یک استراتژی مناسب برای مدیریت این مقادیر تعیین کنید. به عنوان مثال، می‌توانید مقادیر گمشده را با میانگین وزن محصولات مشابه پر کنید یا از تکنیک‌های پیشرفته‌تر برای تخمین این مقادیر بر اساس متغیرهای دیگر استفاده کنید.

برای حل این مسئله، مقادیر گمشده در ستون‌هایی مانند outlet_size و item_weight را شناسایی و مدیریت خواهید کرد. با استفاده از کوئری‌های SQL، جدول ‘public_data’ به‌روزرسانی شده و مقادیر گمشده در ستون item_weight با میانگین محاسبه‌شده برای نوع خاصی از محصولات (item_type) پر می‌شود. همچنین اگر ردیف‌هایی با مقادیر گمشده برای راه‌حل شما اهمیت ندارند، می‌توانید آن‌ها را حذف کنید. و برای مدیریت مقادیر گمشده در ستون outlet_size، شما پایگاه داده Redshift را به محیط Colab در پایتون متصل می‌کنید و سپس با ترکیب کوئری‌های SQL و پایتون، این مقادیر گمشده را به‌روزرسانی می‌کنید.

تحلیل داده‌های اکتشافی بر روی مجموعه داده‌های فروش BigMart

گام بعدی در این پروژه پیش‌بینی یادگیری ماشین، انجام تحلیل داده‌های اکتشافی بر روی مجموعه داده است:
متغیرهای دسته‌ای (Categorical Variables)

      • بررسی هر ستون مجموعه داده به‌طور جداگانه و حذف مقادیر تکراری.
      • شناسایی متغیرهای دسته‌ای مانند “Outlet_Location_Type” و “Outlet_Type”.
      • کدگذاری این متغیرها با استفاده از روش‌هایی مانند One-Hot Encoding (ایجاد ستون‌های باینری برای هر دسته) یا Ordinal Encoding (اختصاص مقادیر عددی بر اساس ترتیب یا اهمیت دسته‌ها).
      • ترسیم نمودارها و مصورسازی‌های مختلف با استفاده از کتابخانه‌های پایتون مانند Seaborn برای متغیرهای دسته‌ای، شامل outlet_size، outlet_type، outlet_establishment_year و غیره.

متغیرهای پیوسته (Continuous Variables)

      • تولید نمودارهای توزیع (distplots) برای متغیرهای پیوسته مانند item_weight و item_visibility با استفاده از کتابخانه Seaborn.
      • تولید نمودارهای خطی مدل‌سازی (lmplots) برای مصورسازی رابطه خطی بین این متغیرها.

این پروژه از تکنیک‌های مختلف تحلیل همبستگی برای تعیین ارتباط بین متغیرهای دسته‌ای موجود در مجموعه داده استفاده می‌کند. شما از آزمون کای‌دو (Chi-squared Test) با جدول تلاقی ۲x۲ برای شناسایی ارتباط بین متغیرهای دسته‌ای (outlet_type و outlet_size) و ارزیابی معناداری آماری آن‌ها استفاده خواهید کرد. همچنین از آزمون کرامر V (Cramer’s V Test) بر روی سه ستون (outlet_size، outlet_type و location_type) برای اندازه‌گیری قدرت ارتباط بین این متغیرهای دسته‌ای بهره خواهید برد. علاوه بر این، از تکنیک ANOVA تک‌عاملی (One-way ANOVA) برای پیدا کردن ارتباط بین یک متغیر عددی (item_outlet_size) و یک متغیر دسته‌ای (outlet_size) استفاده خواهد شد.

مهندسی ویژگی ها

پس از پایان اکتشاف داده، به مرحله بعدی در این پروژه پیش‌بینی فروش، یعنی مهندسی ویژگی‌ها خواهید رفت. این مرحله شامل افزودن ویژگی‌های جدید به مجموعه داده یا تغییر ویژگی‌های موجود است؛ به‌عنوان‌مثال، جایگزینی مقادیر صفر در ستون item_visibility با مقادیر جدید. شما بررسی خواهید کرد که آیا outlet_establishment_year بر فروش فروشگاه تأثیر دارد یا خیر، با ایجاد ستونی جدید به نام outlet_age. همچنین برخی از ستون‌ها مانند item_fat_content و outlet_identifier را رمزگذاری (Encoding) خواهید کرد. قبل از انتقال داده‌های پردازش‌شده به مرحله بعدی یعنی ساخت مدل، مجموعه داده را به دو بخش آموزشی (Train) و آزمایشی (Test) تقسیم خواهید کرد.

ساخت مدل نهایی

در این پروژه از چندین مدل یادگیری ماشین، مانند رگرسیون خطی، ElasticNet، جنگل تصادفی (Random Forest)، Extra Trees، گرادیان بوستینگ (Gradient Boosting) و پرسبترون چندلایه (MultiLayer Perceptron) استفاده می‌شود. شما مقدار R-squared را برای همه این مدل‌ها با ایجاد یک تابع انتخاب مدل پایه و ارسال پارامترهای مختلف، ازجمله مجموعه داده آموزشی و لیست مدل‌ها، محاسبه خواهید کرد.

بااین‌حال، مقدار R-squared برای تمامی این مدل‌ها و مدل‌های جدیدی مانند رگرسیون چندمتغیره تطبیقی (MARS) و مدل‌های افزایشی تعمیم‌یافته (GAM) را بررسی خواهید کرد تا راه‌حل نهایی پروژه خود را ارائه دهید.

بهبود عملکرد مدل نهایی

تکنیک‌های Ensemble، مانند رأی‌گیری مدل (Model Voting)، انباشته‌سازی مدل (Model Stacking) و ترکیب مدل (Model Blending)، به طور گسترده توسط دانشمندان داده در پروژه‌های علوم داده برای بهبود عملکرد و دقت مدل‌های یادگیری ماشین استفاده می‌شوند.

    1. مدل رأی‌گیری (Model Voting):
      در این پروژه، شما با تکنیک مدل رأی‌گیری شروع خواهید کرد. سه مدل مختلف شامل رگرسیون خطی، GBM (گرادیان بوستینگ) و MLP Regressor را ایجاد کرده و آن‌ها را به عنوان مدل رأی‌گیری ترکیب می‌کنید. این مدل با استفاده از پارامترهایی مانند estimators (مدل‌های ایجاد شده) اجرا می‌شود. سپس امتیاز اعتبارسنجی متقابل (Cross-Validation Score) برای هر سه مدل محاسبه می‌شود و میانگین امتیاز R-squared به دست می‌آید.
    2. مدل انباشته (Model Stacking):
      در این تکنیک، پیش‌بینی‌های چندین مدل (مدل‌های پایه) ترکیب شده و یک متا-مدل آموزش داده می‌شود. متا-مدل به عنوان ورودی، خروجی‌های مدل‌های پایه را دریافت می‌کند و تصمیم نهایی را ارائه می‌دهد.
    3. مدل ترکیبی (Model Blending):
      مدل ترکیبی با استفاده از ترکیب پیش‌بینی‌های چندین مدل از طریق میانگین‌گیری وزنی خروجی‌های آن‌ها عمل می‌کند. این تکنیک به کاهش بیش‌برازش (Overfitting) و بهبود تعمیم مدل کمک می‌کند و عملکرد بهتری روی داده‌های دیده‌نشده ارائه می‌دهد.

در این پروژه، پس از اجرای مدل انباشته، به مدل ترکیبی می‌رسید. این مرحله شامل ایجاد یک مجموعه اعتبارسنجی (Validation Set) از داده‌های آموزشی و سپس ایجاد یک تابع Append برای مدل‌های پایه مشابه در مدل انباشته است. همچنین، یک تابع دیگر به نام pred_data ایجاد می‌کنید تا پیش‌بینی‌های سطح اول را روی داده‌های تست واقعی دریافت کنید.

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

این آخرین مرحله از پروژه پیش‌بینی فروش است که در آن مدل‌های با عملکرد بالاتر را روی داده‌های آزمون آزمایش می‌کنید. و از طریق محاسبه امتیازهای R-squared برای تمام مدل‌ها، بهترین مدل برای پیاده‌سازی مشخص می‌گردد. گام‌های بعدی در راه‌حل پروژه شامل ذخیره‌سازی تمام کدگذارها و مدل‌های مناسب، انجام آزمایش‌های اعتبارسنجی داده، رسیدگی به مقادیر گم‌شده/نادرست در داده‌های جدید، تولید پیش‌بینی‌ها بر روی داده‌های جدید، ارسال نتایج به پایگاه داده و در نهایت پیاده‌سازی مدل است- ابتدا در سیستم لوکال و سپس در Claud.