دسته بندی با استفاده از مدل های خطی دانشگاه صنعتی امیرکبیر دسته بندی با استفاده از مدل های خطی Instructor : Saeed Shiry & Bishop Ch. 4
دسته بندی در مسایل دسته بندی یک بردار ورودی X به یکی از K کلاس مجزای Ck اختصاص داده میشود. برای این کار فضای ورودی به نواحی تصمیم گیری تقسیم بندی میشود که مرزهای آنرا سطوح تصمیم گیری می نامند. در این فصل مدل هایی بررسی میشوند که سطوح تصمیم گیری از توابع خطی تشکیل میشوند. برای جدا سازی فضای ورودی D بعدی از ابرصفحه های D-1 بعدی استفاده میشود.
مسایل جدا پذیر خطی مجموعه داده هایی که با یک سطح تصمیم گیری خطی جداپذیر هستند linearly separable یا جداپذیر خطی نامیده میشوند. یک دسته بندی کننده خطی برای دسته بندی داده ها از ترکیب خطی ویژگی ها استفاده میکند. دسته بندی کننده خطی بسیار سریع عمل میکند و برای داده ها با ابعاد بالا کارائی خوبی دارد. (البته درخت تصمیم میتواند سریعتر عمل نماید.) دسته بندی کننده خطی دسته بندی کننده غیرخطی داده جدا پذیر خطی
Generative models vs. discriminative models دو روش کلی برای تعیین پارامترهای دسته بندی کننده های خطی وجود دارد: Generative models این روش ها بر اساس مدل سازی توابع چگالی شرطی عمل میکنند نظیر Naive Bayes classifier که در آن از فرض استقلال شرطی استفاده میشود. discriminative models در این روش ها از یک مدل جدا کننده استفاده میشود که سعی در افزایش کیفیت خروجی بر اساس داده های آموزشی دارد. نظیر: Logistic regression که در آن مدل بر این اساس بدست می آید که داده مشاهده شده توسط مدلی ساخته شده که توسط خروجی قابل توصیف است Perceptron که در آن سعی در کاهش خطای مشاهده شده در داده آموزشی است Support vector machine که در آن سعی در افزایش فاصله مرزی سطوح تصمیم گیری و داده های آموزشی است
تقسیم بندی مدلها به صورت احتمالاتی Discriminant Functions Two class and Multi class Least squares for classification Fisher’s linear discriminant Perceptron algorithm Probabilistic Generative Models Continuous inputs and max likelihood Discrete inputs, Exponential Family Probabilistic Discriminative Models Logistic regression for single and multi class Laplace approximation Bayesian logistic regression
تابع هدف در مسایل دو کلاسی تابع هدف بصورت زیر است: که مقدارt=0 برای کلاس C1 و t=1 برای کلاس C2 استفاده میشود. برای مسایل چند کلاسی از یک روش کدینگ 1-of-K برای نمایش کلاسها استفاده میشود. برای مثال در یک مسئله 5 کلاسی یک ورودی متعلق به کلاس 2 بصورت زیر نمایش داده میشود.
تبدیل رگراسیون خطی به دسته بندی کننده خطی ساده ترین مدل رگراسیون مدل خطی بصورت زیر است: در مسایل دسته بندی مقدار y مقادیر گسسته و یا مقدار احتمال ثانویه بین (0,1) به خود میگیرد. برای این منظور از تابعی به صورت f(.) که تابع activation function نامیده میشود استفاده میشود. سطوح تصمیم گیری بصورت y(x)=constant خواهند بود که توابع خطی از x هستند. اما در حالت کلی f می تواند غیر خطی باشد.
تابع جداساز تابع جدا ساز تابعی است که بردار x را بعنوان ورودی گرفته و در خروجی مقداری متناسب با کلاس Ck تولید میکند. در حالت دو کلاسی تابع جدا ساز خطی بصورت زیر تعریف میشود. که در آن w بردار وزن و w0 مقدار بایاس خوانده میشود. برای دسته بندی از رابطه زیر استفاده میشود: مرز دسته بندی با تابع زیر تعیین میشود: این مرز برای داده D بعدی بصورت یک ابرصفحه D-1 بعدی خواهد بود.
تعیین تابع جداساز برای تعیین مقادیر w می توان دو نقطه XA, XB را در روی سطح تصمیم گیری درنظر بگیرید. از آنجائیکه لذا خواهیمداشت: در نتیجه بردار w بر هر بردار موجود در صفحه تصمیم گیری عمود خواهد بود. بعبارت دیگر بردار w می تواند جهت صفحه تصمیم گیری را تعیین نماید. اگر x نقطه ای روی سطح تصمیم گیری باشد خواهیم داشت: مقدار w0 فاصله از مبدا سطح تصمیم گیری را مشخص میکند.
تعیین تابع جداساز برای یک نقطه دلخواه x داریم: با ضرب کردن هر دو طرف در wT و جمع کردن با w0 و استفاده از روابط زیر خواهیمداشت:
مسایل چند کلاسی برای مسایلی که K >2 باشد ممکن است بخواهیم دسته بندی را با استفاده از چند دسته بندی کننده 2 کلاسی انجام دهیم. اما اینکار با مشکل مواجه است. در یک دسته بندی کننده one-versus-all از تعداد k-1 دسته بندی کننده 2 کلاسی استفاده میشود که هر کدام یکی از کلاسها را از سایرین جدا میکند. این امر باعث بوجود آمدن نواحی با دسته بندی مبهم میشود. در روش one-versus-one از تعداد k(k-1)/2 دسته بندی کننده باینری استفاده میشود که یک دست را از یک دسته دیگر جدا میکند. برای دسته بندی کردن یک نقطه از روش voting برای انتخاب رای اکثریت دسته بندی کننده ها استفاده میشود. اما این امر هم باعث بوجود آمدن نواحی با دسته بندی مبهم میشود.
دسته بندی کننده چند کلاسی یک راه دیگر، ساخت یک دسته بندی کننده است که با استفاده از تابع زیر بتواند مستقیما دسته یک ورودی را مشخص نماید. ورودی x به دسته Ck تعلق خواهد داشت اگر مرز تصمیم گیری بین دو دسته Ck, Cj در جایی خواهد بود که ابرصفحه تصمیم گیری D-1 بعدی بوده و بصورت زیر تعریف میشود: ثابت میشود که نواحی تصمیم گیری singly connected و محدب هستند.
اثبات محدب بودن سطوح تصمیم گیری
یادگیری تابع دسته بندی کننده برای یادگیری دسته بندی کننده خطی از سه روش میتوان استفاده کرد: Least squares, Fisher’s linear discriminant, and Perceptron algorithm. تمامی این روشها ساده هستند اما دارای معایب مخصوص به خود نیز میباشند.
دسته بندی با استفاده از کمترین مربع خطا این روش مشابه رگراسیون خطی است و منجر به معادلات بسته ای میشود که برای تمامی پارامترها مقداری بدست خواهد آمد. هر یک از دسته های Ck, k=1…K توسط یک مدل خطی مخصوص به خود تعیین میشوند: برای سادگی محاسبات بجای برداری ورودی X از یک بردار ساختگی بصورت زیر استفاده میشود: همینطور بردار وزن بصورت زیر نوشته میشود: در نتیجه مجموعه معادلات دسته بندی کننده را میتوان بصورت زیر نوشت: W ماتریس وزن و یا پارامترهای مسئله است که ستون K ام آن یک بردار D+1 بعدی است. برای یادگیری این ماتریس از روش کاهش خطای مربعی استفاده میشود. پس از یادگیری پارامترها میتوان ورودی دلخواه X را به دسته ای متعلق دانست که برای آن مقدار زیر حداکثر باشد:
تعیین پارامترها با استفاده از روش Least squares مجموعه داده ورودی tn دسته مربوط به هر بردار ورودی را مشخص میکند که بصورت 1-out of- K ساخته شده و یک بردار D+1 بعدی است. ماتریس های زیر را تعریف میکنیم: در نتیجه تابع مربوط به مجموع مربعات خطا بصورت زیر در خواهد آمد: در این رابطه WX-T بردار خطاست که مجذور آن بصورت یک ماتریس قطری خواهد بود. در نتیجه Tr ( تریس) مجموع عناصر قطری خواهد بود.
مینیمم کردن تابع خطا برای اینکار از تابع خطا نسبت به W مشتق گرفته شده و برابر صفر قرار داده میشود: بعد از مرتب سازی تابع جدا کننده بصورت زیر در می آید:
محدودیت های روش Least Squares یک محدودیت اصلی این روش حساسیت آن نسبت به وجود Outliers است.
معایب روش least sqaure ضعف نسبت به outlier برخی از داده ها برای این روش مناسب نیستند سطح تصمیم گیری این روش در شرایطی که توزیع گاوسی باشد، مشابه Maximum Likelihood است که در مورد سطوح تصمیم گیری باینری خوب عمل نمیکند. مثال زیر عدم کارایی این روش را نشان میدهد. با استفاده از مدلهای احتمالاتی میتوان تکنیکهایی ساخت که خیلی بهتر از روش حداقل مربعات عمل کنند.
Fisher’s linear discriminant یک نگرش متفاوت به جداسازی خطی از دیدگاه کاهش بعد میباشد. فرض کنید که بردار X که یک داده D بعدی است را با استفاده از رابطه y = wTx به یک بعد تصویر کنیم. اینکار باعث میشود تا داده هایی که در D بعد بخوبی جدا پذیر بودند در یک بعد در هم فرو رفته و جدا نشوند. اما میتوان با انتخاب صحیح w تصویرسازی (projection) داده را طوری انجام داد که حداکثر جدا سازی بدست آید.
Fisher Linear Discriminant در یک مسئله دو کلاسه فرض کنید که تعداد N1 داده به کلاس C1 و تعداد N2 داده به کلاس C2 تعلق داشته باشد در این صورت میانگین هر کلاس برابر است با: یک راه ساده برای جداسازی داده های تصویر شده این است که فاصله بین میانگین داده های تصویر شده افزایش یابد. در این حالت میتوان w را طوری انتخاب کرد که فاصله زیر افزایش یابد: از آنجاییکه با انتخاب مقادیر بزرگ برای w میتوان این عبارت را بدلخواه بزرگ کرد، w با رابطه زیر محدود میشود: با معرفی ضریب لاگرانژ میتوان این ماکزیمم سازی با محدودیت را بخوبی انجام داد.
اهمیت واریانس داخل کلاسی فاصله بین میانگین دو کلاس لزوما معیار خوبی برای جداپذیر ساختن دو کلاس نیست.
ایده اصلی فیشر داده های شکل زیر در فضای اصلی جدا پذیر هستند اما وقتی به خطی که میانگین های آنها را به هم وصل میکند تصویر میشوند همپوشانی زیادی دارند. این مشکل ناشی از وجود کوواریانس غیرقطری شدید توزیع کلاسهاست. ایده فیشر: تابعی را ماکزیمم کنیم که جدایی بین کلاسهای تصویر شده را ماکزیمم کند در حالیکه در داخل هر کلاس واریانس را کم نماید تا بدینوسیله هم پوشانی کاهش یابد.
مثالی از انتخاب وزنها در ایده فیشر
فرمول فیشر واریانس داخل کلاسی داده های تصویر شده متعلق به کلاس Ck توسط رابطه زیر تعیین میشود: میتوان مجموع واریانس داخل کلاسی را ثابت فرض کرد: قاعده فیشر بصورت نسبت واریانس بین کلاسها به واریانس درون کلاسی تعریف میشود: این رابطه را میتوان بصورت زیر مرتب نمود: ماتریس s را scatter matrix می نامند
فرمول فیشر
فرمول فیشر
فرمول فیشر با مشتق گرفتن از رابطه فیشر می توان آنرا ماکزیمم کرد: از آنجاییکه عبارات زیر اندازه w را تعیین میکنند میتوان از آنها صرفنظر کرده و طرفین را در ضرب کرد. مشاهده میشود که w با میانگین کلاسها متناسب است. از این خاصیت برای پیدا کردن جهت مناسب برای تصویر کردن داده ها در یک بعد استفاده نمود. در عمل مقدار بصورت y0 انتخاب میشود بطوریکه
ارتباط فیشر با حداقل مربعات در روش حداقل مربعات هدف یافتن مدلی است که تخمینهای آن تا حد ممکن به تابع هدف نزدیک باشد. و روش فیشر بدنبال یافتن مدلی است که حداکثر فاصله را در فضای خروجی داشته باشد. با این وجود نشان داده میشود که برای مسایل دو کلاسی رابطه فیشر به حالت خاصی از روش حداقل مربعات تبدیل میشود. ( اثبات در کتاب موجود است)
جدا ساز فیشر برای مسایل چند کلاسی الگوریتم فیشر را میتوان به ابعاد بالاتر نیز گسترش داد. در مثال زیر داده های 3 بعدی به زیر فضا های 2 بعدی تصویر شده اند ( از فضای D بعدی به c-1 بعدی ) که توسط بردارهای w1, w2 توصیف میشوند. در اینحالت زیرفضا های بهینه به نحوی پیدا میشوند که حداکثر جداسازی را برای یک مقدار ثابت از واریانس داخل کلاسی داشته باشند. در این شکل w1 بخوبی از عهده اینکار بر می آید.
محدودیت های جدا ساز فیشر توزیع داده ها را بصورت ضمنی گوسی فرض میکند. برای جدا سازی به میانگین اهمیت میدهد. با خطر overfit روبروست.
الگوریتم پرسپترون این الگوریتم که در سال 1962 توسط Rosenblatt ارائه شد روش دیگری برای جداسازی خطی است. این الگوریتم یک مدل دو کلاسی ارائه میدهد که در آن ابتدا بردار ورودی توسط یک تابع غیر خطی به یک فضای ویژگی φ(x) منتقل میشود تا توسط رابطه زیر به یک مدل خطی تعمیم یافته تبدیل شود. برخلاف سایر مدلهای دو کلاسی، در پرسپترون کلاسها با 1, 0 نشان داده نمیشوند.
بدست آوردن وزن ها میتوان وزنها را از طریق کم کردن یک تابع خطا بدست آورد. یک انتخاب طبیعی برای تابع خطا میتوانست تعداد داده هایی باشد که غلط دسته بندی میشوند. اما این انتخاب به یک الگوریتم یادگیری ساده منتهی نمیشود زیرا چنین تابعی بصورت piecewise constant خواهد بود که با هر تغییرw سطوح تصمیم گیری به سمت یکی از نقاط داده حرکت خواهد کرد. در نتیجه نمی توان از مشتق گیری برای تعیین w استفاده نمود. همچنین هیچ پاسخ closed form برای این مسئله وجود ندارد.
قاعده پرسپترون از آنجائیکه میخواهیم بردار وزن w بگونه ای باشد که برای داده xn در کلاس C1 داشته باشیم: و برای کلاس C2 داشته باشیم: این امر را با یک فرمول کلی بصورت زیر میتوان نوشت: قاعده پرسپترون به هر داده ای که بدرستی ارزیابی شده باشد خطای صفر نسبت میدهد و برای هر ارزیابی ناصحیح سعی میکند تا مقدار خطای را به حداقل برساند. در نتیجه خطا بصورت زیر تعریف میشود.
قانون یادگیری پرسپترون سهم خطا برای داده هایی که نادرست ارزیابی میشوند بصورت یک تابع خطی از w است. لذا میتوان الگوریتم گرادیان نزولی (gradient descent) را به این تابع اعمال نمود. قانون یادگیری پرسپترون: داده های آموزشی به ترتیب ارزیابی میشوند. اگر داده درست دسته بندی شد وزنها تغییر نمیکند در غیر اینصورت برای کلاس C1 متناسب با بردار φ(x) به مقدار وزن w اضافه شده و برای کلاس C2 از آن کم میشود.
همگرایی مقادیر وزنها با هر بار تکرار الگوریتم یادگیری پرسپترون سهم خطای ناشی از یک داده که به غلط دسته بندی شده است کاهش می یابد. که البته این بدان معنا نیست که برای داده های دیگر نیز چنین اتفاقی می افتد. علاوه بر آن تغییر وزنها می تواند برخی از داده ها را که در تکرار های قبلی درست دسته بندی میشدند به صورت غلط دسته بندی نماید. لذا هیچ تضمینی برای کاهش خطا در هر مرحله وجود ندارد. با این وجود اثبات شده است که اگر جوابی وجود داشته باشد ( داده ها جداپذیر خطی باشند) آنگاه الگوریتم یادگیری پرسپترون میتواند در تعداد مرحله محدود به جواب برسد. در حالت کلی برای یک مسئله جداپذیر خطی راه حل های مختلفی وجود دارد و جوابی که پیدا میشود بستگی به مقادیر اولیه پارامترها و همچنین ترتیب ارائه داده ها دارد. برای داده های جدا ناپذیر این الگوریتم هرگز همگرا نخواهد شد.
مثالی از یادگیری پرسپترون دانشگاه صنعتی امیرکبیر مثالی از یادگیری پرسپترون در این مثال بردار وزن و خط جدا کننده با رنگ سیاه نشان داده شده است. خط قرمز رنگ بردار خطا را نشان میدهد که با اضافه شدن به بردار وزن ها باعث تغییر جهت آن میشود. Illustration of the convergence of the perceptron learning algorithm, showing data points from two classes (red and blue) in a two-dimensional feature space (φ1, φ2). The top left plot shows the initial parameter vector w shown as a black arrow together with the corresponding decision boundary (black line), in which the arrow points towards the decision region which classified as belonging to the red class. The data point circled in green is misclassified and so its feature vector is added to the current weight vector, giving the new decision boundary shown in the top right plot. The bottom left plot shows the next misclassified point to be considered, indicated by the green circle, and its feature vector is again added to the weight vector giving the decision boundary shown in the bottom right plot for which all data points are correctly classified.
محدودیت های پرسپترون افزایش آن به بیش از 2 کلاس عملی نیست. برای داده هایی که بصورت خطی جداناپذیر هستند همگرا نمیشود.
خلاصه Linear Discrimin. Funcs have simple geometry Extensible to multiple classes Parameters can be learnt using Least squares not robust to outliers, model close to target values Fisher’s linear discriminant Two class is special case of least squares Perceptrons Does not converge if classes not linearly separable Does not provide probabilistic output Not readily generalized to K>2 classes