Геометрично изследване на логистичната регресия

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

  • Геометрична интуиция на логистичната регресия
  • Функция за оптимизация
  • Сигмоидна функция
  • Прекомерно и недостатъчно оборудване
  • Регулиране — L2 и L1

Интуицията

От горното изображение можем просто да мислим за логистичната регресия като процес на намиране на равнина, която най-добре разделя нашите класове и както бе споменато по-горе, логистичната регресия предполага, че класовете са линейно разделими.

Сега имаме нужда от класификатор, който може да раздели двата класа. От фигура 1 можем да забележим, че W^T * Xi > 0 представлява положителния клас, тъй като положителните класови точки лежат в посоката на W и W^T * Xi < 0 представлява отрицателния клас.

Така че нашият класификатор е -

If W^T * Xi > 0  :  then Y = +1    where Y is the class label
If W^T * Xi < 0  :  then Y = -1    where Y is the class label

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

Намиране на правилния самолет

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

Case 1 — [Yi = +1] , [W^T * Xi > 0]
Yi = +1 means that the correct class label is positive.
Yi * W^T * Xi > 0 means that we have correctly predicted the class label.

Пример — W^T * Xi = 5 (5 › 0) и Yi = +1.

Тук Yi * W^T * Xi = 5

Case 2 — [Yi = -1] , [W^T * Xi < 0]
Yi = -1 means that the correct class label is negative.
Yi * W^T * Xi > 0 means that we have correctly predicted the class label.

Пример — W^T * Xi =-5 (-5 ‹ 0) и Yi = — 1.

Тук Yi * W^T * Xi = (-1)(-5) = 5

Case 3 — [Yi = +1] , [W^T * Xi < 0]
Yi = +1 means that the correct class label is positive.
Yi * W^T * Xi < 0 means that we have incorrectly predicted the class label.

Пример — W^T * Xi =-5 (5 ‹ 0) и Yi = +1.

Тук Yi * W^T * Xi = (1)(-5) = -5

Case 4 — [Yi = -1] , [W^T * Xi > 0]
Yi = -1 means that the correct class label is negative.
Yi * W^T * Xi < 0 means that we have incorrectly predicted the class label.

Пример — W^T * Xi = 5 (5 ‹ 0) и Yi = -1.

Тук Yi * W^T * Xi = (-1)(5) = -5

Ако разгледате тези случаи внимателно, тогава ще забележите, че Yi * W^T*Xi > 0 означава, че сме класифицирали правилно точките и Yi * W^T * Xi < 0 означава, че сме класифицирали неправилно точките.

Изглежда, че намерихме нашата дългоочаквана функция за оптимизация.

Така че равнината с максимална стойност за тази функция ще действа като повърхност за вземане на решения (равнината, която най-добре разделя нашите точки).

Анализ на функцията за оптимизация

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

Както може би вече се досещате, нашата функция за оптимизация не е достатъчно стабилна, за да се справи с всякакви отклонения. Интуитивно, ако погледнете горната фигура, ще разберете, че ㄫ1 е по-добра равнина от ㄫ2, тъй като ㄫ1 е класифицирал правилно 14 точки от данни, а ㄫ2 е класифицирал правилно само една точка от данни, но според нашата функция за оптимизация, ㄫ2 е По-добре.

Има различни методи за премахване на извънредни стойности от набора от данни, но няма такъв метод, който може да премахне 100% извънредни стойности и както видяхме по-горе, дори единичен извънреден показател може силно да повлияе на търсенето ни на най-добрата равнина.

И така, как можем да се справим с този проблем с отклоненията? Въведете сигмоидната функция.

Сигмоидна функция

Основната идея зад функцията Sigmoid е смачкване. Мачкането може да се обясни по следния начин.

If signed distance is small :  then use it as is
If signed distance is large :  then squish it to a smaller value

Сигмоидната функция смачква по-големите стойности и всички стойности ще бъдат между 0 и 1.

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

Защо Sigmoid??

Има различни причини да изберете сигмоидната функция пред други —

  • Предоставя добра вероятностна интерпретация. Пример — Ако дадена точка лежи върху повърхността за вземане на решения (d = 0), тогава по интуиция вероятността й трябва да бъде 1/2, тъй като може да принадлежи към всеки клас и тук също можем да видим, че — Сигма (0) = 1/2.
  • Ако е лесно да се разграничи.

Ако все още не сте убедени, можете да проверите тази връзка, за да научите повече за сигмоидната функция.

Така че нашата нова функция за оптимизация е -

Можем допълнително да го модифицираме, като вземем дневника на тази функция, за да опростим математиката. Тъй като log е монотонно нарастваща функция, следователно няма да повлияе на нашия модел. Ако не сте наясно какво е монотонно нарастваща функция, тогава ето кратък преглед -

A function g(x) will be called a monotonically increasing function 
If - when x increases g(x) also increases
So if x1 > x2 then g(x1) > g(x2) if g(x) is a monotonically increasing function.

Трансформиране на функцията за оптимизация

Все още остават малко трансформации, преди да стигнем до най-добрата версия на нашата функция за оптимизация.

  1. Вземане на дневника заопростяване на математиката, включена в оптимизирането на тази функция.

2. Трансформация с помощта на свойството Log log(1/x) = -log(x)

3. Чрез използване на свойството argmax(-f(x)) = argmin(f(x))

Стратегия за минимизиране

              n 
W` = argmin(∑i=1  log(1 + exp(- Yi W^T Xi)) //Optimisation Function

Let Z = Yi W^T Xi
               n 
W` = argmin(∑i=1  log(1 + exp(- Zi))

exp(-Zi) винаги ще бъде положителен. Търсим да минимизираме нашата оптимизационна функция и най-малката стойност за exp(-Zi) е 0.

               n 
W` = argmin(∑i=1  log(1 + exp(- Zi)) >= 0 

Минималната стойност за нашата оптимизационна функция е 0, което се получава, когато exp(-Zi) е 0 като log(1+0) = 0.

Така че общата минимална стойност за нашата функция за оптимизация ще се появи, когато

Zi -> +∞ for all i

Нека разгледаме по-отблизо термина Zi.

Z = Yi W^T Xi

Тъй като това е алгоритъм за контролирано обучение, следователно ни се дават стойностите на X и Y.

X — Характеристики, въз основа на които предвиждаме правилния етикет на класа

Y — Правилният етикет на класа

Така че не можем да променим Xi или Yi, следователно единственият останал термин за манипулиране е „W“. Можете да добиете лека интуиция, че ако изберем наистина голяма стойност на W, тогава само нашето Z ще се приближи до безкрайността.

За да преместим стойността на Zi до безкрайност, ще изберем много голяма стойност (или + или -) за W.

Case 1 — [Yi = +1]
Yi * W^T * Xi = +1 * (very large +ve value of W ) * Xi   =  Very large +ve value

Case 2— [Yi = -1] 
Yi * W^T * Xi = -1 * (very large -ve value of W ) * Xi   =  Very large +ve value

Както можете да видите, ако изберем голяма стойност за W, можем да постигнем целта си да направим Zi -> +∞

Проблем с тази стратегия

Чрез използването на горната стратегия всичко изглежда добре, тъй като нашата цел беше да направим -

Zi-> ∞ и направи log(1 + exp(- Zi)) -> 0 и ако използваме тази стратегия, можем успешно да направим това.

Единственият проблем с тази стратегия е, че можем успешно да минимизираме нашата оптимизационна функция за всички стойности на „i“. Звучи малко иронично, тъй като целта ни беше да минимизираме функцията за всички стойности на i и изведнъж това се превърна в проблем. Ако сте разочаровани, това е наистина добър знак и означава, че сте разбрали всеки детайл досега. Така че нека се задълбочим в този проблем.

Основният проблем тук е, че ние пренастройваме нашия модел. Ако не сте запознати с термина overfitting, ето кратък преглед -

Overfitting means that our model will work pretty well for the training data as it will just adjust the weights according to the training data and as a result it will do a really bad job on the test data

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

Преоборудване

Тук червените точки представляват точки с отрицателни данни, а зелените точки представляват точки с положителни данни.

Както можете да видите в случай на прекомерно оборудване, нашата повърхност за вземане на решения идеално класифицира всяка точка и в този случай ще получим 100% точен резултат от нашите данни за обучение. Но помислете за този сценарий -

Тук синята точка е нашата тестова точка от данни и искаме да предвидим дали тя принадлежи към положителен или отрицателен клас и както можете да видите, според нашата повърхност за вземане на решения това е отрицателна класова точка, но можем да видим, че най-вероятно е положителна точка за клас, тъй като е по-близо до положителните точки за клас, отколкото до отрицателните точки за клас. Това се нарича свръхоборудване.

Точно така ще изглежда нашият модел, ако следваме горната стратегия винаги да избираме голяма стойност на W и да правим Zi -> +∞

Регулирането на помощ

Сега, след като НАЙ-НАКРАЯ разбрахте какъв е действителният проблем, можем да преминем към намиране на решение и това решение е Регулиране.

Много от вас може да имат бегла представа за това и сигурно сте чували, че се използва за предотвратяване на прекомерно и недостатъчно оборудване, но много малко хора всъщност знаят как можем да предотвратим недостатъчно и прекомерно оборудване с помощта на регулиране. Така че БЪРЗЕТЕ СЕ, че сте на път да се присъедините към тази елитна група.

Има два основни вида регулация -

  1. L2 регулация
  2. L1 регулация

Регулиране на L2 —

В L2 регуляризация ние въвеждаме допълнителен термин, наречен член на регуляризация, за да предотвратим пренастройването.

               n
W * = argmin(∑i=1   log(1 + exp(- Yi W^TXi))   - Loss term
λ W^T W                                        - Regularisation Term

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

Ако си спомняте, че нашата цел беше да направим Zi -> +∞ и тъй като Xi и Yi са фиксирани, следователно можехме само да променим стойността на W и тук можете да видите, че умножаваме W^TW с λ.

И така, по-рано увеличавахме стойността на W, за да стане +∞ or -∞ , но сега, ако се опитаме да направим това, въпреки че стойността на нашия термин за загуба ще се придвижи към 0, стойността на нашия член за регулация ще бъде много, много голяма. Така че по същество има компромис между срока на загубата и срока на регулиране.

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

Роля на λ

λ играе ключова роля в оптимизирането на нашата функция.

  • Ако значително намалим стойността на λ, тогава моделът превишава, тъй като ефектът от члена за регулация става незначителен.
  • Ако увеличим значително стойността на λ, тогава нашият модел не отговаря на изискванията, тъй като членът на загубата става незначителен и терминът за регулиране не съдържа данни за обучение.

L1 регулация

Целта на регулирането на L1 е същата като тази на L2, т.е. избягване на пренастройването в този случай.

               n
W * = argmin(∑i=1   log(1 + exp(- Yi W^TXi))   - Loss term
λ ||W||                                        - Regularisation Term
               n 
Here ||W|| = ∑i=1 |Wi|  where n is the number of data points and |Wi| represents the absolute value of W. 

Основната разлика между L1 и L2 Regularization е, че L1 Regularization създава редки вектори.

F = <f1,f2,f3,fi..... fn>
W = <W1,W2,W3,Wi..... Wn>
Here if we have a feature fi which is not important or less important then the weight corresponfing to it will be 0 if we use L1 regularisation whereas if we use L2 regularisation then it will be a small value but not neccesarily 0.

И с това стигнахме до края на тази статия. Много благодаря, че го прочетохте.

Можете да пляскате, ако искате. БЕЗПЛАТНО Е.

Моят LinkedIn, Twitter и Github
Можете да разгледате моя уебсайт, за да научите повече за мен и работата ми.