Дъвчене на логистична регресия

Дъвчене на логистична регресия

В тази статия ще анализираме теоретичните изчисления на трансформацията функции на линейна регресия в функция за обратна логит трансформация (иначе наричана функция на логистичен отговор). След това, използвайки арсенала метод на максимална вероятност, в съответствие с логистичния регресионен модел, извеждаме функцията на загубата Логистична загуба, или с други думи, ще дефинираме функция, с която се избират параметрите на тегловния вектор в логистичния регресионен модел Дъвчене на логистична регресия.

Описание на статията:

  1. Нека повторим линейната зависимост между две променливи
  2. Нека идентифицираме необходимостта от трансформация функции на линейна регресия Дъвчене на логистична регресия в функция за логистичен отговор Дъвчене на логистична регресия
  3. Нека извършим трансформациите и изхода функция за логистичен отговор
  4. Нека се опитаме да разберем защо методът на най-малките квадрати е лош при избора на параметри Дъвчене на логистична регресия функции Логистична загуба
  5. употреба метод на максимална вероятност за определяне функции за избор на параметри Дъвчене на логистична регресия:

    5.1. Случай 1: функция Логистична загуба за обекти с класови обозначения 0 и 1:

    Дъвчене на логистична регресия

    5.2. Случай 2: функция Логистична загуба за обекти с класови обозначения -1 и +1:

    Дъвчене на логистична регресия


Статията е пълна с прости примери, в които всички изчисления се правят лесно устно или на хартия; в някои случаи може да се наложи калкулатор. Така че се пригответе :)

Тази статия е предназначена предимно за специалисти по данни с начално ниво на познания в основите на машинното обучение.

Статията също така ще предостави код за чертане на графики и изчисления. Целият код е написан на езика python 2.7. Позволете ми да обясня предварително за „новостта“ на използваната версия - това е едно от условията за преминаване на добре познатия курс от Yandex на също толкова добре позната платформа за онлайн обучение Coursera, и както може да се предположи, материалът е подготвен въз основа на този курс.

01. Праволинейна зависимост

Съвсем резонно е да си зададем въпроса - какво общо имат линейната зависимост и логистичната регресия?

Просто е! Логистичната регресия е един от моделите, които принадлежат към линейния класификатор. С прости думи, задачата на линейния класификатор е да прогнозира целевите стойности Дъвчене на логистична регресия от променливи (регресори) Дъвчене на логистична регресия. Смята се, че зависимостта между характеристиките Дъвчене на логистична регресия и целеви стойности Дъвчене на логистична регресия линеен. Оттук и името на класификатора - линеен. Казано много грубо, логистичният регресионен модел се основава на предположението, че има линейна връзка между характеристиките Дъвчене на логистична регресия и целеви стойности Дъвчене на логистична регресия. Това е връзката.

Има първия пример в студиото и той, правилно, е за праволинейната зависимост на изследваните величини. В процеса на подготовка на статията попаднах на пример, който вече изнерви много хора - зависимостта на тока от напрежението (“Приложен регресионен анализ”, Н. Дрейпър, Г. Смит). Ще го разгледаме и тук.

Според Закон на Ом:

Дъвчене на логистична регресияКъдето Дъвчене на логистична регресия - сила на тока, Дъвчене на логистична регресия - волтаж, Дъвчене на логистична регресия - съпротива.

Ако не знаехме Закон на Ом, тогава можем да намерим зависимостта емпирично чрез промяна Дъвчене на логистична регресия и измерване Дъвчене на логистична регресия, докато поддържа Дъвчене на логистична регресия фиксирани. Тогава ще видим, че графиката на зависимостта Дъвчене на логистична регресия от Дъвчене на логистична регресия дава повече или по-малко права линия през началото. Казваме „повече или по-малко“, защото въпреки че връзката всъщност е точна, нашите измервания може да съдържат малки грешки и следователно точките на графиката може да не попадат точно на линията, а ще бъдат разпръснати около нея произволно.

Графика 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 RUR до 3 5.000 RUR и приемем, че в посочения диапазон на заплатите зависимостта на размера на месечното плащане от размера на заплатата е линейна. Да кажем, че за посочения диапазон от заплати беше разкрито, че съотношението заплата към плащане не може да падне под XNUMX и кредитополучателят все още трябва да има резерв от XNUMX рубли. И само в този случай ще приемем, че кредитополучателят ще изплати заема на банката. Тогава уравнението на линейната регресия ще приеме формата:

Дъвчене на логистична регресия

където Дъвчене на логистична регресия, Дъвчене на логистична регресия, Дъвчене на логистична регресия, Дъвчене на логистична регресия - заплата Дъвчене на логистична регресия-ти кредитополучател, Дъвчене на логистична регресия - плащане на заема Дъвчене на логистична регресия-ти кредитополучател.

Заместване на заплата и плащане на кредит с фиксирани параметри в уравнението Дъвчене на логистична регресия Можете да решите дали да издадете или да откажете заем.

Гледайки напред, отбелязваме, че с дадените параметри Дъвчене на логистична регресия функция на линейна регресия, използвано в функции за логистичен отговор ще произведе големи стойности, които ще усложнят изчисленията за определяне на вероятностите за изплащане на заема. Затова се предлага да намалим нашите коефициенти, да речем, 25.000 XNUMX пъти. Тази трансформация в коефициентите няма да промени решението за издаване на заем. Нека запомним тази точка за в бъдеще, но сега, за да стане още по-ясно за какво говорим, нека разгледаме ситуацията с трима потенциални кредитополучатели.

Таблица 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 рубли. Установихме, че за да одобрим заема, заплатата на Вася трябва да надвишава три пъти сумата на плащането и все още трябва да остават XNUMX RUR. Вася отговаря на това изискване: Дъвчене на логистична регресия. Остават дори 106.000 XNUMX RUR. Въпреки факта, че при изчисляване Дъвчене на логистична регресия намалихме коефициентите Дъвчене на логистична регресия 25.000 XNUMX пъти, резултатът беше един и същ - кредитът може да бъде одобрен. Федя също ще получи заем, но Леша, въпреки факта, че получава най-много, ще трябва да ограничи апетита си.

Нека начертаем графика за този случай.

Графика 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()

И така, нашата права линия, конструирана в съответствие с функцията Дъвчене на логистична регресия, разделя „лошите“ кредитополучатели от „добрите“. Тези кредитополучатели, чиито желания не съвпадат с техните възможности, са над чертата (Леша), докато тези, които според параметрите на нашия модел могат да изплатят заема, са под чертата (Вася и Федя). С други думи, можем да кажем следното: нашата директна линия разделя кредитополучателите на два класа. Нека ги обозначим по следния начин: към клас Дъвчене на логистична регресия Ще класифицираме онези кредитополучатели, които е най-вероятно да изплатят заема като Дъвчене на логистична регресия или Дъвчене на логистична регресия Ще включим онези кредитополучатели, които най-вероятно няма да могат да изплатят заема.

Нека обобщим изводите от този прост пример. Нека вземем точка Дъвчене на логистична регресия и заместване на координатите на точката в съответното уравнение на правата Дъвчене на логистична регресия, разгледайте три варианта:

  1. Ако точката е под линията и я присвояваме на класа Дъвчене на логистична регресия, след това стойността на функцията Дъвчене на логистична регресия ще бъде положителен от Дъвчене на логистична регресия до Дъвчене на логистична регресия. Това означава, че можем да приемем, че вероятността за изплащане на заема е в рамките Дъвчене на логистична регресия. Колкото по-голяма е стойността на функцията, толкова по-голяма е вероятността.
  2. Ако точка е над линия и я присвояваме на класа Дъвчене на логистична регресия или Дъвчене на логистична регресия, тогава стойността на функцията ще бъде отрицателна от Дъвчене на логистична регресия до Дъвчене на логистична регресия. Тогава ще приемем, че вероятността за изплащане на дълга е в рамките Дъвчене на логистична регресия и колкото по-голяма е абсолютната стойност на функцията, толкова по-висока е нашата увереност.
  3. Точката е на права линия, на границата между два класа. В този случай стойността на функцията Дъвчене на логистична регресия ще бъдат равни Дъвчене на логистична регресия и вероятността за изплащане на заема е равна на Дъвчене на логистична регресия.

Сега нека си представим, че имаме не два фактора, а десетки и не трима, а хиляди кредитополучатели. Тогава вместо права линия ще имаме m-измерен равнина и коефициенти Дъвчене на логистична регресия няма да бъдем извадени от нищото, а изведени по всички правила и на базата на натрупани данни за кредитополучателите, които са или не са погасили кредита. И наистина, имайте предвид, че сега избираме кредитополучатели, като използваме вече известни коефициенти Дъвчене на логистична регресия. Всъщност задачата на логистичния регресионен модел е именно да определи параметрите Дъвчене на логистична регресия, при която стойността на функцията на загубите Логистична загуба ще клони към минимума. Но за това как се изчислява векторът Дъвчене на логистична регресия, ще разберем повече в 5-ти раздел на статията. Междувременно се връщаме в обетованата земя – при нашия банкер и тримата му клиенти.

Благодарение на функцията Дъвчене на логистична регресия ние знаем на кого може да се даде заем и на кого трябва да се откаже. Но не можете да отидете при директора с такава информация, защото те искаха да получат от нас вероятността за изплащане на заема от всеки кредитополучател. Какво да правя? Отговорът е прост - трябва по някакъв начин да трансформираме функцията Дъвчене на логистична регресия, чиито стойности са в диапазона Дъвчене на логистична регресия към функция, чиито стойности ще лежат в диапазона Дъвчене на логистична регресия. И такава функция съществува, тя се нарича функция на логистичния отговор или обратна логит трансформация. Среща:

Дъвчене на логистична регресия

Нека видим стъпка по стъпка как работи функция за логистичен отговор. Имайте предвид, че ще вървим в обратната посока, т.е. ще приемем, че знаем стойността на вероятността, която се намира в диапазона от Дъвчене на логистична регресия до Дъвчене на логистична регресия и след това ще „развием“ тази стойност до целия диапазон от числа от Дъвчене на логистична регресия до Дъвчене на логистична регресия.

03. Извеждаме функцията на логистичния отговор

Стъпка 1. Преобразувайте стойностите на вероятността в диапазон Дъвчене на логистична регресия

По време на трансформацията на функцията Дъвчене на логистична регресия в функция за логистичен отговор Дъвчене на логистична регресия Ще оставим нашия кредитен анализатор на мира и вместо това ще направим обиколка на букмейкърите. Не, разбира се, няма да правим залози, всичко, което ни интересува тук е значението на израза, например шансът е 4 към 1. Коефициентът, познат на всички залагащи, е съотношението на „успехите“ към „ неуспехи”. От гледна точка на вероятностите коефициентите са вероятността да се случи събитие, разделена на вероятността събитието да не се случи. Нека напишем формулата за шанса за възникване на събитие Дъвчене на логистична регресия:

Дъвчене на логистична регресия

Където Дъвчене на логистична регресия - вероятност за настъпване на събитие, Дъвчене на логистична регресия — вероятност дадено събитие да НЕ се случи

Например, ако вероятността млад, силен и игрив кон с прякор „Ветерок“ да победи на състезание стара и отпусната старица на име „Матилда“ е равна на Дъвчене на логистична регресия, тогава шансовете за успех на "Ветерок" ще бъдат Дъвчене на логистична регресия к Дъвчене на логистична регресия Дъвчене на логистична регресия и обратно, знаейки коефициентите, няма да ни е трудно да изчислим вероятността Дъвчене на логистична регресия:

Дъвчене на логистична регресия

По този начин се научихме да „превеждаме“ вероятността в шансове, които вземат стойности от Дъвчене на логистична регресия до Дъвчене на логистична регресия. Нека направим още една стъпка и се научим да „превеждаме“ вероятността към цялата числова линия от Дъвчене на логистична регресия до Дъвчене на логистична регресия.

Стъпка 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 RUR да може да дава 100 RUR на банката всеки месец е близо до 0.3%. Между другото, трябва да разберем, че банката може да издаде заем на Леша, ако политиката на банката предвижда например кредитиране на клиенти с вероятност за изплащане на заема над, да речем, XNUMX. Просто в този случай банката ще създаде по-голям резерв за евентуални загуби.

Трябва също да се отбележи, че съотношението заплата към плащане от най-малко 3 и с марж от 5.000 RUR е взето от тавана. Следователно не можахме да използваме вектора на теглата в оригиналната му форма Дъвчене на логистична регресия. Трябваше да намалим значително коефициентите и в този случай разделихме всеки коефициент на 25.000 XNUMX, тоест по същество коригирахме резултата. Но това беше направено специално, за да се опрости разбирането на материала в началния етап. В живота няма да има нужда да измисляме и настройваме коефициенти, а да ги намираме. В следващите раздели на статията ще изведем уравненията, с които се избират параметрите Дъвчене на логистична регресия.

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. Метод на максималното правдоподобие и логистична регресия

Както беше обещано в началото, статията е пълна с прости примери. В студиото има друг пример и стари гости - банкови кредитополучатели: Вася, Федя и Леша.

За всеки случай, преди да развия примера, позволете ми да ви напомня, че в живота си имаме работа с обучителна извадка от хиляди или милиони обекти с десетки или стотици функции. Тук обаче числата са взети така, че лесно да се поберат в главата на начинаещ учен по данни.

Да се ​​върнем към примера. Нека си представим, че директорът на банката реши да издаде заем на всеки нуждаещ се, въпреки факта, че алгоритъмът му каза да не го издава на Леша. И сега мина достатъчно време и се знае кой от тримата герои е върнал заема и кой не. Какво можеше да се очаква: Вася и Федя върнаха заема, но Леша не го направи. Сега нека си представим, че този резултат ще бъде нова извадка за обучение за нас и в същото време сякаш всички данни за факторите, влияещи върху вероятността за изплащане на заема (заплата на кредитополучателя, размер на месечното плащане) са изчезнали. Тогава, интуитивно, можем да приемем, че всеки трети кредитополучател не изплаща кредита към банката, или с други думи, вероятността следващият кредитополучател да изплати заема Дъвчене на логистична регресия. Това интуитивно предположение има теоретично потвърждение и се базира на метод на максимална вероятност, често в литературата се нарича принцип на максимална вероятност.

Първо, нека се запознаем с понятийния апарат.

Вероятност за вземане на проби е вероятността да се получи точно такава проба, да се получат точно такива наблюдения/резултати, т.е. произведението на вероятностите за получаване на всеки от резултатите от извадката (например дали заемът на Вася, Федя и Леша е бил изплатен или не е изплатен едновременно).

Функция на вероятността свързва вероятността за извадка със стойностите на параметрите на разпределението.

В нашия случай обучителната извадка е обобщена схема на Бернули, в която случайната променлива приема само две стойности: Дъвчене на логистична регресия или Дъвчене на логистична регресия. Следователно вероятността на извадката може да бъде записана като функция на вероятността на параметъра Дъвчене на логистична регресия както следва:

Дъвчене на логистична регресия
Дъвчене на логистична регресия

Горният запис може да се тълкува по следния начин. Съвместната вероятност Вася и Федя да изплатят заема е равна на Дъвчене на логистична регресия, вероятността Леша да НЕ изплати заема е равна на Дъвчене на логистична регресия (тъй като НЕ е изплащането на заема), следователно общата вероятност за всичките три събития е равна Дъвчене на логистична регресия.

Метод на максимална вероятност е метод за оценка на неизвестен параметър чрез максимизиране функции на вероятността. В нашия случай трябва да намерим такава стойност Дъвчене на логистична регресияпри което Дъвчене на логистична регресия достига своя максимум.

Откъде идва идеята - да се търси стойността на неизвестен параметър, при който функцията на вероятността достига максимум? Произходът на идеята произтича от идеята, че извадката е единственият източник на знания, с които разполагаме за населението. Всичко, което знаем за населението, е представено в извадката. Следователно всичко, което можем да кажем, е, че извадката е най-точното отражение на популацията, с която разполагаме. Следователно трябва да намерим параметър, при който наличната извадка става най-вероятна.

Очевидно имаме работа с оптимизационен проблем, в който трябва да намерим точката на екстремума на функция. За да се намери точката на екстремума, е необходимо да се вземе предвид условието от първи ред, тоест да се приравни производната на функцията на нула и да се реши уравнението по отношение на желания параметър. Въпреки това, търсенето на производна на продукт от голям брой фактори може да бъде продължителна задача; за да се избегне това, има специална техника - преминаване към логаритъм функции на вероятността. Защо е възможен такъв преход? Нека обърнем внимание, че не търсим екстремума на самата функцияДъвчене на логистична регресия, и екстремната точка, тоест стойността на неизвестния параметър Дъвчене на логистична регресияпри което Дъвчене на логистична регресия достига своя максимум. При преминаване към логаритъм точката на екстремума не се променя (въпреки че самият екстремум ще се различава), тъй като логаритъмът е монотонна функция.

Нека, в съответствие с горното, да продължим да развиваме нашия пример със заеми от Вася, Федя и Леша. Първо нека да преминем към логаритъм на функцията на вероятността:

Дъвчене на логистична регресия

Сега можем лесно да разграничим израза по Дъвчене на логистична регресия:

Дъвчене на логистична регресия

И накрая, разгледайте условието от първи ред - приравняваме производната на функцията на нула:

Дъвчене на логистична регресия

По този начин нашата интуитивна оценка на вероятността за изплащане на заема Дъвчене на логистична регресия беше теоретично оправдано.

Чудесно, но какво да правим сега с тази информация? Ако приемем, че всеки трети кредитополучател не върне парите на банката, тогава последната неизбежно ще фалира. Така е, но само когато се оценява вероятността за изплащане на заема, равна на Дъвчене на логистична регресия Не взехме предвид факторите, влияещи върху изплащането на заема: заплатата на кредитополучателя и размера на месечното плащане. Нека си припомним, че преди това изчислихме вероятността за изплащане на заема от всеки клиент, като взехме предвид същите тези фактори. Логично е, че получихме вероятности, различни от постоянното равно Дъвчене на логистична регресия.

Нека дефинираме вероятността от проби:

Код за изчисляване на вероятностите за извадка

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 на статията, за оценка на вероятността за изплащане на дълга.

Но тогава, ако искаме да увеличим максимално функция на вероятността на извадката, тогава защо не използваме някакъв алгоритъм, който ще произведе вероятности за Вася, Федя и Леша, например, равни съответно на 0.99, 0.99 и 0.01. Може би такъв алгоритъм ще се представи добре на обучителната извадка, тъй като ще доближи стойността на вероятността на извадката до Дъвчене на логистична регресия, но, първо, такъв алгоритъм най-вероятно ще има затруднения със способността за обобщение, и второ, този алгоритъм определено няма да бъде линеен. И ако методите за борба с претренирането (също слаба способност за обобщение) очевидно не са включени в плана на тази статия, тогава нека преминем през втората точка по-подробно. За да направите това, просто отговорете на прост въпрос. Възможно ли е вероятността Вася и Федя да изплатят заема да бъде еднаква, като се вземат предвид известните ни фактори? От гледна точка на здравата логика, разбира се, че не, не може. Така Вася ще плаща 2.5% от заплатата си на месец, за да изплати заема, а Федя - почти 27,8%. Също така в графика 2 „Класификация на клиентите“ виждаме, че Вася е много по-далеч от линията, разделяща класовете, отколкото Федя. И накрая, знаем, че функцията Дъвчене на логистична регресия за Вася и Федя приема различни стойности: 4.24 за Вася и 1.0 за Федя. Сега, ако Федя, например, спечели порядък повече или поиска по-малък заем, тогава вероятностите за изплащане на заема за Вася и Федя биха били подобни. С други думи, линейната зависимост не може да бъде измамена. И ако наистина изчислим коефициентите Дъвчене на логистична регресия, и не ги взехме от нищото, можем спокойно да кажем, че нашите ценности Дъвчене на логистична регресия най-добре ни позволяват да оценим вероятността за изплащане на заема от всеки кредитополучател, но тъй като се съгласихме да приемем, че определянето на коефициентите Дъвчене на логистична регресия беше извършено според всички правила, тогава ще приемем така - нашите коефициенти ни позволяват да дадем по-добра оценка на вероятността :)

Ние обаче се отклонихме. В този раздел трябва да разберем как се определя векторът на теглата Дъвчене на логистична регресия, което е необходимо за оценка на вероятността за изплащане на заема от всеки кредитополучател.

Нека обобщим накратко с какъв арсенал тръгваме да търсим коефициенти Дъвчене на логистична регресия:

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-ро изд. – М.: Финанси и статистика, 1986 (превод от английски)

2) Теория на вероятностите и математическа статистика / V.E. Гмурман - 9-то изд. - М.: Висше училище, 2003

3) Теория на вероятностите / N.I. Чернова - Новосибирск: Новосибирски държавен университет, 2007

4) Бизнес анализи: от данни към знания / Паклин Н. Б., Орешков В. И. - 2-ро изд. — Санкт Петербург: Питър, 2013

5) Наука за данни Наука за данни от нулата / Джоел Грас - Санкт Петербург: BHV Петербург, 2017 г.

6) Практическа статистика за специалисти по Data Science / П. Брус, Е. Брус - Санкт Петербург: BHV Петербург, 2018 г.

2. Лекции, курсове (видео)

1) Същността на метода на максималното правдоподобие, Борис Демешев

2) Метод на максималното правдоподобие в непрекъснат случай, Борис Демешев

3) Логистична регресия. Отворен курс по ODS, Юрий Кашницки

4) Лекция 4, Евгений Соколов (от 47 минути видео)

5) Логистична регресия, Вячеслав Воронцов

3. Интернет източници

1) Линейна класификация и регресионни модели

2) Как лесно да разберем логистичната регресия

3) Функция за логистична грешка

4) Независими тестове и формула на Бернули

5) Балада за ММП

6) Метод на максимална вероятност

7) Формули и свойства на логаритмите

8) Защо номер Дъвчене на логистична регресия?

9) Линеен класификатор

Източник: www.habr.com

Добавяне на нов коментар