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



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

С толкова много постижения в областта на здравеопазването, маркетинга, бизнеса и така нататък стана необходимост да се развиват по-напреднали и сложни . Повишаването на машинното обучение е една такава техника, която може да се използва за решаване на сложни, базирани на данни, реални проблеми. Този блог е изцяло фокусиран върху това как работи Boosting Machine Learning и как може да се приложи за повишаване на ефективността на моделите за машинно обучение.

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





Ето списък с теми, които ще бъдат разгледани в този блог:

  1. Защо се използва усилване?
  2. Какво е усилване?
  3. Как работи ускоряващият алгоритъм?
  4. Видове усилване
  5. Демонстрация

Защо се използва усилване?

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



  1. Изображението има заострени уши: Кат

  2. Изображението има котешки очи: Cat

  3. Изображението има по-големи крайници: Куче



  4. Изображението има заточени нокти: Кат

  5. Изображението има по-широка структура на устата: Куче

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

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

В горния пример дефинирахме 5 слаби учащи и по-голямата част от тези правила (т.е. 3 от 5 учащи се предсказват изображението като котка) ни дава прогнозата че изображението е котка. Следователно крайният ни резултат е котка.

Така че това ни води до въпроса,

Какво е усилване?

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

What-Is-Boosting-Boosting-Machine-Learning-Edureka

Какво е усилване - стимулиране на машинно обучение - Edureka

Както споменах Boosting е метод за обучение на ансамбъл, но какво точно представлява обучението по ансамбъл?

c ++ клас за съхранение

Какво представлява ансамбълът в машинното обучение?

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

Какво е учене в ансамбъл - засилване на машинното обучение - Edureka

По-долу съм обсъдил и разликата между Boosting и Bagging.

Повишаване срещу Bagging

Ансамбълното обучение може да се извърши по два начина:

  1. Последователен ансамбъл, популярно известен като усилване , тук слабите обучаеми се произвеждат последователно по време на фазата на обучение. Ефективността на модела се подобрява чрез присвояване на по-голямо тегло на предишните, неправилно класифицирани проби. Пример за ускоряване е алгоритъмът AdaBoost.

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

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

Как работи ускоряващият алгоритъм?

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

Как работи усилващият алгоритъм - стимулиране на машинното обучение - Edureka

Ето как работи алгоритъмът:

Етап 1: Базовият алгоритъм чете данните и присвоява еднакво тегло на всяко пробно наблюдение.

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

Стъпка 3: Повторете стъпка 2, докато алгоритъмът може правилно да класифицира изхода.

Следователно основната цел на Boosting е за да се съсредоточим повече върху прогнози за пропуснати класификации.

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

Видове усилване

Има три основни начина, чрез които може да се извърши усилване:

  1. Adaptive Boosting или AdaBoost

  2. Повишаване на градиента

  3. XGBoost

Ще обсъдя основите зад всеки от тези типове.

Адаптивно усилване

  • AdaBoost се изпълнява чрез комбиниране на няколко слаби учащи в един силен учещ.

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

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

  • След това се изчертава ново решение, като се считат наблюденията с по-високи тегла като по-значими.

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

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

Повишаване на градиента

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

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

Основната идея тук е да се преодолеят грешките в предсказанията на предишния ученик. Този тип усилване има три основни компонента:

  1. Функция за загуба което трябва да се подобри.

  2. Слаб ученик за изчисляване на прогнози и формиране на силни обучаеми.

  3. An Модел на добавка което ще регулира функцията на загубите.

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

XGBoost

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

Основната цел на този алгоритъм е да увеличи скоростта и ефективността на изчисленията. Алгоритъмът Gradient Descent Boosting изчислява изхода с по-ниска скорост, тъй като те последователно анализират набора от данни, поради което XGBoost се използва за повишаване или изключително повишаване на производителността на модела.

XGBoost - Повишаване на машинното обучение - Edureka

XGBoost е проектиран да се фокусира върху изчислителната скорост и ефективността на модела. Основните характеристики, предоставени от XGBoost, са:

  • Паралелно създава дървета за вземане на решения.

  • Внедряване на разпределени изчислителни методи за оценка на големи и сложни модели.

  • Използване на изчислителни изчисления за анализ на огромни масиви от данни.

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

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

Повишаване на машинното обучение в Python

Кратък отказ от отговорност: Ще използвам Python, за да стартирам тази демонстрация, така че ако не познавате Python, можете да преминете през следните блогове:

  1. Как да научим Python 3 от Scratch - Ръководство за начинаещи

Сега е време да си изцапате ръцете и да започнете да кодирате.

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

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

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

Стъпка 1: Импортирайте необходимите пакети

от sklearn.ensemble импортиране AdaBoostClassifier от sklearn.preprocessing импортиране LabelEncoder от sklearn.tree импортиране DecisionTreeClassifier импортиране на панди като pd # Импортиране функция train_test_split от sklearn.model_selection импорт train_test_split # Импортиране scikit-learn metricsn модул за изчисляване на метриките за изчисляване metricar

Стъпка 2: Импортирайте набора от данни

# Заредете в набора от данни = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Стъпка 3: Обработка на данни

# Определете имената на колоните набора от данни.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'modices', 'odor', 'gill-attachment', 'gill-spacing „,„ размер на хрилете “,„ цвят на хрилете “,„ форма на стъбло “,„ корен на стъблото “,„ повърхност на стъблото-над пръстена “,„ повърхност на стъблото под пръстена “,„ цвят на стъблото -надо-пръстен ',' цвят на стъблото-под пръстен ',' тип воал ',' цвят на воала ',' номер на пръстен ',' тип пръстен ',' цвят на отпечатък на спора ',' популация ',' местообитание '] за етикет в набора от данни.колони: набор от данни [етикет] = LabelEncoder (). fit (набор данни [етикет]). )) Int64Index: 8124 записа, 6074 до 686 колони с данни (общо 23 колони): целева 8124 ненулева int32 форма на капачка 8124 ненулева int32 капачка на повърхността 8124 ненулева int32 капачка на цвят 8124 ненулева int32 натъртвания 8124 non-null int32 миризма 8124 non-null int32 gill-attachment 8124 non-null int32 gill-spacing 8124 non-null int32 gill-size 8124 non-null int32 gill-color 8124 non-null int32 стъблообразна форма 8124 non-null int32 stemk-root 8124 ненулеви int32 стъбло-повърхност-над-пръстен 8124 не-null int32 стъбло-повърхност-под-пръстен 8124 non-null int32 стъбло-цвят-над-пръстен 8124 non-null int32 стъбло-цвят-под-пръстен 8124 non-null int32 воал- тип 8124 non-null int32 цвят на воал 8124 non-null int32 номер на пръстен 8124 non-null int32 пръстен тип 8124 non-null int32 spore-print-color 8124 non-null int32 население 8124 non-null int32 местообитание 8124 non- null int32 dtypes: int32 (23) използване на паметта: 793,4 KB

Стъпка 4: Сплитиране на данни

X = набор от данни.drop (['target'], axis = 1) Y = набор от данни ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

Стъпка 5: Изграждане на модела

model = DecisionTreeClassifier (критерий = 'ентропия', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

В горния кодов фрагмент сме внедрили алгоритъма AdaBoost. Функцията ‘AdaBoostClassifier’ взема три важни параметъра:

уеб урок за рубин по релси
  • base_estimator: Базовата оценка (слаб обучаем) по подразбиране е дървета за решения
  • n_estimator: Това поле указва броя на базовите обучаеми, които да бъдат използвани.
  • learning_rate: Това поле указва скоростта на обучение, която сме задали на стойността по подразбиране, т.е. 1.
# Поставете модела с обучителни данни boostmodel = AdaBoost.fit (X_train, Y_train)

Стъпка 6: Оценка на модела

# Оценете точността на модела y_pred = boostmodel.predict (X_test) прогнози = метрики. Accuracy_score (Y_test, y_pred) # Изчисляване на точността в процентно отпечатване ('Точността е:', прогнози * 100, '%') Точността е: 100,0%

Получихме точност от 100%, което е перфектно!

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

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