Otsustuspuu regressioon JavaScriptis: intuitsioonist toimiva prototüübini

Viimane uuendus: 04/11/2026
  • Otsustuspuud modelleerivad otsuseid ahelküsimustena, kus entroopia ja info juurdekasv juhivad jaotuste valimist nii klassifitseerimise kui ka regressiooni jaoks.
  • Azure'i masinõppes LightGBM-iga rakendatud võimendatud otsustuspuu regressioon loob väikeste puude ansambleid, mis iteratiivselt parandavad jääkvigu.
  • Puude üleliigset sobitamist kontrollitakse pügamise ja selliste parameetritega nagu sügavus, lehtede suurus ja õppimiskiirus, samas kui sellised ansamblid nagu juhuslikud metsad ja võimendamine parandavad vastupidavust.
  • Disainerid saavad tavalises JavaScriptis interaktiivseid otsustuspuid prototüüpida, struktureerides sõlmi objektidena, hallates navigeerimist (sh tagasitoiminguid) ja hiljem õpitud mudelitega ühendudes.

Otsustuspuu regressioon JavaScriptis

Kui oled disainer, kes juba natuke HTML-i, CSS-i ja tavalise JavaScriptiga mängib, võib otsustuspuu või regressioonimudeli loomine alguses tunduda musta maagiana. Sul võib paberil olla selge otsustusprotsess, võib-olla isegi kena Figma prototüüp, aga kui on aeg see loogika interaktiivseks veebikomponendiks või väikeseks ennustavaks mudeliks muuta, ei tundu miski enam nii lihtne kui sinu joonistatud diagramm.

Hea uudis on see, et otsustuspuud on ühed intuitiivsemad masinõppe mudelid, mida saab JavaScriptis rakendada ja visualiseerida isegi piiratud kodeerimiskogemuse korral. Lisaks sellele järgivad võimsad võimendatud regressioonipuud, mida kasutatakse tööriistades nagu Azure Machine Learning või LightGBM, sama kontseptuaalset ideed: küsimuste jada, mis järk-järgult parandab numbrilist ennustust. Selles juhendis ühendame punktid visuaalse otsustuspuu vahel, mida soovite prototüübiks luua, aluseks olevate masinõppe kontseptsioonide (entroopia, teabe saamine, kärpimine, võimendamine) ja praktilise JavaScripti vahel, mida saate juba täna kirjutada.

Otsustuspuude mõistmine enne JavaScripti puudutamist

Väga kõrgel tasemel on otsustuspuu lihtsalt struktureeritud viis küsimuste esitamiseks, kus iga vastus saadab sind mööda uut haru allapoole, kuni jõuad lõpliku otsuseni. Kujutage ette, et lähete restorani: kas teil on kõht tühi? Kui jah, siis kas soovite midagi kerget või rasket? Kui kerget, kas menüüs on salateid? Kui jah, siis tellite lõpuks salati. See mõtteline vooskeem on sõna otseses mõttes otsustuspuu: iga küsimus on sõlm, iga vastus on haru ja lõplik valik (salat, burger, mitte midagi) on leht.

Masinõppes kodeerime sama ideed andmete abil: iga rida andmestikus on näide, iga veerg on atribuut ja sihtmärk on see, mida me ennustada tahame. Puuõppe algoritm avastab automaatselt, millised küsimused (atribuutide jaotused) aitavad andmeid kõige paremini homogeensetesse rühmadesse jagada. Klassifitseerimiseks salvestavad lehed klassimärgise; regressiooniks salvestavad lehed numbrilise väärtuse (näiteks hinna, skoori või tõenäosuse).

Puude ahvatlevaks muutmine, eriti disainerite ja algajate jaoks, on see, et neid on loomulikult lihtne tõlgendada. Puu saab sõna otseses mõttes ülalt alla lugeda reeglite jadana: „Kui keskkond on madal ja tuult pole, siis ennusta mängu = jah kindlalt.“ Sellist läbipaistvust ei saa paljudest teistest mudelitest, näiteks sügavatest närvivõrkudest.

Hea puu loomiseks vajab algoritm viisi, kuidas otsustada, millist küsimust esimesena, teist korda jne esitada, ja siin tulebki mängu kerge matemaatika. Ära muretse: sa ei pea oma JavaScripti koodis valemeid käsitsi tuletama, aga entroopia ja infokogumise taga olevate ideede mõistmine aitab sul arutleda, kuidas sinu puu on üles ehitatud ja miks mõned harud näevad välja just sellised, nagu nad näevad.

Entroopia ja teabe saamine: kuidas puud valivad õige küsimuse

Entroopia on andmestiku määramatuse või korratuse mõõt ning see on kesksel kohal klassikaliste otsustuspuu algoritmide, näiteks ID3 või C4.5, jaotuste määramisel. Kui kõik alamhulga näited kuuluvad samasse klassi, on entroopia null: sõlm on täiesti puhas, ebakindlust pole. Kui klassid on ühtlaselt segunenud (näiteks 50% jah, 50% ei), on entroopia maksimaalne, mis tähendab, et me ei ole väga kindlad, milline on juhusliku elemendi märgend.

Formaalselt, kui meil on mitu klassi ja pi on i klassi näidete murdosa, hulga S entroopia H(S) on: H(S) = – ∑ pi * logi2(pi). Kui üks klass domineerib, siis selle pi on lähedane 1-le, muutub logaritmiline termin väikeseks ja entroopia väheneb. Kui klassid on tasakaalus, panustavad rohkem termineid oluliselt ja entroopia tõuseb binaarse juhtumi korral 1 poole.

Infosaamine mõõdab, kui palju entroopia langeb, kui andmestik teatud atribuudi abil jaotatakse, ja nii valib puu igas sõlmes parima küsimuse. Atribuudi A puhul, mis saab võtta erinevaid väärtusi v, vaatleme alamhulki Sv mis sisaldavad ainult näiteid, kus A = v. Infovõimendus IG(S, A) on H(S) miinus iga alamhulga entroopiate kaalutud summa. Suurima infovõimendusega atribuut annab kõige puhtama eralduse ja valitakse jagajaks.

Seepärast näete paljudes ilmastikupõhistes näidetes puu tüves sageli selliseid atribuute nagu „Keskkond” või „Väljavaated”. Konkreetsel juhul võib keskkonnamuutujal olla suurim info juurdekasv (näiteks umbes 0.246), mis tähendab, et see eristab kõige paremini „mängi“ ja „ära mängi“ otsuseid. Seejärel, olenevalt keskkonnast, võib algoritm jaotuse täpsustamiseks vaadata tuult, niiskust või temperatuuri.

Treenitud puu uurimisel võite näha selliseid teid nagu: kui keskkond ≤ 1.5, märkige tuul; kui tuult pole, ennustage mängu väärtuseks jah ja entroopiaks 0.0 viiel valimil. Tuule korral on sõlme entroopia võib-olla 1.0 kahe positiivse ja kahe negatiivse valimiga, seega on määramatus suurem ja võivad toimuda edasised lõhenemised. Teistes harudes, kui keskkond > 1.5, võib puu arvestada niiskusega ja ainult siis, kui niiskus pole madal, kontrollib see temperatuuri, et keerulisi olukordi üheselt mõista.

Lihtsast otsustuspuust regressioonipuudeni

Siiani oleme rääkinud peamiselt klassifitseerimisest, aga täpselt sama puustruktuuri saab kasutada ka regressiooni jaoks, kus väljundiks on numbriline väärtus, mitte diskreetne silt. Selle asemel, et igale lehele salvestada „mängi” või „ära mängi”, salvestavad regressioonipuud arvu, sageli sellele lehele langevate treeningnäidete keskmise sihtväärtuse.

Regressioonipuudes ei tugine jagamiskriteerium enam entroopiale, vaid sellistele mõõdikutele nagu dispersiooni vähendamine või ruutvea minimeerimine. Iga jaotus püüab luua alamsõlmi, kus sihtväärtused on võimalikult sarnased, et iga lehe ennustus oleks täpsem. Teisisõnu, algoritm küsib: „Kui ma jagan selle atribuudi andmed, kui palju saan ma vähendada sihtmärgi varieeruvust igas alamhulgas?“

Need regressioonipuud on paljude täiustatud meetodite, sealhulgas gradientide võimendamise raamistike (nt LightGBM) aluseks, mida kasutatakse laialdaselt platvormidel nagu Azure Machine Learning. Nendes süsteemides ei ehitata tavaliselt ühte monoliitset puud, vaid puude ansamblit, millest igaüks püüab parandada eelmiste vigu.

JavaScripti arendaja või disainerina võite iga regressioonipuud mõelda kui oma käsitsi joonistatud vooskeemi veidi nutikamat versiooni, kus lehtedel olevad „vastused” on tekstisiltide asemel numbrid (näiteks hinnad, skoorid või tõenäosused). Saate loogikat ikka veel puuna visualiseerida, aga jõud tuleb sellest, kuidas neid puid kombineeritakse ja häälestatakse.

Võimendatud otsustuspuu regressioon: kuidas ansamblid täpsust parandavad

Tõstmine on klassikaline ansamblimeetod, mis loob palju nõrku mudeleid (nagu väikesed regressioonipuud) ja ühendab need, et moodustada tugev ennustaja palju suurema täpsusega. Kõikide puude eraldi treenimise asemel, nagu kottidesse lisamise või juhuslike metsade puhul, lisab võimendamine puid üksteise järel, kus iga uus puu keskendub eelmiste puude jäetud jääkvigadele.

Võimendatud otsustuspuu regressioonis, mida Azure Machine Learning rakendab selliste algoritmide nagu LightGBM abil, parandab iga uus puu praeguse ansambli vead, õppides jääkidest. Alustad lihtsa mudeliga, võib-olla lihtsalt konstantse ennustusega; seejärel arvutad selle ennustuse ja tegelike väärtuste (jääkide) vahe. Järgmine puu treenitakse neid jääke ennustama ja lisad selle mudelile teatud õppimiskiirusega. Järk-järgult, seda korrates, muutub üldine ennustus aina paremaks.

Seda protsessi nimetatakse gradiendi võimendamiseks ja MART (Multiple Additive Regression Trees) on tuntud teostus, mida Azure Machine Learning kasutab võimendatud puude jaoks. Igal sammul kasutab algoritm diferentseeruvat kadufunktsiooni (näiteks ruutviga), et arvutada vea gradient ja otsustada, kuidas järgmist puud korrigeerida. Praktikas saadakse paljude väikeste puude ansambel, millest igaüks annab väikese panuse lõplikku numbrilisse väljundisse.

Kuigi võimendamine parandab tavaliselt ennustuse täpsust, võib see vähendada ulatust või üldistust, kui hüperparameetritega, näiteks puude arvu, maksimaalse sügavuse või õppimiskiirusega, ettevaatlik ei ole., olukord, mis on seotud ülepüüdlikkus vs alapüüdlikkus. Alustad lihtsa mudeliga, võib-olla lihtsalt konstantse ennustusega; seejärel arvutad selle ennustuse ja tegelike väärtuste (jääkide) vahe. Järgmine puu treenitakse neid jääke ennustama ja lisad selle mudelile teatud õppimiskiirusega. Järk-järgult, seda korrates, muutub üldine ennustus aina paremaks.

Seda protsessi nimetatakse gradiendi võimendamiseks ja MART (Multiple Additive Regression Trees) on tuntud teostus, mida Azure Machine Learning kasutab võimendatud puude jaoks. Igal sammul kasutab algoritm diferentseeruvat kadufunktsiooni (näiteks ruutviga), et arvutada vea gradient ja otsustada, kuidas järgmist puud korrigeerida. Praktikas saadakse paljude väikeste puude ansambel, millest igaüks annab väikese panuse lõplikku numbrilisse väljundisse.

Kuigi võimendamine parandab tavaliselt ennustuse täpsust, võib see vähendada ulatust või üldistust, kui te ei ole hüperparameetritega, näiteks puude arvu, maksimaalse sügavuse või õppimiskiirusega, ettevaatlik. Liiga palju puid või väga suured puud võivad teie treeningandmeid üle sobitada, samas kui liiga väike õppimiskiirus liiga väheste puudega võib sobida ebapiisavalt ja olulisi mustreid mitte tabada.

Oluline on meeles pidada, et võimendatud otsustuspuu regressioon on juhendatud õppemeetod, mis tähendab, et peate esitama numbrilise sihtveeruga märgistatud andmestiku. Sildid (sihtmärgid) peavad olema numbrilised, kuna algoritm optimeerib pidevaid kadufunktsioone; kui teil on kategooriad, teisendate need kas numbriteks või kasutate hoopis võimendatud puude klassifitseerimisvarianti.

Azure Machine Learningi võimendatud puude peamised konfiguratsioonivalikud

Kui kasutate Azure Machine Learningi disaineris võimendatud otsustuspuu regressioonikomponenti, konfigureerite sisuliselt seda, kuidas teie puude ansambel ehitatakse ja treenitakse. See komponent hõlmab tõhusat LightGBM-põhist implementatsiooni, kuid paljastab kõige olulisemad nupud kasutajasõbralikus kasutajaliideses, nii et saate katsetada isegi siis, kui te ei kirjuta koodi otse selles keskkonnas.

Esimene valik, millega silmitsi seisad, on treeneri loomise režiim, mis määrab, kas määrad ühe konfiguratsiooni või uurid mitmeid hüperparameetreid. „Ühe parameetri“ režiimis valite käsitsi väärtused sellistele asjadele nagu õppimiskiirus, lehtede arv ja puude arv: see on mugav, kui teil on juba hea ettekujutus sellest, mida soovite. „Parameetrivahemiku“ režiimis määrate iga parameetri jaoks intervallid ja seejärel proovib eraldi komponent, näiteks „Mudeli hüperparameetrite häälestamine“, automaatselt kõiki kombinatsioone, et leida need, mis annavad parima jõudluse.

Teine oluline säte on maksimaalne lehtede arv puu kohta, mis kontrollib tõhusalt iga üksiku puu keerukust ansamblis. Rohkem lehti tähendab rohkem lõpp-sõlmi ja detailsemaid reegleid. See võib suurendada treeningandmete täpsust, kuid suurendab ka üle sobitamise ohtu ja pikendab treeningaega. Vähem lehti hoiab iga puu lihtsamana ja võib parandada üldistamist, kuigi see võib põhjustada peente mustrite puudumist.

Samuti peate otsustama iga lehesõlme jaoks vajaliku minimaalse näidiste arvu, mis määrab lävendi teie reeglite detailsusele. Vaikimisi väärtuse 1 korral saab isegi üks treeningnäide moodustada uue lehe, mis võib põhjustada mudeli müra meeldejätmist. Selle miinimumi tõstmine näiteks 5-ni sunnib iga reeglit katma vähemalt viit näidet samade tingimustega, siludes mudelit ja parandades sageli selle üldistamisvõimet.

Õppimiskiirus on väärtus vahemikus 0 kuni 1, mis määrab, kui suure sammu iga uus puu eelmise ansambli vigade parandamisel teeb. Suur õppimiskiirus paneb mudeli kiiremini õppima, kuid riskib optimaalse lahenduse ületamise; väga väike kiirus muudab treenimise stabiilsemaks, kuid võib nõuda palju rohkem puid ja pikemat treeningaega. Hea tasakaalu leidmine on tugeva mudeli võti.

Ehitatud puude arv kontrollib, mitu korda sa võimendamisetappi kordad, st mitu nõrka õppijat lõplikku mudelisse kombineeritakse. Suurem arv annab üldiselt parema katvuse, kuid suurendab ka üle sobitamise võimalust ja arvutuskulusid. Selle väärtuseks 1 seadmine keelab sisuliselt võimendamise ja jätab alles ühe regressioonipuu, mida võib olla lihtsam tõlgendada, kuid tavaliselt vähem täpne.

Azure Machine Learning võimaldab teil määrata ka initsialiseerimiseks juhusliku seemne, mis on kasulik samade andmete ja parameetritega käivitamisel korratavate tulemuste saamiseks. Kui jätate selle vaikeväärtusele 0, tuletab platvorm algväärtuse süsteemikellast, seega iga treeningkäivitus võib anda veidi erinevaid puid. Fikseeritud algväärtusega saate mudeleid hõlpsamini siluda ja võrrelda.

Kui komponent on konfigureeritud, tuleb mudeli treenimiseks lihtsalt ühendada see märgistatud andmestikuga ja kasutada kas komponenti „Train Model” või hüperparameetrite häälestamise komponenti, olenevalt valitud režiimist. Pärast treenimist saate saadud mudeli ühendada komponenti „Score Model“, et teha ennustusi uute sisendite kohta, ning saate treenitud mudeli komponentide puus registreerida, et seda teistes torujuhtmetes uuesti kasutada ilma ümberkoolituseta.

Üleistutamine, pügamine ja miks puud võivad muutuda liiga targaks

Üks suurimaid riske otsustuspuudega töötamisel, olgu need siis tavalisel kujul või võimendatud või juhuslike metsaansamblite osana, on üleliigne sobitamine ja nende mõistmine. eelarvamuse ja dispersiooni kompromiss aitab selgitada, miks mudel võib kasvada nii keeruliseks, et see jätab üldreeglite õppimise asemel meelde treeningandmed. Teoreetiliselt võib puu jaguneda seni, kuni iga leht vastab ühele treeningvalimile, saavutades teadaolevate andmete puhul täiusliku täpsuse, kuid nähtamatute näidete puhul halvasti.

Kärpimine on otsustuspuude ülepaigutatuse standardne lahendus ja see tähendab sisuliselt okste tagasilõikamist või puu kasvu piiramist, et mudel jääks mõistlikult lihtsaks. Paljud teegid ja raamistikud pakuvad parameetreid nagu maksimaalne sügavus, minimaalne valimite arv lehe kohta või minimaalne valimite arv jaotuse kohta, mis kontrollivad uute harude loomise viisi ja aega. Nende läviväärtuste suurendamine sunnib puud jaotuskäitumises konservatiivsemaks olema.

Näiteks Pythoni scikit-learnis näeb sageli puude seadistamiseks kasutatavaid parameetreid nagu max_depth, min_samples_leaf ja min_samples_split. Väiksem max_depth (maxsügavus) piirab küsimuste tasemete arvu, mida puu esitada saab. Suurem min_samples_leaf (min_samples_leaf) tagab, et iga leht esindab statistiliselt olulise suurusega näidete rühma. Suurem min_samples_split (min_samples_split) takistab mudelil uute harude loomist sõlmedest, kus on väga vähe valimeid.

Kuigi te ei pruugi scikit-learni JavaScriptis otse kasutada, kehtivad täpselt samad ideed ka siis, kui rakendate oma puuloogikat või kujundate otsustusstruktuuri käsitsi. Sa peaksid endalt alati küsima, kas uus haru esindab tõepoolest stabiilset mustrit või lihtsalt andmete müra. Kasutajatele suunatud otsustuspuudes võivad äärmiselt sügavad või väga spetsiifilised harud kasutajaid segadusse ajada ja liidese mõistmise raskemaks muuta.

Võimendatud ja ansamblimudelid leevendavad mõningaid ülekohaldamise probleeme, kombineerides paljusid nõrku õppijaid, kuid need võivad siiski ülekohalduda, kui hüperparameetrid on liiga agressiivsed. Puude arvu, nende sügavuse, õppimiskiiruse ja regulariseerimisterminite kontrollimine on kriitilise tähtsusega sellistes tootmiskeskkondades nagu Azure Machine Learning. Interaktiivse kogemuse disaini puhul on lihtsam tavaliselt parem, nii kasutajakogemuse kui ka töökindluse seisukohast.

Ühest otsustuspuust juhuslike metsadeni

Kui üks otsustuspuu on võimas, kuid habras, on juhuslik mets nagu puude komitee, mis hääletab koos, et jõuda stabiilsema ennustuseni. Idee on lihtne: treenite palju otsustuspuid, millest igaüks näeb veidi erinevat andmete ja atribuutide alamhulka, ning seejärel koondate nende väljundid. Klassifitseerimiseks hääletavad nad kõige levinuma klassi poolt; regressiooniks arvutate nende numbriliste ennustuste keskmise.

Juhuslikud metsad toovad juhuslikkust sisse kahel peamisel viisil: asendusega treeningnäidete valim (bootstrap-valim) ja iga jaotuse jaoks atribuutide juhusliku alamhulga valimine. See juhuslikkus muudab iga puu veidi erinevaks, seega ei kopeeri nad kõik samu vigu. Kombineerituna kipuvad üksikute puude vead üksteist tühistama, mis viib robustsema mudelini.

Ülesobitamise vaatenurgast üldistuvad juhuslikud metsad sageli paremini kui üks sügav puu, sest iga puu nägemus ja jagunemisviis on piiratud ning lõplik ennustus on paljude vaatenurkade keskmine. Teisisõnu, mudeli dispersioon väheneb ja saavutate stabiilsema käitumise erinevate andmekogumite lõikes.

Disaini taustaga inimene võib ette kujutada juhuslikku metsa kui erinevate disainerite loodud veidi erinevate otsustuskaartide kogumit, millest igaüks kasutab veidi erinevaid kriteeriume, ja seejärel koondajat, mis vaatab neid kõiki ja valib konsensusliku vastuse. Ükski kaart ei pea olema täiuslik; tarkus tuleb grupist.

Kuigi see artikkel keskendub otsustuspuudele ja üldisemalt võimendatud regressioonile, on juhuslike metsade taga peituv intuitsioon väga kasulik, kui hiljem uurite keerukamaid JavaScripti või Pythoni teeke, mis pakuvad metsa ja ansambli API-sid. Põhielement on alati sama: otsustuspuu, millest te nüüd aru saate.

Õppimisotsusepuud: oskused, märgid ja struktureeritud koolitus

Mitmed masinõppega seotud õppeteed ja kursused struktureerivad oma sisu otseselt otsustuspuude ümber, andes sageli märke või sertifikaate, kui olete kõik tegevused läbinud. Need programmid algavad tavaliselt sissejuhatusega otsustuspuudesse ja seejärel liiguvad läbi teemad, näiteks kuidas leida parim jaotus entroopia abil, Gini indeks või teabe juurdekasv, kuidas ja miks puid kärpida ning kuidas puud võrreldavad lineaarsete mudelitega.

Teekonnal võite käsitleda klassifitseerimise otsustuspuid, regressiooni otsustuspuid ning mudeli lihtsuse ja ennustusvõime vahelisi kompromisse. Paljude õppijate jaoks on puud masinõppe väravaalgoritmiks, kuna need vastavad sellele, kuidas inimesed loomulikult harude ja reeglite kaudu mõtlevad. Treenitud puu visualiseerimine teeb ilmseks, miks mudel tegi teatud valiku, mis on suurepärane viis intuitsiooni arendamiseks.

Kesktaseme kursused segavad tavaliselt kontseptuaalseid selgitusi praktiliste kodeerimisharjutustega sellistes programmeerimiskeeltes nagu Python, kasutades selliseid teeke nagu scikit-learn. Võite väikesel ilmastikuandmestikul puu luua, entroopia ja infokoguse käsitsi arvutada ning seejärel lasta raamatukogul raske töö ära teha ja lõplik struktuur visualiseerida. Need tegevused aitavad teil matemaatikat mudeli tegeliku käitumisega siduda.

Isegi kui teie eesmärk on lõpuks JavaScriptis otsustusloogika või regressioonipuude rakendamine, võib Pythonis harjutuste tegemine olla väga valgustav, sest enamik õppematerjale ja selgitusi on praegu kirjutatud selles ökosüsteemis. Kui oled asjaga harjunud, muutub põhiideede portimine tavalisele JS-ile – või taustateenuse kutsumine oma esiotsast – palju lihtsamaks.

Sellise kursuse läbimine tähendab tavaliselt, et olete harjunud entroopia, info hankimise, kärpimisstrateegiate, klassifitseerimis- ja regressioonipuude erinevustega ning mõistate, millal puud edestavad lihtsaid lineaarseid mudeleid ja millal need ei pruugi olla parim valik. Need põhioskused on täpselt see, mida vajad enne, kui hakkad tootmiskeskkondades keerukamaid ansambleid, näiteks võimendatud puid, juhuslikke metsi või gradiendiga võimendatud otsustuspuid, ehitama.

Klõpsatava otsustuspuu loomine tavalises JavaScriptis

Liigume tagasi teie konkreetse probleemi juurde: teil on joonistatud otsustuspuu ja te soovite klõpsatavat prototüüpi tavalises JavaScriptis, ilma raamistiketa, ideaalis midagi sellist nagu CodePen, mida saab kohandada. Paljud inimesed leiavad demosid, näiteks vanu pliiatseid, mis visualiseerivad puid ja pakuvad kasutajakogemuse funktsioone, näiteks „Kuva vanemad” või „Tagasi”, ning satuvad segadusse, kui koodiridade eemaldamine põhjustab kogu puu järsku kadumist.

Peamine põhjus, miks puu kaob pealtnäha mitteseotud osade eemaldamisel, on see, et need osad vastutavad sageli visualiseeringu initsialiseerimise, renderdamise või värskendamise eest. Näiteks võite kustutada koodi, mis seadistab sündmuste kuulajaid või kutsub esile renderdamisfunktsiooni, eeldades, et see on mõeldud ainult kasutajaliidese lisavalikute jaoks, kuid tegelikult loob see funktsioon laadimisel ka algse puu. Selle eemaldamisel ei joonista miski enam graafikut ekraanile.

Kui vajate sõlmede vahel liikumiseks ainult lihtsat nuppu „Tagasi”, ei vaja te tegelikult keerukat teeki; teil on vaja lihtsalt selget viisi oma puu esitamiseks JavaScriptis ja väikest DOM-manipulatsiooni. Levinud muster on salvestada puu pesastatud objektina, kus igal sõlmel on küsimus või pealkiri, laste loend ja valikuliselt viide vanemale. Seejärel jälgitakse praegust sõlme muutujas ja renderdatakse küsimus ja vastused iga kord, kui kasutaja klõpsab, uuesti.

„Tagasi“ rakendamiseks saate salvestada kasutaja läbitud tee massiivi (pinu) ja lisada eelmise sõlme nupu klõpsamisel. Teise võimalusena saab iga sõlm viidata otse oma ülemsõlmele, nii et tagasiminek on sama lihtne kui määrata currentNode = currentNode.parent ja uuesti renderdada. See lähenemisviis kasutab lihtsaid andmestruktuure, kuid annab teile täpselt soovitud kasutajakogemuse.

Kui muudate olemasolevat CodePeni, pöörake tähelepanu initsialiseerimiskoodile, mis käivitub lehe laadimisel, ja kõigile nuppude või linkidega seotud sündmusekäitlejatele. Enne funktsiooni kustutamist otsi üles, kus seda kasutatakse: kui see on ainus koht, mis kutsub puu joonistamisrutiini esile, tuleb see alles hoida või asendada alternatiiviga. Koodi saab ümber faktoreerida ka puhta renderdusloogika eraldi funktsioonina, kutsudes seda nii lehe laadimisel kui ka navigeerimissündmustel, eemaldades samal ajal ohutult mitteseotud funktsioonid, näiteks „näita vanemaid”.

Kuna mainisid, et soovid tavalises JS-is midagi minimaalset, kaalu alustamist väga väikesest prototüübist, mis renderdab ainult tekstisõlmi ja valikute nuppe. Kui põhinavigatsioon töötab laitmatult ja „Tagasi” nupp käitub ootuspäraselt, saate seda samm-sammult täiustada: lisada CSS-stiile, võib-olla SVG-ühendusi sõlmede vahele ja alles hiljem uurida teeke keerukamate paigutuste jaoks.

Prototüübi kasutajaliidese puudest reaalsete regressioonimudeliteni

Kasutajaliidese otsustuspuu, mille kasutajad saavad klõpsamiseks kõvakoodi abil luua, ja tõelise regressioonipuu mudeli vahel, mis õpib andmetest, on oluline erinevus, kuid neil on sama kontseptuaalne struktuur. Mõlemal juhul on teil tingimustega sõlmed, vastustel põhinevad harud ja lehed, mis väljastavad mingi tulemuse, olgu see siis soovitus või arv.

Käsitsi loodud liidese puhul kujundate kõik küsimused ja tulemused ise, mängides tõhusalt õppealgoritmi rolli. Masinõppe kontekstis seevastu õpib selline algoritm nagu gradiendi võimendamine need jaotused andmestikust, juhindudes sellistest kriteeriumidest nagu entroopia, info juurdekasv või dispersiooni vähendamine. Te ei määra puud otse, vaid annate näiteid ja lasete algoritmil struktuuri avastada.

Praktiline töövoog on esmalt rakendada kasutajaliidese puu, mis vastab teie praegusele arusaamale probleemist, ja hiljem, reaalsete andmete kogumisel, asendada käsitsi loodud loogika õpitud mudeliga. Seda mudelit saab treenida Pythonis või Azure Machine Learningus, eksportida JSON-ina või muus kaasaskantavas vormingus ja seejärel laadida teie JavaScripti rakenduse poolt. Iga puud või ansamblit saab esitada pesastatud objektidena, mida teie esiosa läbib ennustuste tegemiseks või kasutajale selgituse genereerimiseks.

Mõnes tootes kombineerivad meeskonnad mõlemat lähenemisviisi: õpitud mudelit numbrilise skoori või soovituse arvutamiseks ja eraldi inimese loodud puud, mis struktureerib küsimuste esitamise viisi liideses. Näiteks võib teie mudel hinnata edu tõenäosust, samas kui kasutajaliidese puu korraldab küsimused viisil, mis tundub kasutajatele loomulik ja vastab kasutajauuringutest tuletatud mentaalsele mudelile.

Teoreetilise poole – entroopia, info juurdekasv, gradiendi võimendamine, üle sobitamine ja kärpimine – mõistmine aitab teil teada saada, millal teie kasutajaliidese struktuur võib olla eksitav või millal on õpitud mudeli puu liiga keeruline ja vajab piiranguid. Selle teadmisega saate kujundada visualiseeringuid ja interaktsioone, mis mitte ainult ei näe head välja, vaid peegeldavad ka tõetruult seda, kuidas alusmudel otsuseid langetab.

Kokkuvõttes pakuvad otsustuspuud eriti sõbralikku silda visuaalse disaini, intuitiivse arutluskäigu ja range masinõppe vahel, mistõttu neid kursustel, märkidel ja platvormidel, näiteks Azure Machine Learning, nii silmapaistvalt esile tõstetakse. Kui olete põhitõed omandanud ja mõne lihtsa JavaScripti prototüübiga harjutanud, olete kindlal positsioonil, et uurida keerukamaid ansambleid, nagu võimendatud regressioonipuud ja juhuslikud metsad, ning integreerida neid mudeleid reaalsetesse veebirakendustesse ilma eksinud tunnet tundmata.

regresión de árboles de decisión desde cero
Seotud artikkel:
Otsustuspuu regressioon nullist: teooria ja praktika
Seonduvad postitused: