استاندارد سازی و نرمال سازی داده ها در پایتون – راهنمای کاربردی
یکی از موضوعات پر اهمیت در حوزه «یادگیری ماشین» (Machine Learning) و «دادهکاوی» (Data Mining) بخصوص در بخش «آمادهسازی دادهها» (Data Preparation)، موضوع «تغییر مقیاس» (Re-scaling) دادهها است که معمولا توسط دو روش «استانداردسازی» (Standardization) و «نرمالسازی» (Normalization) صورت میگیرد. در همین راستا در ادامه این مطلب قصد داریم به همین موضوع یعنی استاندارد سازی و نرمال سازی داده ها در پایتون بپردازیم.


در این نوشتار، به منظور انجام محاسبات و تبدیل دادهها به مقیاس جدید و همچنین انجام تحلیلهای آماری از زبان برنامهنویسی پایتون استفاده خواهیم کرد. همچنین به بررسی و مقایسه این دو نوع تبدیل (استانداردسازی و نرمالسازی) میپردازیم و آنها را با هم مقایسه میکنیم. به این ترتیب قادر خواهیم بود به سوالات زیر پاسخ دهیم.
- آیا همیشه استفاده از تغییر مقیاس ضروری است؟
- آیا میتوان بهترین تبدیل برای استانداردسازی یا نرمالسازی را پیدا کرد؟
- آیا انتخاب نوع تبدیل در نتایج حاصل از الگوریتمهای دستهبندی تاثیر گذار است؟
- آیا تغییر مقیاس به عنوان یک قسمت مهم در مدلسازی محسوب میشود؟
استاندارد سازی و نرمال سازی داده ها
تغییر مقیاس در بیشتر روش و «تکنیکهای چند متغیره» (Multivariate Techniques) به کار میرود. به این ترتیب بزرگی یا کوچکی هر یک از ویژگیها مبنا و ملاک انتخاب یا نقش آن متغیر در مدلسازی نبوده و همه متغیرها دارای اهمیتی برحسب وزنها یا ضرایبی که توسط مدل ایجاد میشوند، خواهند بود. معمولا از دو گروه تبدیل برای از بین بردن مقیاس استفاده میشود. گروه تبدیلات «استانداردسازی» (Standardize) و گروه تبدیلات «نرمالسازی (Normalization). در ابتدا با مفهوم استانداردسازی آشنا شده و سپس به نرمالسازی خواهیم پرداخت. همچنین در انتها نیز به کارگیری این دو روش را در نتایج حاصل از میزان رابطه بین متغیرها بوسیله کوواریانس مورد تحلیل قرار میدهیم.
استانداردسازی (Standardization)
استانداردسازی یا تبدیل Z-score، برای یک مجموعه داده، بدست آوردن مقدارهایی است که دارای میانگین صفر و واریانس یا انحراف استاندارد ۱ باشند. بنابراین اگر میانگین دادههای اصلی برابر با و انحراف معیار آنها نیز باشد، مقدار را براساس رابطه زیر میتوان بدست آورد.
به این ترتیب مشخص است که دادههای تبدیل یافته (Z) دارای میانگین صفر و واریانس ۱ است زیرا براساس این تبدیل خواهیم داشت.
رابطه آخر از آنجا برابر با صفر است که «اریبی» (Bias) میانگین نمونه با پارامتر مرکزی جامعه (میانگین جامعه یا ) برابر با صفر است. از طرفی نیز برای محاسبه واریانس نیز داریم:
به نظر میرسد که تنها روشی که در «یادگیری نظارت شده» (Supervised Learning) بدون در نظر گرفتن مقیاس عمل میکند و به شکلی «پایا در مقابل تغییر مقیاس» (Scaled Invariant) است، الگوریتمهای برمبنای «درخت تصمیم» (Decision Tree) مانند الگوریتمCART، هستند زیرا براساس بزرگی و کوچکی مقدارهای در هر بُعد نسبت به یکدیگر عمل کرده و فقط به ترتیب و نه اندازه مشاهدات توجه دارد. در ادامه به معرفی بعضی از الگوریتمها یادگیری ماشین میپردازیم که تغییر مقیاس در آنها اهمیت داشته و باعث تغییر در نتایج خواهد شد.
- الگوریتم k-نزدیکترین همسایه (KNN) با تابع فاصله اقلیدسی.
- الگوریتم خوشهبندی k-میانگین.
- رگرسیون لجستیک، ماشین بردار پشتیبان (SVM)، شبکه عصبی مصنوعی (ANN) زمانی که از روش بهینهسازی گرادیان کاهشی استفاده میکنید.
- تحلیل تشخیصی خطی (Linear Discirminant Analysis- LDA)، که به دنبال بهترین تبدیل دادهها به منظور بهترین جدا کننده یا تشخیص نقاط، است.
نرمالسازی (Normalization)
یکی دیگر از روشهای تغییر مقیاس، استفاده از روش نرمالسازی Min-Max است. به این ترتیب علاوه بر یکسان سازی مقیاس دادهها، کرانهای تغییر آنها نیز در بازه خواهد بود. این تبدیل به صورت زیر تعریف میشود.
در این رابطه حداقل مقدارها و نیز حداکثر مقادیر را نشان میدهد.
این شیوه محاسبه اغلب در زمانی استفاده میشود که میخواهیم میزان شباهت بین نقاط را مشخص کنیم. برای مثال در پردازش تصویر و تشخیص پیکسلهای مشابه از این تبدیل استفاده شده و سپس از الگوریتمهای خوشهبندی برای کاهش تعداد رنگ استفاده میشود.
استانداردسازی و نرمالسازی در Scikit-learn
خروجی این دستورات به صورت زیر خواهد بود.
کاملا مشخص است که میزان بزرگی و مقیاس متغیرها در این مجموعه داده متفاوت هستند. بنابراین احتیاج به استانداردسازی یا نرمالسازی است. کدهای زیر به منظور «پیشپردازش» (Pre-Processing) دادهها و استانداردسازی و تبدیل Min-Max نوشته شده است.
خروجی این برنامه به شکل زیر خواهد بود. مشخص است که میانگین برای هر دو متغیر برابر صفر و واریانس یا انحراف استاندارد نیز برابر با واحد (یک) شده است.
همچنین در بخش بعدی محاسبات مربوط به تغییر مقیاس Min-Max صورت گرفته است. به کد زیر توجه کنید.
خروجی برای این دستورات نیز به شکل زیر خواهد بود. همانطور که می بینید دامنه تغییرات برای هر دو متغیر (در هر بُعد) برابر با ۱ و حداقل مقدار حاصل از تبدیل ۰ و حداکثر ۱ محاسبه شده است.

همانطور که در نمودار بالا مشاهده میکنید، نقاط سبز رنگ تغییر مکان پیدا کرده و حول مقدار صفر در محور افقی پراکنده هستند. با توجه به دامنه تغییراتی که برای دادههای استاندارد شده وجود دارد (تقریبا اکثر دادهها در فاصله ۳- تا ۳ تغییر میکنند) پراکندگی در حالت Standardized بیشتر است ولی برای دادههایی که توسط تغییر مقیاس Min-Max ساخته شدهاند و با رنگ آبی مشخض شدهاند، پراکندگی کوچکتر بوده و دامنه تغییرات آن کوچکتر از دادههای استاندارد شده است.
حال بهتر است که برحسب سه کلاس و برچسبی که مشاهدات را به سه گروه تقسیم میکرد، نمودارهایی برای نمایش پراکندگی دادههای واقعی، استاندارد شده و Min-Max ترسیم کنیم. کدی که در زیر مشاهده میکنید به این منظور نوشته شده است.
نتیجه اجرای این کد در ادامه دیده میشود. نمودارها به خوبی نشان میدهند که روی محورها تغییر مقیاس رخ داده است و حدود تغییرات دادهها کاملا نمایان است.

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

تاثیر تغییر مرکز روی ماتریس کوواریانس
که در آن و میانگین متغیرهای و هستند.
حال با استفاده از تبدیل زیر، اصلاحی انجام میدهیم که مرکز (میانگین) متغیرها برابر با صفر شود. این کار را «تبدیل مرکز صفر» (Centering) مینامند.
مشخص است که برای دادههای تبدیل یافته و ، میانگین برابر با صفر است زیرا:
با توجه به این تساویها، مقدار کوواریانس بین دو متغیر و را به شکل زیر محاسبه میکنیم.
همانطور که در قبل نشان داده شد، مرکز یا میانگین هر کدام از متغیرهای تبدیل شده و ، صفر است، فرمول بالا سادهتر شده و به شکل زیر در خواهد آمد.
که با جایگذاری و همان رابطه اولیه برای کوواریانس و حاصل میشود. در نتیجه میتوان گفت که تبدیل مرکز صفر، تاثیری در کوواریانس دو متغیر ندارد.
از آنجایی که در شیوه محاسبه تبدیل استاندارد از تغییر مرکز به نقطه صفر استفاده میشود، میتوان گفت که استانداردسازی بوسیله تغییر مکان بر روری کووریانس دادهها تاثیر گذار نخواهد بود. همین امر را برای تبدیل Min-Max نیز میتوان در نظر گرفت. از آنجایی که تغییر مکان دادهها باعث تغییر یکسانی در حداکثر و حداقل داده میشود، میتوان گفت که نرمالسازی نیز به شکل تغییر مکان، تاثیری در کواواریانس بین دو متغیر نخواهد داشت.
تاثیر تبدیل تغییر مقیاس بر کوواریانس
فرض کنید ضریب تغییر مقیاس برای متغیر باشد. به این ترتیب تبدیل زیر واحد متغیر را تغییر خواهد داد.
در این حالت کوواریانس بین متغیر و قبل و بعد از تغییر مقیاس به صورت زیر خواهد بود.
با توجه به رابطهای که بین و وجود دارد رابطه بالا به صورت زیر در خواهد آمد.
با فاکتورگیری از مقدار ثابت رابطه بالا به صورت زیر ساده خواهد شد.
در نتیجه تغییر مقیاس یک یا هر دو متغیر بر روی کوواریانس آنها تاثیر گذار بوده و مقداری که باعث تغییر مقیاس شده در مقدار کوواریانس دادههای اولیه ضرب میشود. به این ترتیب اگر دادهها مربوط به وزن را از کیلوگرم به گرم تبدیل کنیم (یعنی ضریب )، مقدار کوواریانس بین قد و وزن ۱۰۰۰ برابر خواهد شد.
نکته: به یاد دارید که در تبدیل و تغییر مقیاس استانداردسازی، متغیرها دچار تغییر مرکز صفر و همچنین تغییر مقیاس میشوند. به این معنی که اختلاف هر مقدار از میانگین بر انحراف معیار تقسیم میشود. بنابراین، استانداردسازی بر روی کوواریانس دو متغیر تاثیر گذار است.
در ادامه نشان خواهیم داد که تغییر مقیاس نرمالسازی در کوواریانس بین متغیر و تغییری بوجود نمیآورد.
مشخص است که رابطه زیر بین حداقل و حداکثر دادههای تبدیل یافته و اصلی برقرار است.
بنابراین نرمالسازی شده متغیر تصادفی تغییر مقیاس یافته به شکل زیر خواهد بود.
به این ترتیب مشخص است که کوواریانس بین متغیرهای تبدیل یافته به روش نرمالسازی، تغییری در کوواریانس بین متغیرها بوجود نمیآورد.
اگر مطلب بالا برای شما مفید بوده است، احتمالاً آموزشهایی که در ادامه آمدهاند نیز برایتان کاربردی خواهند بود.
- مجموعه آموزشهای آمار و احتمالات
- آموزش آماده سازی داده ها برای تحلیل آماری در SPSS
- مجموعه آموزشهای داده کاوی و یادگیری ماشین
- ضریبهای همبستگی (Correlation Coefficients) و شیوه محاسبه آنها — به زبان ساده
- تحلیل مولفه اساسی (PCA) در پایتون — راهنمای کاربردی
- استخراج (Extraction) و تبدیل (Transformation) داده ها در پایتون — راهنمای جامع
^^
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید














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