مقدمه انتخاب ویژگی در داده کاوی
به خاطردارم که دو سال پیش، زمانی که برای شرکت در انتخابات هیئت امنای مجتمع محل سکونتمان داوطلب شده بودم؛ برای برنامهریزی و تقسیمبندی اهدافم با انبوهی از پیشنهادهای اهالی آن مجتمع روبرو شدم. اطلاعاتی در دست داشتم که مرا کاملاً گیج و سردرگم کرده بود؛ بهطوریکه اصلاً نمیدانستم این دادهها را چگونه دستهبندی کنم و همچنین نمیدانستم که مبحث انتخاب ویژگی در داده کاوی هم میتواند به من کمک کند. من با دو مشکل روبرو بودم. اولاً یک سری از پیشنهادها کاملاً غیرممکن و رؤیایی به نظر میآمد. دوما گروه دیگر پیشنهادها کاملاً عملی و ممکن بود اما در مورد آنها هم مشکل اولویتبندی وجود داشت.
در اوج سردرگمی بودم که تصمیم گرفتم؛ از روشهای داده کاوی برای حل مشکل استفاده کنم. بهاینترتیب که با استفاده از آن، ابتدا پیشنهادهای غیرممکن و نامعقول را حذف کردم؛ سپس سایر پیشنهادها را بر اساس ویژگیهایشان اولویتبندی نموده و در برنامه اهدافم قرار دادم. در پایان کار و دقیقاً زمانی که پیچیدگی حاصل از هجوم دادههای انبوه، بهسادگی و به کمک روشهای داده کاوی حل شد؛ بنده متوجه شدم که چرا انتخاب ویژگی درداده کاوی مهم است؟! اگر شما هم میخواهید بهضرورت این نکته پی ببرید؛ تا پایان این مقاله انتخاب ویژگی در داده کاوی همراه ما باشید.
فرآیند داده کاوی در انتخاب ویژگی در داده کاوی
زمانی که در یک سازمان، موسسه یا هر شرکت دیگر، دادههای کلان وارد بانک اطلاعاتی مجموعه میشوند؛ نرمافزارهای داده کاوی وارد عمل شده و با استفاده از الگوهای مشخصی که از قبل تعریف گردیده است؛ دادههای اولیه را بر اساس ویژگیهای مطلوب شناسایی کرده، دادههای پرت و مزاحم را حذف مینمایند و الگو یا رابطه بین دادههای باقیمانده را کشف میکنند.
بهاینترتیب با تحلیل، تفسیر و به نمایش گذاشتن یافتهها، دانش لازم برای تصمیمگیریها، تراکنشها و هر عملیات دیگر موردنیاز آن سیستم یا مجموعه فراهم میشود. میتوان گفت که اصلیترین مرحله، انتخاب ویژگی در داده کاوی است. در زیر مراحل داده کاوی آورده شده است.
هدف از انتخاب ویژگی در داده کاوی چیست؟
فرآیند انتخاب ویژگی، همان فرآیند کاهش تعداد دادههای ورودی با هدف توسعه یک مدل پیشبینی است. روشهای انتخاب ویژگی در داده کاوی، شامل ارزیابی رابطه بین هر متغیر ورودی و متغیر هدف با روش آمارگیری و انتخاب گروهی از دادهها که قویترین رابطه را با متغیر هدف دارند؛ میباشد. لازم به ذکر است که انتخاب معیارهای آماری به نوع داده متغیرهای ورودی و خروجی بستگی دارد.
احتمالاً بپرسید که کاهش تعداد متغیرها چه مزیتی دارد؟ در پاسخ به این سؤال باید بگویم که هدف اصلی کاهش تعداد متغیرهای ورودی، کاهش هزینه محاسباتی مدلسازی و در برخی موارد بهبود عملکرد مدل مطلوب است.
برای داشتن ارائهای جذاب در این زمینه و آشنایی با داده کاوی پیشنهاد میکنیم به فایل آماده موجود در لینک زیر نگاهی بیندازید و مطالعه کنید.
تکنیکهای انتخاب ویژگی در داده کاوی
روشهای انتخاب ویژگی در داده کاوی به دو دسته نظارتی و بدون نظارت تفکیک میشوند. تکنیکهای نظارتی بهعنوان پیشبینی کنندهها عمل کرده و تکنیکهای بدون نظارت، توصیفکننده هستند و شامل روشهای خوشهبندی، الگوهای مکرر و غیره میشوند. به نمودار زیر توجه کنید.
هرگاه نتایج احتمالی، در طول حذف عوامل پیشبینی مدل نادیده گرفته شد؛ بدانید که از تکنیک بدون نظارت برای داده کاوی استفادهشده است. بدون نظارتها متغیرهای اضافی را با استفاده از همبستگی حذف میکنند اما نظارتیها به سه زیرمجموعه بستهبندی یا Wrapper، فیلتر و ذاتی یا Intrinsic تقسیم میشوند که در ادامه به توضیح هر کدام پرداختهشده است.
تکنیک نظارتی مبتنی بر فیلتر در مورد انتخاب ویژگی در داده کاوی
روشهای انتخاب ویژگی مبتنی بر فیلتر، از معیارهای آماری برای امتیاز دادن به همبستگی یا وابستگی بین متغیرهای ورودی و تعیین رابطه بین آنها، استفاده میکنند تا آنها را برای انتخاب مرتبطترین ویژگیها فیلتر نمایند. فراموش نکنید که این معیارهای آماری باید بر اساس نوع داده متغیر ورودی و متغیر خروجی یا پاسخ با دقت انتخاب شوند؛ زیرا که انتخاب غلط معیارهای آماری میتواند ما را از رسیدن به دانش مطلوب تصمیمگیری، گمراه کند.
مشکل اصلی روشهای نظارتی مبتنی بر فیلتر این است که گاهی دارای تعداد زیادی متغیر هستند. این متغیرها توسعه و آموزش مدل تصمیمگیری را کند کرده؛ به مقدار زیادی حافظه نیاز دارند و کیفیت عملکرد سیستم را پایین میآورند. بسیاری از مدلهای پیشبینی کننده، مخصوصاً مدلهایی که مبتنی بر شیبهای رگرسیون و بریدگی هستند؛ پارامترها را برای هر عبارت در مدل، تخمین میزنند. به همین دلیل، عدم قطعیت را به پیشبینیها اضافهشده و اثربخشی کلی مدل را کاهش میدهد.
تکنیک نظارتی مبتنی بر بستهبندی یا Wrapper
در این روش، یک جعبه سیاه بهعنوان الگوریتم یادگیری و برای پیشبینی انتخاب میشود که دادههای مؤثر را ارزیابی و دستهبندی نموده و به مدل معرفی میکند. روشهای بستهبند کارایی بهتری نسبت به روشهای فیلتر دارند زیرا مجموعه دادههای خروجی این روش کمتر بوده و نیاز به حافظه کمتری دارد. بنابراین این روش نسبت به روش فیلترسازی دادهها کمهزینه خواهد بود. RFEها مثال بارزی از این روشها هستند.
تکنیک نظارتی ذاتی یا Intrinsic
در این روش، الگوریتمهای یادگیری ماشین از قبل طراحیشده در طی فرایند آموزش، وظیفه انتخاب ویژگی را بهطور خودکار و بهعنوان بخشی از یادگیری مدل انجام میدهند. الگوریتمهایی مانند مدلهای رگرسیون لجستیک جریمهشده با Lasso و درختهای تصمیم مثل جنگل تصادفی مثالهایی از الگوریتمهایی هستند که انتخاب خودکار ویژگیها را در طول آموزش انجام میدهند.
بهاینترتیب که دادههای ورودی پروژه را در یک فضای ویژگی با ابعاد پایینتر وارد کرده و عمل کاهش ابعاد را انجام میدهند. بنابراین روشهای نظارتی ذاتی، در مقایسه با بستهبندها توانایی ثبت ارتباط بین متغیرها با هزینههای محاسباتی پایینتری خواهند داشت.
چنانچه تصمیم به ارائه در این زمینه دارید روی لینک زیر کلیک کنید.
ترفندهای انتخاب ویژگی
برای انتخاب ویژگی در داده کاوی، ترفندهای متنوعی اعم از انواع الگوریتمهای از پیش طراحیشده تا حتی همین دادههای آماری وجود دارد یعنی برای استخراج مدل تصمیمگیری ممکن است حتی بهاندازه موهای سرتان روش وجود داشته باشد ولی ما به دنبال ترفندی هستیم که ویژگیهای مؤثر را انتخاب کرده و سیستم یا مجموعه را به مدل مناسب وصل کند پس بیایید باهم انواع ترفندها را بررسی کرده و ترفند مناسب را بهاتفاق، انتخاب کنیم.
معیارهای آماری
استفاده از معیارهای آماری در روشهای انتخاب ویژگی مؤثر، میتواند نوع همبستگی بین متغیرهای ورودی و خروجی را بهعنوان مبنایی برای انتخاب ویژگی فیلتر رایج استخراج کند. بهاینترتیب، انتخاب معیارهای آماری بهشدت به انواع دادههای متغیر بستگی دارد. متغیرهای ورودی رایج، به شرح زیر در ادامه، لیست شده است.
هرچه اطلاعات بیشتری در مورد نوع داده یک متغیر داشته باشیم؛ انتخاب یک معیار آماری مناسب برای روش انتخاب ویژگی مبتنی بر فیلتر آسانتر خواهد بود. برای درک بهتر آنچه گفتهشده؛ دو دسته کلی عددی و طبقهبندیشده را در گروههای دادهای ورودی و خروجی بررسی خواهیم کرد.
متغیرهای ورودی: متغیرهای ورودی به آن دسته از دادهها گفته میشود که بهعنوان ورودی مدل ارائهشده و در مرحله انتخاب ویژگی، باید اندازه آنها کاهش یابد.
متغیرهای خروجی: متغیرهای خروجی یا متغیر پاسخ به آن دسته از دادهها گفته میشود که یک مدل برای پیشبینی آنها در نظر گرفتهشده باشد. نوع متغیر پاسخ، نشاندهنده نوع چالش مدل پیشبینی کننده است. بهعنوانمثال، یک متغیر خروجی طبقهبندی، مدل پیشبینی طبقهبندی را نشان داده و یک متغیر خروجی عددی، یک مدل پیشبینی کننده رگرسیون را انعکاس میدهد. به مثالهای زیر توجه کنید.
مثال ۱) در مدل رگرسیون، مدلسازی از متغیرهای ورودی عددی شروع شده و با ارائه متغیرهای خروجی عددی بهپایان میرسد.
مثال ۲) در ضریب همبستگی پیرسون (خطی) و ضریب رتبه اسپیرمن (غیرخطی)، مدلسازی با ورودیهای عددی شروع و با خروجی دادههای دستهبندیشده پایان میپذیرد. این روش، یک روش مدلسازی پیشبینی طبقهبندی با متغیرهای ورودی عددی میباشد.
مثال ۳) در مدلهای ضریب همبستگی ANOVA (خطی) و ضریب رتبه کندال (غیرخطی) ورودی طبقهبندیشده و خروجی عددی است.
پیادهسازی آمار همبستگی
اگر تا به این جای مقاله، مشتاق شدهاید که با روشهای پیادهسازی معیارهای آماری آشنا شوید؛ به شما این مژده را میدهیم که با استفاده از کتابخانه Scikit-learn در محیط برنامهنویسی پایتون، بسیاری از معیارهای آماری مفید را میتوانید پیادهسازی کنید. این کتابخانه ابزارهای کاربردی زیادی برای کاهش ابعاد را در اختیار کاربر قرار میدهد که در زیر به چند مورد از کاربردها اشاره میکنیم.
ضریب همبستگی پیرسون:
f_regression()
تحلیل واریانس:
f_classif()
اطلاعات متقابل:
mutual_info_classif() and mutual_info_regression()
با استفاده از کتابخانه Scikit-learn الگوریتمهای فیلترینگ مختلفی ازجمله SelectKBest ،SelectPercentile تولید شدهاند که SelectPercentile متغیرهای صدک بالا را از بین دادههای ورودی انتخاب کرده و الگوریتم SelectKBest تعداد k متغیر بالا را از میان ورودیهای هدفدار انتخاب مینماید.
بهترین روش برای انتخاب ویژگی در داده کاوی چیست؟
احتمالاً با خود میپرسید که چرا تا به این قسمت از مقاله، مقایسهای بین روشهای بیانشده صورت نگرفته است؟ یا اینکه از کجا بفهمیم از میان روشهای انتخاب ویژگی در داده کاوی، کدامیک مناسب است؟
متأسفانه باید بگویم که معیاری بهعنوان معیار جهانی بهترین روش وجود ندارد. برحسب ابعاد مسئله و پیچیدگی سیستمی آن، با انجام آزمایشهای دقیق و بررسیهای آماری از بین مدلهای ارائهشده، خودتان باید تشخیص دهید که کدام الگوریتم یادگیری ماشین برای مسئله شما مناسب است پس پیشنهاد میکنم ادامه مقاله را که دقیقتر مطالعه کنید تا به قسمت پیادهسازی هم مسلط شوید. این کار کمک میکند تا بهتر تصمیم بگیرید.
نمونههای پیادهسازی شده
در ادامه مثالهایی از انتخاب ویژگی در داده کاوی آورده شده است. شما میتوانید از هرکدام که مناسب ابعاد مسئلهتان بود؛ استفاده کنید. اولین مثال ما، روش انتخاب ویژگی رگرسیون است که در داده کاوی کاربرد فراوانی دارد. در روش رگرسیون دادههای ورودی و خروجی بهاتفاق از نوع متغیرهای عددی هستند.
مثال زیر، به این صورت است که یک مسئله رگرسیون آزمایشی با استفاده از تابع ()make_regression تهیه شده و در آن انتخاب ویژگی با استفاده از ضریب همبستگی پیرسون در ()f_regression انجام میشود.
# pearson's correlation feature selection for numeric input and numeric output from sklearn.datasets import make_regression from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import f_regression # generate dataset X, y = make_regression(n_samples=100, n_features=100, n_informative=10) # define feature selection fs = SelectKBest(score_func=f_regression, k=10) # apply feature selection X_selected = fs.fit_transform(X, y) print(X_selected.shape)
با اجرای تکه کد بالا، ابتدا مجموعه داده رگرسیونی ایجادشده و طی فرایند الگوریتم، متد انتخاب ویژگی بر روی دادهها پیاده میگردد و براساس این متد، دادههای پرت حذف میشود. درنهایت زیرمجموعهای از ویژگیهای ورودی انتخابشده در ابعاد کوچک در خروجی برگردانده میشود.
(۱۰۰, ۱۰)
در مثال دوم، انتخاب ویژگی بر اساس روشهای طبقهبندی بیان میشود. یعنی در این مثال، ورودیهای مسئله عددی هستند ولی در خروجی متغیرهای دستهبند تولید میشوند که حاصل از انتخاب متغیرهای کاهشیافته است.
بیایید مسئله رگرسیون آزمایشی که با استفاده از تابع ()make_classification را بررسی کنیم که در آن انتخاب ویژگی با استفاده از اندازهگیری ANOVA F از طریق تابع ()f_classif و به شکل زیر انجام میشود.
# ANOVA feature selection for numeric input and categorical output from sklearn.datasets import make_classification from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import f_classif # generate dataset X, y = make_classification(n_samples=100, n_features=20, n_informative=2) # define feature selection fs = SelectKBest(score_func=f_classif, k=2) # apply feature selection X_selected = fs.fit_transform(X, y) print(X_selected.shape)
با اجرای تکه کد بالا طی فرایند الگوریتم، متد انتخاب ویژگی بر روی دادهها، پیادهسازی شده؛ بر اساس این متد، فرایند کاهش ابعاد داده صورت گرفته و درنهایت، خروجی زیر تولید میگردد.
(۱۰۰, ۲)
خلاصه فرآیند عملیات، تکنیک، کاربرد
در آخر، تصمیم گرفتیم؛ آنچه گفته شد را بهصورت یک جدول خلاصهوار و بهصورت مروری در اختیار شما کاربران عزیز قرار دهیم تا در پاسخ به سؤالات مختلفی که ممکن است؛ در رابطه با کاربردها برایتان ایجاد شود؛ راهنماییتان کنیم.
کلام آخر در مورد انتخاب ویژگی در داده کاوی
ما هر چه در توان داشتیم بهکار گرفتیم تا شما در این پست، نحوه انتخاب معیارهای آماری برای انتخاب ویژگی با دادههای عددی و طبقهبندیشده را بیاموزید و آن را در ابعاد دادهای بزرگتر و مسائل پیچیدهتر بهکار بگیرید.
نکته مهم این است که شما آموختههایتان را در مثالهای عملی و واقعی بهکار بگیرید تا متوجه شوید که برای مسئله شما کدام راهحل مناسب است و دانش کافی برای کشف الگوهای پنهان بین متغیرها را داشته باشید تا مثلاً اگر کسی از شما خواست که در تحلیل بازار بورس کمکش کنید؛ شما دانش کافی برای این کار را داشته باشید و در بهینهسازی سبد خرید او، کمکش کنید. موفق باشید.
2 پاسخ
خوب بود ممنون
عالی بود ممنونم ازتون🙏🙏🙏