مدلهای generative و discriminative
مقدمه احتمال
وقتی می خوای احتمال یک پیشامد رو حساب کنی نیاز به یک مدل احتمالاتی داری. یک پیشامد یک زیرمجموعه از فضای نمونه هست. ما خیلی وقتها نمی تونیم بگیم نتیجه یک آزمایش چیست اما می تونیم مجموعه نتایج ممکن رو مشخص کنیم. به این مجموعه فضای نمونه (sample space) می گن.
مثلاً می خوای بدونی یک سکه رو پرتاب کنی احتمال شیر چقدره، اولاً فضای نمونه {شیر، خط} هست. پیشامد در اینجا زیرمجموعه {شیر} هست. این احتمال بستگی داره که سکه سالم (منصف) هست یا نه وگرنه احتمال شیر لزوماً یک دوم نیست. یا در پرتاب تاس فضای نمونه اعداد 1 تا 6 است و احتمال زوج آمدن زیر مجموعه شامل 2، 4 و 6 است. یک مدل احتمالاتی به هر پیشامد یک احتمال نسبت می ده، ممکنه این احتمالات رو بشه با یک فرمول بیان کرد. خیلی وقتها به جای پیشامدها با متغیر تصادفی سرو کار درایم. متغیر تصادفی یعنی متغیری که شما مقدارش را به شکل قطعی نمی دونید. در واقع متغیر تصادفی وجود نداره، متغیر تصادفی یک نگاشت از یک پیشامد احتمالاتی به یک عدد حقیقی است. مثلاً برای پیشامد شیر می توانید عدد یک رو نسبت بدید. و احتمال x=1 یعنی اینکه شیر بیاد رو محاسبه کنید.
اگر متغیر تصادفی پیوسته باشه از تابع چگالی احتمال برای محاسبه احتمال یک بازه از مقادیر که ممکنه متغیر تصادفی بگیره استفاده می کنند. مثل قد یک فرد که متغیری تصادفی پیوسته است. این تابع چگالی خودش یک مدل هست و نیاز به یک سری پارامتر داره که به آنها پارامترهای مدل می گن. مثلا تابع چگالی نرمال نیاز به یک متوسط و انحراف از میدان داره. با داشتن این دو پارامتر احتمال رو برای هر بازه ای می شه حساب کرد.
تخمین مدل احتمالاتی
به هر حال برای محسابه احتمال نیاز به یک مدل احتمالاتی داریم، اما ما همیشه این مدل و پارامترهاش رو نداریم. بعضی وقتها از روی یک نمونه (sample) از مقادیر یک متغیر تصادفی سعی می کنیم این مدل رو بسازیم یا تخمین بزنیم. مثلاً شما قد که متغیری تصادفی است رو برای 100 نفر اندازه گرفتید و از روی این صد عدد می خواهید یک تابع چگالی (معمولاً نرمال) بسازید. برای اینکا ر متوسط و انحراف معیار مقادیر اندازه گیری شده را استفاده می کنید و طبق روش درستنمایی بیشینه (maximum likelihood) به عنوان پارامترهای مدل استفاده می کنید.. این یک تخمین از تابع چکالی واقعی است که ما شاید تا زمانی که دقیقاً همه جمعیت رو اندازه نگیریم هیچ وقت تابع چگالی واقعی رو ندونیم. در واقع این یک مدل هست. در واقع تابع چگالی واقعی مدلی حقیقی است که شما فرض می کنید این قدها رو تولید کرده و شما سعی دارید تخمینش بزنید.
طبقه بندی با مدل احتمالاتی
وقتی که این تابع چگالی رو داشتید می تونید احتمال رو برای خیلی از موارد دیگه حساب کنید. اگر قصد شما طبقه بندی باشه، شما می تونید یک مدل احتمالاتی برای زنها و یک مدل احتمالاتی (همان تابع چگالی) برای مردها تخمین بزنید. بعد اگر قد یک شخص جدید رو اندازه گرفتید و قصد داشتید از روی اون جنسیتش رو پیشبینی کنید، می تونید احتمالش رو با توجه به هر کدام از این مدلها بدست بیارید. در اینجا به جای احتمال از کلمه likelihood (درستنمایی) هم استفاده می شه، و دنبال مدلی باشید که likelihood بیشتری داره که این نمونه (قد) رو تولید کنه و اون مدل نشاندهنده کلاس (در اینجا جنسیت) شخص هست.
روش مولد generative
این روش یک روش generative (مولد) طبقه بندی است که شما سعی می کنید یک سری مدل احتمالاتی که می تونند مشاهده شما رو تولید کنند (کلمه تولید کلیدی است) را تخمین بزنید. در واقع پشت سر این مقدار یک مدل احتمالاتی وجود داره که ما دقیقاً نمی دونیم چیه. در واقع قد در اینجا توسط این مدل احتمالاتی تولید شده است و یا قد زنها و مردها توسط مدلهای احتمالاتی مختلف تولید می شوند. هر کدوم از این مدلها دارای پارامترهای خودشون هستند (متوسط قد و انحراف معیار). البته شاید مثالهای بهتری باشد که این تولید شدن از روی یک مدل احتمالاتی را بهتر نشان دهد. هرچند در واقع هر متغیر تصادفی از روی یک مدل احتملاتی تولید می شود.
روش discriminative (تمیز دهنده)
روش دیگر و معمول طبقه بندی روش تمیز دهنده است. در روش discriminative (تمیز دهنده) شما سعی نمی کنید که مدل احتملاتی که این مشاهدات رو تولید کرده را تخمین بزنید تنها دنبال یک تابع هستید که بتواند تمایز کلاسها را برای شما مشخص کند مثلاً قد شخص رو بدید و برای کلاس زن و کلاس مرد دو عدد مجزا تولید کنه جوری که شما از این عدد (عددی که بزرگتر است) کلاس را پیش بینی کنید.
داده های آموزشی
هر دو این مدلها نیاز به داده های آموزشی برای تخمین مدل (روش مولد) و یا ساخت تابع و پارامترهای تابع (روش تمیز دهنده) دارند. داده های آموزشی در هر دو روش یکی است. یعنی شما مثلاً قد صد نفر را که مثلاً 50 نفر زن و 50 نفر مرد هستند و مرد و زن کاملاً مشخص هست را برای آموزش استفاده می کنید. البته این نمونه شما باید نماینده جمعیتی باشد که شما قصد دارید بر رو ی آن پیش بینی کنید باشد. مثلا اگر نسبت زنها به مردها 40 به 60 هست باید این نسبتها را رعایت کنید و همینطور باید از افراد مختلف جامعه نمونه گیری کنید. پس از این، روش مولد سعی میکنه یک تابع چگالی پیدا کنه که متغیر تصادفی قد توسط اون تولید شده باشد. برای این کار ابتدا احتمال هر کدام از جنسیت ها را برآورد می کند که در این مثال 50، 50 است. بعد دو تابع چگالی برای مشاهد قدهای مختلف در هر جنسیت را برآورد می کند. با ضرب این دو طبق قانون بیز می توان احتمال جنسیت به شرط قد را بدست آورد.
P(y|x) متانسب است با P(y)P(x|y)
اگر به این فرمول به شکل تابع تمیز دهند نگاه کنید، روش بالا هم به نوعی تمیز دهنده است. هرچند روش تمیز دهنده معمولاً سعی می کند مستقیماً احتمال جنسیت به شرط قد را به دست آورد و برای این کار لزوماً نیازی به تولید چگالی احتمال برای مشاهده (قد) ندارد. یعنی سعی می کند یک رابطه میان جنسیت و قد بسازد مثلاً y=w1*x+w2 و سعی می کند پارامترهای w1 و w2 را بیابد، در این جا y جنسیت و x قد هست. این یک تابع تمیز دهنده است.. البته برخی مواقع هم یک مدل احمالاتی شرطی قد به شرط جنسیت را تخمین می زند P(y|x). اما فرقش با قبلی این است که این احتمال کلاس به شرط مشاهده هست و نه مشاهده به شرط کلاس.
فرق میان روشهای مولد و تمیز دهنده
یک فرق اساسی بین این دو روش اینه که مدل مولد می تونه برای شما نمونه های مشابه آنچه دیده شده تولید کنه. مثلاً با پارامترهایی که تخمین زده شده می تونه یک قد جدید (مثلا 165 را برای یک زن و یا 180 را برای یک مرد تولید کنه.... روش تمیز دهنده هیچ دیدی در این رابطه نداره مثلاً اگر از روش تمیز دهنده بخواهید یک قد مرد جدید تولید کنه ممکنه 300 یا 400 تولید کنه... روش تمیز دهنده تنها یاد گرفته که هر کسی که قدش بالای 168 بود با احتمال بیشتری مرد هست و هرکسی که کمتر از اون باشه با احتمال بیشتری زن هست اما هیچ دید دیگری نداره و برای یک زن ممکنه قد 40 رو تولید کنه... اما روش مولد از متوسط و انحراف معیار هر کدوم از این مشاهدات (قد) باخبر هست و می دونه که متوسط قد زنها مثلا 160 و مردها 170 هست. البته این مقادیر را از روی نمونه های آموزشی تخمین زده.