داده کاوی، هوش مصنوعی ۴۲۰ بازدید

اغلب داده‌های در دسترس، قبل از استفاده نیاز به پردازش دارند و نمی‌توانند به صورت مستقیم مورد استفاده قرار بگیرند. یکی از فرآیندهایی که اغلب برای پیش پردازش داده‌ها (Preprocessing) در پروژه‌های داده کاوی و یادگیری ماشین انجام می‌شود، «مقیاس بندی ویژگی» (تغییر مقیاس داده‌ها) یا همان «Feature Scaling» است که با نام «نرمال سازی داده» (Data Normalization) نیز شناخته می‌شود. در این مقاله به آموزش و پیاده‌سازی مقیاس بندی ویژگی در پایتون پرداخته شده است.

مقیاس بندی ویژگی چیست و چه کاربردی دارد؟

برای درک بهتر مفهوم مقیاس بندی ویژگی و پاسخ به این سوال که مقیاس بندی ویژگی یا همان Feature Scaling چیست، بهتر است مثالی ارائه شود. در این مثال فرض می‌شود یک مجموعه داده با 3 ستون و 10 سطر به صورت زیر موجود است:

Age Weight Height
23 154.25 67.75
22 173.25 72.25
22 154 66.25
26 184.75 72.25
24 184.25 71.25
24 210.25 74.75
26 181 69.75
25 176 72.5
25 191 74
23 198.25 73.5

اگر یک بررسی کلی روی این مجموعه داده انجام شود، مشخص خواهد شد که ستون اول اعدادی بین 23 تا 26 را در بر می‌گیرد؛ درحالی که ستون دوم اعدادی بین 154 تا 210.45 را شامل می‌شود. این اختلاف بین مقیاس داده‌ها، اغلب مشکلاتی را به وجود می‌آورد که برای رفع آن‌ها نیاز است تا تغییر مقیاس داده‌‌ها یا همان مقیاس بندی ویژگی انجام شود.

روش‌های مقیاس بندی ویژگی چه هستند؟

3 مورد از پرکاربردترین روش‌ها برای مقیاس بندی ویژگی به شرح زیر است:

  • مقیاس بندی مینیمم-ماکزیمم (Min Max Scaling | Min-Max Normalization)
  • مقیاس بندی استاندارد (Standard Scaling)
  • مقیاس بندی منسجم (Robust Scaling)

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

مقیاس بندی ویژگی Min Max چیست؟

در روش مقیاس بندی ویژگی Min Max با ضرب و تقسیم داده‌ها به 2 عدد، مقیاس بندی ویژگی بین 0 تا 1 تنظیم می‌شود که به صورت زیر قابل توصیف است:

$$ x’ =\frac{x – min{(X)}}{max{(X)} – min{(X)}} $$

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

معرفی مقیاس بندی ویژگی استاندارد

در روش مقیاس بندی ویژگی استاندارد از واریانس و میانگین استفاده می‌شود. با انجام تغییرات به روش استاندارد، داده‌ها به توزیعی با میانگین صفر و واریانس یک می‌رسند. مقیاس بندی هر یک از داده‌های یک ویژگی با روش مقیاس بندی ویژگی استاندارد به صورت زیر انجام می‌شود:

$$ x’ =\frac{x – mean(X)}{variance(X)} $$

در روش مقیاس بندی ویژگی استاندارد کمینه و بیشینه داده‌ها به صورت قطعی روی عدد خاصی تنظیم نمی‌شود و تمرکز بر روی تنظیم میانگین و واریانس است.

مقیاس بندی ویژگی منسجم چیست؟

در روش مقیاس بندی ویژگی منسجم یا همان Robust Scaling از چارک‌های اول، دوم و سوم داده‌ها استفاده می‌شود. این روش از تغییر مقیاس یا همان مقیاس بندی ویژگی در شرایطی که داده‌های پرت (Outlier) وجود داشته باشد، بسیار کارآمد خواهد بود. رابطه ریاضی موجود برای این تبدیل به صورت زیر است:

$$x’ =\frac{x – Q_2(X)}{Q_3(X)-Q_1(X)}$$

در این روش، میانه روی صفر تنظیم می‌شود و فاصله بین چارک اول تا چارک سوم معادل یک واحد خواهد بود.

اکنون زمان آن فرا رسیده است تا وارد محیط برنامه‌نویسی زبان پایتون شده و هر کدام از روش‌های مقیاس بندی ویژگی مورد بررسی قرار بگیرند.

معرفی فیلم های آموزش داده کاوی و یادگیری ماشین فرادرس

فیلم های آموزش داده کاوی و یادگیری ماشین فرادرس

مقیاس بندی ویژگی یکی از مراحل و مواردی است که در پیش پردازش داده‌ انجام می‌شود. پیش پردازش داده‌ها نیز در داده کاوی و یادگیری ماشین کاربرد دارد. در وب سایت فرادرس، مجموعه‌های آموزشی مختلفی ارائه شده‌اند که هر یک از آن‌ها موضوع مشخصی دارند. همه دوره‌های گردآوری شده در هر مجموعه، دارای زمینه علمی و تحصیلی مشترکی هستند. یک «مجموعه آموزش داده کاوی و یادگیری ماشین» هم در سایت فرادرس موجود است که بررسی دوره‌های آن و استفاده از آن‌ها به علاقه‌مندان داده کاوی و یادگیری ماشین پیشنهاد می‌شود. در زمان تدوین این نوشتار، مجموعه مذکور دارای ۳۰ دوره آموزشی مختلف در زمینه داده کاوی و یادگیری ماشین است که در مجموع بیش از ۲۶۵ ساعت محتوای آموزشی ویدیویی در آن‌ها ارائه شده است.

  • برای مشاهده فیلم های آموزش داده کاوی و یادگیری ماشین فرادرس + کلیک کنید.

پیاده سازی مقیاس بندی ویژگی در پایتون

برای پیاده سازی مقیاس بندی ویژگی در پایتون (Feature Scaling in Python) ابتدا باید کتابخانه‌های مورد نیاز را فراخوانی کرد. بنابراین در ادامه و بخش بعدی این مقاله، کدهای مربوط به فراخوانی کتابخانه‌ها ارائه شده‌اند.

فراخوانی کتابخانه‌های لازم برای پیاده سازی مقیاس بندی ویژگی در پایتون

برای کدنویسی و پیاده سازی مقیاس بندی ویژگی باید کتابخانه‌هایی برای انجام موارد زیر فراخوانی شوند:

  1. کار با آرایه‌ها
  2. رسم نمودار
  3. پیش پردازش داده

بنابراین، برای پیاده سازی مقیاس بندی ویژگی در پایتون باید هر یک از کتابخانه‌های زیر را فراخوانی کرد:

  1. کتابخانه Numpy
  2. کتابخانه Matplotlib
  3. کتابخانه Scikit-Learn

کدهای مربوط به فراخوانی کتابخانه‌های لازم برای پیاده سازی مقیاس بندی ویژگی در پایتون به صورت زیر است:

import numpy as np
import matplotlib.pyplot as plt
import sklearn.preprocessing as pp

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

ایجاد مجموعه داده برای پیاده سازی مقیاس بندی ویژگی در پایتون

ایجاد مجموعه داده‌ها برای پیاده سازی مقیاس بندی ویژگی در پایتون به صورت زیر انجام می‌شود:

Features = ['Age', 'Weight', 'Height']
X = np.array([[23, 154.25, 67.75],
             [22, 173.25, 72.25],
             [22, 154, 66.25],
             [26, 184.75, 72.25],
             [24, 184.25, 71.25],
             [24, 210.25, 74.75],
             [26, 181, 69.75],
             [25, 176, 72.5],
             [25, 191, 74],
             [23, 198.25, 73.5]])

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

رسم نمودار توزیع داده‌ها

رسم نمودار توزیع داده‌های ایجاد شده برای پیاده سازی مقیاس بندی ویژگی در پایتون به صورت زیر انجام می‌شود:

for i, f in enumerate(Features):
    plt.subplot(1, len(Features), i+1)
    plt.hist(X[:, i], bins=4)
    plt.xlabel(f)
    plt.ylabel('N')

plt.show()

در کدهای فوق به ازای هر ویژگی (ستون) در مجموعه داده، یک نمودار جداگانه (Subplot) ایجاد و در آن نمودار هیستوگرام ویژگی مربوطه رسم می‌شود. خروجی کدهای مربوط به رسم نمودار و بصری‌سازی داده‌های ایجاد شده برای پیاده‌سازی مقیاس بندی ویژگی در پایتون به صورت زیر است:

رسم نمودار داده های ایجاد شده برای پیاده سازی مقیاس بندی ویژگی در پایتون

با مصورسازی داده‌ها و رسم نمودار، مشاهده می‌شود که محدوده توزیع و شکل توزیع هر ویژگی به چه صورت است. حال در ادامه به پیاده‌سازی «تنظیم کننده مقیاس کمینه-بیشینه» (Min Max Scaler) روی هر یک از ویژگی‌های مجموعه داده تولید شده پرداخته شده است.

پیاده سازی تنظیم کننده مقیاس کمینه بیشینه روی ویژگی‌ها در پایتون

پیاده‌سازی «تنظیم کننده مقیاس کمینه-بیشینه» یا همان «Min-Max Scaler» روی ویژگی‌ها به صورت زیر انجام می‌شود:

Scaler1 = pp.MinMaxScaler()
X1 = Scaler1.fit_transform(X)

در کدهای فوق ابتدا یک تنظیم کننده مقیاس (Scaler) تولید و سپس خروجی این تغییر مقیاس در X1 ذخیره می‌شود. حالا برای ملاحظه تغییرات به وجود آمده در ویژگی‌ها می‌توان نمودار داده‌ها را دوباره رسم کرد. نمودار جدید به صورت زیر است:

نمودار مجموعه داده های پس از پیاده سازی تنظیم کننده مقیاس Min-Max در پایتون

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

پیاده‌سازی تنظیم کننده مقیاس استاندارد روی ویژگی‌ها در پایتون

مشابه روش قبل، یک تنظیم کننده مقیاس، این بار از نوع استاندارد (Standard Scaler) به صورت زیر تولید می‌شود و پس از آن،‌ این تنظیم کننده مقیاس روی داده‌ها پیاده‌سازی و نتیجه در متغیر X2 ذخیره خواهد شد:

Scaler2 = pp.StandardScaler()
X2 = Scaler2.fit_transform(X)

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

نمودار مجموعه داده های پس از پیاده سازی تنظیم کننده مقیاس استاندارد در پایتون

در نمودار فوق ملاحظه می‌شود که با پیاده‌سازی مقیاس بندی ویژگی استاندارد، بازه کمینه و بیشینه برای هر ویژگی در مجموعه داده متفاوت است. با محاسبه میانگین و واریانس برای داده‌های مقیاس بندی شده به صورت استاندارد ملاحظه می‌شود که میانگین‌ها با دقت بالایی به 0 نزدیک شده‌اند و واریانس‌ها روی عدد 1 قرار گرفته‌اند. محاسبه میانگین و واریانس ویژگی‌ها برای X2 به صورت زیر انجام می‌شود:

M = np.mean(X2, axis=1)
V = np.var(X2, axis=1)

print(f'{M = }')
print(f'{V = }')

خروجی کدهای فوق به صورت زیر است:

$$ M = array([0.00000000e+00, 6.66133815e-16, 1.07691633e-15]) $$

$$ V = array([1., 1., 1.,]) $$

به این ترتیب همان‌طور که بیان شد، ملاحظه می‌شود که میانگین‌ها با دقت بالایی به 0 نزدیک شده‌اند و واریانس‌ها روی عدد 1 قرار گرفته‌اند. دلیل نامگذاری این روش به نام «Standard Scaler» نیز به مقدار واریانس و میانگین آن مربوط می‌شود که برابر با تابع توزیع استاندارد هستند.

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

پیاده‌سازی تنظیم کننده مقیاس منسجم روی ویژگی‌ها در پایتون

پیاده‌سازی تنظیم کننده مقیاس منسجم روی ویژگی‌ها در پایتون نیز مشابه موارد قبلی انجام می‌شود. ابتدا یک تنظیم کننده مقیاس منسجم (Robust Scaler) تولید و سپس اسن Scaler روی داده‌ها اعمال می‌شود:

Scaler3 = pp.RobustScaler()
X3 = Scaler3.fit_transform(X)

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

نمودار مجموعه داده های پس از پیاده سازی تنظیم کننده مقیاس استاندارد در پایتون

به این ترتیب در نمودار فوق ملاحظه می‌شود که به ازای $$ x= median $$ مقدار $$x’$$ برابر با صفر خواهد بود.

نکته مهمی که در مورد Robust Scaler حائز اهمیت است، استفاده از 3 معیار برای تبدیل و همچنین مقاوم بودن آن نسبت به داده‌های پرت است که روش‌هایی مانند Min Max Scaling از این جهت ضعف دارند. برای بررسی‌های بیشتر، می‌توان تنظیمات هرکدام از Scalerها را تغییر داد و تاثیر هر کدام را روی نتایج ملاحظه کرد. برای مثال، تنظیمات زیر می‌توانند تعیین‌کننده باشند:

  1. برای Min Max Scaler عامل feature_range قابل تنظیم است.
  2. برای Standard Scaler می‌توان عامل‌های with_mean و with_std را تغییر داد.
  3. برای Robust Scaler نیز عامل quantile_range را می‌توان تعیین کرد.

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

فیلم های آموزش داده کاوی و یادگیری ماشین فرادرس

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

فیلم آموزش مفاهیم آماری در داده کاوی و پیاده سازی آن در پایتون Python

دوره آموزش مفاهیم آماری در داده کاوی و پیاده سازی آن در پایتون Python

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

فیلم آموزش تجزیه و تحلیل و آماده سازی داده ها با پایتون Python

فیلم آموزش تجزیه و تحلیل و آماده سازی داده ها با پایتون Python 

مقیاس بندی ویژگی زیرمجموعه‌ای از حوزه پیش پردازش داده‌ها به حساب می‌آید و پیش پردازش داده‌ها هم به نوعی همان آماده سازی داده‌ها است. دوره آموزش تجزیه و تحلیل و آماده سازی داده ها با پایتون Python می‌تواند به عنوان یک منبع آموزشی کاربردی و جامع در این زمینه به شمار رود. طول مدت این دوره آموزشی نزدیک به ۱۰ ساعت و مدرس آن دکتر فرشید شیرافکن است. این دوره از ۱۰ درس تشکیل شده است که در آن‌ها مباحثی از جمله آشنایی با پکیج ‌NumPy‌، کار با سری‌ها در پکیج Pandas، نوشتن و خواندن در فایل، پاک‌سازی داده‌ها‌، مصور‌سازی داده‌ها با پکیج Pyplot و سایر موارد پوشش داده شده‌اند.

جمع‌بندی

در این مقاله آموزشی روش‌های خطی پرکاربرد برای مقیاس بندی ویژگی‌ها (تغییر مقیاس ویژگی‌ها | Feature Scaling) مورد بررسی قرار گرفتند و اثرات هر کدام روی توزیع و پارامترهای آماری بررسی شدند. علاوه بر روش‌های خطی معرفی شده در این مقاله، روش‌های غیرخطی نیز می‌توانند برای این اهداف مورد استفاده قرار گیرند.

اگر این مطلب برای شما مفید بوده است، آموزش‌ها و مطالب زیر نیز به شما پیشنهاد می‌شوند:

بر اساس رای ۸ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

«سید علی کلامی هریس»، دانشجوی سال چهارم داروسازی دانشگاه علوم پزشکی تهران است. او در سال 1397 از دبیرستان «پروفسور حسابی» تبریز فارغ‌التحصیل شد و هم اکنون در کنار تحصیل در حوزه دارو‌سازی، به فعالیت در زمینه برنامه‌نویسی، یادگیری ماشین و تحلیل بازارهای مالی با استفاده از الگوریتم‌های هوشمند می‌پردازد.