পিসিএ (Principal Component Analysis - PCA)
ধরা যাক, আপনি একটি অনেক সুন্দর পর্বতমালার (mountain) ছবি তুললেন। এখানকার এই একদম আসল বা অরিজিনাল ছবিটি (original image) হলো একটি ১০ মেগাপিক্সেলের বা 10 megapixels (এমপি) ছবি — যার মাঝে রঙের লক্ষ লক্ষ ছোট ছোট ডট (dots) লুকিয়ে রয়েছে। এখন এটিকে ছোট করে বা কম্প্রেস (compress) করে এর একটি ছোট থাম্বনেইল (thumbnail) বানিয়ে নিন। এক্ষেত্রে আপনি হয়তো এর ভেতরের অনেক ছোটোখাটো ডিটেইল বা সূক্ষ্ম ডিটেইলগুলো (detail) হারিয়ে ফেলবেন, তবে তারপরও আপনি এখান থেকে এর ভেতরের ওই পাহাড় (mountains), আকাশ (sky), কিংবা এর গাছপালাগুলোকে (trees) বেশ স্পষ্টভাবেই দেখতে পারবেন। অর্থাৎ এখানকার গুরুত্বপূর্ণ সব শেইপগুলো (shapes) কিন্তু ঠিকই সংরক্ষিত (preserved) আছে; মূলত এখানকার শুধুমাত্র এর ওই সূক্ষ্ম ডিটেইলগুলোই (fine grain) একটু কমে গেছে বা গায়েব হয়ে গেছে।
PCA-ও মূলত এর ডেটার (data) সাথে ঠিক একই কাজটাই করে থাকে। আপনার কাছে যদি ১০০টি ফিচার (features) (কলাম) বিশিষ্ট কোনো ডেটাসেট (dataset) থাকে, তবে PCA এটিকে স্কোয়াশ (squash) করে বা মুছে দিয়ে হয়তো ১০টি ফিচারে নামিয়ে আনতে পারে — অথচ এটি এর ভেতরের প্রায় সব দরকারি তথ্যগুলো বা ইনফরমেশনগুলোকেই (information) ঠিকঠাক বজায় রাখে। এখানকার এই নতুন ফিচারগুলো হলো মূলত এখানকার এই আসল ডেটাগুলোর বা অরিজিনালগুলোর (originals) একেকটি ভিন্ন ভিন্ন কম্বিনেশন (combinations), যেগুলোকে মূলত ডেটার মধ্যকার সর্বোচ্চ পরিমাণ (maximum amount) ভ্যারিয়েশনগুলোকে (variation) ধরে রাখার বা ক্যাপচার করার (capture) জন্যই বেছে নেওয়া হয়েছে।
কখন ঠিক ডাইমেনশনগুলোকে (dimensions) ছোট বা কমিয়ে আনা উচিত? (Why reduce dimensions?)
- গতি বা স্পিড (Speed) — কম ফিচার (features) = আরও অনেক বেশি ফাস্ট বা দ্রুত ট্রেইনিং (faster training)। এখানকার ১,০০০টি ফিচার (features) থেকে এগুলোকে মাত্র ৫০টিতে নামিয়ে আনার ফলে আপনার ট্রেইনিংয়ের সময়টা (training time) আশ্চর্যজনকভাবেই অনেক খানি কমে যাবে।
- নয়েজ কমানো (Noise reduction) — এর মধ্যে থাকা অনেকগুলো ফিচারই (features) হলো শুধু এক একটি নয়েজ (noise)। PCA এগুলোকে ছেঁটে ফেলে দেয়, আর এর মাধ্যমেই এটি মূলত একটি মডেলের পারফরম্যান্সকে (model performance) আরও অনেক উন্নত বা ইম্প্রুভ (improving) করে তোলে।
- ভিজ্যুয়ালাইজেশন (Visualization) — আপনি চাইলে ১০০টি ডাইমেনশনকে (dimensions) কখনোই একসাথে প্লট (plot) করতে পারবেন না, কিন্তু আপনি চাইলে খুব সহজেই ২ বা ৩টিকে ঠিকই করতে পারবেন। মূলত PCA আপনাকে আপনার ডেটাগুলোকে খুব ভালোভাবে দেখতে (see) সাহায্য করে।
- কোর্স অফ ডাইমেনশনালিটি (Curse of dimensionality) — মূলত কোনো বড় বা হাই-ডাইমেনশনাল স্পেসের (high-dimensional space) মধ্যে এখানকার সব জিনিসই একে অপরের থেকে অনেক বেশি দূরে দূরে অবস্থান করে। তাই মডেলদের (Models) এগুলো নিয়ে বেশ একটু স্ট্রাগল (struggle) করতে হয়। তাই এদের ডাইমেনশন বা মাত্রা কমানোর বিষয়টি অনেক সময় বেশ সাহায্য করে থাকে।
PCA কীভাবে কাজ করে (intuitively) (How PCA works (intuitively))
ব্যাপারটিকে চাইলে একটি ৩ডি (3D) স্পেসে (space) ছড়িয়ে ছিটিয়ে থাকা কিছু ডেটা পয়েন্টের (data points) মেঘ বা ক্লাউডের (cloud) মতো করে চিন্তা করতে পারেন। এখন এই PCA আপনাকে জিজ্ঞাসা করে: "যদি আমাকে এই ৩ডি (3D) ক্লাউডটিকে একটি ২ডি (2D) কাগজের পাতার (sheet) ওপর পুরোপুরি ফ্ল্যাট (flatten) বা চ্যাপ্টা করে বসাতে হতো, তবে এর সবচেয়ে বেশি অংশটুকু বা স্প্রেডটুকু (spread) তুলে আনার জন্য আমার ঠিক কোন অ্যাঙ্গেল (angle) বা কোণে কাগজটিকে ধরা উচিত?"
- প্রথমে এর মাঝের সবচেয়ে বেশি ভ্যারিয়ান্সের (most variance) (সবচেয়ে বেশি ছড়ানো বা most spread) দিকটি খুঁজে বের করুন। আর এটিই হলো PC1 (প্রিন্সিপল কম্পোনেন্ট ১ বা Principal Component 1)।
- এরপর এর PC1 এর একদম লম্বালম্বি বা পারপেন্ডিকুলার (perpendicular) অবস্থানে থাকা এর পরের সবচেয়ে বড় ভ্যারিয়্যান্সের দিকটি খুঁজে বের করুন। আর এটিই হলো PC2।
- আপনার যতক্ষণ পযর্ন্ত এই কম্পোনেন্টগুলো (components) দরকার হয় ততক্ষণ পর্যন্ত এভাবেই এগুলোকে বের করতে থাকুন।
আর এর প্রত্যেকটি কম্পোনেন্টই (component) হলো মূলত এক একটি নতুন অক্ষ বা নতুন অ্যাক্সিস (new axis) — যা এখানকার অরিজিনাল বা আসল ফিচারগুলোর (features) একটি ব্লেন্ড বা মিশ্রণ (blend) — যেগুলোকে মূলত এখানকার ম্যাক্সিমাম বা সর্বোচ্চ তথ্য বা ইনফরমেশনগুলো (information) ক্যাপচার (capture) করার জন্য নির্দিষ্ট দিকে মুখ করে রাখা বা ওরিয়েন্টেড (oriented) করা হয়েছে।
PCA: হাই থেকে লো ডাইমেনশনসমূহ (High to Low Dimensions)
আপনার ঠিক কয়টি কম্পোনেন্ট (components) রাখা উচিত? (How many components to keep?)
এক্ষেত্রে মূলত এখানকার কোনো একটি মাত্র সঠিক উত্তরের ওপর নির্ভর করা যায় না, তবে এখানকার সবচেয়ে সাধারণ একটি নিয়ম বা রুল (common rule) হলো: আপনার ঠিক ততোটুকুই কম্পোনেন্ট (components) রাখা উচিত যেগুলো মূলত এখানকার মোট ভ্যারিয়ান্সের (total variance) ৯০-৯৫%-কে (90-95%) ব্যাখ্যা (explain) করতে পারে। এর কিউমুলেটিভ এক্সপ্লেইনড ভ্যারিয়ান্সগুলোকে (cumulative explained variance) প্লট করে (Plot) দেখুন এবং লক্ষ্য করে দেখুন যে ঠিক কোথায় এখানকার কার্ভ (curve) বা বক্ররেখাটি পুরোপুরি সোজা বা ফ্ল্যাট (flattens out) হয়ে গেছে।
ওপরের ওই আইরিশ (Iris) উদাহরণটিতে, মাত্র ২-টি বা 2টি কম্পোনেন্টই (components) তার এই ৪টি আসল বা অরিজিনাল (original) ফিচারের (features) মধ্যে থেকে নিজের ৯৭.৮% (97.8%) ভ্যারিয়ান্স (variance) ক্যাপচার করতে পেরেছে। আর এটি একটি উল্লেখযোগ্য রকমের ইফিশিয়েন্ট (efficient) ব্যাপার — কারণ এর ডাইমেনশনগুলোকে (dimensions) অর্ধেক বা হাফ (half) করার পরেও, আমরা এখানকার মাত্র ২.২% (2.2%) তথ্য বা ইনফরমেশনই হারিয়েছিলাম।
যেসব ব্যাপারগুলো আপনার একটু খেয়াল রাখা উচিত (Things to watch out for)
- সবার আগেই আপনার ডেটাটিকে স্কেল (Scale) করে নিন — PCA মূলত এর ফিচার স্কেলগুলোর (feature scales) প্রতি অনেক বেশি সেনসিটিভ (sensitive) বা সংবেদনশীল। যদি এখানকার কোনো ফিচারকে মিলিয়নে (millions) পরিমাপ করা হয়, তবে তা ডেসিম্যাল বা ডেসিমালে (decimals) পরিমাপ করা ফিচারের ওপর প্রভাব ফেলতে পারে। তাই সবসময়ই কাজ শুরু করার আগে এদের স্ট্যান্ডার্ডাইজ (standardize) বা নির্দিষ্ট করে নেওয়া একটি ভালো অভ্যাস।
- ইন্টারপ্রেটেবিলিটি বা ব্যাখ্যার ধরন (Interpretability) — এখানকার নতুন কম্পোনেন্টগুলো (components) হলো এখানকার এই আসল ফিচারগুলোর (features) একেকটি মিশ্রণ (blends), তাই এদের ব্যাখ্যা বা ইন্টারপ্রেট (interpret) করা তুলনামূলকভাবে অনেকটাই কঠিন হয়ে পড়ে। এই "PC1"-এর মূলত কোনো ক্লিন বা পরিষ্কার, রিয়েল-ওয়ার্ল্ড মিনিং (real-world meaning) বা আসল মানে নেই, ঠিক যেমনটি মূলত মানুষের "উচ্চতা (height)" বা "আয় (income)"-এর মতো শব্দগুলোর রয়েছে।
- শুধুমাত্র লিনিয়ারগুলোর (Linear only) ক্ষেত্রে — PCA শুধুমাত্র এখানকার লিনিয়ার বা রেখাকৃতির সম্পর্কগুলোকেই (linear relationships) ক্যাপচার (captures) করতে পারে। তাই এদের যেকোনো নন-লিনিয়ার (non-linear) সম্পর্কের জন্য আপনি চাইলে t-SNE বা UMAP-এর মতো জিনিসগুলোর দিকে এক নজর চোখ বুলিয়ে নিতে পারেন (তবে মনে রাখবেন, এগুলো মূলত ভিজ্যুয়ালাইজেশনের বা visualizations-এর জন্যই ব্যবহার করা হয়, মডেলের ইনপুট বা model inputs-এর জন্য নয়)।
Key Metrics
ছোট কুইজ
পড়া চালিয়ে যান