আপনি একটা ডেটাসেট নিয়ে কাজ করছেন যেখানে মানুষের বয়স এবং মাসিক আয় দেওয়া আছে। বয়স হয়তো ২০ থেকে ৬০ বছরের মধ্যে, কিন্তু আয় হয়তো ২০ হাজার থেকে ২ লাখ টাকার মধ্যে।
এখন আপনি যদি এই ডেটা দিয়ে কোনো মডেল বা স্ট্যাটিস্টিক্যাল এনালাইসিস রান করতে যান, মডেল ভাববে আয় ভ্যারিয়েবলটা বয়সের চেয়ে অনেক বেশি গুরুত্বপূর্ণ। কারণ এর সংখ্যাগুলো বড়! কিন্তু বাস্তবে তো দুটোই সমান গুরুত্বপূর্ণ। এই আপেল আর কমলার তুলনাকে এক পাল্লায় মাপার জন্যই ডেটা সায়েন্সে আমরা ফিচার স্কেলিং (Feature Scaling) করি।
কিন্তু ফিচার স্কেলিং আসলে কেন এত জরুরি?
ফিচার স্কেলিংয়ের প্রথম কাজ হলো মডেলের বায়াস দূর করা। যদি স্কেলিং না করেন, অ্যালগরিদম বড় সংখ্যার ভ্যারিয়েবলকে (যেমন- আয়) বেশি পাত্তা দেবে আর ছোট সংখ্যার ভ্যারিয়েবলকে (যেমন- বয়স) কম পাত্তা দেবে । ডেটা স্কেলিং সব ভ্যারিয়েবলকে সমান চোখে দেখতে সাহায্য করে। এছাড়াও ঠিকঠাক তুলনা করার জন্য এটি গুরুত্বপূর্ণ। রিগ্রেশন এনালাইসিসে কোন ভ্যারিয়েবলটার প্রভাব বেশি, সেটা বোঝার জন্য সবগুলোকে একই স্কেলে আনাটা মাস্ট। তা না হলে আপনার ফলাফল আনবায়াসড থাকবে না।
আর এই ফিচার স্কেলিংয়ের সবচেয়ে জনপ্রিয় দুটো উপায় হলো Normalization এবং Standardization। নতুন গবেষকরা অনেক সময় এই দুটোকে এক মনে করে গুলিয়ে ফেলেন। চলুন একদম সহজভাবে এই দুটোর পার্থক্য বুঝে নেওয়া যাক।
Normalization কী? Normalization বা মিন-ম্যাক্স স্কেলিং (Min-Max Scaling) হলো আপনার ডেটার মানগুলোকে একটা নির্দিষ্ট সীমানার মধ্যে নিয়ে আসা। সাধারণত এই সীমানা হয় ০ থেকে ১ এর মধ্যে। বিষয়টা অনেকটা এমন, ধরুন আপনার কাছে ১০০ এবং ৫০০ টাকার নোট আছে। আপনি বললেন সবচেয়ে ছোট নোটটাকে আমি ০ ধরব আর সবচেয়ে বড়টাকে ১ ধরব। বাকি সব নোট এর মাঝখানে আনুপাতিক হারে বসে যাবে। এতে ডেটার মূল আকার বা ডিস্ট্রিবিউশন বদলায় না, শুধু রেঞ্জটা ছোট হয়ে আসে।
Standardization কী? অন্যদিকে Standardization বা জেড-স্কোর (Z-score) স্কেলিং কাজ করে একটু ভিন্নভাবে। এটা ডেটার গড় বা Mean কে ০ তে নিয়ে আসে এবং স্ট্যান্ডার্ড ডেভিয়েশন (Standard Deviation) কে ১ বানিয়ে দেয়। এখানে সীমানার কোনো বাধ্যবাধকতা নেই। এটা মূলত দেখে ডেটা তার গড়ের চেয়ে কতটা দূরে আছে। ধরুন ক্লাসে অঙ্কের গড় নম্বর ৫০। কেউ যদি ৭০ পায়, তার স্কোর হবে পজিটিভ। আর কেউ যদি ৩০ পায়, তার স্কোর হবে নেগেটিভ।
এখন প্রশ্ন কখন কোনটা ইউজ করবেন?
কখন কোনটা ব্যবহার করবেন সেটা বোঝা আসলে খুব একটা কঠিন কিছু না। নিজেকে শুধু তিনটি প্রশ্ন করবেন। প্রথমত, ডেটার ডিস্ট্রিবিউশন কেমন? আপনার ডেটা যদি নরমাল ডিস্ট্রিবিউশন (Normal Distribution) বা বেল কার্ভ মেনে না চলে, তবে Normalization ব্যবহার করা ভালো। আর ডেটা যদি মোটামুটি নরমাল ডিস্ট্রিবিউশন মেনে চলে, তখন Standardization ব্যবহার করতে পারেন।
দ্বিতীয়ত দেখতে হবে, ডেটাতে কি আউটলায়ার (Outliers) আছে? আপনার ডেটাতে যদি অনেক অস্বাভাবিক মান বা আউটলায়ার থাকে, তাহলে Normalization ব্যবহার করলে সমস্যা। কারণ সে ওই অস্বাভাবিক বড় মানটাকে ১ ধরে বসবে, ফলে আপনার দরকারি সব ডেটা খুব ছোট একটা জায়গায় চলে আসবে। এরকম ক্ষেত্রে Standardization অনেক বেশি কার্যকরী, কারণ এটি আউটলায়ার দ্বারা খুব একটা প্রভাবিত হয় না।
তৃতীয়ত, আপনি কোন অ্যালগরিদম ব্যবহার করছেন? K-Nearest Neighbors (KNN) বা Neural Networks এর মতো অ্যালগরিদমগুলো দূরত্বের ওপর ভিত্তি করে কাজ করে। এসব জায়গায় Normalization খুব ভালো কাজ করে। অন্যদিকে Linear Regression, Logistic Regression বা Support Vector Machine এর মতো মডেলগুলোর ক্ষেত্রে Standardization ভালো ফলাফল দেয়।
শেষ কথায় বলতে গেলে, গবেষণায় বা ডেটা সায়েন্সে কোনো বাঁধাধরা নিয়ম নেই। আপনি যদি কনফিউজড থাকেন, তবে আপনার ডেটাসেট নিয়ে দুটি পদ্ধতিই ব্যবহার করে দেখতে পারেন। এরপর Model fit statistics মিলিয়ে দেখুন কোনটায় আপনার মডেল সবচেয়ে নিখুঁত রেজাল্ট দিচ্ছে। ডেটা যেটা চাইবে, আপনাকে সেটাই ব্যবহার করতে হবে!



