استخراج ویژگی، یکی از مهمترین کارهایی است که بهطور معمول هنگام تحلیل دادهها و ساخت مدلهای یادگیری ماشین انجام میشود. در این فرایند، دادههای خام پروژه را بهشکلی تبدیل میکنیم که امکان دستیابی به ویژگیهای مناسب برای ساخت مدلهای بهتر و دقیقتر ماشینلرنینگ فراهم شود. با توجه به اهمیت این موضوع، نوشتار فعلی از مجله فرادرس را به تشریح استخراج ویژگی در یادگیری ماشین اختصاص دادهایم و علاوه بر اشاره به مزایا آن، روشها و تکنیکهای مرتبط را نیز همراه با مثال به شما یاد خواهیم داد.
آنچه در این مطلب میآموزید:
-
با مفهوم و جایگاه استخراج ویژگی در یادگیری ماشین آشنا خواهید شد.
-
انواع روشهای استخراج ویژگی در یادگیری ماشین را خواهید آموخت.
-
با تفاوتهای انتخاب ویژگی و استخراج ویژگی در یادگیری ماشین آشنا میشوید.
-
میآموزید که کاربردهای استخراج ویژگی در صنعت چیست.
-
مزایا و معایب استخراج ویژگی را درک خواهید کرد.
-
مهارت خود را با مرور پیادهسازی استخراج ویژگی در یادگیری ماشین تقویت خواهید کرد.

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

استخراج ویژگی در یادگیری ماشین چیست؟
«استخراج ویژگی» (Feature Extraction) یکی از مهمترین و پرکاربردترین روشها و تکنیکهای مورد استفاده در حوزه یادگیری ماشین محسوب میشود که بهوسیله آن دادهها را بهشکل بهتر و سادهتری برای پردازش آماده میکنیم. هدف این روش، کاهش بار محاسباتی بدون از دست دادن اطلاعات مهم درون دادههاست. در واقع به کمک استخراج ویژگی سعی داریم تا ویژگیهای جدیدی را ایجاد کنیم که اطلاعات اصلی و ارزشمند دادههای خام را در خود داشته باشند اما به شکل بهینهتری ارائه شوند. در آخر نیز مجموعهای از فیچرهای عددی به دست خواهیم آورد که برنامههای کامپیوتری بهسادگی توانایی پردازش و اجرای آنها را خواهند داشت.
شاید کنجکاو شده باشید که چرا این کار را انجام میدهیم. پاسخ این است که هنگام رویارویی با دیتاستهای بسیار بزرگ بهخصوص در حوزههایی مانند پرازش تصویر، پردازش زبان طبیعی و پردازش سیگنال، طبیعی است که دادههای پروژه ویژگیهای متعددی داشته باشند و احتمالاٌ بسیاری از آنها بهکار نمیآیند یا اینکه تکراری هستند. استخراچ ویژگی در چنین موقعیتی با هدف سادهسازی و خلاصهتر کردن دادهها وارد عمل شده و ویژگیهای جدیدی را میسازد. بهگونهای که این ویژگیها خصوصیات مهم دادههای اولیه را دارند و کمک میکنند تا تحلیل و پردازش دادهها سریعتر و بهتر انجام شود.
عکسی که در ادامه آورده شده، استخراج ویژگیهای اساسی از دادههای اولیه را بهخوبی نشان میدهد.

با اینکه برخی خصوصیات از دادههای اصلی حذف شده اما ویژگیهای مهم آن بهخوبی استخراج شده شدهاند و میتوانند برای پردازش مؤثر مورد استفاده قرار گیرند.
حالا که با مفهوم استخراج ویژگی آشنا شدید، خوب است بدانید که چرا این کار را انجام میدهیم.
اهمیت استخراج ویژگی در یادگیری ماشین چیست؟
اهمیت استخراج ویژگی در یادگیری ماشین از چند جنبه، بسیار قابل توجه و مهم است که برخی را در ادامه بیان کردهایم.
- کاهش بار محاسباتی: دادههایی که در پروژههای واقعی یادگیری ماشین از آنها استفاده میکنیم بهطور معمول جزئیات اضافی زیادی دارند که بر پیچیدگی آنها میافزاید. استفاده از استخراج ویژگی در چنین شرایطی کمک میکند تا تنها اطلاعات مهم و قابل استفاده را از میان این حجم از دادههای خام، بهطور مثال دادههای تصویری، بیرون بکشیم. در همین راستا، دادههای ما سادهتر شده و کامپیوتر راحتتر میتواند آن را پردازش و مدیریت کند.
- بهبود عملکرد و دقت مدلهای یادگیری ماشین: با استخراج و انتخاب ویژگیهای مهم و مؤثر از میان دادههای اولیه، میتوانیم به اطلاعات ارزشمندی در مورد الگوها و روندهای پنهانی که در شکلگیری دادههای نقش داشتهاند دست پیدا کنیم. این مورد کمک میکند تا مدلهای ما عملکرد بهتر و پیشبینیهای دقیقتری داشته باشند.
- دریافت نکات ارزشمند: با استخراج ویژگیهای مهم و تأثیرگذار از دادهها و کاهش تعداد فیچرها، الگوریتمهای یادگیری ماشین نیز بهتر کار میکند. دلیل آن نیز ساده است، دادههای اضافی و نویزها حذف شده و توجه الگوریتم روی جنبههای مهم داده و خصوصیات مهم آن معطوف میشود.
- جلوگیری از بیشبرازش: یکی از چالشهایی که مدلهای ما ممکن است با آن رو به رو شوند، بیشبرازش است. در واقع هنگامیکه مدل با دادههایی شامل ویژگیهای بسیار زیاد آموزش ببیند، ممکن است وابستگی زیادی به دادههای آموزشی پیدا کند و نتواند پیشبینی خوبی برای دادههای جدید داشته باشد. استخراج ویژگی در اینجا کمک میکند تا مدل سادهتر شده و روی دادههای جدید نیز نتیجه بهتری ارائه دهد.
چگونه ماشین لرنینگ را با فرادرس یاد بگیریم؟
ماشین لرنینگ یا همان یادگیری ماشین یکی از زیرشاخههای مهم هوش مصنوعی است که با وجود آن، ماشینها توانایی یادگیری از دادهها و دیتاستها را پیدا کرده و میتوانند در انجام بسیار از کارها همچون تصمیمگیریهای مبتنی بر داده و اتوماسیون برخی کارها مورد استفاده قرار گیرند. برای یادگیری ماشینلرنینگ و متخصص شدن در آن، شیوههای مختلفی وجود دارد که گذراندن دورههای دانشگاهی، مطالعه مقالات، مشاهده ویدیوها و وبینارهای آموزشی، تنها چند نمونه از این روشها محسوب میشوند.
با توجه به اینکه مشاهده فیلمهای آموزشی یکی از روشهای جدید و بسیار مؤثر در امر یادگیری مهارتهای گوناگون بهشمار میرود، شما میتوانید از فیلمهای آموزشی فرادرس مانند مجموعه فیلمهای آموزش یادگیری ماشین Machine Learning – مقدماتی تا پیشرفته از فرادرس برای این منظور استفاده کنید.

این فیلمهای آموزشی با کیفیتی بالا و توسط اساتید باتجربه تهیه شدهاند و میتوانند مباحث مختلف یادگیری ماشین را به همراه تمرینها و پروژهای گوناگون به شما یاد دهند. با یادگیری مفاهیم مهم از جمله استخراج ویژگی که نقش مهمی در آموزش دقیق بسیاری از مدلهای یادگیری ماشین دارد میتوانید توانایی خود را در تحلیل و طراحی مدلهای دقیقتر و کارآمد تر تقویت کنید.
عناوین برخی از این فیلمهای آموزش موجود در این مجموعه را در ادامه فهرست کردهایم.
انواع روش های استخراج ویژگی در یادگیری ماشین
برای استخراج و بیرون کشیدن ویژگیهای ارزشمند و معنادار از دادهها، روشهای گوناگونی وجود دارد که هر کدام متناسب با نوع داده کاربرد خاص خود را دارد. در ادامه با برخی از این روشها آشنا میشوید.
روش های آماری استخراج ویژگی
روشهای مبتنی بر آمار جزو ابزارهای مفید و کاربرد برای استخراج ویژگی محسوب میشوند و به کمک آنها میتوانیم الگوهای موجود در دادهها را شناسایی و آنها را بهشکلی خلاصه و قابل قهم نمایش دهیم. در ادامه، با برخی از روشهای اینچنینی آشنا خواهید شد.
- میانگین: همان مقدار متوسط دادهها است.
- میانه: عددی است که پس از مرتبسازی دادهها بهشکل صعودی، در میانه مقادیر قرار میگیرد.
- انحراف معیار: معیاری است که پراکندگی دادهها نسبت به میانگین را میسنجد.
- همبستگی و کوواریانس: این معیارها بیانگر رابطه خطی بین ۲ یا چند متغیر هستند.
- تحلیل رگرسیون: روشی است که ارتباط بین یک متغیر وابسته و یک یا چند متغیر مستقل را مدلسازی میکند.
ابزارهای آماری و مواردی که در بالا اشاره کردیم، به ما کمک میکنند تا شاخص مرکزی، میزان پراکندگی و ارتباطات موجود در دادهها را بهشکل بهتری نمایش دهیم.

روش های کاهش بعد برای استخراج ویژگی
در فرایند یادگیری ماشین، مبحث کاهش ابعاد یکی از مهمترین گامهایی است که برای استخراج ویژگی پیش رو خواهید داشت. این روش با سادهتر کردن دادههای پیچیده که ابعاد بالایی دارند، به آسانتر شدن تفسیر و فهم مدلها کمک میکند. علاوه بر این، از «نفرین ابعاد» (Curse of Dimensionality) هم پیشگیری میکند که از بالا بودن تعداد ابعاد بهوجود میآید. برای کاهش ابعاد روشهای گوناگونی وجود دارد که از میان آنها میتوان به مواردی مانند LDA ،PCA و t-SNE اشاره کرد. در ادامه با هر یک از این رویکردها آشنا خواهید شد.
- «تحلیل مؤلفههای اصلی» (PCA): این روش جزو تکنیکهای رایج و محبوب برای کاهش ابعاد بهشمار میرود. PCA برای این منظور و برای اینکه دادههایی با ابعاد بالا را به دادههای سادهتر و در فضایی با ابعاد کمتر تبدیل کند، دستهای از متغیرها که نماینده بخش زیادی از تغییرات دادهها هستند را انتخاب میکند. این تکنیک، جزو روشهای نظارت نشده محسوب میشود و به همین دلیل، به برچسب دادهها توجهی ندارد. با توجه به توانمندیهای PCA، عملکرد خوبی را میتوان برای مصورسازی دادهها و استخراج ویژگی از آن شاهد بود.
- «تحلیل تشخیصی خطی» (LDA): این روش کمک میکند تا ترکیبهایی از ویژگیها را پیدا کنیم که بتوانند دستههای مختلف دادهها یا رویدادها را به بهترین شکل از هم جدا کنند. یکی از فرقهای LDA با تکنیک PCA این است که برچسبهای کلاس نیز در نظر گرفته میشوند و روشی نظارت شده محسوب میشود. LDA به دنبال این است که دادههای متعلق به کلاسهای گوناگون را تا حد ممکن از هم جدا کند در عین حال که دادههای موجود در هر یک از کلاسها را به هم نزدیک میکند.
- خودرمزگذار: نوعی شبکه عصبی مصنوعی محسوب میشوند که از ۲ بخش رمزگذار و رمزگشا تشکیل شده است. مؤلفه رمزگذار، دادههای ورودی را به نسخهای با ابعاد پایینتر که با نام فضای نهان شناخته میشود، تبدیل میکند. در طرف دیگر، رمزگشا را داریم که دادههای موجود در فضای نهان را به حالت و فضای اولیه آنها بر میگرداند. بهطور کلی خودرمزگذارها به دنبال این هستند که نسخه ساده و قابل فهمی از دادههای اولیه را یاد بگیرند و از آن برای کارهایی مانند کاهش ابعاد، تشخیص ناهنجاری و غیره استفاده کنند. اشاره کردیم که Autoencoder-ها میتوانند عمل کاهش ابعاد را انجام دهند که این کار با آموزش شبکه برای ساخت مجدد دادههای اولیه از نسخهای سادهتر و با ابعاد کمتر انجام میشود. فضای نهان که خودرمزگذار از دادهها به دست میآورد، بهعنوان نسخهای ساده از دادههای اولیه که ابعاد کمتری نیز دارد استفاده میشود. این شکل از داده، خود در ادامه میتواند بهعنوان ورودی سایر مدلهای ماشینلرنینگ در نظر گرفته شود.
- «t-SNE» (جاسازی تصادفی همسایه با توزیع t): t-SNE با رویکردی غیرخطی تلاش میکند تا با حفظ الگوی ارتباطات محلی دادهها، ابعاد آن را کاهش دهد. این عمل با انتقال دادههایی با ابعاد بالا به فضای ۲ یا ۳ بعدی انجام میشود که در قالب نمودار پراکندگی قابل مشاهده و تحلیل هستند. هنگامیکه دیتاست و دادههای پروژه ساختار پیچدهای داشته باشند، روش t-SNE میتواند عملکرد بسیار خوبی از خود نشان دهد.
- «تحلیل مؤلفه مستقل» (ICA): تحلیل مؤلفههای مستقل، روشی پیشرفته در پردازش سیگنال بهشمار میرود که سیگنالهای چندمتغیره را به بخشهایی تقسیم میکند که تا حد ممکن از یکدیگر مستقل هستند. در این روش، ویژگیهای وابسته و مرتبط با هم ترکیب شده و ابعاد دادهها را تا جایی که بشود، کاهش میدهند.

جدول زیر اطلاعات خوبی در مورد برخی از این روشها در اختیارتان قرار خواهد داد.
متد | PCA | LDA | t-SNE |
روش | خطی | خطی | غیرخطی |
بهترین کاربرد | ویژگیهای عددی | جداسازی کلاسها در دستهبندی چندکلاسه | مصورسازی دادهها در دیتاستهایی با ابعاد بالا |
حساسیت | حساس به نویز | متوسط | بالا، نسبت به هایپرپارامترها |
روش های استخراج ویژگی از داده های متنی
برای اینکه الگوریتمهای یادگیری ماشین بتوانند با دادههای متنی کار کنند، میبایست ابتدا متنها خام و بدون ساختار را به شکل عددی و قابل فهم برای کامپیوتر تبدیل کنیم که این وظیفه بر عهده استخراج ویژگی است. روشهایی که برای استخراج ویژگی از متن وجود دارد نقش بسیار مهمی در حوزه پردازش زبان طبیعی ایفا میکنند. در ادامه با برخی از این روش ها آشنا خواهید شد.
- روش «کوله کلمات» (Bag of Words): مدل «BoW» یکی از سادهترین روشها برای مدلسازی متن و استخراج ویژگی در NLP بهشمار میرود. در این روش، بدون در نظر گرفتن ترتیب یا ساختار کلمات، متن مورد نظر تنها به عنوان مجموعهای از کلمات نمایش داده میشود. تنها نکته مهم در اینجا این است که چه کلماتی در متن وجود دارد و هر یک از این لغات چند مرتبه تکرار شدهاند. کاربردهای زیادی از جمله دستهبندی متن، مقایسه اسناد و گروهبندی متنها را میتوان جزو موارد استفاده این روش نام برد. در دستهبندی متون میتوان از مدل BoW استفاده کرد که در اینصورت، هر کلمه به یک ویژگی عددی تبدیل شده و برای آموزش کلاسیفایر مورد استفاده قرار میگیرد.
- روش TF-IDF: این تکنیک که نام آن از عبارت «فراوانی واژه – معکوس فراوانی متن» (Term Frequency-Inverse Document Frequency) آمده است، راه دیگری برای استخراج ویژگی محسوب میشود. این روش کمک میکند تا واژههایی را شناسایی کنیم که در کل متن خیلی تکرار نشدهاند اما نقش مهمی در تحلیل متون دارند. تکنیک TF-IDF، ارزش یک کلمه در یک متن را میسنجد. در این شیوه، تعداد دفعاتی که کلمه در متن ظاهر شده و همچنین نادر بودن آن در کل متون به ما کمک میکند تا ارزش واقعی آن را ارزیابی کنیم. از حوزههایی که میتوان کاربرد این روش را در آن دید میتوان به بازیابی اطلاعات، تحلیل احساسات و روحیات و دستهبندی متون اشاره کرد.
روش های پردازش سیگنال
در ادامه، با روشهای مورد استفاده در این زمینه آشنا خواهید شد.
- تبدیل فوریه: این نوع تبدیل برای زمانیکه بخواهیم سیگنال را از زاویه فرکانسی بررسی کنیم، بسیار مفید خواهد بود. در واقع تبدیل فوریه سیگنال را از دامنه اصلی آن، چه در فضا باشد و چه در زمان، به شکلی بازنمایی میکند که اجزای فرکانسی سیگنال بهخوبی قابل بررسی و تحلیل باشند.
- تبدیل موجک: عملکرد تبدیل «Wavelet» کمی با تبدیل فوریه که سیگنال را تنها بهلحاظ اجزای فرکانسی آن نشان میداد، متفاوت است. در واقع با تبدیل موجک علاوه بر فرکانس، اطلاعاتی در مورد زمان هم در اختیارمان قرار خواهد گرفت. هنگام بررسی و تحلیل سیگنالهای غیر ایستا و بهطور کلی سیگنالهایی که فرکانس آنها در طول زمان تغییر میکند، استفاده از تبدیل موجک میتواند بسیار سودمند باشد.
مشاهده فیلم آموزش تجزیه و تحلیل سیگنال ها و سیستم ها از فرادرس که لینک آن نیز در ادامه آورده شده، اطلاعات مفیدی را در مورد تبدیل فوریه سیگنالهای پیوسته و گسسته به شما یاد میدهد.
استخراج داده از تصاویر
روشهایی مورد استفاده برای این کار را در ادامه فهرست کردهایم.
- تکنیک HOG: هیستوگرام گرادیانهای جهتدار که بهاختصار آن را «HOG» نیز مینامند، روشی برای تحلیل تصویر ایت که الگوی تغییرات شدت نور یا مسیر خطوط لبههای تصویر را شناسایی میکند. این روش در مواردی مانند شناسایی و تشخیص اشیا در عکسها کابرد فراوانی دارد و سیستمهای بینایی کامیپوتر بهکمک آن میتوانند درک بهتری از عکسها داشته باشند.
- الگوریتم SIFT: استخراج ویژگی مقاوم به مقیاس که بیشتر با نام «SIFT» شناخته میشود، یکی از الگوریتمهای رایج در حوزه بینایی کامپیوتر بهشمار میرود. در این روش، ویژگیهای منحصر به فرد و تغییرناپذیر از عکس مورد نظر استخراج میشود. این ویژگیها در واقع خصوصیاتی هستند که با تغییر اندازه، چرخش، تغییرتن نورپردازی همچنان قابل شناسایی باقی میمانند. استفاده از این روش در مواردی نظیر «ترکیب تصاویر» (image stitching) و تشخیص اشیا بسیار رایج است.
- ویژگیهای CNN: این ویژگیها، توانایی شبکههای عصبی پیچشی یا کانولوشن در درک لایه به لایه تصاویر را نشان میدهد. در واقع این نوع شبکهها با عبور دادن عکس از چندین لایه پردازشی به مرور الگوها و ساختارهای پیچیدهتر را یاد میگیرد. ویژگیهای استخراج شده از شبکههای کانولوشنی و بهطور خاص ویژگیهایی که از لایههای عمیقتر بهدست میآیند، در زمینه بینایی کامپیوتر و مواردی مانند دستهبندی تصاویر، تشخیص اشیا و بخشبندی احساسات بسیار مفید هستند.

کدام روش برای استخراج ویژگی در یادگیری ماشین بهتر است؟
پیش از این با روشها و تکنیکهای مختلف استخراج ویژگی آشنا شدید. اما باید بدانید که نمیتوان روشی واحد برای استخراج ویژگی معرفی کرد که در همه شرایط جواب خوبی بدهد. برای انتخاب روش مناسب لازم است دقت کافی خرج شود. ضمن اینکه در بیشتر مواقع برای دریافت نتیجه مناسب لازم است دانش تخصصی در حوزه مدنظر را نیز داشته باشید.
مواردی که در این رابطه میبایست مورد توجه قرار گیرد را در ادامه فهرست کردهایم.
- احتمال از بین رفتن اطلاعات مهم: یکی از چالشهایی موجود در فرایند استخراج ویژگی این است که در حین انجام این کار، ممکن است برخی دادهها و اطلاعات مهم را نیز از دست بدهیم.
- پیچیدگی محاسباتی: برخی از تکنیکهای معرفی شده برای استخراج ویژگی، بهخصوص هنگام اجرا روی دیتاستهای بسیار بزرگ، ممکن است بار محاسباتی زیادی را تحمیل کنند.
فرق انتخاب ویژگی با استخراج ویژگی در یادگیری ماشین
در یادگیری ماشین، علاوه بر استخراج ویژگی مفهوم دیگری به نام انتخاب ویژگی نیز وجود دارد که در واقع، راهکاری مهم دیگری برای سادهتر کردن دادهها و کاهش ویژگیها محسوب میشود و میتواند عملکرد مدلها را بهتر کنند. برای اینکه درک بهتری از تفاوت آن با استخراج ویژگی پیدا کنید، جدولی را برای بررسی مهمترین خصوصیات آنها در ادامه آوردهایم.
استخراج ویژگی | انتخاب ویژگی | |
تعریف | ایجاد ویژگیهای جدید از ویژگیهای اصلی | انتخاب بخشی از ویژگیهای مهم و کاربردی از میان ویژگیهای اصلی |
هدف | تبدیل دادههای اصلی به شکلی مفیدتر با پردازش سادهتر | کاهش ابعاد دادهها |
شیوه اجرا | تبدیل دادهها با پردازش سیگنال، روشهای آماری و الگوریتمهای تبدیل | استفاده از روشهای Filtering ،Wrapper و Embedded |
ورودی | ویژگیهای اولیه دادهها | ویژگیهای اولیه دادهها |
خروجی | مجوعهای جدید از ویژگیهای ساخته شده | بخشی از ویژگیهای انتخاب شده از ویژگیهای اولیه |
از دست دادن اطلاعات | احتمال از بین رفتن امکان تفسیر ویژگیهای اولیه | احتمال حذف برخی ویژگیها و اطلاعات کم اهمیت |
هزینه محاسباتی | هزینه محاسباتی بالا بهخصوص برای انجام تبدیلهای پیچیده | بار محاسباتی کمتری نسبت به استخراج ویژگی دارد. |
شفافیت و قابل درک بودن | احتمال از دست دادن تفسیرپذیری با توجه به نوع تبدیل | حفظ تفسیرپذیری ویژگیهای اولیه |
مثال | تحلیل مؤلفههای اصلی یا PCA، تجزیه مقادیر منفرد یا SVD، شبکههای خودرمزگذار | انتخاب رو به جلو، حذف عقبگرد، روش LASSO |
تصویر زیر، عملکرد استخراج ویژگی را بهخوبی نشان میدهد.

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

در یکی از مطالب پیشین مجله فرادرس، مبحث انتخاب ویژگی در یادگیری ماشین را به زبان ساده شرح دادهایم که مطالعه آن میتواند برایتان مفید باشد.
کاربردهای استخراج ویژگی در یادگیری ماشین چیست؟
اکنون میدانید که فرایند استخراج ويژگی چیست، به چه دلیل انجام میشود و چه روشها و ابزارهایی برای این منظور وجود دارد. در ادامه، به سراغ آشنایی با موارد استفاده از آن خواهیم رفت. استخراج ویژگی جایگاه مهمی در بهرهبرداری مؤثر از دادهها دارد و در صنایع مختلف میتوان شاهد کاربردهای گوناگون آن بود. سازمانها با استخراج ویژگی و تبدیل دادهها خام خود به ویژگیهایی سودمند میتوانند به بینشها جدیدی دست پیدا کرده و سیستمهای هوشمند قویتری ایجاد کنند. در ادامه، حوزههایی را معرفی کردهایم که استخراج ویژگی در آنها از اهمیت زیادی برخوردار است.
استخراج ویژگی نقش مهمی در حوزههای گوناگون که تحلیل داده در آنها ضروری است، بر عهده دارد. در این قسمت، با برخی از کاربردهای متداول این تکنیک آشنا خواهید شد.
پردازش تصویر و بینایی کامپیوتر
استخراج ویژگی در زمینههایی مانند آنچه در ادامه آورده شده کاربرد دارد.
- تشخیص اشیا: با بیرون کشیدن ویژگیهای مهم از دادههای تصویری مانند عکسها میتوان از الگوهای پنهان در آنها مطلع شد یا اشیا را در چنین تصاویری شناسایی کرد.
- تشخیص چهره: در زمینه شناسایی چهرههای موجود در عکسها و ویدیوها نیز، استخراج ویژگیهای چهره نقش مهمی ایفا میکند.
- دستهبندی تصاویر: اگر قصد دستهبندی تصاویر در قالب کلاسها یا گروههای گوناگون را نیز داشته باشید، استخراج ویژگیها با دریافت مهمترین ویژگیهای هر عکس میتواند بسیار مفید باشد.
پردازش زبان طبیعی
در حوزه NLP یا پردازش زبان طبیعی نیز میتوان شاهد کاربردهای استخراج ویژگی از جمله موارد زیر بود.
- دستهبندی متون: با استخراج ویژگیهای مهم موجود در دادههای متنی میتوان از آن برای دستهبندی اسناد یا متون در گروههای مشخص استفاده کرد.
- تحلیل احساسات: با بیرون کشیدن ویژگیهای مهم و مرتبط میتوان احساسات پنهان در متنها را تشخیص داد.
تشخیص گفتار
در این زمینه، سیگنالهای صوتی مورد تحلیل قرار گرفته تا ویژگیهای مهم آن بیرون کشیده شوند. در ادامه نیز میتوان از این خصوصیات برای تشخیص کلمات یا عبارات بیان شده استفاده کرد.
مهندسی پزشکی
مهندس پزشکی، حوزه دیگری است که میتوان کاربرد استخراج ویژگی از جمله موارد زیر را در آن مشاهده کرد.
- تحلیل تصاویر پزشکی مانند سیتی اسکن و MRI: در این حوزه، استخراج ويژگیهای مهم از تصاویر پزشکی برای تشخیص دقیقتر بیماریها و ارتقا پژوهشهای مرتبط با پزشکی استفاده میشود.
- پردازش سیگنالهای بیولوژیکی مانند EEG یا ECG: در این حوزه، سیگنالهای زیستی مانند موارد اشاره شده، بررسی و تحلیل میشوند تا با استفاده از ویژگیهای مهم استخراج شده، امکان تشخیص دقیقتر بیماریها و پایش وضعیت بیماران فراهم میشود.
پایش وضعیت ماشین آلات
در این حوزه، دادههای بهدست آمده از سنسورهای دستگاه تحلیل شده و با استخراج ویژگیها مهم از آنها، بر سلامت و وضعیت عملکرد دستگاهها نظارت میکنیم. هدف کلی در اینجا، امکان پیشبینی مشکلات احتمالی دستگاهها و خربیها آنها پیش از این است که مشکلی پیش بیاید.

کتابخانه ها و ابزارهای برنامه نویسی برای پیاده سازی استخراج ویژگی
برای پیادهسازی استخراج ویژگی، ابزارها و کتابخانههای متعددی ساخته شده است که با توجه به حوزه مدنظر خود میتوانید به سراغ گزینه مناسب بروید. در ادامه، برخی از این ابزارها را معرفی کردهایم.
- MATLAB: متلب به عنوان یکی از قدرتمندترین نرمافزارهای این حوزه، مجموعه ابزارها و توابع گوناگونی را برای پردازش سیگنال، پردازش تصویر و سایر کارهای مرتبط با تحلیل داده در اختیار کاربران قرار میدهد. با استفاده از این ابزارها امکان دسترسی به روشهایی مانند تبدیل موجک، فیلترهای پردازش تصویر و تبدیل فوریه را خواهید داشت.
- سایکیتلرن: کتابخانه Scikit-learn، ابزارهای متعددی را برای انجام وظایف یادگیری ماشین مانند روشهای استخراج ویژگی «تحلیل مؤلفههای مستقل» (ICA)، «تحلیل مؤلفههای اصلی» (PCA ) و سایر روشهای آمادهسازی دادهها را در اختیار کاربران خود قرار میدهد.
- OpenCV: اپنسیوی یکی از شناختهشدهترین ابزارها در حوزه بینایی کامپیوتر بهشما میرود که میتوان از آن برای استخراج ویژگی استفاده کرد و برای این منظور توابع گوناگون و روشهایی مانند SIFT ،SURF و ORB را ارائه میدهد.
- تنسورفلو و کراس: این ۲ کتابخانه پایتونی برای وظایف مرتبط با یادگیری عمیق طراحی شدهاند و ابزارهایی را برای ایجاد و همچنین آموزش شبکههای عصبی ارائه میدهند که میتوان از آنها برای استخراج ویژگیهای مهم از متون و تصویر یا سایر دادهها استفاده کرد.
- پایتورچ: این ابزار نیز مانند تنسورفلو امکان ساخت شبکههای عصبی عمیق با معماری سفارشی برای کارهای گوناگون از جمله استخراج ویژگیها فراهم میکند.
- ابزار تحلیل صدا و موسیقی Librosa: این ابزار یک کتابخانه تخصصی پایتون برای تحلیل دادههای صوتی و موسیقی است و با ارائه روشهایی مانند MFCCs و ویژگیهای کرومایی، میتوان از آن برای استخراج ویژگیهای سیگنالهای صوتی بهرهمند شد.
- مجموعه ابزارهای NLTK: کتابخانه محبوب پایتونی است که میتوان از قابلیتهای آن در زمینه پردازش زبان طبیعی بهرهمند شد و ابزارهایی مانند نمایش «کوله کلمات» (Bag-of-Words)، بردارهای «TF-IDF» و «جاسازی کلمات» (Word Embeddings) را برای استخراج ویژگی از دادههای متنی در اختیار برنامهنویس قرار میدهد.
- کتابخانه Gensim: این کتابخانه پایتونی وظایف مربوط به پردازش زبان طبیعی را انجام میدهد و با ارائه ابزارهایی برای مدلسازی موضوعات و تشخیص مشابهت اسناد، امکان استخراج ویژگیهای مهم از متون را فراهم میکند.
مزایا و معایب استخراج ویژگی چیست؟
با توجه به خصوصیات اشاره شده در مورد مبحث استخراج ویژگی، میتوان آن را روشی بسیار مهم برای دستیابی به مجموعهای از ابزارهای کاربردی و قدرتمند یادگیری ماشین و تحلیل دادهها دانست.
مزایای استخراج ویژگی در یادگیری ماشین
در ادامه به برخی مزیتهای استخراج ویژگی اشاره کردهایم.
- کاهش پیچیدگی دادهها با کاهش ابعاد: برای درک بهتر این مزیت، یک اتاق بزرگ، بسیار شلوغ و نامرتب را در نظر بگیرید که اطلاعات مورد نیاز ما نیز را درون خود جای داده است. دادههای چندبعدی دقیقاْ به همین صورت هستند. فرایند استخراج در چنین موقعیتی را میتوان مانندی فردی در نظر گرفت که بهشکلی هوشمندانه محتوای این فضا را مرتب کرده و تنها وسایلی را نگه میدارد که به آنها نیاز داریم. به بیان دیگر از میان انبوه دادهها، تنها خصوصیات مهم و مرتبط حفظ میشوند. با این کار، پردازش، مدیریت و تجسم دادهها بسیار سادهتر خواهد شد.
- کارایی بهتر یادگیری ماشین با الگوریتمهای بهتر: گاهی اوقات الگوریتمهای یادگیری ماشین با حجم زیادی از دادههای پیچیده برای پردازش مواجه میشوند که این موضوع میتواند چالشهایی را به دنبال داشته باشد. فرایند استخراج ویژگی در اینجا کمک میکند تا این دادههای حجیم خلاصه شده و تنها بخشهای مهم و مفید آنها استخراج شود. بدینترتیب، الگوریتمها میتوانند کارایی بهتری داشته باشند چون تنها با ویژگیهای مهم دادهها سر و کار دارند.
- تحلیل راحتتر دادهها با تمرکز روی مؤلفههای مهم: با نادیده گرفتن نویزها و جزئیات کماهمیت و توجه به مهمترین مؤلفههای موجود در دادههای پروژه، تمرکز خود را روی ارتباطها و الگوهای مهم معطوف میکنیم.در واقع، این کار را بهجای در نظر گرفتن و تفسیر تمامی اطلاعات موجود انجام میدهیم.

مشکلات استخراج ویژگی در یادگیری ماشین
علیرغم تمام مزایای اشاره شده، هنگام استخراج ویژگی و عدم اجرای صحیح آن ممکن است با چالشهایی رو به رو شویم که برخی را در ادامه فهرست کردهایم.
- مدیریت و پردازش دادههای پیچیده و با ابعاد بالا
- احتمال بروز بیشبرازش و کمبرازش
- بار محاسباتی
- وجود ویژگیهای تکراری و غیرضروری
مثال عملی و پیاده سازی استخراج ویژگی در یادگیری ماشین
مرور مثالهای عملی به شما کمک میکند تا مباحث یادگیری ماشین را بهتر درک کنید. به همین دلیل، در این قسمت میخواهیم روند استخراج ویژگی را با مثالی عملی مرور کنیم. در ابتدای کار، دیتاست مناسبی را انتخاب میکنیم تا مدل یادگیری ماشین خود را بر مبنای آن توسعه دهیم.
دیتاست سرطان سینه
در این مثال ما از دادههای مربوط به سرطان سینه استفاده میکنیم که شامل اطلاعات ۵۶۹ فرد است و هر یک از این نمونهها دارای ۳۱ ویژگی عددی هستند. برچسب این نمونهها بیانگر یک دستهبندی باینری و دوتایی است که مبتلا بودن فرد به سرطان سینه را مشخص میکند. علاوه بر این متغیر وابسته، دادههایمان متغیرهای مستقل از جمله موارد زیر را نیز دارند.
- «شعاع» (Radius): بیانگر میانگین فاصله از مرکز سلول تا نقاط موجود روی مرز آن
- بافت: انحراف معیار یا میزان پراکندگی مقادیر سیاه و سفید یا خاکستری در تصویر
- محیط: بیانگر طول مرز سلول
- مساحت: نشان دهنده مساحت ناحیه سلول
- نرمی: میزان صاف بودن سطح مرز سلول
- فشردگی
- فرورفتگی
- تعداد نقاط فرورفتگی
- و غیره
همانطور که اشاره کردیم، این دیتاست دارای ۳۰ ویژگی غیر از برچسب است. برای دسترسی به این دادهها میتوانید از ابزار سایکیلتلرن استفاده کنید که دادههای گوناگونی از جمله این دیتاست را بهطور پیشفرض درون خود دارد.
ایجاد مدل اولیه با استفاده از الگوریتم رگرسیون لجستیک
در اینجا، میخواهیم یک مدل پایهای بسازیم که در آن هنوز هیچ کاری برای کاهش ویژگیها انجام نشده است. بنابراین، لازم است کتابخانههای ضروری پایتون برای این پروژهها را همانطور که در کدهای زیر مشخص شده، ایمپورت کنیم.
همانطور که مشخص است، کتابخانههای نامپای، پانداس برای کار با دادهها و دیتافریم، matplotlib برای مصورسازی، seaborn ،time و سایکلیتلرن برای دیتاست را وارد کردهایم.
در ادامه، دیتاست سرطان سینه را بارگذاری کرده و آن را در متغیر cancer_dict ذخیره میکنیم.
با اجرای کدهای بالا، متغیر cancer_dict یک ساختار داده دیکشنری شامل مقایر ویژگیها، مقادیر برچسب، نام ویژگیها، نام برچسب، توضیحاتی در مورد دیتاست مربوطه و نام فایل را در خود جای میدهد. برای اینکه از این موضوع مطمئن شویم، دستور زیر را اجرا میکنیم.
بدینترتیب، در صورتیکه مشکلی وجود نداشته باشد، میبایست خروجی مشابه زیر برایتان چاپ شود.
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
در ادامه، یک دیتافریم از دادههای مورد نیاز میسازیم. برای این منظور طبق کدهای زیر دادههایمان را در قالب ویژگیها و ستونها تقسیم میکنیم.
با اجرای کدهای بالا، ۱۰ ردیف از دادهها در خروجی چاپ میشود. در تصور زیر، نمونهها را به همراه تعدادی از ویژگیها مشاهده میکنید.
یکی از کارهایی که در راستای بهبود عملکرد مدل میبایست انجام دهیم این است که آنها را مقیاسبندی کنیم. پس، کتابخانههای مربوطه را ایمپورت میکنیم.
همانطور که در کدهای بالا نیز نشان داده شده است، از کلاس StandardScaler برای مقیاسبندی استفاده میکنیم. در واقع با این کار، دادههایمان بهشکلی تبدیل میشوند که توزیع نرمال داشته باشند.
در ادامه، قصد ایجاد تابعی داریم که دادههای آموزش و تست را دریافت کرده، مدل یادگیری ماشین را روی آنها اجرا کند و شاخصهای عملکرد مدل را نیز برایمان برگرداند. تابع apply_model(X, y) را برای این منظور ساختهایم که کدهای آن نیز در ادامه آورده شده است.
ما از ۷۰ درصد دادهها برای آموزش و از ۳۰ درصد باقیمانده آن برای ارزیابی عملکرد مدل استفاده کردهایم. الگوریتم مورد استفاده در اینجا نیز رگرسیون لجستیک است که برای مسائل دستهبندی باینری گزینه کارآمد و خوبی محسوب میشود.
توجه داشته باشید که در حال حاضر ویژگیهای مربوط به دادههایمان را کاهش ندادهایم و تابع برنامه را بهشکل زیر فراخوانی میکنیم.
خروجی نیز بهصورت زیر و شامل زمان اجرای برنامه و معیارهای ارزیابی در یادگیری ماشین از جمله صحت، دقت و فراخوانی خواهد بود.
Wall time: 64 ms (‘Accuracy score: 0.9707602339181286’, ‘Recall score: 0.9722222222222222’, ‘Precision score: 0.9813084112149533’)
استخراج ویژگی در یادگیری ماشین با PCA
همانطور که در قسمت مربوط به روشهای استخراج ویژگی اشاره شد، PCA یکی از روشهای پراستفاده و محبوب کاهش ویژگی محسوب میشود. این تکنیک سعی میکند تا ترکیبی از چند ویژگی اصلی پیدا کند که نماینده خوبی برای سایر ویژگیها باشند و دادهها را خلاصهتر و سادهتر کند. الگوریتم PCA برای این منظور از میزان خطای بازسازی و همچنین واریانس کمک میگیرد. در واقع به دنبال این است که مقدار واریانس را به بیشترین مقدار ممکن برساند و در کنار آن میزان خطای بازسازی را کمینه کند. به این صورت که دادهها را روی محورهای جدید و عمود برهم منتقل میکند. در چنین حالتی، نقاطی که همبستگی بیشتری با هم دارند در این فضای جدید در کنار هم قرار میگیرند و سپس این محورها با توجه به اهمتی که دارند رتبهبندی میشوند.

PCA جزو روشهای یادگیری بدون نظارت بهشمار میرود و به برچسب دادهها نیازی ندارد. با استفاده از این الگوریتم میتوانید دادهها را تا میزان یک بعد هم خلاصه کنید. همچنین بهدلیل بدون ناظر بدون، ممکن است خطاهایی هم هنگام دستهبندی داشته باشد.
در دادههای مربتط با سرطان سینه میخواهیم تعداد ویژگیها را از ۳۰ به ۲ بُعد کاهش دهیم و سپس از الگوریتم رگرسیون لجستیک برای دستهبندی دادهها استفاده کنیم. برای اینکه با PCA دیتاست جدیدی با تنها ۲ ستون ایجاد کنیم، کدهای زیر را نوشتهایم.
برای اینکه نتیجه کار و دیتاست جدید را ببینیم از دستور زیر استفاده میکنیم.
تصویر زیر، چند نمونه از دادههای خلاصه شده را نشان میدهد.

در صورت لزوم نیز میتوانیم با دستور زیر، دادهها را در نمودار پراکندگی به تصویر بکشیم.
تصویر زیر این نمودار را نشان میدهد.

در آخر نیز با استفاده از تابعی که پیش از این تعریف کردیم، از مدل آموزش داده شده برای پیشبینی روی دادههای جدید استفاده میکنیم.
خروجی ارزیابی بهصورت زیر خواهد بود.
Wall time: 24 ms (‘Accuracy score: 0.9415204678362573’, ‘Recall score: 0.9537037037037037’, ‘Precision score: 0.9537037037037037’)
استخراج ویژگی در یادگیری ماشین با LDA
الگوریتم LDA ابعاد دادهها را با تمرکز روی جداکردن بهتر دستهها کاهش میدهد. به بیان دیگر، یک خط فرضی میسازد و تمام دادهها را روی این خط قرار میدهد. در طی این فرایند، LDA به دنبال این است که فاصل بین میانگین دادهها را تا جای ممکن افزایش داده و همزمان، میزان پراکندگی دادهها را کمینه کند. بدینترتیب، همپوشانی دادهها روی محور جدید کمتر میشود. در نهایت نیز با کاهش خطاهای دستهبندی، دستهبندی بهتر انجام خواهد شد.
LDA جزو روشهای با نظارت محسوب میشود. یعنی علاوه بر ویژگیها از برچسب دادهها نیز استفاده میکند. کدهای زیر، استفاده از LDA برای کاهش ویژگیها به یک بعد را نشان میدهد.
تصویر زیر، خروجی استفاده از الگوریتم LDA را نشان میدهد که بیانگر خلاصهکردن دادهها در قالب یک ویژگی است.

این نمودار نشان میدهد که دادهها تنها یک ویژگی دارند و بهخوبی دستهبندی باینری را انجام دهند. اکنون با نوشتن کدهای زیر، به سراغ ارزیابی عملکرد این الگوریتم میرویم.
خروجی به صورت زیر خواهد بود.
Wall time: 16 ms (‘Accuracy score: 0.9649122807017544’, ‘Recall score: 0.9907407407407407’, ‘Precision score: 0.9553571428571429’)
همانطور که مشاهده میکنید، نتایج بسیار خوب هستند و سرعت اجرا نیز بسیار بالا بوده است.
استخراج ویژگی در یادگیری ماشین با Isomap
الگوریتمهایی مانند PCA و LDA که پیش از این پیادهسازی کردیم، برای کاهش ابعاد از رابطه بین ویژگیها و نگاشت آنها بر صفحهای عمود استفاده میکنند. در اینجا روشی به نام «Isomap» را معرفی و پیادهسازی میکنیم که از تکنیکی به نام یادگیری «منیفولد» (Manifold) استفاده میکند.

یادگیری منیفولد علاوه بر اینکه دادهها را با کاهش تعداد ویژگیهای آن، بهشکل ساده و خلاصهتری تبدیل میکند، بهگونهای طراحی شده که بتواند هر نوع الگوی پیچیده و غیرخطی داخل دادهها را نیز تشخیص داده و حفظ کند. به بیان دیگر، حساسیت بیشتری نسبت به جزئیات نشان میدهد و ساختارهای پنهان را نیز برخلاف برخی دیگر از روشها حفظ میکند.
روش Isomap با ایجاد نمایی فشردهتر و سادهتر از دادهها به دنبال این است که فاصله واقعی بین نقاط مختلف را بدون تغییر نگه دارد. به بیان دیگر، شکل اصلی دادهها را در ابعاد پایینتر حفظ می کند.
کدهای زیر را برای پیادهسازی این روش در نظر بگیرید. بسیاری از دستورات مانند روشهات قبلی استخراج ویژگی است، اما با توجه به اینکه قصد داریم تا ویژگیهای دادهها را به ۲ بُعد کاهش دهیم، n_components را با ۲ مقداردهی کردهایم.
پس از اجرای مدل، نوبت به مصورسازی دادهها میرسد که با کد زیر قابل انجام است.
خروجی را در ادامه مشاهده میکنید.

مانند روشهای قبل و با استفاده از تابع apply_model ، آخرین مرحله کار را به ارزیابی مدل اختصاص میدهیم.
عملکرد روش Isomap روی دیتاست را در ادامه آوردهایم.
Wall time: 393 ms (‘Accuracy score: 0.9590643274853801’, ‘Recall score: 0.9722222222222222’, ‘Precision score: 0.963302752293578’)
ادامه یادگیری با فرادرس
اکنون که با مبحث استخراج ویژگی در یادگیری ماشین آشنا شدید، خوب است دانش خود را در حوزههای دیگر از جمله کاهش ویژگی گسترش دهید. فیلمهای آموزشی زیر برای یادگیری این مفاهیم میتوانند بسیار مفید باشند.
همچنین، برای دسترسی به فیلمهای آموزش بیشتر میتوانید از به مجموعه آموزشهای پایتون برای علم داده و هوش مصنوعی مقدماتی تا پیشرفته از فرادرس مراجعه کنید.

جمعبندی
در این مطلب از مجله فرادرس به شما گفتیم که استخراج ویژگی در یادگیری ماشین چیست و چه کاربردی دارد. مزایا و معایب و همچنین تکنیکهای متداول برای استخراج آماری را نیز توضیح دادیم.
همانطور که بیان شد، استخراج ویژگی، فرایند بسیار مهمی است که حین انجام وظایف مرتبط با یادگیری ماشین و تحلیل داده با آن رو به رو خواهید. هدف از استخراج ویژگی این است که متغیرها یا ویژگیهای مرتبط و مهم را از دادههای خام پروژه شناسایی کرده و استخراج کنیم. ویژگیهایی که از این طریق بهدست میآیند، دیتاستی خلاصهتر و معنادارتر ایجاد میکنند. در نهایت میتوان از چنین دادههایی در انجام وظایف گوناگون از جمله دستهبندی، خوشهبندی و پیشبینی بهرهمند شد.
source