پاکسازی داده یا Data Cleaning چیست؟ چطوری باید داده هامون رو تمیز کنیم؟

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


به اعتقاد خیلی از دیتاساینتیست ها 80 درصد فرایند تجزیه تحلیل داده، پاکسازی داده ها هست.
به اعتقاد خیلی از دیتاساینتیست ها 80 درصد فرایند تجزیه تحلیل داده، پاکسازی داده ها هست.


پاکسازی داده ها یا Data Cleaning چیست؟

قبل ازین که به مفهوم پاکسازی داده بپردازیم؛ اجازه بدید اول ازین سوال شروع کنیم:

چرا به پاکسازی داده نیاز داریم؟

شما به عنوان یک دیتاساینتیست یا تحلیلگر داده قطعا نیاز دارید با چندین مجموعه داده کار کنید و خیلی وقت ها اون ها رو باهم ادغام کنید(مثل مثالی که توی مطلب «داده کاوی چیست؟» براتون اوردم). هنگام ترکیب و ادغام چندین مجموعه داده، احتمال زیادی برای تکرار یا نامناسب بودن مشاهدات وجود داره. طبیعتا اگر داده ها نادرست باشن، نتایج و الگوریتم ها، حتی اگر به نظر درست برسند، غیر قابل اعتماد هستند. قبل از ارائه تعریف باید بگم هیچ راه مطلق برای تجویز مراحل دقیق فرآیند پاکسازی داده وجود نداره. چون ساختار مجموعه های داده باهم فرق داره و فرایند پاکسازی از مجموعه داده به مجموعه داده‌ای دیگر متفاوت خواهد بود. با این وجود ایجاد الگویی برای فرایند پاکسازی اطلاعات بسیار مهمه تا بتونید متوجه بشید که هر بار این روش رو به درستی انجام می‌دید.

خب حالا پاکسازی داده چیه؟

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

در ادامه مطلب قصد دارم یک الگوی کلی از پاکسازی داده رو معرفی کنم.

چگونه داده ها را پاکسازی کنیم؟

همونطور که گفتیم ممکنه تکنیک های مورد استفاده برای تمیز کردن داده ها با توجه به انواع داده های ذخیره شده در شرکت شما(یا شرکت کارفرمای شما) متفاوت باشه، اما می‌تونید برای ترسیم چارچوبی کلی در سازمان خود این مراحل اساسی را دنبال کنید:

1️⃣ قدم اول: مشاهدات تکراری یا غیرمرتبط را حذف کنید

مشاهدات ناخواسته از جمله مشاهدات تکراری یا مشاهدات بی ربط را از مجموعه داده های خود حذف کنید. ثبت مشاهدات تکراری در مجموعه داده اکثرا در هنگام جمع‌آوری اطلاعات اتفاق می‌افته. هنگامی که مجموعه داده ها را از چندین بخش(برای مثال داده های بخش فروش و بخش رضایت سنجی مشتری) جمع‌آوری می‌کنید تا با یکدیگر ادغام کنید، یا داده ها را تراش می‌دید(منظور همون data scraping هست) یا از مشتری و چندین بخش دیگر داده دریافت می‌کنید، احتمال ایجاد داده های تکراری در مجموعه داده شما وجود داره. حذف داده های تکراری یکی از کار های مهمیه که در این مرحله فرآیند مورد توجه قرار می‌گیره.

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

2️⃣ قدم دوم: رفع خطا های ساختاری

خطا های ساختاری زمانی رخ می‌ده که داده ها رو اندازه‌گیری می‌کنین یا انتقال می‌دید و متوجه می‌شید که نام‌گذاری های عجیب یا اشتباه تایپی در مجموعه داده وجود دارد. این ناسازگاری ها می‌تونن دسته ها یا کلاس های بدون برچسب ایجاد کنند. به عنوان مثال، ممکنه با مشاهداتی مواجه بشید که متغیر آن مقدار "NA" و "Not Applicable" رو اختیار کرده، اما توجه داشته باشید که این دو نوع مشاهدات درواقع یک معنی رو می‌ده و باید به عنوان یک رسته تجزیه و تحلیل بشه. پس همه مشاهداتی که برخی متغیر های آنان بدون برچسب هستند باید یک مقدار مشخص رو اختیار کنند برای مثال همه باید "NA" شوند.

3️⃣ قدم سوم: داده های دور افتاده نامطلوب را فیلتر کنید

اول از همه بیایم به این سوال بپردازیم: داده دور افتاده چیه؟

در مجموعه داده، داده دور افتاده مشاهده‌ای است که در "یک فاصله غیرعادی" از سایر مقادیر در یک نمونه تصادفی از یک جامعه قرار دارد.

یه مثال خیلی ساده می‌تونه این باشه که در متغیر سن در مجموعه داده شما عدد 200 ثبت شده باشه. خب قطعا هممون می‌دونیم که در این دوره زمونه انسان 200 ساله‌ای وجود نداره و این داده احتمالا یک داده دور افتاده هست که احتمالا در ثبتش خطایی رخ داده.

یه مثال دیگه هم این می‎‌تونه باشه:
فرض کنید یه مجموعه داده از نظرسنجی مشتریان دارید که از سنین مختف در جامعه تهران درباره خدمات یک مجموعه تفریحی سوال پرسیده شده. شما متغیر های مختلفی از جمله جنیست، سن و سطح تحصیلات دارید. دارید به دیتاست نگاه می‌کنید که ناگهان به این مشاهده برمی‌خورید: زهرا 9 ساله دارای مدرک فوق‌لیسانس. خب قطعا این مشاهده یه جای کارش می‌لنگه و نمی‌تونه درست باشه یا زهرا 9 سالش نیست یا مدرک زهرا فوق لیسانس نیست.

اکثرا در تجزیه و تحلیل هر مجموعه داده‌ای مشاهداتی وجود دارن که در یک نگاه کلی به نظر نمی‌رسه در داده هایی که تحلیل می‌کنید جایی داشته باشند. اگر دلیل موجهی برای فیلتر کردن یک داده دور افتاده دارید، مانند ثبت نادرست داده ها، این کار رو حتما انجام بدید. انجام این کار به عملکرد بهتر داده هایی که با اون ها کار می‌کنید کمک می‌کنه. بهرحال طبق تجربیات من گاهی اوقات ظاهر یک داده دور افتاده به نظر می‌رسه ولی نظریه‌ای رو که شما روی اون کار می‌کنید؛ ثابت می‌کنه.

?این نکته مهم رو حتما در ذهنتون داشته باشید: صرفاً وجود یک داده دور افتاده، به معنی نادرست بودن اون نیست. این مرحله برای تعیین اعتبار مجموعه داده لازمه. اگر ثابت شد که یک داده دور افتاده برای تجزیه و تحلیل بی ربط یا اشتباه هست، حذف اون رو در نظر بگیرید.

4️⃣ قدم چهارم: رسیدگی به داده های گمشده

داده های گمشده چه صیغه‌ای اند دیگه؟

داده یا مقدار گمشده وقتی اتفاق می‌افته که متغیر در مشاهده‌ای خاص مقداری رو اختیار نکرده. به بیانی ساده‌تر مشاهده در اون ستون بدون مقدار یا خالی ثبت شده.

خب قطعا توی هر مجموعه داده مشاهداتی هستند که برخی یا اکثر متغیر های اون ها خالی رد شده باشند و دارای هیچ مقداری نباشند. شما به عنوان دیتاساینتیست یا تحلیل‌گر داده نمی‌تونید داده های گمشده رو نادیده بگیرید؛ چون خیلی از الگوریتم ها مقادیر گمشده را نمی‌پذیرند و اجرایی نمی‌شن. چند روش برای مقابله با داده های گمشده وجود داره. هیچ کدوم‌شون بهینه نیستند، اما می‌شه اون ها رو در نظر گرفت:

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

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

?به عنوان گزینه سوم، ممکنه نحوه استفاده از داده ها برای هدایت موثر مقادیر گمشده رو تغییر بدید.

5️⃣ قدم پنجم: اعتبارسنجی و اطمینان از کیفیت مجموعه داده

در پایان فرایند پاکسازی داده ها، باید بتونید به عنوان بخشی از اعتبارسنجی اساسی به این سوالات پاسخ دهید:

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

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

خب شاید براتون این سوال پیش بیاد که داده های باکیفیت چه ویژگی هایی دارند؟

5 ویژگی داده های با کیفیت

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

نکاتی تجربی برای پاکسازی داده

?شاید اولین سوالی که پیش بیاد براتون بعد این که تا اینجای مطلب رو خوندید این باشه که از چه ابزاری باید برای پاکسازی داده استفاده کنیم؟ خب باتوجه به نوع مجموعه داده هاتون از یک یا چند ابزار باید استفاده کنید که شامل نرم افزار هایی مثل اکسل، زبان SQL و زبان های برنامه نویسی از جمله پایتون میشه. شما در هرچیزی که مهارت بیشتری دارید می‌تونید از همون استفاده کنید. من خودم معمولا از ترکیبی از اکسل و پایتون استفاده می‌کنم. مزایا و معایب خودش رو داره. ولی خب پروژه هایی هم بوده که از SQL هم استفاده کردم.

?یه نکته‌ی کاربردی این هست که هر مرحله که پاکسازی می‌کنید داده ها رو(اگه روی بیگ دیتا کار نمی‌کنید و براتون مقدوره) یک نسخش رو داشته باشید تا اگه در یک مرحله اشتباه کردید راحت‌تر متوجه بشید و بتونید درستش کنی. البته که نسخه اصلی دیتا رو همیشه دست نخورده یک گوشه داشته باشید.

?نکته آخر برای کسایی هست که با مجموعه داده های بزرگی سر و کار دارند و فرایند پاکسازی سخت‌تر هست و پروژشون نیازمند زیرساخت های قوی‌تری هست. توی اینجور داده ها می‌تونید اول یه نمونه کافی و تصادفی از مجموعه داده ها بگیرید و اون رو بشناسید و با اون نمونه کوچیک دوست شید؛ فرایند پاکسازی رو روی اون انجام بدید. بعد که با تمام فرایند پاکسازی آشنا شدید می‌تونید این فرایند رو به وسیله زبان های برنامه نویسی اتومات کنید و روی همه دیتا پیاده سازی کنید. البته باید در نظر داشته باشید که دیتای آخر چقدر دارای اعتبار هست. توی این روش این مهم هست که چند نمونه بگیرید و به یک روش تصادفی این نمونه رو از دیتای کل استخراج کنید.

سخن آخر

توی این مطلب از انتشارات شرکت علم داده ارزیاب سعی کردم دیدگاهی کلی از پاکسازی داده رو ارائه و مراحل کلیش رو توضیح بدم. بازم میگم دیتا کیلینینگ یا همون پاکسازی داده ها از مجموعه داده به مجموعه داده‌ای دیگه متغیره ولی مراحل کلیشون مشترکه. ممکنه توی یه مجموعه داده چندین مرحله اضافه‌تر داشته باشه و یکی دیگه اینطور نباشه. بهرحال این مهمه که قبل از شروع نگاهی کلی به مجموعه داده هاتون داشته باشید و باهاشون دوست بشید :)

این مطلب از مجموعه سری «داده کاوی چیست؟» هست و اگر عمری باقی بمونه ادامه‌ی این سری رو در مطالب بعدی خواهم نوشت.