## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/)
## Uvod
U ovom kurikulumu počet ćete otkrivati kako strojno učenje može utjecati na naše svakodnevne živote. Već sada sustavi i modeli sudjeluju u svakodnevnim zadacima donošenja odluka, poput dijagnoza u zdravstvenoj skrbi, odobravanja kredita ili otkrivanja prijevara. Stoga je važno da ti modeli dobro funkcioniraju kako bi pružili pouzdane rezultate. Kao i svaka softverska aplikacija, sustavi umjetne inteligencije mogu podbaciti u ispunjavanju očekivanja ili imati neželjene ishode. Zato je ključno razumjeti i objasniti ponašanje AI modela.
U ovom nastavnom programu počet ćete otkrivati kako strojno učenje može utjecati i utječe na naše svakodnevne živote. Čak i sada, sustavi i modeli sudjeluju u svakodnevnim odlukama, poput medicinskih dijagnoza, odobravanja kredita ili otkrivanja prijevara. Stoga je važno da ti modeli dobro funkcioniraju kako bi pružili rezultate koji su pouzdani. Baš kao i svaka softverska aplikacija, AI sustavi mogu razočarati ili imati neželjeni ishod. Zato je bitno razumjeti i objasniti ponašanje AI modela.
Zamislite što se može dogoditi kada podaci koje koristite za izgradnju tih modela nedostaju određene demografske skupine, poput rase, spola, političkih stavova, religije, ili kada su te demografske skupine neproporcionalno zastupljene. Što ako se izlaz modela interpretira tako da favorizira određenu demografsku skupinu? Koje su posljedice za aplikaciju? Osim toga, što se događa kada model ima negativan ishod koji šteti ljudima? Tko je odgovoran za ponašanje AI sustava? Ovo su neka od pitanja koja ćemo istražiti u ovom kurikulumu.
Zamislite što se može dogoditi kada podaci koje koristite za izradu tih modela nedostaju određenih demografskih skupina, poput rase, spola, političkog stava, religije, ili ako takve skupine neproporcionalno zastupaju. Što ako se izlaz modela tumaci u korist neke demografske skupine? Koja je posljedica za aplikaciju? Nadalje, što se događa kada model ima neželjeni ishod i štetan je za ljude? Tko je odgovoran za ponašanje AI sustava? To su neka od pitanja koja ćemo istražiti u ovom nastavnom programu.
U ovoj lekciji ćete:
U ovom ćete satu:
- Povećati svijest o važnosti pravednosti u strojnome učenju i štetama povezanim s nepravednošću.
- Upoznati se s praksom istraživanja odstupanja i neobičnih scenarija kako biste osigurali pouzdanost i sigurnost.
- Steći razumijevanje o potrebi osnaživanja svih kroz dizajniranje inkluzivnih sustava.
- Istražiti koliko je važno zaštititi privatnost i sigurnost podataka i ljudi.
- Uvidjeti važnost pristupa "staklene kutije" za objašnjavanje ponašanja AI modela.
- Biti svjesni kako je odgovornost ključna za izgradnju povjerenja u AI sustave.
- Povećati svoju svijest o važnosti pravičnosti u strojnog učenja i štetama povezanim s pravičnošću.
- Upoznati se s praksom istraživanja odstupanja i neuobičajenih scenarija kako bi se osigurala pouzdanost i sigurnost
- Steći razumijevanje potrebe za osnaživanjem svih kroz dizajniranje inkluzivnih sustava
- Istražiti koliko je vitalno zaštititi privatnost i sigurnost podataka i ljudi
- Vidjeti važnost pristupa "staklene kutije" za objašnjavanje ponašanja AI modela
- Biti svjestan kako je odgovornost ključna za izgradnju povjerenja u AI sustave
## Preduvjeti
## Preduvjet
Kao preduvjet, molimo vas da završite "Principi odgovorne umjetne inteligencije" Learn Path i pogledate videozapis u nastavku na tu temu:
Kao preduvjet, molimo da prođete "Principi odgovornog AI-ja" učenja i pogledate video u nastavku o toj temi:
Saznajte više o odgovornoj umjetnoj inteligenciji prateći ovaj [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
Saznajte više o odgovornom AI-ju slijedeći ovaj [Učni put](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
[](https://youtu.be/dnC8-uUZXSc "Microsoftov pristup odgovornoj umjetnoj inteligenciji")
[](https://youtu.be/dnC8-uUZXSc "Microsoftov pristup odgovornom AI-ju")
> 🎥 Kliknite na sliku iznad za video: Microsoftov pristup odgovornoj umjetnoj inteligenciji
> 🎥 Kliknite sliku gore za video: Microsoftov pristup odgovornom AI-ju
## Pravednost
## Pravičnost
AI sustavi trebali bi tretirati sve ljude jednako i izbjegavati različito utjecanje na slične skupine ljudi. Na primjer, kada AI sustavi pružaju smjernice o medicinskom tretmanu, aplikacijama za kredite ili zapošljavanju, trebali bi davati iste preporuke svima sličnih simptoma, financijskih okolnosti ili profesionalnih kvalifikacija. Svaki od nas kao ljudi nosi naslijeđene pristranosti koje utječu na naše odluke i postupke. Te pristranosti mogu biti vidljive u podacima koje koristimo za treniranje AI sustava. Takva manipulacija ponekad se događa nenamjerno. Često je teško svjesno znati kada uvodite pristranost u podatke.
AI sustavi trebaju prema svima postupati pravično i izbjegavati utjecaj na slične skupine ljudi na različite načine. Na primjer, kada AI sustavi daju smjernice o medicinskom liječenju, zahtjevima za kredit ili zaposlenje, trebaju davati iste preporuke svima sa sličnim simptomima, financijskim okolnostima ili stručnim kvalifikacijama. Svaki od nas kao ljudi nosi naslijeđene pristranosti koje utječu na naše odluke i postupke. Te se pristranosti mogu očitovati u podacima koje koristimo za školovanje AI sustava. Takva manipulacija ponekad se događa i nenamjerno. Često je teško svjesno znati kada uvodite pristranost u podatke.
**"Nepravednost"** obuhvaća negativne utjecaje ili "štete" za skupinu ljudi, poput onih definiranih prema rasi, spolu, dobi ili statusu invaliditeta. Glavne štete povezane s pravednošću mogu se klasificirati kao:
**"Nepravednost"** obuhvaća negativne utjecaje ili "štete" za skupinu ljudi, kao što su one definirane prema rasi, spolu, dobi ili statusu invalidnosti. Glavne štete povezane s pravičnošću mogu se klasificirati kao:
- **Dodjela**, ako je, na primjer, spol ili etnička pripadnost favorizirana u odnosu na drugu.
- **Kvaliteta usluge**. Ako trenirate podatke za jedan specifičan scenarij, ali stvarnost je mnogo složenija, to dovodi do loše izvedbe usluge. Na primjer, dozator sapuna koji ne može prepoznati ljude s tamnom kožom. [Referenca](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **Omalovažavanje**. Nepravedno kritiziranje i označavanje nečega ili nekoga. Na primjer, tehnologija za označavanje slika neslavno je pogrešno označila slike tamnoputih ljudi kao gorile.
- **Prekomjerna ili nedovoljna zastupljenost**. Ideja da određena skupina nije viđena u određenoj profesiji, a svaka usluga ili funkcija koja to nastavlja promovirati doprinosi šteti.
- **Stereotipiziranje**. Povezivanje određene skupine s unaprijed dodijeljenim atributima. Na primjer, sustav za prevođenje između engleskog i turskog može imati netočnosti zbog riječi sa stereotipnim asocijacijama na spol.
- **Dodjela**, ako se primjerice favorizira neki spol ili etnička skupina u odnosu na drugu.
- **Kvaliteta usluge**. Ako ste obrađivali podatke za jedan određeni scenarij, ali je stvarnost puno složenija, to vodi do slabog kvalitativnog pružanja usluge. Na primjer, dozator sapuna koji nije mogao prepoznati ljude s tamnom puti. [Referenca](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **Ocrnjivanje**. Nepravedno kritizirati i etiketirati nešto ili nekoga. Na primjer, tehnologija za označavanje slika zloglasno je pogrešno označila slike tamnoputih ljudi kao gorile.
- **Prevelika ili premala zastupljenost**. Ideja je da neka skupina nije vidljiva u određenoj profesiji, i bilo koja usluga ili funkcija koja to nastavlja promovirati pridonosi šteti.
- **Stereotipiziranje**. Povezivanje određene skupine s unaprijed dodijeljenim atributima. Na primjer, sustav za prevođenje između engleskog i turskog može imati netočnosti zbog riječi s stereotipnim povezivanjem s polom.


> prijevod na turski


> prijevod natrag na engleski
Prilikom dizajniranja i testiranja AI sustava, moramo osigurati da AI bude pravedan i da nije programiran za donošenje pristranih ili diskriminatornih odluka, koje su zabranjene i ljudima. Osiguravanje pravednosti u AI i strojnome učenju ostaje složen sociotehnički izazov.
Prilikom dizajniranja i testiranja AI sustava trebamo osigurati da AI bude pravičan i da nije programiran za donošenje pristranih ili diskriminirajućih odluka, što je ljudima također zabranjeno. Jamčenje pravičnosti u AI-ju i strojnog učenja i dalje je složen sociotehnički izazov.
### Pouzdanost i sigurnost
Kako bismo izgradili povjerenje, AI sustavi moraju biti pouzdani, sigurni i dosljedni u normalnim i neočekivanim uvjetima. Važno je znati kako će se AI sustavi ponašati u raznim situacijama, posebno kada su u pitanju odstupanja. Prilikom izgradnje AI rješenja, potrebno je posvetiti značajnu pažnju tome kako se nositi s raznim okolnostima koje AI rješenja mogu susresti. Na primjer, samovozeći automobil mora staviti sigurnost ljudi kao glavni prioritet. Kao rezultat toga, AI koji pokreće automobil mora uzeti u obzir sve moguće scenarije s kojima se automobil može susresti, poput noći, oluja, snježnih mećava, djece koja trče preko ulice, kućnih ljubimaca, radova na cesti itd. Koliko dobro AI sustav može pouzdano i sigurno upravljati širokim rasponom uvjeta odražava razinu predviđanja koju je podatkovni znanstvenik ili AI programer uzeo u obzir tijekom dizajna ili testiranja sustava.
Da bi izgradili povjerenje, AI sustavi trebaju biti pouzdani, sigurni i dosljedni u normalnim i neočekivanim uvjetima. Važno je znati kako će se AI sustavi ponašati u različitim situacijama, posebno u slučaju odstupanja. Prilikom izrade AI rješenja potrebno je posvetiti značajnu pažnju načinu rukovanja širokim spektrom okolnosti s kojima se AI rješenja mogu susresti. Na primjer, autonomni automobil mora sigurnost ljudi staviti na prvo mjesto. Kao rezultat, AI koji pokreće automobil mora uzeti u obzir sve moguće scenarije na koje bi automobil mogao naići, poput noći, oluja ili mećava, djece koja prelaze cestu, kućnih ljubimaca, cestovnih radova itd. Koliko dobro AI sustav može pouzdano i sigurno upravljati širokim rasponom uvjeta odražava razinu anticipacije koju je znanstvenik podataka ili AI programer imao tijekom dizajna ili testiranja sustava.
> [🎥 Kliknite ovdje za video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inkluzivnost
### Uključivost
AI sustavi trebali bi biti dizajnirani tako da angažiraju i osnažuju sve ljude. Prilikom dizajniranja i implementacije AI sustava, podatkovni znanstvenici i AI programeri identificiraju i rješavaju potencijalne prepreke u sustavu koje bi mogle nenamjerno isključiti ljude. Na primjer, postoji 1 milijarda ljudi s invaliditetom diljem svijeta. S napretkom AI-a, oni mogu lakše pristupiti širokom rasponu informacija i prilika u svakodnevnom životu. Rješavanjem prepreka stvaraju se prilike za inovacije i razvoj AI proizvoda s boljim iskustvima koja koriste svima.
AI sustavi trebaju biti dizajnirani tako da uključuju i osnažuju svakoga. Prilikom dizajniranja i implementacije AI sustava znanstvenici podataka i AI programeri prepoznaju i uklanjaju potencijalne prepreke u sustavu koje bi nenamjerno mogle isključiti ljude. Na primjer, oko milijardu ljudi u svijetu ima invaliditet. S napretkom AI-ja oni mogu lakše pristupiti širokom rasponu informacija i prilika u svakodnevnom životu. Uklanjanjem prepreka stvara se prilika za inovacije i razvoj AI proizvoda s boljim iskustvima od kojih svi imaju koristi.
> [🎥 Kliknite ovdje za video: inkluzivnost u AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
> [🎥 Kliknite ovdje za video: uključivost u AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Sigurnost i privatnost
AI sustavi trebali bi biti sigurni i poštovati privatnost ljudi. Ljudi imaju manje povjerenja u sustave koji ugrožavaju njihovu privatnost, informacije ili živote. Prilikom treniranja modela strojnog učenja, oslanjamo se na podatke kako bismo postigli najbolje rezultate. Pritom se mora uzeti u obzir podrijetlo podataka i njihov integritet. Na primjer, jesu li podaci korisnički dostavljeni ili javno dostupni? Nadalje, dok radimo s podacima, ključno je razviti AI sustave koji mogu zaštititi povjerljive informacije i odoljeti napadima. Kako AI postaje sve prisutniji, zaštita privatnosti i osiguranje važnih osobnih i poslovnih informacija postaje sve kritičnija i složenija. Problemi privatnosti i sigurnosti podataka zahtijevaju posebnu pažnju za AI jer je pristup podacima ključan za to da AI sustavi donose točne i informirane predikcije i odluke o ljudima.
AI sustavi trebaju biti sigurni i poštivati privatnost ljudi. Ljudi manje vjeruju sustavima koji ugrožavaju njihovu privatnost, informacije ili živote. Prilikom treniranja modela strojnog učenja oslanjamo se na podatke kako bismo proizveli najbolje rezultate. Pri tome treba uzeti u obzir porijeklo podataka i njihovu cjelovitost. Na primjer, jesu li podaci koje je korisnik dostavio ili su javno dostupni? Nadalje, tijekom rada s podacima bitno je razviti AI sustave koji mogu zaštititi povjerljive informacije i odoljeti napadima. Kako AI postaje sve češći, zaštita privatnosti i sigurnost važnih osobnih i poslovnih podataka postaju kritičniji i složeniji. Pitanja privatnosti i sigurnosti podataka zahtijevaju posebno pomnu pažnju u AI-ju jer je pristup podacima ključan za točno i informirano predviđanje i donošenje odluka o ljudima.
> [🎥 Kliknite ovdje za video: sigurnost u AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Kliknite ovdje za video: sigurnost u AI-ju](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Industrija je postigla značajan napredak u privatnosti i sigurnosti, potaknut značajno regulativama poput GDPR-a (Opća uredba o zaštiti podataka).
- Ipak, s AI sustavima moramo priznati napetost između potrebe za više osobnih podataka kako bi sustavi bili osobniji i učinkovitiji – i privatnosti.
- Kao i s pojavom povezanih računala putem interneta, također vidimo veliki porast broja sigurnosnih problema povezanih s AI-jem.
- Istovremeno, vidimo da se AI koristi za poboljšanje sigurnosti. Na primjer, većina modernih antivirusnih skenera danas se pokreće AI heuristikom.
- Moramo osigurati da naši procesi podatkovne znanosti skladno surađuju s najnovijim praksama privatnosti i sigurnosti.
- Kao industrija postigli smo značajan napredak u privatnosti i sigurnosti, što je uvelike potaknuto regulativama poput GDPR-a (Opća uredba o zaštiti podataka).
- Ipak, kod AI sustava moramo priznati napetost između potrebe za više osobnih podataka kako bi sustavi bili osobniji i učinkovitiji – i privatnosti.
- Kao i kod pojave povezanih računala s internetom, vidimo i veliki porast sigurnosnih problema vezanih za AI.
- Istodobno, vidi se da se AI koristi za poboljšanje sigurnosti. Na primjer, većina modernih antivirusnih skenera danas se temelji na AI heuristikama.
- Trebamo osigurati da naši procesi znanosti o podacima skladno prate najnovije prakse privatnosti i sigurnosti.
### Transparentnost
AI sustavi trebali bi biti razumljivi. Ključni dio transparentnosti je objašnjavanje ponašanja AI sustava i njihovih komponenti. Poboljšanje razumijevanja AI sustava zahtijeva da dionici shvate kako i zašto funkcioniraju kako bi mogli identificirati potencijalne probleme s izvedbom, zabrinutosti za sigurnost i privatnost, pristranosti, isključujuće prakse ili neželjene ishode. Također vjerujemo da oni koji koriste AI sustave trebaju biti iskreni i otvoreni o tome kada, zašto i kako odlučuju implementirati te sustave, kao i o ograničenjima sustava koje koriste. Na primjer, ako banka koristi AI sustav za podršku svojim odlukama o kreditiranju potrošača, važno je ispitati ishode i razumjeti koji podaci utječu na preporuke sustava. Vlade počinju regulirati AI u različitim industrijama, pa podatkovni znanstvenici i organizacije moraju objasniti ispunjava li AI sustav regulatorne zahtjeve, posebno kada dođe do neželjenog ishoda.
### Transparentnost
AI sustavi trebaju biti razumljivi. Ključni dio transparentnosti je objašnjavanje ponašanja AI sustava i njihovih komponenti. Poboljšanje razumijevanja AI sustava zahtijeva da dionici shvate kako i zašto oni funkcioniraju kako bi mogli identificirati potencijalne probleme performansi, zabrinutosti oko sigurnosti i privatnosti, pristranosti, isključujuće prakse ili neželjene ishode. Također smatramo da oni koji koriste AI sustave trebaju biti iskreni i otvoreni o tome kada, zašto i kako odlučuju koristiti te sustave. Kao i o ograničenjima sustava koje koriste. Na primjer, ako banka koristi AI sustav za podršku odlukama o kreditiranju potrošača, važno je pregledati rezultate i razumjeti koji podaci utječu na preporuke sustava. Vlade počinju regulirati AI u svim industrijama, pa znanstvenici podataka i organizacije moraju objasniti zadovoljava li AI sustav regulatorne zahtjeve, posebno kada postoji neželjeni ishod.
> [🎥 Kliknite ovdje za video: transparentnost u AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Kliknite ovdje za video: transparentnost u AI-ju](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Budući da su AI sustavi toliko složeni, teško je razumjeti kako funkcioniraju i interpretirati rezultate.
- Budući da su AI sustavi vrlo složeni, teško je razumjeti kako funkcioniraju i protumačiti rezultate.
- Taj nedostatak razumijevanja utječe na način na koji se ti sustavi upravljaju, operacionaliziraju i dokumentiraju.
- Taj nedostatak razumijevanja još važnije utječe na odluke donesene na temelju rezultata koje ti sustavi proizvode.
- Još važnije, taj nedostatak razumijevanja utječe na odluke koje se donose koristeći rezultate koje ti sustavi proizvode.
### Odgovornost
Osobe koje dizajniraju i implementiraju AI sustave moraju biti odgovorne za njihovo funkcioniranje. Potreba za odgovornošću posebno je važna kod osjetljivih tehnologija poput prepoznavanja lica. Nedavno raste potražnja za tehnologijom prepoznavanja lica, osobito od strane policijskih organa koji uviđaju potencijal tehnologije u primjeni poput pronalaska nestale djece. Međutim, te se tehnologije potencijalno mogu koristiti od strane vlade da ugroze temeljna građanska prava, na primjer omogućavanjem kontinuiranog nadzora određenih osoba. Stoga znanstvenici podataka i organizacije moraju biti odgovorni za utjecaj svog AI sustava na pojedince ili društvo.
Ljudi koji dizajniraju i implementiraju AI sustave moraju biti odgovorni za način na koji njihovi sustavi funkcioniraju. Potreba za odgovornošću posebno je važna kod osjetljivih tehnologija poput prepoznavanja lica. Nedavno je porasla potražnja za tehnologijom prepoznavanja lica, posebno od strane organizacija za provedbu zakona koje vide potencijal tehnologije u primjenama poput pronalaženja nestale djece. Međutim, te tehnologije potencijalno bi mogle biti korištene od strane vlada za ugrožavanje temeljnih sloboda građana, primjerice omogućavanjem kontinuiranog nadzora određenih pojedinaca. Stoga podatkovni znanstvenici i organizacije moraju biti odgovorni za način na koji njihov AI sustav utječe na pojedince ili društvo.
[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftov pristup odgovornoj umjetnoj inteligenciji")
[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftov pristup odgovornom AI-ju")
> 🎥 Kliknite na sliku iznad za video: Upozorenja o masovnom nadzoru putem prepoznavanja lica
> 🎥 Kliknite sliku gore za video: Upozorenja o masovnom nadzoru putem prepoznavanja lica
Na kraju, jedno od najvećih pitanja za našu generaciju, kao prvu generaciju koja donosi AI u društvo, jest kako osigurati da računala ostanu odgovorna ljudima i kako osigurati da ljudi koji dizajniraju računala ostanu odgovorni svima ostalima.
U konačnici, jedno od najvećih pitanja za naše generacije, kao prve generacije koje donose AI društvu, jest kako osigurati da računala ostanu odgovorna ljudima i kako osigurati da ljudi koji dizajniraju računala ostanu odgovorni svima ostalima.
## Procjena utjecaja
Prije treniranja modela strojnog učenja, važno je provesti procjenu utjecaja kako biste razumjeli svrhu AI sustava; koja je namjeravana upotreba; gdje će biti implementiran; i tko će komunicirati sa sustavom. Ovo je korisno za recenzente ili testere koji procjenjuju sustav kako bi znali koje čimbenike uzeti u obzir prilikom identificiranja potencijalnih rizika i očekivanih posljedica.
Prije treniranja modela strojnog učenja važno je provesti procjenu utjecaja kako bi se razumjela svrha AI sustava; čemu je namijenjen; gdje će se koristiti; i tko će komunicirati sa sustavom. To pomaže pregledavateljima ili testerima u procjeni na što treba obratiti pažnju pri identificiranju potencijalnih rizika i očekivanih posljedica.
Sljedeća su područja fokusa prilikom provođenja procjene utjecaja:
Sljedeća područja su fokus pri provođenju procjene utjecaja:
* **Negativan utjecaj na pojedince**. Svijest o bilo kakvim ograničenjima ili zahtjevima, nepodržanoj upotrebi ili poznatim ograničenjima koja ometaju izvedbu sustava ključna je kako bi se osiguralo da sustav nije korišten na način koji bi mogao nanijeti štetu pojedincima.
* **Zahtjevi za podatke**. Razumijevanje kako i gdje će sustav koristiti podatke omogućuje recenzentima da istraže sve zahtjeve za podatke na koje treba obratiti pažnju (npr. GDPR ili HIPPA regulative). Osim toga, provjerite je li izvor ili količina podataka dovoljna za treniranje.
* **Sažetak utjecaja**. Prikupite popis potencijalnih šteta koje bi mogle nastati korištenjem sustava. Tijekom životnog ciklusa ML-a, provjerite jesu li identificirani problemi ublaženi ili riješeni.
* **Primjenjivi ciljevi** za svaki od šest osnovnih principa. Procijenite jesu li ciljevi iz svakog principa ispunjeni i postoje li praznine.
* **Neželjeni utjecaj na pojedince**. Svijest o bilo kakvim ograničenjima ili zahtjevima, nepodržanoj uporabi ili poznatim ograničenjima koja ometaju učinkovitost sustava ključna je da se sustav ne koristi na način koji bi mogao štetiti pojedincima.
* **Zahtjevi za podatke**. Razumijevanje kako i gdje će sustav koristiti podatke omogućuje pregledavateljima da prouče moguće zahtjeve za podatke kojima treba obratiti pozornost (npr., GDPR ili HIPAA regulative o podacima). Također, treba razmotriti je li izvor ili količina podataka dovoljna za treniranje.
* **Sažetak utjecaja**. Prikupiti popis potencijalnih šteta koje mogu proizaći iz korištenja sustava. Tijekom životnog ciklusa ML-a redovito se provjerava jesu li identificirani problemi ublaženi ili riješeni.
* **Primjenjivi ciljevi** za svaki od šest osnovnih principa. Procijeniti zadovoljavaju li se ciljevi svakog principa i postoje li praznine.
## Otklanjanje pogrešaka s odgovornom umjetnom inteligencijom
Slično otklanjanju pogrešaka u softverskoj aplikaciji, otklanjanje pogrešaka u AI sustavu nužan je proces identificiranja i rješavanja problema u sustavu. Postoji mnogo čimbenika koji mogu utjecati na to da model ne funkcionira kako se očekuje ili odgovorno. Većina tradicionalnih metrika izvedbe modela su kvantitativni agregati izvedbe modela, što nije dovoljno za analizu kako model krši principe odgovorne umjetne inteligencije. Nadalje, model strojnog učenja je "crna kutija" koja otežava razumijevanje što pokreće njegov ishod ili pružanje objašnjenja kada pogriješi. Kasnije u ovom tečaju naučit ćemo kako koristiti nadzornu ploču odgovorne umjetne inteligencije za pomoć pri otklanjanju pogrešaka u AI sustavima. Nadzorna ploča pruža holistički alat za podatkovne znanstvenike i AI programere za obavljanje:
## Debugging s odgovornim AI-jem
* **Analize pogrešaka**. Identificiranje distribucije pogrešaka modela koje mogu utjecati na pravednost ili pouzdanost sustava.
* **Pregleda modela**. Otkrivanje gdje postoje razlike u izvedbi modela među skupovima podataka.
* **Analize podataka**. Razumijevanje distribucije podataka i identificiranje potencijalne pristranosti u podacima koja bi mogla dovesti do problema s pravednošću, inkluzivnošću i pouzdanošću.
* **Interpretacije modela**. Razumijevanje što utječe ili utječe na predikcije modela. Ovo pomaže u objašnjavanju ponašanja modela, što je važno za transparentnost i odgovornost.
Slično kao debugiranje softverske aplikacije, debugiranje AI sustava je potreban proces identificiranja i rješavanja problema u sustavu. Puno je čimbenika koji mogu utjecati na to da model ne radi prema očekivanjima ili nije odgovoran. Većina tradicionalnih metričkih pokazatelja performansi modela su kvantitativni zbrojevi učinkovitosti modela, koji nisu dovoljni za analizu kako model krši principe odgovornog AI-ja. Nadalje, model strojnog učenja je crna kutija što otežava razumijevanje što pokreće njegov ishod ili pruža objašnjenje kada pogriješi. Kasnije u ovom tečaju naučit ćemo kako koristiti Responsible AI nadzornu ploču za pomoć u debugiranju AI sustava. Nadzorna ploča pruža holistički alat za znanstvenike podataka i AI programere za izvođenje:
## 🚀 Izazov
* **Analize pogrešaka**. Za identifikaciju raspodjele pogrešaka modela koje mogu utjecati na pravičnost ili pouzdanost sustava.
* **Pregled modela**. Za otkrivanje razlika u učinkovitosti modela među skupinama podataka.
* **Analizu podataka**. Za razumijevanje raspodjele podataka i identifikaciju potencijalnih pristranosti u podacima koje bi mogle dovesti do problema pravičnosti, uključivosti i pouzdanosti.
* **Interpretabilnost modela**. Za razumijevanje što utječe ili oblikuje predviđanja modela. Ovo pomaže pri objašnjavanju ponašanja modela što je važno za transparentnost i odgovornost.
Kako bismo spriječili da se štete uopće uvedu, trebali bismo:
- imati raznolikost pozadina i perspektiva među ljudima koji rade na sustavima
## 🚀 Izazov
Da bismo spriječili da se štete uopće jave, trebali bismo:
- imati različita podrijetla i perspektive među ljudima koji rade na sustavima
- ulagati u skupove podataka koji odražavaju raznolikost našeg društva
- razviti bolje metode tijekom životnog ciklusa strojnog učenja za otkrivanje i ispravljanje odgovorne umjetne inteligencije kada se pojavi
- razvijati bolje metode kroz životni ciklus strojnog učenja za otkrivanje i ispravljanje odgovornog AI-ja kad se pojavi
Razmislite o stvarnim scenarijima gdje nepouzdanost modela postaje očita u izgradnji i korištenju modela. Što još bismo trebali uzeti u obzir?
## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
## Pregled i samostalno učenje
Razmislite o stvarnim scenarijima gdje je nepouzdanost modela očita u
Pogledajte ovu radionicu za dublje razumijevanje tema:
U ovoj lekciji naučili ste osnove pojmova pravednosti i nepravednosti u strojnome učenju.
Pogledajte ovaj radionicu za dublje razumijevanje tema:
- U potrazi za odgovornom umjetnom inteligencijom: Primjena principa u praksi od Besmire Nushi, Mehrnoosh Sameki i Amita Sharme
- U potrazi za odgovornom umjetnom inteligencijom: Primjena principa u praksi by Besmira Nushi, Mehrnoosh Sameki i Amit Sharma
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Otvoreni okvir za izgradnju odgovorne umjetne inteligencije")
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
> 🎥 Kliknite na sliku iznad za video: RAI Toolbox: Otvoreni okvir za izgradnju odgovorne umjetne inteligencije od Besmire Nushi, Mehrnoosh Sameki i Amita Sharme
> 🎥 Kliknite na gornju sliku za video: RAI Toolbox: Otvoreni okvir za izgradnju odgovorne umjetne inteligencije by Besmira Nushi, Mehrnoosh Sameki i Amit Sharma
Također, pročitajte:
Također, pročitajte:
- Microsoftov centar resursa za odgovornu umjetnu inteligenciju: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoftov centar resursa za odgovornu umjetnu inteligenciju: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoftova FATE istraživačka grupa: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Microsoftova istraživačka grupa FATE: [FATE: Poštenje, Odgovornost, Transparentnost i Etika u AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
RAI Toolbox:
RAI Toolbox:
- [Responsible AI Toolbox GitHub repozitorij](https://github.com/microsoft/responsible-ai-toolbox)
Pročitajte o alatima Azure Machine Learninga za osiguranje pravednosti:
Ovaj dokument je preveden korištenjem AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Napomena**:
Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.
> ### [Ova lekcija je dostupna i na R jeziku!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
> ### [Ova lekcija je dostupna na R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Uvod
U ove četiri lekcije otkrit ćete kako izgraditi regresijske modele. Uskoro ćemo razgovarati o tome za što se koriste. No prije nego što krenete, provjerite imate li sve potrebne alate za početak!
U ove četiri lekcije otkrit ćete kako izgraditi regresijske modele. Uskoro ćemo razgovarati čemu oni služe. No prije nego što išta napravite, pobrinite se da imate odgovarajuće alate za početak procesa!
U ovoj lekciji naučit ćete:
U ovoj lekciji naučit ćete kako:
- Kako konfigurirati svoje računalo za lokalne zadatke strojnog učenja.
- Kako raditi s Jupyter bilježnicama.
- Kako koristiti Scikit-learn, uključujući instalaciju.
- Kako istražiti linearnu regresiju kroz praktičnu vježbu.
- Konfigurirati svoje računalo za lokalne zadatke strojnog učenja.
- Raditi s Jupyter Notebookovima.
- Koristiti Scikit-learn, uključujući instalaciju.
- Istražiti linearnu regresiju kroz praktičnu vježbu.
## Instalacije i konfiguracije
[](https://youtu.be/-DfeD2k2Kj0 "ML za početnike - Pripremite alate za izgradnju modela strojnog učenja")
[](https://youtu.be/-DfeD2k2Kj0 "ML za početnike - Postavite svoje alate spremne za izgradnju modela strojnog učenja")
> 🎥 Kliknite na sliku iznad za kratki video o konfiguraciji vašeg računala za ML.
> 🎥 Kliknite na gornju sliku za kratak video o konfiguriranju računala za ML.
1. **Instalirajte Python**. Provjerite je li [Python](https://www.python.org/downloads/) instaliran na vašem računalu. Python ćete koristiti za mnoge zadatke vezane uz znanost o podacima i strojno učenje. Većina računalnih sustava već ima instaliran Python. Dostupni su i korisni [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) koji olakšavaju postavljanje za neke korisnike.
1. **Instalirajte Python**. Provjerite je li [Python](https://www.python.org/downloads/) instaliran na vašem računalu. Python ćete koristiti za mnoge zadatke iz znanosti o podacima i strojnog učenja. Većina računarskih sustava već ima instaliran Python. Tu su i korisni [Python Coding Packovi](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) koji mogu olakšati postavljanje nekim korisnicima.
Međutim, neka korištenja Pythona zahtijevaju jednu verziju softvera, dok druga zahtijevaju drugu verziju. Zbog toga je korisno raditi unutar [virtualnog okruženja](https://docs.python.org/3/library/venv.html).
Međutim, neke primjene Pythona zahtijevaju određenu verziju softvera, dok druge zahtijevaju drugu verziju. Zbog toga je korisno raditi unutar [virtualnog okruženja](https://docs.python.org/3/library/venv.html).
2. **Instalirajte Visual Studio Code**. Provjerite imate li instaliran Visual Studio Code na svom računalu. Slijedite ove upute za [instalaciju Visual Studio Code-a](https://code.visualstudio.com/) za osnovnu instalaciju. U ovom ćete tečaju koristiti Python u Visual Studio Code-u, pa bi bilo korisno osvježiti znanje o tome kako [konfigurirati Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) za razvoj u Pythonu.
2. **Instalirajte Visual Studio Code**. Pobrinite se da imate instaliran Visual Studio Code na računalu. Slijedite ove upute za [instalaciju Visual Studio Code](https://code.visualstudio.com/) za osnovnu instalaciju. U ovom ćete tečaju koristiti Python u Visual Studio Code-u, pa bi bilo korisno da se upoznate kako [konfigurirati Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) za razvoj u Pythonu.
> Upoznajte se s Pythonom radeći kroz ovu kolekciju [Learn modula](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
> Udobno se upoznajte s Pythonom radeći kroz ovu zbirku [Learn modula](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Postavljanje Pythona s Visual Studio Code-om")
> [](https://youtu.be/yyQM70vi7V8 "Postavljanje Pythona s Visual Studio Code")
>
> 🎥 Kliknite na sliku iznad za video: korištenje Pythona unutar VS Code-a.
> 🎥 Kliknite na gornju sliku za video: korištenje Pythona unutar VS Code.
3. **Instalirajte Scikit-learn**, slijedeći [ove upute](https://scikit-learn.org/stable/install.html). Budući da trebate osigurati korištenje Pythona 3, preporučuje se korištenje virtualnog okruženja. Napomena: ako ovu biblioteku instalirate na M1 Macu, na stranici iznad nalaze se posebne upute.
3. **Instalirajte Scikit-learn** prema [ovim uputama](https://scikit-learn.org/stable/install.html). Budući da morate koristiti Python 3, preporučuje se rad u virtualnom okruženju. Ako instalirate ovu biblioteku na M1 Mac, postoje posebne upute na gore povezanom linku.
Koristit ćete **bilježnice** za razvoj svog Python koda i izradu modela strojnog učenja. Ova vrsta datoteke uobičajeni je alat za znanstvenike podataka, a prepoznat ćete ih po sufiksu ili ekstenziji`.ipynb`.
Koristit ćete **notebookove** za razvoj vašeg Python koda i kreiranje modela strojnog učenja. Ova vrsta datoteke je uobičajeni alat za znanstvenike podataka, a može se prepoznati po nastavku`.ipynb`.
Bilježnice su interaktivno okruženje koje omogućuje programeru da istovremeno piše kod i dodaje bilješke te dokumentaciju oko koda, što je vrlo korisno za eksperimentalne ili istraživačke projekte.
Notebookovi su interaktivno okruženje koje omogućuje programeru da istovremeno piše kod i dodaje bilješke i dokumentaciju oko koda, što je vrlo korisno za eksperimentalne ili istraživačke projekte.
[](https://youtu.be/7E-jC8FLA2E "ML za početnike - Postavljanje Jupyter bilježnica za početak izrade regresijskih modela")
[](https://youtu.be/7E-jC8FLA2E "ML za početnike - Postavite Jupyter Notebookove za početak izgradnje regresijskih modela")
> 🎥 Kliknite na sliku iznad za kratki video o ovoj vježbi.
> 🎥 Kliknite na gornju sliku za kratak video vezano uz ovu vježbu.
### Vježba - rad s bilježnicom
### Vježba - rad s notebookom
U ovoj mapi pronaći ćete datoteku _notebook.ipynb_.
1. Otvorite _notebook.ipynb_ u Visual Studio Code-u.
1. Otvorite _notebook.ipynb_ u Visual Studio Code.
Pokrenut će se Jupyter poslužitelj s Pythonom 3+. Pronaći ćete dijelove bilježnice koji se mogu `pokrenuti`, tj. dijelove koda. Možete pokrenuti blok koda odabirom ikone koja izgleda kao gumb za reprodukciju.
Pokrenut će se Jupyter server s Pythonom 3+. Naći ćete dijelove notebooka koje možete `pokrenuti`, odnosno zasebne dijelove koda. Kodni blok možete pokrenuti klikom na ikonu koja izgleda kao tipka play.
2. Odaberite ikonu `md` i dodajte malo markdowna, te sljedeći tekst **# Dobrodošli u svoju bilježnicu**.
1. Odaberite ikonu `md` i dodajte malo markdown teksta, a zatim unesite sljedeći tekst: **# Dobrodošli u svoj notebook**.
Zatim dodajte malo Python koda.
Sljedeće, dodajte malo Python koda.
3. Upišite **print('hello notebook')** u blok koda.
4. Odaberite strelicu za pokretanje koda.
1. Upišite **print('hello notebook')** u kodni blok.
1. Kliknite strelicu za pokretanje koda.
Trebali biste vidjeti ispisanu izjavu:
@ -72,49 +72,50 @@ U ovoj mapi pronaći ćete datoteku _notebook.ipynb_.
hello notebook
```


Možete izmjenjivati svoj kod s komentarima kako biste sami dokumentirali bilježnicu.
Kod možete isprekidati komentarima kako biste sami dokumentirali notebook.
✅ Razmislite na trenutak koliko se radno okruženje web programera razlikuje od onog znanstvenika podataka.
✅ Razmislite na trenutak koliko se radno okruženje web developera razlikuje od onog znanstvenika podataka.
## Početak rada sa Scikit-learn
## Pokretanje sa Scikit-learn
Sada kada je Python postavljen u vašem lokalnom okruženju i osjećate se ugodno s Jupyter bilježnicama, upoznajmo se sa Scikit-learn (izgovara se `sci` kao u `science`). Scikit-learn pruža [opsežan API](https://scikit-learn.org/stable/modules/classes.html#api-ref) koji vam pomaže u obavljanju zadataka strojnog učenja.
Sada kada je Python postavljen u vašem lokalnom okruženju i kada ste upoznati s Jupyter Notebookovima, upoznajmo se i sa Scikit-learnom (izgovara se `sci` kao u riječi `znanost`). Scikit-learn nudi [opširan API](https://scikit-learn.org/stable/modules/classes.html#api-ref) koji vam pomaže u izvođenju zadataka strojnog učenja.
Prema njihovoj [web stranici](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn je biblioteka za strojno učenje otvorenog koda koja podržava nadzirano i nenadzirano učenje. Također pruža razne alate za prilagodbu modela, predobradu podataka, odabir modela i evaluaciju, te mnoge druge korisne funkcije."
Prema njihovoj [web stranici](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn je biblioteka strojnog učenja otvorenog koda koja podržava nadzirano i nenadzirano učenje. Također pruža različite alate za prilagođavanje modela, prethodnu obradu podataka, izbor i evaluaciju modela te mnoge druge korisnosti."
U ovom tečaju koristit ćete Scikit-learn i druge alate za izgradnju modela strojnog učenja za obavljanje onoga što nazivamo 'tradicionalnim zadacima strojnog učenja'. Namjerno smo izbjegli neuronske mreže i duboko učenje jer su bolje obrađeni u našem nadolazećem kurikulumu 'AI za početnike'.
U ovom tečaju koristiti ćete Scikit-learn i druge alate za izgradnju modela strojnog učenja za ono što zovemo 'tradicionalni zadaci strojnog učenja'. Namjerno smo izbjegli neuronske mreže i duboko učenje jer su bolje obrađeni u našem nadolazećem kurikulumu 'AI za početnike'.
Scikit-learn olakšava izgradnju modela i njihovu evaluaciju za upotrebu. Primarno je fokusiran na korištenje numeričkih podataka i sadrži nekoliko gotovih skupova podataka za učenje. Također uključuje unaprijed izgrađene modele koje studenti mogu isprobati. Istražimo proces učitavanja unaprijed pripremljenih podataka i korištenja ugrađenog procjenitelja za prvi ML model sa Scikit-learnom koristeći osnovne podatke.
Scikit-learn olakšava izgradnju i evaluaciju modela za upotrebu. Primarno je fokusiran na numeričke podatke i sadrži nekoliko gotovih datasetova za učenje. Uključuje i unaprijed izgrađene modele koje studenti mogu isprobati. Istražimo proces učitavanja prethodno pripremljenih podataka i korištenje ugrađenog estimator - prvog ML modela sa Scikit-lernom s osnovnim podacima.
## Vježba - vaša prva Scikit-learn bilježnica
## Vježba - vaš prvi Scikit-learn notebook
> Ovaj je vodič inspiriran [primjerom linearne regresije](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na Scikit-learn web stranici.
> Ovaj je vodič inspiriran [primjerom linearne regresije](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na web stranici Scikit-learn.
[](https://youtu.be/2xkXL5EUpS0 "ML za početnike - Vaš prvi projekt linearne regresije u Pythonu")
> 🎥 Kliknite na sliku iznad za kratki video o ovoj vježbi.
> 🎥 Kliknite na gornju sliku za kratak video vezano uz ovu vježbu.
U datoteci _notebook.ipynb_ povezanoj s ovom lekcijom, izbrišite sve ćelije pritiskom na ikonu 'kanta za smeće'.
U datoteci _notebook.ipynb_ povezanoj s ovom lekcijom, očistite sve ćelije pritiskom na ikonu 'kanta za smeće'.
U ovom ćete odjeljku raditi s malim skupom podataka o dijabetesu koji je ugrađen u Scikit-learn za potrebe učenja. Zamislite da želite testirati tretman za pacijente s dijabetesom. Modeli strojnog učenja mogli bi vam pomoći odrediti koji bi pacijenti bolje reagirali na tretman, na temelju kombinacija varijabli. Čak i vrlo osnovni regresijski model, kada se vizualizira, mogao bi pokazati informacije o varijablama koje bi vam pomogle organizirati teoretska klinička ispitivanja.
U ovom dijelu ćete raditi s malim datasetom o dijabetesu koji je ugrađen u Scikit-learn za svrhe učenja. Zamislite da želite ispitati liječenje za dijabetičke pacijente. Modeli strojnog učenja mogli bi vam pomoći odrediti koji bi pacijenti bolje reagirali na liječenje, na temelju kombinacija varijabli. Čak i vrlo osnovni regresijski model, kada se vizualizira, može pokazati informacije o varijablama koje bi vam pomogle organizirati vaše teoretske kliničke studije.
✅ Postoji mnogo vrsta metoda regresije, a koju ćete odabrati ovisi o odgovoru koji tražite. Ako želite predvidjeti vjerojatnu visinu osobe određene dobi, koristili biste linearnu regresiju jer tražite **numeričku vrijednost**. Ako vas zanima otkrivanje treba li određena kuhinja biti smatrana veganskom ili ne, tražite **kategorizaciju**, pa biste koristili logističku regresiju. Kasnije ćete naučiti više o logističkoj regresiji. Razmislite malo o pitanjima koja možete postaviti podacima i koja bi od ovih metoda bila prikladnija.
✅ Postoji mnogo vrsta regresijskih metoda, a koju ćete odabrati ovisi o pitanju na koje želite odgovoriti. Ako želite predvidjeti vjerojatnu visinu za osobu određene dobi, koristili biste linearnu regresiju jer tražite **numeričku vrijednost**. Ako ste zainteresirani otkriti treba li neki tip kuhinje smatrati veganskim ili ne, tražite **kategorizaciju**, pa biste koristili logističku regresiju. O logističkoj regresiji ćete kasnije naučiti više. Razmislite malo o nekim pitanjima koja možete postaviti podacima i koja bi metoda od njih bila prikladnija.
Krenimo s ovim zadatkom.
### Uvoz biblioteka
### Uvezite biblioteke
Za ovaj zadatak uvest ćemo neke biblioteke:
- **matplotlib**. Koristan [alat za grafički prikaz](https://matplotlib.org/) koji ćemo koristiti za stvaranje linijskog grafa.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je korisna biblioteka za rad s numeričkim podacima u Pythonu.
- **sklearn**. Ovo je [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) biblioteka.
- **matplotlib**. Koristan je [alat za grafove](https://matplotlib.org/) i koristit ćemo ga za crtanje linijskog grafikona.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je korisna biblioteka za rukovanje numeričkim podacima u Pythonu.
- **sklearn**. Ovo je biblioteka [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
Uvezite neke biblioteke za pomoć pri zadacima.
Uvezite neke biblioteke koje će vam pomoći u zadacima.
1. Dodajte uvoze upisivanjem sljedećeg koda:
1. Dodajte uvoze upisujući sljedeći kod:
```python
import matplotlib.pyplot as plt
@ -122,26 +123,26 @@ Uvezite neke biblioteke za pomoć pri zadacima.
from sklearn import datasets, linear_model, model_selection
```
Ovdje uvozite `matplotlib`, `numpy`te `datasets`, `linear_model` i `model_selection` iz `sklearn`. `model_selection` se koristi za podjelu podataka na skupove za treniranje i testiranje.
Gore uvozite `matplotlib`, `numpy` te uvozite `datasets`, `linear_model` i `model_selection` iz `sklearn`. `model_selection` se koristi za dijeljenje podataka na trening i test skupove.
### Skup podataka o dijabetesu
### Dataset o dijabetesu
Ugrađeni [skup podataka o dijabetesu](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) uključuje 442 uzorka podataka o dijabetesu s 10 značajki, od kojih neke uključuju:
Ugrađeni [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) uključuje 442 uzorka podataka o dijabetesu, s 10 značajki, od kojih su neke:
- age: dob u godinama
- starost: starost u godinama
- bmi: indeks tjelesne mase
- bp: prosječan krvni tlak
- s1 tc: T-stanice (vrsta bijelih krvnih stanica)
- bp: prosječni krvni tlak
- s1 tc: T-ćelije (vrsta bijelih krvnih stanica)
✅ Ovaj skup podataka uključuje koncept 'spola' kao varijable značajke važne za istraživanje dijabetesa. Mnogi medicinski skupovi podataka uključuju ovu vrstu binarne klasifikacije. Razmislite malo o tome kako takve kategorizacije mogu isključiti određene dijelove populacije iz tretmana.
✅ Ovaj dataset uključuje koncept 'spola' kao važnu značajku za istraživanje dijabetesa. Mnogi medicinski datasetovi uključuju ovaj tip binarne klasifikacije. Razmislite malo o tome kako takve kategorizacije mogu isključiti određene dijelove populacije iz liječenja.
Sada učitajte podatke X i y.
Sada učitajte X i y podatke.
> 🎓 Zapamtite, ovo je nadzirano učenje i trebamo imenovanu ciljnu varijablu 'y'.
> 🎓 Zapamtite, ovo je nadzirano učenje i potreban nam je nazvani cilj 'y'.
U novoj ćeliji koda učitajte skup podataka o dijabetesu pozivom `load_diabetes()`. Ulaz `return_X_y=True` signalizira da će `X` biti matrica podataka, a `y` ciljana varijabla regresije.
U novoj ćeliji za kod učitajte dataset o dijabetesu pozivajući `load_diabetes()`. Ulaz `return_X_y=True` označava da će `X` biti matrica podataka, a `y` cilj regresije.
1. Dodajte neke naredbe za ispis kako biste prikazali oblik matrice podataka i njezin prvi element:
1. Dodajte naredbe za ispis da pokažete dimenzije matrice podataka i njen prvi element:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@ -149,9 +150,9 @@ U novoj ćeliji koda učitajte skup podataka o dijabetesu pozivom `load_diabetes
print(X[0])
```
Ono što dobivate kao odgovor je tuple. Ono što radite je dodjeljivanje prva dva elementa tuplea varijablama `X` i `y`. Saznajte više [o tupleovima](https://wikipedia.org/wiki/Tuple).
Ono što dobivate kao odgovor je tuple. Ono što radite jest da prve dvije vrijednosti tupla dodjeljujete `X` i `y` redom. Saznajte više [o tupleima](https://wikipedia.org/wiki/Tuple).
Možete vidjeti da ovi podaci imaju 442 stavke oblikovane u nizove od 10 elemenata:
Možete vidjeti da ovaj dataset ima 442 stavke oblikovane u nizove od 10 elemenata:
```text
(442, 10)
@ -159,39 +160,39 @@ U novoj ćeliji koda učitajte skup podataka o dijabetesu pozivom `load_diabetes
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
✅ Razmislite malo o odnosu između podataka i ciljne varijable regresije. Linearna regresija predviđa odnose između značajke X i ciljne varijable y. Možete li pronaći [cilj](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) za skup podataka o dijabetesu u dokumentaciji? Što ovaj skup podataka pokazuje, s obzirom na cilj?
✅ Razmislite malo o odnosu između podataka i cilja regresije. Linearna regresija predviđa odnose između značajke X i ciljane varijable y. Možete li pronaći [cilj](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) za diabetes dataset u dokumentaciji? Što ovaj dataset demonstrira, s obzirom na cilj?
2. Zatim odaberite dio ovog skupa podataka za grafički prikaz odabirom 3. stupca skupa podataka. To možete učiniti korištenjem operatora `:` za odabir svih redaka, a zatim odabirom 3. stupca pomoću indeksa (2). Također možete preoblikovati podatke u 2D niz - kako je potrebno za grafički prikaz - korištenjem `reshape(n_rows, n_columns)`. Ako je jedan od parametara -1, odgovarajuća dimenzija se automatski izračunava.
2. Zatim, odaberite dio ovog dataseta za iscrtavanje birajući 3. stupac dataseta. To možete napraviti korištenjem operatora `:` za odabir svih redaka, a zatim odabirom 3. stupca s indeksom (2). Također možete promijeniti oblik podataka u 2D niz - kako je potrebno za crtanje - korištenjem `reshape(broj_redaka, broj_stupaca)`. Ako je jedan od parametara -1, odgovarajuća dimenzija se automatski izračunava.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
✅ U bilo kojem trenutku ispišite podatke kako biste provjerili njihov oblik.
✅ U bilo kojem trenutku, ispišite podatke da provjerite njihov oblik.
3. Sada kada su podaci spremni za grafički prikaz, možete vidjeti može li stroj pomoći u određivanju logičke podjele između brojeva u ovom skupu podataka. Da biste to učinili, trebate podijeliti i podatke (X) i cilj (y) na skupove za testiranje i treniranje. Scikit-learn ima jednostavan način za to; možete podijeliti svoje testne podatke na određenoj točki.
3. Sada kada imate podatke spremne za crtanje, možete vidjeti može li vam stroj pomoći da odredite logičku granicu između brojeva u ovom datasetu. Da biste to učinili, morate podijeliti i podatke (X) i ciljeve (y) u testne i trening skupove. Scikit-learn ima jednostavan način za to; možete podijeliti svoje testne podatke u određenoj točki.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
4. Sada ste spremni trenirati svoj model! Učitajte model linearne regresije i trenirajte ga s vašim X i y skupovima za treniranje koristeći`model.fit()`:
4. Sada ste spremni za treniranje modela! Učitajte model linearne regresije i trenirajte ga s vašim X i y trening skupovima korištenjem`model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
✅ `model.fit()` je funkcija koju ćete vidjeti u mnogim ML bibliotekama poput TensorFlowa.
✅ `model.fit()` je funkcija koju ćete vidjeti u mnogim ML bibliotekama poput TensorFlowa
5. Zatim, stvorite predviđanje koristeći testne podatke, koristeći funkciju `predict()`. Ovo će se koristiti za crtanje linije između grupa podataka.
5. Zatim, napravite predikciju koristeći test podatke, koristeći funkciju `predict()`. Ona će služiti za crtanje linije između skupina podataka
```python
y_pred = model.predict(X_test)
```
6. Sada je vrijeme za prikaz podataka na grafu. Matplotlib je vrlo koristan alat za ovaj zadatak. Stvorite scatterplot svih X i y testnih podataka i koristite predviđanje za crtanje linije na najprikladnijem mjestu između grupiranja podataka modela.
6. Sada je vrijeme prikazati podatke na grafikonu. Matplotlib je vrlo koristan alat za ovaj zadatak. Napravite scatterplot svih X i y test podataka i upotrijebite predikciju da nacrtate liniju na najprikladnijem mjestu između grupacija podataka modela.
```python
plt.scatter(X_test, y_test, color='black')
@ -202,22 +203,24 @@ U novoj ćeliji koda učitajte skup podataka o dijabetesu pozivom `load_diabetes
plt.show()
```

✅ Razmislite malo o tome što se ovdje događa. Ravna linija prolazi kroz mnogo malih točaka podataka, ali što točno radi? Možete li vidjeti kako biste trebali moći koristiti ovu liniju za predviđanje gdje bi nova, neviđena točka podataka trebala pripadati u odnosu na y-os grafikona? Pokušajte riječima opisati praktičnu primjenu ovog modela.

✅ Razmislite malo o tome što se ovdje događa. Prava linija prolazi kroz mnoge male točke podataka, ali što točno radi? Možete li vidjeti kako biste trebali moći koristiti ovu liniju za predviđanje gdje bi nova, neviđena točka podataka trebala stati u odnosu na y-osu na grafikonu? Pokušajte riječima objasniti praktičnu upotrebu ovog modela.
Čestitamo, izradili ste svoj prvi model linearne regresije, napravili predviđanje s njim i prikazali ga na grafikonu!
Čestitamo, izgradili ste svoj prvi model linearne regresije, stvorili predviđanje pomoću njega i prikazali ga na grafikonu!
---
## 🚀Izazov
Prikažite drugu varijablu iz ovog skupa podataka. Savjet: uredite ovu liniju: `X = X[:,2]`. S obzirom na cilj ovog skupa podataka, što možete otkriti o napredovanju dijabetesa kao bolesti?
Prikazujte drugu varijablu iz ovog skupa podataka. Nagovještaj: uredite ovaj redak: `X = X[:,2]`. S obzirom na cilj ovog skupa podataka, što možete otkriti o napredovanju dijabetesa kao bolesti?
## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
## Pregled i samostalno učenje
## Sažetak i samostalan rad
U ovom ste vodiču radili s jednostavnom linearnom regresijom, a ne s univarijatnom ili višestrukom linearnom regresijom. Pročitajte malo o razlikama između ovih metoda ili pogledajte [ovaj video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
U ovom vodiču radili ste s jednostavnom linearnom regresijom, umjesto s univarijatnom ili višestrukom linearnom regresijom. Pročitajte malo o razlikama između ovih metoda ili pogledajte [ovaj video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
Pročitajte više o konceptu regresije i razmislite o vrstama pitanja na koja se može odgovoriti ovom tehnikom. Prođite kroz [ovaj vodič](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) kako biste produbili svoje razumijevanje.
Pročitajte više o konceptu regresije i razmislite o vrstama pitanja na koja se ovom tehnikom može odgovoriti. Prođite ovaj [vodič](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) kako biste produbili svoje razumijevanje.
## Zadatak
@ -225,5 +228,7 @@ Pročitajte više o konceptu regresije i razmislite o vrstama pitanja na koja se
---
**Odricanje od odgovornosti**:
Ovaj dokument je preveden korištenjem AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije proizašle iz korištenja ovog prijevoda.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Napomena**:
Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.
Infografika autora [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/)
> ### [Ova lekcija dostupna je u R-u!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
> ### [Ova lekcija dostupna je i u R-u!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Uvod
Sada kada imate alate potrebne za izgradnju modela strojnog učenja pomoću Scikit-learn, spremni ste početi postavljati pitanja o svojim podacima. Dok radite s podacima i primjenjujete rješenja strojnog učenja, vrlo je važno znati kako postaviti pravo pitanje kako biste pravilno iskoristili potencijale svog skupa podataka.
Sada kada imate spremne alate koje trebate za početak izrade modela strojnog učenja sa Scikit-learn, spremni ste početi postavljati pitanja svojem skupu podataka. Dok radite s podacima i primjenjujete ML rješenja, vrlo je važno razumjeti kako postaviti pravo pitanje kako biste pravilno otključali potencijale svog skupa podataka.
U ovoj lekciji naučit ćete:
- Kako pripremiti podatke za izgradnju modela.
- Kako pripremiti svoje podatke za izradu modela.
- Kako koristiti Matplotlib za vizualizaciju podataka.
- Kako koristiti Seaborn za izražajniju vizualizaciju podataka.
## Postavljanje pravog pitanja o podacima
## Postavljajte pravo pitanje svom skupu podataka
Pitanje na koje trebate odgovoriti odredit će vrstu algoritama strojnog učenja koje ćete koristiti. Kvaliteta odgovora koji dobijete uvelike će ovisiti o prirodi vaših podataka.
Pitanje na koje trebate odgovor odredit će koji tip ML algoritama ćete koristiti. A kvaliteta odgovora koji dobijete ovisit će u velikoj mjeri o prirodi vaših podataka.
Pogledajte [podatke](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) koji su dostupni za ovu lekciju. Možete otvoriti ovu .csv datoteku u VS Codeu. Brzi pregled odmah pokazuje da postoje praznine i mješavina tekstualnih i numeričkih podataka. Tu je i neobičan stupac nazvan 'Package' gdje su podaci mješavina između 'sacks', 'bins' i drugih vrijednosti. Podaci su, zapravo, pomalo neuredni.
Pogledajte [podatke](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) dostavljene za ovu lekciju. Možete otvoriti ovu .csv datoteku u VS Code-u. Brzi pregled odmah pokazuje da postoje praznine i mješavina nizova i numeričkih podataka. Također postoji neobičan stupac nazvan 'Package' u kojem su podaci mješavina između 'vreća', 'kutija' i drugih vrijednosti. Podaci su, zapravo, pomalo neuredni.
[](https://youtu.be/5qGjczWTrDQ "ML za početnike - Kako analizirati i očistiti skup podataka")
> 🎥 Kliknite na sliku iznad za kratki video o pripremi podataka za ovu lekciju.
> 🎥 Kliknite na gornju sliku za kratak video o pripremi podataka za ovu lekciju.
Zapravo, nije uobičajeno dobiti skup podataka koji je potpuno spreman za korištenje u stvaranju modela strojnog učenja. U ovoj lekciji naučit ćete kako pripremiti sirove podatke koristeći standardne Python biblioteke. Također ćete naučiti različite tehnike za vizualizaciju podataka.
Zapravo, nije vrlo često da dobijete skup podataka koji je potpuno spreman za korištenje izravno za stvaranje ML modela. U ovoj lekciji naučit ćete kako pripremiti neobrađeni skup podataka koristeći standardne Python biblioteke. Također ćete naučiti različite tehnike za vizualizaciju podataka.
## Studija slučaja: 'tržište bundeva'
U ovom direktoriju pronaći ćete .csv datoteku u korijenskoj mapi `data` pod nazivom [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) koja uključuje 1757 redaka podataka o tržištu bundeva, grupiranih po gradovima. Ovo su sirovi podaci izvučeni iz [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) koje distribuira Ministarstvo poljoprivrede Sjedinjenih Američkih Država.
U ovoj mapi naći ćete .csv datoteku u korijenskoj mapi `data` nazvanu [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) koja sadrži 1757 redaka podataka o tržištu bundeva, sortirano po grupama prema gradu. Ovo su neobrađeni podaci izvučeni iz [Specijalnih izvještaja o terminalnim tržištima usjeva](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) koje distribuira Ministarstvo poljoprivrede Sjedinjenih Američkih Država.
### Priprema podataka
Ovi podaci su javno dostupni. Mogu se preuzeti u mnogo zasebnih datoteka, po gradovima, s web stranice USDA. Kako bismo izbjegli previše zasebnih datoteka, spojili smo sve podatke po gradovima u jednu tablicu, tako da smo već _pripremili_ podatke malo. Sada, pogledajmo podatke detaljnije.
Ovi podaci su javno dostupni. Mogu se preuzeti u mnogim zasebnim datotekama, po gradovima, sa USDA web stranice. Kako bismo izbjegli previše zasebnih datoteka, spojili smo sve podatke po gradovima u jednu tablicu, tako da smo već malo _pripremili_ podatke. Sljedeće, pogledajmo podatke detaljnije.
### Podaci o bundevama - prvi zaključci
### Podaci o bundevama - rani zaključci
Što primjećujete o ovim podacima? Već ste vidjeli da postoji mješavina tekstualnih podataka, brojeva, praznina i neobičnih vrijednosti koje trebate razumjeti.
Koje pitanje možete postaviti o ovim podacima koristeći tehniku regresije? Što kažete na "Predvidjeti cijenu bundeve za prodaju tijekom određenog mjeseca". Ponovno pogledajući podatke, postoje neke promjene koje trebate napraviti kako biste stvorili strukturu podataka potrebnu za zadatak.
Što primjećujete u vezi ovih podataka? Već ste vidjeli da postoji mješavina nizova, brojeva, praznina i neobičnih vrijednosti koje morate interpretirati.
Koje pitanje možete postaviti ovim podacima koristeći regresijsku tehniku? Što mislite o "Predviđanju cijene bundeve za prodaju u određenom mjesecu"? Promatrajući podatke, postoje neke promjene koje trebate napraviti da biste stvorili strukturu podataka potrebnu za taj zadatak.
## Vježba - analizirajte podatke o bundevama
Koristimo [Pandas](https://pandas.pydata.org/), (ime dolazi od`Python Data Analysis`) alat vrlo koristan za oblikovanje podataka, kako bismo analizirali i pripremili ove podatke o bundevama.
Koristit ćemo [Pandas](https://pandas.pydata.org/), (ime znači `Python Data Analysis`) alat vrlo koristan za oblikovanje podataka, za analizu i pripremu ovih podataka o bundevama.
### Prvo, provjerite nedostaju li datumi
### Prvo, provjerite nedostajuće datume
Prvo ćete morati poduzeti korake kako biste provjerili nedostaju li datumi:
Prvo ćete morati poduzeti korake za provjeru nedostajućih datuma:
1. Pretvorite datume u format mjeseca (ovo su američki datumi, pa je format `MM/DD/YYYY`).
1. Pretvorite datume u format mjeseca (to su američki datumi, pa je format `MM/DD/YYYY`).
2. Izvucite mjesec u novi stupac.
Otvorite datoteku _notebook.ipynb_ u Visual Studio Codeu i uvezite tablicu u novi Pandas dataframe.
Otvorite datoteku _notebook.ipynb_ u Visual Studio Code i uvezite tablicu u novi Pandas dataframe.
1. Koristite funkciju `head()`za pregled prvih pet redaka.
1. Koristite funkciju `head()`da vidite prvih pet redaka.
```python
import pandas as pd
@ -64,17 +64,17 @@ Otvorite datoteku _notebook.ipynb_ u Visual Studio Codeu i uvezite tablicu u nov
pumpkins.head()
```
✅ Koju biste funkciju koristili za pregled zadnjih pet redaka?
✅ Koju biste funkciju upotrijebili da vidite zadnjih pet redaka?
1. Provjerite ima li nedostajućih podataka u trenutnom dataframeu:
1. Provjerite postoje li nedostajući podaci u trenutnom dataframe-u:
```python
pumpkins.isnull().sum()
```
Postoje nedostajući podaci, ali možda neće biti važni za zadatak.
Nedostaju podaci, ali možda to neće biti problem za zadatak.
1. Kako biste olakšali rad s dataframeom, odaberite samo stupce koji su vam potrebni koristeći funkciju `loc`, koja iz izvornog dataframea izvlači grupu redaka (proslijeđeno kao prvi parametar) i stupaca (proslijeđeno kao drugi parametar). Izraz `:` u slučaju ispod znači "svi redovi".
1. Kako biste olakšali rad s dataframe-om, odaberite samo stupce koje trebate, koristeći funkciju `loc` koja iz originalnog dataframe-a izvlači skup redaka (proslijeđen kao prvi parametar) i stupaca (proslijeđen kao drugi parametar). Izraz `:` u ovom slučaju znači "svi redci".
@ -83,11 +83,11 @@ Otvorite datoteku _notebook.ipynb_ u Visual Studio Codeu i uvezite tablicu u nov
### Drugo, odredite prosječnu cijenu bundeve
Razmislite kako odrediti prosječnu cijenu bundeve u određenom mjesecu. Koje biste stupce odabrali za ovaj zadatak? Savjet: trebat će vam 3 stupca.
Razmislite kako odrediti prosječnu cijenu bundeve u određenom mjesecu. Koje biste stupce odabrali za ovaj zadatak? Savjet: trebaju vam 3 stupca.
Rješenje: uzmite prosjek stupaca `Low Price` i `High Price`kako biste popunili novi stupac Price, i pretvorite stupac Date da prikazuje samo mjesec. Srećom, prema provjeri iznad, nema nedostajućih podataka za datume ili cijene.
Rješenje: uzmite prosjek stupaca `Low Price` i `High Price`za popunjavanje novog stupca Cijena, i pretvorite stupac Datum tako da pokazuje samo mjesec. Srećom, prema prethodnoj provjeri, nema nedostajućih podataka za datume ili cijene.
1. Za izračunavanje prosjeka dodajte sljedeći kod:
Ispisivanje vašeg dataframea pokazat će vam čist, uredan skup podataka na kojem možete izgraditi svoj novi regresijski model.
Ispis vašeg dataframe-a pokazat će vam čist i uredan skup podataka na kojem možete graditi svoj novi regresijski model.
### Ali čekajte! Nešto ovdje izgleda čudno
### Ali, pričekajte! Tu nešto nije u redu
Ako pogledate stupac `Package`, bundeve se prodaju u mnogim različitim konfiguracijama. Neke se prodaju u mjerama '1 1/9 bushel', neke u '1/2 bushel', neke po bundevi, neke po funti, a neke u velikim kutijama različitih širina.
Ako pogledate stupac `Package`, bundeve se prodaju u mnogim različitim konfiguracijama. Neke se prodaju u mjerama '1 1/9 bušl', neke u mjerama '1/2 bušl', neke po jednoj bundevi, neke po funti, a neke u velikim kutijama različitih širina.
> Čini se da je bundeve vrlo teško dosljedno vagati
> Čini se da je vrlo teško konzistentno mjeriti težinu bundeva
Kopajući po izvornim podacima, zanimljivo je da sve što ima `Unit of Sale` jednako 'EACH' ili 'PER BIN' također ima tip `Package` po inču, po binu ili 'each'. Čini se da je bundeve vrlo teško dosljedno vagati, pa ih filtrirajmo odabirom samo bundeva s nizom 'bushel' u stupcu `Package`.
Istražujući izvorne podatke, zanimljivo je da sve što ima `Unit of Sale` jednako 'EACH' ili 'PER BIN' također ima tip `Package` po inču, po binu ili 'svaki'. Bundeve se čine vrlo teškima za konzistentno vaganje, pa ih filtrirajmo tako da odaberemo samo one bundeve kojima je u stupcu `Package` niz 'bushel'.
1. Dodajte filter na vrh datoteke, ispod početnog uvoza .csv datoteke:
1. Dodajte filter na početak datoteke, ispod početnog uvoza .csv:
Ako sada ispišete podatke, možete vidjeti da dobivate samo oko 415 redaka podataka koji sadrže bundeve po bushelu.
Ako sada ispišete podatke, vidjet ćete da dobivate samo otprilike 415 redaka podataka koji sadrže bundeve po bušlu.
### Ali čekajte! Još nešto treba napraviti
### Ali,pričekajte! Još nešto treba napraviti
Jeste li primijetili da se količina bushela razlikuje po retku? Trebate normalizirati cijene tako da prikazujete cijene po bushelu, pa napravite neke izračune kako biste ih standardizirali.
Primijetili ste da se količina bušl po retku razlikuje? Trebate normalizirati cijene tako da prikažete cijene po bušlu, pa napravite kalkulacije za standardizaciju.
1. Dodajte ove linije nakon bloka koji stvara dataframe new_pumpkins:
1. Dodajte ove retke iza bloka koji stvara novi_pumpkins dataframe:
✅ Prema [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), težina bushela ovisi o vrsti proizvoda, jer je to mjera volumena. "Bushel rajčica, na primjer, trebao bi težiti 56 funti... Lišće i zelje zauzimaju više prostora s manje težine, pa bushel špinata teži samo 20 funti." Sve je to prilično komplicirano! Nećemo se zamarati konverzijom bushel-u-funtu, već ćemo cijene prikazivati po bushelu. Sva ova studija bushela bundeva, međutim, pokazuje koliko je važno razumjeti prirodu svojih podataka!
✅ Prema [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), težina bušla ovisi o vrsti proizvoda, jer je mjera volumena. "Bušl rajčica, na primjer, treba težiti 56 funti... Listovi i zelje zauzimaju više prostora uz manje težine, pa bušl špinata teži samo 20 funti." Sve je to prilično komplicirano! Nemojmo se opterećivati pretvorbom bušl-u u funte, nego cijenu izrazimo po bušlu. Sva ova studija o bušlovima bundeva ipak pokazuje koliko je važno razumjeti prirodu svojih podataka!
Sada možete analizirati cijene po jedinici na temelju njihove mjere bushela. Ako još jednom ispišete podatke, možete vidjeti kako su standardizirani.
Sada možete analizirati cijene po jedinici na osnovi njihove mjere u bušlu. Ako ponovno ispišete podatke, vidjet ćete kako su standardizirani.
✅ Jeste li primijetili da su bundeve prodane po pola bushela vrlo skupe? Možete li shvatiti zašto? Savjet: male bundeve su puno skuplje od velikih, vjerojatno zato što ih ima puno više po bushelu, s obzirom na neiskorišten prostor koji zauzima jedna velika šuplja bundeva za pitu.
✅ Primijetili ste da su bundeve prodane po pola bušla vrlo skupe? Možete li pogoditi zašto? Savjet: male su bundeve znatno skuplje od velikih, vjerojatno zato što ih ima puno više po bušlu, s obzirom na neiskorišteni prostor koji zauzima jedna velika šuplja pita bundeva.
## Strategije vizualizacije
Dio uloge znanstvenika za podatke je demonstrirati kvalitetu i prirodu podataka s kojima rade. Da bi to učinili, često stvaraju zanimljive vizualizacije, poput grafikona, dijagrama i tablica, koje prikazuju različite aspekte podataka. Na taj način mogu vizualno pokazati odnose i praznine koje je inače teško otkriti.
Dio uloge data znanstvenika je demonstrirati kvalitetu i prirodu podataka s kojima rade. Da bi to učinili, često stvaraju zanimljive vizualizacije ili plotove, grafikone i dijagrame koji prikazuju različite aspekte podataka. Na taj način mogu vizualno pokazati odnose i praznine koje je inače teško otkriti.
[](https://youtu.be/SbUkxH6IJo0 "ML za početnike - Kako vizualizirati podatke pomoću Matplotliba")
[](https://youtu.be/SbUkxH6IJo0 "ML za početnike - Kako vizualizirati podatke pomoću Matplotlib")
> 🎥 Kliknite na sliku iznad za kratki video o vizualizaciji podataka za ovu lekciju.
> 🎥 Kliknite na gornju sliku za kratak video o vizualizaciji podataka za ovu lekciju.
Vizualizacije također mogu pomoći u određivanju tehnike strojnog učenja koja je najprikladnija za podatke. Na primjer, scatterplot koji izgleda kao da slijedi liniju ukazuje na to da su podaci dobar kandidat za vježbu linearne regresije.
Vizualizacije također mogu pomoći u određivanju tehnike strojnog učenja najprikladnije za podatke. Na primjer, scatterplot koji izgleda kao da prati liniju je pokazatelj da su podaci dobar kandidat za vježbu linearne regresije.
Jedna biblioteka za vizualizaciju podataka koja dobro funkcionira u Jupyter notebookovima je [Matplotlib](https://matplotlib.org/) (koju ste također vidjeli u prethodnoj lekciji).
Jedna biblioteka za vizualizaciju podataka koja dobro funkcionira u Jupyter bilježnicama je [Matplotlib](https://matplotlib.org/) (koju ste također vidjeli u prethodnoj lekciji).
> Steknite više iskustva s vizualizacijom podataka u [ovim tutorijalima](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
> Steknite više iskustva s vizualizacijom podataka u [ovim vodičima](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Vježba - eksperimentirajte s Matplotlibom
Pokušajte stvoriti osnovne grafikone za prikaz novog dataframea koji ste upravo stvorili. Što bi pokazao osnovni linijski grafikon?
Pokušajte stvoriti neke osnovne plottove za prikaz novog dataframe-a koji ste upravo stvorili. Što bi osnovni plot linije prikazao?
1. Uvezite Matplotlib na vrh datoteke, ispod uvoza Pandasa:
@ -164,8 +164,8 @@ Pokušajte stvoriti osnovne grafikone za prikaz novog dataframea koji ste upravo
import matplotlib.pyplot as plt
```
1. Ponovno pokrenite cijeli notebook za osvježavanje.
1. Na dnu notebooka dodajte ćeliju za prikaz podataka kao kutiju:
1. Ponovno pokrenite cijelu bilježnicu da biste osvježili.
1. Na dnu bilježnice dodajte ćeliju za iscrtavanje podataka kao box plot:
```python
price = new_pumpkins.Price
@ -174,44 +174,121 @@ Pokušajte stvoriti osnovne grafikone za prikaz novog dataframea koji ste upravo
plt.show()
```


Je li ovo koristan grafikon? Iznenađuje li vas nešto u vezi s njim?
Je li ovaj plot koristan? Iznenađuje li vas nešto u vezi njega?
Nije osobito koristan jer samo prikazuje vaše podatke kao raspršene točke u određenom mjesecu.
Nije osobito koristan jer samo prikazuje vašu podatkovnu točku kao raspršene točke u određenom mjesecu.
### Učinite ga korisnim
Da bi grafikoni prikazivali korisne podatke, obično trebate grupirati podatke na neki način. Pokušajmo stvoriti grafikon gdje y os prikazuje mjesece, a podaci pokazuju distribuciju podataka.
Da bi grafikoni prikazali korisne podatke, obično trebate nekako grupirati podatke. Pokušajmo stvoriti plot gdje y-os prikazuje mjesece, a podaci pokazuju raspodjelu podataka.
1. Dodajte ćeliju za stvaranje grupiranog stupčastog grafikona:
1. Dodajte ćeliju koja će napraviti grupirani bar chart:


Ovo je korisnija vizualizacija podataka! Čini se da najviša cijena bundeva nastupa u rujnu i listopadu. Očekujete li to? Zašto da ili zašto ne?
## Vježba - eksperimentirajte sa Seaborn bibliotekom
Matplotlib je moćan, ali može zahtijevati dosta koda za stvaranje dotjeranog grafikona. [Seaborn](https://seaborn.pydata.org/) je biblioteka izgrađena _na vrhu_ Matplotlib-a koja je dizajnirana za statističku vizualizaciju podataka. Radi izravno s Pandas dataframe-ima, primjenjuje privlačne zadane stilove i omogućuje vam stvaranje informativnih plottova uz znatno manje koda. Budući da Seaborn vraća Matplotlib objekte, još uvijek možete koristiti sve što već znate o Matplotlibu za fino podešavanje rezultata.
> Ako već nemate instaliran Seaborn, instalirajte ga naredbom `pip install seaborn`.
1. Uvezite Seaborn na vrh bilježnice, ispod ostalih uvoza. Konvencionalno se uvozi kao `sns`:
```python
import seaborn as sns
```
### Scatter plotovi za prikaz odnosa
Velik dio istraživanja podataka prije izrade modela je traženje _odnosa_ među varijablama. [Scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) je jedan od najboljih alata za to: ako točke izgledaju kao da prate liniju, dvije varijable mogu biti povezane, što je dobar znak da linearni regresijski model može funkcionirati.
1. Ponovno napravite scatter plot cijena po mjesecu, ali sada koristeći Seabornovu [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relacijski plot), koja radi izravno s vašim stupcima dataframe-a:

Ovi podaci su dosta bučni, pa line plot nije najočitiji izbor — ali pokazuje koliko je lako mijenjati vrste grafikona u Seabornu.
### Bar chartovi za prikaz distribucija
Ranije ste ručno grupirali podatke da biste stvorili stupčasti grafikon s Matplotlibom. Seabornova funkcija [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorijski grafikon) može za vas obaviti grupiranje i agregaciju. Zadano `kind="bar"` prikazuje srednju vrijednost svake kategorije zajedno s crnom linijom koja označava interval pouzdanosti.
1. Napravite stupčasti grafikon prosječne cijene po mjesecu:

Ovo potvrđuje ono što ste vidjeli s Matplotlibom — cijene vrhunce imaju oko rujna i listopada — ali Seaborn također prikazuje koliko se cijena _varira_ unutar svakog mjeseca.
### Toplinske mape za prikaz korelacija
Scatter plotovi uspoređuju dvije varijable odjednom. Kad imate nekoliko numeričkih stupaca, [toplinska mapa](https://en.wikipedia.org/wiki/Heat_map) vam omogućuje da istovremeno vidite jačinu odnosa između _svakog_ para stupaca. Ovo je uobičajen način za uočiti koje su značajke najviše korelirane prije nego što odlučite što ćete koristiti u modelu (i isti tip grafikona kasnije se koristi za prikazivanje matrica zabune u klasifikaciji).
1. Izgradite korelacijsku matrica s Pandasom, zatim je nacrtajte s Seabornovim [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Opcija `annot=True` ispisuje vrijednosti korelacije u svakoj ćeliji:

Vrijednosti blizu `1` (ili `-1`) znače da su stupci snažno _linearno_ korelirani. Primijetite kako su `Low Price` i `High Price` gotovo savršeno korelirani. `Month`, s druge strane, pokazuje samo slabu linearnu korelaciju s cijenom — iako je stupčasti grafikon gore otkrio jasan sezonski vrhunac u rujnu i listopadu. To je važna lekcija: koeficijent korelacije mjeri samo _pravolinijske_ odnose, pa može propustiti sezonske ili inače nelinearne obrasce. ✅ Zašto je korisno pogledati i toplinsku mapu *i* grafikone poput stupčastog grafikona prije nego što odlučite koje stupce koristiti?
### Matplotlib ili Seaborn?
Obje biblioteke vrijedi poznavati:
- **Matplotlib** vam pruža finu kontrolu nad svakim elementom grafikona i temelj je na kojem se gradi gotovo svaka druga Python biblioteka za crtanje.
- **Seaborn** nudi funkcije viših razina i atraktivne zadane postavke za statističke grafikone, radi direktno s dataframeovima i često je brži za istraživačku analizu podataka.
Ovo je korisnija vizualizacija podataka! Čini se da pokazuje da je najviša cijena bundeva u rujnu i listopadu. Odgovara li to vašim očekivanjima? Zašto ili zašto ne?
Čest radni tijek je posegnuti za Seabornom za brzo istraživanje podataka, a zatim prijeći na Matplotlib kada trebate prilagoditi detalje.
---
## 🚀Izazov
Istražite različite vrste vizualizacija koje Matplotlib nudi. Koje vrste su najprikladnije za regresijske probleme?
Istražite različite vrste vizualizacija koje nude Matplotlib i Seaborn. Koje su vrste najprikladnije za probleme regresije?
## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
## Pregled i samostalno učenje
Pogledajte mnoge načine vizualizacije podataka. Napravite popis raznih dostupnih biblioteka i zabilježite koje su najbolje za određene vrste zadataka, na primjer 2D vizualizacije naspram 3D vizualizacija. Što otkrivate?
Pogledajte različite načine vizualizacije podataka. Napravite popis dostupnih biblioteka i zabilježite koje su najbolje za određene vrste zadataka, na primjer 2D vizualizacije nasuprot 3D vizualizacijama. Što otkrivate?
## Zadatak
[Istrazivanje vizualizacije](assignment.md)
[Istraživanje vizualizacije](assignment.md)
---
**Odricanje od odgovornosti**:
Ovaj dokument je preveden korištenjem AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije proizašle iz korištenja ovog prijevoda.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Napomena**:
Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.
"[Seaborn](https://seaborn.pydata.org/) je izgrađen na vrhu Matplotliba i radi izravno s datafrejmima, što omogućuje brzo stvaranje atraktivnih statističkih grafova s vrlo malo koda.\n"
"\n---\n\n**Odricanje od odgovornosti**: \nOvaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Napomena**:\nOvaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
Učenje pojačanjem uključuje tri važna koncepta: agenta, određena stanja i skup akcija za svako stanje. Izvršavanjem akcije u određenom stanju, agent dobiva nagradu. Zamislite računalnu igru Super Mario. Vi ste Mario, nalazite se na razini igre, stojite pored ruba litice. Iznad vas je novčić. Vi, kao Mario, na razini igre, na određenoj poziciji... to je vaše stanje. Pomicanje korak udesno (akcija) odvest će vas preko ruba, što bi vam donijelo nisku numeričku ocjenu. Međutim, pritiskom na gumb za skok osvojili biste bod i ostali živi. To je pozitivan ishod i trebao bi vam donijeti pozitivnu numeričku ocjenu.
Poučavanje potkrepljenjem uključuje tri važna pojma: agent, neka stanja i skup akcija po stanju. Izvršavanjem akcije u određenom stanju, agent dobiva nagradu. Ponovo zamislite računalnu igru Super Mario. Vi ste Mario, u razini igre stojite kraj ruba litice. Iznad vas je novčić. Vi, kao Mario, u razini igre, na određenoj poziciji ... to je vaše stanje. Pomicanje jedan korak udesno (akcija) odvelo bi vas preko ruba i zato biste dobili nizak broj bodova. Međutim, pritiskanjem tipke za skok dobivate bod i ostajete živi. To je pozitivan ishod i trebao bi vas nagraditi pozitivnim brojem bodova.
Korištenjem učenja pojačanjem i simulatora (igre), možete naučiti kako igrati igru kako biste maksimizirali nagradu, što znači ostati živ i osvojiti što više bodova.
Korištenjem učenja potkrepljenjem i simulatora (igre) možete naučiti kako igrati igru da bi maksimizirali nagradu, odnosno ostali živi i prikupili što više bodova.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 Kliknite na sliku iznad kako biste čuli Dmitryja kako govori o učenju pojačanjem
> 🎥 Kliknite na sliku iznad da čujete Dmitryja kako govori o učenju potkrepljenjem
## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/)
## Preduvjeti i postavljanje
U ovoj lekciji eksperimentirat ćemo s nekim kodom u Pythonu. Trebali biste moći pokrenuti Jupyter Notebook kod iz ove lekcije, bilo na svom računalu ili negdje u oblaku.
U ovom ćemo se poglavlju igrati s ponekim kodom u Pythonu. Trebali biste moći pokrenuti Jupyter Notebook kod iz ovog poglavlja, bilo na svom računalu ili negdje u oblaku.
Možete otvoriti [bilježnicu lekcije](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) i proći kroz ovu lekciju kako biste je izgradili.
Možete otvoriti [zapisnik lekcije](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) i proći ovaj lekciju za učenje.
> **Napomena:** Ako otvarate ovaj kod iz oblaka, također trebate preuzeti datoteku [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), koja se koristi u kodu bilježnice. Dodajte je u isti direktorij kao i bilježnicu.
> **Napomena:** Ako otvarate ovaj kod iz oblaka, također treba preuzeti datoteku [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), koja se koristi u kodu zapisnika. Dodajte ju u isti direktorij kao zapisnik.
## Uvod
U ovoj lekciji istražit ćemo svijet **[Petra i vuka](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspiriran glazbenom bajkom ruskog skladatelja [Sergeja Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Koristit ćemo **učenje pojačanjem** kako bismo omogućili Petru da istraži svoje okruženje, prikupi ukusne jabuke i izbjegne susret s vukom.
U ovom ćemo poglavlju istražiti svijet **[Petra i vuka](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspiriran glazbenom bajkom ruskog skladatelja, [Sergeja Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Koristit ćemo **poučavanje potkrepljenjem** da Petar istraži svoju okolinu, sakupi ukusne jabuke i izbjegne susret s vukom.
**Učenje pojačanjem** (RL) je tehnika učenja koja nam omogućuje da naučimo optimalno ponašanje **agenta** u nekom **okruženju** izvođenjem mnogih eksperimenata. Agent u ovom okruženju treba imati neki **cilj**, definiran pomoću **funkcije nagrade**.
**Poučavanje potkrepljenjem** (RL) je tehnika učenja koja nam omogućava da naučimo optimalno ponašanje **agenta** u nekom **okruženju** izvođenjem mnogo eksperimenata. Agent u ovom okruženju treba imati neki **cilj**, definiran **funkcijom nagrade**.
## Okruženje
## Okoliš
Radi jednostavnosti, zamislimo Petrov svijet kao kvadratnu ploču veličine `širina` x `visina`, ovako:
Radi jednostavnosti, zamislimo da je Petarov svijet kvadratna ploča dimenzija `width` x `height`, poput ove:
* **tlo**, po kojem Peter i druga bića mogu hodati.
* **voda**, po kojoj očito ne možete hodati.
* **stablo** ili **trava**, mjesto gdje se možete odmoriti.
* **jabuka**, što predstavlja nešto što bi Peter rado pronašao kako bi se nahranio.
* **tlo**, po kojem Peter i druga stvorenja mogu hodati.
* **voda**, po kojoj očito nema hodanja.
* **stablo** ili **trava**, mjesto za odmor.
* **jabuka**, što predstavlja nešto što bi Petar bio sretan pronaći da se nahrani.
* **vuk**, koji je opasan i treba ga izbjegavati.
Postoji zaseban Python modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), koji sadrži kod za rad s ovim okruženjem. Budući da ovaj kod nije važan za razumijevanje naših koncepata, uvest ćemo modul i koristiti ga za stvaranje uzorka ploče (blok koda 1):
Postoji poseban Python modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), koji sadrži kod za rad s ovim okruženjem. Budući da ovaj kod nije važan za razumijevanje naših koncepata, uvest ćemo modul i iskoristiti ga za stvaranje primjera ploče (blok koda 1):
```python
from rlboard import *
@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
Ovaj kod bi trebao ispisati sliku okruženja sličnu onoj gore.
Ovaj kod bi trebao ispisati sliku okoline sličnu gore prikazanoj.
## Akcije i politika
U našem primjeru, Petrov cilj bio bi pronaći jabuku, dok izbjegava vuka i druge prepreke. Da bi to učinio, može se kretati dok ne pronađe jabuku.
U našem primjeru, Petrov cilj bio bi pronaći jabuku, pritom izbjegavajući vuka i prepreke. Da bi to učinio, može hodati dok ne pronađe jabuku.
Dakle, na bilo kojoj poziciji, može birati između sljedećih akcija: gore, dolje, lijevo i desno.
Dakle, na bilo kojoj poziciji može izabrati između sljedećih akcija: gore, dolje, lijevo i desno.
Te ćemo akcije definirati kao rječnik i mapirati ih na parove odgovarajućih promjena koordinata. Na primjer, pomicanje udesno (`R`) odgovaralo bi paru `(1,0)`. (blok koda 2):
Te ćemo akcije definirati kao rječnik, mapirajući ih na parove odgovarajućih promjena koordinata. Na primjer, pomak udesno (`R`) odgovara paru `(1,0)`. (blok koda 2):
action_idx = { a : i for i,a in enumerate(actions.keys()) }
```
Da rezimiramo, strategija i cilj ovog scenarija su sljedeći:
Ukratko, strategija i cilj ovog scenarija su sljedeći:
- **Strategija** našeg agenta (Petra) definirana je tzv. **politikom**. Politika je funkcija koja vraća akciju u bilo kojem danom stanju. U našem slučaju, stanje problema predstavljeno je pločom, uključujući trenutnu poziciju igrača.
- **Strategija** našeg agenta (Petra) definirana je tzv. **politikom**. Politika je funkcija koja vraća akciju u danom stanju. U našem slučaju, stanje problema predstavlja ploča uključujući trenutnu poziciju igrača.
- **Cilj** učenja pojačanjem je na kraju naučiti dobru politiku koja će nam omogućiti učinkovito rješavanje problema. Međutim, kao osnovnu liniju, razmotrit ćemo najjednostavniju politiku zvanu **slučajna šetnja**.
- **Cilj** učenja potkrepljenjem je naučiti dobru politiku koja će problem efikasno riješiti. Međutim, kao početnu točku promatrat ćemo najjednostavniju politiku nazvanu **nasumični hod**.
## Slučajna šetnja
## Nasumični hod
Najprije ćemo riješiti naš problem implementacijom strategije slučajne šetnje. Kod slučajne šetnje, nasumično ćemo birati sljedeću akciju iz dopuštenih akcija, sve dok ne dođemo do jabuke (blok koda 3).
Prvo ćemo riješiti problem implementirajući strategiju nasumičnog hoda. S njom ćemo nasumično birati sljedeću akciju iz dopuštenih, dok ne dođemo do jabuke (blok koda 3).
1. Implementirajte slučajnu šetnju pomoću donjeg koda:
1. Implementirajte nasumični hod sljedećim kodom:
```python
def random_policy(m):
return random.choice(list(actions))
def walk(m,policy,start_position=None):
n = 0 # number of steps
# set initial position
n = 0 # broj koraka
# postavi početnu poziciju
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
return n # success!
return n # uspjeh!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
return -1 # eaten by wolf or drowned
return -1 # pojeden od vuka ili se utopio
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
m.move(a) # do the actual move
m.move(a) # izvrši stvarni potez
break
n+=1
walk(m,random_policy)
```
Poziv funkcije `walk` trebao bi vratiti duljinu odgovarajuće staze, koja može varirati od jednog pokretanja do drugog.
Poziv na `walk` treba vratiti duljinu odgovarajuće staze, što se može razlikovati od izvođenja do izvođenja.
1. Pokrenite eksperiment šetnje nekoliko puta (recimo, 100) i ispišite dobivene statistike (blok koda 4):
1. Pokrenite eksperiment hoda više puta (recimo 100) i ispišite statistiku (blok koda 4):
```python
def print_statistics(policy):
@ -125,17 +125,17 @@ Najprije ćemo riješiti naš problem implementacijom strategije slučajne šetn
print_statistics(random_policy)
```
Primijetite da je prosječna duljina staze oko 30-40 koraka, što je prilično puno, s obzirom na to da je prosječna udaljenost do najbliže jabuke oko 5-6 koraka.
Primijetite da je prosječna duljina puta oko 30-40 koraka, što je dosta, s obzirom da je prosječna udaljenost do najbliže jabuke oko 5-6 koraka.
Također možete vidjeti kako izgleda Petrov pokret tijekom slučajne šetnje:
Također možete vidjeti kako izgleda Petrovo kretanje tijekom nasumičnog hoda:
Kako bismo našu politiku učinili inteligentnijom, trebamo razumjeti koji su potezi "bolji" od drugih. Da bismo to učinili, trebamo definirati naš cilj.
Da bismo našu politiku učinili inteligentnijom, moramo razumjeti koje su poteze "bolji" od drugih. Zato trebamo definirati cilj.
Cilj se može definirati u smislu **funkcije nagrade**, koja će vraćati neku vrijednost ocjene za svako stanje. Što je broj veći, to je funkcija nagrade bolja. (blok koda 5)
Cilj može biti definiran u obliku **funkcije nagrade**, koja za svako stanje vraća neku vrijednost bodova. Što je broj veći, funkcija nagrade je bolja. (blok koda 5)
```python
move_reward = -0.1
@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
Zanimljivo je da u većini slučajeva *značajnu nagradu dobivamo tek na kraju igre*. To znači da naš algoritam nekako treba zapamtiti "dobre" korake koji vode do pozitivne nagrade na kraju i povećati njihovu važnost. Slično tome, svi potezi koji vode do loših rezultata trebaju se obeshrabriti.
Zanimljivo kod funkcija nagrade jest da nam se u većini slučajeva *značajna nagrada daje tek na kraju igre*. To znači da algoritam na neki način treba zapamtiti "dobre" korake koji vode do pozitivne nagrade na kraju i naglasiti njihovu važnost. Slično tome, svi loši potezi trebali bi biti obeshrabreni.
## Q-učenje
Algoritam koji ćemo ovdje raspraviti zove se **Q-učenje**. U ovom algoritmu, politika je definirana funkcijom (ili strukturom podataka) zvanom **Q-Tablica**. Ona bilježi "dobrotu" svake od akcija u danom stanju.
Algoritam o kojem ćemo govoriti naziva se **Q-učenje**. Kod njega politika je definirana funkcijom (ili podatkovnom strukturom) nazvanom **Q-tablica**. Ona bilježi "dobrotu" svake akcije u danom stanju.
Zove se Q-Tablica jer je često zgodno predstavljati je kao tablicu ili višedimenzionalni niz. Budući da naša ploča ima dimenzije `širina` x `visina`, možemo predstaviti Q-Tablicu pomoću numpy niza s oblikom `širina` x `visina` x `len(actions)`: (blok koda 6)
Zove se Q-tablica jer ju je često zgodno prikazati kao tablicu ili višedimenzionalni niz. Budući da ploča ima dimenzije `width` x `height`, možemo Q-tablicu predstaviti numpy nizom oblika `width` x `height` x `len(actions)`: (blok koda 6)
Primijetite da inicijaliziramo sve vrijednosti Q-Tablice s jednakom vrijednošću, u našem slučaju - 0.25. Ovo odgovara politici "slučajne šetnje", jer su svi potezi u svakom stanju jednako dobri. Q-Tablicu možemo proslijediti funkciji `plot` kako bismo vizualizirali tablicu na ploči: `m.plot(Q)`.
Primijetite da inicijaliziramo sve vrijednosti u Q-tablici s istom vrijednošću, u našem slučaju - 0.25. To odgovara politici "nasumičnog hoda", jer su svi potezi u svakom stanju jednako dobri. Q-tablicu možemo predati funkciji `plot` da vizualiziramo tablicu na ploči: `m.plot(Q)`.
U središtu svake ćelije nalazi se "strelica" koja označava preferirani smjer kretanja. Budući da su svi smjerovi jednaki, prikazuje se točka.
U središtu svake ćelije nalazi se "strelica" koja pokazuje preferirani smjer kretanja. Budući da su svi smjerovi jednaki, prikazuje se točka.
Sada trebamo pokrenuti simulaciju, istražiti naše okruženje i naučiti bolju raspodjelu vrijednosti Q-Tablice, što će nam omogućiti da mnogo brže pronađemo put do jabuke.
Sad trebamo pokrenuti simulaciju, istražiti okruženje i naučiti bolju distribuciju vrijednosti Q-tablice, što će nam omogućiti da brže pronađemo put do jabuke.
## Suština Q-učenja: Bellmanova jednadžba
Jednom kada se počnemo kretati, svaka akcija imat će odgovarajuću nagradu, tj. teoretski možemo odabrati sljedeću akciju na temelju najveće neposredne nagrade. Međutim, u većini stanja potez neće postići naš cilj dolaska do jabuke, pa stoga ne možemo odmah odlučiti koji je smjer bolji.
Kad počnemo kretati, svaka akcija imat će odgovarajuću nagradu, tj. teoretski možemo izabrati sljedeću akciju s najvećom neposrednom nagradom. No, u većini stanja taj potez neće dovesti do cilja – dohvaćanja jabuke – pa ne možemo odmah odrediti koji je smjer bolji.
> Zapamtite da nije važan neposredni rezultat, već konačni rezultat, koji ćemo dobiti na kraju simulacije.
> Zapamtite da nije trenutni rezultat važan, nego konačni rezultat koji ćemo dobiti na kraju simulacije.
Kako bismo uzeli u obzir ovu odgođenu nagradu, trebamo koristiti principe **[dinamičkog programiranja](https://en.wikipedia.org/wiki/Dynamic_programming)**, koji nam omogućuju da o našem problemu razmišljamo rekurzivno.
Da bismo to usporenu nagradu uzeli u obzir, upotrijebit ćemo principe **[dinamičkog programiranja](https://en.wikipedia.org/wiki/Dynamic_programming)**, koji nam omogućuju da promatramo problem rekurzivno.
Pretpostavimo da se sada nalazimo u stanju *s* i želimo se pomaknuti u sljedeće stanje *s'*. Time ćemo dobiti neposrednu nagradu *r(s,a)*, definiranu funkcijom nagrade, plus neku buduću nagradu. Ako pretpostavimo da naša Q-Tablica točno odražava "privlačnost" svake akcije, tada ćemo u stanju *s'* odabrati akciju *a* koja odgovara maksimalnoj vrijednosti *Q(s',a')*. Tako će najbolja moguća buduća nagrada koju bismo mogli dobiti u stanju *s* biti definirana kao `max`
Pretpostavimo da smo sada u stanju *s* i želimo se pomaknuti u sljedeće stanje *s'*\. Time ćemo dobiti neposrednu nagradu *r(s,a)*, definiranu funkcijom nagrade, plus neku buduću nagradu. Ako pretpostavimo da naša Q-tablica ispravno odražava "privlačnost" svake akcije, u stanju *s'* odabrat ćemo akciju *a* koja odgovara maksimalnoj vrijednosti *Q(s',a')*. Dakle, najbolja moguća buduća nagrada u stanju *s* definirat će se kao `max`<sub>a'</sub>*Q(s',a')* (maksimum je ovdje izračunat preko svih mogućih akcija *a'* u stanju *s'*).
Ovo daje **Bellmanovu formulu** za izračun vrijednosti Q-tablice u stanju *s*, za akciju *a*:
Ovdje je γ takozvani **faktor diskontiranja** koji određuje u kojoj mjeri treba zanemariti trenutnu nagradu u korist buduće ili obratno.
## Algoritam učenja
S obzirom na prethodnu jednadžbu, sada možemo napisati pseudo-kod algoritma učenja:
* Inicijaliziraj Q-tablicu Q jednakim brojevima za sva stanja i akcije
* Postavi stopu učenja α ← 1
* Ponavljaj simulaciju mnogo puta
1. Počni na nasumičnoj poziciji
1. Ponavljaj
1. Izaberi akciju *a* u stanju *s*
2. Izvrši akciju pomicanjem u novo stanje *s'*
3. Ako je ispunjen uvjet kraja igre ili je ukupna nagrada previše mala - izađi iz simulacije
4. Izračunaj nagradu *r* u novom stanju
5. Ažuriraj Q-funkciju prema Bellmanovoj formuli: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ max<sub>a'</sub>Q(s',a'))*
6. *s* ← *s'*
7. Ažuriraj ukupnu nagradu i smanji α.
## Eksploatacija protiv istraživanja
U prethodnom algoritmu nismo precizirali kako točno birati akciju u koraku 2.1. Ako akciju biramo nasumično, **istraživat ćemo** okruženje i vjerojatno ćemo često umirati i istraživati mjesta gdje inače ne bismo išli. Alternativni pristup je **iskoristiti** već poznate vrijednosti Q-tablice i tako izabrati najbolju akciju (onu s većom Q-vrijednošću) u stanju *s*. To nas međutim sprječava u istraživanju novih stanja i možda nećemo pronaći optimalno rješenje.
Zbog toga je najbolji pristup postići ravnotežu između istraživanja i eksploatacije. To se može učiniti izborom akcije u stanju *s* s vjerojatnostima proporcionalnima vrijednostima u Q-tablici. Na početku, kada su sve vrijednosti u Q-tablici iste, to će biti nasumični izbor, ali kako učimo o okolišu, sve ćemo češće birati optimalnu putanju uz povremeni izbor neistraženih opcija.
## Implementacija u Pythonu
Spremni smo za implementaciju algoritma učenja. Prije toga trebamo još i funkciju koja će raznorazne vrijednosti u Q-tablici pretvoriti u vektor vjerojatnosti za odgovarajuće akcije.
1. Kreirajte funkciju `probs()`:
```python
def probs(v,eps=1e-4):
v = v-v.min()+eps
v = v/v.sum()
return v
```
Dodajemo malo `eps` originalnom vektoru da izbjegnemo dijeljenje s 0 u početnom slučaju, kad su svi elementi vektora jednaki.
Pokrenite algoritam učenja kroz 5000 eksperimenata, nazvanih i **epohama**: (blok koda 8)
```python
for epoch in range(5000):
# Odaberi početnu točku
m.random_start()
# Započni putovanje
n=0
cum_reward = 0
while True:
x,y = m.human
v = probs(Q[x,y])
a = random.choices(list(actions),weights=v)[0]
dpos = actions[a]
m.move(dpos,check_correctness=False) # dopuštamo igraču da se pomakne izvan ploče, što završava epizodu
Nakon izvršavanja algoritma, Q-tablica trebala bi biti ažurirana vrijednostima koje definiraju privlačnost različitih akcija u svakom koraku. Možemo pokušati vizualizirati Q-tablicu tako da nacrtamo vektor u svakoj ćeliji koji pokazuje željeni smjer kretanja. Radi jednostavnosti, umjesto vrha strelice crtamo mali krug.
Budući da Q-Tablica prikazuje "privlačnost" svake akcije u svakom stanju, vrlo je jednostavno koristiti je za definiranje učinkovitog kretanja u našem svijetu. U najjednostavnijem slučaju, možemo odabrati akciju koja odgovara najvećoj vrijednosti u Q-Tablici: (kodni blok 9)
Kako Q-tablica prikazuje "privlačnost" svake akcije u svakom stanju, relativno je lako koristiti je za definiranje učinkovite navigacije u našem svijetu. U najjednostavnijem slučaju, možemo izabrati akciju s najvećom Q-vrijednošću: (blok koda 9)
```python
def qpolicy_strict(m):
@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
> Ako nekoliko puta isprobate gornji kod, možda ćete primijetiti da se ponekad "zaglavi" i morate pritisnuti gumb STOP u bilježnici kako biste ga prekinuli. To se događa jer mogu postojati situacije u kojima dva stanja "pokazuju" jedno na drugo u smislu optimalne Q-Vrijednosti, u kojem slučaju agent završava krećući se između tih stanja beskonačno.
> Ako nekoliko puta pokušate gore navedeni kod, možda ćete primijetiti da se ponekad "zamrzne" i morate pritisnuti gumb STOP u bilježnici da ga prekinete. To se događa jer mogu postojati situacije kada se dva stanja "pokazuju" jedno na drugo u smislu optimalne Q-vrijednosti, u kojem slučaju agent na kraju naizmjence prelazi između tih stanja beskonačno.
## 🚀Izazov
> **Zadatak 1:**Modificirajte funkciju `walk` kako biste ograničili maksimalnu duljinu puta na određeni broj koraka (recimo, 100) i promatrajte kako gornji kod povremeno vraća ovu vrijednost.
> **Zadatak 1:**Izmijenite funkciju `walk` da ograniči maksimalnu duljinu puta na određeni broj koraka (recimo 100) i promatrajte kako gornji kod s vremena na vrijeme vraća tu vrijednost.
> **Zadatak 2:**Modificirajte funkciju `walk` tako da se ne vraća na mjesta na kojima je već bio. Ovo će spriječiti da se `walk` ponavlja, no agent i dalje može završiti "zarobljen" na lokaciji s koje ne može pobjeći.
> **Zadatak 2:**Izmijenite funkciju `walk` tako da se ne vraća na mjesta na kojima je već bio ranije. Time će se spriječiti petljanje `walk` funkcije, no agent se i dalje može "zaglavljivati" na mjestu iz kojeg ne može pobjeći.
## Navigacija
Bolja navigacijska politika bila bi ona koju smo koristili tijekom treninga, a koja kombinira eksploataciju i istraživanje. U ovoj politici odabiremo svaku akciju s određenom vjerojatnošću, proporcionalno vrijednostima u Q-Tablici. Ova strategija može i dalje rezultirati time da se agent vraća na poziciju koju je već istražio, ali, kao što možete vidjeti iz koda dolje, rezultira vrlo kratkim prosječnim putem do željene lokacije (zapamtite da `print_statistics` pokreće simulaciju 100 puta): (kodni blok 10)
Bolja navigacijska politika bila bi ona koju smo koristili tijekom učenja, koja kombinira eksploataciju i istraživanje. U ovoj politici ćemo odabrati svaku radnju s određenom vjerojatnošću, proporcionalnom vrijednostima u Q-tablici. Ova strategija i dalje može rezultirati time da se agent vrati na poziciju koju je već istražio, ali kao što možete vidjeti iz koda dolje, rezultat je vrlo kratak prosječni put do željene lokacije (zapamtite da `print_statistics` pokreće simulaciju 100 puta): (blok koda 10)
```python
def qpolicy(m):
@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
Nakon pokretanja ovog koda, trebali biste dobiti znatno manju prosječnu duljinu puta nego prije, u rasponu od 3-6.
Nakon pokretanja ovog koda, trebali biste dobiti znatno manju prosječnu duljinu puta nego prije, u rasponu od 3 do 6.
## Istraživanje procesa učenja
Kao što smo spomenuli, proces učenja je ravnoteža između istraživanja i korištenja stečenog znanja o strukturi prostora problema. Vidjeli smo da su rezultati učenja (sposobnost pomaganja agentu da pronađe kratak put do cilja) poboljšani, ali također je zanimljivo promatrati kako se prosječna duljina puta ponaša tijekom procesa učenja:
Kao što smo spomenuli, proces učenja je balans između istraživanja i eksploatacije stečenog znanja o strukturi problema. Vidjeli smo da su se rezultati učenja (sposobnost da agent nađe kratak put do cilja) poboljšali, ali također je zanimljivo promatrati kako se prosječna duljina puta ponaša tijekom procesa učenja:
- **Prosječna duljina puta raste**. Ono što ovdje vidimo jest da na početku prosječna duljina puta raste. To je vjerojatno zbog činjenice da, kada ništa ne znamo o okolišu, vjerojatno ćemo se zaglaviti u lošim stanjima, poput vode ili vuka. Kako učimo više i počnemo koristiti to znanje, možemo dulje istraživati okoliš, ali još uvijek ne znamo dobro gdje se nalaze jabuke.
- **Prosječna duljina puta se povećava**. Ono što vidimo ovdje je da se u početku prosječna duljina puta povećava. To je vjerojatno zbog toga što, kad ništa ne znamo o okolišu, vjerojatno ćemo se zaglaviti u lošim stanjima, vodi ili vuku. Kako učimo više i počinjemo koristiti to znanje, možemo duže istraživati okoliš, ali još uvijek ne znamo dobro gdje se nalaze jabuke.
- **Duljina puta se smanjuje kako učimo više**. Kada dovoljno naučimo, agentu postaje lakše postići cilj, a duljina puta počinje se smanjivati. Međutim, još uvijek smo otvoreni za istraživanje, pa često skrećemo s najboljeg puta i istražujemo nove opcije, čime put postaje dulji od optimalnog.
- **Duljina puta se smanjuje kako učimo**. Kada dovoljno naučimo, agentu je lakše postići cilj, pa duljina puta počinje opadati. Međutim, još uvijek smo otvoreni za istraživanje, pa se često udaljimo od najboljeg puta i isprobavamo nove opcije, čineći put duljim od optimalnog.
- **Duljina naglo raste**. Ono što također primjećujemo na ovom grafu jest da u nekom trenutku duljina naglo raste. To ukazuje na stohastičku prirodu procesa i da u nekom trenutku možemo "pokvariti" koeficijente u Q-Tablici prepisivanjem novih vrijednosti. Ovo bi idealno trebalo minimizirati smanjenjem stope učenja (na primjer, prema kraju treninga, prilagođavamo vrijednosti u Q-Tablici samo malim iznosom).
- **Duljina naglo raste**. Također primjećujemo na ovom grafikonu da je u nekom trenutku duljina naglo porasla. To upućuje na stohastičku prirodu procesa i da možemo u nekom trenutku "pokvariti" koeficijente Q-tablice prebrisavanjem novim vrijednostima. To bi idealno trebalo biti minimizirano smanjenjem stope učenja (na primjer, prema kraju treninga, vrijednosti Q-tablice se prilagođavaju samo za malu vrijednost).
Sveukupno, važno je zapamtiti da uspjeh i kvaliteta procesa učenja značajno ovise o parametrima, poput stope učenja, smanjenja stope učenja i faktora diskonta. Ti se parametri često nazivaju **hiperparametri**, kako bi se razlikovali od **parametara**, koje optimiziramo tijekom treninga (na primjer, koeficijenti u Q-Tablici). Proces pronalaženja najboljih vrijednosti hiperparametara naziva se **optimizacija hiperparametara**, i zaslužuje zasebnu temu.
Sveukupno, važno je zapamtiti da uspjeh i kvaliteta procesa učenja značajno ovise o parametrima, kao što su stopa učenja, opadanje stope učenja i faktor diskonta. Ti se često nazivaju **hiperparametri** kako bi ih se razlikovalo od **parametara**, koje optimiziramo tijekom treninga (na primjer, koeficijenti Q-tablice). Proces pronalaska najboljih vrijednosti hiperparametara naziva se **optimizacija hiperparametara** i zaslužuje zasebnu temu.
## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
## [Kviza nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
## Zadatak
[Realističniji svijet](assignment.md)
---
**Odricanje od odgovornosti**:
Ovaj dokument je preveden korištenjem AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Napomena**:
Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.
V tem učnem načrtu boste začeli odkrivati, kako strojno učenje vpliva na naše vsakdanje življenje. Že zdaj so sistemi in modeli vključeni v vsakodnevne odločitve, kot so zdravstvene diagnoze, odobritve posojil ali odkrivanje goljufij. Zato je pomembno, da ti modeli delujejo zanesljivo in zagotavljajo rezultate, ki jim lahko zaupamo. Tako kot pri vsaki programski aplikaciji tudi sistemi umetne inteligence včasih ne izpolnijo pričakovanj ali privedejo do neželenih rezultatov. Zato je ključno razumeti in pojasniti vedenje modela umetne inteligence.
V tem učnem programu boste začeli odkrivati, kako strojno učenje vpliva na naše vsakdanje življenje. Že zdaj so sistemi in modeli vključeni v dnevna odločanja, kot so zdravstvene diagnoze, odobritve posojil ali odkrivanje prevar. Zato je pomembno, da ti modeli dobro delujejo in zagotavljajo rezultate, ki so zaupanja vredni. Tako kot katera koli programska oprema bodo tudi sistemi umetne inteligence kdaj zgrešili pričakovanja ali imeli nezaželen izid. Zato je ključno razumeti in pojasniti vedenje AI modela.
Predstavljajte si, kaj se lahko zgodi, če podatki, ki jih uporabljate za gradnjo teh modelov, ne vključujejo določenih demografskih skupin, kot so rasa, spol, politično prepričanje, religija, ali pa so te skupine nesorazmerno zastopane. Kaj pa, če je izhod modela interpretiran tako, da favorizira določeno demografsko skupino? Kakšne so posledice za aplikacijo? Poleg tega, kaj se zgodi, če model povzroči škodljive rezultate? Kdo je odgovoren za vedenje sistema umetne inteligence? To so nekatera vprašanja, ki jih bomo raziskali v tem učnem načrtu.
Predstavljajte si, kaj se lahko zgodi, če podatki, ki jih uporabljate za izdelavo teh modelov, manjkajo nekatere demografske skupine, kot so rasa, spol, politična usmeritev, vera, ali nesorazmerno predstavljajo te demografske skupine. Kaj pa, če se izhod modela interpretira v korist določene demografske skupine? Kakšne so posledice za aplikacijo? Poleg tega, kaj se zgodi, ko ima model škodljiv izid in škodi ljudem? Kdo je odgovoren za vedenje AI sistema? To so nekatere izmed vprašanj, ki jih bomo raziskovali v tem učnem programu.
V tej lekciji boste:
V tej lekciji boste:
- Povečali zavedanje o pomembnosti pravičnosti v strojnem učenju in škodah, povezanih s pravičnostjo.
- Spoznali prakso raziskovanja odstopanj in nenavadnih scenarijev za zagotavljanje zanesljivosti in varnosti.
- Pridobili razumevanje o potrebi po vključevanju vseh z oblikovanjem inkluzivnih sistemov.
- Raziskali, kako pomembno je varovati zasebnost in varnost podatkov ter ljudi.
- Spoznali pomen pristopa "steklene škatle" za pojasnjevanje vedenja modelov umetne inteligence.
- Postali pozorni na to, kako je odgovornost ključna za gradnjo zaupanja v sisteme umetne inteligence.
- Povečali zavedanje o pomenu pravičnosti v strojnem učenju in s tem povezanih škodah.
- Spoznali prakso raziskovanja izstopajočih primerov in nenavadnih scenarijev za zagotavljanje zanesljivosti in varnosti
- Pridobili razumevanje potrebe po opolnomočenju vseh z oblikovanjem vključujočih sistemov
- Raziskali, kako nujno je varovanje zasebnosti in varnosti podatkov ter ljudi
- Videli, zakaj je pomemben pristop skozi prozorno škatlo za pojasnjevanje vedenja AI modelov
- Biti pozorni na to, kako je odgovornost ključna za gradnjo zaupanja v AI sisteme
## Predpogoj
Kot predpogoj si oglejte učni načrt "Načela odgovorne umetne inteligence" in si oglejte spodnji video na to temo:
Za predpogoj, prosimo opravi "Principi odgovorne umetne inteligence" učno pot in si oglejte spodnji video na to temo:
Več o odgovorni umetni inteligenci lahko izveste s sledenjem temu [učnemu načrtu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott).
Izvedite več o odgovorni umetni inteligenci z učenjem na tej [učni poti](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
[](https://youtu.be/dnC8-uUZXSc "Microsoftov pristop k odgovorni umetni inteligenci")
@ -32,113 +32,136 @@ Več o odgovorni umetni inteligenci lahko izveste s sledenjem temu [učnemu nač
## Pravičnost
Sistemi umetne inteligence bi morali obravnavati vse enako in se izogibati različnemu vplivu na podobne skupine ljudi. Na primer, ko sistemi umetne inteligence svetujejo pri medicinskem zdravljenju, prošnjah za posojila ali zaposlitvi, bi morali podati enaka priporočila vsem z enakimi simptomi, finančnimi okoliščinami ali poklicnimi kvalifikacijami. Vsak od nas kot človek nosi podedovane pristranskosti, ki vplivajo na naše odločitve in dejanja. Te pristranskosti so lahko vidne v podatkih, ki jih uporabljamo za treniranje sistemov umetne inteligence. Takšna manipulacija se včasih zgodi nenamerno. Pogosto je težko zavestno vedeti, kdaj vnašate pristranskost v podatke.
Sistemi umetne inteligence naj obravnavajo vse pošteno in naj se izogibajo različnemu vplivu na podobne skupine ljudi. Na primer, ko sistemi umetne inteligence nudijo navodila glede zdravljenja, vlog za posojila ali zaposlovanja, bi morali dati iste priporočila vsem z podobnimi simptomi, finančnimi pogoji ali strokovnimi kvalifikacijami. Vsak izmed nas kot človek nosi dedne predsodke, ki vplivajo na naše odločitve in dejanja. Ti predsodki se lahko pokažejo v podatkih, ki jih uporabljamo za usposabljanje AI sistemov. Takšna manipulacija se lahko zgodi tudi nehote. Pogosto je težko zavestno vedeti, kdaj vnašate pristranskost v podatke.
**"Nepravičnost"** zajema negativne vplive ali "škode" za skupino ljudi, kot so tiste, opredeljene glede na raso, spol, starost ali status invalidnosti. Glavne škode, povezane s pravičnostjo, lahko razvrstimo kot:
**"Nepravičnost"** vključuje negativne učinke ali "škode" za določeno skupino ljudi, kot so opredeljene glede na raso, spol, starost ali invalidnost. Glavne škode, povezane s pravičnostjo, lahko razvrstimo kot:
- **Dodeljevanje**, če je na primer spol ali etnična pripadnost favorizirana pred drugo.
- **Kakovost storitve**. Če trenirate podatke za en specifičen scenarij, vendar je resničnost veliko bolj kompleksna, to vodi do slabo delujoče storitve. Na primer, podajalnik mila, ki ne zazna ljudi s temno kožo. [Referenca](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **Omalovaževanje**. Nepravično kritiziranje in označevanje nečesa ali nekoga. Na primer, tehnologija za označevanje slik je zloglasno napačno označila slike temnopolte ljudi kot gorile.
- **Prekomerna ali nezadostna zastopanost**. Ideja, da določena skupina ni vidna v določenem poklicu, in vsaka storitev ali funkcija, ki to še naprej promovira, prispeva k škodi.
- **Stereotipiziranje**. Povezovanje določene skupine s predhodno določenimi lastnostmi. Na primer, sistem za prevajanje med angleščino in turščino lahko vsebuje netočnosti zaradi besed s stereotipnimi povezavami s spolom.
- **Dodeljevanje**, če je na primer spol ali narodnost v prid eni skupini pred drugo.
- **Kakovost storitve**. Če usposobite model za en poseben scenarij, vendar je realnost veliko bolj kompleksna, vodi do slabo delujoče storitve. Na primer, dozirnik mila za roke, ki ni mogel zaznati ljudi s temnejšo kožo. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **Ocenjevanje na nepošten način**. Nepravično kritizirati in označiti nekaj ali nekoga. Na primer, tehnologija za označevanje slik je žal neuspešno označila slike temnopoltih ljudi kot gorile.
- **Prekomerna ali prenizka zastopanost**. Ideja je, da določena skupina ni prisotna na določenem poklicnem področju, in kakršnakoli storitev ali funkcija, ki to nadaljuje, povzroča škodo.
- **Stereotipiziranje**. Povezovanje določene skupine s predhodno določenimi lastnostmi. Na primer, sistem za prevajanje med angleščino in turščino lahko zaradi stereotipnih povezav z besedami glede spola povzroča netočnosti.


> prevod v turščino


> prevod nazaj v angleščino
Pri oblikovanju in testiranju sistemov umetne inteligence moramo zagotoviti, da je umetna inteligenca pravična in ni programirana za sprejemanje pristranskih ali diskriminatornih odločitev, ki jih ljudje prav tako ne smejo sprejemati. Zagotavljanje pravičnosti v umetni inteligenci in strojnem učenju ostaja kompleksen sociotehnični izziv.
Pri načrtovanju in testiranju AI sistemov moramo zagotoviti, da je umetna inteligenca pravična in ni programirana za pristranske ali diskriminatorne odločitve, katerih sprejemanje je ljudem prav tako prepovedano. Zagotavljanje pravičnosti v umetni inteligenci in strojnem učenju ostaja kompleksen sociotehnični izziv.
### Zanesljivost in varnost
Za gradnjo zaupanja morajo biti sistemi umetne inteligence zanesljivi, varni in dosledni v običajnih in nepričakovanih pogojih. Pomembno je vedeti, kako se bodo sistemi umetne inteligence obnašali v različnih situacijah, še posebej, ko gre za odstopanja. Pri gradnji rešitev umetne inteligence je treba nameniti veliko pozornosti temu, kako obravnavati širok spekter okoliščin, s katerimi se lahko srečajo rešitve umetne inteligence. Na primer, avtonomni avtomobil mora postaviti varnost ljudi kot najvišjo prioriteto. Posledično mora umetna inteligenca, ki poganja avtomobil, upoštevati vse možne scenarije, s katerimi se lahko avtomobil sreča, kot so noč, nevihte ali snežni meteži, otroci, ki tečejo čez cesto, hišni ljubljenčki, gradbena dela itd. Kako dobro sistem umetne inteligence obravnava širok spekter pogojev zanesljivo in varno, odraža raven predvidevanja, ki jo je podatkovni znanstvenik ali razvijalec umetne inteligence upošteval med oblikovanjem ali testiranjem sistema.
Za gradnjo zaupanja morajo biti AI sistemi zanesljivi, varni in dosledni v normalnih in nepričakovanih razmerah. Pomembno je vedeti, kako se bodo AI sistemi obnašali v različnih situacijah, posebej ko so izstopajoči primeri. Pri izdelavi AI rešitev je treba nameniti veliko pozornosti obravnavi širokega spektra okoliščin, s katerimi se bodo AI rešitve srečale. Na primer, avtonomni avtomobil mora varnost ljudi postaviti na prvo mesto. Posledično mora AI, ki poganja avto, upoštevati vse možne scenarije, s katerimi se lahko avto sreča, kot so noč, nevihte ali snežni viharji, otroci, ki prečkajo cesto, hišni ljubljenčki, cestna gradbišča itd. Kako dobro lahko AI sistem zanesljivo in varno obvladuje pester nabor pogojev, odraža stopnjo predvidevanja podatkovnega znanstvenika ali razvijalca AI med načrtovanjem ali testiranjem sistema.
> [🎥 Kliknite tukaj za video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inkluzivnost
### Vključujočnost
Sistemi umetne inteligence bi morali biti zasnovani tako, da vključujejo in opolnomočijo vse. Pri oblikovanju in implementaciji sistemov umetne inteligence podatkovni znanstveniki in razvijalci umetne inteligence identificirajo in obravnavajo morebitne ovire v sistemu, ki bi lahko nenamerno izključile ljudi. Na primer, po svetu je 1 milijarda ljudi z invalidnostmi. Z napredkom umetne inteligence lahko dostopajo do širokega spektra informacij in priložnosti boljenostavno v svojem vsakdanjem življenju. Z odpravljanjem ovir se ustvarjajo priložnosti za inovacije in razvoj izdelkov umetne inteligence z boljšimi izkušnjami, ki koristijo vsem.
AI sistemi naj bodo zasnovani tako, da vključujejo in opolnomočajo vse. Pri načrtovanju in uvajanju AI sistemov podatkovni znanstveniki in razvijalci AI prepoznajo in odpravijo morebitne ovire v sistemu, ki bi lahko nehote izključile ljudi. Na primer, po svetu je 1 milijarda oseb z invalidnostmi. Z razvojem AI lahko dostopajo do širokega spektra informacij in priložnosti lažje v svojem vsakdanjem življenju. Z odpravljanjem ovir se ustvarjajo priložnosti za inovacije in razvoj AI izdelkov z boljšimi izkušnjami, ki koristijo vsem.
> [🎥 Kliknite tukaj za video: inkluzivnost v umetni inteligenci](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
> [🎥 Kliknite tukaj za video: vključujočnost v AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Varnost in zasebnost
### Varnost in zasebnost
Sistemi umetne inteligence bi morali biti varni in spoštovati zasebnost ljudi. Ljudje manj zaupajo sistemom, ki ogrožajo njihovo zasebnost, informacije ali življenja. Pri treniranju modelov strojnega učenja se zanašamo na podatke za doseganje najboljših rezultatov. Pri tem je treba upoštevati izvor podatkov in njihovo integriteto. Na primer, ali so podatki uporabniško posredovani ali javno dostopni? Poleg tega je med delom s podatki ključno razviti sisteme umetne inteligence, ki lahko zaščitijo zaupne informacije in se uprejo napadom. Ker umetna inteligenca postaja vse bolj razširjena, postaja zaščita zasebnosti in varnost pomembnih osebnih ter poslovnih informacij vse bolj kritična in kompleksna. Zasebnost in varnost podatkov zahtevata posebno pozornost pri umetni inteligenci, saj je dostop do podatkov bistven za to, da sistemi umetne inteligence sprejemajo natančne in informirane napovedi ter odločitve o ljudeh.
AI sistemi morajo biti varni in spoštovati zasebnost ljudi. Ljudje manj zaupajo sistemom, ki ogrožajo njihovo zasebnost, podatke ali življenje. Pri usposabljanju modelov strojnega učenja se zanašamo na podatke za dosego najboljših rezultatov. Pri tem je treba upoštevati izvor podatkov in njihovo integriteto. Na primer, ali so bili podatki posredovani s strani uporabnikov ali so bili javno dostopni? Nadalje, pri delu s podatki je ključno razviti AI sisteme, ki lahko varujejo zaupne informacije in odbijajo napade. Ker AI postaja vse bolj razširjena, je varovanje zasebnosti in varnost pomembnih osebnih in poslovnih informacij vse bolj kritično in kompleksno. Težave z zasebnostjo in varnostjo podatkov zahtevajo še posebej veliko pozornosti pri AI, ker je dostop do podatkov ključnega pomena za točne in informirane napovedi ter odločitve o ljudeh.
> [🎥 Kliknite tukaj za video: varnost v umetni inteligenci](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Kliknite tukaj za video: varnost v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Kot industrija smo dosegli pomemben napredek na področju zasebnosti in varnosti, ki ga močno spodbujajo regulacije, kot je GDPR (Splošna uredba o varstvu podatkov).
- Kljub temu moramo pri sistemih umetne inteligence priznati napetost med potrebo po več osebnih podatkih za izboljšanje učinkovitosti sistemov in zasebnostjo.
- Tako kot ob rojstvu povezanih računalnikov z internetom, opažamo tudi velik porast števila varnostnih težav, povezanih z umetno inteligenco.
- Hkrati pa opažamo, da se umetna inteligenca uporablja za izboljšanje varnosti. Na primer, večina sodobnih protivirusnih skenerjev temelji na AI heuristiki.
- Zagotoviti moramo, da se naši procesi podatkovne znanosti harmonično prepletajo z najnovejšimi praksami zasebnosti in varnosti.
- Kot industrija smo dosegli pomemben napredek na področju zasebnosti in varnosti, ki ga je močno spodbudila zakonodaja, kot je GDPR (Splošna uredba o varstvu podatkov).
- Vendar pa moramo pri AI sistemih priznati napetost med potrebo po več osebnih podatkih za bolj osebne in učinkovite sisteme ter zasebnostjo.
- Tako kot pri vzpostavitvi povezanih računalnikov z internetom, tudi pri AI opažamo velik porast varnostnih vprašanj.
- Hkrati smo videli, da se AI uporablja za izboljšanje varnosti. Na primer, večina sodobnih protivirusnih skenerjev danes temelji na heuristikah AI.
- Potrebno je zagotoviti, da naši procesi podatkovnih znanosti harmonično vključujejo najnovejše prakse zasebnosti in varnosti.
### Transparentnost
Sistemi umetne inteligence bi morali biti razumljivi. Ključni del transparentnosti je pojasnjevanje vedenja sistemov umetne inteligence in njihovih komponent. Izboljšanje razumevanja sistemov umetne inteligence zahteva, da deležniki razumejo, kako in zakaj delujejo, da lahko identificirajo morebitne težave z zmogljivostjo, varnostjo in zasebnostjo, pristranskosti, izključujoče prakse ali nenamerne rezultate. Prav tako verjamemo, da bi morali biti tisti, ki uporabljajo sisteme umetne inteligence, iskreni in odkriti glede tega, kdaj, zakaj in kako se odločijo za njihovo uporabo. Prav tako morajo pojasniti omejitve sistemov, ki jih uporabljajo. Na primer, če banka uporablja sistem umetne inteligence za podporo pri odločanju o potrošniških posojilih, je pomembno preučiti rezultate in razumeti, kateri podatki vplivajo na priporočila sistema. Vlade začenjajo regulirati umetno inteligenco v različnih industrijah, zato morajo podatkovni znanstveniki in organizacije pojasniti, ali sistem umetne inteligence izpolnjuje regulativne zahteve, še posebej, ko pride do neželenega rezultata.
### Preglednost
AI sistemi morajo biti razumljivi. Ključni del preglednosti je pojasnjevanje vedenja AI sistemov in njihovih komponent. Izboljšanje razumevanja AI sistemov zahteva, da zainteresirane strani razumejo, kako in zakaj delujejo, da lahko prepoznajo morebitne težave z uspešnostjo, varnostjo in zasebnostjo, predsodke, izključujoče prakse ali nenamerne izide. Prav tako verjamemo, da bi morali uporabniki AI sistemov biti pošteni in odprti glede tega, kdaj, zakaj in kako jih uporabljajo, kot tudi o omejitvah sistemov, ki jih uporabljajo. Na primer, če banka uporablja AI sistem za podporo svojim odločitvam o posojilih potrošnikom, je pomembno pregledati izide in razumeti, kateri podatki vplivajo na priporočila sistema. Vlade začinjajo regulirati AI v različnih industrijah, zato morajo podatkovni znanstveniki in organizacije pojasniti, ali AI sistem izpolnjuje regulativne zahteve, zlasti, ko pride do nezaželenega izida.
> [🎥 Kliknite tukaj za video: transparentnost v umetni inteligenci](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Kliknite tukaj za video: preglednost v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Ker so sistemi umetne inteligence tako kompleksni, je težko razumeti, kako delujejo in interpretirati rezultate.
- To pomanjkanje razumevanja vpliva na način upravljanja, operacionalizacije in dokumentiranja teh sistemov.
- Še pomembneje pa to pomanjkanje razumevanja vpliva na odločitve, sprejete na podlagi rezultatov, ki jih ti sistemi proizvajajo.
- Ker so AI sistemi zelo kompleksni, je težko razumeti, kako delujejo in razlagati rezultate.
- Ta pomanjkljivo razumevanje vpliva na način upravljanja, operativnosti in dokumentacije teh sistemov.
- Še pomembneje pa to vpliva na odločitve, sprejete na podlagi rezultatov, ki jih ti sistemi proizvajajo.
### Odgovornost
### Odgovornost
Osebe, ki načrtujejo in uvajajo AI sisteme, morajo biti odgovorne za delovanje svojih sistemov. Potreba po odgovornosti je še posebej pomembna pri občutljivih tehnologijah, kot je prepoznavanje obrazov. Nedavno je naraslo povpraševanje po tehnologiji prepoznavanja obrazov, zlasti pri organih pregona, ki vidijo potencial tehnologije za iskanje pogrešanih otrok. Vendar pa bi te tehnologije lahko vlade potencialno uporabile za ogrožanje temeljnih svoboščin državljanov, na primer omogočanje stalnega nadzora določenih posameznikov. Zato morajo podatkovni znanstveniki in organizacije prevzeti odgovornost za vpliv svojega AI sistema na posameznike ali družbo.
Ljudje, ki oblikujejo in uvajajo sisteme umetne inteligence, morajo biti odgovorni za delovanje svojih sistemov. Potreba po odgovornosti je še posebej ključna pri občutljivih tehnologijah, kot je prepoznavanje obrazov. V zadnjem času se povečuje povpraševanje po tehnologiji prepoznavanja obrazov, zlasti s strani organov pregona, ki vidijo potencial tehnologije pri uporabi, kot je iskanje pogrešanih otrok. Vendar pa bi te tehnologije lahko potencialno uporabila vlada za ogrožanje temeljnih svoboščin svojih državljanov, na primer z omogočanjem neprekinjenega nadzora določenih posameznikov. Zato morajo podatkovni znanstveniki in organizacije prevzeti odgovornost za to, kako njihov sistem umetne inteligence vpliva na posameznike ali družbo.
[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftov pristop k odgovorni umetni inteligenci")
[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftov pristop k odgovorni umetni inteligenci")
> 🎥 Kliknite zgornjo sliko za video: Opozorila pred množičnim nadzorom s prepoznavanjem obrazov
> 🎥 Kliknite zgornjo sliko za video: Opozorila o množičnem nadzoru prek prepoznavanja obrazov
Na koncu je eno največjih vprašanj za našo generacijo, kot prvo generacijo, ki prinaša AI v družbo, kako zagotoviti, da bodo računalniki ostali odgovorni ljudem in kako zagotoviti, da bodo ljudje, ki računalnike načrtujejo, odgovorni do vseh drugih.
Na koncu je eno največjih vprašanj naše generacije, kot prve generacije, ki prinaša umetno inteligenco v družbo, kako zagotoviti, da bodo računalniki ostali odgovorni ljudem in kako zagotoviti, da bodo ljudje, ki oblikujejo računalnike, ostali odgovorni vsem drugim.
## Ocena vpliva
## Ocena vpliva
Pred usposabljanjem modela strojnega učenja je pomembno opraviti oceno vpliva, da se razume namen AI sistema; kakšna je predvidena uporaba; kje bo nameščen; in kdo bo interagiralo s sistemom. To pomaga ocenjevalcem ali testnim osebam pri ocenjevanju sistema vedeti, katere dejavnike morajo upoštevati pri prepoznavanju morebitnih tveganj in pričakovanih posledic.
Pred treniranjem modela strojnega učenja je pomembno izvesti oceno vpliva, da razumemo namen sistema umetne inteligence; kakšna je predvidena uporaba; kje bo uveden; in kdo bo interagiral s sistemom. To je koristno za pregledovalce ali preizkuševalce, ki ocenjujejo sistem, da vedo, katere dejavnike je treba upoštevati pri prepoznavanju morebitnih tveganj in pričakovanih posledic.
Spodaj so navedena področja osredotočenosti pri izvajanju ocene vpliva:
Naslednja področja so v ospredju pri izvajanju ocene vpliva:
* **Neželeni vpliv na posameznike**. Biti pozoren na kakršne koli omejitve, zahteve, neodobrene uporabe ali znane omejitve, ki ovirajo delovanje sistema, je ključno za zagotovitev, da sistem ni uporabljen na način, ki bi lahko škodoval posameznikom.
* **Zahteve glede podatkov**. Razumevanje, kako in kje bo sistem uporabljal podatke, omogoča ocenjevalcem raziskovanje morebitnih zahtev glede podatkov, ki jih je treba upoštevati (npr. GDPR ali HIPAA predpisi o podatkih). Poleg tega je treba oceniti, ali je vir ali količina podatkov zadostna za usposabljanje.
* **Povzetek vpliva**. Zberite seznam morebitnih škod, ki bi lahko nastale zaradi uporabe sistema. V celotnem življenjskem ciklu ML preglejte, ali so ugotovljene težave ublažene ali rešene.
* **Uporabni cilji** za vsako od šestih osnovnih načel. Ocenite, ali so cilji vsakega načela doseženi in ali obstajajo vrzeli.
* **Negativen vpliv na posameznike**. Zavedanje o kakršnih koli omejitvah ali zahtevah, nepodprti uporabi ali znanih omejitvah, ki ovirajo delovanje sistema, je ključno za zagotovitev, da sistem ni uporabljen na način, ki bi lahko škodoval posameznikom.
* **Zahteve glede podatkov**. Razumevanje, kako in kje bo sistem uporabljal podatke, omogoča pregledovalcem, da raziščejo morebitne zahteve glede podatkov, na katere morate biti pozorni (npr. GDPR ali HIPPA regulacije podatkov). Poleg tega preučite, ali je vir ali količina podatkov zadostna za treniranje.
* **Povzetek vpliva**. Zberite seznam morebitnih škod, ki bi lahko nastale zaradi uporabe sistema. Skozi življenjski cikel strojnega učenja preverite, ali so identificirane težave ublažene ali obravnavane.
* **Ustrezni cilji** za vsako od šestih temeljnih načel. Ocenite, ali so cilji iz vsakega načela doseženi in ali obstajajo kakršne koli vrzeli.
## Odpravljanje napak z odgovorno umetno inteligenco
## Odpravljanje napak z odgovorno AI
Podobno kot odpravljanje napak v programski aplikaciji je odpravljanje napak v sistemu umetne inteligence nujen proces prepoznavanja in reševanja težav v sistemu. Obstaja veliko dejavnikov, ki lahko vplivajo na to, da model ne deluje, kot je pričakovano ali odgovorno. Večina tradicionalnih metrik zmogljivosti modela so kvantitativni agregati zmogljivosti modela, ki niso dovolj za analizo, kako model krši načela odgovorne umetne inteligence. Poleg tega je model strojnega učenja črna škatla, kar otežuje razumevanje, kaj vodi do njegovih rezultatov ali zagotavljanje pojasnil, ko naredi napako. Kasneje v tem tečaju se bomo naučili, kako uporabljati nadzorno ploščo odgovorne umetne inteligence za pomoč pri odpravljanju napak v sistemih umetne inteligence. Nadzorna plošča zagotavlja celovit pripomoček za podatkovne znanstvenike in razvijalce umetne inteligence za izvajanje:
Podobno kot odpravljanje napak v programski aplikaciji je odpravljanje napak v AI sistemu potreben proces prepoznavanja in reševanja težav v sistemu. Obstaja veliko dejavnikov, ki lahko vplivajo na to, da model ne deluje tako, kot se pričakuje ali odgovorno. Večina tradicionalnih meritev uspešnosti modela so kvantitativni seštevki uspešnosti modela, ki niso dovolj za analizo, kako model krši načela odgovorne AI. Poleg tega je model strojnega učenja črna skrinjica, zaradi česar je težko razumeti, kaj povzroča njegov izid ali dati pojasnilo, ko naredi napako. Kasneje v tem tečaju bomo spoznali, kako uporabiti nadzorno ploščo Responsible AI za pomoč pri odpravljanju napak AI sistemov. Nadzorna plošča zagotavlja celovito orodje za podatkovne znanstvenike in razvijalce AI za izvedbo:
* **Analiza napak**. Za prepoznavanje porazdelitve napak modela, ki lahko vplivajo na pravičnost ali zanesljivost sistema.
* **Pregled modela**. Za odkrivanje, kje obstajajo razlike v zmogljivosti modela med podatkovnimi skupinami.
* **Analiza podatkov**. Za razumevanje porazdelitve podatkov in prepoznavanje morebitne pristranskosti v podatkih, ki bi lahko povzročila težave s pravi
Oglejte si ta delavnico za poglobitev v teme:
* **Pregled modela**. Za odkrivanje, kje so razlike v uspešnosti modela med različnimi podatkovnimi skupinami.
* **Analiza podatkov**. Za razumevanje porazdelitve podatkov in prepoznavanje morebitnih pristranskosti, ki bi lahko povzročile težave z pravičnostjo, vključevanjem in zanesljivostjo.
* **Razložljivost modela**. Za razumevanje, kaj vpliva ali določa napovedi modela. To pomaga pri pojasnjevanju vedenja modela, kar je pomembno za preglednost in odgovornost.
## 🚀 Izziv
Da bi preprečili uvajanje škod v prvi vrsti, moramo:
- imeti raznolikost ozadij in pogledov med ljudmi, ki delajo na sistemih
- vlagati v podatkovne nize, ki odražajo raznolikost naše družbe
- razvijati boljše metode skozi celoten življenjski cikel strojnega učenja za odkrivanje in odpravljanje odgovorne AI, ko se pojavi
Premislite o resničnih situacijah, kjer je nezanesljivost modela očitna pri gradnji in uporabi modela. Kaj še bi morali upoštevati?
V tej lekciji ste se naučili nekaj osnovnih pojmov pravičnosti in nepravičnosti v strojni inteligenci.
Oglejte si ta delavnico za poglobljeno razumevanje tem:
- Na poti do odgovorne umetne inteligence: Prenos načel v prakso, avtorji Besmira Nushi, Mehrnoosh Sameki in Amit Sharma
- V prizadevanju za odgovorno AI: Prinašanje načel v prakso avtorjev Besmira Nushi, Mehrnoosh Sameki in Amit Sharma
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Odprtokodni okvir za gradnjo odgovorne umetne inteligence")
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Open-source okvir za izgradnjo odgovorne AI")
> 🎥 Kliknite zgornjo sliko za video: RAI Toolbox: Odprtokodni okvir za gradnjo odgovorne umetne inteligence, avtorji Besmira Nushi, Mehrnoosh Sameki in Amit Sharma
> 🎥 Kliknite zgornjo sliko za video: RAI Toolbox: Open-source okvir za izgradnjo odgovorne AI avtorjev Besmira Nushi, Mehrnoosh Sameki in Amit Sharma
Preberite tudi:
Prav tako preberite:
- Microsoftov center virov za RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoftov center virov RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoftova raziskovalna skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Microsoftova raziskovalna skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
RAI Toolbox:
RAI Toolbox:
- [GitHub repozitorij Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
- [Responsible AI Toolbox GitHub repozitorij](https://github.com/microsoft/responsible-ai-toolbox)
Preberite o orodjih Azure Machine Learning za zagotavljanje pravičnosti:
Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Omejitev odgovornosti**:
Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda.
> ### [To lekcijo lahko najdete tudi v jeziku R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
> ### [Ta lekcija je na voljo tudi v R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Uvod
V teh štirih lekcijah boste odkrili, kako zgraditi regresijske modele. Kmalu bomo razpravljali, za kaj so ti modeli uporabni. Preden pa začnete, poskrbite, da imate na voljo ustrezna orodja za začetek procesa!
V teh štirih lekcijah boste odkrili, kako zgraditi regresijske modele. Kmalu bomo govorili, čemu so ti modeli namenjeni. A preden karkoli naredite, se prepričajte, da imate postavljena prava orodja za začetek procesa!
V tej lekciji boste izvedeli, kako:
V tej lekciji se boste naučili:
- Pripraviti računalnik za lokalne naloge strojnega učenja.
- Delati z Jupyter zvezki.
- Uporabljati Scikit-learn, vključno z namestitvijo.
- Raziskati linearno regresijo s praktično vajo.
- Kako konfigurirati računalnik za lokalne naloge strojnega učenja.
- Kako delati z Jupyter zvezki (notebooks).
- Kako uporabiti Scikit-learn, vključno z namestitvijo.
- Raziščete linearno regresijo z vajo na praktičnem primeru.
## Namestitve in konfiguracije
[](https://youtu.be/-DfeD2k2Kj0 "ML za začetnike - Pripravite orodja za gradnjo modelov strojnega učenja")
[](https://youtu.be/-DfeD2k2Kj0 "ML za začetnike - Nastavite svoja orodja za gradnjo modelov strojnega učenja")
> 🎥 Kliknite zgornjo sliko za kratek video o konfiguraciji računalnika za strojno učenje.
> 🎥 Kliknite zgornjo sliko za kratek video o nastavitvi računalnika za ML.
1. **Namestite Python**. Prepričajte se, da je [Python](https://www.python.org/downloads/) nameščen na vašem računalniku. Python boste uporabljali za številne naloge podatkovne znanosti in strojnega učenja. Večina računalniških sistemov že vključuje namestitev Pythona. Na voljo so tudi uporabni [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), ki olajšajo nastavitev za nekatere uporabnike.
1. **Namestite Python**. Poskrbite, da imate [Python](https://www.python.org/downloads/) nameščen na računalniku. Python boste uporabljali za številne naloge na področju podatkovne znanosti in strojnega učenja. Večina računalniških sistemov že vsebuje namestitev Pythona. Na voljo so tudi koristni [Python Coding Paketi](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), ki nekaterim uporabnikom olajšajo nastavitev.
Nekatere uporabe Pythona pa zahtevajo eno različico programske opreme, druge pa drugo. Zato je koristno delati v [virtualnem okolju](https://docs.python.org/3/library/venv.html).
Nekatere uporabe Pythona zahtevajo eno različico programske opreme, druge pa drugo. Iz tega razloga je koristno delati znotraj [virtualnega okolja](https://docs.python.org/3/library/venv.html).
2. **Namestite Visual Studio Code**. Prepričajte se, da imate na računalniku nameščen Visual Studio Code. Sledite tem navodilom za [namestitev Visual Studio Code](https://code.visualstudio.com/) za osnovno namestitev. Python boste uporabljali v Visual Studio Code v tem tečaju, zato se morda želite seznaniti z [nastavitvijo Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) za razvoj v Pythonu.
2. **Namestite Visual Studio Code**. Prepričajte se, da imate Visual Studio Code nameščen na računalniku. Sledite tem navodilom za [namestitev Visual Studio Code](https://code.visualstudio.com/) za osnovno namestitev. Python boste v tem tečaju uporabljali v Visual Studio Code, zato je koristno, da osvežite znanje o tem, kako [konfigurirati Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) za razvoj v Pythonu.
> Seznanite se s Pythonom z delom skozi to zbirko [učnih modulov](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
> Postanite udobni z uporabo Pythona tako, da preletite to zbirko [učnih modulov](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Nastavitev Pythona z Visual Studio Code")
>
> 🎥 Kliknite zgornjo sliko za video: uporaba Pythona v VS Code.
> 🎥 Kliknite zgornjo sliko za video: uporaba Pythona znotraj VS Code.
3. **Namestite Scikit-learn**, tako da sledite [tem navodilom](https://scikit-learn.org/stable/install.html). Ker morate zagotoviti uporabo Pythona 3, je priporočljivo, da uporabite virtualno okolje. Če to knjižnico nameščate na računalnik Mac z M1, so na zgoraj navedeni strani posebna navodila.
3. **Namestite Scikit-learn**, tako da sledite [tem navodilom](https://scikit-learn.org/stable/install.html). Ker morate uporabljati Python 3, je priporočljivo uporabiti virtualno okolje. Če nameščate to knjižnico na M1 Mac, so na zgoraj povezani strani posebna navodila.
Uporabljali boste **zvezke** za razvoj kode v Pythonu in ustvarjanje modelov strojnega učenja. Ta vrsta datoteke je pogosto orodje za podatkovne znanstvenike, prepoznate pa jih po priponi `.ipynb`.
Za razvijanje vaše Python kode in ustvarjanje modelov strojnega učenja boste uporabljali **zvezke**. Ta tip datotek je pogosto orodje podatkovnih znanstvenikov in jih lahko prepoznate po priponi `.ipynb`.
Zvezki so interaktivno okolje, ki razvijalcu omogoča tako kodiranje kot dodajanje opomb in pisanje dokumentacije okoli kode, kar je zelo uporabno za eksperimentalne ali raziskovalno usmerjene projekte.
Zvezki so interaktivno okolje, ki razvijalcu omogoča tako pisanje kode kot dodajanje opomb in pisanje dokumentacije okoli kode, kar je zelo koristno za eksperimentalne ali raziskovalne projekte.
[](https://youtu.be/7E-jC8FLA2E "ML za začetnike - Nastavitev Jupyter zvezkov za začetek gradnje regresijskih modelov")
> 🎥 Kliknite zgornjo sliko za kratek video o tej vaji.
> 🎥 Kliknite zgornjo sliko za kratek video skozi to vajo.
### Vaja - delo z zvezkom
@ -57,51 +57,51 @@ V tej mapi boste našli datoteko _notebook.ipynb_.
1. Odprite _notebook.ipynb_ v Visual Studio Code.
Začel se bo Jupyter strežnik s Pythonom 3+. V zvezku boste našli območja, ki jih je mogoče `zagnati`, torej dele kode. Kodo lahko zaženete tako, da izberete ikono, ki izgleda kot gumb za predvajanje.
Začne se bosta zagnala strežnik Jupyter s Pythonom 3+. V zvezku boste našli dele, ki jih je možno `pognati`, kose kode. Kodo lahko pognate tako, da izberete ikono, ki izgleda kot gumb za predvajanje.
2. Izberite ikono `md` in dodajte nekaj markdowna ter naslednje besedilo **# Dobrodošli v vašem zvezku**.
1. Izberite ikono `md` in dodajte nekaj markdowna ter naslednje besedilo **# Dobrodošli v vašem zvezku**.
Nato dodajte nekaj kode v Pythonu.
Nato dodajte nekaj Python kode.
3. Vnesite **print('hello notebook')** v blok kode.
4. Izberite puščico za zagon kode.
1. Vtipkajte **print('hello notebook')** v razdelek s kodo.
1. Izberite puščico za zagon kode.
Videti bi morali natisnjeno izjavo:
Videli boste natisnjen izpis:
```output
hello notebook
```


Kodo lahko prepletate z opombami, da sami dokumentirate zvezek.
Kodo lahko prepletate s komentarji, da dokumentirate zvezek.
✅ Razmislite za trenutek, kako se delovno okolje spletnega razvijalca razlikuje od okolja podatkovnega znanstvenika.
✅ Razmislite za trenutek, kako drugačno je razvojno okolje spletnega razvijalca v primerjavi z okoljem podatkovnega znanstvenika.
## Začetek dela s Scikit-learn
## Zagon Scikit-learn
Zdaj, ko je Python nastavljen v vašem lokalnem okolju in ste seznanjeni z Jupyter zvezki, se enako seznanimo s Scikit-learn (izgovorjava`sci` kot v `science`). Scikit-learn ponuja [obsežen API](https://scikit-learn.org/stable/modules/classes.html#api-ref) za izvajanje nalog strojnega učenja.
Zdaj, ko je Python nastavljen v vašem lokalnem okolju in ste udobni z Jupyter zvezki, se seznanimo enako udobno s Scikit-learn (izgovarja se`sci` kot v `science`). Scikit-learn ponuja [obsežen API](https://scikit-learn.org/stable/modules/classes.html#api-ref), ki vam pomaga pri opravljanju nalog strojnega učenja.
Po navedbah njihove [spletne strani](https://scikit-learn.org/stable/getting_started.html) je "Scikit-learn odprtokodna knjižnica strojnega učenja, ki podpira nadzorovano in nenadzorovano učenje. Prav tako ponuja različna orodja za prileganje modelov, predobdelavo podatkov, izbiro modelov in ocenjevanje ter številne druge pripomočke."
Po njihovem [spletnem mestu](https://scikit-learn.org/stable/getting_started.html) "je Scikit-learn odprtokodna knjižnica strojnega učenja, ki podpira nadzorovano in nenadzorovano učenje. Prav tako nudi različna orodja za prilagajanje modelov, predobdelavo podatkov, izbor in vrednotenje modela ter številne druge pripomočke."
V tem tečaju boste uporabljali Scikit-learn in druga orodja za gradnjo modelov strojnega učenja za izvajanje nalog, ki jih imenujemo 'tradicionalno strojno učenje'. Namenoma smo se izognili nevronskim mrežam in globokemu učenju, saj so bolje obravnavani v našem prihajajočem učnem načrtu 'AI za začetnike'.
V tem tečaju boste uporabili Scikit-learn in druga orodja za gradnjo modelov strojnega učenja za izvedbo tistih nalog, ki jih imenujemo 'tradicionalno strojno učenje'. Zavestno smo se izognili nevronskim mrežam in globokemu učenju, saj so bolje pokriti v našem prihajajočem učnem načrtu 'AI za začetnike'.
Scikit-learn omogoča enostavno gradnjo modelov in njihovo ocenjevanje za uporabo. Osredotoča se predvsem na uporabo numeričnih podatkov in vsebuje več pripravljenih naborov podatkov za uporabo kot učna orodja. Prav tako vključuje vnaprej pripravljene modele, ki jih lahko študentje preizkusijo. Raziskujmo proces nalaganja vnaprej pripravljenih podatkov in uporabe vgrajenega ocenjevalnika za prvi ML model s Scikit-learn z osnovnimi podatki.
Scikit-learn olajša gradnjo modelov in njihovo vrednotenje glede na uporabo. Osredotoča se predvsem na numerične podatke in vsebuje več vgrajenih podatkovnih zbirk za učenje. Vključuje tudi vnaprej pripravljene modele za preizkušanje. Raziskajmo proces nalaganja že pripravljenih podatkov in uporabo vgrajenega ocenilca - prvega ML modela s Scikit-learn na osnovi osnovnih podatkov.
## Vaja - vaš prvi zvezek s Scikit-learn
## Vaja - vaš prvi Scikit-learn zvezek
> Ta vadnica je bila navdihnjena z [primerom linearne regresije](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na spletni strani Scikit-learn.
> Ta vodič je navdihnila [linearna regresija primer](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na Scikit-learn spletni strani.
[](https://youtu.be/2xkXL5EUpS0 "ML za začetnike - Vaš prvi projekt linearne regresije v Pythonu")
[](https://youtu.be/2xkXL5EUpS0 "ML za začetnike - vaš prvi linearni regresijski projekt v Pythonu")
> 🎥 Kliknite zgornjo sliko za kratek video o tej vaji.
> 🎥 Kliknite zgornjo sliko za kratek video skozi to vajo.
V datoteki _notebook.ipynb_, povezani s to lekcijo, izbrišite vse celice s pritiskom na ikono 'koš za smeti'.
V datoteki _notebook.ipynb_ povezanih s to lekcijo počistite vse celice z klikom ikone 'koš'.
V tem razdelku boste delali z majhnim naborom podatkov o sladkorni bolezni, ki je vgrajen v Scikit-learn za učne namene. Predstavljajte si, da želite preizkusiti zdravljenje za bolnike s sladkorno boleznijo. Modeli strojnega učenja vam lahko pomagajo določiti, kateri bolniki bi se bolje odzvali na zdravljenje, na podlagi kombinacij spremenljivk. Tudi zelo osnovni regresijski model, ko je vizualiziran, lahko pokaže informacije o spremenljivkah, ki bi vam pomagale organizirati teoretične klinične preizkuse.
V tem razdelku boste delali z majhnim podatkovnim nizom o diabetiku, ki je vključen v Scikit-learn za učne namene. Predstavljajte si, da želite preizkusiti zdravljenje za bolnike z diabetesom. Modeli strojnega učenja bi vam lahko pomagali določiti, kateri bolniki bi bolje reagirali na zdravljenje, glede na kombinacije spremenljivk. Tudi zelo osnovni regresijski model, ko je vizualiziran, vam lahko pokaže informacije o spremenljivkah, ki bi pomagale organizirati vaše teoretične klinične preizkuse.
✅ Obstaja veliko vrst regresijskih metod, izbira pa je odvisna od vprašanja, na katerega želite odgovoriti. Če želite napovedati verjetno višino osebe določene starosti, bi uporabili linearno regresijo, saj iščete **numerično vrednost**. Če vas zanima, ali naj se določena vrsta kuhinje šteje za vegansko ali ne, iščete **kategorijsko dodelitev**, zato bi uporabili logistično regresijo. Kasneje boste izvedeli več o logistični regresiji. Razmislite o nekaterih vprašanjih, ki jih lahko postavite podatkom, in kateri od teh metod bi bila bolj primerna.
✅ Obstaja veliko vrst regresijskih metod, izbira prave pa je odvisna od vprašanja, na katero iščete odgovor. Če želite napovedati verjetno višino osebe določene starosti, uporabite linearno regresijo, saj iščete **numerično vrednost**. Če vas zanima, ali naj se ena vrsta kuhinje šteje kot veganska ali ne, iščete **kategorijsko dodelitev**, zato bi uporabili logistično regresijo. O logistični regresiji se boste naučili več kasneje. Premislite o nekaterih vprašanjih, ki si jih lahko zastavite o podatkih, in katere od teh metod bi bile ustreznejše.
Začnimo s to nalogo.
@ -109,13 +109,13 @@ Začnimo s to nalogo.
Za to nalogo bomo uvozili nekaj knjižnic:
- **matplotlib**. To je uporabno [orodje za risanje grafov](https://matplotlib.org/), ki ga bomo uporabili za ustvarjanje linijskega grafa.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je uporabna knjižnica za obdelavo numeričnih podatkov v Pythonu.
- **sklearn**. To je [knjižnica Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
- **matplotlib**. Uporabna [orodje za risanje grafov](https://matplotlib.org/), ki ga bomo uporabili za izdelavo črtnega grafa.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je koristna knjižnica za upravljanje numeričnih podatkov v Pythonu.
- **sklearn**. To je knjižnica [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
Uvozite nekaj knjižnic za pomoč pri nalogah.
Uvozite nekaj knjižnic, ki vam bodo pomagale pri nalogah.
1. Dodajte uvoze z vnosom naslednje kode:
1. Dodajte uvoze tako, da vnesete naslednjo kodo:
```python
import matplotlib.pyplot as plt
@ -123,26 +123,26 @@ Uvozite nekaj knjižnic za pomoč pri nalogah.
from sklearn import datasets, linear_model, model_selection
```
Zgornja koda uvaža `matplotlib`, `numpy` in`datasets`, `linear_model` ter `model_selection` iz `sklearn`. `model_selection` se uporablja za razdelitev podatkov na učne in testne sklope.
Zgoraj uvažate `matplotlib`, `numpy` in uvažate`datasets`, `linear_model` ter `model_selection` iz `sklearn`. `model_selection` se uporablja za razdelitev podatkov na učne in testne sklope.
### Nabor podatkov o sladkorni bolezni
### Diabetični podatkovni niz
Vgrajeni [nabor podatkov o sladkorni bolezni](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) vključuje 442 vzorcev podatkov o sladkorni bolezni z 10 značilnimi spremenljivkami, med katerimi so nekatere:
Vgrajeni [diabetični podatkovni niz](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) vključuje 442 vzorcev podatkov o diabetesu, z 10 značilnimi spremenljivkami, nekaj naslova:
- starost: starost v letih
- bmi: indeks telesne mase
- bp: povprečni krvni tlak
- s1 tc: T-celice (vrsta belih krvnih celic)
- s1 tc: Tcelice (vrsta belih krvnih celic)
✅ Ta nabor podatkov vključuje koncept 'spola' kot značilne spremenljivke, pomembne za raziskave o sladkorni bolezni. Številni medicinski nabori podatkov vključujejo tovrstno binarno klasifikacijo. Razmislite, kako bi lahko takšne kategorizacije izključile določene dele populacije iz zdravljenja.
✅ Ta podatkovni niz vključuje koncept 'spola' kot značilno spremenljivko, pomembno za raziskave o diabetesu. Veliko medicinskih podatkovnih nizov vključuje tovrstno binarno klasifikacijo. Premislite, kako bi takšne kategorizacije lahko izključile določene dele prebivalstva iz zdravljenj.
Zdaj naložite podatke X in y.
Zdaj naložite podatka X in y.
> 🎓 Ne pozabite, da gre za nadzorovano učenje, zato potrebujemo imenovan cilj 'y'.
> 🎓 Zapomnite si, da gre za nadzorovano učenje in potrebujemo imenovani cilj 'y'.
V novi celici kode naložite nabor podatkov o sladkorni bolezni z uporabo`load_diabetes()`. Vhod `return_X_y=True` signalizira, da bo `X`matrika podatkov, `y` pa regresijski cilj.
V novi celici s kodo naložite diabetični podatkovni niz s klicem`load_diabetes()`. Vhod `return_X_y=True` signalizira, da bo `X` podatkovna matrika, `y` pa regresijski cilj.
1. Dodajte nekaj ukazov za izpis, da prikažete obliko matrike podatkov in njen prvi element:
1. Dodajte nekaj ukazov za izpis oblike podatkovne matrike in njenega prvega elementa:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@ -150,9 +150,9 @@ V novi celici kode naložite nabor podatkov o sladkorni bolezni z uporabo `load_
print(X[0])
```
Kar dobite kot odgovor, je nabor. Prva dva vrednosti nabora dodelite `X` in `y`. Več o [naborih](https://wikipedia.org/wiki/Tuple) lahko izveste tukaj.
Kar prejemate kot odgovor, je nabor dveh vrednosti (tuple). To, kar počnete, je, da dodelite prvi dve vrednosti iz nabora `X` in `y` vrstnem redu. Več o [tuple](https://wikipedia.org/wiki/Tuple) lahko preberete.
Vidite lahko, da ti podatki vsebujejo 442 elementov, oblikovanih v poljih z 10 elementi:
Vidite lahko, da podatki vsebujejo 442 elemente, oblikovane v tabele z 10 elementi:
```text
(442, 10)
@ -160,39 +160,39 @@ V novi celici kode naložite nabor podatkov o sladkorni bolezni z uporabo `load_
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
✅ Razmislite o razmerju med podatki in regresijskim ciljem. Linearna regresija napoveduje razmerja med značilnostjo X in ciljno spremenljivko y. Ali lahko v dokumentaciji najdete [cilj](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) za nabor podatkov o sladkorni bolezni? Kaj ta nabor podatkov prikazuje, glede na cilj?
✅ Razmislite o povezavi med podatki in regresijskim ciljem. Linearna regresija napoveduje razmerja med značilko X in ciljno spremenljivko y. Ali lahko poiščete [cilj](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) za diabetični podatkovni niz v dokumentaciji? Kaj ta podatkovni niz prikazuje glede na cilj?
2. Nato izberite del tega nabora podatkov za risanje tako, da izberete 3. stolpec nabora podatkov. To lahko storite z uporabo operatorja `:` za izbiro vseh vrstic, nato pa izberete 3. stolpec z uporabo indeksa (2). Podatke lahko preoblikujete v 2D matriko - kot je potrebno za risanje - z uporabo `reshape(n_rows, n_columns)`. Če je eden od parametrov -1, se ustrezna dimenzija izračuna samodejno.
2. Nato izberite del tega podatkovnega niza za prikaz tako, da izberete 3. stolpec podatkovnega niza. To lahko naredite z uporabo operatorja `:`, ki izbere vse vrstice, in nato izberete 3. stolpec z indeksom (2). Podatke lahko tudi preoblikujete v 2D tabelo - kot zahtevano za prikaz - z uporabo `reshape(n_rows, n_columns)`. Če je kateri parameter -1, se ta dimenzija samodejno izračuna.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
✅ Kadarkoli natisnite podatke, da preverite njihovo obliko.
✅ Kadarkoli izpišite podatke, da preverite obliko.
3. Zdaj, ko imate podatke pripravljene za risanje, lahko preverite, ali lahko stroj pomaga določiti logično ločnico med številkami v tem naboru podatkov. Za to morate razdeliti tako podatke (X) kot cilj (y) na testne in učne sklope. Scikit-learn ima preprost način za to; testne podatke lahko razdelite na določenem mestu.
3. Ko imate podatke pripravljene za prikaz, preverite, če vam lahko stroj pomaga določiti logično razdelitev števil v tem podatkovnem nizu. Za to morate razdeliti podatke (X) in cilj (y) na učne in testne sklade. Scikit-learn omogoča enostavno razdelitev testnih podatkov na določenem mestu.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
4. Zdaj ste pripravljeni na učenje modela! Naložite model linearne regresije in ga naučite z učnimi sklopi X in y z uporabo `model.fit()`:
4. Zdaj ste pripravljeni na učenje modela! Naložite linearni regresijski model in ga trenirajte z učnimi sklopi X in y z uporabo `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
✅ `model.fit()` je funkcija, ki jo boste videli v številnih knjižnicah ML, kot je TensorFlow.
✅ Funkcijo `model.fit()` boste pogosto videli v knjižnicah za ML, kot je TensorFlow.
5. Nato ustvarite napoved z uporabo testnih podatkov z uporabo funkcije `predict()`. To bo uporabljeno za risanje črte med skupinami podatkov.
5. Nato ustvarite napoved z uporabo testnih podatkov, z uporabo funkcije `predict()`. To bo uporabljeno za risanje črte med podatkovnimi skupinami.
```python
y_pred = model.predict(X_test)
```
6. Zdaj je čas, da prikažete podatke na grafu. Matplotlib je zelo uporabno orodje za to nalogo. Ustvarite razpršeni grafikon vseh testnih podatkov X in y ter uporabite napoved za risanje črte na najbolj primernem mestu med skupinami podatkov modela.
6. Zdaj je čas, da prikažete podatke na grafikonu. Matplotlib je zelo uporabno orodje za to nalogo. Naredite razpršeni graf (scatterplot) vseh testnih podatkov X in y ter uporabite napoved, da narišete črto na najbolj primernem mestu, med skupinami podatkov modela.
```python
plt.scatter(X_test, y_test, color='black')
@ -203,22 +203,24 @@ V novi celici kode naložite nabor podatkov o sladkorni bolezni z uporabo `load_
plt.show()
```

✅ Razmislite malo o tem, kaj se tukaj dogaja. Ravna črta poteka skozi številne majhne točke podatkov, vendar kaj pravzaprav počne? Ali vidite, kako bi morali biti sposobni uporabiti to črto za napovedovanje, kje bi se nova, nevidna podatkovna točka morala uvrstiti glede na y-os grafa? Poskusite z besedami opisati praktično uporabo tega modela.

Čestitke, izdelali ste svoj prvi model linearne regresije, ustvarili napoved z njim in jo prikazali na grafu!
✅ Razmislite malo o tem, kaj se tukaj dogaja. Ravna črta poteka skozi veliko majhnih točk podatkov, a kaj točno počne? Vidite, kako bi morali uporabiti to črto, da napoveste, kje naj bi se nova, nevidena podatkovna točka ujemala glede na y os grafa? Poskusite z besedami opisati praktično uporabo tega modela.
Čestitke, zgradili ste svoj prvi linearni regresijski model, z njim ustvarili napoved in jo prikazali na grafu!
---
## 🚀Izziv
Prikažite drugo spremenljivko iz tega nabora podatkov. Namig: uredite to vrstico: `X = X[:,2]`. Glede na cilj tega nabora podatkov, kaj lahko odkrijete o napredovanju sladkorne bolezni kot bolezni?
Narišite drugo spremenljivko iz tega nabora podatkov. Namig: uredite to vrstico: `X = X[:,2]`. Glede na cilj tega nabora podatkov, kaj lahko odkrijete o napredovanju diabetesa kot bolezni?
## [Kvizi po predavanju](https://ff-quizzes.netlify.app/en/ml/)
## Pregled & Samostojno učenje
## Pregled in samostojno učenje
V tem vodiču ste delali z enostavno linearno regresijo, ne pa z univariatno ali večkratno linearno regresijo. Preberite nekaj o razlikah med temi metodami ali si oglejte [ta video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
V tej vadnici ste delali s preprosto linearno regresijo, ne z enospremenljivostno ali večspremenljivostno linearno regresijo. Preberite nekaj o razlikah med temi metodami ali si oglejte [ta video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
Preberite več o konceptu regresije in razmislite, kakšna vprašanja je mogoče odgovoriti s to tehniko. Vzemite [ta vodič](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), da poglobite svoje razumevanje.
Preberite več o pojmu regresije in razmislite, kakšna vprašanja lahko ta tehnika odgovori. Oglejte si ta [vodnik](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), da poglobite svoje razumevanje.
## Naloga
@ -226,5 +228,7 @@ Preberite več o konceptu regresije in razmislite, kakšna vprašanja je mogoče
---
**Omejitev odgovornosti**:
Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da se zavedate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Omejitev odgovornosti**:
Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda.
> ### [To lekcijo lahko najdete tudi v jeziku R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
> ### [To lekcijo je na voljo tudi v R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Uvod
Zdaj, ko imate na voljo orodja za gradnjo modelov strojnega učenja s Scikit-learn, ste pripravljeni začeti postavljati vprašanja svojim podatkom. Pri delu s podatki in uporabi rešitev strojnega učenja je zelo pomembno, da znate postaviti prava vprašanja, da lahko pravilno izkoristite potenciale svojega nabora podatkov.
Zdaj, ko imate pripravljena orodja za začetek gradnje modelov strojnega učenja s Scikit-learn, ste pripravljeni začeti postavljati vprašanja svojim podatkom. Ko delate s podatki in uporabljate rešitve strojnega učenja, je zelo pomembno razumeti, kako zastaviti pravilno vprašanje, da boste lahko pravilno odkrili potenciale vašega nabora podatkov.
V tej lekciji boste spoznali:
V tej lekciji se boste naučili:
- Kako pripraviti podatke za gradnjo modela.
- Kako uporabiti Matplotlib za vizualizacijo podatkov.
- Kako uporabiti Seaborn za izraženejšo vizualizacijo podatkov.
## Postavljanje pravih vprašanj svojim podatkom
## Postavljanje pravih vprašanj podatkom
Vprašanje, na katerega želite odgovor, bo določilo, katere vrste algoritmov strojnega učenja boste uporabili. Kakovost odgovora pa bo močno odvisna od narave vaših podatkov.
Vprašanje, na katerega potrebujete odgovor, bo določilo, katere vrste ML algoritmov boste uporabili. Kakovost odgovora, ki ga prejmete, bo močno odvisna od narave vaših podatkov.
Oglejte si [podatke](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), ki so na voljo za to lekcijo. Datoteko .csv lahko odprete v programu VS Code. Hiter pregled takoj pokaže, da so prisotne prazne vrednosti ter mešanica nizov in številskih podatkov. Obstaja tudi nenavaden stolpec z imenom 'Package', kjer so podatki mešanica 'sacks', 'bins' in drugih vrednosti. Podatki so pravzaprav precej neurejeni.
Oglejte si [podatke](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) za to lekcijo. To .csv datoteko lahko odprete v VS Code. Hitro pregledovanje takoj pokaže, da so v podatkih prazna mesta in mešanica nizov in številčnih podatkov. Tudi stolpec z imenom 'Package' je nenavaden, saj so podatki mešanica med 'sacks', 'bins' in drugimi vrednostmi. Podatki so pravzaprav rahlo zmedeni.
[](https://youtu.be/5qGjczWTrDQ "ML za začetnike - Kako analizirati in očistiti nabor podatkov")
[](https://youtu.be/5qGjczWTrDQ "ML za začetnike - Kako analizirati in očistiti dataset")
> 🎥 Kliknite zgornjo sliko za kratek video o pripravi podatkov za to lekcijo.
> 🎥 Kliknite zgornjo sliko za kratek video, ki prikazuje pripravo podatkov za to lekcijo.
Pravzaprav ni pogosto, da dobite nabor podatkov, ki je popolnoma pripravljen za ustvarjanje modela strojnega učenja. V tej lekciji se boste naučili, kako pripraviti surove podatke z uporabo standardnih knjižnic za Python. Spoznali boste tudi različne tehnike za vizualizacijo podatkov.
Pravzaprav ni pogosto, da dobite neposredno uporabljiv dataset za takojšnjo ustvarjanje ML modela. V tej lekciji se boste naučili, kako pripraviti surove podatke z uporabo standardnih knjižnic v Pythonu. Prav tako se boste naučili različnih tehnik za vizualizacijo podatkov.
## Študija primera: 'trg buč'
V tej mapi boste našli datoteko .csv v korenski mapi `data`, imenovano [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), ki vključuje 1757 vrstic podatkov o trgu buč, razvrščenih po mestih. To so surovi podatki, pridobljeni iz [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), ki jih distribuira Ministrstvo za kmetijstvo ZDA.
V tej mapi boste našli .csv datoteko v korenski mapi `data` z imenom [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), ki vključuje 1757 vrstic podatkov o trgu buč, razvrščenih po skupinah po mestih. To so surovi podatki, pridobljeni iz [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), ki jih distribuira Ministrstvo za kmetijstvo Združenih držav Amerike.
### Priprava podatkov
Ti podatki so v javni domeni. Na spletni strani USDA jih je mogoče prenesti v številnih ločenih datotekah, po mestih. Da bi se izognili prevelikemu številu ločenih datotek, smo združili vse podatke mest v eno preglednico, kar pomeni, da smo podatke že nekoliko _pripravili_. Zdaj si podrobneje oglejmo podatke.
Ti podatki so v javni domeni. Na spletni strani USDA jih je mogoče prenesti v več ločenih datotekah, po mestih. Da bi se izognili preveliki količini datotek, smo vse podatke združili v eno preglednico, tako da smo podatke že malce _pripravili_. Naslednje poglejmo podatke podrobneje.
### Podatki o bučah - prvi vtisi
### Podatki o bučah - zgodnji zaključki
Kaj opazite pri teh podatkih? Že prej ste videli, da gre za mešanico nizov, števil, praznih vrednosti in nenavadnih vrednosti, ki jih morate razumeti.
Katero vprašanje lahko postavite tem podatkom z uporabo regresijske tehnike? Kaj pa "Napovedovanje cene buče za prodajo v določenem mesecu"? Če ponovno pogledate podatke, boste opazili, da morate narediti nekaj sprememb, da ustvarite strukturo podatkov, potrebno za to nalogo.
Kaj opažate pri teh podatkih? Že ste videli, da je tam mešanica nizov, številk, praznin in nenavadnih vrednosti, ki jih morate razumeti.
Kakšno vprašanje lahko zastavite tem podatkom s pomočjo regresijske tehnike? Kaj pa "Napovej ceno buče za prodajo v določenem mesecu"? Obnovitev podatkov kaže, da boste morali narediti nekaj sprememb, da ustvarite potrebno podatkovno strukturo za to nalogo.
## Vaja - analiza podatkov o bučah
Uporabimo [Pandas](https://pandas.pydata.org/) (ime pomeni `Python Data Analysis`), zelo uporabno orodje za oblikovanje podatkov, za analizo in pripravo teh podatkov o bučah.
Uporabimo [Pandas](https://pandas.pydata.org/) (kratica za `Python Data Analysis`), orodje, ki je zelo uporabno za oblikovanje podatkov, za analizo in pripravo teh podatkov o bučah.
### Najprej preverite manjkajoče datume
Najprej boste morali preveriti, ali manjkajo datumi:
Najprej boste morali izvesti korake za preverjanje manjkajočih datumov:
1. Pretvorite datume v mesečni format (to so datumi iz ZDA, zato je format`MM/DD/YYYY`).
2. Izluščite mesec v nov stolpec.
1. Pretvorite datume v format meseca (to so ameriški datumi, format je`MM/DD/YYYY`).
2. Izvlecite mesec v nov stolpec.
Odprite datoteko _notebook.ipynb_ v Visual Studio Code in uvozite preglednico v nov Pandas dataframe.
Odprite _notebook.ipynb_ datoteko v Visual Studio Code in uvozite preglednico v nov Pandas dataframe.
1. Uporabite funkcijo `head()`, da si ogledate prvih pet vrstic.
@ -64,28 +64,28 @@ Odprite datoteko _notebook.ipynb_ v Visual Studio Code in uvozite preglednico v
pumpkins.head()
```
✅ Katero funkcijo bi uporabili za ogled zadnjih petih vrstic?
✅ Katero funkcijo bi uporabili za ogled zadnjih pet vrstic?
1. Preverite, ali v trenutnem dataframeu manjkajo podatki:
1. Preverite, če so v trenutnem dataframe-u manjkajoči podatki:
```python
pumpkins.isnull().sum()
```
Manjkajo podatki, vendar morda to ne bo pomembno za nalogo.
Podatki manjkajo, vendar morda to za trenutni namen ni pomembno.
1. Da bo vaš dataframe lažji za delo, izberite samo stolpce, ki jih potrebujete, z uporabo funkcije `loc`, ki iz izvirnega dataframea izlušči skupino vrstic (podanih kot prvi parameter) in stolpcev (podanih kot drugi parameter). Izraz `:` v spodnjem primeru pomeni "vse vrstice".
1. Da bi bilo delo s dataframe-om lažje, izberite samo stolpce, ki jih potrebujete, z uporabo funkcije `loc`, ki iz izvirnega dataframe-a izvleče skupino vrstic (kot prvi parameter) in stolpcev (kot drugi parameter). Izraz `:` v spodnjem primeru pomeni "vse vrstice".
Razmislite, kako določiti povprečno ceno buče v določenem mesecu. Katere stolpce bi izbrali za to nalogo? Namig: potrebovali boste 3 stolpce.
Razmislite, kako določiti povprečno ceno buče v določenem mesecu. Katere stolpce bi izbrali za to nalogo? Namig: potrebujete 3 stolpce.
Rešitev: vzemite povprečje stolpcev `Low Price` in `High Price`, da napolnite nov stolpec Price, in pretvorite stolpec Date, da prikaže samo mesec. Na srečo, glede na zgornjo preverbo, ni manjkajočih podatkov za datume ali cene.
Rešitev: vzamete povprečje stolpcev `Low Price` in `High Price` za izpolnitev novega stolpca Price in pretvorite stolpec Date tako, da prikazuje samo mesec. Na srečo, kot kaže zgornja kontrola, manjkajočih podatkov za datume ali cene ni.
1. Za izračun povprečja dodajte naslednjo kodo:
@ -96,37 +96,37 @@ Rešitev: vzemite povprečje stolpcev `Low Price` in `High Price`, da napolnite
```
✅ Po želji natisnite katerikoli podatek, ki ga želite preveriti, z uporabo`print(month)`.
✅ Po želji lahko katerikoli podatek preverite z`print(month)`.
2. Zdaj kopirajte pretvorjene podatke v nov Pandas dataframe:
2. Nato kopirajte pretvorjene podatke v svež Pandas dataframe:
Če natisnete svoj dataframe, boste videli čist, urejen nabor podatkov, na katerem lahko gradite svoj novi regresijski model.
Izpis vašega dataframe-a bo prikazal čist in urejen podatkovni niz, na katerega lahko zgradite novi regresijski model.
### Ampak počakajte! Nekaj je čudnega
### A počakajte! Nekaj je sumljivo tukaj
Če pogledate stolpec `Package`, so buče prodane v različnih konfiguracijah. Nekatere so prodane v '1 1/9 bushel' enotah, nekatere v '1/2 bushel' enotah, nekatere na bučo, nekatere na funt, in nekatere v velikih škatlah različnih širin.
Če pogledate stolpec `Package`, se buče prodajajo v različnih konfiguracijah. Nekatere se prodajajo v količinah '1 1/9 bushel', nekatere v '1/2 bushel', nekatere na bučo, nekatere na funt, in nekatere v velikih škatlah različnih širino.
> Zdi se, da je buče zelo težko dosledno tehtati
> Buče se zdijo zelo težke za dosledno tehtanje
Če se poglobite v izvirne podatke, je zanimivo, da imajo vse enote z `Unit of Sale` enako 'EACH' ali 'PER BIN' tudi vrsto `Package` na palec, na bin ali 'each'. Zdi se, da je buče zelo težko dosledno tehtati, zato jih filtrirajmo tako, da izberemo samo buče z nizom 'bushel' v njihovem stolpcu `Package`.
Če se poglobite v izvirne podatke, je zanimivo, da imajo vse vrednosti z `Unit of Sale`, enako 'EACH' ali 'PER BIN', tudi tip `Package` po palcu, po zabojniku ali 'each'. Buče se zdi, da so zelo težke za dosledno tehtanje, zato jih filtrirajmo tako, da izberemo samo buče z nizom 'bushel' v stolpcu `Package`.
1. Dodajte filter na vrhu datoteke, pod začetnim uvozom .csv:
1. Dodajte filter na vrh datoteke, pod začetnim uvozom .csv:
Če zdaj natisnete podatke, lahko vidite, da dobite le približno 415 vrstic podatkov, ki vsebujejo buče po buslju.
Če zdaj izpišete podatke, boste videli, da dobite samo približno 415 vrstic podatkov, ki vsebujejo buče po bushel-ih.
### Ampak počakajte! Še nekaj je treba narediti
### A počakajte! Še nekaj je treba narediti
Ste opazili, da se količina buslja razlikuje po vrsticah? Potrebno je normalizirati cene, da prikažete cene na buselj, zato naredite nekaj izračunov za standardizacijo.
Ste opazili, da se količina bushel razlikuje po vrsticah? Potrebno je normalizirati cene, da bodo prikazane cene na bushel, zato naredite račun, da standardizirate vrednosti.
1. Dodajte te vrstice po bloku, ki ustvarja dataframe new_pumpkins:
1. Dodajte te vrstice za blokom, ki ustvarja dataframe new_pumpkins:
✅ Po podatkih [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) teža buslja variira glede na vrsto pridelka, saj gre za meritev prostornine. "Buselj paradižnikov, na primer, naj bi tehtal 56 funtov... Listi in zelenjava zavzamejo več prostora z manjšo težo, zato buselj špinače tehta le 20 funtov." Vse skupaj je precej zapleteno! Ne ukvarjajmo se s pretvorbo buslja v funte, ampak raje določimo ceno na buselj. Vse to proučevanje busljev buč pa kaže, kako zelo pomembno je razumeti naravo svojih podatkov!
✅ Po podatkih [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) je teža bushela odvisna od vrste pridelka, saj je to meritev volumna. "Bushel paradižnika, na primer, naj bi tehtal 56 funtov... Listi in zelenjava zavzamejo več prostora z manjšo težo, zato bushel špinače tehta le 20 funtov." Vse je precej zapleteno! Ne trudimo se s pretvorbo bushel-v-funte, temveč cenimo po bushel-u. Vse to študijsko delo o bushel-ih buč pa kaže, kako pomembno je razumeti naravo podatkov!
Zdaj lahko analizirate cene na enoto glede na njihovo meritev buslja. Če še enkrat natisnete podatke, lahko vidite, kako so standardizirani.
Zdaj lahko analizirate cene na enoto glede na njihovo mero bushel. Če podatke še enkrat izpišete, boste videli, kako so standardizirani.
✅ Ste opazili, da so buče, prodane po pol buslja, zelo drage? Ali lahko ugotovite, zakaj? Namig: majhne buče so veliko dražje od velikih, verjetno zato, ker jih je veliko več na buselj, glede na neizkoriščen prostor, ki ga zavzame ena velika votla buča za pito.
✅ Ste opazili, da so buče, ki se prodajajo na pol bushela, zelo drage? Ali lahko ugotovite, zakaj? Namig: majhne buče so veliko dražje kot velike, verjetno zato, ker jih je na bushel veliko več, glede na neuporabljeni prostor, ki ga zavzema ena velika votla buča za pito.
## Strategije vizualizacije
Del naloge podatkovnega znanstvenika je prikazati kakovost in naravo podatkov, s katerimi dela. To pogosto dosežejo z ustvarjanjem zanimivih vizualizacij, kot so grafi, diagrami in tabele, ki prikazujejo različne vidike podatkov. Na ta način lahko vizualno prikažejo odnose in vrzeli, ki jih je sicer težko odkriti.
Del naloge podatkovnega znanstvenika je prikazati kakovost in naravo podatkov, s katerimi dela. Pogosto ustvarjajo zanimive vizualizacije, grafične prikaze, grafikone in diagrame, ki prikazujejo različne vidike podatkov. S tem vizualno pokažejo odnose in praznine, ki bi jih sicer težko odkrili.
[](https://youtu.be/SbUkxH6IJo0 "ML za začetnike - Kako vizualizirati podatke z Matplotlib")
> 🎥 Kliknite zgornjo sliko za kratek video o vizualizaciji podatkov za to lekcijo.
> 🎥 Kliknite zgornjo sliko za kratek video, ki obravnava vizualizacijo podatkov za to lekcijo.
Vizualizacije lahko pomagajo tudi pri določanju tehnike strojnega učenja, ki je najbolj primerna za podatke. Na primer, raztrosni diagram, ki sledi liniji, kaže, da so podatki primerni za nalogo linearne regresije.
Vizualizacije lahko prav tako pomagajo določiti tehniko strojnega učenja, ki je za podatke najbolj primerna. Na primer, razpršeni diagram, ki nakazuje vrstico, pomeni, da so podatki dober kandidat za linearno regresijsko vajo.
Ena od knjižnic za vizualizacijo podatkov, ki dobro deluje v Jupyterjevih beležnicah, je [Matplotlib](https://matplotlib.org/) (ki ste jo videli tudi v prejšnji lekciji).
Ena izmed knjižnic za vizualizacijo podatkov, ki dobro deluje v Jupyter beležnicah, je [Matplotlib](https://matplotlib.org/) (ki ste jo videli tudi v prejšnji lekciji).
> Pridobite več izkušenj z vizualizacijo podatkov v [teh vadnicah](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
> Pridobite več izkušenj z vizualizacijo podatkov s temi [tutoriali](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Vaja - eksperimentiranje z Matplotlib
## Vaja - eksperimentirajte z Matplotlib
Poskusite ustvariti osnovne grafe za prikaz novega dataframea, ki ste ga pravkar ustvarili. Kaj bi pokazal osnovni linijski graf?
Poskusite ustvariti nekaj osnovnih grafikonov za prikaz novega dataframe-a, ki ste ga pravkar ustvarili. Kaj bi prikazal osnovni graf linije?
1. Uvozite Matplotlib na vrhu datoteke, pod uvozom Pandas:
1. Uvozite Matplotlib na vrh datoteke, pod uvozom Pandas:
```python
import matplotlib.pyplot as plt
```
1. Ponovno zaženite celotno beležnico za osvežitev.
1. Na dnu beležnice dodajte celico za prikaz podatkov kot škatlasti graf:
1. Ponovno zaženite celoten notebook, da osvežite.
1. Na dnu beležnice dodajte celico za risanje podatkov kot box plot:
```python
price = new_pumpkins.Price
@ -174,44 +174,121 @@ Poskusite ustvariti osnovne grafe za prikaz novega dataframea, ki ste ga pravkar
plt.show()
```


Ali je ta graf uporaben? Vas kaj na njem preseneča?
Je ta graf uporaben? Ali vas kaj preseneča?
Ni posebej uporaben, saj le prikazuje razpršenost točk v določenem mesecu.
Ni posebej uporaben, saj vašo podatkovno množico prikaže samo kot razpršena točke v določenem mesecu.
### Naredimo ga uporabnega
### Naredite ga uporabnega
Da bi grafi prikazovali uporabne podatke, jih običajno morate nekako združiti. Poskusimo ustvariti graf, kjer y-os prikazuje mesece, podatki pa prikazujejo porazdelitev podatkov.
Za prikaz uporabnih podatkov v grafih običajno potrebujete, da podatke nekako skupinsko združite. Poskusimo ustvariti graf, kjer y os prikazuje mesece, podatki pa pokažejo porazdelitev podatkov.
1. Dodajte celico za ustvarjanje združenega stolpčnega diagrama:
1. Dodajte celico za ustvarjanje skupinskega stolpčnega grafikona:


To je bolj uporabna vizualizacija podatkov! Zdi se, da nakazuje, da so najvišje cene buč septembra in oktobra. Ali to ustreza vašim pričakovanjem? Zakaj ali zakaj ne?
## Vaja - eksperimentiranje s Seaborn
Matplotlib je močan, vendar za izdelavo premišljenega grafikona pogosto zahteva veliko kode. [Seaborn](https://seaborn.pydata.org/) je knjižnica, ki je zgrajena _na vrhu_ Matplotlib in je namenjena statistični vizualizaciji podatkov. Deluje neposredno s Pandas dataframe-i, uporablja privlačne privzete sloge in omogoča ustvarjanje informativnih grafikonov z veliko manj kode. Ker Seaborn vrača Matplotlib objekte, lahko še vedno uporabite vse, kar že poznate o Matplotlib, za fino nastavljanje rezultata.
> Če Seaborn še nimate nameščenega, ga namestite z `pip install seaborn`.
1. Uvozite Seaborn na vrh beležnice, pod ostalimi uvozi. Običajno ga uvozimo kot `sns`:
```python
import seaborn as sns
```
### Razpršeni grafikoni za prikaz odnosov
Velik del raziskovanja podatkov pred gradnjo modela je iskanje _odnosov_ med spremenljivkami. [Razpršeni grafikon](https://en.wikipedia.org/wiki/Scatter_plot) je eno izmed najboljših orodij za to: če točke sledijo neki liniji, bi lahko bili ti dve spremenljivki korelirani, kar je dober znak, da linearni regresijski model lahko deluje.
1. Ponovno ustvarite razpršeni grafikon cena-mesec, kot prej, tokrat z uporabom Seabornove funkcije [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relacijski grafikon), ki deluje neposredno z vašimi dataframe stolpci:

Ti podatki so precej šumni, zato linijski grafikon morda ni najbolj jasna izbira tukaj — vendar kaže, kako enostavno lahko v Seabornu spremenite tipe grafikona.
### Stolpčni grafikoni za prikaz porazdelitev
Prej ste ročno združili podatke, da ste ustvarili stolpični diagram z Matplotlib. Seabornova funkcija [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorijski diagram) lahko za vas opravi združevanje in agregacijo. Privzeto `kind="bar"` prikaže povprečje vsake kategorije skupaj s črno črto, ki označuje interval zaupanja.
1. Ustvarite stolpični diagram povprečne cene na mesec:

To potrjuje, kar ste videli z Matplotlib — cene se vrhunsko dvignejo okoli septembra in oktobra — vendar Seaborn prav tako vizualizira, koliko se cena _spreminja_ znotraj posameznega meseca.
### Toplotne karte za prikaz korelacij
Razsevni diagrami primerjajo dve spremenljivki hkrati. Ko imate več številčnih stolpcev, vam [toplotna karta](https://en.wikipedia.org/wiki/Heat_map) omogoča ogled jakosti zveze med _vsakim_ parom stolpcev hkrati. To je pogost način, da ugotovite, katere lastnosti so najbolj korelirane, preden se odločite, katere vključiti v model (in ta vrsta diagrama se kasneje uporablja za prikaz zmede matričnih klasifikacij).
1. Zgradite korelacijsko matriko s Pandas, nato jo narišite s Seabornovo funkcijo [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Možnost `annot=True` natisne vrednosti korelacije na vsakem polju:

Vrednosti blizu `1` (ali `-1`) pomenijo, da so stolpci močno _linearno_ korelirani. Opazite, kako sta `Low Price` in `High Price` skoraj popolnoma korelirana. `Month`, po drugi strani, kaže šibko linearno korelacijo s ceno — čeprav je stolpični diagram zgoraj pokazal jasen sezonski vrh septembra in oktobra. To je pomembna lekcija: koeficient korelacije meri samo _črto_ odnosa, zato lahko spregleda sezonske ali druge nelinearne vzorce. ✅ Zakaj je koristno pogledati tako toplotno karto *kot* diagrame, kot je stolpični diagram, preden se odločite, katere stolpce uporabiti?
### Matplotlib ali Seaborn?
Obe knjižnici sta vredni učenja:
- **Matplotlib** vam omogoča podrobno kontrolo nad vsakim elementom diagrama in je osnova, na kateri slonijo skoraj vse druge Python knjižnice za risanje.
- **Seaborn** nudi funkcije višje ravni in privlačne privzete nastavitve za statistične diagrame, deluje neposredno s podatkovnimi okviri in je pogosto hitrejši za raziskovalno analizo podatkov.
To je bolj uporabna vizualizacija podatkov! Zdi se, da kaže, da so najvišje cene buč v septembru in oktobru. Ali to ustreza vašim pričakovanjem? Zakaj ali zakaj ne?
Pogosto delo je, da najprej uporabite Seaborn za hitro raziskovanje podatkov, nato pa preklopite na Matplotlib, ko potrebujete prilagoditve podrobnosti.
---
## 🚀Izziv
Raziščite različne vrste vizualizacij, ki jih ponuja Matplotlib. Katere vrste so najbolj primerne za regresijske probleme?
Raziščite različne vrste vizualizacij, ki jih ponujata Matplotlib in Seaborn. Kateri tipi so najbolj primerni za regresijske probleme?
## [Kviz po predavanju](https://ff-quizzes.netlify.app/en/ml/)
## [Kvizi po predavanjih](https://ff-quizzes.netlify.app/en/ml/)
## Pregled in samostojno učenje
## Povzetek in samostojno učenje
Oglejte si različne načine vizualizacije podatkov. Naredite seznam različnih knjižnic, ki so na voljo, in zabeležite, katere so najboljše za določene vrste nalog, na primer 2D vizualizacije v primerjavi s 3D vizualizacijami. Kaj odkrijete?
Oglejte si različne načine za vizualizacijo podatkov. Naredite seznam razpoložljivih knjižnic in zabeležite, katere so najboljše za določene vrste nalog, na primer 2D vizualizacije proti 3D vizualizacijam. Kaj odkrijete?
## Naloga
## Domača naloga
[Raziskovanje vizualizacije](assignment.md)
[Raziskovanje vizualizacij](assignment.md)
---
**Omejitev odgovornosti**:
Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Omejitev odgovornosti**:
Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda.
"[Seaborn](https://seaborn.pydata.org/) je zgrajen na vrhu Matplotlib in deluje neposredno s podatkovnimi okvirji, kar omogoča hitro ustvarjanje privlačnih statističnih grafikonov z zelo malo kode.\n"
"\n---\n\n**Omejitev odgovornosti**: \nTa dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Omejitev odgovornosti**:\nTa dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
Učenje z okrepitvijo vključuje tri pomembne koncepte: agenta, določena stanja in niz dejanj za vsako stanje. Z izvajanjem dejanja v določenem stanju agent prejme nagrado. Predstavljajte si računalniško igro Super Mario. Vi ste Mario, nahajate se na ravni igre, stojite ob robu prepada. Nad vami je kovanec. Vi kot Mario, na določeni ravni igre, na določenem položaju ... to je vaše stanje. Če se premaknete korak v desno (dejanje), boste padli čez rob in prejeli nizko številčno oceno. Če pa pritisnete gumb za skok, boste dosegli točko in ostali živi. To je pozitiven izid, ki bi vam moral prinesti pozitivno številčno oceno.
Učenje s krepitvijo vključuje tri pomembne pojme: agent, nekaj stanj in nabor dejanj za vsako stanje. Z izvajanjem dejanja v določenem stanju agent prejme nagrado. Ponovno si predstavljajte računalniško igro Super Mario. Vi ste Mario, v igralni ravni, stojite ob robu pečine. Nad vami je kovček. Vi, kot Mario, v igralni ravni, na določenem mestu ... to je vaše stanje. Premik za korak desno (dejanje) vas bo ponesel preko roba in to bi vam dalo nizko numerično oceno. Vendar pa bi pritisk na gumb za skok omogočil, da si pridobite točko in bi ostali živi. To je pozitiven izid in to bi moralo podeliti pozitivno numerično oceno.
Z uporabo učenja z okrepitvijo in simulatorja (igre) se lahko naučite igrati igro tako, da maksimizirate nagrado, kar pomeni, da ostanete živi in dosežete čim več točk.
Z uporabo učenja s krepitvijo in simulatorja (igre) se lahko naučite igrati igro tako, da maksimizirate nagrado, ki je ostati živ in zbrati čim več točk.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 Kliknite zgornjo sliko, da poslušate Dmitryja, kako razpravlja o učenju z okrepitvijo
> 🎥 Kliknite na sliko zgoraj, da slišite Dmitryja o učenju s krepitvijo
V tej lekciji bomo eksperimentirali s kodo v Pythonu. Kodo iz Jupyter Notebooka iz te lekcije bi morali biti sposobni zagnati na svojem računalniku ali v oblaku.
V tej lekciji bomo eksperimentirali z nekaj Python kode. Morali bi biti sposobni zagnati Jupyter Notebook iz te lekcije, bodisi na svojem računalniku ali nekje v oblaku.
Odprite [notebook lekcije](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) in sledite lekciji za gradnjo.
Lahko odprete [lekcijsko beležko](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) in sledite tej lekciji, da se jo naučite.
> **Opomba:** Če odpirate to kodo iz oblaka, morate pridobiti tudi datoteko [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ki se uporablja v kodi notebooka. Dodajte jo v isto mapo kot notebook.
> **Opomba:** Če odpirate to kodo iz oblaka, morate prav tako pridobiti datoteko [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ki se uporablja v kodi beležke. Dodajte jo v isti imenik kot beležko.
## Uvod
V tej lekciji bomo raziskali svet **[Peter in volk](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, ki ga je navdihnila glasbena pravljica ruskega skladatelja [Sergeja Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Uporabili bomo **učenje z okrepitvijo**, da bomo Petru omogočili raziskovanje njegovega okolja, zbiranje okusnih jabolk in izogibanje volku.
V tej lekciji bomo raziskovali svet **[Peter in volk](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, ki je navdihnjen z glasbeno pravljico ruske skladateljice, [Sergeja Prokofieva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Uporabili bomo **učvrstitev učenja**, da bo Peter raziskal svoje okolje, zbiral okusne jabolke in se izogibal srečanju z volkom.
**Učenje z okrepitvijo** (RL) je tehnika učenja, ki nam omogoča, da se naučimo optimalnega vedenja **agenta** v določenem **okolju** z izvajanjem številnih eksperimentov. Agent v tem okolju mora imeti določen **cilj**, ki ga določa **funkcija nagrade**.
**Učenje s krepitvijo** (RL) je tehnika učenja, ki nam omogoča, da se naučimo optimalnega vedenja **agenta** v določenem **okolju** z izvajanjem številnih poskusov. Agent v tem okolju mora imeti določen **cilj**, definiran z **funkcijo nagrajevanja**.
## Okolje
Za enostavnost si predstavljajmo Petrov svet kot kvadratno ploščo velikosti `širina` x `višina`, kot je ta:
Zaradi preprostosti si zamislimo Peterjev svet kot kvadratno ploščo velikosti `width` x `height`, kot je ta:
* **zemlja**, po kateri lahko Peter in druga bitja hodijo.
* **tla**, po katerih lahko hodijo Peter in druge živali.
* **voda**, po kateri očitno ne morete hoditi.
* **drevo** ali **trava**, kjer se lahko spočijete.
* **jabolko**, ki predstavlja nekaj, kar bi Peter z veseljem našel, da se nahrani.
* **drevo** ali **trava**, mesto kjer se lahko spočijete.
* **jabolko**, ki predstavlja nekaj, kar bi Peter z veseljem našel, da bi se nahranil.
* **volk**, ki je nevaren in se mu je treba izogniti.
Obstaja ločen Python modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ki vsebuje kodo za delo s tem okoljem. Ker ta koda ni pomembna za razumevanje naših konceptov, bomo modul uvozili in ga uporabili za ustvarjanje vzorčne plošče (koda blok 1):
@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
Ta koda bi morala natisniti sliko okolja, podobno zgornji.
Ta koda naj natisne sliko okolja, podobno zgornji.
## Dejanja in politika
V našem primeru bi bil Petrov cilj najti jabolko, medtem ko se izogiba volku in drugim oviram. Da bi to dosegel, se lahko preprosto sprehaja, dokler ne najde jabolka.
V našem primeru je Peterjev cilj najti jabolko, pri tem pa se izogniti volku in drugim oviram. Za to lahko preprosto hodi, dokler ne najde jabolka.
Zato lahko na katerem koli položaju izbere eno od naslednjih dejanj: gor, dol, levo in desno.
Zato lahko na kateri koli poziciji izbere eno od naslednjih dejanj: gor, dol, levo in desno.
Ta dejanja bomo definirali kot slovar in jih preslikali v pare ustreznih sprememb koordinat. Na primer, premik v desno (`R`) bi ustrezal paru `(1,0)`. (koda blok 2):
Ta dejanja bomo definirali kot slovar in jih povezali s pari ustreznih sprememb koordinat. Na primer, premik desno (`R`) ustreza paru `(1,0)`. (koda blok 2):
action_idx = { a : i for i,a in enumerate(actions.keys()) }
```
Če povzamemo, strategija in cilj tega scenarija sta naslednja:
Na kratko, strategija in cilj tega scenarija sta naslednja:
- **Strategija** našega agenta (Petra) je definirana z tako imenovano **politiko**. Politika je funkcija, ki vrne dejanje v katerem koli danem stanju. V našem primeru je stanje problema predstavljeno s ploščo, vključno s trenutnim položajem igralca.
- **Strategija**, našega agenta (Petra) je definirana s tako imenovano **politiko**. Politika je funkcija, ki vrne dejanje za katerokoli dano stanje. V našem primeru je stanje problema predstavljeno s ploščo, vključno s trenutno pozicijo igralca.
- **Cilj** učenja z okrepitvijo je sčasoma naučiti dobro politiko, ki nam bo omogočila učinkovito reševanje problema. Vendar pa kot osnovo upoštevajmo najpreprostejšo politiko, imenovano **naključna hoja**.
- **Cilj** učenja s krepitvijo je, da na koncu pridobimo dobro politiko, ki nam bo omogočila učinkovito reševanje problema. Kot osnovno politiko bomo upoštevali najpreprostejšo, imenovano **naključni sprehod**.
## Naključna hoja
## Naključni sprehod
Najprej rešimo naš problem z implementacijo strategije naključne hoje. Pri naključni hoji bomo naključno izbrali naslednje dejanje iz dovoljenih dejanj, dokler ne dosežemo jabolka (koda blok 3).
Najprej rešimo problem z implementacijo strategije naključnega sprehoda. Pri naključnem sprehodu bomo naključno izbirali naslednje dejanje iz dovoljenih dejanj, dokler ne pridemo do jabolka (koda blok 3).
1. Implementirajte naključno hojo s spodnjo kodo:
1. Implementirajte naključni sprehod z naslednjo kodo:
```python
def random_policy(m):
return random.choice(list(actions))
def walk(m,policy,start_position=None):
n = 0 # number of steps
# set initial position
n = 0 # število korakov
# nastavi začetni položaj
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
return n # success!
return n # uspeh!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
return -1 # eaten by wolf or drowned
return -1 # pojedel volk ali utonil
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
m.move(a) # do the actual move
m.move(a) # naredi dejanski premik
break
n+=1
walk(m,random_policy)
```
Klic funkcije `walk`bi moral vrniti dolžino ustrezne poti, ki se lahko razlikuje od enega zagona do drugega.
Klic funkcije `walk`naj vrne dolžino ustrezne poti, ki se lahko razlikuje pri vsakem zagonu.
1. Izvedite eksperiment hoje večkrat (recimo 100-krat) in natisnite rezultate statistike (koda blok 4):
1. Poženite eksperiment sprehoda večkrat (recimo 100-krat) in natisnite nastale statistike (koda blok 4):
```python
def print_statistics(policy):
@ -125,17 +125,17 @@ Najprej rešimo naš problem z implementacijo strategije naključne hoje. Pri na
print_statistics(random_policy)
```
Opazite, da je povprečna dolžina poti okoli 30-40 korakov, kar je precej, glede na to, da je povprečna razdalja do najbližjega jabolka okoli 5-6 korakov.
Upoštevajte, da je povprečna dolžina poti približno 30-40 korakov, kar je precej veliko, glede na dejstvo, da je povprečna razdalja do najbližjega jabolka približno 5-6 korakov.
Prav tako lahko vidite, kako izgleda Petrov premik med naključno hojo:
Vidite lahko tudi, kako izgleda Peterjevo gibanje med naključnim sprehodom:
Da bi bila naša politika bolj inteligentna, moramo razumeti, katera dejanja so "boljša" od drugih. Za to moramo definirati naš cilj.
Da bi naredili našo politiko bolj pametno, moramo razumeti, kater premiki so "boljši" od drugih. Za to moramo definirati naš cilj.
Cilj lahko definiramo v smislu **funkcije nagrade**, ki bo vrnila neko vrednost ocene za vsako stanje. Višja kot je številka, boljša je nagrada. (koda blok 5)
Cilj lahko definiramo z vidika **funkcije nagrajevanja**, ki vrne neko vrednost ocene za vsako stanje. Višje število pomeni boljšo funkcijo nagrajevanja. (koda blok 5)
```python
move_reward = -0.1
@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
Zanimivo pri funkcijah nagrade je, da v večini primerov *prejmemo bistveno nagrado šele na koncu igre*. To pomeni, da mora naš algoritem nekako zapomniti "dobre" korake, ki vodijo do pozitivne nagrade na koncu, in povečati njihov pomen. Podobno je treba odvračati vse poteze, ki vodijo do slabih rezultatov.
Zanimivo pri funkcijah nagrajevanja je, da v večini primerov *dobimo pomembno nagrado šele na koncu igre*. To pomeni, da mora naš algoritem nekako zapomniti "dobre" korake, ki vodijo do pozitivne nagrade na koncu, in povečati njihovo pomembnost. Prav tako je treba discouraged vsa dejanja, ki vodijo do slabih rezultatov.
## Q-učenje
Algoritem, ki ga bomo tukaj obravnavali, se imenuje **Q-učenje**. V tem algoritmu je politika definirana s funkcijo (ali podatkovno strukturo), imenovano **Q-tabela**. Ta beleži "dobroto" vsakega dejanja v določenem stanju.
Algoritem, ki ga bomo obravnavali, se imenuje **Q-učenje**. V tem algoritmu je politika definirana z funkcijo (ali podatkovno strukturo), imenovano **Q-tabela**. Ta beleži "dobroto" vsakega dejanja v določenem stanju.
Imenuje se Q-tabela, ker jo je pogosto priročno predstavljati kot tabelo ali večdimenzionalno matriko. Ker ima naša plošča dimenzije `širina` x `višina`, lahko Q-tabelo predstavimo z numpy matriko oblike `širina` x `višina` x `len(actions)`: (koda blok 6)
Ime Q-tabela dobi, ker je pogosto priročno predstavljati jo kot tabelo ali večdimenzionalno matriko. Ker naša plošča ima dimenziji `width` x `height`, lahko Q-tabelo predstavimo z numpy matriko z obliko `width` x `height` x `len(actions)`: (koda blok 6)
Opazite, da vse vrednosti Q-tabele inicializiramo z enako vrednostjo, v našem primeru - 0,25. To ustreza politiki "naključne hoje", ker so vse poteze v vsakem stanju enako dobre. Q-tabelo lahko posredujemo funkciji `plot`, da vizualiziramo tabelo na plošči: `m.plot(Q)`.
Opazite, da začnemo z vsemi vrednostmi Q-tabele nastavljeno na enako vrednost, v našem primeru 0.25. To ustreza "politični random walk", saj so vsi premiki v vsakem stanju enako dobri. Q-tabelo lahko predamo funkciji `plot` za vizualizacijo tabele na plošči: `m.plot(Q)`.
V središču vsake celice je "puščica", ki označuje prednostno smer gibanja. Ker so vse smeri enake, je prikazana pika.
V središču vsake celice je "puščica", ki kaže prednostno smer gibanja. Ker so vse smeri enake, je prikazana pika.
Zdaj moramo zagnati simulacijo, raziskati naše okolje in se naučiti boljše porazdelitve vrednosti Q-tabele, kar nam bo omogočilo veliko hitrejše iskanje poti do jabolka.
Zdaj moramo zagnati simulacijo, raziskati okolje in se naučiti boljše porazdelitve vrednosti Q-tabele, kar nam bo omogočilo, da hitreje najdemo pot do jabolka.
## Bistvo Q-učenja: Bellmanova enačba
Ko se začnemo premikati, bo vsako dejanje imelo ustrezno nagrado, tj. teoretično lahko izberemo naslednje dejanje na podlagi najvišje takojšnje nagrade. Vendar pa v večini stanj poteza ne bo dosegla našega cilja doseči jabolko, zato ne moremo takoj odločiti, katera smer je boljša.
Ko začnemo z gibanjem, bo vsako dejanje imelo pripadajočo nagrado, torej lahko teoretično izberemo naslednje dejanje glede na najvišjo takojšnjo nagrado. Vendar pa v večini stanj ta poteza ne bo dosegla našega cilja - doseči jabolko, zato ne moremo takoj odločiti, katera smer je boljša.
> Ne pozabite, da ni pomemben trenutni rezultat, temveč končni rezultat, ki ga bomo dosegli na koncu simulacije.
> Zapomnite si, da ni pomemben takojšnji rezultat, ampak končni rezultat, ki ga bomo dobili na koncu simulacije.
Da bi upoštevali to odloženo nagrado, moramo uporabiti načela**[dinamičnega programiranja](https://en.wikipedia.org/wiki/Dynamic_programming)**, ki nam omogočajo, da o problemu razmišljamo rekurzivno.
Da bi upoštevali to zamaknjeno nagrado, moramo uporabiti principe**[dinamičnega programiranja](https://en.wikipedia.org/wiki/Dynamic_programming)**, ki nam omogočajo rekurzivno razmišljanje o našem problemu.
Recimo, da smo zdaj v stanju *s* in se želimo premakniti v naslednje stanje *s'*. S tem bomo prejeli takojšnjo nagrado *r(s,a)*, določeno s funkcijo nagrade, plus neko prihodnjo nagrado. Če predpostavimo, da naša Q-tabela pravilno odraža "privlačnost" vsakega dejanja, bomo v stanju *s'* izbrali dejanje *a*, ki ustreza največji vrednosti *Q(s',a')*. Tako bo najboljša možna prihodnja nagrada, ki jo lahko dobimo v stanju *s*, definirana kot `max`
Predpostavimo, da smo sedaj v stanju *s* in želimo preiti v naslednje stanje *s'*. S tem bomo prejeli takojšnjo nagrado *r(s,a)*, definirano s funkcijo nagrajevanja, poleg tega pa še neko prihodnjo nagrado. Če predpostavimo, da naša Q-tabela pravilno odraža "privlačnost" vsakega dejanja, potem bomo v stanju *s'* izbrali dejanje *a*, ki ustreza maksimalni vrednosti *Q(s',a')*. Zato bo najboljša možna prihodnja nagrada v stanju *s* definirana kot `max`<sub>a'</sub>*Q(s',a')* (maksimum je tukaj izračunan preko vseh možnih dejanj *a'* v stanju *s'*).
To daje **Bellmanovo formulo** za izračun vrednosti Q-tabele v stanju *s*, glede na dejanje *a*:
Tukaj je γ tako imenovani **faktor diskontiranja**, ki določa, v kolikšni meri naj se trenutno nagrado preferira pred prihodnjo nagrado in obratno.
## Algoritem učenja
Glede na zgornjo enačbo lahko zdaj napišemo psevdokodo za naš algoritem učenja:
* Inicializiraj Q-tabelo Q z enakimi vrednostmi za vsa stanja in dejanja
* Nastavi hitrost učenja α ← 1
* Ponovi simulacijo večkrat
1. Začni na naključni poziciji
1. Ponovi
1. Izberi dejanje *a* v stanju *s*
2. Izvedi dejanje s premikom v novo stanje *s'*
3. Če zasledimo pogoj konca igre ali je celotna nagrada premajhna - končaj simulacijo
4. Izračunaj nagrado *r* v novem stanju
5. Posodobi Q-funkcijo po Bellmanovi enačbi: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ max<sub>a'</sub>Q(s',a'))*
6. *s* ← *s'*
7. Posodobi skupno nagrado in znižaj α.
## Izkoristi vs. raziskuj
V zgornjem algoritmu nismo natančno določili, kako izbrati dejanje v koraku 2.1. Če dejanja izbiramo naključno, bomo naključno **raziskovali** okolje, in precej verjetno bomo pogosto umrli ter obiskali območja, kjer sicer ne bi šli. Alternativni pristop bi bil **izkoristiti** že znane vrednosti Q-tabele in tako izbrati najboljše dejanje (z višjo vrednostjo v Q-tabeli) v stanju *s*. To pa bi nas preprečilo, da bi raziskali druga stanja, zato verjetno ne bomo našli optimalne rešitve.
Zato je najboljši pristop doseči ravnovesje med raziskovanjem in izkoriščanjem. To dosežemo tako, da izbiramo dejanje v stanju *s* z verjetnostmi, sorazmernimi z vrednostmi v Q-tabeli. Na začetku, ko so vrednosti Q-tabele vse enake, bi to ustrezalo naključni izbiri, vendar ko se več naučimo o našem okolju, bomo verjetneje sledili optimalni poti, hkrati pa bomo agentu dovolili, da včasih izbere neodkrito pot.
## Implementacija v Pythonu
Zdaj smo pripravljeni implementirati algoritem učenja. Pred tem potrebujemo še funkcijo, ki bo pretvorila poljubna števila v Q-tabeli v vektor verjetnosti za ustrezna dejanja.
1. Ustvari funkcijo `probs()`:
```python
def probs(v,eps=1e-4):
v = v-v.min()+eps
v = v/v.sum()
return v
```
Dodamo nekaj `eps` originalnemu vektorju, da se izognemo deljenju z 0 v začetnem primeru, ko so vse komponente vektorja enake.
Zaženimo algoritem učenja skozi 5000 poskusov, imenovanih tudi **epoh**: (koda blok 8)
```python
for epoch in range(5000):
# Izberi začetno točko
m.random_start()
# Začni potovanje
n=0
cum_reward = 0
while True:
x,y = m.human
v = probs(Q[x,y])
a = random.choices(list(actions),weights=v)[0]
dpos = actions[a]
m.move(dpos,check_correctness=False) # dovolimo igralcu, da se premakne izven plošče, kar zaključuje epizodo
Po izvedbi tega algoritma naj bi bila Q-tabela posodobljena z vrednostmi, ki določajo privlačnost različnih dejanj v vsakem koraku. Poskusimo lahko vizualizirati Q-tabelo tako, da izrišemo vektor v vsaki celici, ki kaže v želeno smer gibanja. Zaradi preprostosti narišemo majhen krog namesto konice puščice.
Ker Q-tabela prikazuje "privlačnost" vsakega dejanja v vsakem stanju, jo je precej enostavno uporabiti za določitev učinkovite navigacije v našem svetu. V najpreprostejšem primeru lahko izberemo dejanje, ki ustreza najvišji vrednosti v Q-tabeli: (koda 9)
Ker Q-tabela našteta "privlačnost" vsakega dejanja v vsakem stanju, jo je razmeroma enostavno uporabiti za določanje učinkovite navigacije v našem svetu. V najpreprostejšem primeru lahko izberemo dejanje, ki ustreza najvišji vrednosti v Q-tabeli: (koda blok 9)
```python
def qpolicy_strict(m):
@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
> Če zgornjo kodo poskusite večkrat, boste morda opazili, da se včasih "zatakne" in morate pritisniti gumb STOP v beležnici, da jo prekinete. To se zgodi, ker lahko pride do situacij, ko si dve stanji "kažeta" druga na drugo glede na optimalno Q-vrednost, zaradi česar agent neskončno prehaja med tema dvema stanjema.
> Če zgornjo kodo preizkusite večkrat, boste morda opazili, da se včasih "zatakne" in morate pritisniti gumb STOP v zvezku, da jo prekinete. To se zgodi, ker so lahko situacije, ko se dve stanji "kažeta" drug na drugega glede optimalne Q-vrednosti, v tem primeru agent nenehno prehaja med tema stanji.
## 🚀Izziv
> **Naloga 1:** Spremenite funkcijo `walk`, da omejite največjo dolžino poti na določeno število korakov (na primer 100) in opazujte, kako zgornja koda občasno vrne to vrednost.
> **Naloga 1:** Spremenite funkcijo `walk`, da omejite največjo dolžino poti na določeno število korakov (recimo 100) in opazujte, kako zgornja koda občasno vrne to vrednost.
> **Naloga 2:** Spremenite funkcijo `walk`, da se ne vrača na mesta, kjer je že bil. To bo preprečilo, da bi se `walk` zanko ponavljal, vendar se agent še vedno lahko "ujame" na lokaciji, iz katere ne more pobegniti.
> **Naloga 2:** Spremenite funkcijo `walk` tako, da ne bo šla nazaj na kraje, kjer je že bila prej. S tem boste preprečili zanko v funkciji `walk`, vendar pa se agent lahko še vedno znajde "ujet" na mestu, iz katerega ne more pobegniti.
## Navigacija
Boljša navigacijska politika bi bila tista, ki smo jo uporabili med učenjem, in ki združuje izkoriščanje in raziskovanje. Pri tej politiki bomo vsako dejanje izbrali z določeno verjetnostjo, sorazmerno z vrednostmi v Q-tabeli. Ta strategija lahko še vedno povzroči, da se agent vrne na že raziskano mesto, vendar, kot lahko vidite iz spodnje kode, vodi do zelo kratke povprečne poti do želene lokacije (ne pozabite, da `print_statistics` simulacijo zažene 100-krat): (koda 10)
Boljša navigacijska politika bi bila tista, ki smo jo uporabili med učenjem, ki združuje izkoriščanje in raziskovanje. V tej politiki bomo vsako dejanje izbrali z določeno verjetnostjo, sorazmerno vrednostim v Q-tabeli. Ta strategija lahko še vedno privede do tega, da agent nazaj pride na že raziskano položaj, vendar, kot vidite v spodnji kodi, to vodi do zelo kratke povprečne poti do želenega mesta (spomnite se, da `print_statistics` zažene simulacijo 100-krat): (koda blok 10)
```python
def qpolicy(m):
@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
Po zagonu te kode bi morali dobiti precej krajšo povprečno dolžino poti kot prej, v razponu od 3 do 6.
Po zagonu te kode bi morali dobiti precej krajšo povprečno dolžino poti kot prej, v območju 3-6.
## Preučevanje procesa učenja
## Preučevanje učnega procesa
Kot smo že omenili, je proces učenja ravnotežje med raziskovanjem in izkoriščanjem pridobljenega znanja o strukturi problema. Videli smo, da so rezultati učenja (sposobnost pomagati agentu najti kratko pot do cilja) izboljšani, vendar je tudi zanimivo opazovati, kako se povprečna dolžina poti obnaša med procesom učenja:
Kot smo omenili, je učni proces ravnovesje med raziskovanjem in izkoriščanjem pridobljenega znanja o strukturi problemskega prostora. Videli smo, da so se rezultati učenja (sposobnost pomagati agentu najti kratko pot do cilja) izboljšali, vendar je zanimivo tudi opazovati, kako se povprečna dolžina poti spreminja med učnim procesom:
- **Povprečna dolžina poti se poveča.** Na začetku opazimo, da se povprečna dolžina poti povečuje. To je verjetno zato, ker ko ne vemo ničesar o okolju, se zlahka ujamemo v slaba stanja, kot so voda ali volk. Ko se naučimo več in začnemo uporabljati to znanje, lahko okolje raziskujemo dlje, vendar še vedno ne vemo dobro, kje so jabolka.
- **Povprečna dolžina poti se povečuje**. Tukaj lahko vidimo, da se povprečna dolžina poti najprej poveča. To je verjetno posledica dejstva, da, ko ne vemo ničesar o okolju, se verjetno zataknemo v slabih stanjih, kot sta voda ali volk. Ko se več naučimo in začnemo uporabljati to znanje, lahko okolje dlje raziskujemo, vendar še ne vemo zelo dobro, kje so jabolka.
- **Dolžina poti se zmanjša, ko se naučimo več.** Ko se naučimo dovolj, postane agentu lažje doseči cilj, dolžina poti pa se začne zmanjševati. Vendar smo še vedno odprti za raziskovanje, zato pogosto odstopimo od najboljše poti in raziskujemo nove možnosti, kar podaljša pot.
- **Dolžina poti se skrajša, ko se več naučimo**. Ko se naučimo dovolj, postane agentu lažje doseči cilj in dolžina poti začne upadati. Kljub temu smo še vedno odprti za raziskovanje, zato pogosto odklonimo od najboljše poti in raziskujemo nove možnosti, zaradi česar je pot daljša od optimalne.
- **Dolžina se nenadoma poveča.** Na grafu opazimo tudi, da se dolžina na neki točki nenadoma poveča. To kaže na stohastično naravo procesa in na to, da lahko na neki točki "pokvarimo" koeficiente v Q-tabeli, tako da jih prepišemo z novimi vrednostmi. To bi morali idealno zmanjšati z zniževanjem učne stopnje (na primer, proti koncu učenja Q-tabeli dodajamo le majhne vrednosti).
- **Dolžina nenadoma naraste**. Še nekaj, kar lahko opazimo na tem grafu, je, da se je dolžina nekje nenadoma povečala. To kaže na stokastičen značaj procesa in da lahko kdaj "pokvarimo" koeficiente v Q-tabeli z prepisovanjem z novimi vrednostmi. To bi bilo idealno minimizirati z zmanjševanjem stopnje učenja (na primer proti koncu treninga prilagodimo vrednosti Q-tabele le z majhno vrednostjo).
Na splošno je pomembno vedeti, da uspeh in kakovost učnega procesa močno odvisna od parametrov, kot so učna stopnja, zmanjševanje učne stopnje in faktor diskontiranja. Ti se pogosto imenujejo **hiperparametri**, da jih ločimo od **parametrov**, ki jih optimiziramo med učenjem (na primer koeficienti Q-tabele). Proces iskanja najboljših vrednosti hiperparametrov se imenuje **optimizacija hiperparametrov** in si zasluži ločeno obravnavo.
Na splošno je pomembno vedeti, da uspeh in kakovost procesa učenja močno odvisna od parametrov, kot so stopnja učenja, upad stopnje učenja in faktor diskontiranja. Ti parametri se pogosto imenujejo **hiperparametri**, da jih razlikujemo od **parametrov**, ki jih optimiziramo med učenjem (na primer koeficienti v Q-tabeli). Proces iskanja najboljših vrednosti hiperparametrov se imenuje **optimizacija hiperparametrov** in si zasluži svojo temo.
## [Kvizi po predavanju](https://ff-quizzes.netlify.app/en/ml/)
## [Kvizek po predavanju](https://ff-quizzes.netlify.app/en/ml/)
## Naloga
## Domača naloga
[Bolj realističen svet](assignment.md)
---
**Omejitev odgovornosti**:
Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Omejitev odgovornosti**:
Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda.
# Изградња решења за машинско учење са одговорном вештачком интелигенцијом

> Скица од [Томоми Имура](https://www.twitter.com/girlie_mac)
# Прављење решења машинског учења са одговорним AI-јем

> Скетчнот од [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/)
## Увод
У овом курикулуму, почећете да откривате како машинско учење може и већ утиче на наше свакодневне животе. Чак и сада, системи и модели су укључени у свакодневне задатке доношења одлука, као што су дијагнозе у здравству, одобравање кредита или откривање превара. Због тога је важно да ти модели добро функционишу како би пружили резултате који су поуздани. Као и свака софтверска апликација, системи вештачке интелигенције могу да не испуне очекивања или да имају непожељан исход. Зато је од суштинског значаја разумети и објаснити понашање модела вештачке интелигенције.
У овом курикулуму почећете да откривате како машинско учење може и утиче на наше свакодневне животе. Већ сада, системи и модели учествују у свакодневним задацима доношења одлука, као што су дијагнозе у здравству, одобрења за кредите или откривање превара. Због тога је важно да ти модели добро функционишу како би обезбедили резултате којима се може веровати. Као и било која софтверска апликација, AI системи могу испасти испод очекивања или имати непожељан исход. Зато је суштински важно бити у стању да разумемо и објаснимо понашање AI модела.
Замислите шта може да се догоди када подаци које користите за изградњу ових модела недостају одређеним демографским групама, као што сураса, пол, политички ставови, религија, или када непропорционално представљају те демографске групе. Шта ако је излаз модела интерпретиран тако да фаворизује одређену демографску групу? Којесу последице за апликацију? Поред тога, шта се дешава када модел има негативан исход и наноси штету људима? Које одговоран за понашање система вештачке интелигенције? Ово су нека од питања која ћемо истражити у овом курикулуму.
Замислите шта се може десити када подаци које користите за прављење ових модела недостају одређене демографије, као што сураса, пол, политички став, религија или када непропорционално представљају те демографије. Шта ако се резултат модела тумачи тако да фаворизује неку демографску групу? Којаје последица за апликацију? Поред тога, шта се дешава када модел има неповољан исход и штети људима? Које одговоран за понашање AI система? Ово су нека од питања која ћемо истражити у овом курсу.
У овој лекцији, научићете:
У овом часу ћете:
- Да подигнете свест о важности правичности у машинском учењу и штетама повезаним са неправичношћу.
- Да се упознате са праксом истраживања изузетака и необичних сценарија ради осигурања поузданости и безбедности.
- Да стекнете разумевање о потреби оснаживања свих кроз дизајнирање инклузивних система.
- Да истражите колико је важно заштитити приватност и безбедност података и људи.
- Да увидите значај приступа „стаклене кутије“ за објашњавање понашања модела вештачке интелигенције.
- Да будете свесни како је одговорност кључна за изградњу поверења у системе вештачке интелигенције.
- Подићи свест о значају правде у машинском учењу и штетама повезаним са неправдом.
- Упознати сеса праксом испитивања одступања и необичних сценарија ради осигурања поузданости и безбедности.
- Степеновати разумевање о потреби оснаживања свих дизајнирањем инклузивних система.
- Истражити колико је важно заштитити приватност и безбедност података и људи.
- Увидети значај приступа "прозирне кутије" за објашњење понашања AI модела.
- Бити свестан колико је одговорност важна за изградњу поверења у AI системе.
## Предуслов
## Предзнање
Као предуслов, молимо вас да прођете кроз „Принципе одговорне вештачке интелигенције“ и погледате видео испод на ову тему:
Као предуслов, молимо вас да прођете „Принципе одговорног AI-ја“ преко Learn Path-а и погледате видео испод о теми:
Сазнајте више оодговорној вештачкој интелигенцији пратећи овај [пут учења](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
Сазнајте више оОдговорном AI-ју пратећи овај [Learn Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
> 🎥 Кликните на слику изнад за видео: Приступ Microsoft-а одговорној вештачкој интелигенцији
> 🎥 Кликните на слику горе за видео: Приступ Microsoft-a одговорном AI-ју
## Правичност
## Праведност
Системи вештачке интелигенције треба да третирају све људе праведно и избегавају различите ефекте на сличне групе људи. На пример, када системи вештачке интелигенције пружају смернице о медицинском лечењу, апликацијама за кредите или запошљавању, они треба да дају исте препоруке свима са сличним симптомима, финансијским околностима или професионалним квалификацијама. Сваки од нас као људско биће носи у себи наследне предрасуде које утичу на наше одлуке и поступке. Те предрасуде могу бити очигледне у подацима које користимо за обучавање система вештачке интелигенције. Таква манипулација понекад може да се догоди ненамерно. Често је тешко свесно знати када уносите предрасудеу податке.
AI системи треба да све третирају праведно и избегавају да утичу на сличне групе људи на различите начине. На пример, када AI системи дају смернице о медицинском лечењу, захтевима за кредитима или запошљавању, они треба да дају исте препоруке свима са сличним симптомима, финансијским околностима или професионалним квалификацијама. Сваки од нас као човек носи заједничке предрасуде које утичу на наше одлуке и поступке. Ове предрасуде могу бити видљиве у подацима које користимо за тренирање AI система. Таква манипулација понекад се догађа ненамерно. Често је тешко свесно знати када уводите пристрасносту податке.
**„Неправичност“** обухвата негативне утицаје, или „штете“, за групу људи, као што су они дефинисаниу смислу расе, пола, старости или инвалидитета. Главне штете повезане санеправичношћу могу се класификовати као:
**„Неправедност“** обухвата негативне утицаје или „штете“ за групу људи, као што су оне дефинисанеу смислу расе, пола, старости или инвалидитета. Главне штете повезане саправдом могу се класификовати као:
- **Додела ресурса**, ако је, на пример, одређени пол или етничка група фаворизована у односу на другу.
- **Квалитет услуге**. Ако обучите податке за један специфичан сценарио, али је стварност много сложенија, то доводи до лоше услуге. На пример, дозатор сапуна који не може да препозна људе са тамном кожом. [Референца](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **Омаловажавање**. Неправедно критиковање и етикетирање нечега или некога. На пример, технологија за означавање слика јеозлоглашено погрешно означила слике људи тамне коже као гориле.
- **Прекомерна или недовољна заступљеност**. Идеја је да одређена група није видљива у одређеној професији, а свака услуга или функција која наставља да промовише то доприноси штети.
- **Стереотипизација**. Повезивање одређене групе са унапред додељеним атрибутима. На пример, систем за превођење између енглеског и турског може имати нетачности због речи са стереотипним асоцијацијама на пол.
- **Расподела**, ако се, на пример, фаворизује пол или етницитет у односу на друге.
- **Квалитет услуге**. Ако тренирате податке за одређени сценарио, а стварност је много сложенија, то доводи до лоших перформанси услуге. На пример, диспенсер за сапун који није могао да препозна људе са тамнијом кожом. [Референца](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **Понижавање**. Неправедно критиковање и етикетирање нечега или некога. На пример, технологија за означавање слика јепогрешно означавала слике тамнопутих људи као гориле.
- **Прекомерна или недовољна заступљеност**. Идеја је да одређена група није видљива у одређеним професијама, а свака услуга или функција која то наставља да промовише доприноси штети.
- **Стереотипизација**. Повезивање одређене групе са унапред додељеним особинама. На пример, систем за превођење између енглеског и турског може имати нетачности због речи које имају стереотипне асоцијације са полом.


> превод на турски

> превод назад на енглески

> повратни превод на енглески
Када дизајнирамо и тестирамо системе вештачке интелигенције, морамо осигурати да вештачка интелигенција буде праведна и да није програмирана да доноси пристрасне или дискриминаторне одлуке, које су и људима забрањене. Гарантовање правичности у вештачкој интелигенцији и машинском учењу остаје сложен социотехнички изазов.
При дизајнирању и тестирању AI система, требало би да обезбедимо да је AI праведан и да није програмиран да доноси пристрасне или дискриминаторске одлуке, што је и људима забрањено. Обезбеђивање правде у AI и машинском учењу остаје сложен социотехнички изазов.
### Поузданост и безбедност
Да би се изградило поверење, системи вештачке интелигенције морају бити поуздани, безбедни и конзистентни у нормалним и неочекиваним условима. Важно је знати како ће се системи вештачке интелигенције понашати у различитим ситуацијама, посебно када суу питању изузеци. Приликом изградње решења заснованих на вештачкој интелигенцији, потребно је посветити значајну пажњу томе како се носити са широким спектром околности које би решења могла да сусретну. На пример, аутомобил који се самостално управља мора ставити безбедност људи као главни приоритет. Као резултат, вештачка интелигенција која покреће аутомобил мора узети у обзир све могуће сценарије са којима би се аутомобил могао суочити, као што су ноћ, грмљавина или снежне олује, деца која трче преко улице, кућни љубимци, радови на путу итд. Колико добро систем вештачке интелигенције може да се носи са широким спектром услова поуздано и безбедно одражава ниво предвиђања који јенаучник за податке или програмер вештачке интелигенције разматрао током дизајна или тестирања система.
Да би се изградило поверење, AI системи морају бити поуздани, безбедни и доследни у нормалним и неочекиваним условима. Важно је знати како ће сеAI системи понашати у различитим ситуацијама, посебно када суу питању одступања. При прављењу AI решења, мора се посветити значајна пажња како се носити са широким спектром околности са којима се AI решења могу сусрести. На пример, аутономни аутомобил мора ставити безбедност људи на прво место. Као резултат тога, AI који покреће аутомобил мора узети у обзир све могуће сценарије са којима се возило може суочити, као што су ноћ, олује или снежне мећаве, деца која трче преко улице, кућни љубимци, радови на путу итд. Колико добро AI систем може поуздано и сигурно да се носи са широким спектром услова одражава ниво предвиђања који јестручњак за податке или AI развојач узео у обзир током дизајна или тестирања система.
> [🎥 Кликните овде за видео: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Инклузивност
Системи вештачке интелигенције треба да буду дизајнирани тако да ангажују и оснажују све. Приликом дизајнирања и имплементације система вештачке интелигенције, научници за податке и програмери вештачке интелигенције идентификују и решавају потенцијалне препреке у систему које би могле ненамерно искључити људе. На пример, постоји 1 милијарда људи са инвалидитетом широм света. Са напретком вештачке интелигенције, они могу лакше приступити широком спектру информација и могућности у свакодневном животу. Решавањем препрека стварају се могућности за иновације и развој производа заснованих на вештачкој интелигенцијиса бољим искуствима која користе свима.
AI системи треба да буду дизајнирани да укључе и оснаже све људе. При дизајнирању и имплементацији AI система, стручњаци за податке и AI развојачи идентификују и уклањају потенцијалне препреке у систему које непланирано могу искључити људе. На пример, у свету има милијарду људи са инвалидитетом. Са напретком у AI-ју, они могу лакше приступити широком спектру информација и прилика у свакодневном животу. Уклањањем препрека стварају се могућности за иновације и развој AI производа са бољим искуствима која користе свима.
> [🎥 Кликните овде за видео: инклузивност увештачкој интелигенцији](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
> [🎥 Кликните овде за видео: инклузивност уAI-ју](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Безбедност и приватност
Системи вештачке интелигенције треба да буду безбедни и да поштују приватност људи. Људи имају мање поверења у системе који угрожавају њихову приватност, информације или животе. Приликом обучавања модела машинског учења, ослањамо се на податке како бисмо произвели најбоље резултате. У том процесу, порекло података и њихов интегритет морају бити узети у обзир. На пример, да ли су подаци достављени од стране корисника или јавно доступни? Затим, док радимо са подацима, од суштинског је значаја развијати системе вештачке интелигенције који могу заштитити поверљиве информације и одолети нападима. Како вештачка интелигенција постаје све присутнија, заштита приватности и обезбеђивање важних личних и пословних информација постаје све критичнија и сложенија. Питања приватности и безбедности података захтевају посебну пажњу за вештачку интелигенцију јерје приступ подацима од суштинског значаја за системе вештачке интелигенције да би донели тачне и информисане предвиђања и одлуке о људима.
AI системи треба да буду безбедни и да поштују приватност људи. Људи имају мање поверења у системе који стављају њихову приватност, информације или животе у ризик. При тренирању модела машинског учења ослањамо се на податке да произведемо најбоље резултате. При томе морамо узети у обзир порекло података и њихов интегритет. На пример, да ли су подаци унели корисници или су јавно доступни? Даље, приликом рада са подацима, кључно је развити AI системе који могу заштитити поверљиве информације и одољети нападима. Како AI постаје све заступљенији, заштита приватности и обезбеђивање важних личних и пословних информација постају све критичнији и сложенији. Питања приватности и безбедности података захтевају посебну пажњу у AI-јујерје приступ подацима неопходан за то да AI системи праве прецизне и добро информисане предикције и одлуке о људима.
> [🎥 Кликните овде за видео: безбедност увештачкој интелигенцији](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Кликните овде за видео: безбедност уAI-ју](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Као индустрија, постигли смо значајан напредак у области приватности и безбедности, значајно подстакнут регулативама као што је GDPR (Општа уредба о заштити података).
- Ипак, са системима вештачке интелигенције морамо признати тензију између потребе за више личних података како би системи били персонализованији и ефикаснији – и приватности.
- Каошто је било са појавом повезаних рачунара преко интернета, такође видимо велики пораст броја безбедносних проблема повезаних са вештачком интелигенцијом.
- Истовремено, видели смо да се вештачка интелигенција користи за побољшање безбедности. На пример, већина модерних антивирусних скенера данас се покреће помоћу хеуристике засноване на вештачкој интелигенцији.
- Морамо осигурати да наши процеси у области науке о подацима хармонично функционишу са најновијим праксама приватности и безбедности.
- Као индустрија, направили смо значајан напредак у области приватности и безбедности, подстакнут регулацијама као што је GDPR (Општа уредба о заштити података).
- Међутим, код AI система морамо признати тензију између потребе за више личних података како би системи били персонализованији и ефикаснији – и приватности.
- Каои са рађањем повезаних рачунара са интернетом, такође се бележи велики пораст безбедносних проблема повезаних са AI-јем.
- Истовремено смо видели да се AI употребљава за побољшање безбедности. На пример, већина модерних антивирусних скенера данас користи AI хеуристике.
- Морамо осигурати да наши процеси Data Science хармонично спајају најновије праксе у области приватности и безбедности.
### Транспарентност
Системи вештачке интелигенције треба да буду разумљиви. Кључни део транспарентности је објашњавање понашања система вештачке интелигенције и њихових компоненти. Побољшање разумевања система вештачке интелигенције захтева да заинтересоване стране разумеју како и зашто функционишу, како би могли да идентификују потенцијалне проблеме у перформансама, забринутости у вези са безбедношћу и приватношћу, пристрасности, праксе искључивања или непредвиђене исходе. Такође верујемо да они који користе системе вештачке интелигенције треба да буду искрени и отворени о томе када, зашто и како одлучују да их примене, као и о ограничењима система које користе. На пример, ако банка користи систем вештачке интелигенције за подршку у доношењу одлука о кредитима за потрошаче, важно је испитати исходе и разумети који подаци утичу на препоруке система. Владе почињу да регулишу вештачку интелигенцију у различитим индустријама, па научници за податке и организације морају објаснити да ли систем вештачке интелигенције испуњава регулаторне захтеве, посебно када дође до непожељног исхода.
### Транспарентност
AI системи треба да буду разумљиви. Кључни део транспарентности је објашњавање понашања AI система и њихових компоненти. Побољшање разумевања AI система захтева да заинтересоване стране разумеју како и зашто функционишу тако да могу идентификовати потенцијалне проблеме у перформансама, безбедносне и приватносне забринутости, пристрасности, искључиве праксе или нежељене исходе. Такође верујемо да они који користе AI системе треба да буду искрени и отворени о томе када, зашто и како их бирају да примене. Као и о ограничењима система које користе. На пример, ако банка користи AI систем за подршку у одлучивању о потрошачким кредитима, важно је испитати исходе и разумети који подаци утичу на препоруке система. Владе почињу да регулишу AI у различитим индустријама, па стручњаци за податке и организације морају објаснити да ли AI систем испуњава регулаторне захтеве, посебно када постоји непожељан исход.
> [🎥 Кликните овде за видео: транспарентност увештачкој интелигенцији](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Кликните овде за видео: транспарентност уAI-ју](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Због сложености система вештачке интелигенције, тешко је разумети како они функционишу и интерпретирати резултате.
- Овај недостатак разумевања утиче на начин на који се ти системи управљају, оперативно користе и документују.
- Овај недостатак разумевања, што је још важније, утиче на одлуке донете на основу резултата које ти системи производе.
- Пошто су AI системи веома сложени, тешко је разумети како функционишу и тумачити резултате.
- Овај недостатак разумевања утиче на начин на који се ти системи управљају, оперативно изводе и документују.
- Овај недостаци у разумевању највише утиче на одлуке донете на основу резултата које ти системи производе.
### Одговорност
Људи који дизајнирају и примењују AI системе морају бити одговорни за то како њихови системи функционишу. Потреба за одговорношћу је посебно важна код осетљивих технологија као што је препознавање лица. Недавно, забележена је растућа потражња за технологијом препознавања лица, нарочито од организација за спровођење закона које виде потенцијал технологије за примене као што је проналажење нестале деце. Међутим, те технологије би могле потенцијално бити коришћене од стране владе за угрозу основних слобода грађана, на пример, омогућавајући континуирани надзор одређених појединаца. Стога стручњаци за податке и организације морају бити одговорни за то како њихов AI систем утиче на појединце или друштво.
Људи који дизајнирају и примењују системе вештачке интелигенције морају бити одговорни за начин на који њихови системи функционишу. Потреба за одговорношћу је посебно важна код осетљивих технологија као што је препознавање лица. У последње време, постоји растућа потражња за технологијом препознавања лица, посебно од стране организација за спровођење закона које виде потенцијал технологије у употребама као што је проналажење нестале деце. Међутим, те технологије би потенцијално могле бити коришћене од стране владе да угрозе основне слободе својих грађана, на пример, омогућавањем континуираног надзора одређених појединаца. Зато научници за податке и организације морају бити одговорни за начин на који њихов систем вештачке интелигенције утиче на појединце или друштво.
[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Приступ Microsoft-а одговорној вештачкој интелигенцији")
[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
> 🎥 Кликните на слику изнад за видео: Упозорења о масовном надзору кроз препознавање лица
> 🎥 Кликните на слику горе за видео: Упозорења о масовном надзору преко препознавања лица
На крају, једно од највећих питања за нашу генерацију, као прву генерацију која доноси вештачку интелигенцију у друштво, јесте како осигурати да рачунари остану одговорни људима и како осигурати да људи који дизајнирају рачунаре остану одговорни свима осталима.
На крају, једно од највећих питања за нашу генерацију, као прву генерацију која уводи AI у друштво, јесте како обезбедити да рачунари остану одговорни људима и како обезбедити да људи који дизајнирају рачунаре остану одговорни свима осталима.
## Процена утицаја
Пре него што обучите модел машинског учења, важно је спровести процену утицаја како бисте разум
Погледајте овај радионицу да бисте се дубље упознали са темама:
Пре тренирања модела машинског учења, важно је спровести процену утицаја да бисте разумели сврху AI система; која је намењена употреба; где ће бити премештен; и ко ће комуницирати са системом. Ово је корисно за рецензенте или тестере који оцењују систем да знају које факторе треба узети у обзир при идентификовању потенцијалних ризика и очекиваних последица.
Следећа су подручја фокусирања при извођењу процене утицаја:
* **Негативан утицај на појединце**. Будите свесни било каквих ограничења или захтева, неприкладне употребе или познатих ограничења која коче перформансе система, што је важно да се осигура да систем неће бити употребљен на начин који може нанети штету појединцима.
* **Захтеви за податке**. Разумевање како и где ће систем користити податке омогућава рецензентима да испитају све захтеве за податке о којима треба водити рачуна (нпр., GDPR или HIPAA регулативе о подацима). Такође, проверите да ли су извор или количина података довољни за тренирање.
* **Сажетак утицаја**. Прикупите листу потенцијалних штета које могу настати коришћењем система. Током целог ML животног циклуса прегледајте да ли су идентификовани проблеми ублажени или решени.
* **Примениљиви циљеви** за сваких шест основних принципа. Процените да ли су циљеви сваког од принципа постигнути и да ли постоје било какви недостаци.
## Отклањање грешака уз одговорни AI
Слично као и отклањање грешака у софтверској апликацији, отклањање грешака у AI систему је нужан процес идентификовања и решавања проблема у систему. Постоји много фактора који могу утицати на то да модел не функционише према очекивањима или одговорно. Већина традиционалних метрика перформанси модела су квантитативна агрегатна мера укупних перформанси модела, што није довољно за анализу како модел крши принципе одговорног AI-ја. Штавише, модел машинског учења је црна кутија која отежава разумевање шта покреће његов исход или пружање објашњења када направи грешку. Касније у овом курсу научићемо како користити Одговорни AI контролни панел за помоћ при отклањању грешака у AI системима. Контролни панел пружа холистички алат за стручњаке за податке и AI развојаче да изврше:
* **Анализу грешака**. Да идентификују расподелу грешака у моделу која може утицати на праведност или поузданост система.
* **Преглед модела**. Да открију где постоје разлике у перформансама модела по кохортама података.
* **Анализу података**. Да разумеју расподелу података и идентификују потенцијалну пристрасност која може довести до проблема са праведношћу, инклузивношћу и поузданошћу.
* **Интерпретабилност модела**. Да разумеју шта утиче на предвиђања модела. Ово помаже у објашњењу понашања модела, што је важно за транспарентност и одговорност.
## 🚀 Изазов
Да бисмо спречили увођење штета у првом реду, требало би да:
- имамо разноликост порекла и перспектива међу људима који раде на системима
- улажемо у скупе података које одражавају разноликост нашег друштва
- развијамо боље методе кроз цео животни циклус машинског учења за откривање и исправљање одговорног AI-ја када се појави
Размислите о стварним животним ситуацијама где је непоузданост модела очигледна у изградњи и коришћењу модела. Шта још треба узети у обзир?
## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/)
## Преглед и самостални рад
У овој лекцији сте научили неке основе концепата правичности и неправичности у машинском учењу.
Погледајте овај радионицу да бисте дубље спознали теме:
- У потрази за одговорном вештачком интелигенцијом: Примена принципа у пракси од стране Бесмире Нуши, Мехрнуш Самеки и Амита Шарме
- У потрази за одговорном вештачком интелигенцијом: Преношење принципа у праксу од Бесмире Нуши, Мехрнуш Самеки и Амита Шарме
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Отворени оквир за изградњу одговорне вештачке интелигенције")
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
> 🎥 Кликните на слику изнад за видео: RAI Toolbox: Отворени оквир за изградњу одговорне вештачке интелигенције од стране Бесмире Нуши, Мехрнуш Самеки и Амита Шарме
> 🎥 Кликните на слику изнад за видео: RAI Toolbox: Отворени оквир за изградњу одговорне вештачке интелигенције од Бесмире Нуши, Мехрнуш Самеки и Амита Шарме
Такође, прочитајте:
Такође прочитајте:
- Microsoft-ов центар ресурса за одговорну вештачку интелигенцију: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft-ов центар ресурса за одговорну вештачку интелигенцију: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft-ова истраживачка група FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Microsoft-ова FATE истраживачка група: [FATE: Правичност, одговорност, транспарентност и етика у AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
RAI Toolbox:
RAI Toolbox:
- [Responsible AI Toolbox GitHub репозиторијум](https://github.com/microsoft/responsible-ai-toolbox)
- [GitHub репозиторијум Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
Прочитајте о алатима Azure Machine Learning-а за обезбеђивање правичности:
Прочитајте о алатима Azure Machine Learning за обезбеђивање правичности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Изјава о одрицању одговорности**:
Овај документ је преведен коришћењем услуге за аутоматски превод [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.
## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/)
> ### [Ова лекција је доступна на R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
> ### [Овај час је доступан и у R-у!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Увод
У овим четири лекције, открићете како да направите регресионе моделе. Ускоро ћемо разговарати о томе за шта они служе. Али пре него што било шта урадите, уверите се да имате одговарајуће алате за почетак процеса!
У ова четири часа ћете открити како да градите регресионе моделе. Ускоро ћемо разговарати чему они служе. Али пре него што започнете било шта, уверите се да имате исправне алате спремне за почетак процеса!
У овој лекцији, научићете како да:
У овом часу ћете научити како да:
- Конфигуришете свој рачунар за локалне задатке машинског учења.
- Радите саJupyter нотебуком.
- Радите саЈупитер бележницама.
- Користите Scikit-learn, укључујући инсталацију.
- Истражите линеарну регресију кроз практичну вежбу.
## Инсталације и конфигурације
[](https://youtu.be/-DfeD2k2Kj0 "ML за почетнике - Припремите своје алате за прављење модела машинског учења")
[](https://youtu.be/-DfeD2k2Kj0 "ML за почетнике - Подесите алате спремне за изградњу модела машинског учења")
> 🎥 Кликните на слику изнад за кратак видео о конфигурисању вашег рачунара за ML.
> 🎥 Кликните на слику изнад за кратак видео у коме ћете видети како да конфигуришете рачунар за МЛ.
1. **Инсталирајте Python**. Уверите се да је [Python](https://www.python.org/downloads/) инсталиран на вашем рачунару. Користићете Python за многе задатке у области науке о подацима и машинског учења. Већина рачунарских система већ укључује Python инсталацију. Постоје корисни [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) који олакшавају поставку за неке кориснике.
1. **Инсталирајте Python**. Уверите се да је [Python](https://www.python.org/downloads/) инсталиран на вашем рачунару. Python ћете користити за многе задатке у науци о подацима и машинском учењу. Већина рачунарских система већ има инсталиран Python. Такође постоје корисни [Python кодинг пакети](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) који олакшавају подешавање за неке кориснике.
Међутим, неке употребе Python-а захтевају једну верзију софтвера, док друге захтевају другу верзију. Због тога је корисно радити у [виртуелном окружењу](https://docs.python.org/3/library/venv.html).
Међутим, неке примене Pythona захтевају једну верзију софтвера, док друге користе другу верзију. Због тога је корисно радити у оквиру [виртуелног окружења](https://docs.python.org/3/library/venv.html).
2. **Инсталирајте Visual Studio Code**. Уверите се да је Visual Studio Code инсталиран на вашем рачунару. Пратите ова упутства за [инсталацију Visual Studio Code](https://code.visualstudio.com/) за основну инсталацију. Користићете Python у Visual Studio Code-у током овог курса, па би било добро да се упознате са [конфигурисањем Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) за Python развој.
2. **Инсталирајте Visual Studio Code**. Уверите се да имате Visual Studio Code инсталиран на вашем рачунару. Пратите ове инструкције да бисте [инсталирали Visual Studio Code](https://code.visualstudio.com/) за основну инсталацију. У овом курсу ћете користити Python у Visual Studio Code-у, па можда желите да се упознате са тим како да [конфигуришете Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) за Python развој.
> Упознајте сеса Python-ом кроз ову колекцију [Learn модула](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
> Уживајте у раду са Python-ом тако што ћете прорадити ову збирку [Learn модула](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Подешавање Python-аса Visual Studio Code")
> [](https://youtu.be/yyQM70vi7V8 "Подеси Pythonса Visual Studio Code")
>
> 🎥 Кликните на слику изнад за видео: коришћење Python-а унутар VS Code-а.
> 🎥 Кликните на слику изнад за видео: коришћење Python-а унутар VS Code.
3. **Инсталирајте Scikit-learn**, пратећи [ова упутства](https://scikit-learn.org/stable/install.html). Пошто треба да осигурате да користите Python 3, препоручује се да користите виртуелно окружење. Напомена, ако инсталирате ову библиотеку на M1 Mac-у, постоје посебна упутства на страници изнад.
3. **Инсталирајте Scikit-learn**, пратећи [ове инструкције](https://scikit-learn.org/stable/install.html). Пошто морате да будете сигурни да користите Python 3, препоручује се коришћење виртуелног окружења. Напомена, ако инсталирате ову библиотеку на M1 Mac компјутер, на страници везаном изнад има посебних упутстава.
1. **Инсталирајте Jupyter Notebook**. Биће вам потребно да [инсталирате Jupyter пакет](https://pypi.org/project/jupyter/).
## Ваше окружење за ауторство ML-а
## Ваш ауторски ML окружење
Користићете **нотебуке** за развој вашег Python кода и креирање модела машинског учења. Овај тип датотеке је уобичајен алат за научнике о подацима, и могу се идентификовати по њиховом суфиксу или екстензији `.ipynb`.
Користићете **бележнице** за развој свог Python кода и креирање модела машинског учења. Овај тип фајла је уобичајени алат за научнике података, а може се препознати по наставку или екстензији `.ipynb`.
Нотебуцису интерактивно окружење које омогућава програмеру да и кодира и додаје белешке и пише документацију око кода, што је веома корисно за експерименталне или истраживачке пројекте.
Бележницесу интерактивно окружење које омогућава програмеру да и пише код и додаје белешке и документацију око кода, што је веома корисно за експерименталне или истраживачке пројекте.
[](https://youtu.be/7E-jC8FLA2E "ML за почетнике - Подесите Jupyter Notebooks за почетак прављења регресионе моделе")
[](https://youtu.be/7E-jC8FLA2E "ML за почетнике - Подеси Jupyter бележнице за почетак изградње регресионх модела")
> 🎥 Кликните на слику изнад за кратак видео о овом задатку.
> 🎥 Кликните на слику изнад за кратак видео који води кроз ову вежбу.
### Вежба - рад санотебуком
### Вежба - рад сабележницом
У овом фолдеру, наћи ћете датотеку_notebook.ipynb_.
У овом директоријуму ћете пронаћи фајл_notebook.ipynb_.
1. Отворите _notebook.ipynb_у Visual Studio Code-у.
Jupyter сервер ће се покренути са Python 3+. Наћи ћете области нотебука које могу бити `покренуте`, делове кода. Можете покренути блок кода, тако што ћете изабрати икону која изгледа као дугме за репродукцију.
Јупитер сервер ће се покренути са Python 3+ верзијом. У бележници ћете пронаћи области које се могу `run`-овати, односно комаде кода. Код блок можете покренути тако што ћете изабрати иконицу која изгледа као дугме за репродукцију.
2. Изаберите икону `md` и додајте мало markdown-а, и следећи текст **# Добродошли у ваш нотебук**.
1. Изаберите `md` иконицу и додајте мало markdown-а, са следећим текстом **# Добродошли у вашу бележницу**.
Затим, додајте мало Python кода.
Затим додајте неки Python код.
3. Унесите **print('hello notebook')**у блок кода.
4. Изаберите стрелицу да покренете код.
1. Откуцајте **print('hello notebook')**у блок кода.
1. Изаберите стрелицу да покренете код.
Требало би да видите исписану изјаву:
@ -72,35 +72,36 @@
hello notebook
```


Можете испреплетати свој код са коментарима како бисте сами документовали нотебук.
Код можете пројектирати коментарима како бисте документовали бележницу.
✅ Размислите на тренутак колико јеразличито радно окружење веб програмера у односу на оно научника о подацима.
✅ Размислите на тренутак колико је радно окружење веб програмера различито у односу на окружење научника података.
## Покретање Scikit-learn-а
## Покретање са Scikit-learn-ом
Сада када је Python подешен у вашем локалном окружењу, и када сте се упознали са Jupyter нотебуком, хајде да се једнако упознамо са Scikit-learn-ом (изговара се`sci` као у`science`). Scikit-learn пружа [опсежан API](https://scikit-learn.org/stable/modules/classes.html#api-ref) који вам помаже да обављате задатке машинског учења.
Сада када је Python подешен у вашем локалном окружењу, и када сте удобни са Јупитер бележницама, хајде да се упознамо са Scikit-learn-ом ( изговара се`сај` као у`сајенс`). Scikit-learn пружа [обиман API](https://scikit-learn.org/stable/modules/classes.html#api-ref) који вам помаже да извршавате МЛ задатке.
Према њиховом [сајту](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn јебиблиотека машинског учења отвореног кода која подржава надгледано и ненадгледано учење. Такође пружа разне алате за прилагођавање модела, предобраду података, избор модела и евалуацију, као и многе друге корисне функције."
Према њиховом [сајту](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn јеотворена библиотека за машинско учење која подржава надзирано и ненадзирано учење. Такође пружа различите алате за подешавање модела, претходну обраду података, избор модела и процену, као и многе друге корисне функције."
У овом курсу, користићете Scikit-learn и друге алате за прављење модела машинског учења за обављање онога што називамо 'традиционалним задацима машинског учења'. Намерно смо избегли неуронске мреже и дубоко учење, јерсу боље покривени у нашем предстојећем курикулуму 'AI за почетнике'.
У овом курсу ћете користити Scikit-learn и друге алате за изградњу модела машинског учења за извођење онога што зовемо 'традиционални машински задаци'. Намерно смо избегли неуралне мреже и дубоко учење, јер ће они бити боље покривени у нашем предстојећем курикулуму 'AI за почетнике'.
Scikit-learn олакшава прављење модела и њихову евалуацију за употребу. Првенствено је фокусиран на коришћење нумеричких података и садржи неколико готових скупова података за употребу као алате за учење. Такође укључује унапред направљене моделе које студенти могу испробати. Хајде да истражимо процес учитавања унапред припремљених података и коришћења уграђеног проценитеља за први ML модел са Scikit-learn-ом са неким основним подацима.
Scikit-learn олакшава изградњу модела и њихову процену за коришћење. Првенствено је фокусиран на коришћење нумеричких података и садржи неколико већ припремљених скупова података који се могу користити као алати за учење. Такође укључује и унапред изграђене моделе које студенти могу испробати. Прво ћемо истражити процес учитавања пакованих података и коришћење уграђених естиматора првог МЛ модела са Scikit-learn-ом са основним подацима.
## Вежба - ваш први Scikit-learn нотебук
## Вежба - ваша прва Scikit-learn бележница
> Овај туторијал је инспирисан [примером линеарне регресије](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) на Scikit-learn сајту.
> Овај туторијал је инспирисан [примером линеарне регресије](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) на Scikit-learn веб сајту.
[](https://youtu.be/2xkXL5EUpS0 "ML за почетнике - Ваш први пројекат линеарне регресије у Python-у")
> 🎥 Кликните на слику изнад за кратак видео о овој вежби.
> 🎥 Кликните на слику изнад за кратак видео који вас води кроз ову вежбу.
Удатотеци _notebook.ipynb_ повезаној са овом лекцијом, очистите све ћелије притиском на икону 'канта за смеће'.
Уфајлу _notebook.ipynb_ везаном за овај час очистите све ћелије притиском на икону 'канте за смеће'.
У овом делу, радићете са малим скупом података о дијабетесу који је уграђен у Scikit-learn за потребе учења. Замислите да желите да тестирате третман за пацијенте са дијабетесом. Модели машинског учења могу вам помоћи да одредите који пацијенти би боље реаговали на третман, на основу комбинација променљивих. Чак и веома основни регресиони модел, када се визуализује, може показати информације о променљивим које би вам помогле да организујете своје теоријске клиничке студије.
У овом делу радићете са малим скупом података о дијабетесу који је уграђен у Scikit-learn у сврху учења. Замислите да желите да тестирате терапију за дијабетичаре. Модели машинског учења могу вам помоћи да одредите који пацијенти би боље реаговали на лечење, на основу комбинација променљивих. Чак и веома базичан регресијски модел, када се визуализује, може показати информације о променљивим које би вам помогле да организујете своја теоријска клиничка испитивања.
✅ Постоји много типова метода регресије, и који ћете изабрати зависи од одговора који тражите. Ако желите да предвидите вероватну висину особе одређене старости, користили бисте линеарну регресију, јер тражите **нумеричку вредност**. Ако вас занима да ли одређена врста кухиње треба да се сматра веганском или не, тражите **категоријску доделу**, па бисте користили логистичку регресију. Касније ћете научити више о логистичкој регресији. Размислите мало о неким питањима која можете поставити подацима, и који од ових метода би био прикладнији.
✅ Постоје многе врсте регресионх метода, а коју ћете изабрати зависи од питања на које тражите одговор. Ако желите да предвидите вероватну висину особе одређеног узраста, користили бисте линеарну регресију, јер тражите **нумеричку вредност**. Ако сте заинтересовани да сазнате да ли би врста кухиње требало да се сматра веганском или не, тражите **категоријску припадност**, па бисте користили логистичку регресију. Више ћете научити о логистичкој регресији касније. Размислите мало о питањима која можете поставити подацима и која од ових метода би била примеренија.
from sklearn import datasets, linear_model, model_selection
```
Изнад увозите `matplotlib`, `numpy` и увозите `datasets`, `linear_model` и `model_selection` из `sklearn`. `model_selection`се користи за раздвајање података на сетове за обуку и тестирање.
Изнад увозите `matplotlib`, `numpy` и увозите `datasets`, `linear_model` и `model_selection` из `sklearn`. `model_selection`се користи за подељивање података на тренинг и тест сетове.
### Скуп података о дијабетесу
Уграђени [скуп податакао дијабетесу](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) укључује 442 узорка података о дијабетесу, са 10 променљивих карактеристика, од којих неке укључују:
Уграђени [дијабетес скуп података](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) укључује 442 узорка података о дијабетесу, са 10 променљивих карактеристика, неке од којих су:
- age: старосту годинама
- age: година старости
- bmi: индекс телесне масе
- bp: просечан крвни притисак
- s1 tc: Т-ћелије (врста белих крвних зрнаца)
- bp: просечни крвни притисак
- s1 tc: Тћелије (врста белих крвних зрнаца)
✅ Овај скуп података укључује концепт 'пол' као променљиву карактеристику важну за истраживањео дијабетесу. Многи медицински скупови података укључују ову врсту бинарне класификације. Размислите мало о томе како категоризације попут ове могу искључити одређене делове популације из третмана.
✅ Овај скуп података укључује појам 'пол' као променљиву карактеристику важну за истраживањау вези дијабетеса. Многи медицински скупови података укључују ову врсту бинарне класификације. Размислите мало о томе како такве категоризације могу искључити одређене делове популације из лечења.
Сада, учитајте X и y податке.
Сада учитајте податке X и y.
> 🎓 Запамтите, ово је надгледано учење, и потребан нам је именовани 'y' циљ.
> 🎓 Запамтите, ово је надзирано учење и треба нам именовани 'y' циљ.
У новој ћелији кода, учитајте скуп података о дијабетесу позивајући`load_diabetes()`. Улаз `return_X_y=True` сигнализира да ће `X` бити матрица података, а`y` ће бити циљ регресије.
У новој ћелији кода учитајте дијабетес скуп података позивањем`load_diabetes()`. Улаз `return_X_y=True` сигнализира да ће `X` бити матрица података, а`y` циљ регресије.
1. Додајте неке команде за испис како бисте приказали облик матрице података и њен први елемент:
1. Додајте неке команде штампе да бисте приказали облик матрице података и њен први елемент:
Оно што добијате као одговор јетупл. Оно што радите је да доделите две прве вредности тупла `X` и `y` респективно. Сазнајте више [о тупловима](https://wikipedia.org/wiki/Tuple).
Оно што добијате као одговор јекортеж. Додељујете прве две вредности кортежа `X` и `y` респективно. Сазнајте више [о кортежима](https://wikipedia.org/wiki/Tuple).
Можете видети да ови подаци имају 442 ставке обликоване у низове од 10 елемената:
Можете видети да ови подаци имају 442 ставке у облику низова од 10 елемената:
✅ Размислите мало о односу између података и циљне регресије. Линеарна регресија предвиђа односе између карактеристике X и циљне променљиве y. Можете ли пронаћи [циљ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) за скуп података о дијабетесу у документацији? Шта овај скуп података показује, с обзиром на циљ?
✅ Размислите мало о односу између података и циљне променљиве регресије. Линеарна регресија предвиђа односе између карактеристика X и циљне променљиве y. Можете ли пронаћи [циљ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) за скуп дијабетес података у документацији? Шта овај скуп података демонстрира, с обзиром на тај циљ?
2. Затим, изаберите део овог скупа података за графикон тако што ћете изабрати трећу колону скупа података. Можете то урадити коришћењем оператора `:` за избор свих редова, а затим избором треће колоне користећи индекс (2). Такође можете променити облик података у 2D низ - како је потребно за графикон - коришћењем `reshape(n_rows, n_columns)`. Ако је један од параметара -1, одговарајућа димензија серачуна аутоматски.
2. Затим изаберите део овог скупа података за приказ тако што ћете изабрати 3. колону скупа података. То можете урадити коришћењем оператора `:` да изаберете све редове, па онда изаберите 3. колону индексирану са (2). Такође можете променити облик података у 2Д низ - како је потребно за график - коришћењем `reshape(n_rows, n_columns)`. Ако је један од параметара -1, одговарајућа димензија се аутоматски израчунава.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
✅ Убило ком тренутку, испишите податке да проверите њихов облик.
✅ Усваком тренутку испишите податке да проверите њихов облик.
3. Сада када имате податке спремне за графикон, можете видети да ли машина може помоћи у одређивању логичке поделе између бројева у овом скупу података. Да бисте то урадили, потребно је да поделите и податке (X) и циљ (y) на сетове за тестирање и обуку. Scikit-learn има једноставан начин за то; можете поделити своје тест податке на одређеној тачки.
3. Сада када имате податке спремне за цртање, можете видети да ли машина може помоћи у одређивању логичне поделе између бројева у овом скупу података. Да бисте то урадили, потребно је да поделите и податке (X) и циљ (y) на тест и тренинг скупове података. Scikit-learn има једноставан начин да то уради; можете поделити тест податке у одређеној тачки.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
4. Сада сте спремни да обучите свој модел! Учитајте модел линеарне регресије и обучите гаса својим X и y сетовима за обуку користећи`model.fit()`:
4. Сада сте спремни да обучите свој модел! Учитајте линеарни регресијски модел и обучите гаса svojim X и y тренинг скуповима коришћењем`model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
✅ `model.fit()`је функција коју ћете видети у многим ML библиотекама као што је TensorFlow.
✅ `model.fit()`је функција коју ћете видети у многим МЛ библиотекама као што је TensorFlow
5. Затим, направите предвиђање користећи тест податке, користећи функцију `predict()`. Ово ће се користити за цртање линије између група података.
5. Затим направите предвиђање користећи тест податке, користећи функцију `predict()`. Ово ће се користити за цртање линије између група података
```python
y_pred = model.predict(X_test)
```
6. Сада је време да прикажете податке на графикону. Matplotlib је веома користан алат за овај
✅ Размислите мало о томе шта се овде дешава. Права линија пролази кроз много малих тачака података, али шта она заправо ради? Можете ли видети како би требало да будете у могућности да користите ову линију за предвиђање где би нова, непозната тачка података требало да се уклопи у односу на y осу графикона? Покушајте да речима објасните практичну употребу овог модела.
6. Сада је време да прикажете податке на графикону. Matplotlib је врло користан алат за овај задатак. Направите расути графикон свих тест података X и y, и користите предвиђање да црта линију на најприкладнијем месту, између група података модела.
plt.title('A Graph Plot Showing Diabetes Progression Against BMI')
plt.show()
```

Честитамо, направили сте свој први модел линеарне регресије, креирали предвиђање са њим и приказали га на графикону!
✅ Размислите мало о томе шта се овде дешава. Права линија пролази кроз многе мале тачке података, али шта она тачно ради? Можете ли видети како треба да користите ову линију да предвидите где би нова, непозната тачка података требало да се уклопи у односу на y осу графика? Покушајте да речима изразите практичну употребу овог модела.
Честитамо, направили сте свој први модел линеарне регресије, направили предвиђање уз њега и приказали га на графику!
---
## 🚀Изазов
Прикажите графикон за другу променљиву из овог скупа података. Савет: измените ову линију: `X = X[:,2]`. С обзиром на циљ овог скупа података, шта можете открити о прогресији дијабетеса као болести?
Прикажите другу варијаблу из овог скупа података. Савет: уредите овај ред: `X = X[:,2]`. Узимајући у обзир циљ овог скупа података, шта сте у могућности да сазнате о напретку дијабетеса као болести?
## [Квиз након предавања](https://ff-quizzes.netlify.app/en/ml/)
## Преглед и самостално учење
## Преглед и самосталан рад
У овом туторијалу, радили сте са једноставном линеарном регресијом, а не са униваријантном или мултиваријантном линеарном регресијом. Прочитајте мало о разликама између ових метода или погледајте [овај видео](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
У овом туторијалу радили сте са простом линеарном регресијом, уместо са униваријантном или вишеструком линеарном регресијом. Прочитајте мало о разликама између ових метода, или погледајте [овaj видео](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
Прочитајте више о концепту регресије и размислите о томе каква питања могу бити одговорена овом техником. Узмите [овај туторијал](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) да бисте продубили своје разумевање.
Прочитајте више о концепту регресије и размислите о томе која питања ова техника може да одговори. Пређите овај [туторијал](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) да продубите своје разумевање.
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква неспоразумевања или погрешна тумачења која могу произаћи из коришћења овог превода.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Изјава о одрицању одговорности**:
Овај документ је преведен коришћењем услуге за аутоматски превод [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.
## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/)
> ### [Ова лекција је доступна на R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
> ### [Ова лекција је доступна и у R-у!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Увод
Сада када сте поставили алате који су вам потребни за изградњу модела машинског учења помоћу Scikit-learn, спремни сте да почнете да постављате питања о вашим подацима. Док радите са подацима и примењујете решења машинског учења, веома је важно да знате како да поставите право питање како бисте правилно искористили потенцијале вашег скупа података.
Сада када сте спремни са алатима потребним за почетак прављења модела машинског учења са Scikit-learn, спремни сте да почнете постављати питања у вези са вашим подацима. Како радите са подацима и примените МЛ решења, веома је важно разумети како поставити право питање како бисте правилно откључали потенцијале вашег скупа података.
У овој лекцији ћете научити:
- Како припремити податке за изградњу модела.
- Како припремити податке за прављење модела.
- Како користити Matplotlib за визуализацију података.
- Како користити Seaborn за изражајнију визуализацију података.
## Постављање правог питања о вашим подацима
## Постављање правог питања за ваше податке
Питање које желите да добијете одговор одредиће који тип алгоритама машинског учења ћете користити. Квалитет одговора који добијете у великој мери зависи од природе ваших података.
Питање на које желите да добијете одговор одредиће које врсте МЛ алгоритама ћете користити. А квалитет одговора зависиће у великој мери од природе ваших података.
Погледајте [подаци](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) који су обезбеђени за ову лекцију. Можете отворити овај .csv фајл у VS Code. Брзим прегледом одмах се види да постоје празнине и мешавина стрингова и нумеричких података. Такође постоји необичан стубац под називом 'Package' где су подаци мешавина 'sacks', 'bins' и других вредности. Подаци су, у ствари, прилично неуредни.
Погледајте [подаците](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) за ову лекцију. Можете отворити овај .csv фајл у VS Code. Брзо прелиставање одмах показује да постоје празнине и микс стрингова и нумеричких података. Постоји и чудан колона „Package“ где су подаци мешавина 'врећа', 'каса' и других вредности. Податак је, у ствари, помало неред.
[](https://youtu.be/5qGjczWTrDQ "ML за почетнике - Како анализирати и очистити скуп података")
> 🎥 Кликните на слику изнад за кратак видео о припреми података за ову лекцију.
У ствари, није баш уобичајено добити скуп података који је потпуно спреман за употребу и креирање модела машинског учења одмах. У овој лекцији ћете научити како да припремите сирове податке користећи стандардне Python библиотеке. Такође ћете научити различите технике за визуализацију података.
У ствари, није често да вам буде дато скуп података који је потпуно спреман за коришћење у стварању МЛ модела одмах. У овој лекцији научићете како да припремите сирови скуп података користећи стандардне Python библиотеке. Такође ћете научити различите технике за визуализацију података.
## Студија случаја: 'тржиште бундева'
## Студија случаја: 'тржиште бундеве'
У овом директоријуму ћете пронаћи .csv фајл у корену `data` директоријума под називом [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) који садржи 1757 линија података о тржишту бундева, сортираних по градовима. Ово су сирови подаци извучени из [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) које дистрибуира Министарство пољопривреде Сједињених Америчких Држава.
У овом фолдеру ћете пронаћи .csv фајл у основном `data` фолдеру под називом [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) који укључује 1757 линија података о тржишту бунава, сортираних по градовима. Ово су сирови подаци изведени из [Специјализованих извештаја терминалних тржишта ароматичног воћа и поврћа](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) које дистрибуира Министарство пољопривреде Сједињених Држава.
### Припрема података
Ови подаци суу јавном домену. Могусе преузети у многим одвојеним фајловима, по градовима, са веб сајта USDA. Да бисмо избегли превише одвојених фајлова, спојили смо све податке о градовима у један табеларни документ, тако да смо већ _припремили_ податке мало. Сада, хајде да детаљније погледамо податке.
Ови подаци суу јавном домену. Могусе преузети у многим посебним фајловима по градовима са USDA веб сајта. Да бисмо избегли превише посебних фајлова, конкатеновали смо све податке по градовима у једну табелу, тако да смо већ мало _припремили_ податке. Следеће, хајде да пажљивије погледамо податке.
### Подаци о бундевама - рани закључци
### Податак о бундеви - рани закључци
Шта примећујете о овим подацима? Већ сте видели да постоји мешавина стрингова, бројева, празнина и чудних вредности које треба да разумете.
Шта примећујете у вези са овим подацима? Већ сте видели да постоји мешавина стрингова, бројева, празних поља и чудних вредности које треба разумети.
Које питање можете поставити о овим подацима, користећи технику регресије? Шта кажете на "Предвидите цену бундеве за продају током одређеног месеца". Поново гледајући податке, постоје неке промене које треба да направите да бисте креирали структуру података неопходну за задатак.
Какво питање можете поставити овим подацима користећи регресиону технику? Шта кажете на „Предвидети цену бундеве за продају током одређеног месеца“. Поново гледајући податке, постоје неке промене које требате направити за креирање структуре података неопходне за задатак.
## Вежба - анализирајте податке о бундеви
## Вежба - анализа података о бундевама
Хајде да користимо [Pandas](https://pandas.pydata.org/) (назив значи `Python Data Analysis`), алат врло користан за обликовање података, да анализирамо и припремимо ове податке о бундеви.
Хајде да користимо [Pandas](https://pandas.pydata.org/), (име значи `Python Data Analysis`) алат веома користан за обликовање података, да анализирамо и припремимо ове податке о бундевама.
### Прво, проверите да ли недостају датуми
### Прво, проверите недостајуће датуме
Прво ћете морати да предузмете кораке да проверите недостајуће датуме:
Прво ћете морати предузети кораке да проверите да ли недостају датуми:
1. Конвертујте датуме у формат месеца (ово су амерички датуми, па је формат `MM/DD/YYYY`).
2. Извуците месец у нови стубац.
2. Извуците месец у нову колону.
Отворите _notebook.ipynb_ фајлу Visual Studio Code и увезите табеларни документу нови Pandas dataframe.
Отворите фајл _notebook.ipynb_у Visual Studio Code и увезите табелу у нови Pandas dataframe.
1. Користите функцију `head()` да видите првих пет редова.
1. Користите функцију `head()` да бисте видели првих пет редова.
```python
import pandas as pd
@ -66,15 +66,15 @@
✅ Коју функцију бисте користили да видите последњих пет редова?
1. Проверите да ли постоје недостајући подаци у тренутном dataframe-у:
1. Проверите да ли у тренутном dataframe-у недостају подаци:
```python
pumpkins.isnull().sum()
```
Постоје недостајући подаци, али можда неће бити битни за задатак.
Постоје недостајући подаци, али можда то неће утицати на задатак који треба решити.
1. Да бисте свој dataframe учинили лакшим за рад, изаберите само стубце који су вам потребни, користећи функцију `loc` која из оригиналног dataframe-а извлачи групу редова (прослеђено као први параметар) и стубаца (прослеђено као други параметар). Израз `:`у случају испод значи "сви редови".
1. Да бисте упростили рад са dataframe-ом, изаберите само колоне које су вам потребне, користећи `loc` функцију која извлачи из оригиналног dataframe-а групу редова (први параметар) и колона (други параметар). Израз `:`у овом случају значи „сви редови“.
Размислите како да одредите просечну цену бундеве удатом месецу. Које стубце бисте изабрали за овај задатак? Савет: биће вам потребна 3 стубца.
Размислите како да одредите просечну цену бундеве уодређеном месецу. Које колоне бисте изабрали за овај задатак? Наговештај: потребне су вам 3 колоне.
Решење: узмите просек стубаца `Low Price` и `High Price` да попуните нови стубац Price, и конвертујте стубац Date да приказује само месец. Срећом, према горњој провери, нема недостајућих података за датуме или цене.
Решење: узмите просек колона `Low Price` и `High Price` за нову колону Цена, и конвертујте колону Датум тако да приказује само месец. Срећом, према претходној провери, нема недостајућих података за датуме или цене.
1. Да бисте израчунали просек, додајте следећи код:
@ -96,37 +96,37 @@
```
✅ Слободно испишите било које податке које желите да проверите користећи `print(month)`.
✅ Слободно штампајте податке које желите проверавати користећи `print(month)`.
2. Сада, копирајте своје конвертоване податке у нови Pandas dataframe:
2. Сада копирајте своје конвертоване податке у нови Pandas dataframe:
Исписивање вашег dataframe-а ће вам показати чист, уредан скуп података на којем можете изградити свој нови модел регресије.
Штампањем вашег dataframe-а видећете чист, уређен скуп података на коме можете да креирате нови регресиони модел.
### Али чекајте! Овде има нешто чудно
### Али сачекајте! Има нечега чудног овде
Ако погледате стубац`Package`, бундеве се продају у многим различитим конфигурацијама. Неке се продају у мерама '1 1/9 bushel', неке у '1/2 bushel', неке по бундевама, неке по фунти, а неке у великим кутијама са различитим ширинама.
Ако погледате колону`Package`, бундеве се продају у многим различитим конфигурацијама. Неке се продају у мерама „1 1/9 бушел“, неке у „1/2 бушел“ мерама, неке по бунди, неке по фунти, а неке у великим кутијама различитих ширина.
> Бундеве изгледа веома тешко конзистентно измерити
> Бундеве изгледају веома тешке за доследно мерење
Копајући у оригиналне податке, занимљиво је да све што има `Unit of Sale` једнако 'EACH' или 'PER BIN' такође има тип `Package` по инчу, по бин-у, или 'each'. Бундеве изгледа веома тешко конзистентно измерити, па хајде да их филтрирамо тако што ћемо изабрати само бундеве са стрингом 'bushel' у њиховом стубцу`Package`.
Детаљније гледајући оригиналне податке, занимљиво је да све што има `Unit of Sale` једнако 'EACH' или 'PER BIN' има и тип `Package` по инчу, по каси, или „сваки“. Бундеве делују веома тешке за поновљиво мерење, зато их филтрирајте тако што ћете изабрати само бундеве са стрингом 'bushel' у колони`Package`.
1. Додајте филтер на врху фајла, испод почетног .csv увоза:
1. Додајте филтер на врх фајла, испод увоза .csv датотеке:
Ако сада испишете податке, можете видети да добијате само око 415 редова података који садрже бундеве по бушелу.
Ако сада одштампате податке, видећете да добијате само око 415 редова података који садрже бундеве по бушелу.
### Али чекајте! Постоји још једна ствар коју треба урадити
### Али сачекајте! Још једна ствар је потребна
Да ли сте приметили да се количина бушела разликује по реду? Морате нормализовати цене тако да приказујете цене по бушелу, па урадите мало математике да их стандардизујете.
Да ли сте приметили да се количина бушела разликује по реду? Потребно је нормализовати цене тако да приказујете цену по бушелу, па урадите неке математичке операције да стандардујете то.
1. Додајте ове линије након блока који креира нови dataframe new_pumpkins:
1. Додајте ове линије после блока који креира new_pumpkins dataframe:
✅ Према [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), тежина бушела зависи од врсте производа, јерје то мерење запремине. "Бушел парадајза, на пример, треба да тежи 56 фунти... Листови и зелени производи заузимају више простора са мање тежине, па бушел спанаћа тежи само 20 фунти." Све је прилично компликовано! Хајде да се не замарамо конверзијом бушела у фунте, већ да одредимо цену по бушелу. Све ово проучавање бушела бундева, међутим, показује колико је важно разумети природу ваших података!
✅ Према [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), тежина бушела зависи од врсте производа, јерје то мера запремине. „Бушел парадајза, на пример, треба да тежи 56 фунти... Листови и зелена салата заузимају више простора али мање теже, па бушел спанаћа има само 20 фунти.“ Све је прилично компликовано! Хајде да не мешамо конверзију бушела у фунте, већ да ценимо по бушелу. Све ово проучавање бушела бундеве показује колико је важно разумети природу ваших података!
Сада можете анализирати цене по јединици на основу њихове мере бушела. Ако још једном испишете податке, можете видети како су стандардизовани.
Сада можете анализирати цене по јединици на основу њихове бушел мере. Ако још једном штампате податке, можете видети како је стандардизовано.
✅ Да ли сте приметили да су бундеве које се продају по пола бушела веома скупе? Можете ли схватити зашто? Савет: мале бундеве су много скупље од великих, вероватно зато што их има много више по бушелу, с обзиром на неискоришћени простор који заузима једна велика шупља бундева за питу.
✅ Да ли сте приметили да су бундеве продаване по пола бушела веома скупе? Можете ли претпоставити зашто? Наговештај: мале бундеве су много скупље од великих, вероватно зато што их има много више у бушелу, с обзиром на неискоришћени простор који заузима једна велика шупља колачасто обликована бундева.
## Стратегије визуализације
Део улоге научника података је да демонстрира квалитет и природу података са којима ради. Да би то урадили, често креирају занимљиве визуализације, или графиконе, дијаграме и табеле, који приказују различите аспекте података. На овај начин могу визуелно приказати односе и празнине које је иначе тешко открити.
Део улоге научника података је да демонстрира квалитет и природу података са којима ради. Да би то урадили, често праве занимљиве визуализације, односно графиконе, графикe и дијаграме, који приказују различите аспекте података. На овај начин, могу визуелно показати односе и празнине које су иначе тешко уочљиве.
[](https://youtu.be/SbUkxH6IJo0 "ML за почетнике - Како визуализовати податке помоћу Matplotlib")
> 🎥 Кликните на слику изнад за кратак видео о визуализацији података за ову лекцију.
Визуализације такође могу помоћи у одређивању технике машинског учења која је најприкладнија за податке. Распршени графикон који изгледа као да прати линију, на пример, указује на то да су подаци добар кандидат за вежбу линеарне регресије.
Визуализације такође могу помоћи у одређивању технике машинског учења која је најприкладнија за податке. Сцаттерплот (прераспршивање тачака) који изгледа као да прати линију, на пример, указује на то да су подаци добри кандидати за линеарну регресију.
Једна библиотека за визуализацију података која добро функционише у Jupyter нотебоок-овимаје [Matplotlib](https://matplotlib.org/) (коју сте такође видели у претходној лекцији).
Једна библиотека за визуализацију података која добро ради у Jupyter Notebook-ује [Matplotlib](https://matplotlib.org/) (коју сте видели и у претходној лекцији).
> Стекните више искуства са визуализацијом података у [овим туторијалима](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Вежба - експериментисањеса Matplotlib
## Вежба - експериментишитеса Matplotlib
Покушајте да креирате неке основне графиконе за приказ новог dataframe-а који сте управо креирали. Шта би показао основни графикон линија?
Покушајте направити основне графиконе да бисте приказали нови dataframe који сте управо креирали. Шта би основни линијски график показао?
1. Увезите Matplotlib на врху фајла, испод увоза Pandas:
1. Увозите Matplotlib на врху фајла, испод увоза Pandas:
```python
import matplotlib.pyplot as plt
```
1. Поново покрените цео нотебоок да освежите.
1. На дну нотебоок-а, додајте ћелију за приказ података као кутију:
1. Поново покрените цео notebook да га освежите.
1. На дну notebook-а додајте ћелију која приказује податке као box plot:
```python
price = new_pumpkins.Price
@ -174,44 +174,121 @@
plt.show()
```


Да ли је ово користан графикон? Да ли вас нешто изненађује?
Да ли је ово користан графикон? Да ли вас нешто на њему изненађује?
Није нарочито користан јер само приказује ваше податке као распон тачака у датом месецу.
Није посебно користан јер све што ради је да приказује ваше податке као распршене тачке по месецу.
### Учинимо га корисним
Да би графикони приказивали корисне податке, обично је потребно груписати податке на неки начин. Хајде да покушамо да креирамо графикон где оса y приказује месеце, а подаци показују расподелу података.
Да бисте приказали корисне податке, обично требате некако груписати податке. Покушајмо направити графикон где y оса показује месеце, а подаци показују расподелу података.
1. Додајте ћелију за креирање груписаног стубичастог графикона:
1. Додајте ћелију за креирање груписаног bar филтрираног графикона:


Ово је кориснија визуализација података! Изгледа да највиша цена за бундеве пада у септембру и октобру. Да ли вам ово одговара? Зашто или зашто не?
## Вежба - експериментишите са Seaborn
Matplotlib је моћан, али може захтевати много кода да би се направио леп графикон. [Seaborn](https://seaborn.pydata.org/) је библиотека направљена _на врху_ Matplotlib-а која је дизајнирана за статистичку визуализацију података. Ради директно са Pandas dataframe-овима, примењује атрактивне подразумеване стилове и омогућава вам да направите информативне графиконе уз много мање кода. Пошто Seaborn враћа Matplotlib објекте, и даље можете користити све што већ знате о Matplotlib за прецизно подешавање резултата.
> Ако још нисте инсталирали Seaborn, инсталирајте га командом `pip install seaborn`.
1. Увозите Seaborn на врху notebook-а, испод осталих увоза. Конвенциониално се увози као `sns`:
```python
import seaborn as sns
```
### Сцаттерплотови за показивање односа
Велики део истраживања података пре прављења модела је тражење _односа_ између променљивих. [Сцаттерплот](https://en.wikipedia.org/wiki/Scatter_plot) је један од најбољих алата за то: ако тачке изгледају као да прате линију, могуће је да две променљиве кореспондирају, што је добар знак да линеарни регресион модели могу радити.
1. Поново направите price-to-month scatter plot од раније, овог пута користећи Seaborn-ову [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (релациони график), који ради директно са колонама вашег dataframe-а:

Ови подаци су прилично шумни, па линијски график није најјаснији избор овде — али приказује колико је лако променити тип графикона у Seaborn-у.
### Бар графикони за показивање расподела
Раније сте ручно груписали податке да бисте направили график са ступцима користећи Matplotlib. Seaborn-ов [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (катарички график) може урадити груписање и агрегирање за вас. По подразумеваној вредности, `kind="bar"` приказује просек сваке категорије уз црну линију која означава интервал поверења.
1. Направите график са ступцима за просечну цену по месецу:

Ово потврђује оно што сте видели са Matplotlib-ом — цене достижу врхунац око септембра и октобра — али Seaborn такође визуализује колико се цена _разликује_у оквиру сваког месеца.
### Heatmaps за приказ корелација
Распршени графикони упоређују по две променљиве у једном тренутку. Када имате неколико нумеричких колона, [heatmap](https://en.wikipedia.org/wiki/Heat_map) вам омогућава да видите јачину везе између _сваког_ пара колона одједном. Ово је уобичајен начин да се уочи које су карактеристике највише корелиране пре избора шта ћете унети у модел (исти тип графика се касније користи за приказ матрица конфузије у класификацији).
1. Направите матрицу корелације уз помоћ Pandas-а, затим је нацртајте користећи Seaborn-ов [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Опција `annot=True` исписује вредности корелације у сваком пољу:

Вредности близу `1` (или `-1`) значе да су колоне снажно _лнијарно_ корелиране. Обратите пажњу како су`Low Price` и `High Price` скоро савршено корелирани. Са друге стране, `Month` показује само слаб линеарни однос са ценом — иако јегоре приказани график са ступцима открио јасан сезонски врхунац у септембру и октобру. Тоје важна лекција: коефицијент корелације мери само _праволинијске_ односе, па може пропустити сезонске или друге нелинеарне обрасце. ✅ Зашто је корисно погледати како heatmap *такође* и графиконе као што је график са ступцима пре него што одлучите које колоне ћете користити?
### Matplotlib или Seaborn?
Вредни су за познавање оба:
- **Matplotlib** вам даје прецизну контролу над сваким елементом графика и представља основу на којој се граде готово све остале библиотеке за цртање у Питону.
- **Seaborn** пружа функције вишег нивоа и атрактивне подразумеване вредности за статистичке графиконе, ради директно са пандас dataframe-има, и често је бржи за експлоративну анализу података.
Ово је кориснија визуализација података! Чини се да указује на то да је највиша цена бундева у септембру и октобру. Да ли то одговара вашим очекивањима? Зашто или зашто не?
Уобичајени радни ток је да прво користите Seaborn да брзо истражите податке, а затим пређете на Matplotlib када треба да прилагодите детаље.
---
## 🚀Изазов
Истражите различите типове визуализација које Matplotlib нуди. Који типови су најприкладнији за проблеме регресије?
Истражите различите типове визуализације које нуде Matplotlib и Seaborn. Који су типови најприкладнији за проблеме регресије?
## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/)
## [Квиз након предавања](https://ff-quizzes.netlify.app/en/ml/)
## Преглед и самостално учење
## Преглед и самостални рад
Погледајте многе начине за визуализацију података. Направите списак различитих библиотека које су доступне и забележите које су најбоље за одређене типове задатака, на пример 2D визуализације у односу на 3D визуализације. Шта откривате?
Погледајте различите начине визуализације података. Направите листу разних доступних библиотека и забележите које су најбоље за одређене типове задатака, на пример 2Д визуализације у односу на 3Д визуализације. Шта сте открили?
## Задатак
## Задаци
[Истраживање визуализације](assignment.md)
---
**Одрицање од одговорности**:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Изјава о одрицању одговорности**:
Овај документ је преведен коришћењем услуге за аутоматски превод [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.
"[Seaborn](https://seaborn.pydata.org/) је заснован на Matplotlib-у и ради директно са датафрејмовима, омогућавајући брзо прављење атрактивних статистичких графикона уз врло мало кода.\n"
"\n---\n\n**Одрицање од одговорности**: \nОвај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Изјава о одрицању одговорности**:\nОвај документ је преведен коришћењем услуге за аутоматски превод [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"

> Скица од [Tomomi Imura](https://www.twitter.com/girlie_mac)

> Скицнот од [Томоми Имура](https://www.twitter.com/girlie_mac)
Учење појачањем укључује три важна концепта: агента, нека стања и скуп акција за свако стање. Извршавањем акције у одређеном стању, агент добија награду. Замислите поново компјутерску игру Супер Марио. Ви сте Марио, налазите се на нивоу игре, стојите поред ивице литице. Изнад вас је новчић. Ви сте Марио, на нивоу игре, на одређеној позицији ... то је ваше стање. Померање један корак удесно (акција) одвешће вас преко ивице, што би вам донело низак нумерички резултат. Међутим, притиском на дугме за скок добили бисте поен и остали бисте живи. Тоје позитиван исход и требало би да вам донесе позитиван нумерички резултат.
Учење појачавањем укључује три важна појма: агент, неке стања, и скуп акција по сваком стању. Извршавањем акције у одређеном стању, агент добија награду. Опет замислите видео игру Супер Марио. Ви сте Марио, налазите се на нивоу игре, стојите поред ивице литице. Изнад вас је новчић. Ви као Марио, на нивоу игре, у одређеној позицији ... то је ваше стање. Померање корака удесно (акција) ће вас одвести преко ивице, што би вам дало низак бројчани резултат. Међутим, притискање дугмета за скок омогућило би вам да освојите поен и останете живи. Тоје позитиван исход и треба да вам додели позитиван бројчани резултат.
Коришћењем учења појачањем и симулатора (игре), можете научити како да играте игру како бисте максимизовали награду, што јеу овом случају преживљавање и освајање што више поена.
Коришћењем учења појачавањем и симулатора (игре), можете научити како да играте игру да максимализујете награду, што је останак жив и освајање што више поена.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 Кликните на слику изнад да чујете Дмитрија како говори о учењу појачањем
> 🎥 Кликните на слику изнад да бисте чули Дмитрија како говори о учењу појачавањем
## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/)
У овој лекцији ћемо експериментисати са кодом у Пајтону. Требало би да будете у могућности да покренете код из Јупитер бележнице из ове лекције, било на вашем рачунару или негде у облаку.
У овој лекцији ћемо експериментисати санеким кодом у Пајтону. Требало би да будете у могућности да покренете код из Јупитер бележнице из ове лекције, било на свом рачунару или негде у облаку.
Можете отворити [бележницу лекције](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) и пратити ову лекцију како бисте је изградили.
Можете отворити [бележницу лекције](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) и проћи кроз ову лекцију да бисте изградили.
> **Напомена:** Ако отварате овај код из облака, такође треба да преузмете датотеку [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), којасе користи у коду бележнице. Додајте јеу исти директоријум као и бележницу.
> **Напомена:** Ако отварате овај код из облака, такође морате преузети фајл [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), који се користи у коду бележнице. Додајте гау исти директоријум као бележницу.
## Увод
У овој лекцији истражићемо свет **[Петра и вука](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, инспирисан музичком бајком руског композитора [Сергеја Прокофјева](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Користићемо **учење појачањем** како бисмо омогућили Петру да истражује своје окружење, сакупља укусне јабуке и избегава сусрет са вуком.
У овој лекцији истражићемо свет **[Петер и Вук](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, инспирисан музичком бајком руског композитора, [Сергеја Прокофјева](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Користићемо **учење појачавањем** да омогућимо Петеру да истражује своје окружење, сакупља укусне јабуке и избегава сусрет са вуком.
**Учење појачањем** (RL) је техника учења која нам омогућава да научимо оптимално понашање **агента** у неком **окружењу** извођењем многих експеримената. Агент у овом окружењу треба да има неки **циљ**, дефинисан **функцијом награде**.
**Учење појачавањем** (RL) је техника учења која нам омогућава да научимо оптимално понашање **агента** у неком **окружењу** извођењем многих експеримената. Агент у овом окружењу треба да има неки **циљ**, дефинисан кроз **функцију награде**.
## Окружење
Ради једноставности, замислимо Петров свет као квадратну таблу величине`ширина` x `висина`, овако:
Ради једноставности, погледајмо Петеров свет као квадратну таблу димензија`ширина` x `висина`, овако:
* **тло**, по коме Петар и друга створења могу ходати.
* **земља**, по којој Петер и друга створења могу ходати.
* **вода**, по којој очигледно не можете ходати.
* **дрво** или **трава**, место где можете одморити.
* **јабука**, која представља нешто што би Петар радо пронашао како би се нахранио.
* **јабука**, која представља нешто што би Петер био срећан да нађе да би се нахранио.
* **вук**, који је опасан и треба га избегавати.
Постоји посебан Пајтон модул, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), који садржи код за рад са овим окружењем. Пошто овај код није важан за разумевање наших концепата, увешћемо модул и користити га за креирање узорка табле (блок кода 1):
Постоји одвојени Пајтон модул, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), који садржи код за рад са овим окружењем. Пошто овај код није битан за разумевање наших концепата, увезћемо модул и користити га за прављење пример табле (код блок 1):
```python
from rlboard import *
@ -52,15 +52,15 @@ m.randomize(seed=13)
m.plot()
```
Овај код би требало да испише слику окружења сличну оној изнад.
Овај код би требао да испише слику окружења сличну оној горе.
## Акције и политика
У нашем примеру, Петров циљ би био да пронађе јабуку, избегавајући вука и друге препреке. Да би то урадио, он може суштински ходати док не пронађе јабуку.
У нашем примеру, Петеров циљ би био да пронађе јабуку, избегавајући вука и друге препреке. Да би то урадио, он у суштини може да шета док не пронађе јабуку.
Дакле, на било којој позицији, он може изабрати једну од следећих акција: горе, доле, лево и десно.
Стога, на било којој позицији, он може да бира између следећих акција: горе, доле, лево и десно.
Дефинисаћемо те акције као речник и мапирати их на парове одговарајућих промена координата. На пример, померање удесно (`R`) одговарало би пару `(1,0)`. (блок кода 2):
Ове акције дефинисаћемо као речник и мапирати их на парове одговарајућих промена координата. На пример, кретање удесно (`R`) одговара пару `(1,0)`. (код блок 2):
@ -69,46 +69,46 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
Да резимирамо, стратегија и циљ овог сценарија су следећи:
- **Стратегија** нашег агента (Петра) дефинисана је такозваном **политиком**. Политика је функција која враћа акцију у било ком датом стању. У нашем случају, стање проблема представља табла, укључујући тренутну позицију играча.
- **Стратегија**, нашег агента (Петера) дефинише се као такозвана **политика**. Политика је функција која враћа акцију у сваком датом стању. У нашем случају, стање проблема представља табла, укључујући тренутну позицију играча.
- **Циљ** учења појачањем је да на крају научимо добру политику која ће нам омогућити да ефикасно решимо проблем. Међутим, као основну линију, размотримо најједноставнију политику звану **случајно ходање**.
- **Циљ**, учења појачавањем је коначно научити добру политику која ће нам омогућити да проблем решимо ефикасно. Међутим, као полазну основу, размотримо најједноставнију политику названу **случајна шетња**.
## Случајно ходање
## Случајна шетња
Прво ћемо решити наш проблем имплементацијом стратегије случајног ходања. Са случајним ходањем, насумично ћемо бирати следећу акцију из дозвољених акција, док не стигнемо до јабуке (блок кода 3).
Прво ћемо решити наш проблем имплементирањем стратегије случајне шетње. Са случајном шетњом, насумично ћемо бирати следећу акцију из дозвољених акција, све док не стигнемо до јабуке (код блок 3).
1. Имплементирајте случајно ходање помоћу кода испод:
1. Имплементирајте случајну шетњу са следећим кодом:
```python
def random_policy(m):
return random.choice(list(actions))
def walk(m,policy,start_position=None):
n = 0 # number of steps
# set initial position
n = 0 # број корака
# постави почетну позицију
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
return n # success!
return n # успех!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
return -1 # eaten by wolf or drowned
return -1 # поједен од вука или се удавио
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
m.move(a) # do the actual move
m.move(a) # изврши стварни потез
break
n+=1
walk(m,random_policy)
```
Позив функције `walk` треба да врати дужину одговарајуће путање, која може варирати од једног покретања до другог.
Позив функције `walk` треба да врати дужину одговарајућег пута, која може да варира између покретања.
1. Покрените експеримент ходања више пута (рецимо, 100) и испишите резултујућу статистику (блок кода 4):
1. Покрените експеримент шетње више пута (рецимо 100) и одштампајте резултујућу статистику (код блок 4):
```python
def print_statistics(policy):
@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
Приметите да је просечна дужина путање око 30-40 корака, што је прилично много, с обзиром на то да је просечна удаљеност до најближе јабуке око 5-6 корака.
Имајте у виду да је просечна дужина пута око 30-40 корака, што је прилично много, с обзиром на чињеницу да је просечна удаљеност до најближе јабуке око 5-6 корака.
Такође можете видети како изгледа Петрово кретање током случајног ходања:
Такође можете видети како изгледа Петерово кретање током случајне шетње:
Да бисмо нашу политику учинили интелигентнијом, морамо разумети који потези су "бољи" од других. Да бисмо то урадили, морамо дефинисати наш циљ.
Да бисмо нашу политику учинили интелигентнијом, морамо разумети којесу акције "боље" од других. Да бисмо то урадили, морамо дефинисати наш циљ.
Циљ се може дефинисати усмислу**функције награде**, која ће враћати неку вредност резултата за свако стање. Што јеброј већи, то је боља функција награде. (блок кода 5)
Циљ се може дефинисати утерминима**функције награде**, која ће враћати неку вредност резултата за сваки статус. Што јеброј већи, то је функција награде боља. (код блок 5)
```python
move_reward = -0.1
@ -154,41 +154,115 @@ def reward(m,pos=None):
return move_reward
```
Интересантна ствар код функција награде је да у већини случајева *добијамо значајну награду тек на крају игре*. То значи да наш алгоритам треба некако да запамти "добре" кораке који воде до позитивне награде на крају и повећа њихов значај. Слично томе, сви потези који воде до лоших резултата треба да буду обесхрабрени.
Интересантна ствар код функција награде је да у већини случајева *награда нам се додељује тек на крају игре*. То значи да наш алгоритам треба на неки начин да запамти "добре" кораке који воде до позитивне награде на крају и повећа њихов значај. Слично томе, све акције које доводе до лоших резултата требало би да буду неохрабриване.
## Q-учење
Алгоритам који ћемо овде размотрити зове се**Q-учење**. У овом алгоритму, политика је дефинисана функцијом (или структуром података) која се зове**Q-табела**. Она бележи "квалитет" сваке од акција у датом стању.
Алгоритам који ћемо овде размотрити зове се**Q-учење**. У овом алгоритму, политика се дефинише кроз функцију (или структуру података) звану**Q-табела**. Она бележи "квалитет" сваке од акција у датом стању.
Зове се Q-табела јерје често згодно представити је као табелу или вишедимензионални низ. Пошто наша табла има димензије `ширина` x `висина`, можемо представити Q-табелу користећи numpy низ облика`ширина` x `висина` x `len(actions)`: (блок кода 6)
Зове се Q-табела јерје често практично представити је као табелу или више-димензионални низ. Пошто наша табла има димензије `ширина` x `висина`, можемо представити Q-табелу користећи numpy низ са обликом`ширина` x `висина` x `len(actions)`: (код блок 6)
Приметите да иницијализујемо све вредности Q-табеле једнаком вредношћу, у нашем случају - 0.25. Ово одговара политици "случајног ходања", јерсу сви потези у сваком стању подједнако добри. Можемо проследити Q-табелу функцији `plot` како бисмо визуализовали табелу на табли: `m.plot(Q)`.
Приметите да иницијализујемо све вредности Q-табеле са истом вредношћу, у нашем случају - 0.25. То одговара политици случајне шетње, јерсу све акције у сваком стању подједнако добре. Можемо проследити Q-табелу функцији `plot` како бисмо визуелизовали табелу на табли: `m.plot(Q)`.
У центру сваке ћелије налази се "стрелица" која указује на пожељан правац кретања. Пошто су сви правци једнаки, приказује се тачка.
У центру сваке ћелије налази се "стрелица" која указује на преферирани смер кретања. Пошто су сви смерови једнаки, приказује се тачка.
Сада треба да покренемо симулацију, истражимо наше окружење и научимо бољу расподелу вредности Q-табеле, што ће нам омогућити да много брже пронађемо пут до јабуке.
Сада треба да покренемо симулацију, истражимо наше окружење и научимо бољу дистрибуцију вредности у Q-табели, која ће нам омогућити да много брже пронађемо пут до јабуке.
## Суштина Q-учења: Белманова једначина
Када почнемо да се крећемо, свака акција ће имати одговарајућу награду, тј. теоретски можемо изабрати следећу акцију на основу највише непосредне награде. Међутим, у већини стања, потез неће постићи наш циљ достизања јабуке, и стога не можемо одмах одлучити који је правац бољи.
Када почнемо са кретањем, свака акција ће имати одговарајућу награду, тј. можемо теоретски изабрати следећу акцију на основу највеће тренутне награде. Међутим, у већини стања, тај потез неће довести до нашег циља да стигнемо до јабуке, па не можемо одмах одлучити који је смер бољи.
> Запамтите да није битан непосредан резултат, већ коначни резултат, који ћемо добити на крају симулације.
> Имајте на уму да није битан непосредни резултат, већ коначни резултат који ћемо добити на крају симулације.
Да бисмо узели у обзир ову одложену награду, морамо користити принципе **[динамичког програмирања](https://en.wikipedia.org/wiki/Dynamic_programming)**, који нам омогућавају да размишљамо о проблему рекурзивно.
Да бисмо узели у обзир ову одложену награду, морамо применити принципе **[динамичког програмирања](https://en.wikipedia.org/wiki/Dynamic_programming)**, који нам омогућавају да размишљамо о проблему рекурзивно.
Претпоставимо да се сада налазимоу стању *s*, и желимо да пређемо у следеће стање *s'*. Тиме ћемо добити непосредну награду *r(s,a)*, дефинисану функцијом награде, плус неку будућу награду. Ако претпоставимо да наша Q-табела тачно одражава "атрактивност" сваке акције, онда ћемо у стању *s'* изабрати акцију *a* која одговара максималној вредности *Q(s',a')*. Тако ће најбоља могућа будућа награда коју бисмо могли добити у стању *s* бити дефинисана као `max`*Q(s',a')* (максимум се овде рачуна преко свих могућих акција *a'*у стању *s'*).
Претпоставимо да смо садау стању *s*, и желимо да пређемо у следеће стање *s'*. То извршењем добијамо непосредну награду *r(s,a)*, дефинисану функцијом награде, плус неку будућу награду. Ако претпоставимо да наша Q-табела исправно одражава "атрактивност" сваке акције, онда ћемо у стању *s'* изабрати акцију *a* која одговара максималној вредности *Q(s',a')*. Дакле, најбоља могућа будућа награда коју можемо добити у стању *s* биће дефинисана као `max`<sub>a'</sub>*Q(s',a')* (максимум се овде рачуна преко свих могућих акција *a'*у стању *s'*).
Ово нам даје **Белманову формулу** за израчунавање вредности Q-табеле у стању *s*, за дату акцију *a*:
Ово даје **Белманову формулу** за израчунавање вредности Q-табеле у стању *s*, за дате акције *a*:
Овде јеγ такозвани **фактор дисконта** који одређује у којој мери треба више да цените текућу награду у односу на будућу и обрнуто.
## Алгоритам учења
Имајући горњу једначину, сада можемо написати псеудо-код за наш алгоритам учења:
* Иницијализуј Q-табелу Q са једнаким вредностима за сва стања и акције
* Постави стопу учења α ← 1
* Понови симулацију више пута
1. Почни са насумичном позицијом
1. Понови
1. Изабери акцију *a*у стању *s*
2. Изврши акцију тако што ћеш прећи у ново стање *s'*
3. Ако дође до краја игре или је укупан резултат преслаб - изађи из симулације
4. Израчунај награду *r*у новом стању
5. Ажурирај Q-функцију према Белмановој једначини: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ max<sub>a'</sub>Q(s',a'))*
6. *s* ← *s'*
7. Ажурирај укупан резултат и смањи α.
## Експлоатација против експлорације
Угоре описаном алгоритму нисмо прецизирали како тачно изабрати акцију у кораку 2.1. Ако насумично бирамо акцију, насумично ћемо **истраживати** окружење, и прилично је вероватно да ћемо често погинути и истражити делове где иначе не бисмо ишли. Алтернативни приступ био би да **искористимо** вредности из Q-табеле које већ познајемо, и да изаберемо најбољу акцију (са већом Q-вредношћу) у стању *s*. Међутим, то ће спречити истраживање других стања и вероватно нећемо пронаћи оптимално решење.
Стога, најбољи приступ је пронаћи равнотежу између истраживања и експлоатације. Ово се може урадити тако што ћемо изабрати акцију у стању *s*са вероватноћама пропорционалним вредностима у Q-табели. На почетку, када су све вредности Q-табеле исте, то одговара насумичном избору, али како учимо више о нашем окружењу, вероватније ћемо пратити оптималну руту, док ћемо истовремено понекад агенту дозвољавати да одабере неистражени пут.
## Пајтон имплементација
Сада смо спремни да имплементирамо алгоритам учења. Пре тога, такође нам треба функција која ће претворити произвољне бројеве из Q-табеле у низ вероватноћа за одговарајуће акције.
1. Креирајте функцију `probs()`:
```python
def probs(v,eps=1e-4):
v = v-v.min()+eps
v = v/v.sum()
return v
```
Додајемо мало `eps` оригиналном вектору да бисмо избегли дељење са 0 у почетном случају када су све компоненте вектора идентичне.
Покрените алгоритам учења кроз 5000 експеримената, познатих и као **епохе**: (код блок 8)
```python
for epoch in range(5000):
# Изаберите почетну тачку
m.random_start()
# Почните путовање
n=0
cum_reward = 0
while True:
x,y = m.human
v = probs(Q[x,y])
a = random.choices(list(actions),weights=v)[0]
dpos = actions[a]
m.move(dpos,check_correctness=False) # дозвољавамо играчу да се креће ван табле, што завршава епизоду
Након извршавања овог алгоритма, Q-табела би требало да буде ажурирана вредностима које дефинишу атрактивност различитих акција у сваком кораку. Можемо покушати да визуелизујемо Q-табелу тако што ћемо нацртати вектор у свакој ћелији који ће показивати жељени смер кретања. Ради једноставности, цртамо мали круг уместо пикселе стрелице.
Пошто Q-табела приказује "атрактивност" сваке акције у сваком стању, прилично је једноставно користити је за дефинисање ефикасне навигације у нашем свету. У најједноставнијем случају, можемо изабрати акцију која одговара највишој вредности у Q-табели: (код блок 9)
Пошто Q-табела садржи "атрактивност" сваке акције у сваком стању, прилично је једноставно користити је за дефинисање ефикасне навигације у нашем свету. У најједноставнијем случају, можемо изабрати акцију која одговара највећој вредности у Q-табели: (код блок 9)
```python
def qpolicy_strict(m):
@ -200,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
> Ако пробате код изнад неколико пута, можда ћете приметити да понекад "заглави", и мораћете да притиснете дугме STOP у бележници да бисте га прекинули. Ово се дешава јер могу постојати ситуације када два стања "упућују" једно на друго у смислу оптималне Q-вредности, у ком случају агент завршава тако што се бесконачно креће између тих стања.
> Ако покушате горе наведени код више пута, можда ћете приметити да понекад „закључа“, и морате да притиснете дугме СТОП у бележници да бисте га прекинули. Тосе дешава јер могу постојати ситуације када две стања „упућују“ једно на друго у смислу оптималне Q-вредности, у којима случај агент непрестано креће између тих стања.
## 🚀Изазов
> **Задатак 1:** Измените функцију `walk`да ограничите максималну дужину пута на одређени број корака (рецимо, 100), и посматрајте како код изнад враћа ову вредност с времена на време.
> **Задатак 1:** Измените функцију `walk`тако да ограничи максималну дужину путање на одређени број корака (на пример, 100), и посматрајте код горе како повремено враћа ову вредност.
> **Задатак 2:** Измените функцију `walk` тако да се не враћа на места на којима је већ био. Ово ће спречити `walk` да уђе у петљу, али агент и даље може завршити "заробљен" на локацији са које не може побећи.
> **Задатак 2:** Измените функцију `walk` тако да се не враћа на места где је већ био раније. Ово ће спречити да функција `walk` улази у петљу, међутим, агент и даље може да се „зароби“ на локацији из које не може да побегне.
## Навигација
Боља политика навигације била би она коју смо користили током тренинга, која комбинује експлоатацију и истраживање. У овој политици, изабраћемо сваку акцијуса одређеном вероватноћом, пропорционално вредностима у Q-табели. Ова стратегија може и даље довести до тога да се агент врати на позицију коју је већ истражио, али, као што можете видети из кода испод, резултира веома кратком просечном дужином пута до жељене локације (сетите се да `print_statistics` покреће симулацију 100 пута): (код блок 10)
Боља навигациона политика би била она коју смо користили током тренирања, која комбинује експлоатацију и истраживање. У овој политици бирамо сваки поступакса одређеном вероватноћом, пропорционалном вредностима у Q-табели. Ова стратегија и даље може довести до тога да агент враћа назад на позицију коју је већ истражио, али, као што видите из кода испод, резултира веома кратком просечном дужином пута до жељене локације (имајте на уму да `print_statistics` покреће симулацију 100 пута): (код блок 10)
```python
def qpolicy(m):
@ -222,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
Након покретања овог кода, требало би да добијете много мању просечну дужину пута него раније, у распону од 3-6.
Након извршења овог кода, требало би да добијете знатно мању просечну дужину пута од раније, у распону од 3-6.
## Испитивање процеса учења
## Истраживање процеса учења
Као што смо поменули, процес учења је равнотежа између истраживања и експлоатације стеченог знања о структури простора проблема. Видели смо да су резултати учења (способност да помогне агенту да пронађе кратак пут до циља) побољшани, али такође је занимљиво посматрати како се просечна дужина пута понаша током процеса учења:
Као што смо поменули, процес учења је баланс између истраживања и експлоатације стеченог знања о структури простора проблема. Видели смо да су резултати учења (способност да се агенту помогне да пронађе кратак пут до циља) побољшани, али је такође занимљиво посматрати како се просечна дужина путања понаша током процеса учења:
- **Просечна дужина пута се повећава**. Оно што овде видимо је да се на почетку просечна дужина пута повећава. Ово је вероватно због чињенице да када ништа не знамо о окружењу, вероватно ћемо се заглавити у лошим стањима, води или код вука. Како више учимо и почнемо да користимо то знање, можемо дуже истраживати окружење, али још увек не знамо добро где се налазе јабуке.
- **Просечна дужина пута расте**. Оно што овде видимо јесте да у почетку просечна дужина пута опада. Веројатно је то због тога што, када не знамо ништа о окружењу, вероватно ћемо најчешће завршити заробљени у лошим стањима, води или код вука. Како учимо и почнемо да користимо ово знање, можемо дужи период истраживати окружење, али још увек не знамо врло добро где су јабуке.
- **Дужина пута се смањује како више учимо**. Када довољно научимо, постаје лакше агенту да постигне циљ, и дужина пута почиње да се смањује. Међутим, још увек смо отворени за истраживање, па често одступамо од најбољег пута и истражујемо нове опције, чинећи пут дужим од оптималног.
- **Дужина пута се смањује како учимо**. Када довољно научимо, агентијеј постаје лакше да достигне циљ, и дужина пута почиње да се скраћује. Међутим, још увек смо отворени за истраживање, па често одступамо од најбољег пута и истражујемо нове могућности, чинећи пут дуже од оптималног.
- **Дужина се нагло повећава**. Оно што такође примећујемо на овом графику је да сеу једном тренутку дужина нагло повећала. Ово указује на стохастичку природу процеса, и да у једном тренутку можемо "покварити" коефицијенте у Q-табели тако што их препишемо новим вредностима. Ово би идеално требало минимизирати смањењем стопе учења (на пример, пред крај тренинга, вредности у Q-табели прилагођавамо само малим износом).
- **Дужина нагло расте**. Такође примећујемо на овом графикону да јеу неком тренутку дужина нагло порасла. Ово указује на стохастичку природу процеса и на то да у неком тренутку можемо „покварити“ коефицијенте у Q-табели преписивањем новим вредностима. Ово би идеално требало минимизовати смањењем стопе учења (на пример, ка крају тренирања, вредности у Q-табели прилагођавамо само за малу вредност).
Уопштено, важно је запамтити да успех и квалитет процеса учења значајно зависе од параметара, као што су стопа учења, опадање стопе учења и фактор дисконтовања. Ови параметри се често називају**хиперпараметри**, како би се разликовали од **параметара**, које оптимизујемо током тренинга (на пример, коефицијенти у Q-табели). Процес проналажења најбољих вредности хиперпараметара назива се**оптимизација хиперпараметара**, и заслужује посебну тему.
У целини, важно је запамтити да успех и квалитет процеса учења значајно зависе од параметара као што су стопа учења, смањење стопе учења и фактор дисконта. Ови се често зову**хиперпараметри**, како би се разликовали од **параметара**, које оптимизујемо током тренирања (на пример, коефицијенти у Q-табели). Процес проналажења најбољих вредности хиперпараметара назива се**оптимизација хиперпараметара**, и заслужује посебну тему.
## [Квиз након предавања](https://ff-quizzes.netlify.app/en/ml/)
## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/)
## Задатак
[Реалнији свет](assignment.md)
---
**Одрицање од одговорности**:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Изјава о одрицању одговорности**:
Овај документ је преведен коришћењем услуге за аутоматски превод [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.
# Постскриптум: Отклањање грешака у моделима машинског учења помоћу компоненти одговорног AI контролне табле
## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/)
# Поштскриптум: Дебаговање модела у машинском учењу уз коришћење компоненти одговорног AI контролног панела
## [Претест пред предавање](https://ff-quizzes.netlify.app/en/ml/)
## Увод
Машинско учење утиче на наше свакодневне животе. Вештачка интелигенција (AI) налази своје местоу неким од најважнијих система који утичу на нас као појединце и на наше друштво, од здравства, финансија, образовања до запошљавања. На пример, системи и модели се користе у задацима доношења одлука, као што су дијагнозе у здравству или откривање превара. Као последица тога, напредак у AI, заједно са убрзаним усвајањем, праћен је еволуирајућим друштвеним очекивањима и све већом регулацијом. Често видимо области у којима AI системи не испуњавају очекивања; откривају нове изазове; а владе почињу да регулишу AI решења. Због тога је важно да се ови модели анализирају како би се обезбедили правични, поуздани, инклузивни, транспарентни и одговорни резултати за све.
Машинско учење утиче на наше свакодневне животе. AI налази применуу неким од најважнијих система који утичу на нас као појединце као и на наше друштво, од здравства, финансија, образовања до запошљавања. На пример, системи и модели учествују у свакодневним задацима доношења одлука, као што су здравствене дијагнозе или откривање преваре. Последично, напреци у AI-у заједно са убрзаном применом сусрећу сеса еволуирајућим друштвеним очекивањима и растућом регулативом као одговором. Константно видимо области где AI системи настављају да не испуњавају очекивања; они откривају нове изазове; и владе почињу да регулишу AI решења. Стога је важно да се ти модели анализирају како би обезбедили праведне, поуздане, инклузивне, транспарентне и одговорне резултате за све.
У овом курикулуму ћемо истражити практичне алате који се могу користити за процену да ли модел има проблеме са одговорним AI. Традиционалне технике отклањања грешака у машинском учењу обично се заснивају на квантитативним прорачунима као што су агрегирана тачност или просечан губитак грешке. Замислите шта се може догодити када подаци које користите за изградњу ових модела недостају одређеним демографским групама, као што сураса, пол, политички став, религија, или су непропорционално заступљени. Шта ако се излаз модела тумачи тако да фаворизује неку демографску групу? Ово може довести до претеране или недовољне заступљености ових осетљивих група карактеристика, што резултира проблемима правичности, инклузивности или поузданости модела. Још један фактор јето што се модели машинског учења често сматрају "црним кутијама", што отежава разумевање и објашњење шта покреће предвиђања модела. Сви ови изазови суса којима се суочавају научници података и AI програмери када немају адекватне алате за отклањање грешака и процену правичности или поузданости модела.
У овом курикулуму,погледаћемо практичне алате који се могу користити да се процени да ли модел има проблеме са одговорним AI-ом. Традиционалне технике дебаговања машинског учења обично су засноване на квантитативним прорачунима као што су агрегирана тачност или просечни губитак грешке. Замислите шта се може десити када подаци које користите за изградњу ових модела немају одређене демографске податке, као што сураса, пол, политички став, религија, или непропорционално представљају те демографије. Шта ако се излаз модела тумачи тако да фаворизује неку демографију? То може увести пре или потцењену репрезентацију ових осетљивих група карактеристика и резултирати проблемима правичности, инклузивности или поузданости модела. Још један фактор једа се модели машинског учења сматрају црним кутијама, што отежава разумевање и објашњење шта покреће предикцију модела. Све ово су изазови са којима се сусрећу научници за податке и AI програмери када немају адекватне алате за дебаговање и процену правичности или поверења у модел.
У овој лекцији ћете научити како да отклањате грешке у својим моделима користећи:
У овој лекцији научићете како да дебагујете своје моделе користећи:
-**Анализу грешака**: идентификацију делова у расподели података где модел има високе стопе грешака.
-**Преглед модела**: спровођење компаративне анализе између различитих кохорти података како би се откриле разлике у метрикама перформанси модела.
-**Анализу података**: истраживање где може постојати претерана или недовољна заступљеност података која може искривити модел да фаворизује једну демографску групуу односу на другу.
-**Важност карактеристика**: разумевање које карактеристике покрећу предвиђања вашег модела на глобалном или локалном нивоу.
-**Анализа грешака**: идентификовати где у дистрибуцији ваших података модел има високе стопе грешака.
-**Преглед модела**: извршити упоредну анализу различитих података како би се откриле разлике у вашим метрикама перформанси модела.
-**Анализа података**: истражити где може бити пре или потцењена репрезентација ваших података која може искривити модел да фаворизује једну демографијуу односу на другу.
-**Важност карактеристика**: разумети које карактеристике утичу на предикције вашег модела на глобалном или локалном нивоу.
## Предуслов
## Предуслови
Као предуслов, молимо вас да прегледате [алате за одговорни AI за програмере](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
Као предуслов, молимо вас да прегледате [Responsible AI алате за програмере](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
> 
> 
## Анализа грешака
Традиционалне метрике перформанси модела које се користе за мерење тачности углавном су прорачуни засновани на исправним и неисправним предвиђањима. На пример, утврђивање да је модел тачан 89% времена са губитком грешке од 0.001 може се сматрати добрим перформансама. Међутим, грешке често нису равномерно распоређене у вашем основном скупу података. Можете добити резултат тачности модела од 89%, али открити да постоје различити региони ваших података у којима модел греши 42% времена. Последице ових образаца грешака у одређеним групама података могу довести до проблема правичности или поузданости. Важно је разумети области у којима модел добро ради или не. Региони података где постоји велики број нетачности у вашем моделу могу сеиспоставити као важна демографска група података.
Традиционалне мере перформанси модела које се користе за мерење тачности углавном се заснивају на прорачунима заснованим на тачним и нетачним предикцијама. На пример, утврђивање да је модел тачан 89% времена са губитком грешке од 0.001 може се сматрати добрим перформансама. Грешке често нису равномерно распоређене у вашем базном скупу података. Можете добити оцену тачности модела 89%, али открити да постоје различите регије у вашим подацима где модел пада у 42% случајева. Последица ових образаца неуспеха у одређеним групама података може довести до проблема са правичношћу или поузданошћу. Важно је разумети области у којима модел добро функционише или не. Подручја података где постоји велики број нетачности у вашем моделу могу сепоказати као важна демографска категорија.


Компонента Анализа грешака на RAI контролној табли илуструје како су грешке модела распоређене кроз различите кохорте помоћу визуализације стабла. Ово је корисно за идентификовање карактеристика или области где постоји висока стопа грешака у вашем скупу података. Гледајући где долази већина нетачности модела, можете почети да истражујете основни узрок. Такође можете креирати кохорте података за спровођење анализе. Ове кохорте података помажу у процесу отклањања грешака како би се утврдило зашто је перформанса модела добра у једној кохорти, али погрешна у другој.
Компонента Анализа грешака на RAI контролном панелу илуструје како је неуспех модела распоређен кроз различите подгрупе помоћу визуализације стабла. Ово је корисно за идентификовање карактеристика или области где је стопа грешке висока у вашим подацима. Погледом где долази до највише нетачности у моделу, можете почети да истражујете корен узрока. Такође можете креирати подгрупе података за извођење анализе. Ове подгрупе података помажу у процесу дебаговања да се утврди зашто је перформанса модела добра у једној подгрупи, али погрешна у другој.
Визуелни индикатори на мапи стабла помажу у бржем лоцирању проблематичних области. На пример, тамнија нијанса црвене бојечвора стабла указује на већу стопу грешака.
Визуелни индикатори на мапи стабла помажу у бржем лоцирању проблематичних области. На пример, што јетамнија нијанса црвене бојена чвору стабла, то је стопа грешке већа.
Топлотна мапа је још једна функционалност визуализације коју корисници могу користити за истраживање стопе грешака користећи једну или две карактеристике како би пронашли узрок грешака модела у целом скупу података или кохортама.
Топлотна мапа је још једна функција визуализације коју корисници могу користити за истраживање стопе грешака користећи једну или две карактеристике како би пронашли узрочник грешака модела у целом скупу података или подгрупама.
* Добијете дубоко разумевање како су грешке модела распоређене у скупу података и кроз више улазних и димензија карактеристика.
* Разложите агрегатне метрике перформанси како бисте аутоматски открили погрешне кохорте и информисали своје циљане кораке за ублажавање.
* Добијете дубоко разумевање како су грешке модела распоређене преко скупа података и кроз више улазних и карактеристичних димензија.
* Разложите агрегиране метрике перформанси да бисте аутоматски открили погрешне подгрупе и информисали о усмереним корацима за ублажавање.
## Преглед модела
Евалуација перформанси модела машинског учења захтева добијање свеобухватног разумевања његовог понашања. Ово се може постићи прегледом више од једне метрике, као што су стопа грешке, тачност, опозив, прецизност или MAE (просечна апсолутна грешка), како би се пронашле разлике међу метрикама перформанси. Једна метрика перформанси може изгледати одлично, али нетачности могу бити откривене у другој метрици. Поред тога, упоређивање метрика ради откривања разлика у целом скупу података или кохортама помаже у осветљавању области где модел добро ради или не. Ово је посебно важно за уочавање перформанси модела међу осетљивим и неосетљивим карактеристикама (нпр. раса пацијента, пол или старост) како би се открила потенцијална неправичност модела. На пример, откривање да је модел више погрешан у кохорти која има осетљиве карактеристике може указати на потенцијалну неправичност модела.
Евалуација перформанси модела машинског учења захтева добијање холистичког разумевања његовог понашања. Тосе може постићи прегледом више метрика као што су стопа грешке, тачност, повраћај, прецизност или MAE (просечна апсолутна грешка) како би се пронашле разлике у метрикама перформанси. Једна метрика перформанси може изгледати одлично, али нетачности се могу открити у другој метрици. Поред тога, поређење метрика ради откривања разлика кроз цео скуп података или подгрупе помаже да се осветли где модел добро функционише, а где не. Ово је посебно важно када се посматра учинак модела међу осетљивим у односу на неосетљиве карактеристике (нпр. раса пацијента, пол или старост) како би се откриле потенцијалне неправде које модел може имати. На пример, откривање да је модел више нетачан у подгрупи са осетљивим карактеристикама може указати на потенцијалну неправду модела.
Компонента Преглед модела на RAI контролној табли помаже не само у анализи метрика перформанси репрезентације података у кохорти, већ корисницима пружа могућност да упореде понашање модела у различитим кохортама.
Компонента Преглед модела на RAI контролном панелу помаже не само у анализи метрика перформанси представљених у датој подгрупи, већ пружа корисницима могућност да упореде понашање модела кроз различите подгрупе.


Функционалност анализе засноване на карактеристикама компоненте омогућава корисницима да сузе подгрупе података унутар одређене карактеристике како би идентификовали аномалије на грануларном нивоу. На пример, контролна табла има уграђену интелигенцију за аутоматско генерисање кохорти за кориснички изабрану карактеристику (нпр. *"time_in_hospital < 3"* или *"time_in_hospital >= 7"*). Ово омогућава кориснику да изолује одређену карактеристику из веће групе података како би видео да ли је она кључни утицајни фактор на погрешне исходе модела.
Функционалност анализе засноване на карактеристикама омогућава корисницима да сузе подгрупе података у оквиру одређене карактеристике како би идентификовали аномалије на детаљном нивоу. На пример, контролни панел има уграђену интелигенцију за аутоматско креирање подгрупа за карактеристику коју корисник одабере (нпр. *"time_in_hospital < 3"* или *"time_in_hospital >= 7"*). Ово омогућава кориснику да издвоји одређену карактеристику из већег скупа података да би видео да ли она кључно утиче на погрешне резултате модела.


Компонента Преглед модела подржава две класе метрика разлика:
**Разликеу перформансама модела**: Ови скупови метрика израчунавају разлику у вредностима изабране метрике перформанси између подгрупа података. Ево неколико примера:
**Разликау перформансама модела**: Ове метрике рачунају разлику (диспропорцију) у вредностима одабране метрике перформанси кроз подгрупе података. Ево неколико примера:
* Разлика у стопи тачности
* Разлика у стопи грешке
* Разлика у прецизности
* Разлика уопозиву
* Разлика у повраћају
* Разлика у просечној апсолутној грешци (MAE)
**Разликеу стопи селекције**: Ова метрика садржи разлику у стопи селекције (пожељно предвиђање) међу подгрупама. Пример овогаје разлика у стопама одобрења кредита. Стопа селекције означава фракцију тачака података у свакој класи класификованих као 1 (у бинарној класификацији) или расподелу вредности предвиђања (у регресији).
**Разликау стопи избора**: Ова метрика садржи разлику у стопи избора (повољна предикција) међу подгрупама. Пример овог је разлика у стопама одобрења кредита. Стопа избора значи део података у свакој класи означених као 1 (у бинарној класификацији) или распоред вредности предикције (у регресији).
## Анализа података
> "Ако довољно мучите податке, они ће признати било шта" - Роналд Коуз
> "Ако дуго мучите податке, она ће признати све шта желите" - Роналд Коуз
Ова изјава звучи екстремно, али јеистина да се подаци могу манипулисати како би подржали било који закључак. Таква манипулација понекад може бити ненамерна. Као људи, сви имамо пристрасности, и често је тешко свесно знати када уносите пристрасност у податке. Обезбеђивање правичности у AI и машинском учењу остаје сложен изазов.
Ова изјава звучи екстремно, али истинаје да се подаци могу манипулисати да подрже било који закључак. Такав начин манипулације се понекад дешава ненамјерно. Као људи, сви имамо предрасуде, и често је тешко свесно знати када уводите пристрасност у податке. Гарантовање правичности у AI-у и машинском учењу остаје компликован изазов.
Подаци су велика слепа тачка за традиционалне метрике перформанси модела. Можете имати високе резултате тачности, али то не одражава увек основну пристрасност података која може постојатиу вашем скупу података. На пример, ако скуп података запослених има 27% жена на извршним позицијама у компанији и 73% мушкараца на истом нивоу, модел за оглашавање послова обучен на овим подацима може углавном циљати мушку публику за позиције на вишем нивоу. Ова неравнотежа у подацима искривила је предвиђање модела да фаворизује један пол. Ово открива проблем правичности где постоји родна пристрасност у AI моделу.
Подаци су велики слепи угао традиционалних метрика перформанси модела. Можете имати високе оцене тачности, али то не одражава увек унутрашњу пристрасносту вашем скупу података. На пример, ако скуп података запослених има 27% жена на руководећим позицијама у компанији и 73% мушкараца на истом нивоу, AI модел за оглашавање послова обучен на тим подацима могао би циљати претежно мушку публику за високе пословне позиције. Ова неуравнотеженост у подацима изкривила је предикцију модела да фаворизује један пол. Ово открива проблем правичности где постоји родна пристрасност у AI моделу.
Компонента Анализа података на RAI контролној табли помаже у идентификовању области где постоји претерана или недовољна заступљеност у скупу података. Она помаже корисницима да дијагностикују основни узрок грешака и проблема правичности који су уведени због неравнотеже података или недостатка репрезентације одређене групе података. Ово корисницима пружа могућност да визуализују скупове података на основу предвиђених и стварних исхода, група грешака и специфичних карактеристика. Понекад откривање недовољно заступљене групе података такође може открити да модел не учи добро, што доводи до високих нетачности. Модел који има пристрасносту подацима није само проблем правичности већ показује да модел није инклузиван или поуздан.
Компонента Анализа података на RAI контролном панелу помаже да се идентификују области где постоји пре и потцењена репрезентација у скупу података. Помоћу ње корисници могу дијагностиковати корен узрока грешака и проблема правичности насталих од неуравнотежености података или недостатка репрезентације одређене групе података. Ово даје корисницима могућност да визуелизују скупове података на основу предвиђених и стварних исхода, група грешака и одређених карактеристика. Понекад откривање потцењене групе података може такође показати да модел не учи добро, па самим тим има високу нетачност. Имате ли модел са пристрасношћуу подацима није само проблем правичности већ показује да модел није инклузиван ни поуздан.


Користите анализу података када треба да:
* Истражите статистику вашег скупа података одабиром различитих филтера за сегментирање података у различите димензије (познате и као кохорте).
* Разумете расподелу вашег скупа података кроз различите кохорте и групе карактеристика.
* Утврдите да ли су ваша открића у вези са правичношћу, анализом грешака и узрочношћу (изведена из других компоненти контролне табле) резултат расподеле вашег скупа података.
* Одлучите у којим областима треба прикупити више података како бисте ублажили грешке које произилазе из проблема репрезентације, буке у ознакама, буке у карактеристикама, пристрасности у ознакама и сличних фактора.
Користите анализу података када вам је потребно да:
## Интерпретабилност модела
* Истражите статистике вашег скупа података бирајући различите филтере да податке поделите у различите димензије (познате као подгрупе).
* Разумете расподелу вашег скупа података кроз различите подгрупе и групе карактеристика.
* Одредите да ли ваша сазнања о правичности, анализи грешака и узрочности (изведена из других компоненти контролног панела) произилазе из расподеле вашег скупа података.
* Одлучите у којим областима да прикупљате више података како бисте ублажили грешке које потичу од проблема са репрезентацијом, буком ознака, буком карактеристика, пристрасношћу у ознакама и сличним факторима.
Модели машинског учења често се сматрају "црним кутијама". Разумевање које кључне карактеристике података покрећу предвиђање модела може бити изазовно. Важно је пружити транспарентност у вези са тим зашто модел доноси одређено предвиђање. На пример, ако AI систем предвиђа да је пацијент са дијабетесом у ризику од поновног пријема у болницу у року од мање од 30 дана, требало би да буде у стању да пружи податке који подржавају његово предвиђање. Имање података који подржавају предвиђање доноси транспарентност која помаже клиничарима или болницама да доносе добро информисане одлуке. Поред тога, могућност објашњења зашто је модел донео предвиђање за појединачног пацијента омогућава одговорност у складу са здравственим прописима. Када користите моделе машинског учења на начине који утичу на животе људи, кључно је разумети и објаснити шта утиче на понашање модела. Интерпретабилност и објашњивост модела помажу у одговарању на питања у сценаријима као што су:
## Интерпретирање модела
* Отклањање грешака у моделу: Зашто је мој модел направио ову грешку? Како могу побољшати свој модел?
* Сарадња човека и AI: Како могу разумети и веровати одлукама модела?
* Регулаторна усклађеност: Да ли мој модел задовољава законске захтеве?
Модели машинског учења обично су црне кутије. Разумевање које кључне карактеристике података покрећу претпоставку модела може бити изазов. Важно је обезбедити транспарентност у вези са разлозима због којих модел даје одређену предикцију. На пример, ако AI систем предвиђа да је дијабетични пацијент у ризику да буде поново примљен у болницу за мање од 30 дана, треба да буде у стању да пружи пратни податак који је довео до те предикције. Имање индикатора који подржавају податке доноси транспарентност која помаже клиничарима или болницама да донесу добро информисане одлуке. Поред тога, могућност да се објасни зашто је модел направио предикцију за појединачног пацијента омогућава одговорност у складу са здравственим прописима. Када користите моделе машинског учења на начине који утичу на животе људи, кључно је разумети и објаснити шта утиче на понашање модела. Објашњивост и интерпретабилност модела помаже у одговору на питања у сценаријима као што су:
Компонента Важност карактеристика на RAI контролној табли помаже вам да отклоните грешке и стекнете свеобухватно разумевање како модел доноси предвиђања. Такође је користан алат за професионалце у машинском учењу и доносиоце одлука да објасне и покажу доказе о карактеристикама које утичу на понашање модела ради регулаторне усклађености. Корисници могу истраживати и глобална и локална објашњења како би потврдили које карактеристике покрећу предвиђања модела. Глобална објашњења наводе најважније карактеристике које су утицале на укуп
- **Превелика или премала заступљеност**. Идеја је да одређена група није заступљена у одређеној професији, а свака услуга или функција која наставља да промовише то доприноси штети.
* Дебаговање модела: Зашто је мој модел направио ову грешку? Како могу побољшати модел?
* Сарадња човека и AI: Како да разумем и верујем одлукама модела?
* Усклађеност са прописима: Да ли мој модел испуњава законске захтеве?
### Azure RAI контролна табла
Компонента Важност карактеристика на RAI контролном панелу помаже у дебаговању и добијању комплетног разумевања како модел доноси предикције. Такође је користан алат за професионалце машинског учења и доносиоце одлука да објасне и покажу доказе о карактеристикама које утичу на понашање модела ради усклађености са прописима. Корисници могу истражити како глобална тако и локална објашњења да би потврдили које карактеристике покрећу предикцију модела. Глобална објашњења наводе главне карактеристике које су утицале на укупну предикцију модела. Локална објашњења приказују које карактеристике су довеле до предикције модела за појединачни случај. Могућност евалуације локалних објашњења такође је корисна при дебаговању или ревизији одређеног случаја да боље разумете и протумачите зашто је модел направио прецизну или непоуздану предикцију.
[Azure RAI контролна табла](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) је изграђена на алатима отвореног кода које су развиле водеће академске институције и организације, укључујући Microsoft, и представљају кључне алате за научнике који се баве подацима и AI програмере да боље разумеју понашање модела, открију и ублаже непожељне проблеме у AI моделима.

- Сазнајте како да користите различите компоненте тако што ћете погледати [документацију RAI контролне табле.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
* Глобална објашњења: На пример, које карактеристике утичу на укупно понашање модела за поновни пријем пацијєнта са дијабетесом у болницу?
* Локална објашњења: На пример, зашто је пацијент са дијабетесом старији од 60 година са претходним пријемима прогнозирано да ће бити поновно примљен или не у року од 30 дана у болницу?
- Погледајте неке [примере нотебука RAI контролне табле](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) за отклањање проблема у сценаријима одговорног AI у Azure Machine Learning.
У процесу дебаговања испитивања перформанси модела кроз различите подгрупе, Важност карактеристика показује колико утицај има одређена карактеристика унутар подгрупа. Помоћу ње се откривају аномалије поређењем нивоа утицаја који карактеристика има у покретању погрешних предикција модела. Компонента Важност карактеристика може приказати које вредности карактеристике позитивно или негативно утичу на исход модела. На пример, ако је модел направио нетачну предикцију, компонента вам пружа могућност да продрете дубље и прецизно утврдите које карактеристике или вредности карактеристика су довеле до предикције. Овај ниво детаља помаже не само при дебаговању већ пружа транспарентност и одговорност у ревизијским ситуацијама. Коначно, компонента може помоћи у идентификовању проблема правичности. Да илуструјемо, ако осетљива карактеристика као што је етничка припадност или пол има велики утицај на предикцију модела, то може бити знак расне или родне пристрасности у моделу.
Користите интерпретабилност када вам је потребно да:
* Одредите колико су поуздане предикције вашег AI система разумевањем које су карактеристике најважније за предикције.
* Приступите дебаговању модела тако што прво разумете модел и идентификујете да ли користи здраве карактеристике или само лажне корелације.
* Откријете потенцијалне изворе неправедности разумевањем да ли модел базира предикције на осетљивим карактеристикама или на карактеристикама високо корелираним са њима.
* Изградите поверење корисника у одлуке вашег модела генеришући локална објашњења која илуструју њихове исходе.
* Завршите регулаторску ревизију AI система како бисте валидирали моделе и пратили утицај одлука модела на људе.
Да бисмо спречили увођење статистичких или податковних пристрасности, требало би:
## Закључак
- имати разноврсност у позадинама и перспективама међу људима који раде на системима
- улагати у скупове података који одражавају разноврсност нашег друштва
- развијати боље методе за откривање и исправљање пристрасности када се она појави
Све компоненте RAI контролног панела су практични алати који вам помажу да изградите моделе машинског учења који су мање штетни и поузданији за друштво. Побољшавају превенцију претњи људским правима; дискриминацију или искључивање одређених група из животних прилика; и ризик од физичке или психолошке повреде. Такође помажу изградњи поверења у одлуке вашег модела генеришући локална објашњења која илуструју њихове исходе. Неке од потенцијалних штета могу се класификовати као:
Размислите о стварним животним сценаријима где је неправедност очигледна у изградњи и коришћењу модела. Шта још треба узети у обзир?
- **Додела**, ако је, на пример, пол или етничка припадност фаворизована у односу на другу.
- **Квалитет услуге**. Ако тренирате податке за један конкретан сценарио, а стварност је знатно сложенија, то доводи до лоше перформансе услуге.
- **Стереотипизација**. Повезивање дате групе са унапред додељеним карактеристикама.
## [Квиз након предавања](https://ff-quizzes.netlify.app/en/ml/)
## Преглед и самостално учење
- **Омаловажавање**. Несправедливо критиковање и означавање нечега или некога.
- **Прекомерна или недовољна заступљеност**. Идеја да се одређена група не види у одређеној професији, и свака услуга или функција која наставља да то промовише доприноси штети.
### Azure RAI контролна табла
[Azure RAI контролна табла](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) је изграђена на алатима отвореног кода које су развиле водеће академске институције и организације, укључујући Microsoft, и од кључног су значаја за научнике података и развојне програмере вештачке интелигенције да боље разумеју понашање модела, открију и ублаже непожељне проблеме у AI моделима.
- Научите како да користите различите компоненте тако што ћете погледати документацију за RAI контролну таблу. [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
- Погледајте неке примерке RAI контролне табле у облику ноутбукова за отклањање грешака у одговорнијим AI сценаријима у Azure Machine Learning.
---
## 🚀 Изазов
Да бисмо спречили увођење статистичких или податочних предрасуда од почетка, требало би да:
У овом часу сте научили неке практичне алате за укључивање одговорног AI у машинско учење.
- имамо разноликост позадина и перспектива међу људима који раде на системима
- улажемо у скупове података који одражавају разноликост нашег друштва
- развијамо боље методе за откривање и исправљање предрасуда када се појаве
Погледајте овај радионицу за дубље разумевање тема:
Размислите о стварним сценаријима где је неправда очигледна у изградњи и коришћењу модела. Шта још треба да узмемо у обзир?
- Одговорна AI контролна табла: Централно место за оперативну примену RAI у пракси, од Besmira Nushi и Mehrnoosh Sameki
## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/)
## Преглед и самостална студија
У овој лекцији сте научили неке од практичних алата за укључивање одговорне AI у машинско учење.
[](https://www.youtube.com/watch?v=f1oaDNl3djg "Одговорна AI контролна табла: Централно место за оперативну примену RAI у пракси")
Погледајте овај радионицу да бисте дубље ушли у теме:
- Responsible AI Dashboard: Једно место за оперативно коришћење RAI у пракси, од Бесмире Нуши и Мехрнуш Самеки
> 🎥 Кликните на слику изнад за видео: Одговорна AI контролна табла: Централно место за оперативну примену RAI у пракси, од Besmira Nushi и Mehrnoosh Sameki
[](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice")
Реферишите следеће материјале да бисте сазнали више о одговорном AI и како изградити поузданије моделе:
> 🎥 Кликните на слику изнад за видео: Responsible AI Dashboard: Једно место за оперативно коришћење RAI у пракси од Бесмире Нуши и Мехрнуш Самеки
Позовите се на следеће материјале за више информација о одговорној AI и како градити поузданије моделе:
- Microsoft-ови алати RAI контролне табле за отклањање проблема у ML моделима: [Ресурси алата за одговорни AI](https://aka.ms/rai-dashboard)
- Microsoft-ови алати RAI контролне табле за отклањање грешака у ML моделима: [Responsible AI tools resources](https://aka.ms/rai-dashboard)
- Истражите алатке за одговорни AI: [Github](https://github.com/microsoft/responsible-ai-toolbox)
- Истражите Responsible AI скуп алата: [Github](https://github.com/microsoft/responsible-ai-toolbox)
- Microsoft-ов центар ресурса за RAI: [Ресурси за одговорни AI– Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft-ов ресурсни центар за RAI: [Responsible AI Resources– Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft-ова истраживачка група FATE: [FATE: Праведност, Одговорност, Транспарентност и Етика у AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Microsoft-ова FATE истраживачка група: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
## Задатак
@ -145,5 +173,7 @@
---
**Одрицање од одговорности**:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Изјава о одрицању одговорности**:
Овај документ је преведен коришћењем услуге за аутоматски превод [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.