نرمال سازی داده در یادگیری ماشین
نرمال سازی داده در یادگیری ماشین، یکی از روشهای ساده اما موثر برای پیش پردازش داده است. در عین ساده بودن، یکسری نکات در نرمال سازی وجود دارند که بسیاری از افراد، حتی در سطوح بالا، از آنها غافل میشوند. در این پست به توضیح این میپردازیم که نرمال سازی چیست، چگونه انجام میشود، اصلا چرا به آن نیاز داریم و نکات مهم آن چه هستند. با من همراه باشید…
مقدمهای بر نرمال سازی داده (Data Normalization) در یادگیری ماشین
وقتی صحبت از یادگیری ماشین میشود، اکثرا ذهنشان به سمت مدلهای خفن و پیچیده میرود. این در حالی است که یکی از عوامل موفقیت پروژههای یادگیری ماشین، کیفیت داده است. به نمودار زیر دقت کنید. دو قدم ابتدایی مربوط به داده است. ما در جمعآوری داده این امکان را داریم که داده باکیفیت جمعآوری کنیم. اما امکان بهبود کیفیت داده در مرحله پیش پردازش داده (Data Preprocessing) نیز وجود دارد. تا اگر مشکلی در داده وجود دارد، قبل از رسیدن به مدل رفع شود.
یکی از روشهای ساده ولی در عین حال موثر برای پیش پردازش دادهها، نرمال سازی داده است. تجربه ما در هوسم نشان میدهد، با اینکه نرمال سازی داده مبحث بسیار سادهای هست اما افراد بسیاری، حتی در سطوح بالا، به جزئیات و ظرایف این مبحث واقف نیستند. همین امر هم انگیزه شد تا این پست را بنویسیم. پس این مبحث را جدی بگیرید و سرسری از کنار آن رد نشوید.
نرمال سازی داده در یادگیری ماشین چیست؟
اگر بخواهم یک تعریف خیلی ساده، در حد چند کلمه، برای نرمال سازی ارائه دهم، میگویم:
نرمالیزیشن یعنی مقیاسبندی دادهها
تعریف، همین است. تمام! حالا شاید برای شما سوال پیش بیاید که مقیاسبندی یعنی چه؟ یعنی اینکه محدوده دادهها را به یک محدوده استاندارد تغییر دهیم. محدوده استاندارد چه هست؟ بستگی به روش نرمال سازی دارد. در برخی روشها، محدوده استاندارد، صفر و یک است. در بعضی دیگر محدوده استاندارد 1- و 1 است. پس، محدوده استاندارد به روش نرمال سازی بستگی دارد.
مثال ساده از نرمال سازی
بگذارید یک مثال ساده بزنم. تصور کنید که یکسری داده داریم که در بازه 0 و 20 هستند، به این شکل:
20، 3، 11، 12، 7، 5، 1
بزرگترین عدد از بین این اعداد، 20 است. من اعداد بالا را به عدد 20 تقسیم میکنم:
1، 0.15، 0.55، 0.6، 0.35، 0.25، 0.05
مشاهده میکنید که محدوده اعداد به 0 و 1 تغییر کرد. به این کار نرمال سازی میگویند. در واقع من از یک روش نرمال سازی به نام Min-Max استفاده کردم. ما روشهای متنوعی برای نرمالسازی دادهها در یادگیری ماشین داریم که در بخش بعدی به آنها خواهیم پرداخت.
انواع روشهای نرمال سازی در یادگیری ماشین
در بخش قبل گفتیم که روشهای متنوعی برای نرمال سازی دادهها در یادگیری ماشین وجود دارند. 4 تکنیک رایج برای نرمال سازی دادهها عبارتند از:
- مقیاسبندی به یک محدوده مشخص (Min-Max Scaling): در این تکنیک، دادهها به یک محدوده مشخص انتقال مییابند.
- نرمال سازی Z-score یا استانداردسازی (Z-Score Normalization or Standardization): در این تکنیک، دادهها طوری استاندارد میشوند که میانگین صفر و انحراف معیار یک داشته باشند.
- بُریدن (Clipping): در این تکنیک، تمامی مقادیر که خارج از یک محدوده مشخص باشند، دور ریخته میشوند.
- مقیاسبندی لگاریتمی (Log Scaling): در این تکنیک، برای مدیریت دادههای با مقادیر بزرگ، یک تبدیل لگاریتمی روی دادهها اعمال میشود.
رایجترین روشهای نرمال سازی داده ها در یادگیری ماشین همان دوتای اول، یعنی Min-Max Scaling و Z-score هستند. تمرکز ما هم در این پست، روی این دو روش خواهد بود. در ادامه آموزش، این دو تکنیک را بررسی خواهیم کرد.
نرمال سازی Min-Max یا Min-Max Scaling
گفتیم که Min-Max یک روش برای اسکیل کردن دادهها است. پس از انجام Min-Max Scaling، مقادیر داده به بازهی 0 تا 1 نگاشت میشوند. روش انجام این نرمال سازی هم بسیار ساده است. کافی است ابتدا مقدار مینیمم و ماکزیمم داده را به دست آورید و سپس با استفاده از فرمول زیر، دادهها را اسکیل کنید:
در فرمول بالا، x، مقدار داده، xmin، مینیمم مقدار در داده، xmax، ماکزیمم مقدار در داده و ‘x مقدار نرمال شده است. این فرمول باید برای تکتک دادهها محاسبه شود.
مثال نرمال سازی Min-Max
فرض کنید یکسری داده به شکل زیر داشته باشیم:
Purchase | Age | Customer ID |
500000 | 22 | C1 |
750000 | 34 | C2 |
1200000 | 45 | C3 |
250000 | 51 | C4 |
این دادهها مربوط به یک فروشگاه اینترنتی است که ستون Customer ID شماره مشتری، ستون Age مربوط به سن مشتری و ستون آخر، مبلغی است که مشتری خرید کرده است. میخواهیم نرمال سازی Min-Max را برای این دادهها انجام دهیم.
قدم 1: پیدا کردن مینیمم و ماکزیمم دادهها
اول از همه دقت کنید که نرمال سازی برای هر ویژگی (Feature) به صورت جداگانه باید انجام شود. پس ما باید یک بار برای سن و یک بار برای مقدار پرداختی مشتری نرمال سازی را انجام دهیم.
مقدار مینیمم برای Age، مقدار 22 و ماکزیمم مقدار 51 است.
Age_min = 22 Age_max = 51
مقدار مینیمم برای ستون Purchase، مقدار 250000 و ماکزیمم مقدار آن 1200000 است.
Purchase_min = 250000 Purchase_max = 1200000
قدم 2: نرمال سازی ویژگی Age
برای انجام نرمال سازی برای ویژگی Age، باید فرمول شکل 3 را برای تک تک دادهها اجرا کنیم. مینیمم و ماکزیمم را هم که در بخش قبلی به دست آوردیم. به این شکل:
Normalized_age | Age | Customer ID |
(22-22)/(51-22)=0 | 22 | C1 |
(34-22)/(51-22)=0.41 | 34 | C2 |
(45-22)/(51-22)=0.79 | 45 | C3 |
(51-22)/(51-22)=1 | 51 | C4 |
نتیجه نهایی به این شکل شد:
Normalized_age | Age | Customer ID |
0 | 22 | C1 |
0.41 | 34 | C2 |
0.79 | 45 | C3 |
1 | 51 | C4 |
قدم 3: نرمال سازی ویژگی Purchase
خب، گفتیم که نرمال سازی برای هر ویژگی باید به صورت جداگانه انجام شود. در بخش قبلی نرمال سازی را برای Age انجام دادیم. حالا نوبت ویژگی Purchase است.
در بخش قبلی گفتیم که مقدار مینیمم برای این ویژگی، 250000 و مقدار ماکزیمم 1200000 است. باز هم از فرمول شکل 3 نرمال سازی را برای این ویژگی هم انجام میدهیم:
Normalized_Purchase | Purchase | Customer ID |
(500000-250000)/(1200000-250000)=0.26 | 500000 | C1 |
(750000-250000)/(1200000-250000)=0.52 | 750000 | C2 |
(1200000-250000)/(1200000-250000)=1 | 1200000 | C3 |
(250000-250000)/(1200000-250000)=0 | 250000 | C4 |
در نهایت داده ما به این شکل در میآید:
Normalized_Purchase | Normalized_Age | Customer ID |
0.26 | 0 | C1 |
0.52 | 0.41 | C2 |
1 | 0.79 | C3 |
0 | 1 | C4 |
مشاهده میکنید که مقادیر داده، بعد از نرمال سازی به بازه 0 و 1 محدود شدهاند.
نرمال سازی Z-score یا استانداردسازی
یکی دیگر از روشهایی که برای اسکیل کردن دادهها استفاده میشود، نرمال سازی Z-score یا استانداردسازی است. در این روش، میانگین دادهها از هر نمونه داده کم شده و نتیجه بر انحراف معیار تقسیم خواهد شد:
در این روش، میانگین دادهها صفر و انحراف معیار آنها یک خواهد شد.
مثال استانداردسازی
در این بخش میخواهیم استانداردسازی را برای همان دادههای فروشگاه آنلاین انجام دهیم. جهت یادآوری، دادههای ما به این شکل بودند:
Purchase | Age | Customer ID |
500000 | 22 | C1 |
750000 | 34 | C2 |
1200000 | 45 | C3 |
250000 | 51 | C4 |
قدم 1: پیدا کردن میانگین و انحراف معیار برای Age و Purchase
ابتدا باید میانگین و انحراف معیار را برای هر ویژگی، به صورت جداگانه به دست آوریم.
حالا همین کار را برای Purchase انجام میدهیم:
حالا محاسبات Z-score را طبق فرمول شکل 4 انجام میدهیم:
Purchase | Age | ID |
(500000-675000)/396445.48=-0.44 | (22-38)/11.92=-1.34 | C1 |
(750000-675000)/396445.48=0.19 | (34-38)/11.92=-0.34 | C2 |
(1200000-675000)/396445.48=1.31 | (45-38)/11.92=0.59 | C3 |
(250000-675000)/396445.48=-1.06 | (51-38)/11.92=1.09 | C4 |
به این ترتیب مقادیر تولید شده، به میانگین صفر و انحراف معیار یک، استاندارد میشوند.
ادامه دارد …
دیدگاهتان را بنویسید