با داده ها چه می توان کرد؟ 15- پردازش لجستیک


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

به عبارت دیگر پردازش لجستیک Logistic Regression به ما این امکان را می دهد که با استفاده از داده ها در متغیرهای گوناگون مشخص کنیم نتیجه نهایی در باره متغیری که پیشگویی آن مقصود ماست، چیست.

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

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

بدون آنکه بخواهیم بطور عمیق وارد فرمولهای ریاضی بشویم، بیاد داریم که در پردازش خطی، فرمول مورد استفاده برای تعیین میزان شیب (ضریب) هر متغیر X  که بر روی Y تاثیر داشت بدینگونه بود:

               Y ≈ β0 + β1X

در پردازش لجستیک این فرمول به این صورت است. توجه داشته باشید که (p(X همان Y است.

در فرمول دوم اگر متغیر میزان بدهی 1 ꞵ به هر میزانی هم که کم باشد، احتمال عدم بازپرداخت از صفر پایین تر نمی رود در صورتیکه که برای فرمول پردازش خطی، این احتمال وجود دارد.

برای بدست آوردن ضریب این متغیر و سپس احتمال آری یا نه، ما از فرمول پردازش لجستیک استفاده می کنیم. در مثال ما اگرفقط یک متغیر (میزان بدهی) داشته باشیم، با توجه به داده ها، ضریب اینگونه است:


بعدا در همین قسمت نحوه بدست آوردن این ضریب را با هم مرور می کنیم اما همانطور که در بالا می بینید، ضریب متغیر بدهی بسیار پایین است. اگر این ضریب و نقطه آغازین Intercept را در فرمول بالا قرار دهیم، مثلا با فرض آنکه بدهی یک فرد 1000 است، احتمال عدم بازپرداخت بدین صورت می شود:


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

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


حالا اگر با پایتون و پانداز داده ها را محاسبه کنیم، ضریب سه متغیر ذکر شده به این صورت زیر در می آید:

قبل از آنکه به چگونگی محاسبه با استفاده از پایتون Python و پانداز Pandas و استاتزمدل Statsmodel بپردازیم، ذکر چند نکته در تحلیل اعداد بدست آمده در بالا مهم است.

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


همانگونه که ملاحظه می کنید، این ضریب 4049. است در صورتیکه با لحاظ کردن درآمد و میزان بدهی، ضریب دانشجو بودن 6468.- است. اگر بیاد داشته باشید، در پردازش خطی نیز ضریبهای متغیرها در صورت تعدد، متفاوت بودند.
نکته دوم اینکه در جدولهای بالا علاوه بر ضریب متغیرها، اعداد زیر ستونها Z و P هم اطلاعاتی را در اختیار ما می گذارند. در اینجا نیز مانند پردازش خطی، میزان بسیار کوچک P نشان دهنده وجود ارتباط میان متغیر محاسبه شده و ضریب و نتیجه بدست آمده برای Y است. همچنین عدد Z مثل T-statistic در صورت زیاد بودن (بزرگتر از 1) همین ارتباط را تایید می کند.

اگر به جدول محاسبه شده با سه متغیر نگاه کنید، اعداد در زیر ستونهای Z  وP برای درآمد بر عکس دو متغیر دیگر هستند. اتفاقا ضریب بدست آمده برای درآمد نیز بسیار بسیار کوچک است.

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


در این داده ها در زیر ستون دانشجو بله یا نه ثبت شده است. در محاسبه پردازش لجستیک ما باید این داده ها را ابتدا به صفر و یک (دوگانه عددی) تبدیل کنیم والا قادر به محاسبه نخواهیم بود. پایتون و پانداز نمی توانند جواب بلی یا نه را محاسبه کنند. همچنین باید توجه داشته باشیم که پس از تغییر این داده ها به صفر و یک، هر کدام معرف چه نتایجی هستند. یعنی آیا 1 نماینده دانشجو بودن است یا صفر؟

حال بصورت عملی این محاسبات را انجام دهیم.
ابتدا این فایل را دانلو کنید و در پوشه ای که یک فایل جدید نوتبوک ژوپیتر در آن ایجاد می کنید( نحوه ایجاد یک نوتبوک جدید در ژوپیتر) قرار دهید. سپس بسته های مختلف مورد استفاده را وارد کنید:


اکنون نوبت خواندن (استفاده) داده ها در نوتبوک است:


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

اکنون از این طریق ضریب، اعداد Z و P و باقی نتایج را محاسبه می کنیم: 


تعداد داده های ثبت شده 10000 است. اطلاعات دیگری نیز در جدول بالا مثل تاریخ و زمان محاسبه، نام مدل، R2  و غیره قابل مشاهده است.

این کد به شما احتمالات (درصد احتمال بین صفر و 1) را، همانگونه که ما با قرار دادن عدد 1000 دلار در فرمول بدست آوردیم، ارائه می دهد:

result.predict(df)

این کد را پس از آنکه ضریبها را بدست آوردید، خودتان امتحان کنید.

جدول پایین نیز ضریبها و دیگر اطلاعات را با توجه به محاسبه دو متغیر دیگر نشان می دهد:

تنها تفاوت در جدول بالا نوع دیگری از طریق گزارش مختصر ()summary2 است. اکثر اطلاعات مشابه ()summary1 است.



- اطلاعات مربوط به این بخش و قسمتهای دیگر در باره پانداز، بیشتر برگرفته از کتاب  Python for Data Analysis, Data Wrangling with Pandas, NumPy,and IPython چاپ دوم از انتشارات اورایلی است که توسط Wes McKinney، خالق پانداز، نوشته شده است. 

*- بیشتر ملاتها در مورد بررسیهای آماری در این سلسله مطالب، برگرفته از دو کتاب An Introduction to Statistical Learning و The Elements of Statistical Learning Data Mining, Inference, and Prediction از انتشارات سپرینگر springer.com/us و کلاسهای ارائه شده آنلاین توسط دانشگاه هاروارد است.



**- استفاده از این سلسله مطالب با ذکر منبع آزاد است.

Comments

Popular posts from this blog

با داده‌ها چه می‌توان کرد؟ 12 - کار با پانداز - 3 چگونه داده‌ها را وارد کنیم؟

با داده‌ها چه می‌توان کرد؟ 7 - استخراج داده ها با پایتون