جستجو برای:
  • دوره‌های آموزشی
  • وبلاگ
  • آموزش‌های رایگان
    • آموزش پایتون رایگان
    • آموزش یادگیری ماشین رایگان
    • آموزش یادگیری عمیق رایگان
    • آموزش pytorch رایگان
    • آموزش رایگان matplotlib
    • آموزش گوگل کولب
  • نقشه راه AI
  • کلاس خصوصی
  • همکاری با ما💚
  • حساب کاربری
  • اساتید
  • درباره ما
     
    • 0902-546-9248
    • howsam.mail@gmail.com
    آکادمی هوش مصنوعی هوسم
    • دوره‌های آموزشی
    • آموزش‌های رایگان
      • آموزش پایتون
      • آموزش یادگیری ماشین رایگان
      • آموزش یادگیری عمیق رایگان
      • آموزش pytorch رایگان
      • آموزش گوگل کولب
    • نقشه راه AI
    • وبلاگ
    • درباره ما
      • اساتید
      • پشتیبانی
    0
    ورود / عضویت

    بلاگ

    آکادمی هوش مصنوعی هوسم وبلاگ یادگیری ماشین آموزش PCA

    آموزش PCA

    2023/12/13
    ارسال شده توسط سید سجاد اشرفی
    یادگیری ماشین
    7.44k بازدید

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

    فهرست مطالب نمایش
    1. منهای الگوریتم PCA
    2. کاهش بعد
    3. الگوریتم PCA چیست
    3.1. میانگین محوری داده‌ها
    3.2. محاسبه ماتریس کواریانس
    3.3. تجزیه با Eigen
    3.4. انتخاب k مولفه اساسی بزرگتر
    3.5. پروجکشن یا ترنسفورم
    4. جمع‌بندی آموزش PCA

    منهای الگوریتم PCA

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

    آموزش PCA
    شکل 1: 😄 [منبع]
    به نظر من که درست هست! 😃 خب این از صحبت‌های خودمانی اولِ کار؛ حالا برویم ادامه آموزش PCA و کار را جدی شروع کنیم…

    کاهش بعد

    الگوریتم PCA یک الگوریتم کاهش بعد هست. پس اول بیایید ببینیم کاهش بعد یعنی چه؟ یک تعریف یک خطی برای شما آماده کردم! کاهش بعد یعنی:

    کاهش تعداد ویژگی‌ها در عین حفظ اطلاعات و الگوهای مهم در داده

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

    • مگر می‌شود یک داده با 3 ویژگی را به 2 ویژگی برسانیم و اطلاعات ارزشمند هم حفظ شود؟!
      • بله می‌شود! یک نمونه مثال از دنیای واقعی برای شما آوردم. به شکل 2 نگاه کنید؛ آنچه فرد با دستان خود نشان می‌دهد، در فضای سه بعدی است. اما، سایه دست‌ها در فضای دو بعدی است. واضح است که فضای سه بعدی اطلاعات بیشتری به ما می‌دهد؛ مثلا، نحوه قرارگیری دست‌ها را به ما نشان می‌دهد. اما نمی‌توانیم انکار کنیم که سایه‌ها (فضای دو بعدی) اطلاعات و الگوهای مهم در فضای سه بعدی را حفظ کرده است. یکسری اطلاعات مانند نحوه قرارگیری دست‌ها که برای بیننده ارزش کمتری دارد، حذف شده است. در دنیای داده‌ها هم همین ماجرا وجود دارد.
    • اصلا چرا ما به کاهش بعد نیاز داریم؟!
      • من سه دلیل نیاز به کاهش بعد را برای شما لیست کردم:
        • ساده‌سازی داده‌های پیچیده (هرچه تعداد ویژگی‌ها بیشتر، پیچیدگی هم بیشتر!)
        • حذف زائدها (مثلا یکسری اطلاعات در شکل 2 اضافه بود)
        • نمایش بصری (داده چهاربعدی را به دو بعد بیاوریم تا بتوانیم نمایش دهیم)
    آموزش PCA
    شکل 2: سایه در واقع یک کاهش بُعد از فضای سه‌بعدی به فضای دوبعدی است.

    خب امیدوارم ابهام‌ها و سوال‌هایتان رفع شده باشد. حالا می‌توانیم الگوریتم کاهش بعد PCA را شروع کنیم، برویم ادامه آموزش PCA. 😬

    الگوریتم PCA چیست

    تعریف الگوریتم Principal Component Analysis یا PCA این است:

    تبدیل ویژگی‌های اصلی به ویژگی‌های بدون همبستگی

    یعنی چه؟ اگر به شکل زیر (شکل سمت چپ) نگاه کنید، کاملا مشخص است که بین ویژگی اول و دوم در شکل سمت چپ همبستگی یا کورلیشن وجود دارد. یعنی، با افزایش مقادیر در ویژگی اول (x1)، مقادیر ویژگی دوم (x2) افزایش می‌یابد. اما زمانی‌که روی این دیتاست، PCA اعمال می‌شود، ویژگی‌های بدون همبستگی حاصل می‌شود (شکل سمت راست). دیگر با افزایش/کاهش یکی از ویژگی‌ها، دیگری افزایش/کاهش نمی‌یابد.

     

    ​

    شکل 3: تصویر یک دیتاست قبل (سمت چپ) و بعد (سمت راست) از اعمال PCA

    حالا سوالی که پیش می‌آید: “مگر نگفتیم که PCA کاهش بعد می‌دهد؟ در شکل بالا که از دو بعد دوباره به دو بعد رفتیم!” در ادامه به این سوال هم جواب داده می‌شود. فعلا بدانید که ویژگی‌ها در خروجی PCA همبستگی ندارند.

    دیگر وقتش رسیده که مراحل الگوریتم PCA را ببینیم. به صورت خلاصه، الگوریتم PCA شامل مراحل زیر است:

    • میانگین محوری داده‌ها
    • محاسبه کواریانس
    • تجزیه ماتریس کواریانس با Eigen
    • انتخاب K مولفه اساسی بزرگتر
    • پروجکت داده‌های اصلی به فضای جدید

    در ادامه، درمورد تک تک این مراحل توضیح می‌دهم. اما، بهتر هست یک دیتاست داشته باشیم و همه این مراحل را روی این دیتاست به شما نشان دهم. یک دیتاست دسته‌بندی داریم که شامل 6 داده از دو کلاس هست. می‌خواهیم ابعاد این دیتاست دوکلاسه و دوبعدی را به یک بعد کاهش بعد دهیم.

    آموزش PCA
    شکل 4: دیتاستی که مطابق با آن آموزش را جلو خواهیم برد.

    میانگین محوری داده‌ها

    در این مرحله، ابتدا میانگین داده‌ها (µ) محاسبه می‌شود. میانگین داده‌ها، برداری به طول تعداد ویژگی‌های دیتاست هست. سپس، تفاضل بین تک تک داده‌ها با میانگین محاسبه می‌شود:

    X ← X – µ

    در شکل زیر، نتیجه میانگین محوری کردن داده‌ها را مشاهده می‌کنید. حالا دیگر میانگین داده‌ها برابر با صفر هست.

    آموزش PCA
    شکل 5: دیتاست بعد از میانگین محوری

    محاسبه ماتریس کواریانس

    در این مرحله باید ماتریس کواریانس دیتاست محاسبه شود. ماتریس کواریانس، یک ماتریس مربعی به ابعاد تعداد ویژگی‌هاست. ماتریس کواریانس طبق رابطه زیر محاسبه می‌شود:

    برگردیم به دیتاست خودمان؛ برای دیتاست ما، ماتریس کواریانس یک ماتریس 2×2 است. روی قطر اصلی، واریانس برای تک تک ویژگی‌ها آمده است. یعنی، طبق شکل زیر میزان پراکندگی در ویژگی اول 1.2 و برای ویژگی دوم برابر با 1.7 است. خب، طبق شکل هم مشخص است که میزان پراکندگی در راستای ویژگی دوم نسبت به ویژگی اول کمی بیشتر است.

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

    تجزیه با Eigen

    دو روش رایج برای تجزیه ماتریس وجود دارد: Eigen Decomposition و Singular Value Decomposition. من قصد ندارم درمورد این مباحث در اینجا توضیح بدهم. چون هرکدام یک آموزش جداگانه نیاز دارند. اینجا صرفا به شکلی ساده از Eigen Decomposition استفاده می‌کنیم.

    روش Eigen روی ماتریس‌های مربعی اعمال می‌شود. در اینجا هم، ماتریس مربعی کواریانس (2×2) را به Eigen می‌دهیم تا تجزبه انجام شود. خروجی تجزیه Eigen، بردارهای ویژه (Eigen Vectors) و مقدارهای ویژه (Eigen Values) هست. بردار ویژه و مقدار ویژه برای دیتاست ما به شکل زیر است:

    دو بردار ویژه و دو مقدار ویژه داریم. بردارهای ویژه به صورت ستونی کنار هم چیده شده‌اند و یک ماتریس به نام V تشکیل داده‌اند. مقادیر ویژه هم در کنار هم قرار گرفته و یک بردار تشکیل داده‌اند. مشاهده می‌کنید که بردارها دوبعدی هستند. بنابراین، می‌توانیم آنها را رسم کنیم. در شکل زیر، این دو بردار با فلش‌های سبز رسم شده‌اند.

    شکل 6: بردارهای ویژه با رنگ سبز رسم شده‌اند.

    شکل بالا دو خط مهم را نشان می‌دهد. خط اول که در ناحیه اول و سوم هست، در جهتی است که داده‌ها بیشترین پراکندگی را دارند. خط ناحیه دوم و چهارم در جهتی است که داده‌ها تغییرات کمتری دارند. این مساله از روی مقدار ویژه‌ها کاملا مشخص است. مقدار ویژه اولی عدد بزرگ 2.7 است و برای دومی حدودا ده برابر کوچکتر است. یعنی هرچه مقدار ویژه بزرگتر باشد، نشان دهنده این است که تغییرات در آن راستا بیشتر است.

    انتخاب k مولفه اساسی بزرگتر

    اول باید درمورد مولفه اساسی توضیح بدهم؛ ما به بردارهای ویژه بدست آمده در مرحله قبل، مولفه اساسی یا Principal Component می‌گوییم. در مرحله قبلی به دو مولفه اساسی رسیدیم. حالا می‌توانیم مقدارویژه‌ها را از بزرگ به کوچک کنیم و k مقدار بزرگتر را انتخاب کنیم. ما اینجا مقدار k را 1 درنظر می‌گیریم. بزرگترین مقدار ویژه 2.7 است و بردارویژه متناظر با آن هم ستون دوم ماتریس V است.

    پروجکشن یا ترنسفورم

    حالا که k مولفه اساسی انتخاب شد، کافی است داده‌های خود را با آن ترنسفورم کنیم. برای این کار هم باید یک ضرب ماتریسی استفاده کنیم:

    مشاهده می‌کنید که ماتریس دیتاست ما به سایز 6×2 به یک بردار به طول 6 تبدیل شد. یعنی از دو بعد به یک بعد رفتیم. کاهش بعد اتفاق افتاد. در شکل زیر هم کاهش بعد از دو به یک نشان داده شده است. در واقع، می‌توان گفت که داده‌ها روی یکی از خط‌ها (مولفه‌های اساسی) تصویر شده‌اند.

    شکل 7: وضعیت داده‌ها بعد از تصویر روی مولفه اساسی دوم

    خب، مراحل الگوریتم PCA به پایان رسید. به همین سادگی! اما، یک سوال: اگر بجای مولفه اساسی دوم، مولفه اساسی اول را انتخاب می‌کردیم، نتیجه چطور می‌شد؟ در شکل 8، نتیجه تصویر داده‌ها روی مولفه اساسی اول با مقدار ویژه 0.24 نشان داده شده است. خودتان مقایسه کنید که بین شکل بالایی و پایینی کدام کاهش بعد بهتری است و دلیل هم بیاورید.

    شکل 8: وضعیت داده‌ها بعد از تصویر روی مولفه اساسی اول

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

    جمع‌بندی آموزش PCA

    خب، این هم از آموزش PCA. یکی دیگر از جلسات دوره یادگیری ماشین رایگان هم تمام شد. لطفا مثل همیشه کامنت بگذارید و فیدبک دهید تا بتوانیم آموزش‌ها را بهتر کنیم. راستی، در دوره یادگیری ماشین 2022 هوسم حدود 7 ساعت درمورد کاهش بعد صحبت کرده‌ایم. برای کسب اطلاعات بیشتر درمورد کاهش بعد، این دوره را به شما پیشنهاد می‌کنیم.

    اشتراک گذاری:

    مطالب زیر را حتما مطالعه کنید

    چرخه حیات یادگیری ماشین (ML Lifecycle)
    چرخه حیات یادگیری ماشین (ML Lifecycle) چیست؟ توسعه یک سیستم یادگیری ماشین در دنیای واقعی...
    یادگیری ماشین بدون ریاضی و کدنویسی
    آیا یاد گرفتن یادگیری ماشین بدون دانش ریاضی و مهارت کدنویسی امکان‌پذیر است؟ پاسخ کوتاهش...
    پیش‌نیازهای یادگیری ماشین
    آیا واقعا برای شروع یادگیری ماشین به سیستم‌های گران‌قیمت، دکتری ریاضی و ۱۰۰ ساعت آموزش...
    یادگیری ماشین چیست
    یادگیری ماشین (Machine Learning) چیست؟ به زبان ساده و به دور از فرمول‌های پیچیده، یادگیری...
    فرآیند کریسپ (CRISP)
    بسیاری از پروژه‌های علم داده نه به دلیل ضعف مدل، بلکه به دلیل تعریف نادرست...
    آموزش سایکیت لرن
    در این مقاله به آموزش سایکیت لرن، کتابخانه قدرتمند و محبوب یادگیری ماشین خواهم پرداخت....

    10 دیدگاه

    به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

    • محسن رودکی گفت:
      2025/01/15 در 7:43 ب.ظ

      ضمن عر تشکر از این محتوای عالی، راستش من متوجه مختصات جدید تصویر شده نمیشم. یعنی متوجه نمیشم که بردار 6*1 بعد از ترنسفورم رو چگونه باید روی مختصات پیدا کرد.

      پاسخ
      • هوسم گفت:
        2025/01/18 در 10:46 ق.ظ

        یک دستگاه مختصات یک‌بعدی در نظر بگیرید؛ حالا، این n نقطه رو باید روی این دستگاه مختصات تعیین کنید.

        پاسخ
    • شادی گفت:
      2024/12/02 در 9:30 ب.ظ

      عالی و قابل فهم بود.ممنون

      پاسخ
      • هوسم گفت:
        2024/12/03 در 10:29 ق.ظ

        سپاس 🌹🙏

        پاسخ
    • نیما آقاجان زاده گفت:
      2024/11/04 در 7:49 ب.ظ

      سلام
      از تیم هوسم بابت آموزش آسون و راحت الحلقومیشون تشکر میکنم 🙂

      پاسخ
      • هوسم گفت:
        2024/11/05 در 10:43 ق.ظ

        سلام
        سپاس 😊🌹🙏

        پاسخ
    • سارا گفت:
      2024/06/24 در 8:10 ق.ظ

      عالی بود

      پاسخ
    • f.ranjbaran2020 گفت:
      2024/04/27 در 10:49 ب.ظ

      خیلی عالییی بود ممنونم. لطفا راهنمایی میکنید برای آشنایی با ریاضیات بکار رفته چه منابعی بخونیم؟

      پاسخ
    • علی گفت:
      2024/04/12 در 11:12 ق.ظ

      عالی بود خدا قوت

      پاسخ
    • sara گفت:
      2024/03/05 در 11:39 ق.ظ

      خیلی عالی و قابل فهم بود ممنونم

      پاسخ

    دیدگاهتان را بنویسید لغو پاسخ

    جستجو برای:
    فهرست مطالب دوره
    • آموزش یادگیری ماشین رایگان
    • جلسه 01: یادگیری ماشین چیست؟
    • جلسه 02: انواع یادگیری در یادگیری ماشین
    • جلسه 03: گرادیان کاهشی
    • جلسه 04: رگرسیون در یادگیری ماشین
    • جلسه 05: رگرسیون لجستیک
    • جلسه 06: الگوریتم k-means
    • جلسه 07: الگوریتم PCA
    • جلسه 08: درخت تصمیم
    • جلسه 09: الگوریتم KNN
    • جلسه 10: یادگیری گروهی
    • جلسه 11: ماشین بردار پشتیبان
    دوره‌های جامع هوسم
    • مسابقه Kaggle: تحلیل و پیش‌بینی رفتار با داده‌های چندحسگری سری زمانی
    • پیاده‌سازی ChatGPT از صفر با پایتورچ
    • آموزش OpenCV: از پردازش تا بینایی
    • دیپ کاتالیست: دوره افزایش مهارت
    • پایتون برای هوش مصنوعی 🤖
    • یادگیری ماشین جامع: از مفاهیم تا پیاده‌سازی🔥
    • یادگیری عمیق جامع: از مفاهیم تا پیاده‌سازی
    درباره هوسم

    آکادمی هوش مصنوعی هوسم با آموزش‌های تخصصی در حوزه هوش مصنوعی در خدمت شماست. روی کمک هوسم حساب کنید…

    • گیلان- شهرستان رودسر- شهرک انصاری- کوچه لاله 9
    • 09025469248
    • howsam.mail@gmail.com
    دسترسی سریع
    • صفحه اصلی
    • وبلاگ
    • حساب کاربری
    • سبد خرید
    شبکه‌های اجتماعی

     

    logo-samandehi
    تمامی حقوق برای آکادمی هوسم محفوظ است.
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      ورود
      استفاده از موبایل
      استفاده از آدرس ایمیل
      آیا هنوز عضو نیستید؟ اکنون عضو شوید
      بازنشانی رمز عبور
      استفاده از موبایل
      استفاده از آدرس ایمیل
      عضویت
      استفاده از موبایل
      استفاده از ایمیل
      قبلا عضو شدید؟ اکنون وارد شوید

      ورود

      رمز عبور را فراموش کرده اید؟

      هنوز عضو نشده اید؟ عضویت در سایت