Išsamus mašininio mokymosi algoritmų tobulinimo vadovas



Šiame tinklaraštyje didžiausias dėmesys skiriamas tam, kaip veikia mašininis mokymasis ir kaip jį galima pritaikyti, kad padidėtų mašininio mokymosi modelių efektyvumas.

Tiek daug tobulėjant sveikatos priežiūros, rinkodaros, verslo ir pan., Tapo poreikiu kurti pažangesnius ir sudėtingesnius . Mašininio mokymosi skatinimas yra viena iš tokių technikų, kuri gali būti naudojama sprendžiant sudėtingas, duomenimis pagrįstas, realaus pasaulio problemas. Šis tinklaraštis yra sutelktas į tai, kaip veikia mašininis mokymasis ir kaip jį galima pritaikyti, kad padidėtų mašininio mokymosi modelių efektyvumas.

Norėdami gauti išsamių žinių apie dirbtinį intelektą ir mašininį mokymąsi, galite užsiregistruoti tiesiogiai sukūrė „Edureka“ su parą visą parą ir visą gyvenimą.





Pateiksime temų, kurios bus aptartos, sąrašą šiame tinklaraštyje:

  1. Kodėl naudojamas stiprinimas?
  2. Kas yra stiprinimas?
  3. Kaip veikia padidinimo algoritmas?
  4. Padidinimo tipai
  5. Demonstracija

Kodėl naudojamas stiprinimas?

Norint išspręsti sudėtingas problemas, reikalingos pažangesnės technikos. Tarkime, kad pateiktame vaizdų duomenų rinkinyje, kuriame yra kačių ir šunų atvaizdai, jūsų buvo paprašyta sukurti modelį, kuris galėtų šiuos vaizdus suskirstyti į dvi atskiras klases. Kaip ir visi kiti žmonės, pradėsite atvaizdus atpažinti naudodamiesi keliomis toliau pateiktomis taisyklėmis:



  1. Vaizdas turi smailias ausis: katė

  2. Vaizdas turi katės formos akis: katė

  3. Vaizdas turi didesnes galūnes: Šuo



  4. Vaizdas paaštrino nagus: katė

  5. Vaizdas turi platesnę burnos struktūrą: šuo

Visos šios taisyklės padeda mums nustatyti, ar vaizdas yra šuo, ar katė, tačiau, jei vaizdą skirstytume pagal individualią (pavienę) taisyklę, prognozavimas būtų ydingas. Kiekviena iš šių taisyklių atskirai vadinama silpnaisiais besimokančiaisiais, nes šios taisyklės nėra pakankamai tvirtos, kad atvaizdą būtų galima klasifikuoti kaip katę ar šunį.

Todėl norėdami įsitikinti, kad mūsų prognozė yra tikslesnė, kiekvieno iš šių silpnų besimokančiųjų prognozes galime sujungti naudodami daugumos taisyklę arba svertinį vidurkį. Tai yra stiprus besimokančiojo modelis.

Ankstesniame pavyzdyje mes apibrėžėme 5 silpnus besimokančiuosius ir dauguma šių taisyklių (t. Y. 3 iš 5 besimokančiųjų prognozuoja katės vaizdą) suteikia mums prognozę kad vaizdas yra katė. Todėl mūsų galutinis rezultatas yra katė.

Taigi tai mus atveda prie klausimo,

Kas yra stiprinimas?

„Boosting“ yra mokymosi ansamblyje technika, kuri naudoja mašininio mokymosi algoritmų rinkinį, kad silpnas besimokantysis būtų paverstas stipriu, kad padidintų modelio tikslumą.

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

Kas yra skatinimas - mašininio mokymosi skatinimas - „Edureka“

Kaip jau minėjau, „Boosting“ yra ansamblio mokymosi metodas, bet kas yra ansamblio mokymasis?

Kas yra mašininio mokymosi ansamblis?

Mokymasis ansamblyje yra metodas, naudojamas pagerinti mašininio mokymosi modelio našumą, sujungiant kelis besimokančiuosius. Palyginus su vienu modeliu, šio tipo mokymasis sukuria modelius, kurių efektyvumas ir tikslumas yra geresni. Būtent todėl, siekiant laimėti pirmaujančias rinkos varžybas, tokias kaip „Netflix“ rekomendacijų konkursas, „Kaggle“ konkursai ir pan., Naudojami ansamblių metodai.

Kas yra mokymasis ansamblyje - mašininio mokymosi skatinimas - Edureka

Žemiau taip pat aptariau skirtumą tarp „Boosting“ ir „Bagging“.

Padidinimas vs maišas

Ansamblį galima mokytis dviem būdais:

  1. Nuoseklus ansamblis, liaudyje žinomas kaip didinti , čia silpni besimokantieji yra nuosekliai gaminami mokymo etape. Modelio našumas pagerinamas priskiriant didesnį svorį ankstesniems, neteisingai klasifikuotiems pavyzdžiams. Padidinimo pavyzdys yra „AdaBoost“ algoritmas.

  2. Lygiagretus rinkinys , populiariai žinomas kaip maišas , čia silpni besimokantieji yra paruošiami lygiagrečiai mokymo etape. Modelio našumą galima padidinti lygiagrečiai mokant keletą silpnų besimokančiųjų apie įkrovos duomenų rinkinius. Maišelių pavyzdys yra atsitiktinis miškas algoritmas.

Šiame tinklaraštyje daugiausia dėmesio skirsiu „Boosting“ metodui, todėl toliau pateiktame skyriuje suprasime, kaip veikia „boosting“ algoritmas.

Kaip veikia padidinimo algoritmas?

Pagrindinis skatinimo algoritmo veikimo principas yra sukurti kelis silpnus besimokančiuosius ir sujungti jų prognozes, kad būtų suformuota viena stipri taisyklė. Šios silpnos taisyklės sukuriamos taikant pagrindinius mašininio mokymosi algoritmus skirtingiems duomenų rinkinio paskirstymams. Šie algoritmai sukuria silpnas kiekvieno kartojimo taisykles. Po kelių kartojimų silpni besimokantieji sujungiami į stiprų besimokantįjį, kuris numatys tikslesnį rezultatą.

Kaip veikia algoritmo stiprinimas - mašininio mokymosi skatinimas - Edureka

Štai kaip veikia algoritmas:

1 žingsnis: Pagrindinis algoritmas nuskaito duomenis ir kiekvienam mėginio stebėjimui priskiria vienodą svorį.

2 žingsnis: Nustatomos klaidingos pagrindinio besimokančiojo prognozės. Kitoje iteracijoje šios melagingos prognozės priskiriamos kitam besimokančiajam, turinčiam didesnį šių neteisingų prognozių svorį.

3 žingsnis: Pakartokite 2 veiksmą, kol algoritmas gali teisingai klasifikuoti išvestį.

Todėl pagrindinis „Boosting“ tikslas yra daugiau dėmesio skirti praleistoms klasifikacinėms prognozėms.

Dabar, kai žinome, kaip veikia padidinimo algoritmas, supraskime skirtingus padidinimo būdų tipus.

Padidinimo tipai

Yra trys pagrindiniai skatinimo būdai:

  1. „Adaptive Boosting“ arba „AdaBoost“

  2. Gradiento stiprinimas

  3. XGBoost

Aptarsiu kiekvieno iš šių tipų pagrindus.

Adaptyvus stiprinimas

  • „AdaBoost“ įgyvendinama sujungus kelis silpnus besimokančius į vieną stiprų besimokantįjį.

  • Silpni besimokantieji „AdaBoost“ atsižvelgia į vieną įvesties ypatybę ir parengia vieną išskaidytą sprendimo medį, vadinamą sprendimo keliu. Kiekvienas pastebėjimas yra sveriamas vienodai, išvedant pirmąjį sprendimo kelmą.

    sukurti objektų masyvą java
  • Analizuojami pirmojo sprendimo kelmo rezultatai ir, jei pastebėjimai neteisingai klasifikuojami, jiems priskiriami didesni svoriai.

  • Paskelbus naują sprendimą, keliamas didesnio svorio stebėjimas laikomas reikšmingesniu.

  • Vėlgi, jei pastebėjimai yra neteisingai klasifikuojami, jiems suteikiamas didesnis svoris ir šis procesas tęsiasi tol, kol visi stebėjimai patenka į reikiamą klasę.

  • „Adaboost“ gali būti naudojamas tiek klasifikacijai, tiek regresijai grįstoms problemoms spręsti, tačiau jis dažniausiai naudojamas klasifikavimo tikslams.

Gradiento stiprinimas

„Gradient Boosting“ taip pat grindžiamas nuosekliu ansamblio mokymusi. Čia baziniai besimokantieji generuojami nuosekliai taip, kad dabartinis besimokantysis visada būtų efektyvesnis nei ankstesnis, t. Y. Bendras modelis tobulėja nuosekliai su kiekviena iteracija.

Šio tipo skatinimas skiriasi tuo, kad neteisingai klasifikuotų rezultatų svoriai nėra didinami, o „Gradient Boosting“ metodas bando optimizuoti ankstesnio besimokančiojo nuostolių funkciją, pridedant naują modelį, kuris prideda silpnus besimokančiuosius, kad sumažėtų nuostolių funkcija.

Pagrindinė mintis čia yra įveikti ankstesnio besimokančiojo prognozių klaidas. Šio tipo padidinimą sudaro trys pagrindiniai komponentai:

  1. Nuostolių funkcija kad reikia pagerinti.

  2. Silpnas besimokantis prognozių skaičiavimui ir stiprių besimokančiųjų formavimui.

  3. An Priedų modelis kad bus sutvarkyta nuostolių funkcija.

Kaip ir „AdaBoost“, „Gradient Boosting“ taip pat gali būti naudojamas klasifikavimo ir regresijos problemoms spręsti.

XGBoost

„XGBoost“ yra pažangi „Gradient boosting“ metodo versija, tai pažodžiui reiškia „eXtreme Gradient Boosting“. „XGBoost“, kurį sukūrė Tianqi Chen, patenka į „Distributed Machine Learning Community“ (DMLC) kategoriją.

Pagrindinis šio algoritmo tikslas yra padidinti skaičiavimo greitį ir efektyvumą. „Gradient Descent Boosting“ algoritmas skaičiuoja išvestį lėčiau, nes jie nuosekliai analizuoja duomenų rinkinį, todėl „XGBoost“ naudojamas norint padidinti arba labai padidinti modelio našumą.

„XGBoost“ - mašininio mokymosi skatinimas - „Edureka“

„XGBoost“ skirtas sutelkti dėmesį į skaičiavimo greitį ir modelio efektyvumą. Pagrindinės „XGBoost“ funkcijos yra:

  • Paraleliai kuria sprendimų medžius.

  • Didelių ir sudėtingų modelių įvertinimo paskirstytų skaičiavimo metodų įgyvendinimas.

  • „Out-of-Core Computing“ naudojimas analizuojant didžiulius duomenų rinkinius.

  • Talpyklos optimizavimo įgyvendinimas siekiant kuo geriau išnaudoti išteklius.

Taip buvoskirtingų tipų mašininio mokymosi algoritmų tipai. Kad viskas būtų įdomu, žemiau esančiame skyriuje vykdysime demonstracinę versiją, kad pamatytume, kaip „Python“ galima įdiegti algoritmus.

Mašininio mokymosi „Python“ skatinimas

Trumpas atsisakymas: aš naudosiu „Python“ šiai demonstracinei versijai paleisti, taigi, jei jūs nežinote „Python“, galite peržiūrėti šiuos tinklaraščius:

  1. Kaip išmokti „Python 3“ iš „Scratch“ - vadovas pradedantiesiems

Dabar atėjo laikas susitepti rankas ir pradėti koduoti.

Problemos pareiškimas: Ištirti grybų duomenų rinkinį ir sukurti mašininio mokymosi modelį, pagal kurį grybas būtų klasifikuojamas kaip nuodingas arba ne, analizuojant jo ypatybes.

Duomenų rinkinio aprašymas: Šiame duomenų rinkinyje pateikiamas išsamus hipotetinių mėginių aprašymas pagal 23 žiaunotų grybų rūšis. Kiekviena rūšis priskiriama prie valgomųjų grybų arba nevalgomų (nuodingų).

Logika: Sukurti mašininio mokymosi modelį naudojant vieną iš „Boosting“ algoritmų, siekiant numatyti, ar grybas yra valgomas, ar ne.

1 veiksmas: importuokite reikalingas pakuotes

iš „sklearn.ensemble“ importo „AdaBoostClassifier“ iš sklearn.preprocessing importavimo LabelEncoder iš sklearn.tree importo sprendimoTreeClassifier importavimo pandos kaip pd

2 veiksmas: importuokite duomenų rinkinį

# Įkelkite duomenų rinkinį = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

3 žingsnis: duomenų apdorojimas

#Define stulpelių pavadinimai dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'mėlynės', 'kvapas', 'gill-attachment', 'gill-spacing „, žiaunų dydis“, „žiaunų spalva“, „kotelio forma“, „kotelio šaknis“, „koto paviršius virš žiedo“, „kotelio paviršius žemiau žiedo“, „kotelio spalva“. - viršuje žiedas, „kotelio spalva - žemiau žiedo“, „šydo tipas“, „šydo spalva“, „žiedo numeris“, „žiedo tipas“, „sporos atspaudo spalva“, „populiacija“ ',' buveinė '] etiketėje duomenų rinkinyje. stulpeliai: duomenų rinkinys [etiketė] = LabelEncoder (). tinka (duomenų rinkinys [etiketė]). transformuoti (duomenų rinkinys [etiketė]) # Rodyti informaciją apie duomenų rinkinį spausdinti (dataset.info ( )) „Int64Index“: 8124 įrašai, nuo 6074 iki 686 duomenų stulpeliai (iš viso 23 stulpeliai): tikslinė 8124 nenulinė int32 dangtelio forma 8124 nenulinė int32 dangtelio paviršius 8124 nenulinė int32 dangtelio spalva 8124 nenulinė int32 mėlynė 8124 nenulinis int32 kvapas 8124 nenulinis int32 žiaunų tvirtinimo elementas 8124 nenulinis int32 žiaunų tarpai 8124 nenulinis int32 žiaunų dydis 8124 nulis nulinis int32 žiaunų spalva 8124 nenulinis int32 koto formos 8124 nulis nulis int32 stiebo šaknis 8124 nulis nulinis int32 stiebo paviršiumi virš žiedo 8124 nulio nulinis int32 koto paviršiaus paviršiumi žemiau žiedo 8124 nulio nulinis int32 stiebo spalvos virš žiedo 8124 nulio nulinis int32 koto spalvos žemiau žiedo 8124 nulio nulinis int32 šydas 8124 tipo nenuostabi „int32“ šydo spalva 8124 nenulinė „int32“ žiedo numeris 8124 nenulinė „int32“ žiedo rūšis 8124 nenulinė „int32“ sporų spausdinimo spalva 8124 nenuosekli „int32“ populiacija 8124 nenulinė int32 buveinė 8124 ne- null int32 dtypes: int32 (23) atminties naudojimas: 793,4 KB

4 žingsnis: duomenų padalijimas

X = duomenų rinkinys.drop (['target'], ašis = 1) Y = duomenų rinkinys ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

5 žingsnis: Sukurkite modelį

modelis = DecisionTreeClassifier (kriterijus = 'entropija', maks. gylis = 1) AdaBoost = AdaBoostClassifier (bazinis_stimuliatorius = modelis, n_estimatoriai = 400, mokymosi_ratas = 1)

Pirmiau pateiktame kodo fragmente įdiegėme „AdaBoost“ algoritmą. Funkcijai „AdaBoostClassifier“ reikalingi trys svarbūs parametrai:

  • base_estimator: Pagal numatytuosius nustatymus pagrindinis vertintojas (silpnas besimokantis asmuo) yra Sprendimų medžiai
  • n_estimator: Šiame lauke nurodomas bazinių besimokančiųjų skaičius.
  • learning_rate: Šiame lauke nurodomas mokymosi greitis, kurį nustatėme pagal numatytąją vertę, t. y. 1.
#Fit modeliui su treniruočių duomenų boostmodel = AdaBoost.fit (X_train, Y_train)

6 žingsnis: modelio vertinimas

# Įvertinkite modelio tikslumą yra: 100,0%

Mes gavome 100% tikslumą, kuris yra puikus!

Taigi, mes baigėme šį mokymosi tinklaraštį „Boosting Machine Learning“. Jei norite sužinoti daugiau apie mašininį mokymąsi, galite perskaityti šiuos tinklaraščius:

  1. peršokti į c ++

Jei norite užsiregistruoti į visą dirbtinio intelekto ir mašininio mokymosi kursą, „Edureka“ turi specialiai kuruotą tai leis jums išmanyti tokias technikas kaip prižiūrimas mokymasis, neprižiūrimas mokymasis ir natūralios kalbos apdorojimas. Tai apima mokymus apie naujausius dirbtinio intelekto ir mašininio mokymosi pasiekimus ir techninius metodus, tokius kaip gilus mokymasis, grafiniai modeliai ir mokymasis sustiprinti.