مشخصات یک ویژگی خوب


ویژگی یک پارامتر یا خصیصه قابل اندازه گیری از پدیده‌ای هست که مشاهده می‌کنیم. ویژگی مشخصات مهم یک پدیده(object) را کمّی می‌کند. به فرایند اندازه‌گیری این پارامترها استخراج ویژگی گفته می‌شود. بخش استخراج ویژگی در همان ابتدای یک سیستم شناسایی الگو( گاها بعد از پیش پردازش ) انجام می‌شود تا فرایند یادگیری و عمویت‌پذیری در ادامه مراحل را ساده تر کند.

استخراج ویژگی به نوعی با کاهش بعد مرتبط است. در فرایند استخراج ویژگی ما از یک سیگنال(تصویر، صدا، متن، سیگنال های حیاتی و ….) که ابعاد بالایی دارد، تعدادی پارامتر/ویژگی استخراج می‌کنیم و با اینکار در کنار اینکه اطلاعات مهم و حیاتی یک سیگنال را حفظ می‌کنیم،  ابعاد آنرا به طور قابل توجهی کاهش می‌دهیم. به عبارتی یک داده با ابعاد بالا را به یک فرم فشرده‌تری تبدیل می‌کنیم. با اینکار به مدلهای یادگیری ماشین امکان یادگیری و generalization را فراهم می‌کنیم.

مفهوم generalization

هدف ما در یک سیستم شناسایی الگو این است که روی sample کار کنیم، ولی در جمعیت جواب بگیریم. یعنی ما با کمک یک پایگاه داده محدود یک سیستم را طراحی می‌کنیم تا بعد در عمل برای همه داده‌های جدید استفاده کنیم. سیستمی که خاصیت generalization نداشته باشد، شاید رو پایگاه داده‌ای که داریم خوب عمل کند، ولی قطعا در داده های جدید خوب عمل نخواهد کرد.

 

چرا ویژگی استخراج می‌کنیم؟

مثال ماهی سالمون و سیباس را در نظر بگیرید، در اون سیستمی که طراحی کردیم، در ابتدا دوربین از ماهی عکس ثبت میکند و به کامپیوتر منتقل میکند تا تصویر تجزیه و تحلیل شده و مشخص شود که عکس مربوط به ماهی سالمون هست یا سیباس.

آموزش شناسایی الگو

اگر ما بخواهیم خود سیگنال اصلی (تصویر ماهی) را مستقیما به مدل ارائه دهیم چند تا مشکل اینجا می شود!

  • ابعاد بسیار بالا است، و امکان یادگیری برای مدل بسیار سخت خواهد بود. به ازای هر بعد داده، مدل حداقل باید یک پارامتر بدست بیاورد تا مرز تصمیم گیری را مشخص کند! برای مثال فرض کنید شما از هر تصویر، رنگ ماهی را استخراج کرده‌اید و رنگ ماهی در دو گروه به صورت زیر توزیع شده است.

طبقه بندی

واضح است که با داشتن یک مقدار برای آستانه میتوانیم تصمیم گیری را انجام دهیم. مثال اگر رنگ ماهی بیشتر از عدد x بود عکس مربوط به ماهی سیباس است، و اگر کمتر از x بود عکس مربوط به ماهی سالمون است! می‌بینیم که کلا مدل نیاز به پیدا کردن یک پارامتر دارد. اگر دو تا ویژگی استخراج کنیم، مدل نیاز به محاسبه حداقل دو پارامتر دارد(اگر مرز خطی باشد- شیب و عرض از مبدا خط)

حالا فرض کنید ابعاد شما 50000 است، در اینصورت مدل حداقل باید 50000 پارامتر رو بدست بیاره تا بعدا از آنها برای تصمیم گیری  در داده های جدید استفاده کند!

مدلهای یادگیری ماشین برای تخمین پارامترها نیاز به پایگاه داده دارند، و هر چقدر تعداد پارمترهای مدل یادگیری ماشین افزایش یابد نیاز به پایگاه داده خیلی بیشتری است. که عملا همچین داده ای را نمی‌توان ثبت کرد یا از لحاظ زمانی پروسه آموزش مدل یادگیری ماشین زمانبر است.

  • از طرف دیگر سیگنال اصلی به شرایط بسیار حساس است. اگر ماهی یک مقدار جابجا شود همه چی بهم خواهد خورد! یا اگر نویز روی تصویر قرار بگیرد!

همه این موارد باعث می شوند که ابعاد رو کاهش بدهیم، ما از سیگنال اصلی(یا به عبارت سیگنال خام) تعدادی پارامتر مهم استخراج میکنیم تا نه تنها نماینده خوبی برای سیگنال اصلی باشند، کنارش ابعاد را هم کاهش دهیم .

استخراج ویژگی تصویر را برای ماشین تفسیر میکند، مثلا تو این تصویر ماهی چه رنگی داره، طول و عرضش چی هست و یه سری از این اطلاعات از object(ماهی) به مدل ارائه میدهد.

ماشین به داشتن همه جزئیات تصویر نیاز نداره، فقط کافیه یه سری اطلاعات از object به ماشین بدهیم تا بتواند با داشتن آنها ماهی سالمون و سیباس را از هم تفکیک کند.

ویژگی ها تفسیر تصویر هستند و هر کدام بخشی از اطلاعات مرتبط به ماهی را به ماشین میدهند.

چه ویژگی‌هایی استخراج کنیم؟

در این مثال، ورودی تصویر ماهی است، که میشه تمام اطلاعاتی که داریم. معمای مسئله لیبل ماهی(نوع ماهی) است که باید با تحلیل اطلاعاتی که در دست داریم تشخیص دهیم. طبقه‌بند کارگاه مسئله است. اطلاعات و شواهد(معلومات مسئله) را بررسی میکند و براساس اون اطلاعات معما را حل میکند. به عبارتی لیبل داده ورودی را تخمین میزند. ویژگی ها پارامترهایی هستند که از تصویر استخراج می شوند و به نوعی معلومات مسئله ما هستند. هر کدام بخشی از اطلاعات لازم را از تصویر استخراج می‌کنند و در اختیار طبقه بند قرار می دهند. طبقه‌بند همه این اطلاعات را کنار هم قرار میدهد تا متوجه شود لیبل داده چی هست!

ما در استخراج ویژگی باید تمام سعیمان را بکنیم تاویژگی هایی استخراج کنیم که حاوی اطلاعات مفید باشند و طبقه بند با بررسی آنها متوجه شود نوع ماهی چی هست!

 

مشخصات یک ویژگی خوب

  • ویژگی باید informative باشد. یعنی ویژگی  حاوی اطلاعات مرتبط با object باشد.

در این مثال ماهی سالمو-سیباس، اگر ما دمای اتاق را به عنوان یک ویژگی در نظر بگیریم، آیا اطلاعاتی در مورد نوع ماهی به مدل ارائه میدهیم؟ یا در یک پروژه تشخیص چهره رنگ پیراهن فرد میتونه ویژگی مناسب باشد؟ قطعا نه! ویژگی باید به object ربط داشته باشد، مثال طول ماهی، عرض ماهی، رنگ ماهی. به ماهی ربط دارند همه!

ولی آیا informative بودن یک ویژگی برای خوب بودن آن کفایت می‌کند؟ خیر. Informative بودن ویژگی شرط لازم برای مناسب بودن است ولی شرط کافی نیست!

  • ویژگی باید تفکیک پذیر باشد یعنی ویژگی استخراج شده باید مقدار متفاوتی در گروهای مختلف داشته باشد. اگر ویژگی استخراج شده در دو گروه مقدار یکسانی داشته باشد، آیا با داشتن این ویژگی میتوان فهمید داده به چه کلاسی تعلق دارد؟ برای مثال، آیا میشه با ویژگی رنگ، سیب قرمز و گوجه فرنگی را از هم تفکیک کرد؟ هر دو قرمز هستند! درسته ویژگی کاملا مرتبط با object هست، ولی در گروه مقدار یکسانی دارد! اگر قرار بود سیب قرمز رو از سیب زمینی تفکیک کنیم، ویژگی رنگ میتونست ویژگی مناسبی باشه!

فضای ویژگی ایده آل

فضای ویژگی ایده ال

ویژگی خوب ویژگی است که واریانس درون کلاسی آن حداقل و واریانس بین کلاسی آن حداکثر باشد.  برای مثال طول ماهی‌های سالمون همه نزدیک نزدیک به 10 باشه و طول ماهی‌های سییباس همه نزدیک به 1000 !

ویژگی خوب باید مستقل از سایر ویژگی ها باشد. یعنی اطلاعات جدید و متفاوتی نسبت با سایر ویژگی ها ارائه دهد.

ما باید ویژگی هایی استخراج کنیم که نه تنها دو شرط قبلی رو داشته باشه، بلکه،   باید حاوی اطلاعات جدید باشد. اطلاعاتی که توسط سایر ویژگی ها ارائه نشده است.

مثال: اینجا دو تا تابلو داشته باشیم یا یه دونه، فرقی به ما میکنه؟

افزونگی

 

تکلیف ما چی هست؟ از کجا بفهمیم که ویژگی ای استخراج می‌کنیم  خوب هست یا نه؟

در بخش استخراج ویژگی به خوب یا بد بودن ویژگی توجه نمیکنیم، تلاشمان هست ویژگی های مناسب استخراج کنیم، ولی خب ممکنه ویژگی هایی هم این وسط استخراج کنیم خوب نباشند، در مرحله بعد در بخش انتخاب ویژگی، ویژگی های بد رو شناسایی میکنیم و حذفشون میکنیم!

ما در استخراج ویژگی به نوعی کورکورانه عمل میکنیم. فارغ از اینکه ویژگی خوب است یا بد، استخراج میکنیم، بعدا قبل از ارائه ویژگی‌ها به طبقه‌بند، شرط میگذاریم، و اونایی که خوب هستند را وارد طبقه بند می‌کنیم!


دیدگاه ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *