آشنایی با مفهوم پیش پردازش دیتا در هوش مصنوعی

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

اصولا هیچ دیتایی به صورت خام، مستقیما قابل استفاده نیست و باید یه فکری به حالش کرد و اون رو آماده مدلسازی کرد.

تو این مقاله قصد دارم درمورد این موضوع مهم، مفصلا باهاتون صحبت کنم.

آنچه در این مقاله خواهیم آموخت:

1- پیش پردازش دیتا چیست؟

2- شاخه‌های پیش پردازش دیتا

3- رفع missing value

4- رفع noise

5- حدس پترن

 

1- پیش پردازش دیتا چیست؟

در چند سال گذشته، قبل از آشنایی عموم مردم و کسب و کارها با مفهوم هوش مصنوعی و ارتباط مستقیم با دیتاست موجود، نحوه جمع آوری دیتاها به شکل درستی صورت نمیگرفت. عموما دیتاهایی با مشکلات زیاد، خطاهای انسانی و نگارشی، مانیتورینگ غلط و … روبرو بودیم. اما امروزه با آشنایی هرچه بیشتر صاحبین دیتاست‌های مختلف با هوش مصنوعی، این نیاز که باید از دیتاست خود بهتر استفاده کنند خیلی بیشتر شده.

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

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

2- شاخه های پیش پردازش دیتا

با توجه به نوع دیتا، شاخه های پیش پردازش دیتا هم متفاوت میشه.

اگر نوع دیتای ما عددی باشه، معمولا آمارهای عددی و استفاده از پلات‌های مختلف میتونه کمک بسیار بزرگی بکنه. این نکته خیلی مهمه که معمولا برای انجام این کارها از زبان برنامه نویسی پایتون استفاده میکنیم و در این مرحله، سه کتابخونه numpy, pandas and matplotlib به ما کمک خوبی میکنند. بعد از تصویرسازی های مناسب میتونیم به مشکلات درونی دیتا مثل دیتای اشتباه و نویز پی ببریم، همچنین یسری اطلاعات عددی هم به این مهم کمک میکنه. همچنین به کمک کتابخونه pandas میتونیم به میسینگ ولیوهای درونی دیتا دست پیدا کنیم. در ادامه برای هر کدوم توضیح میدم که باید چه اقداماتی انجام بدیم.

اگر نوع دیتا متنی باشه، معمولا متدهایی جهت پیدا کردن سمپل‌های مشابه، اشتباه نگارشی و تقسیم بندی کردن اهمیت واژگان ارزش بالایی پیدا میکنه.

اگر نوع دیتا تصویری باشه، چک کردن صحت دسته بندی تصاویر، تبدیل پیکسل به عدد و … در ارجحیت قرار میگیره.

 

3- رفع میسینگ ولیو

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

خب اول بیاید تکلیف حذف کردن رو مشخص کنیم.

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

سناریو شماره دو: فرض کنید دیتاستی داریم شامل 10هزار سطر سمپل. ولی این دفعه حدود 4هزار سطر وجود داره که مشکل میسینگ ولیو داره. خب این دفه یکم قضیه پیچیده شد. اینکه بیاید 4هزار سطر رو حذف کنیم، یعنی عملا داریم 40 درصد اطلاعاتمون رو دور میریزیم. خب پس چیکار کنیم؟ اول از همه یه بررسی عمیق باید داشته باشیم روی کل دیتاست. اینجوری که ببینیم نسبت یک سطر به سطر قبل و بعدش چیه؟ اصلا نسبتی وجود داره؟ پترنی هست که دیتا ازش طبعیت کنه؟ بلاخره باید یچیزی باشه دیگه درسته؟ اگه بود، ازش استفاده میکنیم و مقادیر میس شده رو پر میکنیم. اما اگه تحت هر شرایطی هیچی پیدا نکردید، بگردید ببینید کدوم ستون شامل بیشترین میسینگ ولیو هست. در اکثر مواقع، یکی از ستون ها بیشتر از بقیه میلنگه. اگه بیشتر از 70 درصد این سطرهای شامل میسینگ ولیو بخاطر یک ستون مشخص این بلا سرشون اومده بود، بهتره که اون ستون رو موقتا بذاریم کنار، بقیه کارهای لازمه رو با دیتا انجام بدیم و حتی مدل خودمون رو بسازیم. بعدش برمیگردیم سراغ دیتای با میسینگ ولیو، این دفه از سطر تمام اطلاعات رو حذف میکنیم، بقیه کارهارو میکنیم و تا مرحله مدلسازی پیش میریم.

الان ما 2 تا مدل و 2 تا خروجی داریم. این دو تارو با هم مقایسه میکنیم. از نظر دقت، از نظر کیفیت، از نظر جامع بودن اطلاعات. و درنهایت مدلی که بیشترین مقبولیت رو واسمون داشت انتخاب میکنیم.

نکته بسیار بسیار مهم

تحت هیچ شرایطی، بدون دلیل و بدون منطق، دیتاهای میس شده رو با مقادیر الکی پر نکنید. از متدهای حاضر آماده واسه این کار استفاده نکنید. یک مسئله بسیار مهم در دنیای دیتا وجود داره به اسم Fabrication. میدونید یعنی چی؟ یعنی دیتا سازی! دیتاسازی یکی از بدترین اتفاقاتی هست که میتونه در یک پروژه بیوفته. پس این موضوع رو خیلی خوب یادتون باشه. سعی کنید وقتی کاملا مطمئن شدید که چه مقداری باید جایگزین کنید، از پر کردن استفاده کنید.

 

4- رفع نویز

خیلی وقتا پیش میاد که درون یک دیتا، مقادیری وجود داره که اصلا با منطق جور در نمیاد.

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

منظور از نویز، مقادیری هست که مقدار تعلق یافته به اونا، اصلا درست نیست و این تیپ دیتاها نباید درون دیتاست ما وجود داشته باشه. این جا یه مفهومی وجود داره به اسم (Outlayer). این یعنی چی؟ یعنی وقتایی که مقدار پرت و دور از مجموعه دیتاست، مشکلی نداره و درسته.

تفاوت نویز و اوت‎لیر در همین مفهومه. اولی نباید وجود داشته باشه، دومی مقدار درستی هست که میتونه باشه میتونه هم نباشه.

پس هر موقع با نویز روبرو شدید درجا اونو حذف کنید یا اگر مطمئن هستید مقدار واقعیش چی بوده، اصلاحش کنید.

اگرم با اوت‌لیر روبرو شدید، اول یه مدل با وجود اون بزنید، یه مدل هم بدون اون بزنید. بعد دو مدل رو با هم مقایسه کنید.

 

5- حدس پترن

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

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

پس مرحله حدس پترن رو اصلا فراموش نکنیم.

اینم از پروسه و فرآیند پیش پردازش و پردازش دیتا. برای اینکه این مباحث بهتر واستون جا بیوفته، حتما سری به سایت Kaggle بزنید و Preprocessing و EDA رو سرچ کنید و نمونه کدهای موجود رو ببینید و بعدش خودتون چنتا دیتاست دانلود کنید و دستی بر کد داشته باشید. اینجوری کاملا واستون جا میوفته.

امیدوارم که این مطالب واستون مفید بوده باشه.

موفق باشید

محمدرضا مومنی

 

مقالات مرتبط

پاسخ‌ها

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