Показател за качество в машинното обучение. Обучение за класиране

На елементите във всеки списък. Частичният ред обикновено се посочва чрез определяне на оценка за всеки елемент (например "подходящ" или "нерелевантен"; възможни са повече от две оценки). Целта на модела за класиране е да приближи и обобщи по най -добрия начин (в известен смисъл) метода на класиране в обучителния набор за нови данни.

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

Колегиален YouTube

  • 1 / 5

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

    По -долу са дадени някои примери за характеристики на класиране, използвани в набора от данни LETOR, добре познат в областта:

    • Стойности на мерките TF, TF-IDF, BM25 и езиковия модел за съвпадение на заявката на различни области на документа (заглавие, URL, основния текст, текст на връзката);
    • Дължини и IDF-суми на зони на документи;
    • Рангите на документи, получени чрез различни варианти на алгоритми за класиране на връзки, като PageRank и HITS.

    Показатели за качество на класирането

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

    Примери за показатели:

    Класификация на алгоритмите

    В своята статия „Да се ​​научим да се класираме за извличане на информация“ и изказвания на тематични конференции, Tai-Yang Liu от Microsoft Research Asia анализира съществуващите методи за решаване на проблема с класирането на преподаването и предложи тяхната класификация в три подхода, в зависимост от използваното представяне на входа данни и наказателни функции:

    Поточен подход

    Бележки (редактиране)

    1. Tie-Yan Liu (2009), Научете се да се класирате за извличане на информация, Основи и тенденции в извличането на информация: Vol. 3: No 3, стр. 225-331, ISBN 978-1-60198-244-5, DOI 10.1561 / 1500000016... Налични са слайдове от речта на Т. Lew на WWW 2009.

    Често в практиката на системния анализатор, който съставлява FRD, има неща, които не са формализирани. Пример биха били изисквания като:

    • Приложението трябва да работи бързо
    • Приложението трябва да консумира малко трафик
    • Видео материалът трябва да е с високо качество.

    Такива изисквания, когато са написани както са в FRD, са чудовищен източник на проблеми след това. Формализирането на такива изисквания е постоянно главоболие за анализатора. Обикновено анализаторът решава даден проблем в две стъпки: първо се поставя „еквивалентно“ формално изискване, след това в процеса на комуникация (с клиент, експерт по тематика и т.н.) се доказва, че такова формално изискване може замени първоначалното изискване. Най -общо казано, изискването, което получихме, не е функционално; той описва не „какво“ системата трябва да може да направи, а „как да го направя“. Освен това „как да го направя“ трябва да бъде формулирано със специфична качествена характеристика.

    Това беше преамбюл на тезата, че Системен анализатортрябва да владее добре математическия апарат и в същото време да може да обяснява „математиката“ на клиента. Сега нека разгледаме един пример.

    По проблема с класификацията

    Да кажем, че пишем FRD за система за контекстна реклама, подобна на Amazon Omakase. Един от модулите на нашата бъдеща система ще бъде контекст анализатор:

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

    Клиентът иска анализаторът да е „добър в контекстуализирането“. Трябва да формулираме какво означава това изискване. Първо, нека поговорим за контекста като такъв, т.е. за същия набор от категории, върнати от анализатора. Можете да определите това като задача за класификация, когато документ (уеб страница) е съчетан с много класове от предварително определен номер; в нашия случай класовете са продуктови категории. Класификационната задача е доста често срещана при текстообработката (например спам филтри).

    Показатели за оценка

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

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

    Нека наречем тест набор от документи (уеб страници), за които знаем верните отговори. Ако преброим броя посещения за всяка категория (броим посещенията по двойкидокумент - категория), получаваме каноничната таблица на разпределение на отговорите:

    Лявата колона на таблицата е "правилните" комбинации от документи и категории (които очакваме да присъстват в изхода), дясната е неправилна. Горният ред на таблицата е положителните отговори на класификатора, долният ред е отрицателен (в нашия случай, липсата на категория в отговора). Ако броят на всички двойки документ - категорияравно на н, тогава е лесно да се види това

    Като цяло, сега можете да запишете изискването на клиента във формата (броят на неправилните отговори е нула) и да спрете дотук. На практика обаче такива системи не съществуват и анализаторът, разбира се, ще работи с грешки по отношение на тестовата проба. Показателят за точност ще ни помогне да разберем процента на грешките:

    В числителя виждаме диагонала на матрицата - общия брой верни отговори, който е разделен на общия брой въпроси. Например анализатор, който дава 9 верни отговора от 10 възможни, има точност от 90%.

    Метрика F 1

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

    Сега помислете за изроден класификатор, който просто връща клас B (Всичко останало) за всякаквиобразувания. За този класификатор броят на истински положителните отговори ще бъде 0. Най-общо казано, нека помислим по темата, но колко често, когато четем текст в Интернет, се натъкваме на марки обувки? Оказва се, колкото и да е странно, че в общия случай 99,9999% от думите на текста не са марки обувки... Нека изградим матрица за разпределение на отговорите за извадка от 100 000:

    Нека изчислим неговата точност, която ще бъде равна на 99990/100000 = 99,99%! Така че, ние лесно създадохме класификатор, който по същество не прави нищо, но има огромен процент правилни отговори. В същото време е съвсем ясно, че не сме решили проблема с дефинирането на марка обувки. Факт е, че правилните обекти в нашия текст са силно „разредени“ с други думи, които нямат значение за класификация. Като се има предвид този пример, е разбираемо да искате да използвате други показатели. Например стойността tnочевидно е "боклук" - изглежда означава правилен отговор, но свръхрастеж tnв резултат на това силно "потиска" приноса tp(което е важно за нас) в точността.

    Нека определим мярка за прецизност (P, прецизност) като:

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

    Мярката за прецизност обаче не дава представа дали класификаторът е върнал всички верни отговори. За това има така наречената мярка за изземване (R, изземване):

    Мярката за пълнота характеризира способността на класификатора да „отгатне“ възможно най -много положителни отговори от очакваните. Обърнете внимание, че фалшивите положителни резултати не влияят по никакъв начин на този показател.

    Precision and Recall дават доста изчерпателна характеристика на класификатора и от различни ъгли. Обикновено, когато изграждате системи от този вид, трябва да балансирате през цялото време между тези два показателя. Ако се опитате да повишите Recall, като направите класификатора по -оптимистичен, тогава Precision ще спадне поради увеличаване на фалшивите положителни резултати. Ако промените класификатора си, като го направите по -„песимистичен“, например, като филтрирате резултатите по -строго, то с увеличаване на Precision това ще доведе до едновременно спадане на Recall поради отхвърляне на определен брой верни отговори. Следователно е удобно да се използва една величина за характеризиране на класификатора, така наречената метрика F 1:

    Всъщност това е само хармоничната средна стойност на P и R. Метриката F 1 достига своя максимум 1 (100%), ако P = R = 100%.
    (лесно е да се прецени, че за нашия изроден класификатор F 1 = 0). Стойността F 1 е един от най -често срещаните показатели за този тип системи. Това е F 1, който ще използваме за формулиране на праговото качество на нашия анализатор във FRD.

    Има два основни подхода за изчисляване на F 1 за проблема с класификацията.

    • Общо F 1: резултатите за всички класове са обобщени в една единствена таблица, според която след това се изчислява метриката F 1.
    • Среден F 1: за всеки клас ние формираме собствена матрица за непредвидени ситуации и собствена стойност F 1, след което вземаме проста аритметична средна стойност за всички класове.

    Защо е необходим вторият метод? Въпросът е, че размерите на извадката за различните класове могат да варират значително. За някои класове може да имаме много малко примери, а за някои - много. В резултат на това показателите на един „голям“ клас, обобщени в една обща таблица, ще „отбележат“ всички останали. В ситуация, в която искаме да оценим качеството на системата повече или по -малко равномерно за всички класове, вторият вариант е по -подходящ.

    Образец за обучение и тест

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

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

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

    Типична ситуация е, когато класификаторът показва добър резултат на тренировъчния набор и напълно се проваля на тестовия набор. Ако нашият алгоритъм за класификация се основава на машинно обучение (т.е. зависи от извадката за обучение), можем да оценим качеството му, като използваме по -сложна "плаваща" схема. За да направим това, ние разделяме всички примери, които имаме, да речем, на 10 части. Премахваме първата част и я използваме за обучение на алгоритъма; останалите 90% от примерите се използват като набор от тестове и се изчислява стойността на F 1. След това премахваме втората част и я използваме като тренировъчна; получаваме друга стойност на F 1 и т.н. В резултат на това получихме 10 стойности на F 1, сега вземаме тяхната средна аритметика, която ще стане крайният резултат. Отново, това е начинът (наричан още кръстосано валидиране) има значение само за алгоритми, базирани на машинно обучение.

    Връщайки се към писането на FRD, забелязваме, че положението ни е много по -лошо. Имаме потенциално неограничен набор от входове (всички уеб страници в Интернет) и няма начин да се оцени контекста на страница, различен от човешко участие... По този начин нашата извадка може да се формира само ръчно и тя силно зависи от капризите на компилатора (а човек решава дали да присвои страница на определена категория). Можем да оценим мярката F 1 на примерите, които познаваме, но просто не можем да разберем F 1 за всички интернет страници... Следователно, за потенциално неограничени набори от данни (като уеб страници, от които има безброй), понякога се използва методът „въвеждане“ (без надзор). За да направите това, определен брой примери (страници) са избрани на случаен принцип и от тях операторът (човек) съставя правилния набор от категории (класове). След това можем да тестваме класификатора върху тези избрани примери. Освен това, ако приемем, че примерите, които сме избрали, са типичен, можем грубо да оценим точността на алгоритъма (Precision). В същото време не можем да оценим Recall (не е известно колко правилни отговора са извън границите на примерите, които сме избрали), следователно не можем да изчислим и F 1.

    По този начин, ако искаме да знаем как се държи алгоритъмът на всички възможни входове, най -доброто, което можем да оценим в тази ситуация, е приблизителната стойност на Precision. Ако всички са съгласни да използват предварително определена фиксирана проба, тогава средната F 1 за тази извадка.

    В крайна сметка?

    В резултат на това ще трябва да направим следното:

    1. Замразете тренировъчната проба. Образецът за обучение ще бъде изграден въз основа на представите на клиента за "правилния" контекст.
    2. Поправете набор от категории за нашия анализатор. Не можем ли да изчислим F 1 от неопределен набор от класове?
    3. Опишете изискването под формата: Анализаторът трябва да идентифицира контекст със средно F 1 най -малко 80%.(например)
    4. Обяснете това на клиента.

    Както можете да видите, не е лесно да се напише FRD за такава система (особено последната точка), но е възможно. По отношение на праговата стойност F 1, в такива случаи можете да надградите стойностите на F 1 за подобни проблеми с класификацията.

    УДК 519.816

    С. В. СЕМЕНИХИН Л. А. ДЕНИСОВА

    Омски държавен технически университет

    МЕТОД НА ИЗПОЛЗВАНЕ НА МАШИНАТА

    НА базата на модифицирания генетичен алгоритъм за YRSO METRIC

    Разглеждат се проблема с класирането на документи на страницата с резултати от търсенето на информация и въпросите за машинното обучение при класирането. Предлага се подход за оптимизиране на функцията за класиране, като се използва показателят за качество на NOCO, базиран на модифициран генетичен алгоритъм. Проведено е изследване на разработените алгоритми (върху тестови колекции LETO ^ и е показана тяхната ефективност за машинно изучаване на класирането.

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

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

    В началото на изследването бяха разгледани списъчни подходи за класиране на машинното обучение, повечето от които използват метода на градиентно спускане. В разглежданите произведения ML се свежда до оптимизиране на показателите за качество на търсенето (SEQ), но се използват само показатели, представени от непрекъснати функции. Това ограничение често води до факта, че в резултат на оптимизацията функцията за класиране има по -ниски резултати за много важни приети показатели (DCG, nDCG, градуиран среден реципрочен ранг и др.), Които са дискретни функции. Документът предлага използването на генетични алгоритми (GA) в класирането на преподавателите, за да се сведе до минимум функцията на загуба на Huber, като се използват експертни оценки на релевантността като референтни стойности. Предложен е и подход към ПД, основан на оптимизиране на дискретни показатели за качеството на извличане на информация.

    2. Постановка на проблема с класирането на машинното обучение. В повечето съвременни системи за извличане на информация функцията за класиране е изградена въз основа на n прости функции за класиране (PRF) и може да бъде записана като:

    където SRF¡ е ¡та проста функция за класиране за документ d и заявка q, WCi е коефициентът на тежест на ¡та проста функция за класиране, n е броят на PRF в системата за класиране.

    В процеса на машинно обучение за класиране беше използван набор от документи за търсене B и заявки O от тестовата колекция LBTOY. За всички заявки за deO се създава двойка с всеки документ deD. За всяка такава двойка IRS определя стойностите на уместността, които се използват за класиране на резултатите от търсенето. За да се оцени качеството на класирането, системата изисква референтни стойности на релевантност E за всяка двойка документи-заявки (^, e). За тези цели се използват експертни оценки на значимостта.

    За извършване на изследването е използвана МКС, при която класирането се прави въз основа на N = 5 прости функции за класиране SRFi (WC) l г = 1, N, които образуват векторен критерий за оптималност:

    където WCе (WC) е векторът на променливите параметри; (ШС), (ЯБ) са пространствата от параметри и векторни критерии, съответно.

    Прилагането на генетични алгоритми за класиране на ML дава възможност за максимизиране на дискретни показатели за качество, като nDCG. Показателят nDCG за класиране на документи в търсачката се определя в съответствие с израза:

    DCG @ n = X 2 ---

    RF (q, d) = X WC. ■ SRF., I = 1 1 1

    където оценка (p) е средната оценка на значимостта, дадена от експерти на документа, намиращ се на позиция p в списъка с резултати, gradee; 1 / log2 (2 + p) - коефициент в зависимост от позицията на документа (първите документи имат по -голяма тежест).

    Тогава нормализираната версия на NDCG ще бъде записана като

    N000 @ n = RSD @ n / g,

    където r е коефициентът на нормализация, който е равен на максималната възможна стойност 0С [защитен имейл] n за на това искане(т.е. равен на OOO от идеалното класиране).

    По този начин, за да се оптимизира (максимизира) метриката на OSS, целевата функция (YM) ще бъде записана в следната форма

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

    1. Критерият за точността на извличане на информация

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

    2. Критерият Bpref, който оценява уместността на извличането на информация, се използва за обработка на работа с R съответни документи и се изчислява по формулата

    Bpref = - ^ (1 - Non Re ¡Преди (r) / R). (4)

    Тук r означава известен релевантен документ, а NonRelBefore (r) - броят на известните нерелевантни документи, класирани по -високо от r (при изчислението се вземат предвид само първите R от очакваните нерелевантни документи от цикъла).

    3. Критерий за пълнота на резултатите от търсенето

    r = a / (a+ c),

    където a е броят на намерените съответни документи, c е броят на неоткритите съответни документи.

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

    класиране на резултатите от търсенето по системата. В процеса на ПД тестовите колекции се използват като набор от обучения и следователно оказват значително влияние върху резултатите. За изследване беше използвана тестова колекция от документи и заявки LETOR. Тази колекция се използва за търсене на информация от Microsoft Research. Таблица 1 показва характеристиките на колекциите от тестове LETOR.

    5. Модифициран генетичен алгоритъм. За да се използват генетични алгоритми в машинното обучение за класиране, проблемът трябва да бъде формулиран по такъв начин, че решението да бъде кодирано като вектор (генотип), където всеки ген може да бъде бит, номер или друг обект. В този случай генотипът е представен от вектор на претеглящи фактори за съответните фактори за класиране. Условието за спиране на изпълнението на генетичния алгоритъм е намирането на оптималното решение, изчерпването на броя на поколенията или времето, отделено за еволюцията.

    Трябва да се отбележи, че GA са най -ефективни при търсене на област от глобален екстремум, но те могат да работят бавно, когато е необходимо да се намери локален минимум в тази област. Предлаганият начин за избягване на този недостатък е създаването на модифициран генетичен алгоритъм (MGA), който ще премине към локален (високоскоростен) оптимизационен алгоритъм след намиране на глобалния оптимален регион с помощта на основния GA. Предложеният MGA е хибриден метод, основан на класическата GA и метода на Нелдер - Мийд (симплекс алгоритъм). Методът на Нелдер - Мийд, често използван алгоритъм за нелинейна оптимизация, е числов метод за намиране на минимума на обективна функция в многоизмерно пространство. Хибридният алгоритъм MGA, предложен в тази работа, преминава към метода на Нелдер - Мийд, след като са изпълнени условията за спиране на GA. Блокова диаграма на алгоритъма MGA е показана на фиг. 1.

    При извършване на изследването беше прието ограничение в броя на изчисленията на целевата функция (Nrf = 16 000) при търсене на региона на глобалния екстремум и условието за преминаване към локален оптимизационен алгоритъм, базиран на метода на Нелдер - Мийд (след основният генетичен алгоритъм е извършил 75% от Nrf операциите).

    6. Резултати. В резултат на изследването, проведено с помощта на алгоритъма за машинно обучение

    маса 1

    Брой документи и заявки в тестови колекции

    Име на тестовата колекция Име на подсистемата Брой заявки Брой документи

    LETOR 4.0 MQ2007 1692 69623

    LETOR 4.0 MQ2008 784 15211

    LETOR 3.0 OHSUMED 106 16140

    LETOR 3.0 Gov03td 50 49058

    LETOR 3.0 Gov03np 150 148657

    LETOR 3.0 Gov03hp 150 147606

    LETOR 3.0 Gov04td 75 74146

    LETOR 3.0 Gov04np 75 73834

    LETOR 3.0 Gov04hp 75 74409

    Ориз. 1. Блокова диаграма на хибридния алгоритъм MVL, базиран на генетични алгоритми и метода на Нелдер-Мийд

    За класиране на LTR-MGA се получава вектор от WC * тегла за функцията за класиране. Освен това, въз основа на данни от тестовата колекция LETOYA, се оценява качеството на класирането, за което се изчисляват показатели за качество. Дискретен показател за качество на класиране [защитен имейл]оценява качеството на първите n документа от системния отговор. Общоприетите показатели за оценка на качеството на класирането са [защитен имейл], [защитен имейл]и [защитен имейл]Въпреки това, за по -подробно разглеждане на промените в показателя в зависимост от стойностите [защитен имейл]за всички n от 1 до 10. За да се сравни ефективността на разработения алгоритъм със съществуващите решения, беше извършен сравнителен анализ с помощта на алгоритмите за класиране, предоставени в колекциите LETOIA 3.0. Резултатите от изпълнението на алгоритмите за тестовите колекции TB2003 и TB2004 за показателя NDCG са показани на фиг. 2. Резултатите показват, че алгоритъмът LTR-MGA превъзхожда тестовите алгоритми, като най-високите стойности са

    са за [защитен имейл](на нивото на първия документ). Превъзходството на алгоритъма LTR-MGA се дължи на факта, че за разлика от функциите за класиране на теста, разгледани в експериментите, в предложения подход за оптимизиране на функцията за класиране, като целева функция се използва NDCG метриката.

    За да се оцени качеството на класирането при използване на предложения алгоритъм LTR-MGA, бяха изчислени стойностите на показателите за качество за документи за класиране в резултатите от търсенето (фиг. 3). Сравнение на резултатите от класирането (Таблица 2) при използване на основната функция за класиране, основен алгоритъм LTR-GA и модифицираният алгоритъм LTR-MGA показват предимството на последния.

    В допълнение, изследването изчислява времето, необходимо за класиране на MO. Това е необходимо, за да се потвърди, че предложеният метод LTR-MGA превъзхожда в този показател подхода, основан на използването на традиционни

    Ориз. 2. Сравнение на алгоритмите за машинно обучение за класиране

    от показателя NDCG за тестови колекции: отляво - набор от данни Gov03td, отдясно - набор от данни Gov04td

    Ориз. 3. Оценка на показателите за качество на класирането за основната формула за класиране и алгоритмите за обучение LTR-GA и LTR-MGA

    Показатели за качество на класирането за различни алгоритми за машинно обучение за класиране

    таблица 2

    Показател за качество на класирането Основна функция за класиране LTR-GA LTR-MGA Увеличаване на метричната стойност,%

    Точност 0.201 0.251 0.267 26.81

    [защитен имейл](първите 5 документа) 0,149 0,31 0,339 90,47

    [защитен имейл](първите 10 документа) 0,265 0,342 0,362 29,14

    Bpref 0,303 0,316 0,446 51,49

    Пълнота 0.524 0.542 0.732 39.03

    * Най -добрите стойности за съответния показател са маркирани в сиво

    онтого генетичен алгоритъм (LTA-OL). Резултатите от сравнението на времето, изразходвано за изпълнение на алгоритми LTY-OL и LTY-MOL, са показани в таблица. 3.

    7. Заключение. По този начин проведените проучвания показват, че когато се използва предложеният подход, стойностите на разглежданите метрики за класиране в МКС се увеличават (средно с 19,55% в сравнение с алгоритъма LTS-OL). Това потвърждава, че LITA-MOL работи правилно и значително подобрява функцията за класиране, с други думи, успешно решава проблема с оптимизацията. Използване на модифициран алгоритъм

    Поради прилагането на метода за локална оптимизация и въведените ограничения за броя на изчисленията на целевата функция, времето на машинно обучение е намаляло (средно със 17.71% в сравнение с използването на традиционния генетичен алгоритъм LTIAOL).

    Разработеният алгоритъм за машинно обучение за класиране на LTL-MOL може да се използва в МКС, които използват модел за класиране, базиран на комбинация от прости функции за класиране. Трябва обаче да се вземат предвид някои ограничения при прилагането на предложения подход. Базиран

    Оценка на времето за изпълнение на класирането на машинно обучение в зависимост от размера на обучителната извадка

    Таблица 3

    Размер на колекцията от текстови документи

    Време за изпълнение на LTR-GA

    Времетраене на LTR-MGA

    Намаляване на времето за изпълнение,%

    Означава

    *В сивоподчертава най -добрите стойности за съответния размер на тестовата колекция

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

    Библиографски списък

    1. Вратовръзка-Ян Лю. Да се ​​научим да се класираме за извличане на информация // Основи на списанието и тенденции в извличането на информация. Vol. 3, брой 3. март 2009. С. 225-331.

    2. Кристофър Дж. С. Бърджис, Tal Shaked, Ерин Реншоу. Да се ​​научим да се класираме с помощта на градиентно спускане // Процедура ICML "05 Сборник от 22-ра международна конференция по машинно обучение. 2005. С. 89-96.

    3. Семенихин, С. В. Изследване на подходите за машинно обучение за класиране на документи търсачкавъз основа на генетични алгоритми / С. В. Семенихин // Млада Русия: напреднали технологии - в индустрията. - 2013. - No 2. - С. 82 - 85.

    4. Многокритериална оптимизация въз основа на генетични алгоритми при синтеза на системи за управление: монография. / Л. А. Денисова. - Омск: Издателство на ОмСТУ, 2014.- 170 с. -ISBN 978-5-8149-1822-2.

    5. Денисова, Л. А. Автоматизация на параметричния синтез на системата за управление с помощта на генетичен алгоритъм / Л. А. Денисова, В. А. Мещеряков // Автоматизация в промишлеността. - 2012. - No 7. - С. 34 - 38.

    6. Huber, Peter J. Robust Estimation of a Location Parameter // Annals of Statistics. - 1964. - No 53. - С. 73-101.

    7. Семенихин, С. В. Автоматизация на извличането на информация въз основа на многокритериална оптимизация и генетични алгоритми / С. В. Семенихин, Л. А. Денисова // Динамика на системи, механизми и машини. - 2014. - No 3. - С. 224 - 227.

    8. Tie-Yan Liu, Jun Xu, Tao Qin, Wenying Xiong и Hang Li. ЛЕТОР: Бенчмарк набор от данни за изследване на научаването на ранг за извличане на информация // SIGIR 2007 Работилница за научаване на класиране за извличане на информация. - 2007.- С. 3-10.

    9. Агеев, М. С. Официални метрики на RMIP "2004 / М. С. Агеев, И. Е. Кураленок // II руски семинар за оценка на методите за извличане на информация (ROMIP 2004), Пущино, 2004: тр .; Изд. С. Некрестянова. - Санкт Петербург: Изследователски институт по химия, Санкт Петербургски държавен университет. - С. 142-150.

    10. J. A. Nelder, R. Mead, A симплекс метод за минимизиране на функции, The Computer Journal 7 (1965). 308-313.

    Святослав Виталиевич СЕМЕНИХИН, аспирант на катедра „Автоматизирани системи за обработка и управление на информация“. Адрес за кореспонденция: [защитен имейл]ДЕНИСОВА Людмила Албертовна, доктор на техническите науки, доцент на катедра „Автоматизирани системи за обработка и управление на информация“. Адрес за кореспонденция: [защитен имейл]

    За изтичането на клиенти на телекомуникационен оператор.


    Нека заредим необходимите библиотеки и да разгледаме данните

    импортиране на pandas като pd импортиране на matplotlib.pyplot като plt от matplotlib.pylab внос rc, график импортиране на морски като sns от sklearn.preprocessing импортиране LabelmbleEncoder, OneHotEncoder от sklearn.model_selection импортиране на cross_val_score от sklearn.linear_modelression Grain от sklearn.metrics импортиране precision_recall_curve, classic_report от sklearn.model_selection импортиране train_test_split df = pd.read_csv ("../../ data/ telecom_churn.csv")


    df.head (5)

    Предварителна обработка на данни

    # Нека направим картографиране на двоични колони # и кодираме състоянието с фиктивно кодиране (за простота е по -добре да не правите това за дървени модели) d = ("Да": 1, "Не": 0) df ["Международен план "] = df [" Международен план "]. Карта (d) df [" План за гласова поща "] = df [" План за гласова поща "]. Карта (d) df [" Избърсване "] = df [" Изливане "] . Astype ("int64") le = LabelEncoder () df ["State"] = le.fit_transform (df ["State"]) ohe = OneHotEncoder (sparse = False) encoded_state = ohe.fit_transform (df ["State"] . values.reshape (- 1, 1)) tmp = pd.DataFrame (encoded_state, columns = ["state" + str (i) for i in range (encoded_state.shape)]) df = pd.concat (, ос = 1)

    Точност, прецизност и изземване

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


    Истински положителен (TP) Фалшиво положителни (FP)
    Фалшиво отрицателен (FN) Истински отрицателни (TN)

    Ето отговора на алгоритъма върху обекта и е истинският етикет на класа на този обект.
    По този начин има два типа грешки при класифицирането: Фалшиво отрицателни (FN) и Фалшиво положителни (FP).


    Обучение по алгоритми и изграждане на матрицата на грешките

    X = df.drop ("Churn", ос = 1) y = df ["Churn"] # Разделете извадката на влак и тест, всички показатели ще бъдат оценени в тестовия набор от данни X_train, X_test, y_train, y_test = train_test_split ( X, y, stratify = y, test_size = 0.33, random_state = 42) # Обучете естествената логистична регресия lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Използвайте функцията за конструиране на матрицата за грешки от sklearn документация def plot_confusion_matrix (cm, класове, нормализиране = False, заглавие = "(! LANG: Матрица на объркване", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Матрица на объркване") plt.savefig("conf_matrix.png") plt.show()!}


    Точност

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



    Тази метрика е безполезна при проблеми с неравни класове и е лесно да се покаже с пример.


    Да речем, че искаме да оценим ефективността на филтъра за спам поща. Имаме 100 имейла без спам, 90 от които нашият класификатор е идентифицирал правилно (Истински отрицателни = 90, Фалшиво положителни = 10), и 10 спам имейла, 5 от които класификаторът също е идентифицирал правилно (Истински положителни = 5, Фалшиво отрицателни = 5 ).
    Тогава точността:



    Ако обаче просто предвидим всички имейли като неспам, ще получим по-висока точност:



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

    Прецизност, изземване и F-мярка

    За да оценим ефективността на алгоритъма за всеки от класовете поотделно, въвеждаме метриките за прецизност и извикване.




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



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


    Както отбелязахме по -рано, има два типа грешки при класификацията: Фалшиво положителни и Фалшиво отрицателни. В статистиката първият тип грешка се нарича грешка тип I, а вторият се нарича грешка тип II. В нашия проблем за определяне на отпадането на абонати грешката от първи вид ще бъде приемането на лоялен абонат за изходящ, тъй като нашата нулева хипотеза е, че никой от абонатите не напуска и ние отхвърляме тази хипотеза. Съответно, грешка от втори вид ще бъде „прескачането“ на изходящия абонат и погрешното приемане на нулевата хипотеза.


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


    Обикновено при оптимизиране на хиперпараметрите на алгоритъм (например в случай на итерация над мрежа GridSearchCV), се използва един показател, чието подобрение очакваме да видим в тестовата проба.
    Има няколко различни начиникомбинирайте прецизността и извикването в обобщен критерий за качество. F -мярка (като цяло) - хармонична средна точност и извикване:



    В този случай той определя тежестта на точността в метриката и когато това е хармоничната средна стойност (с коефициент 2, така че в случай на точност = 1 и извикване = 1 да има)
    F-мярката достига своя максимум, когато пълнотата и точността са равни на единица, и е близо до нула, ако един от аргументите е близо до нула.
    Sklearn има удобна функция _metrics.classification доклад, който връща извикване, прецизност и F-мярка за всеки от класовете, както и броя на екземплярите на всеки клас.


    отчет = класификационен отчет (y_test, lr.predict (X_test), target_names = ["Non-churned", "Churned"]) печат (отчет)
    клас точност припомням си f1-резултат поддържа
    Неразбъркан 0.88 0.97 0.93 941
    Разбъркани 0.60 0.25 0.35 159
    ср. / общо 0.84 0.87 0.84 1100

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

    AUC-ROC и AUC-PR

    Когато преобразуваме реалния отговор на алгоритъма (като правило вероятността за принадлежност към клас, вижте SVM отделно) в двоичен етикет, трябва да изберем някакъв праг, при който 0 става 1. Праг, равен на 0,5, изглежда естествен и близък , но не винаги се оказва оптимално, например при гореспоменатата липса на баланс на класа.


    Един от начините за оценка на модела като цяло, без да е обвързан с определен праг, е AUC -ROC (или ROC AUC) - площ ( Ареа U nder ° С urve) под кривата на грешката ( Rпристанище Опертинг ° Схарактерна крива). Тази крива е линия от (0,0) до (1,1) в координатите на True Positive Rate (TPR) и False Positive Rate (FPR):




    Вече знаем TPR, това е пълнота и FPR показва каква част от обектите от отрицателния клас алгоритъмът е предсказал неправилно. В идеалния случай, когато класификаторът не прави грешки (FPR = 0, TPR = 1), получаваме площта под кривата равна на единица; в противен случай, когато класификаторът произволно извежда вероятностите на класа, AUC-ROC ще се стреми към 0,5, тъй като класификаторът ще изведе същия брой TP и FP.
    Всяка точка на графиката съответства на избора на определен праг. Площта под кривата в този случай показва качеството на алгоритъма (повече е по -добре), освен това е важна стръмността на самата крива - искаме да максимизираме TPR чрез минимизиране на FPR, което означава, че нашата крива в идеалния случай трябва да се стреми да точката (0,1).


    ROC код за изчертаване на крива

    sns.set (font_scale = 1.5) sns.set_color_codes ("заглушен") plt.figure (figsize = (10, 8)) fpr, tpr, прагове = roc_curve (y_test, lr.predict_proba (X_test) [:, 1], pos_label = 1) lw = 2 plt.plot (fpr, tpr, lw = lw, label = "ROC крива") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("False Positive Rate ") plt.ylabel (" True Positive Rate ") plt.title (" ROC крива ") plt.savefig (" ROC.png ") plt.show ()



    Критерият AUC-ROC е устойчив на небалансирани класове (спойлер: уви, не всичко е толкова недвусмислено) и може да се тълкува като вероятността произволно избран положителен обект да бъде класиран по-високо от класификатора (ще има по-голяма вероятност да бъде положителен ) отколкото произволно избран отрицателен обект ...


    Помислете за следния проблем: трябва да изберем 100 съответни документа от 1 милион документи. Усвоихме два алгоритъма:

    • Алгоритъм 1връща 100 документа, 90 от които са уместни. Поради това,

    • Алгоритъм 2връща 2000 документа, 90 от които са уместни. Поради това,


    Най -вероятно бихме избрали първия алгоритъм, който произвежда много малко фалшиви положителни резултати в сравнение с неговия конкурент. Но разликата в False Positive Rate между тези два алгоритъма изключителномалък - само 0,0019. Това се дължи на факта, че AUC-ROC измерва делът на фалшиво положителен спрямо истински отрицателен, а при проблеми, при които вторият (по-голям) клас не е толкова важен за нас, може да не даде напълно адекватна картина при сравняване на алгоритми.


    За да коригираме ситуацията, нека се върнем към пълнотата и точността:

    • Алгоритъм 1

    • Алгоритъм 2


    Тук вече се забелязва значителна разлика между двата алгоритъма - 0,855 точност!


    Прецизността и извикването също се използват за конструиране на кривата и, подобно на AUC-ROC, намиране на площта под нея.



    Тук може да се отбележи, че при малки набори от данни площта под PR-кривата може да бъде прекалено оптимистична, тъй като се изчислява по трапецовидния метод, но обикновено има достатъчно данни в такива задачи. За подробности относно връзката между AUC-ROC и AUC-PR вижте тук.

    Логистична загуба

    Функцията за логистична загуба стои отделно, дефинирана като:



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


    Подробности за математическата интерпретация на функцията за логистични загуби вече са написани в рамките на публикацията за линейни модели.
    Този показател рядко се появява в бизнес изискванията, но често в задачи на kaggle.
    Интуитивно можете да си представите минимизирането на загубите като задача за увеличаване на точността чрез санкциониране на неправилни прогнози. Трябва обаче да се отбележи, че logloss наказва изключително силно за доверието на класификатора в грешен отговор.


    Нека разгледаме един пример:


    def logloss_crutch (y_true, y_pred, eps = 1e -15): return - (y_true * np.log (y_pred) + (1 - y_true) * np.log (1 - y_pred)) print ("Logloss с несигурна класификация% f "% logloss_crutch (1, 0.5)) >> Logloss с несигурна класификация 0.693147 печат (" Logloss с уверена класификация и правилен отговор% f "% logloss_crutch (1, 0.9)) >> Logloss с уверена класификация и правилен отговор 0.105361 print (" Logloss с уверена класификация и грешен отговор% f "% logloss_crutch (1, 0.1)) >> Logloss с уверена класификация и грешен отговор 2.302585

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



    Може да се види, че колкото по -близо до нулата е отговорът на алгоритъма с основна истина = 1, толкова по -висока е стойността на грешката и колкото по -стръмна е кривата.

    Нека обобщим:

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

    Здравей, Хабър!

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

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

    Метрики в проблеми с класификацията

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

    Нека заредим необходимите библиотеки и да разгледаме данните

    Импортиране на pandas като pd импортиране matplotlib.pyplot като plt от matplotlib.pylab внос rc, график импортиране на морски като sns от sklearn.преработване на импортиране Labelmblencoder, OneHotEncoder от sklearn.model_selection импортиране cross_val_score от sklearn.linear_modelression GrainForm от sklearn.metrics импортиране precision_recall_curve, classic_report от sklearn.model_selection внос train_test_split df = pd.read_csv ("../../ data/ telecom_churn.csv")

    Df.head (5)

    Предварителна обработка на данни

    # Нека направим картографиране на двоични колони # и кодираме състоянието с фиктивно кодиране (за простота е по -добре да не правите това за дървени модели) d = ("Да": 1, "Не": 0) df ["Международен план "] = df [" Международен план "]. Карта (d) df [" План за гласова поща "] = df [" План за гласова поща "]. Карта (d) df [" Избърсване "] = df [" Изливане "] . Astype ("int64") le = LabelEncoder () df ["State"] = le.fit_transform (df ["State"]) ohe = OneHotEncoder (sparse = False) encoded_state = ohe.fit_transform (df ["State"] . values.reshape (- 1, 1)) tmp = pd.DataFrame (encoded_state, columns = ["state" + str (i) for i in range (encoded_state.shape)]) df = pd.concat (, ос = 1)

    Точност, прецизност и изземване

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

    Истински положителен (TP) Фалшиво положителни (FP)
    Фалшиво отрицателен (FN) Истински отрицателни (TN)

    това е реакцията на алгоритъма върху обекта и

    Истинският етикет на класа на този обект.
    По този начин има два типа грешки при класифицирането: Фалшиво отрицателни (FN) и Фалшиво положителни (FP).

    Обучение по алгоритми и изграждане на матрицата на грешките

    X = df.drop ("Churn", ос = 1) y = df ["Churn"] # Разделете извадката на влак и тест, всички показатели ще бъдат оценени в тестовия набор от данни X_train, X_test, y_train, y_test = train_test_split ( X, y, stratify = y, test_size = 0.33, random_state = 42) # Обучете естествената логистична регресия lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Използвайте функцията, за да изградите матрицата за грешки от sklearn документация def plot_confusion_matrix (cm, класове, нормализиране = False, title = "(! LANG: Матрица на объркване", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Матрица на объркване") plt.savefig("conf_matrix.png") plt.show()!}

    Точност

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

    Тази метрика е безполезна при проблеми с неравни класове и е лесно да се покаже с пример.

    Да речем, че искаме да оценим ефективността на филтъра за спам поща. Имаме 100 имейла без спам, 90 от които нашият класификатор е идентифицирал правилно (Истински отрицателни = 90, Фалшиво положителни = 10) и 10 спам имейла, 5 от които класификаторът също е идентифицирал правилно (Истински положителни = 5, Фалшиво отрицателни = 5) .
    Тогава точността:

    Ако обаче просто предвидим всички имейли като неспам, ще получим по-висока точност:

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

    Прецизност, изземване и F-мярка

    За да оценим ефективността на алгоритъма за всеки от класовете поотделно, въвеждаме метриките за прецизност и извикване.

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

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

    Както отбелязахме по -рано, има два типа грешки при класификацията: Фалшиво положителни и Фалшиво отрицателни. В статистиката първият тип грешка се нарича грешка тип I, а вторият се нарича грешка тип II. В нашия проблем за определяне на отпадането на абоната, грешката от първи вид ще бъде приемането на лоялен абонат за изходящ, тъй като нашата нулева хипотеза е, че никой от абонатите не напуска и ние отхвърляме тази хипотеза. Съответно, грешка от втори вид ще бъде „прескачането“ на изходящия абонат и погрешното приемане на нулевата хипотеза.

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

    Обикновено при оптимизиране на хиперпараметрите на алгоритъм (например в случай на итерация над мрежа GridSearchCV), се използва един показател, чието подобрение очакваме да видим в тестовата проба.
    Има няколко различни начина за комбиниране на прецизност и извикване в съвкупна мярка за качество. F-мярка (като цяло

    ) - хармонична средна прецизност и извикване:

    в този случай определя тежестта на точността в метриката и за

    това е хармоничната средна стойност (с множител 2, така че в случай на точност = 1 и извикване = 1, имаме

    )
    F-мярката достига своя максимум, когато пълнотата и точността са равни на единица и е близо до нула, ако един от аргументите е близо до нула.
    Sklearn има удобна функция _metrics.classification докладвръщане на извикване, прецизност и F-мярка за всеки от класовете, както и броя на екземплярите на всеки клас.

    Отчет = класификационен отчет (y_test, lr.predict (X_test), target_names = ["Non-churned", "Churned"]) печат (отчет)

    клас точност припомням си f1-резултат поддържа
    Неразбъркан 0.88 0.97 0.93 941
    Разбъркани 0.60 0.25 0.35 159
    ср. / общо 0.84 0.87 0.84 1100

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

    AUC-ROC и AUC-PR

    Когато преобразуваме реалния отговор на алгоритъма (като правило вероятността за принадлежност към клас, вижте SVM отделно) в двоичен етикет, трябва да изберем някакъв праг, при който 0 става 1. Праг, равен на 0,5, изглежда естествен и близък , но не винаги се оказва оптимално, например при гореспоменатата липса на баланс на класа.

    Един от начините за оценка на модела като цяло, без да е обвързан с определен праг, е AUC -ROC (или ROC AUC) - площ ( Ареа U nder ° С urve) под кривата на грешката ( Rпристанище Опертинг ° Схарактерна крива). Тази крива е линия от (0,0) до (1,1) в координатите на True Positive Rate (TPR) и False Positive Rate (FPR):

    Вече знаем TPR, това е пълнота и FPR показва каква част от обектите от отрицателния клас алгоритъмът е предсказал неправилно. В идеалния случай, когато класификаторът не прави грешки (FPR = 0, TPR = 1), ще получим площта под кривата равна на единица, в противен случай, когато класификаторът произволно изведе вероятностите на класа, AUC-ROC ще се стреми към 0,5, тъй като класификаторът ще издава същото количество TP и FP.
    Всяка точка на графиката съответства на избора на определен праг. Площта под кривата в този случай показва качеството на алгоритъма (повече е по -добре), освен това е важна стръмността на самата крива - искаме да максимизираме TPR чрез минимизиране на FPR, което означава, че нашата крива в идеалния случай трябва да се стреми да точката (0,1).

    ROC код за изчертаване на крива

    Sns.set (font_scale = 1.5) sns.set_color_codes ("заглушен") plt.figure (figsize = (10, 8)) fpr, tpr, прагове = roc_curve (y_test, lr.predict_proba (X_test) [:, 1], pos_label = 1) lw = 2 plt.plot (fpr, tpr, lw = lw, label = "ROC крива") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("False Positive Rate ") plt.ylabel (" True Positive Rate ") plt.title (" ROC крива ") plt.savefig (" ROC.png ") plt.show ()

    Критерият AUC-ROC е устойчив на небалансирани класове (спойлер: уви, но не всичко е толкова недвусмислено) и може да се тълкува като вероятността произволно избран положителен обект да бъде класиран по-високо от класификатора (ще има по-голяма вероятност да бъде положителен) от произволно избран отрицателен обект.

    Помислете за следния проблем: трябва да изберем 100 съответни документа от 1 милион документи. Усвоихме два алгоритъма:

    • Алгоритъм 1връща 100 документа, 90 от които са уместни. Поради това,
    • Алгоритъм 2връща 2000 документа, 90 от които са уместни. Поради това,

    Най -вероятно бихме избрали първия алгоритъм, който произвежда много малко фалшиви положителни резултати в сравнение с неговия конкурент. Но разликата в False Positive Rate между тези два алгоритъма изключителномалък - само 0,0019. Това се дължи на факта, че AUC-ROC измерва делът на фалшиво положителен спрямо истински отрицателен, а при проблеми, при които вторият (по-голям) клас не е толкова важен за нас, може да не даде напълно адекватна картина при сравняване на алгоритми.

    За да коригираме ситуацията, нека се върнем към пълнотата и точността:

    • Алгоритъм 1
    • Алгоритъм 2

    Тук вече се забелязва значителна разлика между двата алгоритъма - 0,855 точност!

    Прецизността и извикването също се използват за конструиране на кривата и, подобно на AUC-ROC, намиране на площта под нея.

    Тук може да се отбележи, че при малки набори от данни площта под PR-кривата може да бъде прекалено оптимистична, тъй като се изчислява по трапецовидния метод, но обикновено има достатъчно данни в такива задачи. За подробности относно връзката между AUC-ROC и AUC-PR вижте тук.

    Логистична загуба

    Функцията за логистична загуба стои отделно, дефинирана като:

    това е отговорът на алгоритъма

    Ом обект,

    етикет на истински клас

    Ом обект и

    размер на извадката.

    Подробности за математическата интерпретация на функцията за логистични загуби вече са написани в рамките на публикацията за линейни модели.
    Този показател рядко се появява в бизнес изискванията, но често в задачи на kaggle.
    Интуитивно минимизирането на загубите на логисти може да се мисли като задача за максимално увеличаване на точността чрез санкциониране на погрешни прогнози. Трябва обаче да се отбележи, че logloss наказва изключително силно за доверието на класификатора в грешен отговор.

    Нека разгледаме един пример:

    Def logloss_crutch (y_true, y_pred, eps = 1e -15): return - (y_true * np.log (y_pred) + (1 - y_true) * np.log (1 - y_pred)) print ("Logloss с несигурна класификация% f "% logloss_crutch (1, 0.5)) >> Logloss с несигурна класификация 0.693147 печат (" Logloss с уверена класификация и правилен отговор% f "% logloss_crutch (1, 0.9)) >> Logloss с уверена класификация и правилен отговор 0.105361 print (" Logloss с уверена класификация и грешен отговор% f "% logloss_crutch (1, 0.1)) >> Logloss с уверена класификация и грешен отговор 2.302585

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

    Може да се види, че колкото по -близо до нулата е отговорът на алгоритъма с основна истина = 1, толкова по -висока е стойността на грешката и колкото по -стръмна е кривата.

    Обобщаване:

    • В случай на многокласова класификация, трябва внимателно да наблюдавате показателите на всеки от класовете и да следвате логиката на решението задачивместо оптимизиране на показателя
    • В случай на неравни класове е необходимо да се избере баланс от класове за обучение и показател, който правилно да отразява качеството на класификацията
    • Изборът на показател трябва да се направи с фокус върху предметната област, предварителна обработка на данните и евентуално сегментиране (както в случая на разделяне на богати и бедни клиенти)

    полезни връзки

    1. Курсът на Евгений Соколов: Семинар за избор на модели (има информация за показателите на регресионните проблеми)
    2. Проблеми по AUC-ROC от A.G. Дяконова
    3. Можете да прочетете повече за други показатели на kaggle. Към описанието на всеки показател е добавена връзка към състезанието, където е бил използван
    4. Презентация от Богдан Мелник, известен още като ld86, за обучение по небалансирани проби


Свързани статии: