২০০০-মাত্রিক একটি অন্ধকার ঘরে একটি কালো বিড়াল খোঁজা
আমি মেশিন লার্নিং অ্যালগরিদমগুলোর জন্য একটি স্ট্রেস টেস্ট চালিয়েছিলাম।
বেশিরভাগ বেঞ্চমার্কই একঘেয়ে। তারা MNIST বা Titanic-এর মতো সাধারণ ডেটাসেট ব্যবহার করে। আমি মডেলগুলোকে তাদের চরম সীমার (breaking point) দিকে ঠেলে দিতে চেয়েছিলাম।
আমি ২১টি অ্যালগরিদমকে একে অপরের বিরুদ্ধে লড়ালাম। এর মধ্যে ছিল:
- প্রথাগত মডেল: Linear Regression, k-NN, SVR।
- Tree ensembles: Random Forest, ExtraTrees।
- Boosting heavyweights: XGBoost, LightGBM, CatBoost, HistGradientBoosting।
- Neural Networks: Multi-layer perceptrons এবং TabNet।
- আন্ডারডগ (The underdog): Polyharmonic Cascade।
কাজটি সহজ মনে হয়েছিল। আমি মডেলগুলোকে একটি জটিল 3D সারফেস শিখতে বলেছিলাম। কিন্তু তারপর আমি দুটি বিশাল বাধা যোগ করলাম:
১. ডাইমেনশনালিটি নয়েজ (Dimensionality Noise): আমি তাদের ২,০০০টি ফিচার দিয়েছিলাম। এর মধ্যে মাত্র দুটি ছিল আসল। বাকি ১,৯৯৮টি ছিল নিছক নয়েজ। এটি জিনোমিক্স বা সেন্সর রিডিংয়ের মতো বাস্তব জগতের ডেটাকে অনুকরণ করে।
২. কোঅর্ডিনেট রোটেশন (Coordinate Rotation): আমি পুরো ফিচার স্পেসটিকে ঘুরিয়ে (rotate) দিয়েছিলাম। এর মানে হলো দরকারী সিগন্যালটি আর কোনো নির্দিষ্ট কলামের সাথে সারিবদ্ধ ছিল না। এটি পুরো ২,০০০টি ডাইমেনশনে ছড়িয়ে পড়েছিল।
ফলাফল ছিল চমকপ্রদ।
XGBoost এবং LightGBM-এর মতো Tree-based মডেলগুলো ট্যাবুলার ডেটার রাজা। যখন ডেটা কলামের সাথে সারিবদ্ধ থাকে, তখন তারা জয়ী হয়। কিন্তু আমি যখন স্পেসটি ঘুরিয়ে দিলাম, তখন তারা ব্যর্থ হলো। তারা নয়েজের মধ্যে সিগন্যালটি খুঁজে পেতে পারল না।
Neural networks রোটেশন সহ্য করতে পারলেও উচ্চ ডাইমেনশনালিটির সাথে লড়াই করতে হিমশিম খেল। নয়েজ বাড়ার সাথে সাথে সেগুলো ধীরগতির হয়ে পড়ল এবং নির্ভুলতা (accuracy) হারাল।
এরপর ছিল Polyharmonic Cascade।
এই মডেলটি প্রথাগত gradient descent ব্যবহার করে না। এটি random function theory-এর ওপর ভিত্তি করে বিশুদ্ধ গণিত ব্যবহার করে। যেখানে হেভিওয়েট মডেলগুলো ব্যর্থ হয়েছে, সেখানে Cascade দারুণভাবে সফল হয়েছে। এটি রোটেশন এবং ২,০০০টি ফিচার খুব সহজেই সামলে নিয়েছে। কঠিনতম রাউন্ডগুলোতে এটি প্রায় প্রতিটি অংশগ্রহণকারীকে ছাড়িয়ে গেছে।
শিক্ষাটি স্পষ্ট: আধুনিক ট্যাবুলার ML প্রায়শই অক্ষ-নির্ভর (axis-dependent) হয়। আপনার ডেটার জ্যামিতি পরিবর্তন না হওয়া পর্যন্ত এটি দারুণ কাজ করে। আপনি যদি জটিল, রোটেটেড বা অত্যন্ত নয়েজযুক্ত ডেটা নিয়ে কাজ করেন, তবে আপনার সাধারণ টুলগুলো ব্যর্থ হতে পারে।
আপনি GitHub-এ সম্পূর্ণ কোড এবং ফলাফল দেখতে পারেন। আমি আপনাকে এই পরীক্ষাটি পুনরায় করার জন্য আমন্ত্রণ জানাচ্ছি।
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi
