دسته بندی داده ها با شبکه عصبی مصنوعی | راهنمای کاربردی
در این مطلب، روش دسته بندی داده ها با شبکه عصبی مصنوعی مورد بررسی قرار گرفته است. همچنین، برای درک بهتر موضوع، یک بررسی موردی انجام و کلیه مراحل لازم برای این کار، با استفاده از «زبان برنامهنویسی پایتون» (Python Programming Language) پیادهسازی شده است.

دسته بندی داده ها با شبکه عصبی مصنوعی

این مطلب به طور کلی به شش بخش تقسیم شده و هر بخش به طور کامل تشریح شده است تا در نهایت مسئله دستهبندی دادههای بانکی با استفاده از شبکههای عصبی مصنوعی حل شود. این شش بخش در ادامه بیان شدهاند.
- بیان مسئله
- پردازش دادهها
- ساخت مدل
- کامپایل کردن مدل
- برازش مدل
- پیشبینی مدل
شایان توجه است که مطالعه این مطلب، به افراد کمک میکند تا چگونگی حل یک مسئله دستهبندی را بیاموزند و با مراحل آن از صفر تا صد آشنا شوند.
بیان مسئله
پردازش دادهها
در این راستا، از read_csv() به صورت زیر استفاده میشود. در تصویر یک، بخش کوچکی از مجموعه داده به تصویر کشیده شده است.

۱۳ ستون اول، متغیرهای مستقل «شناسه» (ID)، «نام» (Name)، «امتیاز اعتباری» (Credit Score)، «جغرافیا» (Geography)، «جنسیت» (Gender)، «سن» (Age) و دیگر موارد هستند. ستون آخر، متغیر «وابسته» (Dependent) است. این متغیر وابسته نشان میدهد که مشتریان بانک را ترک میکنند یا همراه آن میمانند. اکنون، کار پردازش دادهها آغاز میشود.
انتخاب ویژگیها
اولین پرسشی که در این وهله مطرح میشود آن است که آیا نیاز به همه متغیرهای مستقل برای برازش مدل است؟ پاسخ «منفی» است. برای مثال، شماره سطرها (Row Number)، شماره مشتری (Customer ID) یا نام خانوادگی (Surname) هیچ تاثیری روی این موضوع ندارند که مشتری بانک را ترک میکند یا میماند.
اما سن مشتریان ممکن است روی این موضوع اثرگذار باشد. مشتریان جوان احتمالا تمایلی به ترک بانک دارند. بنابراین، با این منطق، میتوان گفت که کدام متغیر مستقل میتواند خروجی را تحت تاثیر قرار دهد. البته، باید به خاطر داشت که تنها شبکه عصبی میتواند بگوید که کدام ویژگیها روی خروجی تاثیر دارند. بنابراین، متغیرهای مستقل X به صورت زیر هستند.
متغیر وابسته Y به صورت زیر هستند.
رمزگذاری دستهای
شایان توجه است که در کد بالا، نظر به اینکه اندیس ستون جغرافیا (Geography) در X برابر با ۱ است، اندیس ۱ به عنوان ورودی داده شده است. پس از رمزگذاری، کشور آلمان ۱، فرانسه ۰ و اسپانیا ۲ خواهد شد. با روش مشابهی، رمزگذاری ستون جنسیت به صورت زیر انجام میشود.
اکنون، در ستون جنسیت مرد (Male) یک (۱) و زن (Female) صفر (۰) است.
کدبندی وانهات
در مثالهای بالا، پس از انجام کدبندی (رمزگذاری)، آلمانی (German) یک (۱)، فرانسوی (صفر) و اسپانیایی دو (۲) می شود. با وجود ترتیبی بودن این ارقام، باید توجه داشت که هیچ رابطه ترتیبی بین کشورها وجود ندارد. در واقع، اسپانیا بالاتر از آلمان و فرانسه پایینتر از اسپانیا قرار نگرفته و ترتیبی وجود ندارد.
بنابراین، نیاز به ساخت «متغیر مجازی» (Dummy Variables) برای متغیرهای دستهای به منظور حذف روابط عددی تعریف شده توسط کدبندی (رمزگذاری) دستهای است. در اینجا، فقط نیاز به انجام این کار برای ستون «Geography» است، زیرا تنها دو دسته برای ستون جنسیت وجود دارد.

در نهایت، برای اجتناب از تله داده (Data Trap)، اولین ستون حذف میشود، زیرا دو ستون با ۰ و ۱ برای کدبندی (رمزگذاری) سه کشور کافی محسوب میشود.
تقسیم دادهها
در گام بعدی، دادهها به دو دسته آموزش (Train) و تست (Test) تقسیم میشوند که در آنها، مجموعه تست ۲۰ درصد از دادهها را به خود اختصاص میدهد.
در اینجا، از random_state برای حصول اطمینان از این موضوع استفاده میشود که تقسیمبندی در هر بار ثابت میماند.
مقیاس کردن ویژگیها
مقیاس کردن ویژگیها (Scaling) برای اجتناب از محاسبات زیاد و همچنین، ممانعت از تسلط یک متغیر بر دیگر متغیرها انجام میشود. برای مسئله دستهبندی دودویی، نیازی به مقیاس کردن متغیرهای وابسته نیست.

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

ساخت مدل
قطعه کد لازم برای انجام این کار، در ادامه آمده است.
شایان توجه است که Output_dim برای لایه پنهان، بسته به تجربه کاری پژوهشگر انجام میشود و یک کار مهم است. به عنوان یک نکته، بر مبنای آزمایشات انجام شده، انتخاب این مورد برای مسئله بیان شده در این مطلب، میانگین بین تعداد گرهها (Nodes)، لایه ورودی و تعداد گرههای لایه خروجی است.
کامپایل کردن مدل
برازش مدل
با مدل برازش شده، مدل روی دادههای تست ارزیابی میشود. در اینجا از آستانه ۰/۵ برای تبدیل دادهها به اطلاعات «درست» (True که در اینجا به معنای ترک کردن بانک توسط مشتری است) و «غلط» (False که در اینجا به معنای ماندن مشتری در بانک است) استفاده میشود.
قطعه کد زیر برای پیادهسازی آنچه بیان شد مورد استفاده قرار میگیرد.
سپس، از confusion_matrix برای بررسی کارایی مدل روی مجموعه داده آزمون (Test) استفاده میشود.
اکنون، تنها یک پرسش نهایی باقی میماند. چطور میتوان روی دادههای مشتریان جدید پیشبینی انجام داد. برای مثال، نمونه دادههای یک مشتری جدید در تصویر زیر نمایش داده شده است.

در اینجا، نیاز به دنبال کردن پردازشهای داده مشابهی است. ابتدا، رمزگذاری متغیرها انجام میشود. برای مثال، Geography France در متغیرهای مجازی به (0,0) رمزگذاری میشود، همچنین، Gender Male برابر با یک قرار داده میشود. با استفاده از روشی که در ادامه ارائه شده است، آرایه زیر تولید میشود.
گام بعدی، مقیاس کردن متغیرها در مقیاسی مشابه با مجموعه آموزش است. این کار، با استفاده از قطعه کد زیر انجام میشود.
با استفاده از دادههای آماده شده، پیشبینی با استفاده از قطعه کد زیر انجام میشود.
نتیجه پیشبینی، با احتمال به دست آمده 0.418 برابر با False است و این یعنی این مشتری بانک را ترک نخواهد کرد که قطعا خبر خوبی برای بانک محسوب میشود.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













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