মেশিন লার্নিং এর সাথে পরিচয়

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

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

মেশিন লার্নিং বনাম ট্রেডিশনাল প্রোগ্রামিং

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

উদাহরন হিসাবে বলা যেতে পারে আপনি যদি কম্পিউটারকে দিয়ে ক্লাসিক্যাল প্রোগ্রামিং এর মাধ্যমে কুকুর এবং বিড়াল কে চেনাতে চান সেক্ষেত্রে আপনাকে প্রগ্রামের ভেতরে অসংখ্য রুলস লিখতে হবে যেগুলোর মাধ্যমে কম্পিউটার কুকুর এবং বিড়ালকে আলাদা ভাবে চিনতে পারবে। যেমন আপনার লিখতে হবে কুকুরের গায়ের রং কি কি হতে পারে, উচ্চতা কেমন হতে পারে, মুখ দেখতে ভোতা না লম্বা ইত্যাদি ইত্যাদি। ঠিক এমনি ভাবে বিড়ালের ক্ষেত্রেও আপনাকে প্রয়োজনীয় সংখ্যক রুলস লিখতে হবে। এভাবেই আপনার লেখা রুলসের উপর ভিত্তি করেই কম্পিউটার কুকুর এবং বিড়ালকে চিনতে পারবে। রুলস খারাপ হলে কম্পিউটারের পারফম্যান্সও খারাপ হবে।

একই প্রবলেম যদি আপনি মেশিন লার্নিং এর মাধ্যমে সল্ভ করতে চান সেক্ষেত্রে আপনাকে কোন রুলস লিখতে হবে না, আপনি শুধু কম্পিউটারকে শত শত কুকুরের এবং বিড়ালের ছবি দিয়ে ট্রেনিং দিয়ে দিবেন, ট্রেনিং দেয়ার সময় বলে দিবেন কোনটা কুকুরের ছবি আর কোনটা বিড়ালের ছবি। কম্পিউটার এই ছবি (ডেটা) থেকে নিজে নিজেই রুলস বের করে নিবে, এরপর নিজ থেকেই চিনতে পারবে কোনটা কুকুর আর কোনটা বিড়াল । এই শেখানোর পদ্ধতিটা মানব শিশুর শেখার মত, এজন্যই এটা এতটা এফিশিয়েন্ট !

মেশিন লার্নিং এ ডেটার প্রকরন

আমরা যদি উপরের ডেটার দিকে লক্ষ্য করি তাহলে দেখতে পাবো একটি আইরিস ফুল Sepal Length, Sepal Width, Petal Length , Petal Width এবং Class Label এই ডেটাগুলো ধারন করে। এরমধ্যে Sepal Length, Sepal Width, Petal Length ও Petal Width এর ভ্যালু পরিবর্তনের সাথে সাথে ফুলটি কোন প্রজাতির সেটা Class Label দেয়া রয়েছে। অর্থাৎ কিছু ডেটাকে বৈশিষ্ট্য হিসেবে ধরে নিয়ে আমরা আইরিস ফুলকে ক্লাসিফাই করছি । এখানে তাই এই বৈশিষ্ট্য মূলক ভ্যারিয়েবল গুলো হচ্ছে ফিচার এট্রিবিউটস , এগুলোকে ইন্ডিপেন্ডেন্ট ভ্যারিয়েবলও বলা হয়। অপরদিকে যেই ভ্যারিয়েবলকে আমরা ক্লাসিফাই বা প্রিডিক্ট করতে চাচ্ছি সেটাকে বলা হয় লেবেল, টার্গেট ভ্যারিয়েবল বা ডিপেন্ডেন্ট ভ্যারিয়েবল। ইন্ডিপেন্ডেন্ট ভ্যারিয়েবলের মানের পরিবর্তনের সাথে সাথে ডিপেন্ডেন্ট ভ্যারিয়েবলের মানও পরিবর্তিত হয়।

মেশিন লার্নিং এর প্রকারভেদ

মেশিন লার্নিং প্রধানত ৩ প্রকার

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

    • রিগ্রেশন- রিগ্রেশন মাধ্যমে নিউমেরিক্যাল ভ্যালু প্রিডিক্ট করা হয়। যেমন জানতে চাচ্ছেন আগামীকাল বাতাসের হিউমিডিটি ৭৮ হলে এভারেজ তাপমাত্রা কত ডিগ্রী সেলসিয়াস হতে পারে।

    • ক্লাসিফিকেশন - ক্লাসিফিকেশনের মাধ্যমে আলাদা আলাদা ক্লাস প্রিডিক্ট করা হয়। যেমন আমাদের ইমেইলে যেসব মেইল আসে তার কিছু কিছু মেইল স্প্যাম হিসাবে আসে। কম্পিউটার নতুন কোন মেইল আসলে সেটি চিনতে পারে মেইলটি কি সাধারন মেইল নাকি স্প্যাম। এভাবেই স্প্যাম ফিল্টারিং বা ক্লাসিফিকেশন করা হয়। কুকুর বিড়ালের যে উদাহরনটি দিয়েছিলাম সেটিও ক্লাসিফিকেশন ।

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

    আনসুপারভাইজড লার্নিং এর মাধ্যমে এভাবেই মেশিন ডেটার ভেতরের বিভিন্ন গ্রুপকে আবিস্কার করে।

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

বাস্তব জীবনে মেশিন লার্নিং অ্যালগোরিদম সমুহের বিভিন্ন প্রয়োগ ক্ষেত্র আমরা নিচের চিত্রের মাধ্যমে ধারনা পেয়ে থাকি।

টেস্ট-ট্রেইন স্প্লিট

সুপারভাইজড লার্নিং এ আমরা মেশিনকে যে ডেটাসেটের মাধ্যমে ট্রেইন করিয়ে থাকি সেই ডেটাসেটকে প্রথমে দুটি ভাগে ভাগ করি। যে ভ্যারিয়েবল গুলো ইন্ডিপেন্ডেন্ট হিসাবে কাজ করে থাকে অর্থাৎ যেগুল বৈশিষ্ট্য হিসাবে ব্যাবহার করা হয় তাদেরকে বলা হয় ফিচার ভ্যারিয়েবল (X)। অপরদিকে আমরা যেটা প্রিডিক্ট করতে চাই সেটাকে বলা হয় লেবেল বা টার্গেট ভ্যারিয়েবল (Y)।

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

ডেটাসেটকে ট্রেইনিং পার্ট এবং টেস্টিং পার্ট এ আলাদা আলাদা করে রখার নামই টেস্ট-ট্রেইন স্প্লিটিং । এই পদ্ধতিতে সাধারনত ডেটাসেটের ২০% , ৩০ % বা ৪০% ডেটা টেস্টিং এর জন্য আলাদা করে রাখা হয়। আর বাকি ডেটা দিয়ে মেশিনকে ট্রেইনিং দেয়া হয়।

উদাহরন হিসাবে বলা যায় আপনার ট্রেইনিং টেস্ট স্প্লিট হচ্ছে ০.৭৫ঃ ০.২৫ এর অর্থ আপনি ৭৫% ডেটা দিয়ে মেশিনকে ট্রেইনিং দিবেন আর বাকি ২৫% ডেটা দিয়ে মেশিনের প্রিডিকশনের একুরেসি পরিমাপ করবেন।

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

মেশিন লার্নিং করতে গিয়ে আমরা যেসব সমস্যায় পড়তে পারি

  • মডেলকে ট্রেইন করানোর জন্য পর্যাপ্ত পরিমান ট্রেইনিং ডেটা না থাকা।

  • ট্রেইনিং ডেটা যদি সম্পূর্ণ ডেটাসেটকে রিপ্রেজেন্ট করতে না পারে সেক্ষেত্রেও মডেল খুব বেশী ভালো হয় না এটাকে স্যাম্পলিং বায়াসও বলা যেতে পারে।

  • ডেটার কোয়ালিটি ভালো না হাওয়া ( আউটলায়ার, নয়েজ, মিসিং ভ্যালু ইত্যাদি বেশী পরিমানে থাকা) ।

  • ডেটাসেটে অপ্রয়োজনীয় বা গুরুত্বহীন ফিচার থাকা, এধরনের ফিচারের কারনে মডেল প্রভাবিত হতে পারে।

  • মডেল ওভারফিট হাওয়া।

  • মডেল আন্ডারফিট হাওয়া।

ওভারফিটিং এবং আন্ডারফিটিং

ওভারফিটিং হচ্ছে অনেকটা পরীক্ষার আগে প্রশ্ন ফাঁস হবার মত। এক্ষেত্রে প্রশ্নপত্র আগে জানা থাকায় পরীক্ষায় বেশ ভালো নাম্বার পাওয়া যায়, কিন্তু কখনো যদি ঐ প্রশ্নের বাইরে কিছু চলে আসে তাহলে একেবারে ডাব্বা মারতে হয় ! ওভারফিটিং এর ক্ষেত্রে মডেল ট্রেইনিং অংশে ভালো পারফরম্যান্স করে কিন্তু বাস্তব জগতে এর পারফরম্যান্স একেবারেই খারাপ।

  • মডেল যদি খুব বেশী জটিল হয়ে যায় তাহলে ওভারফিটিং করতে পারে , যেমন পলিনমিয়াল রিগ্রেশনে অর্ডার যদি খুব বেশী হয়ে যায় সেক্ষেত্রে এই সমস্যা দেখা দিতে পারে।

  • ডেটাসেটে নয়েজ বেশী থাকলে এধরনের সমস্যা দেখা দিতে পারে।

  • ট্রেইনিং ডেটা কম হলেও এই সমস্যা দেখা দিতে পারে।

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

বিভিন্ন মেশিন লার্নিং অ্যালগরিদম

অ্যালগরিদম

ধরন

প্রয়োগ ক্ষেত্র

লিনিয়ার রিগ্রেশন

সুপারভাইজড লার্নিং

লিনিয়ার রিগ্রেশন

পলিনমিয়াল রিগ্রেশন

সুপারভাইজড লার্নিং

নন-লিনিয়ার রিগ্রেশন

লজিস্টিক রিগ্রেশন

সুপারভাইজড লার্নিং

ক্লাসিফিকেশন

নেইভ বেইজ

সুপারভাইজড লার্নিং

ক্লাসিফিকেশন

ক্লাসিফিকেশন এন্ড রিগ্রেশন ট্রি

সুপারভাইজড লার্নিং

ক্লাসিফিকেশন এবং রিগ্রেশন

র‍্যান্ডম ফরেস্ট

সুপারভাইজড লার্নিং

ক্লাসিফিকেশন এবং রিগ্রেশন

কে নিয়ারেস্ট নেইবোরস

সুপারভাইজড লার্নিং

ক্লাসিফিকেশন এবং রিগ্রেশন

সাপোর্ট ভেক্টর মেশিন

সুপারভাইজড লার্নিং

ক্লাসিফিকেশন এবং রিগ্রেশন

অ্যাডা বুস্টিং

সুপারভাইজড লার্নিং

ক্লাসিফিকেশন এবং রিগ্রেশন

গ্রাডিয়েন্ট বুস্টিং

সুপারভাইজড লার্নিং

ক্লাসিফিকেশন এবং রিগ্রেশন

এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং

সুপারভাইজড লার্নিং

ক্লাসিফিকেশন এবং রিগ্রেশন

কে ফোল্ড ক্রস ভ্যালেইডেশন

সুপারভাইজড লার্নিং

ক্রস ভ্যালেইডেশন

কে-মিনস ক্লাস্টারিং

আনসুপারভাইজড লার্নিং

ক্লাস্টারিং

হায়ারার্কিক্যাল ক্লাস্টারিং

আনসুপারভাইজড লার্নিং

ক্লাস্টারিং

অ্যাপ্রিওরি অ্যালগরিদম

আনসুপারভাইজড লার্নিং

অ্যাসোসিয়েশন রুলস

ডেন্সিটি বেজড ক্লাস্টারিং

আনসুপারভাইজড লার্নিং

ক্লাস্টারিং

প্রিন্সিপ্যাল কম্পোনেন্ট এনালাইসিস

আনসুপারভাইজড লার্নিং

প্রিন্সিপ্যাল কম্পোনেন্ট এনালাইসিস এবং ডাইমেনশনালিটি রিডাকশন

কিউ লার্নিং

রিইনফোর্সমেন্ট লার্নিং

রিইনফোর্সমেন্ট লার্নিং

কিভাবে অ্যালগোরিদম বাছাই করবেন ?

মেশিন লার্নিং-এর মাধ্যমে কোন সমস্যা কিভাবে সমাধান করা যায় নিচের চিত্রের মাধ্যমে আমরা সেই সম্পর্কে একটি সাধারন ধারনা পেয়ে থাকি। এটি মূলত সাইকিট লার্ন এর একটি চিট শিট।

আগের চিট শিট ছাড়াও নিচের ছবিতে অ্যালগরিদম বাছাইয়ের আরেকটি পদ্ধতি দেয়া রয়েছে। এখানে সমস্যার ধরনের পাশাপাশি কোন অ্যালগরিদম বাছাই করলে পারফরম্যান্স বেশী পাওয়া যাবে আর কোন অ্যালগরিদম বাছাই করলে অধিক দ্রুত ফলাফল পাওয়া যাবে সে সম্পর্কেও ধারনা পাওয়া যাবে।

Last updated