آموزش PCA
الگوریتم کاهش بعد PCA یا تحلیل مولفه اساسی، یکی از معروفترین الگوریتمهای کاهش بعد در یادگیری ماشین است. این پست به آموزش PCA اختصاص دارد. با من همراه باشید تا قدم به قدم به شما آموزش دهم که PCA چیست و چگونه کار میکند.
منهای الگوریتم PCA
ســـــــلام، امیدوارم حالتان خوب باشد. من آمدم تا هفتمین جلسه از سری جلسات دوره یادگیری ماشین رایگان را برای شما بنویسم. پیامهای دوستان پای پستهای قبلی را میخوانم و خوشحال میشوم. نگارش این پست همزمان شده با ضبط هفته نوزدهم دوره یادگیری ماشین هوسم که مربوط به بحث کاهش بعد است. ریاضیات در کاهش بعد زیاد و پررنگ است. فکر میکنم به همین خاطر هست که برای الگوریتم PCA چنین تصویری را ساختهاند:
به نظر من که درست هست! 😃 خب این از صحبتهای خودمانی اولِ کار؛ حالا برویم ادامه آموزش PCA و کار را جدی شروع کنیم…کاهش بعد
الگوریتم PCA یک الگوریتم کاهش بعد هست. پس اول بیایید ببینیم کاهش بعد یعنی چه؟ یک تعریف یک خطی برای شما آماده کردم! کاهش بعد یعنی:
کاهش تعداد ویژگیها در عین حفظ اطلاعات و الگوهای مهم در داده
خب، تعریف به ما میگوید که میخواهیم با کاهش بعد تعداد ویژگیها را کاهش دهیم. اما در عین حال باید تا جای ممکن اطلاعات ارزشمند و الگوهای مهم در داده اصلی را حفظ کنیم. اینجا شاید دو سوال مهم برای شما پیش بیاید:
- مگر میشود یک داده با 3 ویژگی را به 2 ویژگی برسانیم و اطلاعات ارزشمند هم حفظ شود؟!
- بله میشود! یک نمونه مثال از دنیای واقعی برای شما آوردم. به شکل 2 نگاه کنید؛ آنچه فرد با دستان خود نشان میدهد، در فضای سه بعدی است. اما، سایه دستها در فضای دو بعدی است. واضح است که فضای سه بعدی اطلاعات بیشتری به ما میدهد؛ مثلا، نحوه قرارگیری دستها را به ما نشان میدهد. اما نمیتوانیم انکار کنیم که سایهها (فضای دو بعدی) اطلاعات و الگوهای مهم در فضای سه بعدی را حفظ کرده است. یکسری اطلاعات مانند نحوه قرارگیری دستها که برای بیننده ارزش کمتری دارد، حذف شده است. در دنیای دادهها هم همین ماجرا وجود دارد.
- اصلا چرا ما به کاهش بعد نیاز داریم؟!
- من سه دلیل نیاز به کاهش بعد را برای شما لیست کردم:
- سادهسازی دادههای پیچیده (هرچه تعداد ویژگیها بیشتر، پیچیدگی هم بیشتر!)
- حذف زائدها (مثلا یکسری اطلاعات در شکل 2 اضافه بود)
- نمایش بصری (داده چهاربعدی را به دو بعد بیاوریم تا بتوانیم نمایش دهیم)
- من سه دلیل نیاز به کاهش بعد را برای شما لیست کردم:
خب امیدوارم ابهامها و سوالهایتان رفع شده باشد. حالا میتوانیم الگوریتم کاهش بعد PCA را شروع کنیم، برویم ادامه آموزش PCA. 😬
الگوریتم PCA چیست
تعریف الگوریتم Principal Component Analysis یا PCA این است:
تبدیل ویژگیهای اصلی به ویژگیهای بدون همبستگی
یعنی چه؟ اگر به شکل زیر (شکل سمت چپ) نگاه کنید، کاملا مشخص است که بین ویژگی اول و دوم در شکل سمت چپ همبستگی یا کورلیشن وجود دارد. یعنی، با افزایش مقادیر در ویژگی اول (x1)، مقادیر ویژگی دوم (x2) افزایش مییابد. اما زمانیکه روی این دیتاست، PCA اعمال میشود، ویژگیهای بدون همبستگی حاصل میشود (شکل سمت راست). دیگر با افزایش/کاهش یکی از ویژگیها، دیگری افزایش/کاهش نمییابد.
شکل 3: تصویر یک دیتاست قبل (سمت چپ) و بعد (سمت راست) از اعمال PCA |
حالا سوالی که پیش میآید: “مگر نگفتیم که PCA کاهش بعد میدهد؟ در شکل بالا که از دو بعد دوباره به دو بعد رفتیم!” در ادامه به این سوال هم جواب داده میشود. فعلا بدانید که ویژگیها در خروجی PCA همبستگی ندارند.
دیگر وقتش رسیده که مراحل الگوریتم PCA را ببینیم. به صورت خلاصه، الگوریتم PCA شامل مراحل زیر است:
- میانگین محوری دادهها
- محاسبه کواریانس
- تجزیه ماتریس کواریانس با Eigen
- انتخاب K مولفه اساسی بزرگتر
- پروجکت دادههای اصلی به فضای جدید
در ادامه، درمورد تک تک این مراحل توضیح میدهم. اما، بهتر هست یک دیتاست داشته باشیم و همه این مراحل را روی این دیتاست به شما نشان دهم. یک دیتاست دستهبندی داریم که شامل 6 داده از دو کلاس هست. میخواهیم ابعاد این دیتاست دوکلاسه و دوبعدی را به یک بعد کاهش بعد دهیم.
میانگین محوری دادهها
در این مرحله، ابتدا میانگین دادهها (µ) محاسبه میشود. میانگین دادهها، برداری به طول تعداد ویژگیهای دیتاست هست. سپس، تفاضل بین تک تک دادهها با میانگین محاسبه میشود:
X ← X – µ
در شکل زیر، نتیجه میانگین محوری کردن دادهها را مشاهده میکنید. حالا دیگر میانگین دادهها برابر با صفر هست.
محاسبه ماتریس کواریانس
در این مرحله باید ماتریس کواریانس دیتاست محاسبه شود. ماتریس کواریانس، یک ماتریس مربعی به ابعاد تعداد ویژگیهاست. ماتریس کواریانس طبق رابطه زیر محاسبه میشود:
برگردیم به دیتاست خودمان؛ برای دیتاست ما، ماتریس کواریانس یک ماتریس 2×2 است. روی قطر اصلی، واریانس برای تک تک ویژگیها آمده است. یعنی، طبق شکل زیر میزان پراکندگی در ویژگی اول 1.2 و برای ویژگی دوم برابر با 1.7 است. خب، طبق شکل هم مشخص است که میزان پراکندگی در راستای ویژگی دوم نسبت به ویژگی اول کمی بیشتر است.
سایر اعداد خارج قطر اصلی هم به میزان ارتباط بین ویژگی اول و دوم اشاره میکند. چون این مقدار صفر نیست، پس حتما ارتباطی بین ویژگی اول و دوم وجود دارد. از روی شکل هم این مشخص است که با افزایش مقدار ویژگی اول، ویژگی دوم هم افزایش مییابد.
تجزیه با Eigen
دو روش رایج برای تجزیه ماتریس وجود دارد: Eigen Decomposition و Singular Value Decomposition. من قصد ندارم درمورد این مباحث در اینجا توضیح بدهم. چون هرکدام یک آموزش جداگانه نیاز دارند. اینجا صرفا به شکلی ساده از Eigen Decomposition استفاده میکنیم.
روش Eigen روی ماتریسهای مربعی اعمال میشود. در اینجا هم، ماتریس مربعی کواریانس (2×2) را به Eigen میدهیم تا تجزبه انجام شود. خروجی تجزیه Eigen، بردارهای ویژه (Eigen Vectors) و مقدارهای ویژه (Eigen Values) هست. بردار ویژه و مقدار ویژه برای دیتاست ما به شکل زیر است:
دو بردار ویژه و دو مقدار ویژه داریم. بردارهای ویژه به صورت ستونی کنار هم چیده شدهاند و یک ماتریس به نام V تشکیل دادهاند. مقادیر ویژه هم در کنار هم قرار گرفته و یک بردار تشکیل دادهاند. مشاهده میکنید که بردارها دوبعدی هستند. بنابراین، میتوانیم آنها را رسم کنیم. در شکل زیر، این دو بردار با فلشهای سبز رسم شدهاند.
شکل بالا دو خط مهم را نشان میدهد. خط اول که در ناحیه اول و سوم هست، در جهتی است که دادهها بیشترین پراکندگی را دارند. خط ناحیه دوم و چهارم در جهتی است که دادهها تغییرات کمتری دارند. این مساله از روی مقدار ویژهها کاملا مشخص است. مقدار ویژه اولی عدد بزرگ 2.7 است و برای دومی حدودا ده برابر کوچکتر است. یعنی هرچه مقدار ویژه بزرگتر باشد، نشان دهنده این است که تغییرات در آن راستا بیشتر است.
انتخاب k مولفه اساسی بزرگتر
اول باید درمورد مولفه اساسی توضیح بدهم؛ ما به بردارهای ویژه بدست آمده در مرحله قبل، مولفه اساسی یا Principal Component میگوییم. در مرحله قبلی به دو مولفه اساسی رسیدیم. حالا میتوانیم مقدارویژهها را از بزرگ به کوچک کنیم و k مقدار بزرگتر را انتخاب کنیم. ما اینجا مقدار k را 1 درنظر میگیریم. بزرگترین مقدار ویژه 2.7 است و بردارویژه متناظر با آن هم ستون دوم ماتریس V است.
پروجکشن یا ترنسفورم
حالا که k مولفه اساسی انتخاب شد، کافی است دادههای خود را با آن ترنسفورم کنیم. برای این کار هم باید یک ضرب ماتریسی استفاده کنیم:
مشاهده میکنید که ماتریس دیتاست ما به سایز 6×2 به یک بردار به طول 6 تبدیل شد. یعنی از دو بعد به یک بعد رفتیم. کاهش بعد اتفاق افتاد. در شکل زیر هم کاهش بعد از دو به یک نشان داده شده است. در واقع، میتوان گفت که دادهها روی یکی از خطها (مولفههای اساسی) تصویر شدهاند.
خب، مراحل الگوریتم PCA به پایان رسید. به همین سادگی! اما، یک سوال: اگر بجای مولفه اساسی دوم، مولفه اساسی اول را انتخاب میکردیم، نتیجه چطور میشد؟ در شکل 8، نتیجه تصویر دادهها روی مولفه اساسی اول با مقدار ویژه 0.24 نشان داده شده است. خودتان مقایسه کنید که بین شکل بالایی و پایینی کدام کاهش بعد بهتری است و دلیل هم بیاورید.
با مقایسه دو شکل 7 و 8 کاملا مشخص است که شکل 7 بهتر هست. چون، حداکثر تغییرات یا پراکندگی را حفظ کرده است. یعنی دو کلاس آبی و قرمز کاملا ازهم تفکیک شدهاند. درحالیکه، در شکل 8، دو کلاس از هم مجزا نیستند و دادهها روی هم افتادهاند. پس به این دلیل است که ما بزرگترین مقدار ویژه را برای کاهش بعد انتخاب کردیم.
جمعبندی آموزش PCA
خب، این هم از آموزش PCA. یکی دیگر از جلسات دوره یادگیری ماشین رایگان هم تمام شد. لطفا مثل همیشه کامنت بگذارید و فیدبک دهید تا بتوانیم آموزشها را بهتر کنیم. راستی، در دوره یادگیری ماشین 2022 هوسم حدود 7 ساعت درمورد کاهش بعد صحبت کردهایم. برای کسب اطلاعات بیشتر درمورد کاهش بعد، این دوره را به شما پیشنهاد میکنیم.
مطالب زیر را حتما مطالعه کنید
آموزش یادگیری ماشین رایگان
الگوریتم k means
نرمال سازی داده در یادگیری ماشین
یادگیری گروهی
ماشین بردار پشتیبان
الگوریتم KNN
8 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
عالی و قابل فهم بود.ممنون
سپاس 🌹🙏
سلام
از تیم هوسم بابت آموزش آسون و راحت الحلقومیشون تشکر میکنم 🙂
سلام
سپاس 😊🌹🙏
عالی بود
خیلی عالییی بود ممنونم. لطفا راهنمایی میکنید برای آشنایی با ریاضیات بکار رفته چه منابعی بخونیم؟
عالی بود خدا قوت
خیلی عالی و قابل فهم بود ممنونم