في هذه المقالة، سنقوم بتحليل الحسابات النظرية للتحويل وظائف الانحدار الخطي в دالة التحويل اللوغاريتمي العكسي (وتسمى أيضًا دالة الاستجابة اللوجستية). ثم، باستخدام الترسانة طريقة الاحتمالية القصوىوفقا لنموذج الانحدار اللوجستي، نشتق دالة الخسارة الخسارة اللوجستيةأو بمعنى آخر سنحدد دالة يتم من خلالها تحديد معلمات ناقل الوزن في نموذج الانحدار اللوجستي .
الخطوط العريضة للمادة:
- دعونا نكرر العلاقة الخطية بين متغيرين
- دعونا نحدد الحاجة إلى التحول وظائف الانحدار الخطي в وظيفة الاستجابة اللوجستية
- دعونا ننفذ التحولات والإخراج وظيفة الاستجابة اللوجستية
- دعونا نحاول أن نفهم سبب سوء طريقة المربعات الصغرى عند اختيار المعلمات ملامح الخسارة اللوجستية
- نحن نستخدم طريقة الاحتمالية القصوى لتحديد وظائف اختيار المعلمة :
5.1. الحالة 1: الوظيفة الخسارة اللوجستية للكائنات ذات تسميات الفئة 0 и 1:
5.2. الحالة 2: الوظيفة الخسارة اللوجستية للكائنات ذات تسميات الفئة -1 и +1:
المقالة مليئة بالأمثلة البسيطة التي يسهل فيها إجراء جميع العمليات الحسابية شفهيًا أو على الورق، وفي بعض الحالات، قد تكون هناك حاجة إلى آلة حاسبة. حتى تحصل على استعداد :)
هذه المقالة مخصصة في المقام الأول لعلماء البيانات ذوي المستوى الأولي من المعرفة في أساسيات التعلم الآلي.
ستوفر المقالة أيضًا رمزًا لرسم الرسوم البيانية والحسابات. كل التعليمات البرمجية مكتوبة باللغة بيثون 2.7. اسمحوا لي أن أشرح مقدمًا عن "حداثة" الإصدار المستخدم - وهذا أحد شروط أخذ الدورة التدريبية المعروفة من ياندكس على منصة تعليمية عبر الإنترنت معروفة بنفس القدر كورسيراوكما قد يفترض المرء، تم إعداد المادة بناءً على هذه الدورة.
01. الاعتماد على الخط المستقيم
من المعقول تمامًا طرح السؤال - ما علاقة الاعتماد الخطي والانحدار اللوجستي به؟
انه سهل! يعد الانحدار اللوجستي أحد النماذج التي تنتمي إلى المصنف الخطي. بكلمات بسيطة، مهمة المصنف الخطي هي التنبؤ بالقيم المستهدفة من المتغيرات (الرجعية) . ويعتقد أن الاعتماد بين الخصائص والقيم المستهدفة خطي. ومن هنا اسم المصنف - خطي. وبعبارة أخرى، يعتمد نموذج الانحدار اللوجستي على افتراض وجود علاقة خطية بين الخصائص والقيم المستهدفة . هذا هو الاتصال.
يوجد المثال الأول في الاستوديو، وهو، بشكل صحيح، يتعلق بالاعتماد المستقيم للكميات التي تتم دراستها. في عملية إعداد المقال، صادفت مثالًا أثار بالفعل قلق الكثير من الأشخاص - اعتماد التيار على الجهد ("تحليل الانحدار التطبيقي"، N. Draper، G. Smith). سننظر إليها هنا أيضًا.
بموجب قانون أوم:
حيث - القوة الحالية، - الجهد االكهربى، - مقاومة.
إذا لم نكن نعرف قانون أومإذن يمكننا إيجاد التبعية تجريبيا عن طريق التغيير والقياس ، بينما يدعم مُثَبَّت. ثم سنرى أن الرسم البياني للتبعية من يعطي خطا مستقيما أكثر أو أقل من خلال الأصل. نقول "أكثر أو أقل" لأنه على الرغم من أن العلاقة دقيقة بالفعل، إلا أن قياساتنا قد تحتوي على أخطاء صغيرة، وبالتالي فإن النقاط على الرسم البياني قد لا تقع بالضبط على الخط، بل ستتناثر حوله بشكل عشوائي.
الرسم البياني 1 "الاعتماد" من »
كود الرسم البياني
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import random
R = 13.75
x_line = np.arange(0,220,1)
y_line = []
for i in x_line:
y_line.append(i/R)
y_dot = []
for i in y_line:
y_dot.append(i+random.uniform(-0.9,0.9))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(x_line,y_line,color = 'purple',lw = 3, label = 'I = U/R')
plt.scatter(x_line,y_dot,color = 'red', label = 'Actual results')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
02. ضرورة تحويل معادلة الانحدار الخطي
دعونا ننظر إلى مثال آخر. لنتخيل أننا نعمل في أحد البنوك ومهمتنا هي تحديد احتمالية قيام المقترض بسداد القرض اعتمادًا على عوامل معينة. لتبسيط المهمة، سننظر في عاملين فقط: الراتب الشهري للمقترض ومبلغ سداد القرض الشهري.
المهمة مشروطة للغاية، ولكن من خلال هذا المثال يمكننا أن نفهم سبب عدم كفاية استخدامها وظائف الانحدار الخطيواكتشف أيضًا التحويلات التي يجب إجراؤها باستخدام الوظيفة.
دعنا نعود إلى المثال. ومن المفهوم أنه كلما ارتفع الراتب، زادت قدرة المقترض على تخصيصه شهريًا لسداد القرض. وفي الوقت نفسه، بالنسبة لنطاق معين من الراتب، ستكون هذه العلاقة خطية تمامًا. على سبيل المثال، لنأخذ نطاق الراتب من 60.000 روبية إلى 200.000 روبية ونفترض أنه في نطاق الراتب المحدد، يكون اعتماد حجم الدفعة الشهرية على حجم الراتب خطيًا. لنفترض أنه بالنسبة لمجموعة محددة من الأجور، تم الكشف عن أن نسبة الراتب إلى الدفع لا يمكن أن تقل عن 3 ويجب أن يظل لدى المقترض احتياطي قدره 5.000 روبية. وفقط في هذه الحالة، سنفترض أن المقترض سوف يسدد القرض للبنك. ومن ثم فإن معادلة الانحدار الخطي سوف تأخذ الشكل التالي:
حيث , , , - راتب -المقترض، - سداد القرض -المقترض.
استبدال الراتب ودفع القرض بمعلمات ثابتة في المعادلة يمكنك أن تقرر ما إذا كنت تريد إصدار القرض أو رفضه.
وبالنظر إلى المستقبل، نلاحظ أنه مع المعلمات المحددة وظيفة الانحدار الخطي، مستعمل في وظائف الاستجابة اللوجستية ستنتج قيمًا كبيرة من شأنها تعقيد الحسابات لتحديد احتمالات سداد القرض. ومن ثم، فمن المقترح تقليل معاملاتنا، على سبيل المثال، بمقدار 25.000 مرة. هذا التحول في المعاملات لن يغير قرار إصدار القرض. دعونا نتذكر هذه النقطة للمستقبل، ولكن الآن، لتوضيح ما نتحدث عنه، دعونا ننظر في الوضع مع ثلاثة مقترضين محتملين.
الجدول 1 "المقترضون المحتملون"
كود إنشاء الجدول
import pandas as pd
r = 25000.0
w_0 = -5000.0/r
w_1 = 1.0/r
w_2 = -3.0/r
data = {'The borrower':np.array(['Vasya', 'Fedya', 'Lesha']),
'Salary':np.array([120000,180000,210000]),
'Payment':np.array([3000,50000,70000])}
df = pd.DataFrame(data)
df['f(w,x)'] = w_0 + df['Salary']*w_1 + df['Payment']*w_2
decision = []
for i in df['f(w,x)']:
if i > 0:
dec = 'Approved'
decision.append(dec)
else:
dec = 'Refusal'
decision.append(dec)
df['Decision'] = decision
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision']]
وفقًا للبيانات الواردة في الجدول، يرغب فاسيا، الذي يتقاضى راتبًا قدره 120.000 روبية، في الحصول على قرض حتى يتمكن من سداده شهريًا بمبلغ 3.000 روبية. قررنا أنه من أجل الموافقة على القرض، يجب أن يتجاوز راتب فاسيا ثلاثة أضعاف مبلغ الدفعة، ويجب أن يظل هناك 5.000 روبية متبقية. يفي فاسيا بهذا المطلب: . حتى 106.000 روبية لا تزال قائمة. على الرغم من حقيقة أنه عند الحساب لقد قللنا من الاحتمالات 25.000 مرة، كانت النتيجة هي نفسها - يمكن الموافقة على القرض. سيحصل Fedya أيضا على قرض، لكن Lesha، على الرغم من حقيقة أنه يحصل على أكبر عدد ممكن، سيتعين عليه كبح شهيته.
لنرسم رسمًا بيانيًا لهذه الحالة.
الرسم البياني 2 "تصنيف المقترضين"
كود لرسم الرسم البياني
salary = np.arange(60000,240000,20000)
payment = (-w_0-w_1*salary)/w_2
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(salary, payment, color = 'grey', lw = 2, label = '$f(w,x_i)=w_0 + w_1x_{i1} + w_2x_{i2}$')
plt.plot(df[df['Decision'] == 'Approved']['Salary'], df[df['Decision'] == 'Approved']['Payment'],
'o', color ='green', markersize = 12, label = 'Decision - Loan approved')
plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'],
's', color = 'red', markersize = 12, label = 'Decision - Loan refusal')
plt.xlabel('Salary', size = 16)
plt.ylabel('Payment', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
إذن، خطنا المستقيم، تم إنشاؤه وفقًا للدالة ، يفصل بين المقترضين "السيئين" والمقترضين "الصالحين". هؤلاء المقترضون الذين لا تتطابق رغباتهم مع قدراتهم هم فوق الخط (Lesha)، في حين أن أولئك الذين، وفقًا لمعايير نموذجنا، قادرون على سداد القرض، هم تحت الخط (Vasya و Fedya). بمعنى آخر، يمكننا أن نقول هذا: خطنا المباشر يقسم المقترضين إلى فئتين. دعونا نشير إليهم على النحو التالي: إلى الفصل سنقوم بتصنيف هؤلاء المقترضين الذين من المرجح أن يقوموا بسداد القرض على أنهم أو سنقوم بإدراج هؤلاء المقترضين الذين على الأرجح لن يتمكنوا من سداد القرض.
دعونا نلخص الاستنتاجات من هذا المثال البسيط. دعونا نأخذ نقطة واستبدال إحداثيات النقطة في معادلة الخط المقابلة ، فكر في ثلاثة خيارات:
- إذا كانت النقطة تحت الخط وقمنا بتخصيصها للفصل ، ثم قيمة الدالة سوف تكون إيجابية من إلى . وهذا يعني أننا يمكن أن نفترض أن احتمال سداد القرض في حدود . كلما كانت قيمة الدالة أكبر، كلما زاد الاحتمال.
- إذا كانت هناك نقطة فوق خط وقمنا بتعيينها للفئة أو ، فإن قيمة الدالة ستكون سالبة من إلى . ثم سنفترض أن احتمال سداد الديون ضمن وكلما زادت القيمة المطلقة للدالة، زادت ثقتنا.
- أن تكون النقطة على خط مستقيم، على الحد الفاصل بين فئتين. في هذه الحالة قيمة الدالة سوف تكون متساوية واحتمال سداد القرض يساوي .
الآن، دعونا نتخيل أن لدينا ليس عاملين، بل عشرات، وليس ثلاثة، بل آلاف المقترضين. ثم بدلا من الخط المستقيم سيكون لدينا م الأبعاد الطائرة والمعاملات لن يتم إخراجنا من لا شيء، بل سيتم استخلاصه وفقًا لجميع القواعد، وعلى أساس البيانات المتراكمة عن المقترضين الذين قاموا أو لم يسددوا القرض. وبالفعل، لاحظ أننا نقوم الآن باختيار المقترضين باستخدام معاملات معروفة بالفعل . في الواقع، مهمة نموذج الانحدار اللوجستي هي على وجه التحديد تحديد المعلمات ، حيث تكون قيمة وظيفة الخسارة الخسارة اللوجستية سوف تميل إلى الحد الأدنى. ولكن حول كيفية حساب المتجه ، سنتعرف على المزيد في القسم الخامس من المقال. في هذه الأثناء، نعود إلى الأرض الموعودة - إلى مصرفينا وعملائه الثلاثة.
بفضل الوظيفة نحن نعرف من يمكنه الحصول على قرض ومن يجب رفضه. لكن لا يمكنك الذهاب إلى المدير بمثل هذه المعلومات، لأنهم أرادوا أن يحصلوا منا على احتمالية سداد القرض من قبل كل مقترض. ما يجب القيام به؟ الجواب بسيط - نحن بحاجة إلى تحويل الوظيفة بطريقة أو بأخرى ، والتي تقع قيمها في النطاق إلى دالة تقع قيمها في النطاق . وهذه الوظيفة موجودة، وتسمى وظيفة الاستجابة اللوجستية أو تحويل السجل العكسي. يقابل:
دعونا نرى خطوة بخطوة كيف يعمل وظيفة الاستجابة اللوجستية. علماً أننا سنسير في الإتجاه المعاكس أي. سنفترض أننا نعرف قيمة الاحتمال، التي تقع في النطاق من إلى وبعد ذلك سنقوم "بتفكيك" هذه القيمة إلى النطاق الكامل للأرقام من إلى .
03. نشتق وظيفة الاستجابة اللوجستية
الخطوة 1. تحويل قيم الاحتمالية إلى نطاق
أثناء تحويل الوظيفة в وظيفة الاستجابة اللوجستية سنترك محلل الائتمان لدينا بمفرده ونقوم بجولة في مكاتب المراهنات بدلاً من ذلك. لا، بالطبع، لن نضع الرهانات، كل ما يهمنا هو معنى التعبير، على سبيل المثال، الفرصة هي 4 إلى 1. الاحتمالات المألوفة لدى جميع المراهنين هي نسبة "النجاحات" إلى " الفشل”. من حيث الاحتمالات، الاحتمالات هي احتمال وقوع حدث مقسومًا على احتمال عدم وقوع الحدث. دعونا نكتب صيغة احتمال وقوع حدث ما :
حيث - احتمال وقوع حدث، - احتمال عدم وقوع حدث
على سبيل المثال، إذا كان احتمال فوز حصان شاب وقوي ومرح يُدعى "فيتيروك" على امرأة عجوز مترهلة تدعى "ماتيلدا" في السباق يساوي إذن ستكون فرص نجاح "Veterok". к والعكس صحيح، فمع معرفة الاحتمالات، لن يكون من الصعب علينا حساب الاحتمالية :
وهكذا تعلمنا "ترجمة" الاحتمالية إلى فرص تأخذ منها القيم إلى . لنأخذ خطوة أخرى ونتعلم كيفية "ترجمة" الاحتمال إلى خط الأعداد بالكامل إلى .
الخطوة 2. تحويل قيم الاحتمالية إلى نطاق
هذه الخطوة بسيطة جدًا - لنأخذ لوغاريتم الاحتمالات إلى أساس رقم أويلر ونحصل على:
الآن نحن نعلم أنه إذا ، ثم احسب القيمة سيكون الأمر بسيطًا جدًا، علاوة على ذلك، يجب أن يكون إيجابيًا: . هذا صحيح.
بدافع الفضول، دعونا نتحقق مما إذا ، فإننا نتوقع أن نرى قيمة سلبية . نحن نفحص: . صحيح.
الآن نحن نعرف كيفية تحويل قيمة الاحتمال من إلى على طول خط الأعداد بأكمله من إلى . في الخطوة التالية سنفعل العكس.
في الوقت الحالي، نلاحظ أنه وفقًا لقواعد اللوغاريتم، فإن معرفة قيمة الدالة ، يمكنك حساب الاحتمالات:
ستكون طريقة تحديد الاحتمالات هذه مفيدة لنا في الخطوة التالية.
الخطوة 3. دعونا نشتق صيغة لتحديدها
لذلك تعلمنا، مع العلم ، ابحث عن قيم الوظائف . ومع ذلك، في الواقع، نحن بحاجة إلى العكس تمامًا - معرفة القيمة لتجد . للقيام بذلك، دعونا ننتقل إلى مفهوم مثل وظيفة الاحتمالات العكسية، والتي بموجبها:
في هذه المقالة لن نستنتج الصيغة المذكورة أعلاه، ولكننا سوف نتحقق منها باستخدام الأرقام من المثال أعلاه. نحن نعلم أنه مع احتمالات 4 إلى 1 () ، احتمال وقوع الحدث هو 0.8 (). لنقم بالاستبدال: . وهذا يتزامن مع حساباتنا التي أجريت في وقت سابق. هيا لنذهب.
في الخطوة الأخيرة استنتجنا ذلك ، مما يعني أنه يمكنك إجراء استبدال في دالة الاحتمالات العكسية. نحن نحصل:
قسمة كل من البسط والمقام على ، ومن بعد:
فقط في حالة التأكد من أننا لم نرتكب أي خطأ في أي مكان، سنقوم بإجراء فحص صغير آخر. في الخطوة 2، نحن ل قررت ذلك . ثم استبدال القيمة في وظيفة الاستجابة اللوجستية، نتوقع الحصول عليها . نعوض ونحصل على:
تهانينا عزيزي القارئ، لقد اشتقنا للتو واختبرنا وظيفة الاستجابة اللوجستية. دعونا نلقي نظرة على الرسم البياني للوظيفة.
الرسم البياني 3 "وظيفة الاستجابة اللوجستية"
كود لرسم الرسم البياني
import math
def logit (f):
return 1/(1+math.exp(-f))
f = np.arange(-7,7,0.05)
p = []
for i in f:
p.append(logit(i))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(f, p, color = 'grey', label = '$ 1 / (1+e^{-w^Tx_i})$')
plt.xlabel('$f(w,x_i) = w^Tx_i$', size = 16)
plt.ylabel('$p_{i+}$', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
في الأدبيات يمكنك أيضًا العثور على اسم هذه الوظيفة باسم وظيفة السيني. يوضح الرسم البياني بوضوح أن التغيير الرئيسي في احتمالية انتماء كائن ما إلى فئة ما يحدث ضمن نطاق صغير نسبيًا ، من مكان ما إلى .
أقترح العودة إلى محلل الائتمان لدينا ومساعدته في حساب احتمالية سداد القرض، وإلا فإنه يخاطر بالبقاء بدون مكافأة :)
الجدول 2 "المقترضون المحتملون"
كود إنشاء الجدول
proba = []
for i in df['f(w,x)']:
proba.append(round(logit(i),2))
df['Probability'] = proba
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision', 'Probability']]
لذلك، حددنا احتمال سداد القرض. بشكل عام، يبدو أن هذا صحيح.
في الواقع، فإن احتمال أن يتمكن فاسيا، براتب قدره 120.000 ألف روبية، من منح البنك 3.000 روبية شهريًا يقترب من 100٪. بالمناسبة، يجب أن نفهم أنه يمكن للبنك إصدار قرض لـ Lesha إذا كانت سياسة البنك تنص، على سبيل المثال، على إقراض العملاء مع احتمال سداد القرض أكثر من 0.3 على سبيل المثال. إنه فقط في هذه الحالة سيقوم البنك بإنشاء احتياطي أكبر للخسائر المحتملة.
وتجدر الإشارة أيضًا إلى أن نسبة الراتب إلى الدفع لا تقل عن 3 وبهامش 5.000 روبية مأخوذة من السقف. ولذلك، لم نتمكن من استخدام متجه الأوزان في صورته الأصلية . كنا بحاجة إلى تقليل المعاملات بشكل كبير، وفي هذه الحالة قمنا بتقسيم كل معامل على 25.000، أي أننا قمنا في الأساس بتعديل النتيجة. ولكن تم ذلك خصيصًا لتبسيط فهم المادة في المرحلة الأولية. في الحياة، لن نحتاج إلى اختراع المعاملات وتعديلها، بل نحتاج إلى إيجادها. في الأقسام التالية من المقالة سوف نشتق المعادلات التي يتم من خلالها اختيار المعلمات .
04. طريقة المربعات الصغرى لتحديد متجه الأوزان في وظيفة الاستجابة اللوجستية
نحن نعرف بالفعل هذه الطريقة لاختيار ناقل الأوزان كما طريقة المربعات الصغرى (LSM) وفي الواقع، لماذا لا نستخدمها في مسائل التصنيف الثنائي؟ في الواقع، لا شيء يمنعك من الاستخدام MNC، هذه الطريقة فقط في مشاكل التصنيف تعطي نتائج أقل دقة من الخسارة اللوجستية. هناك أساس نظري لذلك. دعونا نلقي نظرة أولاً على مثال واحد بسيط.
لنفترض أن نماذجنا (باستخدام MSE и الخسارة اللوجستية) لقد بدأت بالفعل في اختيار ناقل الأوزان وأوقفنا الحساب في مرحلة ما. لا يهم سواء في المنتصف أو في النهاية أو في البداية، الشيء الرئيسي هو أن لدينا بالفعل بعض قيم متجه الأوزان ولنفترض أنه في هذه الخطوة، متجه الأوزان لكلا النموذجين لا توجد فروق. ثم خذ الأوزان الناتجة واستبدلها بها وظيفة الاستجابة اللوجستية () لبعض الكائنات التي تنتمي إلى الفئة . نحن نفحص حالتين عندما يكون نموذجنا مخطئًا جدًا وفقًا لمتجه الأوزان المحدد والعكس صحيح - النموذج واثق جدًا من أن الكائن ينتمي إلى الفئة . دعونا نرى ما هي الغرامات التي سيتم إصدارها عند الاستخدام MNC и الخسارة اللوجستية.
رمز لحساب العقوبات اعتمادا على وظيفة الخسارة المستخدمة
# класс объекта
y = 1
# вероятность отнесения объекта к классу в соответствии с параметрами w
proba_1 = 0.01
MSE_1 = (y - proba_1)**2
print 'Штраф MSE при грубой ошибке =', MSE_1
# напишем функцию для вычисления f(w,x) при известной вероятности отнесения объекта к классу +1 (f(w,x)=ln(odds+))
def f_w_x(proba):
return math.log(proba/(1-proba))
LogLoss_1 = math.log(1+math.exp(-y*f_w_x(proba_1)))
print 'Штраф Log Loss при грубой ошибке =', LogLoss_1
proba_2 = 0.99
MSE_2 = (y - proba_2)**2
LogLoss_2 = math.log(1+math.exp(-y*f_w_x(proba_2)))
print '**************************************************************'
print 'Штраф MSE при сильной уверенности =', MSE_2
print 'Штраф Log Loss при сильной уверенности =', LogLoss_2
حالة من الخطأ - يقوم النموذج بتعيين كائن لفئة مع احتمال 0,01
عقوبة الاستخدام MNC سوف يكون:
عقوبة الاستخدام الخسارة اللوجستية سوف يكون:
حالة من الثقة القوية - يقوم النموذج بتعيين كائن لفئة مع احتمال 0,99
عقوبة الاستخدام MNC سوف يكون:
عقوبة الاستخدام الخسارة اللوجستية سوف يكون:
يوضح هذا المثال جيدًا أنه في حالة وجود خطأ فادح، فإن دالة الخسارة سجل الخسارة يعاقب النموذج أكثر بكثير من MSE. دعونا الآن نفهم ما هي الخلفية النظرية لاستخدام دالة الخسارة سجل الخسارة في مشاكل التصنيف
05. طريقة الاحتمالية القصوى والانحدار اللوجستي
كما وعدنا في البداية، المقال مليء بالأمثلة البسيطة. يوجد في الاستوديو مثال آخر وضيوف قدامى - المقترضون من البنوك: فاسيا وفيديا وليشا.
فقط في حالة، قبل تطوير المثال، اسمحوا لي أن أذكركم أننا في الحياة نتعامل مع عينة تدريبية من آلاف أو ملايين الكائنات مع عشرات أو مئات الميزات. ومع ذلك، يتم أخذ الأرقام هنا بحيث يمكن وضعها بسهولة في رأس عالم البيانات المبتدئ.
دعنا نعود إلى المثال. لنتخيل أن مدير البنك قرر إصدار قرض لكل محتاج، على الرغم من أن الخوارزمية طلبت منه عدم إصداره إلى ليشا. والآن مر وقت كافي ونعرف أي من الأبطال الثلاثة قام بسداد القرض وأيهم لم يسدد. ما كان متوقعًا: قام فاسيا وفيديا بسداد القرض، لكن ليشا لم تفعل ذلك. لنتخيل الآن أن هذه النتيجة ستكون نموذجًا تدريبيًا جديدًا لنا، وفي الوقت نفسه، يبدو الأمر كما لو أن جميع البيانات المتعلقة بالعوامل المؤثرة على احتمالية سداد القرض (راتب المقترض، حجم الدفعة الشهرية) قد اختفت. ومن ثم، يمكننا، بديهيًا، أن نفترض أن كل ثالث مقترض لا يسدد القرض للبنك، أو بعبارة أخرى، احتمال قيام المقترض التالي بسداد القرض . هذا الافتراض البديهي له تأكيد نظري ويستند إلى طريقة الاحتمالية القصوى، غالبًا ما يطلق عليه في الأدب مبدأ الاحتمالية القصوى.
أولا، دعونا نتعرف على الجهاز المفاهيمي.
احتمال أخذ العينات هو احتمال الحصول على مثل هذه العينة بالضبط، والحصول على هذه الملاحظات/النتائج بالضبط، أي. حاصل ضرب احتمالات الحصول على كل نتيجة من نتائج العينة (على سبيل المثال، ما إذا كان قرض فاسيا وفيديا وليشا قد تم سداده أم لم يتم سداده في نفس الوقت).
وظيفة الاحتمال يربط احتمال العينة بقيم معلمات التوزيع.
في حالتنا، عينة التدريب هي مخطط برنولي المعمم، حيث يأخذ المتغير العشوائي قيمتين فقط: أو . لذلك، يمكن كتابة احتمالية العينة كدالة احتمالية للمعلمة على النحو التالي:
يمكن تفسير الإدخال أعلاه على النحو التالي. الاحتمال المشترك لسداد القرض من قبل Vasya و Fedya يساوي ، احتمال عدم قيام Lesha بسداد القرض يساوي (بما أنه لم يتم سداد القرض)، وبالتالي فإن الاحتمال المشترك لجميع الأحداث الثلاثة متساوي .
طريقة الاحتمالية القصوى هي طريقة لتقدير معلمة غير معروفة عن طريق تعظيم وظائف الاحتمال. في حالتنا، علينا إيجاد هذه القيمة في أي يصل إلى الحد الأقصى.
من أين تأتي الفكرة الفعلية - للبحث عن قيمة معلمة غير معروفة تصل عندها دالة الاحتمال إلى الحد الأقصى؟ تنبع أصول الفكرة من فكرة أن العينة هي المصدر الوحيد للمعرفة المتاحة لنا عن السكان. كل ما نعرفه عن السكان ممثل في العينة. ولذلك، كل ما يمكننا قوله هو أن العينة هي الانعكاس الأكثر دقة للسكان المتاحين لدينا. لذلك، نحن بحاجة إلى العثور على معلمة تصبح فيها العينة المتاحة هي الأكثر احتمالا.
من الواضح أننا نتعامل مع مشكلة تحسين نحتاج فيها إلى إيجاد النقطة القصوى للدالة. للعثور على النقطة القصوى، من الضروري النظر في شرط الدرجة الأولى، أي مساواة مشتق الدالة بالصفر وحل المعادلة فيما يتعلق بالمعلمة المطلوبة. ومع ذلك، قد يكون البحث عن مشتق منتج عدد كبير من العوامل مهمة طويلة، لتجنب ذلك، هناك تقنية خاصة - التحول إلى اللوغاريتم وظائف الاحتمال. لماذا هذا التحول ممكن؟ دعونا ننتبه إلى حقيقة أننا لا نبحث عن الحد الأقصى للدالة نفسها، والنقطة القصوى، أي قيمة المعلمة غير المعروفة في أي يصل إلى الحد الأقصى. عند الانتقال إلى اللوغاريتم، لا تتغير النقطة القصوى (على الرغم من أن الحد الأقصى نفسه سيختلف)، لأن اللوغاريتم هو وظيفة رتيبة.
دعونا، وفقًا لما سبق، نواصل تطوير مثالنا بقروض من Vasya وFedya وLesha. أولا دعونا ننتقل إلى لوغاريتم دالة الاحتمال:
الآن يمكننا بسهولة التمييز بين التعبير بواسطة :
وأخيرًا، لنأخذ الشرط الأول في الاعتبار - حيث نساوي مشتقة الدالة بالصفر:
وبالتالي، فإن تقديرنا البديهي لاحتمال سداد القرض كان مبررا من الناحية النظرية.
عظيم، ولكن ماذا يجب أن نفعل بهذه المعلومات الآن؟ إذا افترضنا أن كل مقترض ثالث لا يعيد الأموال إلى البنك، فإن الأخير سوف يفلس حتما. هذا صحيح، ولكن فقط عند تقييم احتمالية سداد القرض بما يعادل لم نأخذ في الاعتبار العوامل المؤثرة على سداد القرض: راتب المقترض وحجم الدفعة الشهرية. دعونا نتذكر أننا قمنا سابقًا بحساب احتمالية سداد القرض من قبل كل عميل، مع مراعاة هذه العوامل نفسها. ومن المنطقي أننا حصلنا على احتمالات مختلفة عن التساوي الثابت .
دعونا نحدد احتمالية العينات:
كود لحساب احتمالات العينة
from functools import reduce
def likelihood(y,p):
line_true_proba = []
for i in range(len(y)):
ltp_i = p[i]**y[i]*(1-p[i])**(1-y[i])
line_true_proba.append(ltp_i)
likelihood = []
return reduce(lambda a, b: a*b, line_true_proba)
y = [1.0,1.0,0.0]
p_log_response = df['Probability']
const = 2.0/3.0
p_const = [const, const, const]
print 'Правдоподобие выборки при константном значении p=2/3:', round(likelihood(y,p_const),3)
print '****************************************************************************************************'
print 'Правдоподобие выборки при расчетном значении p:', round(likelihood(y,p_log_response),3)
احتمال العينة بقيمة ثابتة :
احتمالية العينة عند حساب احتمالية سداد القرض مع مراعاة العوامل :
تبين أن احتمالية العينة ذات الاحتمالية المحسوبة اعتمادًا على العوامل أعلى من الاحتمالية ذات قيمة الاحتمالية الثابتة. ماذا يعني هذا؟ يشير هذا إلى أن المعرفة بالعوامل جعلت من الممكن تحديد احتمالية سداد القرض لكل عميل بدقة أكبر. لذلك، عند إصدار القرض التالي، سيكون من الأصح استخدام النموذج المقترح في نهاية القسم 3 من المقالة لتقييم احتمالية سداد الديون.
ولكن بعد ذلك، إذا أردنا تعظيم دالة احتمالية العينة، فلماذا لا نستخدم بعض الخوارزميات التي ستنتج احتمالات لـ Vasya و Fedya و Lesha، على سبيل المثال، تساوي 0.99 و0.99 و0.01 على التوالي. ربما تؤدي هذه الخوارزمية أداءً جيدًا في عينة التدريب، لأنها ستجعل قيمة احتمالية العينة أقرب إلى ، ولكن أولاً، من المرجح أن تواجه مثل هذه الخوارزمية صعوبات في القدرة على التعميم، وثانيًا، لن تكون هذه الخوارزمية خطية بالتأكيد. وإذا كانت طرق مكافحة الإفراط في التدريب (قدرة التعميم الضعيفة أيضًا) غير مدرجة بوضوح في خطة هذه المقالة، فلننتقل إلى النقطة الثانية بمزيد من التفصيل. للقيام بذلك، مجرد الإجابة على سؤال بسيط. هل يمكن أن يكون احتمال سداد القرض من قبل Vasya و Fedya هو نفسه، مع الأخذ في الاعتبار العوامل المعروفة لنا؟ من وجهة نظر المنطق السليم، بالطبع لا، لا يمكن ذلك. لذلك سيدفع فاسيا 2.5٪ من راتبه شهريًا لسداد القرض، وفيديا - ما يقرب من 27,8٪. أيضًا في الرسم البياني 2 "تصنيف العميل" نرى أن Vasya أبعد بكثير عن الخط الفاصل بين الفئات من Fedya. وأخيرًا، نعلم أن الدالة بالنسبة لـ Vasya وFedya يأخذان قيمًا مختلفة: 4.24 لـ Vasya و1.0 لـ Fedya. الآن، إذا حصل Fedya، على سبيل المثال، على أمر أكبر أو طلب قرضًا أصغر، فإن احتمالات سداد القرض لـ Vasya و Fedya ستكون متشابهة. وبعبارة أخرى، لا يمكن خداع الاعتماد الخطي. وإذا قمنا بالفعل بحساب الاحتمالات ولم نخرجها من لا شيء، يمكننا أن نقول بأمان أن قيمنا أفضل ما يسمح لنا بتقدير احتمال سداد القرض من قبل كل مقترض، ولكن بما أننا اتفقنا على افتراض أن تحديد المعاملات تم تنفيذه وفقًا لجميع القواعد، ثم سنفترض ذلك - تسمح لنا معاملاتنا بتقديم تقدير أفضل للاحتمال :)
ومع ذلك، فإننا نستطرد. في هذا القسم علينا أن نفهم كيفية تحديد ناقل الأوزان وهو أمر ضروري لتقييم احتمالية سداد القرض من قبل كل مقترض.
دعونا نلخص بإيجاز الترسانة التي نذهب إليها للبحث عن الاحتمالات :
1. نفترض أن العلاقة بين متغير الهدف (قيمة التنبؤ) والعامل المؤثر على النتيجة علاقة خطية. لهذا السبب يتم استخدامه وظيفة الانحدار الخطي الانواع ، حيث يقسم الخط الكائنات (العملاء) إلى فئات и أو (العملاء القادرون على سداد القرض والذين لا يستطيعون). في حالتنا، المعادلة لها الشكل .
2. نستخدم دالة لوغاريتمية معكوسة الانواع لتحديد احتمال وجود كائن ينتمي إلى فئة ما .
3. نحن نعتبر مجموعتنا التدريبية بمثابة تنفيذ لتعميم مخططات برنوليأي أنه يتم إنشاء متغير عشوائي لكل كائن، وهو أمر ذو احتمالية (خاص بكل كائن) يأخذ القيمة 1 ومع الاحتمال - 0.
4. نحن نعرف ما نحتاج إلى تعظيمه دالة احتمالية العينة مع مراعاة العوامل المقبولة حتى تصبح العينة المتاحة هي الأكثر قبولا. وبعبارة أخرى، نحن بحاجة إلى تحديد المعلمات التي ستكون العينة فيها أكثر قبولا. في حالتنا، المعلمة المحددة هي احتمال سداد القرض والتي بدورها تعتمد على معاملات غير معروفة . لذلك نحن بحاجة إلى العثور على مثل هذا المتجه للأوزان ، حيث سيكون احتمال العينة هو الحد الأقصى.
5. نحن نعرف ما يجب تعظيمه وظائف احتمال العينة يمكن استخدامها طريقة الاحتمالية القصوى. ونحن نعرف كل الحيل الصعبة للعمل بهذه الطريقة.
هذه هي الطريقة التي اتضح أنها خطوة متعددة الخطوات :)
تذكر الآن أنه في بداية المقالة أردنا استخلاص نوعين من وظائف الخسارة الخسارة اللوجستية اعتمادًا على كيفية تعيين فئات الكائنات. لقد حدث أنه في مشاكل التصنيف مع فئتين، يتم الإشارة إلى الفئات على أنها и أو . اعتمادًا على التدوين، سيكون للمخرج وظيفة خسارة مقابلة.
الحالة 1. تصنيف الأشياء إلى и
في وقت سابق، عند تحديد احتمالية العينة، تم فيها حساب احتمال سداد الديون من قبل المقترض على أساس العوامل والمعاملات المعطاة ، قمنا بتطبيق الصيغة:
في الواقع هو المعنى وظائف الاستجابة اللوجستية لمتجه معين من الأوزان
إذن لا شيء يمنعنا من كتابة دالة الاحتمالية النموذجية على النحو التالي:
يحدث أنه في بعض الأحيان يكون من الصعب على بعض المحللين المبتدئين أن يفهموا على الفور كيفية عمل هذه الوظيفة. دعونا نلقي نظرة على 4 أمثلة قصيرة من شأنها توضيح كل شيء:
1. إذا (أي، وفقًا لعينة التدريب، ينتمي الكائن إلى الفئة +1)، والخوارزمية الخاصة بنا يحدد احتمال تصنيف كائن إلى فئة يساوي 0.9، فسيتم حساب احتمالية هذه العينة على النحو التالي:
2. إذا و ، فيكون الحساب هكذا:
3. إذا و ، فيكون الحساب هكذا:
4. إذا و ، فيكون الحساب هكذا:
من الواضح أن دالة الاحتمالية سيتم تعظيمها في الحالتين 1 و 3 أو في الحالة العامة - مع القيم التخمينية الصحيحة لاحتمالات تعيين كائن لفئة .
يرجع ذلك إلى حقيقة أنه عند تحديد احتمالية تعيين كائن لفئة ما نحن فقط لا نعرف المعاملات ، ثم سوف نبحث عنهم. كما ذكرنا سابقًا، هذه مشكلة تحسين حيث نحتاج أولاً إلى إيجاد مشتقة دالة الاحتمالية فيما يتعلق بمتجه الأوزان . ومع ذلك، فمن المنطقي أولاً تبسيط المهمة على أنفسنا: سنبحث عن مشتق اللوغاريتم وظائف الاحتمال.
لماذا بعد اللوغاريتم في وظائف الخطأ اللوجستي، قمنا بتغيير العلامة من في . كل شيء بسيط، لأنه في مشاكل تقييم جودة النموذج، من المعتاد تقليل قيمة الوظيفة، وقمنا بضرب الجانب الأيمن من التعبير ب وبناءً على ذلك، بدلًا من التكبير، نقوم الآن بتصغير الدالة.
في الواقع، الآن، أمام أعينكم، تم اشتقاق دالة الخسارة بشق الأنفس - الخسارة اللوجستية لمجموعة التدريب مع فئتين: и .
والآن، لإيجاد المعاملات، علينا فقط إيجاد المشتقة وظائف الخطأ اللوجستي ومن ثم، باستخدام طرق التحسين العددي، مثل نزول التدرج أو نزول التدرج العشوائي، حدد المعاملات الأكثر مثالية . ولكن، نظرًا للحجم الكبير للمقالة، يُقترح إجراء التمايز بنفسك، أو ربما سيكون هذا موضوعًا للمقالة التالية التي تحتوي على الكثير من العمليات الحسابية دون مثل هذه الأمثلة التفصيلية.
الحالة 2. تصنيف الأشياء إلى и
سيكون النهج هنا هو نفسه كما هو الحال مع الفصول الدراسية и ولكن المسار نفسه لإخراج دالة الخسارة الخسارة اللوجستية، سيكون أكثر زخرفة. هيا بنا نبدأ. بالنسبة لوظيفة الاحتمالية، سنستخدم عامل التشغيل "اذا ثم...". وهذا هو، إذا الكائن العاشر ينتمي إلى الفئة ، ثم لحساب احتمالية العينة نستخدم الاحتمال ، إذا كان الكائن ينتمي إلى الفئة ، ثم نعوض في الاحتمال . هذا ما تبدو عليه دالة الاحتمال:
دعونا نصف على أصابعنا كيف يعمل. دعونا نفكر في 4 حالات:
1. إذا и ، فإن احتمال أخذ العينات سوف "يذهب"
2. إذا и ، فإن احتمال أخذ العينات سوف "يذهب"
3. إذا и ، فإن احتمال أخذ العينات سوف "يذهب"
4. إذا и ، فإن احتمال أخذ العينات سوف "يذهب"
من الواضح أنه في الحالتين 1 و3، عندما تم تحديد الاحتمالات بشكل صحيح بواسطة الخوارزمية، وظيفة الاحتمال سيتم تعظيمه، وهذا هو بالضبط ما أردنا الحصول عليه. ومع ذلك، فإن هذا النهج مرهق للغاية وسننظر بعد ذلك في تدوين أكثر إحكاما. لكن أولًا، دعونا نلوغاريتم دالة الاحتمال مع تغيير الإشارة، لأننا الآن سنصغرها.
دعونا نستبدل بدلا من ذلك التعبير :
دعونا نبسط الحد الصحيح ضمن اللوغاريتم باستخدام تقنيات حسابية بسيطة ونحصل على:
الآن حان الوقت للتخلص من المشغل "اذا ثم...". لاحظ أنه عندما يكون الكائن ينتمي إلى الصف ، ثم في التعبير تحت اللوغاريتم، في المقام، مرفوع إلى السلطة ، إذا كان الكائن ينتمي إلى الفئة ، ثم يتم رفع $e$ إلى السلطة . ولذلك، يمكن تبسيط تدوين الدرجة من خلال الجمع بين الحالتين في حالة واحدة: . ثم وظيفة الخطأ اللوجستي سوف يأخذ النموذج:
وفقا لقواعد اللوغاريتم، نقلب الكسر ونضع العلامة "" (ناقص) للوغاريتم نحصل على:
هنا هي وظيفة الخسارة خسارة لوجستية، والذي يتم استخدامه في مجموعة التدريب مع الكائنات المخصصة للفصول الدراسية: и .
حسنًا، في هذه المرحلة أترك إجازتي ونختتم المقال.
المواد المساعدة
1. الأدب
1) تحليل الانحدار التطبيقي / ن. دريبر، ج. سميث - الطبعة الثانية. – م.: المالية والإحصاء، 2 (الترجمة عن الإنجليزية)
2) نظرية الاحتمالات والإحصاء الرياضي / ف. جمورمان – الطبعة التاسعة. - م: الثانوية العامة 9
3) نظرية الاحتمالية / ن. تشيرنوفا - نوفوسيبيرسك: جامعة ولاية نوفوسيبيرسك، 2007
4) تحليلات الأعمال: من البيانات إلى المعرفة / Paklin N. B., Oreshkov V. I. - 2nd ed. — سانت بطرسبرغ: بيتر، 2013
5) علم البيانات علم البيانات من الصفر / جويل غرا - سانت بطرسبرغ: BHV بطرسبرغ، 2017
6) إحصائيات عملية لمتخصصي علوم البيانات / P. Bruce, E. Bruce - سانت بطرسبرغ: BHV بطرسبرغ، 2018
2. محاضرات ودورات (فيديو)
1)
2)
3)
4)
5)
3. مصادر الإنترنت
1)
2)
4)
5)
المصدر: www.habr.com