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

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

Какво е XGBoost?

  • XGBoost (eXtreme Gradient Boosting) е популярен и мощен алгоритъм за машинно обучение, използван за задачи за контролирано обучение, особено при проблеми с регресия, класификация и класиране.

  • Контролираното машинно обучение използва алгоритми, за да обучи модел да намира модели в набор от данни с етикети и функции и след това използва обучения модел, за да предвиди етикетите на характеристиките на нов набор от данни.
  • Базиран е на рамката за усилване на градиента, предназначена да оптимизира скоростта на изпълнение и производителността на модела.
  • XGBoost се използва широко в състезания по наука за данни и е известен със своята ефективност и ефективност при обработката на структурирани/таблични данни.
  • Той принадлежи към семейството на алгоритми за усилване на градиента, които са техники за обучение в ансамбъл, които комбинират прогнозите на множество слаби обучаеми (обикновено дървета на решения), за да създадат силен прогнозен модел.

Защо използваме XGBoost:

  • Висока производителност: XGBoost е известен със своята изключителна производителност по отношение както на скорост, така и на точност. Оптимизиран е за ефективна обработка на големи набори от данни и може бързо да обучава сложни модели, което го прави подходящ за приложения от реалния свят с високоразмерни данни.
  • Обучение в ансамбъл: XGBoost използва подход на обучение в ансамбъл, комбинирайки прогнозите на множество слаби обучаеми (дървета на решения), за да създаде силен, стабилен и точен модел за прогнозиране. Тази стратегия за ансамбъл често превъзхожда индивидуалните модели, като намалява прекомерното оборудване и подобрява обобщаването.
  • Прекомерно регулиране и регулиране: XGBoost включва L1 (Lasso) и L2 (Ridge) условия за регулиране в целевата функция. Това помага да се контролира сложността на модела и предотвратява пренастройването, което води до по-точни и обобщени резултати.
  • Обработка на липсващи данни: XGBoost може да обработва липсващи стойности в данните по време на процеса на обучение, без да изисква изрично импутиране на данни. Той автоматично научава най-добрата посока, която да поеме, когато функция има липсващи стойности, опростявайки предварителната обработка на данни.
  • Важност на характеристиките: XGBoost предоставя лесен и ефективен начин за изчисляване на оценките за важност на характеристиките. Тези резултати помагат да се идентифицират най-влиятелните характеристики в модела, позволявайки по-добро разбиране и тълкуване на данните.
  • Широка гама от приложения: XGBoost може да се използва за различни задачи за машинно обучение, включително класификация, регресия, класиране и системи за препоръки. Неговата гъвкавост го прави подходящ за широк спектър от проблеми в различни области.
  • Паралелна обработка: XGBoost е проектиран да се възползва от възможностите за паралелна обработка, което я прави по-бърза и мащабируема за големи набори от данни. Той ефективно използва множество CPU ядра по време на обучението на модела, което води до по-бързо изпълнение.
  • Общност и поддръжка: XGBoost има голяма и активна общност от потребители и разработчици. Това гарантира непрекъснато развитие, подобряване и поддръжка на алгоритъма, което го прави надежден и добре поддържан.
  • Печелен опит: XGBoost има доказан опит в спечелването на състезания и предизвикателства за машинно обучение. Неговият успех в различни състезания по наука за данни, като Kaggle, затвърди позицията му на един от най-добре представящите се алгоритми.

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

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

ключови компоненти:

  • Рамка за усилване на градиента: XGBoost се основава на рамката за усилване на градиента. Увеличаването на градиента е итеративен метод, при който слабите обучаеми се добавят последователно към модела и всеки нов обучаем коригира грешките, направени от своите предшественици. Крайният модел е претеглената сума от прогнозите, направени от всички обучаеми.
  • Съвкупност от слаби обучаеми: Слабите обучаеми в XGBoost обикновено са дървета на решенията, по-конкретно регресионни дървета. Всяко дърво е прост модел, който прави прогнози въз основа на набор от входни характеристики. Чрез комбиниране на прогнозите на множество дървета, XGBoost създава мощен и стабилен модел на ансамбъл.
  • Обективна функция: XGBoost използва обективна функция, за да определи количествено представянето на модела по време на обучение. Целевата функция се състои от два компонента: функция на загубата, която измерва разликата между прогнозираните и действителните стойности, и член за регулиране, който санкционира сложни модели, за да предотврати пренастройването.
  • Оптимизация, базирана на градиент: По време на процеса на обучение XGBoost оптимизира целевата функция, използвайки техники за оптимизация, базирани на градиент. Той изчислява градиента (производното) на целевата функция по отношение на прогнозите на модела и след това актуализира параметрите (теглата) на модела по начин, който минимизира целевата функция.
  • Регуларизация: XGBoost включва L1 (Lasso) и L2 (Ridge) условия за регулация в целевата функция. Това помага да се контролира сложността на модела и предотвратява пренастройването. Регулирането насърчава модела да предпочита по-прости дървета, което води до по-добро обобщаване на невидими данни.
  • Подрязване на дърво: XGBoost използва стратегия за растеж на дървото „в дълбочина“, където всяко ниво на дървото първо се разширява, а след това се извършва подрязване, за да се премахнат разделянията, които не подобряват производителността на модела. Този подход помага за изграждането на по-балансирани и плитки дървета, което намалява прекомерното оборудване.
  • Обработка на липсващи данни: XGBoost има вградена възможност за обработка на липсващи стойности в данните по време на процеса на обучение. Той автоматично научава най-добрата посока, която да поеме, когато функция има липсващи стойности, което опростява предварителната обработка на данните.
  • Паралелна обработка: XGBoost е проектиран да се възползва от паралелната обработка и многоядрените процесори, което го прави по-бърз и по-мащабируем от традиционните реализации с градиентно усилване.
  • Важност на функцията: XGBoost предоставя начин за изчисляване на оценките за важност на функцията въз основа на това колко пъти дадена функция е използвана в модела и доколко тя допринася за намаляване на целевата функция.

Как работи XGBoost?

  • Стъпка 1: Инициализация: Започваме с първоначално предположение за прогнозите. Това може да бъде проста стойност като средната стойност на целевите стойности (за регресия) или най-често срещаният клас (за класификация).
  • Стъпка 2: Изчислете грешките: Ние изчисляваме грешките между нашите първоначални прогнози и действителните целеви стойности в данните за обучение.
  • Стъпка 3: Изграждане на дърво за коригиране на грешки: Сега създаваме дърво на решения за коригиране на тези грешки. Дървото се опитва да намери модели в данните, които ни помагат да правим по-добри прогнози.
  • Стъпка 4: Актуализиране на прогнозите: Ние използваме новосъздаденото дърво, за да актуализираме нашите прогнози. Прогнозите на дървото се комбинират с предишните прогнози, придавайки по-голяма тежест на прогнозите на дървото, когато са по-точни.
  • Стъпка 5: Повторете за още дървета: Повтаряме стъпки 2 до 4, за да създадем още дървета. Всяко ново дърво се фокусира върху коригирането на грешките, с които предишните дървета не са могли да се справят.
  • Стъпка 6: Спрете, когато сте готови: Повтаряме този процес за определен брой кръгове (усилващи кръгове) или докато моделът се представи достатъчно добре. Искаме да избегнем пренастройването, така че спираме, когато моделът достигне задоволително ниво на точност.
  • Стъпка 7: Правете прогнози: След като обучението приключи, имаме колекция от дървета, които работят заедно, за да правят прогнози за нови, невиждани данни. За да направим прогноза, ние предаваме новите данни през всяко дърво и техните комбинирани прогнози ни дават крайния резултат.

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

Как да решите XGBoost математически:

Тук ще използваме прости данни за обучение, които имат дозировка на лекарството по оста x и ефективност на лекарството по оста y. Горните две наблюдения(6.5, 7.5) имат относително голяма стойност за ефективността на лекарството и което означава, че лекарството е било полезно, а долните две наблюдения(-10.5, -7.5) имат относително отрицателна стойност за ефективността на лекарството, което означава, че лекарството е причинило повече вреда, отколкото полза.

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

Прогнозата0,5съответства на дебелата черна хоризонтална линия.

За разлика от неекстремното градиентно усилване, което обикновено използва обикновени готови, регресионни дървета. XGBoost използва уникално регресионно дърво, което се нарича XGBoost Tree.

Сега трябва да изчислим оценката за качество или оценката за сходство за остатъците.

Тукλ е параметър за регулиране.

Така че ние разделихме наблюденията на две групи, въз основа на това дали Дозировка‹15.

Наблюдението вляво е единственото с дозировка‹15. Всички останали остатъци отиват на листа вдясно.

Когато изчисляваме резултата за сходство за наблюденията –10.5,-7.5,6.5,7.5, като поставяме λ =0

имаме сходство =4 и

Следователно резултатът, който получихме е:

Хиперпараметър в XGBoost:

  • learning_rate (или eta): Този параметър контролира размера на стъпката при всяка итерация на усилване. По-малката стойност прави модела по-стабилен, но по-бавен за конвергенция, докато по-голямата стойност може да доведе до по-бърза конвергенция, но рискува да превиши оптималното решение.
  • n_estimators: Броят рундове за повишаване (дървета) за изграждане. Той определя броя на дърветата в ансамбъла. По-високата стойност обикновено подобрява производителността, но също така увеличава времето за изчисление.
  • max_depth: Максималната дълбочина на всяко дърво на решенията. Ограничава броя на възлите в едно дърво. По-дълбоко дърво може да доведе до пренастройване, така че този параметър трябва да се настройва внимателно.
  • min_child_weight: Минималната сума от теглото на екземпляра (хесиан), необходима в дъщерен възел. Той контролира разделянето на възлите и помага за предотвратяване на пренастройването.
  • подпроба: Частта от пробите, използвани във всеки усилващ кръг. Той произволно избира подмножество от данните за обучение за изграждане на всяко дърво, въвеждайки произволност и намалявайки пренастройването.
  • colsample_bytree: Фракцията от функции (колони), използвани във всеки рунд на повишаване. Той произволно избира подмножество от функции за изграждане на всяко дърво, осигурявайки допълнително регулиране.
  • гама: Минимално намаляване на загубите, необходимо за създаване на допълнително разделение на листов възел. Той контролира подрязването на дърветата, а по-високата стойност помага за предотвратяване на прекомерното оборудване.
  • алфа: Термин за регулиране L1 на теглата на листа. Добавя L1 регулация към теглата на листата, насърчавайки редките оценки на листата.
  • ламбда: Термин за регулиране на L2 върху тегла на листа. Той добавя L2 регулиране към теглата на листата, като допълнително контролира сложността на модела.
  • scale_pos_weight: Контролира баланса на положителните и отрицателните тегла в набора от данни за проблеми с двоичната класификация. Полезно е за небалансирани набори от данни.
  • Цел: Функцията на загубите да бъде оптимизирана. Той трябва да бъде избран въз основа на конкретния тип проблем, като регресия, класификация или класиране.

Това са само някои от хиперпараметрите, налични в XGBoost. Има по-усъвършенствани хиперпараметри и конфигурации за изследване, като например използване на различни типове усилватели (gbtree, gblinear, dart), типове дървовидни конструкции (hist vs. exact) и други. Правилната настройка на хиперпараметъра е от решаващо значение за намиране на оптималната комбинация за вашия специфичен набор от данни и проблем и често включва използване на техники като търсене в мрежа, произволно търсене или байесова оптимизация.

Сравнение между XGBoost и традиционното Gradient Boosting:

Приложение на XGBOOST:

XGBoost, като гъвкав и мощен алгоритъм за машинно обучение, намира приложения в широк спектър от области. Ето някои общи и забележителни приложения на XGBoost:

  • Класификация: XGBoost се използва широко за задачи за класифициране, като откриване на спам, откриване на измами, анализ на настроението, разпознаване на изображения и диагностика на заболявания. Способността му да борави с небалансирани масиви от данни и да предоставя точни прогнози го прави популярен за различни двоични и многокласови проблеми с класификацията.
  • Регресия: XGBoost е ефективен при проблеми с регресията, включително прогнозиране на цените на жилищата, прогнозиране на търсенето и прогнозиране на продажбите. Той може да моделира сложни връзки в данните и да предоставя точни непрекъснати прогнози.
  • Класиране: В приложения за класиране XGBoost може да се използва за изграждане на модели, които класират артикули или резултати от търсене въз основа на оценки за уместност. Това обикновено се използва в търсачките, системите за препоръки и персонализирания маркетинг.
  • Системи за препоръки: XGBoost се използва при съвместно филтриране, за да предостави персонализирани препоръки на потребителите въз основа на предишните им взаимодействия и предпочитания. Той може да обработва големи набори от данни и да прави препоръки в реално време ефективно.
  • Прогнозиране на времеви редове: XGBoost е приложим за задачи за прогнозиране на времеви редове, като прогнозиране на цените на акциите, метеорологичните условия и моделите на трафика. Той може да улавя сезонни модели и нелинейни връзки в данните за времеви серии.
  • Откриване на аномалии: XGBoost може да се използва за откриване на аномалии в различни домейни, включително откриване на мрежови прониквания, откриване на измами и прогнозиране на отказ на оборудване. Той може да идентифицира необичайни модели в данните, които се отклоняват от нормата.
  • Анализ на текст: XGBoost може да се приложи към задачи за обработка на естествен език, като класификация на текст, анализ на настроението и разпознаване на именуван обект. Неговата способност да се справя с големи пространства от функции и нелинейни връзки е от полза в приложения, свързани с текст.