portaldacalheta.pt
  • Põhiline
  • Planeerimine Ja Prognoosimine
  • Elustiil
  • Ux Disain
  • Finantsprotsessid
Andmeteadus Ja Andmebaasid

Ansambli meetodid: elegantsed tehnikad täiustatud masinõppe tulemuste saamiseks



Ansamblimeetodid on meetodid, mis loovad mitu mudelit ja seejärel ühendavad need parema tulemuse saamiseks. Ansamblimeetodid annavad tavaliselt täpsemaid lahendusi kui üks mudel. Nii on see olnud mitmel masinõppevõistlusel, kus võidulahendustes kasutati ansamblimeetodeid. Populaarsel Netflixi võistlusel võitja kasutas ansamblimeetodit võimsa koostööl põhineva filtreerimisalgoritmi juurutamiseks. Teine näide on KDD 2009, kus ka võitja kasutasid ansamblimeetodeid . Samuti võite leida võitjaid, kes kasutasid neid meetodeid näiteks Kaggle võistlustel siin on intervjuu filmi võitjaga CrowdFlower võistlus .

Enne selle artikli jätkamist on oluline mõista mõnda terminoloogiat. Kogu artiklis kasutasin andmetega treeninud algoritmi väljundi kirjeldamiseks terminit “mudel”. Seejärel kasutatakse seda mudelit ennustuste tegemiseks. See algoritm võib olla mis tahes masinõpe selliseid algoritme nagu logistiline regressioon, otsustuspuu jne. Neid mudeleid, kui neid kasutatakse ansamblimeetodite sisenditena, nimetatakse 'baasmudeliteks'.



Selles blogipostituses käsitlen ansamblite klassifitseerimise meetodeid ja kirjeldan mõningaid laialt tuntud ansamblimeetodeid: hääletamine, virnastamine, kottidesse panemine ja võimendamine.

Hääletamisel ja keskmistamisel põhinevad ansamblimeetodid

Hääletamine ja keskmistamine on kaks lihtsamat ansamblimeetodit. Neid on mõlemat lihtne mõista ja rakendada. Liigitamiseks kasutatakse hääletamist ja regressiooniks keskmist.



Hääletamisel ja keskmistamisel põhinevad ansamblimeetodid

Mõlemas meetodis on esimene samm luua mitu klassifitseerimise / regressiooni mudelit, kasutades mõnda koolituse andmekogumit. Iga baasmudeli saab luua sama koolituse andmekogumi ja sama algoritmi erinevate osade abil või sama andmekogumi erinevate algoritmidega või mõne muu meetodi abil. Järgmine Python-esque pseudokood näitab sama treeningandmekogumi kasutamist erinevate algoritmidega.



c ettevõtte s ettevõtte llc
train = load_csv('train.csv') target = train['target'] train = train.drop('target') test = load_csv('test.csv') algorithms = [logistic_regression, decision_tree_classification, ...] #for classification algorithms = [linear_regression, decision_tree_regressor, ...] #for regression predictions = matrix(row_length=len(target), column_length=len(algorithms)) for i,algorithm in enumerate(algorithms): predictions[,i] = algorithm.fit(train, target).predict(test)

Vastavalt ülaltoodud pseudokoodile lõime igale mudelile ennustused ja salvestasime need maatriksisse, mida nimetatakse ennustusteks, kus iga veerg sisaldab ühe mudeli ennustusi.

Enamus hääletamine

Iga mudel teeb prognoosi (hääled) iga testprotsessi kohta ja lõplik väljundprognoos on see, mis saab üle poole häältest. Kui ükski prognoosidest ei saa üle poole häältest, võime öelda, et ansambli meetod ei suutnud selle juhtumi jaoks stabiilset ennustust teha. Kuigi see on laialt kasutatav tehnika, võite lõpliku ennustusena proovida enim hääletatud prognoose (isegi kui see on vähem kui pool häältest). Mõnes artiklis näete, et seda meetodit nimetatakse “pluralism hääletuseks”.



kuidas arvutada konsultatsioonitasu

Kaalutud hääletus

Erinevalt enamushääletusest, kus igal mudelil on samad õigused, saame suurendada ühe või mitme mudeli olulisust. Kaalutud hääletamisel loete paremate mudelite ennustust mitu korda. Mõistliku kaalukomplekti leidmine on teie otsustada.

Lihtne keskmistamine

Lihtsas keskmistamismeetodis arvutatakse iga katseandmekogumi eksemplari puhul keskmised prognoosid. See meetod vähendab sageli ülerõivastust ja loob sujuvama regressioonimudeli. Järgmine pseudokoodikood näitab seda lihtsat keskmistamismeetodit:



final_predictions = [] for row_number in len(predictions): final_predictions.append( mean(prediction[row_number, ]) )

Kaalutud keskmistamine

Kaalutud keskmistamine on lihtsa keskmistamise veidi muudetud versioon, kus iga mudeli prognoos korrutatakse kaaluga ja seejärel arvutatakse nende keskmine. Järgmine pseudokoodikood näitab kaalutud keskmistamist:

weights = [..., ..., ...] #length is equal to len(algorithms) final_predictions = [] for row_number in len(predictions): final_predictions.append( mean(prediction[row_number, ]*weights) )

Mitme masinõppemudeli virnastamine

Virnastamine, mida nimetatakse ka virnastatud üldistuseks, on ansamblimeetod, kus mudeleid kombineeritakse teise abil masinõpe algoritm. Põhiidee on koolitada masinõppe algoritme koolitusandmekogumiga ja seejärel genereerida nende mudelitega uus andmekogum. Seejärel kasutatakse seda uut andmekogumit kombinaatori masinõppe algoritmi sisendina.



Virnastamisprotseduuri pseudokood on kokku võetud järgmiselt:

base_algorithms = [logistic_regression, decision_tree_classification, ...] #for classification stacking_train_dataset = matrix(row_length=len(target), column_length=len(algorithms)) stacking_test_dataset = matrix(row_length=len(test), column_length=len(algorithms)) for i,base_algorithm in enumerate(base_algorithms): stacking_train_dataset[,i] = base_algorithm.fit(train, target).predict(train) stacking_test_dataset[,i] = base_algorithm.predict(test) final_predictions = combiner_algorithm.fit(stacking_train_dataset, target).predict(stacking_test_dataset)

Nagu ülaltoodud pseudokoodist näha, genereeritakse kombineerimisalgoritmi koolitusandmekogum baasalgoritmide väljundite abil. Pseudokoodis genereeritakse treeninguandmekogumi abil baasalgoritm ja seejärel kasutatakse sama andmestikku ennustuste tegemiseks uuesti. Kuid nagu me teame, ei kasuta me reaalses maailmas prognoosimiseks ühte ja sama koolitusandmete kogumit, nii et selle probleemi ületamiseks võite näha virnastamise mõningaid rakendusi, kus koolituse andmekogum on jagatud. Allpool näete pseudokoodi, kus koolituse andmekogum jaguneb enne baasalgoritmide treenimist:



nimeta disaini põhimõtteid
base_algorithms = [logistic_regression, decision_tree_classification, ...] #for classification stacking_train_dataset = matrix(row_length=len(target), column_length=len(algorithms)) stacking_test_dataset = matrix(row_length=len(test), column_length=len(algorithms)) for i,base_algorithm in enumerate(base_algorithms): for trainix, testix in split(train, k=10): #you may use sklearn.cross_validation.KFold of sklearn library stacking_train_dataset[testcv,i] = base_algorithm.fit(train[trainix], target[trainix]).predict(train[testix]) stacking_test_dataset[,i] = base_algorithm.fit(train).predict(test) final_predictions = combiner_algorithm.fit(stacking_train_dataset, target).predict(stacking_test_dataset)

Bootstrapi koondamine

Nimi Bootstrap Aggregating, tuntud ka kui “Bagging”, võtab kokku selle strateegia põhielemendid. Kottimisalgoritmis hõlmab esimene samm mitme mudeli loomist. Need mudelid genereeritakse sama algoritmi abil koos andmekogumi juhuslike alamproovidega, mis võetakse algsest andmekogumist juhuslikult alglaadimisprotsessi valimismeetodiga. Alglaadimisproovide võtmisel ilmuvad mõned originaalsed näited rohkem kui üks kord ja mõned originaalsed näited valimis puuduvad. Kui soovite luua m-elementidega alamandmekogumi, peaksite m-i korral valima juhusliku elemendi algsest andmekogumist. Ja kui eesmärk on genereerida n andmekogumit, järgite seda sammu n korda.

Bootstrapi koondamine

Lõpus on meil n andmekogumit, kus elementide arv igas andmekogumis on m. Järgmine Python-esque pseudokood näitab alglaadimisproovide võtmist:

def bootstrap_sample(original_dataset, m): sub_dataset = [] for i in range(m): sub_dataset.append( random_one_element(original_dataset) ) return sub_dataset

Kottimise teine ​​etapp on loodud mudelite liitmine. Sel eesmärgil kasutatakse tuntud meetodeid, nagu hääletamine ja keskmistamine.

Üldine pseudokood näeb välja selline:

def bagging(n, m, base_algorithm, train_dataset, target, test_dataset): predictions = matrix(row_length=len(target), column_length=n) for i in range(n): sub_dataset = bootstrap_sample(train_dataset, m) predictions[,i] = base_algorithm.fit(original_dataset, target).predict(test_dataset) final_predictions = voting(predictions) # for classification final_predictions = averaging(predictions) # for regression return final_predictions

Kottides saab iga alamproovi genereerida üksteisest sõltumatult. Nii et generatsiooni ja koolitust saab teha paralleelselt.

kuidas saada power pivot

Mõnest algoritmist leiate ka kottimisstrateegia rakendamise. Näiteks, Juhuslik mets algoritm kasutab kottimistehnikat mõningate erinevustega. Juhuslik mets kasutab juhuslikku tunnuste valikut ja selle algoritm on otsustuspuu algoritm.

Seotud: Sügava õppimise õpetus: alates Perceptronist kuni sügavate võrkudeni

Suurendamine: nõrkade mudelite teisendamine tugevaks

Terminit „võimendamine” kasutatakse algoritmide perekonna kirjeldamiseks, mis on võimeline teisendama nõrgad mudelid tugevateks mudeliteks. Mudel on nõrk, kui sellel on oluline veamäär, kuid jõudlus pole juhuslik (mille tulemuseks on binaarse klassifikatsiooni veamäär 0,5). Boosting loob järk-järgult ansambli, koolitades kõiki mudeleid sama andmekogumiga, kuid kus eksemplaride kaalu kohandatakse vastavalt viimase prognoosi veale. Peamine idee on sundida mudeleid keskenduma rasketele juhtumitele. Erinevalt kottidest on tõstmine järjestikune meetod ja seega ei saa siin paralleelseid toiminguid kasutada.

Suurendusalgoritmi üldine protseduur on määratletud järgmiselt:

def adjust_dataset(_train, errors): #create a new dataset by using the hardest instances ix = get_highest_errors_index(train) return concat(_train[ix], random_select(train)) models = [] _train = random_select(train) for i in range(n): #n rounds model = base_algorithm.fit(_train) predictions = model.predict(_train) models.append(model) errors = calculate_error(predictions) _train = adjust_dataset(_train, errors) final_predictions = combine(models, test)

Funktsioon adjust_dataset tagastab uue kõige raskemaid eksemplare sisaldava andmekogumi, mida saab seejärel sundida baasalgoritmi õppima.

Adaboost on laialt tuntud algoritm, mis on võimendusmeetod. Adaboosti asutajad võitsid Gödeli preemia nende töö eest. Enamasti eelistatakse Adaboosti baasalgoritmina otsustuspuu algoritmi ja sklearn'i teegis on Adaboosti vaikealgoritm otsustuspuu ( AdaBoostRegressor ja AdaBoostClassifier ). Nagu me eelmises lõigus arutlesime, kehtib Adaboosti puhul sama kasvav meetod. AdaBoosti algoritmi igal etapil kogutud teave iga treeningvalimi ‘kõvaduse’ kohta sisestatakse mudelisse. Andmekogumi kohandamise etapp erineb ülalkirjeldatust ja etapp „mudelite kombineerimine” arvutatakse kaalutud hääletamise abil.

Järeldus

Ehkki ansamblimeetodid aitavad teil võita masinõppevõistlusi, töötades välja keerukad algoritmid ja andes suure täpsusega tulemusi, ei eelistata seda sageli tööstusharudes, kus tõlgendatavus on olulisem. Sellegipoolest on nende meetodite tõhusus vaieldamatu ja nende kasu asjakohastes rakendustes võib olla tohutu. Sellistes valdkondades nagu tervishoid võib ka masinõppe algoritmide täpsuse vähimgi parandamine olla midagi tõeliselt väärtuslikku.

Seotud:
  • Sissejuhatus masinõppe teooriasse ja selle rakendustesse: visuaalne õpetus koos näidetega
  • Masinad ja usaldus: kuidas leevendada tehisintellekti kallutatust

Kuidas tehisintellekt rahandusmaailma mõjutab

Finantsprotsessid

Kuidas tehisintellekt rahandusmaailma mõjutab
UXi proovitud ja tõesed seadused (koos infograafikaga)

UXi proovitud ja tõesed seadused (koos infograafikaga)

Ux Disain

Lemmik Postitused
Serveripoolsete renderdatud Vue.js-rakenduste loomine Nuxt.js-i abil
Serveripoolsete renderdatud Vue.js-rakenduste loomine Nuxt.js-i abil
HTTP-päringute testimine: arendaja ellujäämisriist
HTTP-päringute testimine: arendaja ellujäämisriist
Bridgewateri Ray Dalio: Big Data, masinõppe ja Fintechi vaikne pioneer
Bridgewateri Ray Dalio: Big Data, masinõppe ja Fintechi vaikne pioneer
Magento 2 õpetus: kuidas moodustada terviklikku moodulit
Magento 2 õpetus: kuidas moodustada terviklikku moodulit
Välja tasemel rööbaste vahemälu valideerimine: DSL-i lahendus
Välja tasemel rööbaste vahemälu valideerimine: DSL-i lahendus
 
Sisuka UX-i disaini kunst
Juhend kasutajate tõhusaks kasutuselevõtuks parimate tavade kohta
Juhend kasutajate tõhusaks kasutuselevõtuks parimate tavade kohta
Disainilitsents pole lahendus
Disainilitsents pole lahendus
Liitreaalsuse vs. Virtuaalne reaalsus vs. Segareaalsus: sissejuhatav juhend
Liitreaalsuse vs. Virtuaalne reaalsus vs. Segareaalsus: sissejuhatav juhend
Mis on PMO? Juhend projektijuhtimise kontorisse
Mis on PMO? Juhend projektijuhtimise kontorisse
Lemmik Postitused
  • kuidas saada jwt-märki
  • jõudluse häälestamine SQL serveris 2008
  • kuidas koostada tarkvaraprojekti
  • milline llc ma olen
  • tehnilise kirjelduse mall tarkvara arendamiseks
  • kuidas meelitada veebisaiti arvama, et olete maksnud
  • värvi mõju sellele, kuidas me mõtleme ja tunneme
Kategooriad
  • Planeerimine Ja Prognoosimine
  • Elustiil
  • Ux Disain
  • Finantsprotsessid
  • © 2022 | Kõik Õigused Kaitstud

    portaldacalheta.pt