Bu yazıda biz çevrilmənin nəzəri hesablamalarını təhlil edəcəyik xətti reqressiya funksiyaları в tərs lojit çevrilmə funksiyası (başqa şəkildə logistik cavab funksiyası adlanır). Sonra arsenaldan istifadə edin maksimum ehtimal üsulu, logistik reqressiya modelinə uyğun olaraq itki funksiyasını əldə edirik Logistik zərər, və ya başqa sözlə, logistik reqressiya modelində çəki vektorunun parametrlərinin seçildiyi funksiyanı təyin edəcəyik. .
Məqalənin xülasəsi:
- İki dəyişən arasındakı xətti əlaqəni təkrar edək
- Transformasiya ehtiyacını müəyyən edək xətti reqressiya funksiyaları в logistik cavab funksiyası
- Dönüşümləri və çıxışları həyata keçirək logistik cavab funksiyası
- Parametrləri seçərkən ən kiçik kvadratlar metodunun niyə pis olduğunu anlamağa çalışaq funksiyaları Logistik zərər
- Biz istifadə edirik maksimum ehtimal üsulu müəyyən etmək üçün parametr seçim funksiyaları :
5.1. 1-ci hal: funksiya Logistik zərər sinif təyinatlı obyektlər üçün 0 и 1:
5.2. 2-ci hal: funksiya Logistik zərər sinif təyinatlı obyektlər üçün -1 и +1:
Məqalə bütün hesablamaların şifahi və ya kağız üzərində aparılmasının asan olduğu sadə nümunələrlə doludur, bəzi hallarda kalkulyator tələb oluna bilər. Elə isə hazırlaş :)
Bu məqalə ilk növbədə maşın öyrənməsinin əsasları üzrə ilkin bilik səviyyəsinə malik məlumat alimləri üçün nəzərdə tutulub.
Məqalədə həmçinin qrafiklər və hesablamalar çəkmək üçün kod təqdim olunacaq. Bütün kodlar dildə yazılmışdır piton 2.7. İstifadə olunan versiyanın "yeniliyi" haqqında əvvəlcədən izah edim - bu, məşhur kursdan keçməyin şərtlərindən biridir. Yandex eyni dərəcədə tanınmış onlayn təhsil platformasında Coursera, və güman edildiyi kimi, material bu kurs əsasında hazırlanmışdır.
01. Düz xətt asılılığı
Sual vermək olduqca ağlabatandır - xətti asılılığın və logistik reqresiyanın bununla nə əlaqəsi var?
Bu sadədir! Logistik reqressiya xətti klassifikatora aid olan modellərdən biridir. Sadə sözlə, xətti təsnifatçının vəzifəsi hədəf dəyərləri proqnozlaşdırmaqdır dəyişənlərdən (reqressorlar) . Xüsusiyyətlər arasında asılılıq olduğuna inanılır və hədəf dəyərlər xətti. Klassifikatorun adı belədir - xətti. Təxmini desək, logistik reqressiya modeli xüsusiyyətlər arasında xətti əlaqənin olması fərziyyəsinə əsaslanır. və hədəf dəyərlər . Bu əlaqədir.
Studiyada birinci nümunə var və bu, düzgün desək, tədqiq olunan kəmiyyətlərin düzxətli asılılığı haqqındadır. Məqaləni hazırlayarkən artıq bir çox insanı kənara qoyan bir nümunə ilə qarşılaşdım - cərəyanın gərginlikdən asılılığı (“Tətbiqi reqressiya analizi”, N. Draper, G. Smith). Biz də burada baxacağıq.
Buna görə Ohm qanunu:
Hara - cari güc, - gərginlik, - müqavimət.
Bilməsəydik Ohm qanunu, onda biz asılılığı dəyişdirərək empirik olaraq tapa bilərik və ölçmə , dəstəkləyərkən sabit. Sonra görərik ki, asılılıq qrafiki etibarən başlanğıcdan az-çox düz xətt verir. Biz “az və ya çox” deyirik, çünki əlaqə əslində dəqiq olsa da, ölçmələrimizdə kiçik xətalar ola bilər və buna görə də qrafikdəki nöqtələr tam olaraq xəttə düşməyə bilər, lakin təsadüfi olaraq ətrafına səpələnir.
Qrafik 1 “Asılılıq” etibarən »
Diaqram çəkmə kodu
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. Xətti reqressiya tənliyinin çevrilməsinə ehtiyac
Başqa bir misala baxaq. Təsəvvür edək ki, biz bankda işləyirik və vəzifəmiz müəyyən amillərdən asılı olaraq borcalanın krediti qaytarma ehtimalını müəyyən etməkdir. Tapşırığı asanlaşdırmaq üçün yalnız iki amili nəzərə alacağıq: borcalanın aylıq əmək haqqı və aylıq kreditin ödənilməsi məbləği.
Tapşırıq çox şərtlidir, lakin bu nümunə ilə niyə istifadə etmək üçün kifayət etmədiyini başa düşə bilərik xətti reqressiya funksiyaları, həmçinin funksiya ilə hansı transformasiyaların aparılması lazım olduğunu öyrənin.
Nümunəyə qayıdaq. Belə başa düşülür ki, əmək haqqı nə qədər yüksək olarsa, borcalan krediti qaytarmaq üçün aylıq vəsait ayıra biləcək. Eyni zamanda, müəyyən bir əmək haqqı diapazonu üçün bu əlaqə olduqca xətti olacaqdır. Məsələn, 60.000 rubldan 200.000 rubla qədər əmək haqqı diapazonunu götürək və fərz edək ki, göstərilən əmək haqqı diapazonunda aylıq ödənişin ölçüsünün əmək haqqının ölçüsündən asılılığı xəttidir. Deyək ki, müəyyən edilmiş əmək haqqı diapazonu üçün əmək haqqı-ödəniş nisbətinin 3-dən aşağı düşə bilməyəcəyi və borcalanın ehtiyatında hələ də 5.000 RUR olmalıdır. Və yalnız bu halda, borcalanın banka krediti qaytaracağını güman edəcəyik. Sonra xətti reqressiya tənliyi aşağıdakı formanı alacaq:
hara , , , - əmək haqqı - borcalan, - kredit ödənişi - borcalan.
Tənlikdə əmək haqqı və kredit ödənişinin sabit parametrlərlə əvəz edilməsi Kredit vermək və ya ondan imtina etmək barədə qərar verə bilərsiniz.
İrəliyə baxaraq qeyd edirik ki, verilmiş parametrlərlə xətti reqressiya funksiyası, istifadə olunur logistik cavab funksiyaları kreditin qaytarılması ehtimallarını müəyyən etmək üçün hesablamaları çətinləşdirəcək böyük dəyərlər çıxaracaq. Ona görə də əmsallarımızı, deyək ki, 25.000 min dəfə azaltmaq təklif olunur. Əmsallardakı bu transformasiya kreditin verilməsi qərarını dəyişməyəcək. Gələcək üçün bu məqamı xatırlayaq, amma indi nədən danışdığımızı daha da aydınlaşdırmaq üçün üç potensial borcalanla vəziyyəti nəzərdən keçirək.
Cədvəl 1 “Potensial borcalanlar”
Cədvəl yaratmaq üçün kod
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']]
Cədvəldəki məlumatlara uyğun olaraq, 120.000 RUR maaşı olan Vasya kredit almaq istəyir ki, onu aylıq 3.000 RUR ödəyə bilsin. Biz müəyyən etdik ki, krediti təsdiqləmək üçün Vasyanın maaşı ödənişin məbləğindən üç dəfə çox olmalıdır və hələ də 5.000 RUR qalmalıdır. Vasya bu tələbi ödəyir: . Hətta 106.000 rubl qalır. Baxmayaraq ki, hesablama zamanı şansları azaltdıq 25.000 dəfə, nəticə eyni oldu - kredit təsdiq edilə bilər. Fedya da kredit alacaq, lakin Lesha, ən çox almasına baxmayaraq, iştahını cilovlamalı olacaq.
Bu hal üçün bir qrafik çəkək.
Diaqram 2 “Borcalanların təsnifatı”
Qrafiki çəkmək üçün kod
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()
Beləliklə, funksiyaya uyğun olaraq qurulmuş düz xəttimiz , "pis" borcalanları "yaxşı" olanlardan ayırır. İstəkləri imkanları ilə üst-üstə düşməyən borcalanlar xəttin üstündədirlər (Lesha), bizim modelimizin parametrlərinə görə krediti qaytara bilənlər isə xəttin altındadırlar (Vasya və Fedya). Başqa sözlə, bunu deyə bilərik: bizim birbaşa xəttimiz borcalanları iki sinfə ayırır. Onları aşağıdakı kimi işarə edək: sinfə Krediti qaytarmaq ehtimalı yüksək olan borcalanları kateqoriyalara ayıracağıq və ya Böyük ehtimalla krediti qaytara bilməyəcək borc alanları da daxil edəcəyik.
Bu sadə nümunədən əldə etdiyimiz nəticələri ümumiləşdirək. Gəlin bir məqamı götürək və nöqtənin koordinatlarını xəttin müvafiq tənliyinə əvəz etməklə , üç variantı nəzərdən keçirin:
- Əgər nöqtə xəttin altındadırsa və biz onu sinfə təyin edirik , sonra funksiyanın dəyəri dan müsbət olacaq üzrə . Bu o deməkdir ki, kreditin qaytarılma ehtimalı daxilində olduğunu güman edə bilərik . Funksiya dəyəri nə qədər böyükdürsə, ehtimal bir o qədər yüksəkdir.
- Bir nöqtə xəttin üstündədirsə və biz onu sinfə təyin edirik və ya , onda funksiyanın qiyməti -dən mənfi olacaq üzrə . O zaman borcun qaytarılma ehtimalının daxilində olduğunu güman edəcəyik və funksiyanın mütləq dəyəri nə qədər böyükdürsə, inamımız bir o qədər yüksəkdir.
- Nöqtə düz xətt üzərində, iki sinif arasındakı sərhəddədir. Bu halda, funksiyanın dəyəri bərabər olacaq və kreditin qaytarılma ehtimalı bərabərdir .
İndi təsəvvür edək ki, bizdə iki deyil, onlarla, üç deyil, minlərlə borcalan var. Sonra düz bir xətt yerinə bizdə olacaq m ölçülü müstəvi və əmsallar biz havadan çıxarılmayacağıq, lakin bütün qaydalara uyğun olaraq və krediti ödəmiş və ya ödəməmiş borcalanlar haqqında yığılmış məlumatlar əsasında əldə edəcəyik. Həqiqətən də qeyd edək ki, biz artıq məlum əmsallardan istifadə edərək borcalanları seçirik . Əslində, logistik reqressiya modelinin vəzifəsi parametrləri dəqiq müəyyən etməkdir , burada itki funksiyasının dəyəri Logistik zərər minimuma meyl edəcək. Amma vektorun necə hesablandığı haqqında , məqalənin 5-ci bölməsində daha çox məlumat əldə edəcəyik. Bu arada biz vəd edilmiş torpağa - bankirimizin və onun üç müştərisinin yanına qayıdırıq.
Funksiya sayəsində biz bilirik kimə kredit verilə bilər və kimə imtina edilməlidir. Ancaq belə bir məlumatla direktorun yanına gedə bilməzsiniz, çünki onlar bizdən hər bir borcalan tərəfindən kreditin qaytarılması ehtimalını almaq istəyirdilər. Nə etməli? Cavab sadədir - funksiyanı bir şəkildə çevirməliyik , dəyərləri diapazonda olan dəyərləri diapazonda yerləşəcək funksiyaya . Və belə bir funksiya mövcuddur, ona deyilir logistik cavab funksiyası və ya tərs-logit çevrilməsi. Tanış:
Bunun necə işlədiyini addım-addım görək logistik cavab funksiyası. Qeyd edək ki, biz əks istiqamətdə gedəcəyik, yəni. aralığında olan ehtimal dəyərini bildiyimizi fərz edəcəyik üzrə və sonra biz bu dəyəri bütün nömrələr diapazonuna "açacağıq" üzrə .
03. Logistik cavab funksiyasını əldə edirik
Addım 1. Ehtimal dəyərlərini diapazona çevirin
Funksiyanın çevrilməsi zamanı в logistik cavab funksiyası Biz kredit analitikimizi tək qoyacağıq və əvəzinə bukmeker kontorlarını gəzəcəyik. Xeyr, əlbəttə ki, biz mərc qoymayacağıq, bizi maraqlandıran hər şey ifadənin mənasıdır, məsələn, şans 4-ə 1-dir. Bütün mərc edənlərə tanış olan əmsallar “uğur” və “müvəffəqiyyət” nisbətidir. uğursuzluqlar”. Ehtimal baxımından odds bir hadisənin baş vermə ehtimalının baş verməməsi ehtimalına bölünməsidir. Hadisənin baş vermə şansının düsturunu yazaq :
Hara - hadisənin baş vermə ehtimalı, - bir hadisənin baş verməməsi ehtimalı
Məsələn, “Veterok” ləqəbli gənc, güclü və oynaq atın yarışda “Matilda” adlı qoca və yaltaq qocanı döymə ehtimalı bərabərdirsə. , o zaman "Veterok"un uğur şansı olacaq к və əksinə, ehtimalları bildiyimiz halda, ehtimalı hesablamaq bizim üçün çətin olmayacaq :
Beləliklə, biz ehtimalı dəyərləri götürən şanslara “tərcümə etməyi” öyrəndik üzrə . Gəlin daha bir addım ataq və ehtimalı bütün ədəd xəttinə “tərcümə etməyi” öyrənək üzrə .
Addım 2. Ehtimal dəyərlərini diapazona çevirin
Bu addım çox sadədir - gəlin Euler ədədinin bazasına nisbətlərin loqarifmini götürək. və alırıq:
İndi bilirik ki, əgər , sonra dəyəri hesablayın çox sadə olacaq və üstəlik, müsbət olmalıdır: . Bu doğrudur.
Maraqdan, gəlin yoxlayaq nə olarsa , sonra mənfi bir dəyər görməyi gözləyirik . Yoxlayırıq: . Düzdür.
İndi ehtimal dəyərini necə çevirəcəyimizi bilirik üzrə -dən bütün ədəd xətti boyunca üzrə . Növbəti addımda bunun əksini edəcəyik.
Hələlik qeyd edirik ki, loqarifm qaydalarına uyğun olaraq funksiyanın qiymətini bilərək , siz əmsalları hesablaya bilərsiniz:
Ehtimalları müəyyən etməyin bu üsulu növbəti addımda bizim üçün faydalı olacaq.
Addım 3. Müəyyən etmək üçün düstur çıxaraq
Beləliklə, öyrəndik, bildik , funksiya qiymətlərini tapın . Halbuki, əslində bizə tam əksi lazımdır - dəyəri bilmək tapmaq . Bunu etmək üçün tərs odds funksiyası kimi bir anlayışa müraciət edək, buna görə:
Məqalədə yuxarıdakı düsturdan çıxmayacağıq, ancaq yuxarıdakı nümunədəki rəqəmlərdən istifadə edərək yoxlayacağıq. Biz bilirik ki, 4-ə 1 nisbəti ilə (), hadisənin baş vermə ehtimalı 0.8 (). Gəlin bir əvəz edək: . Bu, əvvəllər apardığımız hesablamalarla üst-üstə düşür. Gəlin davam edək.
Axırıncı mərhələdə biz bunu çıxardıq , bu o deməkdir ki, siz tərs bahis funksiyasında əvəz edə bilərsiniz. Biz əldə edirik:
Həm payı, həm də məxrəci bölün , Sonra:
Hər halda, heç bir yerdə səhv etmədiyimizə əmin olmaq üçün daha bir kiçik yoxlama aparacağıq. 2-ci addımda biz müəyyən etdi ki . Sonra dəyəri əvəz edir logistik cavab funksiyasına daxil olmağı gözləyirik . Əvəz edirik və alırıq:
Təbrik edirik, əziz oxucu, biz indicə logistik cavab funksiyasını əldə etdik və sınaqdan keçirdik. Gəlin funksiyanın qrafikinə baxaq.
Qrafik 3 “Lojistik cavab funksiyası”
Qrafiki çəkmək üçün kod
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()
Ədəbiyyatda bu funksiyanın adı kimi də tapa bilərsiniz sigmoid funksiyası. Qrafik aydın şəkildə göstərir ki, obyektin sinfə aid olma ehtimalında əsas dəyişiklik nisbətən kiçik diapazonda baş verir. , haradansa üzrə .
Mən kredit analitikimizə qayıtmağı və ona kreditin qaytarılma ehtimalını hesablamağa kömək etməyi təklif edirəm, əks halda o, bonussuz qalma riski ilə üzləşir :)
Cədvəl 2 “Potensial borcalanlar”
Cədvəl yaratmaq üçün kod
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']]
Beləliklə, biz kreditin qaytarılma ehtimalını müəyyən etdik. Ümumiyyətlə, bu doğru görünür.
Həqiqətən də, 120.000 RUR maaşı olan Vasyanın hər ay banka 3.000 RUR verə bilmə ehtimalı 100%-ə yaxındır. Yeri gəlmişkən, başa düşməliyik ki, bankın siyasəti, məsələn, kreditin qaytarılma ehtimalı 0.3-dən çox olan müştərilərə kredit verməyi nəzərdə tutursa, bank Leshaya kredit verə bilər. Sadəcə, bu halda bank mümkün itkilər üçün daha böyük ehtiyat yaradacaq.
Onu da qeyd edək ki, maaş-ödəniş nisbəti ən azı 3 və 5.000 RUR marja ilə tavandan götürülüb. Ona görə də biz çəkilər vektorundan ilkin formada istifadə edə bilmədik . Bizə əmsalları xeyli azaltmaq lazım idi və bu halda biz hər əmsalı 25.000 minə böldük, yəni mahiyyət etibarilə nəticəni düzəltdik. Lakin bu, ilkin mərhələdə materialın başa düşülməsini asanlaşdırmaq üçün xüsusi olaraq edilmişdir. Həyatda əmsalları icad etmək və tənzimləmək lazım deyil, onları tapmaq lazımdır. Məqalənin növbəti hissələrində parametrlərin seçildiyi tənlikləri əldə edəcəyik .
04. Çəkinin vektorunun təyini üçün ən kiçik kvadratlar üsulu logistik cavab funksiyasında
Biz artıq çəkilər vektorunu seçmək üçün bu üsulu bilirik Kimi Ən kiçik kvadratlar metodu (LSM) və əslində, niyə biz ondan binar təsnifat problemlərində istifadə etmirik? Həqiqətən, heç bir şey istifadə etməyə mane olmur MNC, təsnifat məsələlərində yalnız bu üsul daha az dəqiq nəticələr verir Logistik zərər. Bunun nəzəri əsası var. Əvvəlcə bir sadə misala baxaq.
Tutaq ki, modellərimiz (istifadə edərək MSE и Logistik zərər) artıq çəkilər vektorunu seçməyə başlamışdır və biz bir addımda hesablamağı dayandırdıq. Ortada, sonunda və ya başlanğıcda fərqi yoxdur, əsas odur ki, artıq çəki vektorunun bəzi dəyərləri var və tutaq ki, bu addımda çəkilər vektoru hər iki model üçün heç bir fərq yoxdur. Sonra ortaya çıxan çəkiləri götürün və onları dəyişdirin logistik cavab funksiyası () sinfə aid olan bəzi obyektlər üçün . Seçilmiş çəki vektoruna uyğun olaraq modelimizin çox səhv olduğu və əksinə iki halı nəzərdən keçiririk - model obyektin sinifə aid olduğuna çox əmindir. . Baxaq, istifadə edərkən hansı cərimələr veriləcək MNC и Logistik zərər.
İstifadə olunan zərər funksiyasından asılı olaraq cərimələri hesablamaq üçün kod
# класс объекта
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
Bir səhv hadisəsi — model obyekti sinifə təyin edir 0,01 ehtimalı ilə
İstifadəyə görə cərimə MNC olacaq:
İstifadəyə görə cərimə Logistik zərər olacaq:
Güclü etimad hadisəsi — model obyekti sinifə təyin edir 0,99 ehtimalı ilə
İstifadəyə görə cərimə MNC olacaq:
İstifadəyə görə cərimə Logistik zərər olacaq:
Bu misal kobud səhv zamanı itki funksiyasının olduğunu yaxşı göstərir Log Loss modeli əhəmiyyətli dərəcədə daha çox cəzalandırır MSE. İndi itki funksiyasından istifadə etmək üçün nəzəri əsasın nə olduğunu anlayaq Log Loss təsnifat problemlərində.
05. Maksimum ehtimal metodu və logistik reqressiya
Məqalə əvvəlində söz verdiyimiz kimi sadə nümunələrlə zəngindir. Studiyada başqa bir nümunə və köhnə qonaqlar var - bank borcalanları: Vasya, Fedya və Lesha.
Hər halda, nümunəni inkişaf etdirməzdən əvvəl sizə xatırlatmaq istərdim ki, həyatda onlarla və ya yüzlərlə xüsusiyyətə malik minlərlə və ya milyonlarla obyektin təlim nümunəsi ilə məşğul oluruq. Ancaq burada rəqəmlər yeni başlayan bir məlumat aliminin başına asanlıqla sığması üçün götürülür.
Nümunəyə qayıdaq. Təsəvvür edək ki, bankın direktoru alqoritmin Leşaya verməməsini deməsinə baxmayaraq, ehtiyacı olan hər kəsə kredit vermək qərarına gəlib. İndi isə kifayət qədər vaxt keçib və biz bilirik ki, üç qəhrəmandan hansı krediti ödəyib, hansı borcunu qaytarmayıb. Nə gözlənilən idi: Vasya və Fedya krediti qaytardılar, lakin Lesha ödəmədi. İndi təsəvvür edək ki, bu nəticə bizim üçün yeni bir təlim nümunəsi olacaq və eyni zamanda, sanki kreditin ödənilməsi ehtimalına təsir edən amillərlə bağlı bütün məlumatlar (borcalanın əmək haqqı, aylıq ödənişin həcmi) itib. O zaman intuitiv olaraq güman edə bilərik ki, hər üçüncü borcalan banka krediti qaytarmır və ya başqa sözlə, növbəti borcalanın krediti qaytarma ehtimalı. . Bu intuitiv fərziyyə nəzəri təsdiqə malikdir və ona əsaslanır maksimum ehtimal üsulu, ədəbiyyatda çox vaxt belə adlanır maksimum ehtimal prinsipi.
Əvvəlcə konseptual aparatla tanış olaq.
Nümunə alma ehtimalı məhz belə bir nümunənin əldə edilməsi, məhz belə müşahidələrin/nəticələrin əldə edilməsi ehtimalıdır, yəni. nümunə nəticələrinin hər birinin əldə edilməsi ehtimallarının məhsulu (məsələn, Vasya, Fedya və Leşanın kreditinin eyni vaxtda ödənilib-ödənilməməsi).
Ehtimal funksiyası seçmə ehtimalını paylama parametrlərinin qiymətləri ilə əlaqələndirir.
Bizim vəziyyətimizdə təlim nümunəsi ümumiləşdirilmiş Bernoulli sxemidir, burada təsadüfi dəyişən yalnız iki qiymət alır: və ya . Buna görə də nümunə ehtimalı parametrin ehtimal funksiyası kimi yazıla bilər belədir:
Yuxarıdakı giriş aşağıdakı kimi şərh edilə bilər. Vasya və Fedyanın krediti qaytarma ehtimalı bərabərdir , Leshanın krediti ÖDƏMƏYƏCƏYİ ehtimalı bərabərdir (kreditin qaytarılması baş vermədiyi üçün), buna görə də hər üç hadisənin birgə ehtimalı bərabərdir .
Maksimum ehtimal üsulu naməlum parametri maksimumlaşdırmaqla qiymətləndirmək üsuludur ehtimal funksiyaları. Bizim vəziyyətimizdə belə bir dəyəri tapmaq lazımdır hansı maksimuma çatır.
Faktiki ideya haradan gəlir - ehtimal funksiyasının maksimuma çatdığı naməlum parametrin dəyərini axtarmaq? İdeyanın mənşəyi nümunənin əhali haqqında bizim üçün mövcud olan yeganə bilik mənbəyi olması fikrindən irəli gəlir. Əhali haqqında bildiyimiz hər şey nümunədə təmsil olunur. Buna görə də deyə bilərik ki, nümunə bizim əlimizdə olan əhalinin ən dəqiq əksidir. Buna görə də, mövcud nümunənin ən çox ehtimal olunduğu parametri tapmalıyıq.
Aydındır ki, biz funksiyanın ekstremum nöqtəsini tapmalı olduğumuz optimallaşdırma problemi ilə məşğul oluruq. Ekstremum nöqtəsini tapmaq üçün birinci dərəcəli şərti nəzərə almaq, yəni funksiyanın törəməsini sıfıra bərabərləşdirmək və tənliyi istənilən parametrə görə həll etmək lazımdır. Bununla birlikdə, çox sayda amillərin məhsulunun törəməsini axtarmaq uzun bir iş ola bilər, bunun qarşısını almaq üçün xüsusi bir texnika var - loqarifmaya keçid ehtimal funksiyaları. Niyə belə bir keçid mümkündür? Diqqət edək ki, biz funksiyanın özünün ekstremumunu axtarmırıq, və ekstremum nöqtəsi, yəni naməlum parametrin qiyməti hansı maksimuma çatır. Loqarifmə keçərkən ekstremum nöqtəsi dəyişmir (baxmayaraq ki, ekstremumun özü fərqli olacaq), çünki loqarifm monoton funksiyadır.
Yuxarıda göstərilənlərə uyğun olaraq, nümunəmizi Vasya, Fedya və Leshadan kreditlərlə inkişaf etdirməyə davam edək. Əvvəlcə keçək ehtimal funksiyasının loqarifmi:
İndi ifadəni asanlıqla fərqləndirə bilərik :
Və nəhayət, birinci dərəcəli şərti nəzərdən keçirin - funksiyanın törəməsini sıfıra bərabərləşdiririk:
Beləliklə, kreditin qaytarılması ehtimalının intuitiv təxminimiz nəzəri cəhətdən əsaslandırıldı.
Əla, amma indi bu məlumatla nə etməliyik? Hesab etsək ki, hər üçüncü borcalan pulu banka qaytarmır, o zaman ikincinin müflis olması qaçılmazdır. Düzdür, ancaq kreditin geri qaytarılma ehtimalını qiymətləndirərkən Biz kreditin qaytarılmasına təsir edən amilləri nəzərə almadıq: borcalanın əmək haqqı və aylıq ödənişin ölçüsü. Xatırlayaq ki, əvvəllər biz eyni amilləri nəzərə alaraq hər bir müştəri tərəfindən kreditin qaytarılma ehtimalını hesablamışdıq. Sabit bərabərdən fərqli ehtimallar əldə etməyimiz məntiqlidir .
Nümunələrin ehtimalını müəyyən edək:
Nümunə ehtimallarının hesablanması üçün kod
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)
Sabit dəyərdə nümunə ehtimalı :
Faktorlar nəzərə alınmaqla kreditin ödənilməsi ehtimalının hesablanması zamanı nümunə ehtimalı :
Faktorlardan asılı olaraq hesablanmış ehtimalı olan nümunənin ehtimalının sabit ehtimal dəyəri olan ehtimaldan daha yüksək olduğu ortaya çıxdı. Bu nə deməkdir? Bu, faktorlar haqqında biliklərin hər bir müştəri üçün kreditin qaytarılması ehtimalını daha dəqiq seçməyə imkan verdiyini göstərir. Ona görə də növbəti krediti verərkən borcun ödənilməsi ehtimalının qiymətləndirilməsi üçün maddənin 3-cü bölməsinin sonunda təklif olunan modeldən istifadə etmək daha düzgün olardı.
Ancaq sonra, maksimuma çatdırmaq istəyirik nümunə ehtimal funksiyası, onda niyə Vasya, Fedya və Leşa üçün ehtimallar yaradacaq bəzi alqoritmlərdən istifadə etməyək, məsələn, müvafiq olaraq 0.99, 0.99 və 0.01-ə bərabərdir. Ola bilsin ki, belə bir alqoritm təlim nümunəsində yaxşı çıxış edəcək, çünki bu, nümunənin ehtimal dəyərini yaxınlaşdıracaq. , lakin, birincisi, belə bir alqoritm çox güman ki, ümumiləşdirmə qabiliyyəti ilə çətinlik çəkəcək, ikincisi, bu alqoritm mütləq xətti olmayacaqdır. Həddindən artıq məşqlə mübarizə üsulları (eyni dərəcədə zəif ümumiləşdirmə qabiliyyəti) bu məqalənin planına açıq şəkildə daxil edilməyibsə, ikinci nöqtəni daha ətraflı nəzərdən keçirək. Bunun üçün sadə bir suala cavab vermək kifayətdir. Bizə məlum olan amilləri nəzərə alsaq, Vasya ilə Fedyanın krediti qaytarma ehtimalı eyni ola bilərmi? Sağlam məntiq baxımından, təbii ki, yox, ola bilməz. Beləliklə, Vasya krediti ödəmək üçün ayda maaşının 2.5%, Fedya isə demək olar ki, 27,8% ödəyəcək. Həmçinin “Müştəri təsnifatı” 2-ci qrafada biz görürük ki, Vasya sinifləri ayıran xəttdən Fedya ilə müqayisədə xeyli uzaqdadır. Və nəhayət, biz bilirik ki, funksiyası Vasya və Fedya üçün fərqli dəyərlər qəbul edir: Vasya üçün 4.24 və Fedya üçün 1.0. İndi, məsələn, Fedya daha böyük bir sifariş qazansa və ya daha kiçik bir borc istəsəydi, Vasya və Fedya üçün kreditin qaytarılması ehtimalları oxşar olardı. Başqa sözlə, xətti asılılığı aldatmaq olmaz. Və əgər ehtimalları həqiqətən hesablasaq , və onları havadan çıxarmadıq, biz əminliklə deyə bilərik ki, bizim dəyərlərimizdir Ən yaxşısı, hər bir borcalan tərəfindən kreditin ödənilməsi ehtimalını təxmin etməyə imkan verir, lakin biz əmsalların müəyyən edilməsini güman etməyə razılaşdığımız üçün bütün qaydalara uyğun həyata keçirildi, onda biz belə güman edəcəyik - əmsallarımız ehtimalı daha yaxşı qiymətləndirməyə imkan verir :)
Bununla belə, biz kənara çəkilirik. Bu bölmədə çəkilərin vektorunun necə təyin olunduğunu başa düşməliyik , hər bir borcalan tərəfindən kreditin qaytarılması ehtimalını qiymətləndirmək üçün zəruri olan.
Bahisləri axtarmaq üçün hansı arsenaldan istifadə etdiyimizi qısaca ümumiləşdirək :
1. Hədəf dəyişən (proqnozlaşdırma dəyəri) ilə nəticəyə təsir edən amil arasındakı əlaqənin xətti olduğunu fərz edirik. Bu səbəbdən istifadə olunur xətti reqressiya funksiyası mehriban , xətti obyektləri (müştəriləri) siniflərə bölür и və ya (krediti qaytara bilən və ödəyə bilməyən müştərilər). Bizim vəziyyətimizdə tənliyin forması var .
2. İstifadə edirik tərs logit funksiyası mehriban obyektin sinfə aid olma ehtimalını təyin etmək .
3. Biz öz təlim kompleksimizi ümumiləşdirilmişin həyata keçirilməsi hesab edirik Bernoulli sxemləri, yəni hər bir obyekt üçün ehtimalla təsadüfi dəyişən yaradılır (hər obyekt üçün özünəməxsus) 1 və ehtimalla qiymətini alır - 0.
4. Biz nəyi maksimuma çatdırmaq lazım olduğunu bilirik nümunə ehtimal funksiyası mövcud nümunənin ən inandırıcı olması üçün qəbul edilmiş amilləri nəzərə alaraq. Başqa sözlə, nümunənin ən inandırıcı olacağı parametrləri seçməliyik. Bizim vəziyyətimizdə seçilmiş parametr kreditin ödənilməsi ehtimalıdır , bu da öz növbəsində naməlum əmsallardan asılıdır . Beləliklə, biz çəkilərin belə vektorunu tapmaq lazımdır , bu zaman nümunənin ehtimalı maksimum olacaqdır.
5. Biz nəyi maksimuma çatdıracağımızı bilirik Nümunə ehtimal funksiyaları istifadə edə bilərsiniz maksimum ehtimal üsulu. Və biz bu üsulla işləmək üçün bütün çətin fəndləri bilirik.
Çox addımlı bir hərəkət belə çıxır :)
İndi xatırlayın ki, məqalənin əvvəlində iki növ itki funksiyasını əldə etmək istədik Logistik zərər obyekt siniflərinin necə təyin olunmasından asılı olaraq. Belə oldu ki, iki sinifli təsnifat məsələlərində siniflər kimi işarələnir и və ya . Qeyddən asılı olaraq, çıxış müvafiq itki funksiyasına malik olacaqdır.
Hal 1. Obyektlərin təsnifatı и
Əvvəllər, borcalan tərəfindən borcun ödənilməsi ehtimalının faktorlar və verilmiş əmsallar əsasında hesablandığı nümunənin ehtimalı müəyyən edilərkən , formula tətbiq etdik:
Həqiqətən mənasıdır logistik cavab funksiyaları verilmiş çəki vektoru üçün
Sonra nümunə ehtimal funksiyasını aşağıdakı kimi yazmağa heç nə mane olmur:
Belə olur ki, bəzən bəzi təcrübəsiz analitiklər üçün bu funksiyanın necə işlədiyini dərhal başa düşmək çətindir. İşi aydınlaşdıracaq 4 qısa nümunəyə baxaq:
1. Əgər (yəni təlim nümunəsinə görə obyekt +1 sinifinə aiddir) və alqoritmimiz obyektin sinifə təsnifləşdirilməsi ehtimalını müəyyən edir 0.9-a bərabər olarsa, bu nümunə ehtimalı aşağıdakı kimi hesablanacaqdır:
2. Əgər Və , onda hesablama belə olacaq:
3. Əgər Və , onda hesablama belə olacaq:
4. Əgər Və , onda hesablama belə olacaq:
Aydındır ki, ehtimal funksiyası 1 və 3-cü hallarda və ya ümumi vəziyyətdə - bir obyektin sinifə təyin edilməsi ehtimallarının düzgün təxmin edilən dəyərləri ilə maksimuma çatdırılacaqdır. .
Ona görə ki, obyektin sinifə təyin edilməsi ehtimalını təyin edərkən Biz sadəcə əmsalları bilmirik , onda biz onları axtaracağıq. Yuxarıda qeyd edildiyi kimi, bu optimallaşdırma problemidir, burada əvvəlcə çəkilər vektoru ilə bağlı ehtimal funksiyasının törəməsini tapmalıyıq. . Ancaq əvvəlcə özümüz üçün tapşırığı sadələşdirməyin mənası var: loqarifmin törəməsini axtaracağıq. ehtimal funksiyaları.
Niyə loqarifmadan sonra, in logistik səhv funksiyaları, işarəsini dəyişdirdik haqqında . Hər şey sadədir, çünki modelin keyfiyyətinin qiymətləndirilməsi problemlərində funksiyanın dəyərini minimuma endirmək adətdir, biz ifadənin sağ tərəfini vurduq. və buna uyğun olaraq, maksimize etmək əvəzinə, indi funksiyanı minimuma endiririk.
Əslində, indi, gözlərinizin önündə, itki funksiyası əziyyətlə əldə edilmişdir - Logistik zərər iki sinifdən ibarət təlim dəsti üçün: и .
İndi əmsalları tapmaq üçün sadəcə törəməni tapmaq lazımdır logistik səhv funksiyaları və sonra gradient eniş və ya stoxastik gradient eniş kimi ədədi optimallaşdırma metodlarından istifadə edərək ən optimal əmsalları seçin . Ancaq məqalənin kifayət qədər həcmini nəzərə alaraq, diferensiasiyanı özünüz həyata keçirmək təklif olunur və ya bəlkə də bu, belə ətraflı nümunələr olmadan çoxlu hesabla növbəti məqalə üçün bir mövzu olacaq.
Hal 2. Obyektlərin təsnifatı и
Burada yanaşma dərslərlə eyni olacaq и , lakin zərər funksiyasının çıxışına gedən yolun özü Logistik zərər, daha bəzəkli olacaq. Gəlin başlayaq. Ehtimal funksiyası üçün operatordan istifadə edəcəyik "əgər... onda..."... Yəni əgər ci obyekt sinifə aiddir , sonra nümunənin ehtimalını hesablamaq üçün ehtimaldan istifadə edirik , əgər obyekt sinifə aiddirsə , sonra biz ehtimalı əvəz edirik . Ehtimal funksiyası belə görünür:
Bunun necə işlədiyini barmaqlarımızla təsvir edək. 4 halı nəzərdən keçirək:
1. Əgər и , onda seçmə ehtimalı "gedəcək"
2. Əgər и , onda seçmə ehtimalı "gedəcək"
3. Əgər и , onda seçmə ehtimalı "gedəcək"
4. Əgər и , onda seçmə ehtimalı "gedəcək"
Aydındır ki, 1-ci və 3-cü hallarda ehtimallar alqoritmlə düzgün müəyyən edildikdə, ehtimal funksiyası maksimuma çatdırılacaq, yəni bizim əldə etmək istədiyimiz məhz budur. Bununla belə, bu yanaşma olduqca mürəkkəbdir və bundan sonra daha yığcam notasiyanı nəzərdən keçirəcəyik. Ancaq əvvəlcə işarənin dəyişməsi ilə ehtimal funksiyasını loqarifm edək, çünki indi onu minimuma endirəcəyik.
Əvəzinə əvəz edək ifadəsi :
Sadə arifmetik üsullardan istifadə edərək loqarifm altında düzgün termini sadələşdirək və əldə edək:
İndi operatordan qurtulmağın vaxtıdır "əgər... onda...". Nəzərə alın ki, bir obyekt sinfinə aiddir , sonra loqarifmin altındakı ifadədə, məxrəcdə, hakimiyyətə yüksəldi , əgər obyekt sinifə aiddirsə , sonra $e$ gücə qaldırılır . Buna görə də, dərəcə üçün qeyd hər iki halı birinə birləşdirərək sadələşdirilə bilər: . Sonra logistik səhv funksiyası forma alacaq:
Loqarifm qaydalarına uyğun olaraq, kəsri çeviririk və işarəni qoyuruq "" (mənfi) loqarifm üçün alırıq:
Budur itki funksiyası logistik itki, siniflərə təyin edilmiş obyektlərlə təlim dəstində istifadə olunur: и .
Yaxşı, bu məqamda məzuniyyətimi alıram və məqaləni yekunlaşdırırıq.
Köməkçi materiallar
1. Ədəbiyyat
1) Tətbiqi reqressiya təhlili / N. Draper, G. Smith - 2-ci nəşr. – M.: Maliyyə və Statistika, 1986 (ingilis dilindən tərcümə)
2) Ehtimal nəzəriyyəsi və riyazi statistika / V.E. Gmurman - 9-cu nəşr. - M.: Ali məktəb, 2003
3) Ehtimal nəzəriyyəsi / N.İ. Chernova - Novosibirsk: Novosibirsk Dövlət Universiteti, 2007
4) Biznes analitikası: məlumatdan biliyə / Paklin N. B., Oreshkov V. I. - 2-ci nəşr. - Sankt-Peterburq: Peter, 2013
5) Data Science Sıfırdan Data Science / Joel Gras - Sankt-Peterburq: BHV Peterburq, 2017
6) Data Science mütəxəssisləri üçün praktiki statistika / P. Bruce, E. Bruce - Sankt-Peterburq: BHV Peterburq, 2018
2. Mühazirələr, kurslar (video)
1)
2)
3)
4)
5)
3. İnternet mənbələri
1)
2)
4)
7)
8)
Mənbə: www.habr.com