روش تشخیص خودکار نقاط بیرونی(شناسایی و حذف موارد پرت)
در یادگیری ماشینی، یک رویکرد برای مقابله با مشکل تشخیص پرت، طبقه بندی یک کلاسه است.
• هدف طبقه بندی کننده تک کلاسی گرفتن ویژگیهای نمونههای آموزشی است تا بتواند بین آنها و موارد دورافتاده بالقوه ظاهر شوند.
یک رویکرد ساده برای شناسایی نقاط پرت، مکان یابی نمونه هایی است که از نمونه های دیگر در فضای ویژگی های چند بعدی فاصله دارند. این میتواند برای فضاهای ویژگی با ابعاد کم (ویژگیهای کم) به خوبی کار کند، اگرچه میتواند به اندازه تعداد کمتر قابل اعتماد باشد
ویژگیها افزایش می یابد که از آن به عنوان نفرین ابعاد یاد میشود. عامل دورافتاده محلی، یا به اختصار LOF، تکنیکی است که تلاش میکند ایده نزدیکترین همسایهها را برای تشخیص نقاط پرت مهار کند. به هر نمونه بر اساس اندازه همسایگی محلی خود، امتیازی از میزان جداسازی یا احتمال دورتر بودن آن اختصاص داده شده است. نمونه هایی که بیشترین امتیاز را دارند به احتمال زیاد پرت هستند. کتابخانه scikit-learn پیاده سازی این رویکرد را در کلاس LocalOutlierFactor ارائه می دهد.
ما میتوانیم روش LocalOutlierFactor را بر روی یک مجموعه داده مدلسازی پیشبینی نشان دهیم. ما از مسئله رگرسیون مسکن بوستون استفاده خواهیم کرد که دارای 13 ورودی و یک هدف عددی است و نیاز به یادگیری رابطه بین ویژگیهای حومه شهر و قیمت خانه دارد.
با نگاهی به مجموعه داده، باید ببینید که همه متغیرها عددی هستند.
ابتدا میتوانیم مجموعه داده را بهعنوان یک آرایه NumPy بارگذاری کنیم، آن را به متغیرهای ورودی و خروجی جدا کنیم و سپس آن را به مجموعه دادههای قطار و آزمایش تقسیم کنیم.
مثال کامل در زیر آمده است :
اجرای مثال مجموعه داده را بارگیری میکند و ابتدا تعداد کل ردیفها و ستونها در مجموعه داده، سپس تعداد نمونههای تخصیص یافته به مجموعه دادههای قطار و آزمایش را گزارش میدهد.این یک مسئله مدل سازی پیش بینی کننده رگرسیون است، به این معنی که ما یک مقدار عددی را پیش بینی خواهیم کرد. همه متغیرهای ورودی نیز عددی هستند. در این مورد، ما یک الگوریتم رگرسیون خطی را برازش خواهیم کرد و عملکرد مدل را با آموزش مدل روی مجموعه دادههای آزمایشی و پیشبینی دادههای آزمون ارزیابی میکنیم و پیشبینیها را با استفاده از میانگین خطای مطلق (MAE)ارزیابی میکنیم. نمونه کامل ارزیابی مدل رگرسیون خطی در مجموعه داده در زیر فهرست شده است.
اجرای مثال برازش می کند و مدل را ارزیابی می کند و سپس MAE را گزارش می دهد.
توجه : نتایج خاص شما ممکن است با توجه به ماهیت تصادفی الگوریتم یادگیری، روش ارزیابی یا تفاوت در دقت عددی متفاوت باشد. مثال را چند بار اجرا کنید و میانگین عملکرد را مقایسه کنید.
در این مورد، میتوانیم ببینیم که مدل به MAE حدود 3.417 دست یافته است.
در مرحله بعد، میتوانیم مقادیر پرت را از مجموعه داده آموزشی حذف کنیم. انتظار این است که نقاط پرت باعث شوند که مدل رگرسیون خطی یک سوگیری یا درک نادرست از مسئله را بیاموزد و حذف این نقاط پرت از مجموعه آموزشی امکان یادگیری مدل موثرتری را فراهم کند. ما میتوانیم با تعریف مدل LocalOutlierFactor و استفاده از آن برای پیشبینی مجموعه دادههای آموزشی، به این هدف دست یابیم، و هر ردیف در مجموعه داده آموزشی را بهعنوان معمولی (1) یا یک نقطه پرت (-1) علامتگذاری کنیم. ما از فراپارامترهای پیش فرض برای مدل تشخیص بیرونی استفاده میکنیم، اگرچه این ایده خوبی است که پیکربندی را با ویژگیهای مجموعه داده خود تنظیم کنید.
سپس میتوانیم از این پیشبینیها برای حذف همه موارد پرت از مجموعه داده آموزشی استفاده کنیم.
سپس میتوانیم مدل را مطابق معمول برازش و ارزیابی کنیم. نمونه به روز شده ارزیابی یک مدل رگرسیون خطی با مقادیر پرت حذف شده از مجموعه داده آموزشی در زیر فهرست شده است.
اجرای مثال، مدل رگرسیون خطی را با مقادیر پرت حذف شده از مجموعه داده آموزشی برازش و ارزیابی می کند.
توجه : نتایج خاص شما ممکن است با توجه به ماهیت تصادفی الگوریتم یادگیری، روش ارزیابی یا تفاوت در دقت عددی متفاوت باشد. مثال را چند بار اجرا کنید و میانگین عملکرد را مقایسه کنید.
اولاً، می بینیم که تعداد نمونه ها در مجموعه داده آموزشی از 339 به 305 کاهش یافته است، به این معنی که 34 ردیف حاوی موارد پرت شناسایی و حذف شدند. ما همچنین میتوانیم کاهش MAE را از حدود 3.417 توسط یک مدل برازش در کل مجموعه داده آموزشی به حدود 3.356 در یک مدل برازش در مجموعه داده با حذف مقادیر پرت مشاهده کنیم.
کتابخانه Scikit-Learn الگوریتمهای دیگری را برای تشخیص نقاط دورافتاده ارائه میکند که میتوانند به روشی مشابه مانند الگوریتم IsolationForest استفاده شوند.
قوانین ارسال دیدگاه در سایت