دسته بند بیز ساده و داده های استاندارد شده – پیاده سازی در پایتون
«تغییر مقیاس» (Re-scaling) و «تبدیل» (Transformation) یکی از بخشهای اصلی کار بر روی دادهها به منظور انجام «تحلیلهای آماری» (Statistical Analysis) و «مدلسازی» (Modeling) محسوب میشود که در فرآیند «دادهکاوی» (Data Mining) در بخش «آمادهسازی دادهها» (Data Preparation) صورت میگیرد. این کار زمانی که به «تحلیل چند متغیره» (Multivariate Analysis) مشغول هستید، بسیار ضروری است، زیرا ممکن است دادههای با مقیاس بزرگتر نقش بیشتری در مدلسازی داشته باشند چون واریانس بزرگتری نیز خواهند داشت. ولی اگر دادههای مربوط به متغیرها را بدون واحد یا به شکلی با یک واحد اندازهگیری نشان داده و به کار بریم، بهتر میتوانیم اهمیت هر یک را در تعیین مدل مشخص کنیم. در این نوشتار به بررسی یک روش تبدیل به نام «استانداردسازی» (Standardization) و نقش آن در تکنیک «تحلیل مولفههای اصلی» (Principal Component Analysis- PCA) و «دسته بند بیز ساده» (Naive Bayes Classifier) میپردازیم. برای انجام محاسبات و مدلسازی نیز از کدهایی در زبان برنامه نویسی پایتون استفاده خواهیم کرد.

دسته بند بیز ساده و دادههای استاندارد شده
بسیاری از روشها و تکنیکهای آماری که در حوزه «تحلیل چند متغیره» (Multivariate Analysis) قرار دارند، احتیاج به استانداردسازی یا نرمالسازی داده دارند تا به این وسیله متغیرهای با اهمیت، شناسایی شده و به شکلی، مدل بدون در نظر گرفتن مقیاس یا واحد اندازهگیری مقادیر، ایجاد شود. در این نوشتار به بررسی «دستهبند بیز ساده» (Naive Bayes Classifier) خواهیم پرداخت که از طرفی به عنوان یک ابزار «یادگیری ماشین» (Machine Learning) بوده و با توجه به استفاده از چند ویژگی میتوان آن را تحلیل چند متغیره نیز در نظر گرفت.
از سوی دیگر به منظور کاهش ابعاد یک مسئله پیچیده چند متغیره، روشهای مختلفی مانند «تحلیل مولفههای اصلی» (Principcal Component Analysis- PCA) و «تحلیل تشخیص خطی» (Linear Discriminant Analysis- LDA) وجود دارند که متاسفانه به واحد اندازهگیری دادهها بسیار حساس هستند. در این نوشتار سعی میکنیم از تاثیر استفاده از تبدیلاتی مانند استانداردسازی بر روی تحلیل مولفههای اصلی و همچنین به کارگیری دستهبند بیز ساده آشنا شده و نتایج دقت در تشخیص گروهها را به کمک مثالی مورد بررسی قرار دهیم. این متن شامل چندین قسمت است که در هر بخش یکی از گامهای تحلیل دستهبند بیز ساده صورت میپذیرد. این مراحل و گامها در ادامه فهرست شدهاند.
- گام اول: خواندن و بارگذاری دادهها و تفکیک آنها به دو بخش «دادههای آموزشی» (Training Set) و «دادههای آزمایشی» (Test Data)
- گام دوم: استاندارد کردن دادهها و ویژگیها (متغیرهای عددی)
- گام سوم: استفاده از تحلیل مولفههای اصلی (PCA) به منظور کاهش بعد مسئله
- گام چهارم: به کارگیری دستهبندی بیز ساده (Naive Bayes Classifier) روی دادههای آموزشی
- گام پنجم: بررسی دقت دستهبندی دادههای اصلی و استاندارد شده
گام اول: خواندن دادهها و تفکیک به بخش آموزشی و آزمایشی
همانطور که مشخص است ۷۰٪ دادهها به گروه آموزشی و ۳۰٪ نیز به گروه آزمایشی تعلق دارند. برای انجام این کار از کتابخانه sklearn و تابع train_test_split از گروه cross_validation استفاده شده است.
گام دوم: استاندارد کردن دادهها و ویژگیها
قسمتی از خروجی این دستور در ادامه قابل مشاهده است.
کاملا مشخص است که دادهها در فاصله قرار گرفتهاند.
گام سوم: تحلیل مولفههای اصلی (PCA) به منظور کاهش بعد مسئله
در این قسمت تکنیک PCA را روی دادههای آموزشی استاندارد شده و البته استاندارد نشده (دادههای اصلی) اجرا میکنیم تا در گامهای بعدی بتوانیم در مورد دقت دستهبند بیز برای هر دو گروه داده، مقایسهای صورت دهیم. دو مولفه اول را پس از اجرای دستور PCA انتخاب و از آنها در الگوریتم دستهبندی بیز ساده استفاده خواهیم کرد.
کدی که در زیر مشاهده میکنید به منظور استخراج مولفههای اصلی برای این مجموعه داده تهیه شده است.

گام چهارم: به کارگیری دستهبندی بیز ساده روی دادههای آموزشی
اگر فرض کنیم که ویژگیها یا متغیرهای مربوط به مشاهدات، مستقل از یکدیگر هستند، میتوان با فرض وجود متغیر برچسب یا دسته ، قضیه بیز را به صورت زیر نوشت.
فرض کنید دو کلاس و وجود داشته باشد. به این ترتیب قاعده تصمیمگیری بوسیله دستهبند بیز ساده به شکل زیر نوشته خواهد شد.
اگر باشد، را در کلاس قرار میدهیم.
به این ترتیب برای محاسبه هر یک از این احتمالات از قضیه بیز استفاده کرده و مبنا یا تصمیم برای قرارگیری هر مشاهده در گروه یا کلاس به صورت زیر نوشته خواهد شد.
کدی که در ادامه مشاهده میکنید با فرض توزیع نرمال به عنوان توزیع پیشین برای دادهها، الگوریتم دستهبندی بیز ساده را برای دادههای اصلی و استاندارد شده اجرا میکند.
گام پنجم: بررسی دقت دستهبندی دادههای اصلی و استاندارد شده
در ابتدا الگوریتم دستهبند بیز ساده را برای دادههای اصلی آموزشی اجرا کرده و صحت و دقت مدل را روی دادههای آموزشی و آزمایشی اندازهگیری میکنیم.
نتیجه اجرای کدهای بالا در ادامه دیده میشوند. همانطور که مشاهده میکنید، دقت تشخیص دسته یا گروهها برای دادههای آموزشی اصلی حدود 81٪ و برای دادههای آزمایشی اصلی تقریبا 65٪ است. که البته مناسب به نظر نمیرسد.
در قسمت دوم همین عملیات را روی دادههای استاندارد شده آموزشی اجرا کرده و دقت مدل حاصل را براساس دادههای آموزشی و آزمایشی محاسبه میکنیم.
نتیجه اجرای کد بالا، نشانگر افزایش دقت تشخیص گروهها هم برای دادههای آموزشی و هم آزمایش است، بطوری که برای مجموعه داده آموزشی، دقت تشخیص گروه واقعی تقریبا 97٪ و برای دادههای آزمایشی 98٪ است. این نتایج را در کادر زیر مشاهده میکنید.
بنابراین، مشخص است که استفاده مناسب از دادههای استاندارد شده در تحلیل PCA و پس از آن دستهبند بیز ساده موجب افزایش دقت و صحت دستهبندی دادهها میشود.
اگر مطلب بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون
- آموزش آمار و احتمال مهندسی
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- آموزش مقدماتی آمار بیزی
- توزیع نرمال یک و چند متغیره — مفاهیم و کاربردها
- تابع درستنمایی (Likelihood Function) و کاربردهای آن — به زبان ساده
- یادگیری ماشین به زبان قضیه بیز، بی نظمی شانون و فلسفه
^^
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید














در چه صورتی در مل دسته بندی بیز، بیش برازش و کم برازش اتفاق میافته؟