پیش پردازش داده ها «Data Preprocessing» یکی از مراحل مهم در یادگیری ماشین «Machine Learning» و داده کاوی «Data Mining» است. در این مقاله از سری مقالات آموزشی مجله پی استور به توضیح و تشریح پیش پردازش داده ها و روش های آن خواهیم پرداخت.
مقدمه
پایگاه دادههای «Database» دنیای واقعی امروزه به خاطر اندازه حجیم آن و همچنین گاه به خاطر تجمیع چندین منبع ناهمگون دیگر مستعد داده های نویز «Noise data»، ناموجود و ناسازگار هستند. کیفیت پایین دادهها ما را به نتایج ضعیف تر و باکیفیت پایینتر راهنمایی خواهد کرد. اما برای حل این مشکل چه باید کرد؟
طبیعتاً جواب سوال این است که دادههای با کیفیت ذخیره شوند. کیفیت دادهها با بررسی یک سری موارد مانند صحت و درستی «Accuracy»، کامل بودن «Completeness»، سازگار بودن، بهنگام بودن، قابل باور بودن و قابل تفسیر بودن به دست میآید.
اهمیت پیشپردازش داده
پیشپردازش دادهها کیفیت داده را بهبود میبخشد و نتایج تحلیل را دقیقتر میکند. این مرحله برای توسعه برنامههای یادگیری ماشین و هوش مصنوعی ضروری است، زیرا باعث بهینهسازی روشهای پاکسازی و ساختاردهی دادهها میشود.
در ادامه به بررسی روشهایی که این ویژگیها را کنترل، اصلاح و کیفیت دادهها را بهبود میبخشند میپردازیم که در حالت کلی به این روشها پیش پردازش داده گفته می شود.
پیش پردازش داده ها
روشهای مختلفی برای پیش پردازش داده ها وجود دارند که عبارتند از:
- پاکسازی دادهها (Data Cleaning)
- یکپارچهسازی دادهها (Data Integration)
- تبدیل دادهها (Data Conversion)
- کاهش دادهها (Data Reduction)
- گسستهسازی دادهها (Data Discretization)
- نرمالسازی دادهها (Data Normalization)
در ادامه مقاله به بررسی هر کدام از این روش ها خواهیم پرداخت.
پاکسازی دادهها
روشهای پاکسازی دادهها در یادگیری ماشین و دادهکاوی به منظور حذف دادههای نادرست، ناقص، تکراری، یا دادههایی که با قالببندی اشتباه ذخیره شدهاند، استفاده میشود. در ادامه، به برخی از روشهای پاکسازی دادهها در دادهکاوی اشاره خواهیم کرد:
- تشخیص و حذف دادههای تکراری: در این روش، دادههای تکراری در مجموعه داده شناسایی و حذف میشوند. این دادهها معمولا در هنگام جمعآوری اطلاعات ایجاد میشوند و میتوانند تاثیر منفی بر نتایج و الگوریتمهای دادهکاوی داشته باشند.
- تشخیص و حذف دادههای ناقص: در این روش، دادههایی که مقادیر ناقص یا خالی دارند، شناسایی و حذف میشوند. این دادهها ممکن است به دلیل عدم وجود اطلاعات مورد نیاز یا خطا در جمعآوری دادهها ناقص شده باشند.
- تشخیص و حذف دادههای نامناسب: در این روش، دادههایی که با مسئله مورد نظر سازگاری ندارند یا برای تحلیل مورد نیاز نیستند، شناسایی و حذف میشوند. به عنوان مثال، اگر در تحلیل دادهها فقط به دادههایی که سن زیر ۵۰ سال دارند نیاز داریم، دادههایی که سن بالای ۵۰ سال دارند حذف میشوند.
- تشخیص و حذف دادههای با قالببندی اشتباه: در این روش، دادههایی که با قالببندی اشتباه ذخیره شدهاند، شناسایی و حذف میشوند. به عنوان مثال، اگر یک ستون تاریخ با فرمت صحیح (مانند YYYY-MM-DD) نباشد، میتوان آن را به درستی قالببندی کرد یا حذف کرد.
- استفاده از روشهای تکمیل داده: در برخی موارد، ممکن است دادههایی که مقادیر ناقص دارند، با استفاده از روشهای تکمیل داده مانند تخمین، تفسیر مفقودی و یا استفاده از دادههای مشابه تکمیل شوند.
مهم است برای هر مجموعه داده، روش پاکسازی مناسب و متناسب با نوع دادهها و مسئله انتخاب کرد. روشهای پاکسازی دادهها در دادهکاوی میتواند بسته به نوع دادهها و مجموعه دادههای مورد استفاده متفاوت باشد.
یکپارچه سازی داده ها
اغلب داده کاوی نیاز به یکپارچه سازی داده ها یعنی ادغام داده ها از چندین منبع داده ای نیاز دارد. یکپارچه سازی دقیق می تواند به کاهش و اجتناب از افزونگی و ناسازگاری ها در مجموعه داده ها کمک کند. بهبود دقت و سرعت در فرآیند های بعدی داده کاوی را نیز باعث می شود. برای یک پارچه سازی دادها ما با چهار چالش زیر روبرو هستیم:
- مشکل شناسایی موجودیت
- افزونگی و تحلیل همبستگی
- تکرار تاپل
- تشخیص و حل تصادم میان مقادیر دادها
مشکل شناسایی موجودیت
چگونه می توان موجودیت های معادل دنیای ولقعی را از میان چندین منبع داده ای پیدا کرد؟ این موضوع با نام مشکل شناسایی موجودیت شناخته می شود. برای مثال تحلیلگر داده ها چگونه می تواند مطمئن شود که دو صفت خاصه شناسه مشتری و شماره مشتری در دو پایگاه داده مجزا به یک صفت خاصه اشاره دارند.
برای این منظور میتوان از متا دادههای مربوط به هر صفت خاصه مانند نوع داده، محدوده مقادیر مجاز، قواعد null، صفر و….استفاده کرد. برای مثال ممکن است در یک سیستم تنها برای مبلغ کل یک تخفیف داشته باشید، در حالی که در سیستم دیگر برای هر یک از اقلام به صورت مجزا تخفیفی مشخص کنید. چنانچه این موضوع در نظر گرفته نشود ممکن است تخفیف ها نا مناسب اعمال شود.
افزونگی و تحلیل همبستگی
افزونگی یکی دیگر از موضوعات مهم در یکپارچهسازی دادههاست یک صفت خاصه مانند درآمد سالیانه ممکن است افزونه تلقی شود اگر بتوانیم با کمک مقادیر دیگر صفات خاصه آن را به دست آوریم. ناسازگاری ها در صفات خاصه یا نامگذاری ابعاد نیز باعث افزونگی در مجموعه داده خواهند شد. برخی از افزونگیها را میتوان با کمک تحلیل همبستگی تشخیص داد.
با داشتن مقادیر دو صفت خاصه، چنین تحلیلی می تواند قدرت تاثیر یک صفت خاص بر دیگری را اندازهگیری کند برای داده های اسمی از آزمون مجذور کای برای دادههای عددی از ضریب همبستگی و کوواریانس می کنیم.
تکرار تاپل
علاوه بر تشخیص افزونگیها میان صفات خاص لازم است که تکرار در سطح تاپلها نیز بررسی شوند برای مثال جایی که برای یک نمونه داده یکتا چندین تاپل یکسان وجود دارد. استفاده از جداولی که اغلب برای بهبود کارایی با اجتناب از عمل پیوند نرمال نشدهاند، منبع دیگری برای افزونگی دادهها محسوب میشوند.
نا سازگاریها با ورود دادهها یا بهنگام سازی برخی از تکرارها به وجود میآیند برای مثال اگر در پایگاه دادههایی که مربوط به درخواست های خرید مشتریان میشود، از کلید یکسانی استفاده نشود، ممکن است برای یک مشتری دو آدرس متفاوت ذخیره شده باشد.
تشخیص و حل تصادم میان مقادیر داده ها
تشخیص و حل تصادم میان مقادیر دادهها نیز موضوعی است که باید در یکپارچه سازی دادهها به آن رسیدگی شود. ممکن است مقادیر مربوط به صفات خاصه یک موجودیت در دنیای واقعی در منابع مختلف به صورت متفاوت نگهداری شده باشد.
این تفاوت می تواند ناشی از چگونگی نمایش مقادیر مقیاس گذاری یا کدگذاری آن باشد، برای مثال صفت خاصه وزن ممکن است در یک سیستم با واحد کیلوگرم و در دیگری با واحدی مانند پوند اندازهگیری و نگهداری شود. یا در یک مثال دیگر در یک سیستم آموزشی سیستم نمره دهی از الف تا پ و در دیگری نمرات با اعدادی در بازه ۱ تا ۱۰ ارزیابی شوند. استخراج قواعد تبدیل این سیستم ها به یکدیگر مشکل است.
تبدیل داده ها
در بحث مربوط به تبدیل داده ها، هدف تبدیل داده ها به شکلی است که مناسب برای کاوش باشند. برای مثال در نرمال سازی، یک صفت خاصه به گونه ای مقیاس می شود که مقادیر آن در بازه کوچکتری مانند صفر تا یک قرار می گیرد. گسسته سازی داده ها و ایجاد سلسله مراتب مفهومی مثال هایی دیگر از روش تبدیل داده ها هستند.
در گسسته سازی داده ها با کمک نگاشت مقادیر به بازه ها یا برچسب های مفهومی، داده های عددی تبدیل می شوند. از چنین روش هایی می توان برای تولید خودکار سلسله مراتب مفهومی برای داده ها استفاده کرد، که اجازه کاوش در سطوح مختلفی از دانه بندی را به ما می دهد. بسته بندی، تحلیل هیستوگرام، خوشه بندی، درخت تصمیم و تحلیل همبستگی نمونه هایی از تکنیک های گسسته سازی هستند. ممکن است برای داده های اسمی بتوان سلسله مراتب مفهومی را بر اساس تعریف شماها و همچنین تعداد مقادیر متمایز برای صفات خاصه تولید کنیم.
کاهش داده ها
تصور کنید که داده ها از انبار داده های فروشگاه لوازم الکترونیکی جهت تحلیل انتخاب شده اند. به احتمال زیاد این داده ها دارای حجم بالای هستند. تحلیل داده های پیچیده و کاوش بر روی داده های بسیار حجیم زمانبر است و این موضوع باعث می شود تا این تحلیل غیرعلمی یا نشدنی است.
با اعمال تکنیک های کاهش داده ها، شما نمایش کوچکتری را از مجموعه داده های خود خواهید داشت، در حالیکه جامعیت داده های اولیه شما حفظ می شود. با تولید نتایج یکسان (تقریبا یکسان) از این داده ها کاهش یافته، روش کارآمدتر و سریعتر عمل خواهد کرد.
راهبردهای کاهش داده شامل کاهش ابعاد، کاهش بزرگی و فشرده سازی داده می شود. کاهش ابعاد فرایندی است که در آن تعدادی از صفات خاصه تحت بررسی، از مجموعه کنار گذاشته می شوند. در این راهبرد روش هایی مانند تبدیل موجک و تحلیل مولفه های اصلی داده های اولیه را به درون فضای کوچکتر تبدیل یا تصویر می کنند. انتخاب زیر مجموعه ای از صفات خاصه روش دیگری از کاهش ابعاد محسوب می شود، که در آن صفات خاصه نامرتبط یا افزونه پس از تشخیص حذف می شوند.
در تکنیک های کاهش بزرگی، داده های اولیه به شکل های کوچکتری از نمایش داده ها تبدیل می شوند. این تکنیک ها می توانند پارامتری یا غیرپارامتری باشند. در روش های پارامتری از مدلی برای تخمین داده ها استفاده می شود. طوری که به جای ذخیره ی داده های واقعی تنها کافی است پارامترهای داده ها ذخیره شوند(ممکن است داده های پرت هم نگهداری شوند). رگرسیون و مدل های خطی – لگاریتمی نمونه هایی از این روش ها به شمار می روند. از روش های غیر پارامتری می توان به هیستوگرام، خوشه بندی، نمونه گیری و تجمیع در مکعب داده ها اشاره کرد.
در فشرده سازی داده ها همانطور که از نام آن مشخص است، با نمایش کاهش یافته و فشرده تری از داده ها روبرو هستیم. چنانچه قادر باشید تا داده های اولیه را بدون کم و کاست با کمک داده ها فشرده شده بازسازی کنید، کاهش داده با نام بی کاست شناخته می شود.
گسستهسازی دادهها
گسستهسازی دادهها (Data Discretization) فرآیندی است که در آن دادههای عددی و پیوسته به دستههای گسسته یا بازههایی تقسیم میشوند. این کار برای سادهسازی تحلیل دادهها، بهبود کارایی الگوریتمهای دادهکاوی و یادگیری ماشین و سازگاری بهتر با مدلهای مبتنی بر دادههای دستهبندی شده انجام میشود.
اهمیت گسستهسازی
- سادهسازی دادهها: تبدیل دادههای پیچیده و پیوسته به دستههای مشخص، تفسیر و تحلیل آنها را آسانتر میکند.
- افزایش کارایی مدلها: بسیاری از الگوریتمهای دادهکاوی مانند درخت تصمیم و برخی مدلهای یادگیری ماشین بهتر با دادههای گسسته کار میکنند.
- کاهش نویز و ناهنجاریها: گسستهسازی میتواند دادههای پر نویز یا ناهنجاریهای کوچک را در بازههای مناسب پوشش دهد.
روشهای گسستهسازی
۱- باینینگ با عرض مساوی (Equal Width Binning)
دادهها به تعداد مشخصی بازه با طول یکسان تقسیم میشوند.
مثال: اگر دادهای بین ۱ و ۱۰۰ باشد و به ۴ بازه تقسیم شود، بازهها به این صورت خواهند بود:
[۱-۲۵]، [۲۶-۵۰]، [۵۱-۷۵]، [۷۶-۱۰۰].
۲- باینینگ با فرکانس مساوی (Equal Frequency Binning)
دادهها به بازههایی تقسیم میشوند که هر کدام تعداد یکسانی داده داشته باشند.
مثال: اگر ۱۰۰ داده وجود داشته باشد و به ۴ بازه تقسیم شود، هر بازه شامل ۲۵ داده خواهد بود.
۳- خوشهبندی (Clustering)
دادههای مشابه در یک دسته قرار میگیرند.
روشهایی مانند k-means یا hierarchical clustering برای این کار استفاده میشوند.
۴- گسستهسازی مبتنی بر آستانه
مقادیر داده بر اساس آستانههای مشخص به دستهها تقسیم میشوند.
مثال: نمرات دانشآموزان را میتوان به صورت زیر دستهبندی کرد:
زیر ۵۰: ضعیف، ۵۰-۷۰: متوسط، بالای ۷۰: عالی.
۵- گسستهسازی با استفاده از درخت تصمیم
یک درخت تصمیم ساخته میشود و دستهبندیها بر اساس مرزهای تصمیم تعیین میشوند. این روش اغلب برای مدلهای یادگیری ماشین استفاده میشود.
۶- تبدیل به دستههای مفهومی (Concept Hierarchy Generation)
دادهها از سطوح پایینتر به دستههای مفهومی بالاتر گسسته میشوند.
مثال: دمای هوا (۲۵°C) میتواند به دستههایی مانند “سرد”، “معتدل”، یا “گرم” تبدیل شود.
نرمالسازی دادهها
نرمالسازی دادهها (Data Normalization) فرآیندی در پیشپردازش دادهها است که مقیاس دادهها را به یک محدوده مشخص تغییر میدهد. هدف اصلی نرمالسازی، کاهش تأثیر تفاوت در مقیاسها و واحدهای اندازهگیری دادهها است تا الگوریتمهای تحلیل و یادگیری ماشین به نتایج دقیقتری برسند.
اهمیت نرمالسازی دادهها
- کاهش تفاوت در مقیاس دادهها: وقتی متغیرها دارای مقیاسهای مختلف (مثلاً قد در سانتیمتر و وزن در کیلوگرم) باشند، الگوریتمها ممکن است به متغیرهای با مقیاس بزرگتر بیشتر اهمیت دهند. نرمالسازی این مشکل را حل میکند.
- افزایش دقت مدلها: بسیاری از الگوریتمها، مانند KNN و ماشین بردار پشتیبان (SVM)، نسبت به مقیاس داده حساس هستند. نرمالسازی میتواند عملکرد این الگوریتمها را بهبود بخشد.
- سرعتبخشی به همگرایی در الگوریتمهای بهینهسازی: در الگوریتمهایی مانند گرادیان نزولی، نرمالسازی دادهها باعث میشود همگرایی سریعتر اتفاق بیفتد.
روشهای نرمالسازی دادهها
۱- نرمالسازی Min-Max
نرمالسازی Min-Max، دادهها را به محدودهای خاص (مثلاً بین ۰ و ۱) تبدیل میکند. فرمول این روش نرمال سازی عبارت است از:
$$X = {{X – {X_{\min }}} \over {{X_{\max }} – {X_{\min }}}}$$
این روش توزیع اصلی دادهها را حفظ میکند ولی نسبت به نقاط پرت (Outliers) حساس است. به عنوان مثال اگر دادهای بین ۱۰ تا ۱۰۰ باشد و مقدار ۵۰ را نرمالسازی کنیم:
$$X = {{50 – ۱۰} \over {100 – ۱۰}} = 0.۴۴۴$$
۲- نرمالسازی Z-Score (استانداردسازی)
روش نرمالسازی Z-Score، دادهها را به مقیاس با میانگین صفر و واریانس واحد تبدیل میکند:
$$Z = {{X – \mu } \over \sigma }$$
- μ: میانگین دادهها
- σ: انحراف معیار دادهها
این روش به نقاط پرت حساسیت کمتری دارد ولی پیچیدهتر از روش Min-Max است. به عنوان مثال اگر میانگین دادهها ۵۰ و انحراف معیار ۱۰ باشد و مقدار ۶۰ را استانداردسازی کنیم:
$$Z = {{60 – ۵۰} \over {10}} = 1$$
۳- نرمالسازی بر اساس مقیاس واحد (Decimal Scaling)
دادهها با تقسیم بر توان مناسبی از ۱۰ به مقیاس نرمال تبدیل میشوند:
$$X = {X \over {{{10}^j}}}$$
j: کوچکترین عددی که اطمینان دهد مقدار دادهها بین -۱ و ۱ قرار گیرد. به عنوان مثال اگر بیشترین مقدار دادهها ۹۸۷ باشد:
$$X = {{987} \over {{{10}^3}}} = 0.987$$
۴- نرمالسازی با لگاریتم
از لگاریتم دادهها برای کاهش تأثیر مقادیر بسیار بزرگ استفاده میشود:
$$X = \log (X)$$
نرمالسازی با لگاریتم مناسب برای دادههایی که توزیع نرمال ندارند ولی برای مقادیر صفر یا منفی قابلاستفاده نیست.
کاربردها پیش پردازش داده ها
پیشپردازش میتواند فرآیندهای تجاری را بهبود دهد، مانند افزایش دقت در سیستمهای پیشنهاددهی یا بهبود تحلیل رفتار مشتریان. همچنین برای دادهکاوی وب و مدیریت ارتباط با مشتری (CRM) کاربرد دارد، جایی که اطلاعات معنادار از گزارشهای استفاده کاربران استخراج میشود.
نتیجهگیری
عوامل متعددی هستند که به کمک آنها کیفیت داده ها توصیف می شوند مانند: صحت و درستی، کامل بودن، سازگاری، بهنگام بودن، قابل باور بودن و قابلیت تفسیر. هر یک از آنها را می توان با توجه به هدف استفاده از داده ها انتخاب کرد.
روش های پالایش داده ها تلاش می کنند تا مقادیر ناموجود را پر کنند، در حالی که داده های پرت را شناسایی می کنند داده ها را به دلیل وجود نویز هموارسازی کنند و ناسازگاری های موجود در داده ها را رفع نمایند. معمولا پالایش داده ها یک فرایند دو مرحله ای است که ابتدا اختلافات تشخیص داده و سپس داده ها تبدیل می شوند، که در متن فوق به اجمال به روش های مطرح در این زمینه ها پرداخته شد.
اگرچه روش های متعددی برای پیش پردازش داده ها توسعه داده شده است اما پیش پردازش داده ها هنوز یک حوزه فعال تحقیقاتی است، چرا که با حجم بالایی از داده ها ناسازگار و کثیف و همچنین پیچیدگی مسأله رو برو هستیم.