লজিস্টিক রিগ্রেশন : এক্সপোনেনশিয়াল ফ্যামিলি ও জেনারালাইজড লিনিয়ার মডেল

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

টপিক

  • এক্সপোনেনশিয়াল ফ্যামিলি
  • জেনারালাইজড লিনিয়ার মডেল, কন্সট্রাকশন ও অ্যাজাম্পশন
  • জেনেরালাইজড মডেল থেকে লজিস্টিক রিগ্রেশন

গত অধ্যায়ে আমরা লজিস্টিক রিগ্রেশন, বার্নুলি ট্রায়াল ও বার্নুলি ডিস্ট্রিবিউশনের সাথে পরিচিত হয়েছি। মূল বিষয় হচ্ছে, বার্নুলি ডিস্ট্রিবিউশনের সাথে লজিস্টিক রিগ্রেশনের সম্পর্ক কোথায়? লাইকলিহুড আর ম্যাক্সিমাম লাইকলিহুড কী জিনিস?


এইসব বিষয় বোঝার জন্য আমাদের কিছু প্রিরিকুইজ্যিট জ্ঞান লাগবে, প্রথমত আসা যাক এক্সপোনেনশিয়াল ফ্যামিলির ব্যাপারে (Exponential Family)।

এক্সপোনেনশিয়াল ফ্যামিলি (Exponential Family)

Generalized Linear Model তৈরি করার আগে এক্সপোনেনশিয়াল ফ্যামিলির ডিস্ট্রিবিউশন সম্পর্কে পরিষ্কার ধারণা থাকতে হবে।

একটা নির্দিষ্ট ধরণের ডিস্ট্রিবিউশন দের একত্রে Exponential Family বলা হয় যদি নিচের সমীকরণ সেই ডিস্ট্রিবিউশন মেনে চলে। অপর কথায়, আমরা অনেক ধরণের প্রব্যাবিলিটি ডিস্ট্রিবিউশনের সাথে পরিচিত, যেমন বার্নুলি, পয়জন, গাউসিয়ান ইত্যাদি। এদেরকে যদি একটা সাধারণ (Common) সমীকরণ দ্বারা প্রকাশ করা যায় তাহলে আমরা তাদেরকে বলব এক্সপোনেনশিয়াল ফ্যামিলি।

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

একই পরিবারের বিভিন্ন ডিস্ট্রিবিউশন কীভাবে ডিফাইন করা হয়

এই তিনটি প্যারামিটার যদি আমরা ফিক্সড রাখি, এবং কে পরিবর্তিত করতে থাকি, তাহলে আমরা একই পরিবারের বিভিন্ন ডিস্ট্রিবিউশন পাব।

যেমন,

বার্নুলি ডিস্ট্রিবিউশন এক্সপোনেনশিয়াল পরিবারের সদস্য (প্রমাণ দ্রষ্টব্য)। এই ডিস্ট্রিবিউশনের নির্দিষ্ট রয়েছে, আমরা যদি এর এর পরিবর্তন করি তাহলে নিচের গ্রাফগুলো পাব।

import seaborn as sns
import matplotlib.pyplot as plt
import scipy

plt.figure(figsize=(8, 6))

eta = 0.25

N = 10 # Number of Samples

samples = scipy.linspace(0,10,11) 

pmf = scipy.stats.binom.pmf(samples, N, eta)

sns.barplot(samples, pmf)

আউটপুট

eta_025

করলে,

eta_05

করলে,

eta_09

এক্সপোনেনশিয়াল ডিস্ট্রিবিউশন ফ্যামিলির সদস্য কারা?

সাধারণত আমরা যেসব প্রব্যাবিলিটি ডিস্ট্রিবিউশন নিয়ে কাজ করি সবাই কমবেশি এক্সপোনেনশিয়াল ডিস্ট্রিবিউশন পরিবারের সদস্য। যেমন,

প্রমাণ কী এরা এক্সপোনেনশিয়াল ডিস্ট্রিবিউশন ফ্যামিলির সদস্য?

আমরা যদি প্রতিটা ডিস্ট্রিবিউশনের সমীকরণকে এক্সপোনেনশিয়াল ফ্যামিলির সাধারণ সমীকরণ আকারে প্রকাশ করতে পারি তাহলেই বুঝব এই ডিস্ট্রিবিউশনগুলো ওই পরিবারের সদস্য।

১. বার্নুলি ডিস্ট্রিবিউশন এর প্রমাণ

[ হওয়ার সম্ভাবনা কত যদি দেয়া থাকে (দেয়া থাকে কথাটা ভুল, ধরে নিতে হবে যদি দ্বারা নিয়ন্ত্রিত হয়) ] এক্সপোনেনশিয়াল ফ্যামিলির সমীকরণ, সমীকরণ দুইটা তুলনা করে,

ন্যাচারাল প্যারামিটার ও ডিস্ট্রিবিউশনের প্যারামিটারের সাথে সম্পর্ক তাহলে, যেহেতু বার্নুলি ডিস্ট্রিবিউশনকে এক্সপোনেনশিয়াল ফ্যামিলির সাধারণ সমীকরণ দ্বারা প্রকাশ করা গিয়েছে তাই বার্নুলি ডিস্ট্রিবিউশন এক্সপোনেনশিয়াল পরিবারের একজন সদস্য!

২. নরমাল ডিস্ট্রিবিউশন বা গাউসিয়ান ডিস্ট্রিবিউশন

এখানে সিঙ্গেল ডিমেনশনাল বা 1D গাউসিয়ান ডিস্ট্রিবিউশনের কথা চিন্তা করব। এবং ভ্যারিয়েবলের সংখ্যা কমানোর জন্য ধরে নিচ্ছি

Mean ও Variance সহ গাউসিয়ান ডিস্ট্রিবিউশন, সেক্ষেত্রে গাউসিয়ান ডিস্ট্রিবিউশন লেখা যাবে এভাবে, তুলনা করে, এভাবে বাকি ডিস্ট্রিবিউশনের জন্যও প্রমাণ করা যাবে।

জেনেরালাইজড লিনিয়ার মডেল (Generalized Linear Model) অ্যাজাম্পশন

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

আমাদের আপাতত লক্ষ্য একটা লিনিয়ার মডেলের সাথে আউটপুটের সম্পর্ক স্থাপন করা এবং এটা করার জন্য আমাদের কিছু Assume করে নিতে হবে। সেগুলো হল,

  1. আমরা যে সমস্যা নিয়ে বিবেচনা করছি তার আউটপুট অবশ্যই কোন একটি এক্সপোনেনশিয়াল ফ্যামিলির PDF (Probability Distribution Function) থেকে জেনারেটেড হতে হবে। ম্যাথেমেটিক্যালি, , এটার মানে হচ্ছে হল আউটপুট, হল ইনপুট এবং হল সেই প্যারামিটার যার মান এস্টিমেট করতে হবে এবং এর সদস্যের ক্যানোনিক্যাল বা ন্যাচারাল প্যারামিটার হবে । আমরা সবসময়ই কিন্তু এবং এর সাথে সম্পর্ক স্থাপন করতে পারি। এতে সুবিধা হল, আমরা যদি এর মান পেয়ে যাই অর্থাৎ আমরা জানব কোন এর জন্য ওই PDF টা আমাদের ডেটাসেট এর সাথে ফিট করে। আরও সাধারণভাবে বলা যেতে পারে, এর মান পাওয়া গেলে এর মান পাব এবং ওই ব্যবহার করে একটা ডিস্ট্রিবিউশন প্লট তৈরি করতে পারব যেটা দিয়ে পরবর্তীতে প্রেডিকশন করা যাবে। কারণ PDF এর কাজই হচ্ছে ইনপুটে কোন মান নিয়ে আউটপুট একটা নির্দিষ্ট মান হওয়ার সাম্ভাব্যতা কত সেটা বের করা।
  2. এবার যদি দেয়া থাকে, তাহলে আমাদের এর মান বের করতে হবে সাধারণত যেটা হয়ে থাকে। অর্থাৎ, আমাদের হাইপোথিসিস হবে এক্সপেক্টেড মানের সমান
    1. এক্সপেক্টেড মান : বাইনোমিয়াল ডিস্ট্রিবিউশন হল বার্নুলি ডিস্ট্রিবিউশনের সংখ্যক ট্রায়াল। কয়েন টসের কথা চিন্তা করা যাক, হেড কে আমরা ও টেইলকে যদি দ্বারা প্রকাশ করি। তাহলে Fair Coin এর ক্ষেত্রে প্রতি আউটকাম হওয়ার সম্ভাবনা । তাহলে,
    2. বার্নুলি ডিস্ট্রিবিউশনের এক্সপেক্টেড মানের সাধারণ সমীকরণ: হাইপোথিসিসে যদি ফিচার দেয়া হয় এবং ফাংশনটি প্যারামিটার দ্বারা ডিফাইন করা হয় তাহলে হওয়ার সম্ভাবনা বা Expected Value
  3. এটা একটু উদ্ভট রকমের অ্যাজাম্পশজন। আমাদের ডিস্ট্রিবিউশনের প্যারামিটার , ইনপুট এবং ডিস্ট্রিবিউশনের ক্যানোনিক্যাল প্যারামিটার এর সাথে সম্পর্ক স্থাপন করতে হবে। আমরা অলরেডি এবং এর সম্পর্ক ডিস্ট্রিবিউশন থেকে বের করতে পারি। কিন্তু এর সাথে সম্পর্ক কীভাবে স্থাপন করা যায়? তাই আমাদের ধরে নিতে হবে, এর সাথে এবং ইনপুট এর সম্পর্ক লিনিয়ার। বা, , যেখানে হল নাম্বার অফ ফিচার বা কলাম সংখ্যা। ভেক্টরাইজড বা ম্যাট্রিক্স আকারে এভাবে লেখা যায় । যেহেতু আমরা ধরেই নিয়েছি মডেলটা লিনিয়ার তাই ডিস্ট্রিবিউশনের প্যারামিটারের সাথে এর সম্পর্ক লিনিয়ার থাকাটাই যুক্তিযুক্ত।

লজিস্টিক রিগ্রেশনের ক্ষেত্রে GLM কনস্ট্রাকশন

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

এবার স্টেপ বাই স্টেপ আমাদের অ্যাজাম্পশন গুলো একে একে প্রয়োগ করব।

  1. আউটপুট এক্সপোনেনশিয়াল ফ্যামিলির অন্তর্গত তাই আমরা নিচের সমীকরণ গুলো অ্যাপ্লাই করতে পারব।
    1. হলে, এই ডিস্ট্রিবিউশনের এক্সপেক্টেড ভ্যালু,
  2. হাইপোথিসিস ফাংশন ও আউটপুটের সাথে সম্পর্ক,
  3. আবার লিনিয়ার সম্পর্কের অ্যাজাম্পশন থেকে,

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

চিত্র

logreg

পরবর্তী অধ্যায়ে আমরা ক্লাসিফিকেশন করার জন্য লস ফাংশন ডিরাইভ করব।

results matching ""

    No results matching ""