কনটেন্টে যান

ট্যাবলিউ দিয়ে আইরিস প্রজাতির ক্লাস্টার অ্যানালাইসিস

বিজনেস অ্যানালাইটিক্স টুলের নিজের বুদ্ধি কেমন?

ভালো। আমি দেখছি - সেটা বাড়ছে প্রতিদিন। বুঝবো কিভাবে? টেস্ট করা যায় কিভাবে?

একটা পুরানো ধারণা দিয়ে। বিশেষ করে, ক্লাস্টার অ্যালগরিদম দিয়ে। এখন আমাদের কাজ হচ্ছে, আমাদের মাথা যেখানে আইরিস প্রজাতির ফুলকে ঠিকমতো ক্লাস্টার করতে পারছে, সেখানে এই ডাটা এনালাইটিক্স টুল নিজে থেকে ক্লাস্টার করতে পারে কিনা? এর পাশাপাশি সত্যিকারে ডাটার সাথে টুলের এনালাইসিস এর মাধ্যমে প্রাপ্ত নতুন ক্লাস্টারের মধ্যে কতটুকু পার্থক্য সেটাও দেখব এখানে। এই পুরো জিনিসটা, হাতে-কলমে করলে ব্যাপারটা পরিষ্কার হবে।

শুরুতে বুঝতে না পারলেও, কয়েকবার প্র্যাকটিস করলেই ধারণাটা বুঝা যাবে। ব্যাপারটা এরকম যে, আসল ডাটাসেটের প্রতিটা ফুলের মাপের সঙ্গে প্রজাতিকে যেভাবে ট্যাগ করা আছে, সেখানে প্রতিটা ফুলের মাপকে অ্যানালাইটিক্সের উপর ছেড়ে দিলে - সে নিজে থেকে ক্লাস্টার তৈরি করবে। তখন, আসল ডাটার সাথে তার অ্যাকুরেসি কতটুকু ওঠানামা করে সেটা বুঝলেই আমাদের কাজ চলে যাবে।

আমাদের প্রথম ওয়ার্কশীটের কনটেন্টকে কপি করে নিয়ে আসি পরের ওয়ার্কশীটে। এ কারণে আমরা প্রথম ওয়ার্কশীটের উপরে রাইট ক্লিক করে ‘ডুপলিকেট ওয়ার্কশীট’ করব যাতে একই জিনিস পরের ওয়ার্কশিটে কপি হয়ে আসে। আমরা এখানে যেহেতু ক্লাস্টার অ্যানালাইসিস করতে দেবো - ট্যাবলিউএর এর নিজস্ব ক্লাস্টার এনালাইটিক্স, সে কারণে আগের প্রজাতি অর্থাৎ ‘স্পিসিস’ অংশকে ড্রপ করে দেব। এতে ডাটার প্লটিং থাকবে তবে, আমরা ‘ভিজ্যুয়ালি’ রঙের পার্থক্য দেখে আলাদা করব না। আপনারা চাইলে আসল ডাটাসেট থেকে স্পিসিস কলাম বাদ দিয়েও দেখতে পারি। সত্যিকার অর্থে, এই ক্লাস্টার ব্যবহার করার জন্য আমাদের প্রজাতি কলামটা প্রয়োজন নেই।

বরং এখানে ট্যাবলিউকে বলছি - তার নিজস্ব এনালাইটিক্স দিয়ে ক্লাস্টারিং করে দেখাতে। এটা খুবই সহজ একটা অ্যালগরিদম, এখানে ব্যবহার করছি শুধুমাত্র দেখানোর জন্য - কিভাবে মানুষের মত এ ধরনের আন-সুপারভাইজড অ্যালগরিদম ডাটার মধ্যে প্যাটার্ন বুঝতে পারে। ডাটার মধ্যে প্যাটার্ন বুঝতে পারলেই আমাদের এনালাইসিসে ধরনের টুল সাহায্য করতে পারে।

এই প্রক্রিয়া করার জন্য আমরা চলে যাব ট্যাবলিউয়ের অ্যানালিটিক্স অংশে। এই অ্যানালিটিক্স অংশটা আছে উপরের ডাটা অংশের পাশে।

ট্যাবলিউয়ের মাথা অর্থাৎ অ্যানালিটিক্স

(১) ট্যাবলিউ অ্যানালিটিক্স অংশ থেকে আমরা বেছে নেব মডেল সেগমেন্টটাকে। সেখান থেকে ক্লাস্টার অংশটা টেনে নিয়ে ছেড়ে দিব আমাদের ওয়ার্কশীটের ওপরে। ওয়ার্কশীটের উপরে ক্লাস্টারকে টেনে আনা মাত্রই সেখানে একটা “ক্রিয়েট ক্লাস্টার” বলে ডায়ালগ বক্স আসবে। ক্লাস্টারকে সেই ডায়ালগ বক্সের উপরে ছেড়ে দেবো। কতগুলো ক্লাস্টার হতে পারে সেটা বলে না দিয়ে তার উপর ছেড়ে দিতে পারি। ক্লাস্টারের সংখ্যাকে আমরা এখানে অটোমেটিক হিসেবে রেখে দেই। সঙ্গে সঙ্গে, স্বয়ংক্রিয়ভাবে এর পেছনের অ্যালগরিদম আইরিস ফুলের প্রজাতিকে তিন ভাগে ভাগ করে দেখাবে। মাঝের দুটো রং কিছুটা মিলে গেলেও আমরা ডানদিকে ক্লাস্টারের রংয়ে পাল্টে নিতে পারি। মাঝখানের ক্লাস্টারটাকে আমরা সবুজ রং দিতে পারি।

ক্লাস্টারকে টেনে নিয়ে আসি নতুন ওয়ার্কশীটের ওপর

(২) আমাদের এই তিন রঙের ক্লাস্টার, এবং সত্যিকারের ডাটার ক্লাস্টারকে আমরা মিলিয়ে দেখি, কতটুকু ঠিকমতো করতে পেরেছে? প্রথম ক্লাস্টার নিয়ে আমাদের কোনো সমস্যা নেই, তবে দ্বিতীয় এবং তৃতীয় ক্লাস্টারে কিছু ওভারল্যাপিং থাকাতে সেটা অংকের মাধ্যমে বের করতে চাই। আমাদের ডাটাতে যদি ‘স্পিসিস’ অর্থাৎ প্রজাতি কলাম না থাকতো তাহলে আমাদেরকে এই রাস্তার মাধ্যমেই বের করতে হতো।

(৩) আমাদের নতুন ক্লাস্টারের নাম ইংরেজিতেও ক্লাস্টার হিসেবে রাখি। এই মেজারকে আমরা টেনে ডাইমেনশনের অংশে নিয়ে যেতে পারি। সেখানে নিয়ে এটাকে ক্লাস্টার হিসেবে নাম পাল্টে ফেলি। যেহেতু আমাদের এনালাইটিক্স ‘স্পিসিস’ সম্বন্ধে জানে না, সে কারণে সে তিনটা ক্লাস্টার; ক্লাস্টার-১, ক্লাস্টার-২, এবং ক্লাস্টার-৩ নাম স্বয়ংক্রিয়ভাবে রেখেছে। এজন্য আমাদের নাম পাল্টাতে হবে মূল ‘স্পিসিস’ এর সাথে তুলনা করার জন্য। একদম নাম ধরে ধরে। যাতে অংকের “==” স্টাইলে দুটোকে তুলনা করা যায়।

(৪) এডিট গ্রুপ থেকে ‘রিনেম’ করে আমাদের ডাটা সোর্স থেকে কপি করে নিয়ে আসি “Iris-setosa” যাতে ক্লাস্টার-১ এর সাথে তুলনা করা যায়। এভাবে, ক্লাস্টারগুলোকে নাম পাল্টে ৩টা প্রজাতির নামে পাল্টে ডাটাসেটের মতো করে নিয়ে আসি। ছবি দেখুন।

ক্লাস্টারগুলোকে নাম পাল্টে ৩টা প্রজাতির নামেই এডিট করছি

(৫) এই মুহূর্তে আমাদের প্রজাতি অর্থাৎ স্পিসিস এর সাথে ক্লাস্টারকে তুলনা করতে হবে। সেটা কিভাবে করা যায়? অবশ্যই নতুন একটা “ক্যালকুলেটেড ফিল্ড তৈরির মাধ্যমে। অ্যানালাইসিস মেনু থেকে আমরা সিলেক্ট করে নিচ্ছি ‘ক্যালকুলেটেড ফিল্ড’। নাম দিচ্ছি, ‘অ্যাক্যুরেসি’ - নাম দিতে পারেন ইচ্ছেমতো। এখানে আমাদের প্রজাতির সাথে ‘==’ অপারেটর দিয়ে তুলনা করতে হবে ক্লাস্টারের। ছবি দেখুন। আমাদের, (লক্ষ্য করুন) যদি ক্লাস্টারের নাম এবং প্রজাতির এই নাম হয়, তাহলে লজিক কি হতে পারে? তুলনা করতে আমাদেরকে বলতে হবে [clusters] == [Species], আপনার নাম ভিন্ন হলে আলাদা কথা। কপি করবেন না, লজিকটা বোঝার চেষ্টা করুন।

তৈরি করি ‘ক্যালকুলেটেড ফিল্ড’, তুলনা করার জন্য

(৬) নতুন ওয়ার্কশীটে যাই। অ্যাকুরেসি ক্যালকুলেটর ফিল্ডকে নিয়ে আসি ওপরের সারিতে। এর পাশাপাশি, আইরিস প্রজাতির ডাটাসেটকে ‘ড্র্যাগ এন্ড ড্রপ’ করে ফেলে দেই অ্যাকুরেসি’র সংখ্যার অংশে। দেখা যাচ্ছে, অ্যানালিটিকস তার প্রেডিকশনে ১৫০টা রেকর্ডের মধ্যে মাত্র ৬টা ভুল করেছে।

(৭) ক্লাস্টারকে যখন ‘কালার’ এর ওপরে নিয়ে এসে ছেড়ে দিয়েছিলাম, তখন এনালাইটিক্স ক্লাস্টারকে তিন ভাগে তিন রঙ দিয়ে দেখিয়েছে। এরমধ্যে, আমরা যদি ক্লাস্টার এর উপরে রাইট ক্লিক করে ‘ডেস্ক্রাইব ক্লাস্টার” বলে দেই, তাহলে সে দুই এবং তিন নাম্বার ক্লাস্টারে পর্যায়ক্রমে ৫২ এবং ৪৮ সংখ্যা দেখিয়েছে। এর অর্থ হচ্ছে, দ্বিতীয় ক্লাস্টার এ দুটো বেশি মানে মিস-ক্লাসিফিকেশন, এবং তৃতীয় ক্লাস্টারে দুটো কম ক্লাসিফিকেশন ঠিক করেছে। এদিকে সত্যিকারের ডাটার সাথে তাদের ফারাক কতো? ৬ এবং ১৪৪ কী হতে পারে? এর সম্পর্ক কী বের করতে পারবেন?

ক্লাস্টারকে ভেতর থেকে দেখা, 'ডেস্ক্রাইব' করা

(৭) আমরা এ পর্যন্ত পেটাল দৈর্ঘ্য এবং প্রস্থের মধ্যে আসল এবং ক্লাস্টারিং পদ্ধতিতে পুরো জিনিসটা দেখিয়েছি। এখানে আপনাদের কাজ হবে বাকিগুলো, যেমন সিপাল দৈর্ঘ্য, প্রস্থ, অথবা পেটাল দৈর্ঘ্য এবং প্রস্থের পার্মুটেশন এবং কম্বিনেশন করে মোট ৬ ধরনের আসল ডাটা এবং ক্লাস্টারিং করে দেখা যেতে পারে। আমি অনুরোধ করবো - এগুলো নিজের হাতে করতে, যাতে এই পুরো ব্যাপারটাতে আপনার ভালো ধারনা চলে আসে। হাতে-কলমে না করলে ডাটা এনালাইটিক্স শেখা কষ্টকর। (আমার সাইটে করে দেয়া থাকলেও, নিজে করা জরুরি।

সিপাল দৈর্ঘ্য, প্রস্থ, অথবা পেটাল দৈর্ঘ্য এবং প্রস্থের পার্মুটেশন এবং কম্বিনেশন করে দেখা

একবারে না বুঝলে, আবার দেখুন। এর পাশাপাশি ভিডিওগুলো দেখতে পারেন। বই থেকে ভিডিওগুলোতে কিছুটা "আলাদাভাবে" করে দেয়া আছে, যাতে একই জিনিস যে অনেকভাবে করা যায় সেটা নিশ্চিত করে বোঝাতে।