[my,uk,lt] chore(i18n): sync translations

Sync translations with latest source changes.
Languages: Burmese (Myanmar) [my], Ukrainian [uk], Lithuanian [lt]
update-translations
localizeflow[bot] 1 month ago
parent a782bfbc81
commit 771a67467b

@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "lt"
},
"catplot.e73fc35fdf96242b.webp": {
"original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
"translation_date": "2026-07-14T01:35:52+00:00",
"source_file": "2-Regression/2-Data/images/catplot.png",
"language_code": "lt"
},
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T17:03:13+00:00",
@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "lt"
},
"heatmap.bd98dce43b404c57.webp": {
"original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
"translation_date": "2026-07-14T01:36:07+00:00",
"source_file": "2-Regression/2-Data/images/heatmap.png",
"language_code": "lt"
},
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T17:02:54+00:00",
@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "lt"
},
"lineplot.f9034ba47b1e30ee.webp": {
"original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
"translation_date": "2026-07-14T01:36:19+00:00",
"source_file": "2-Regression/2-Data/images/lineplot.png",
"language_code": "lt"
},
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T17:00:09+00:00",
@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "lt"
},
"relplot.a03837d8f0329cec.webp": {
"original_hash": "4733544cb1c2e58e987087283e66b4a5",
"translation_date": "2026-07-14T01:35:58+00:00",
"source_file": "2-Regression/2-Data/images/relplot.png",
"language_code": "lt"
},
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T17:14:45+00:00",

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "my"
},
"catplot.e73fc35fdf96242b.webp": {
"original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
"translation_date": "2026-07-14T01:35:50+00:00",
"source_file": "2-Regression/2-Data/images/catplot.png",
"language_code": "my"
},
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T17:03:05+00:00",
@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "my"
},
"heatmap.bd98dce43b404c57.webp": {
"original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
"translation_date": "2026-07-14T01:36:01+00:00",
"source_file": "2-Regression/2-Data/images/heatmap.png",
"language_code": "my"
},
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T17:02:44+00:00",
@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "my"
},
"lineplot.f9034ba47b1e30ee.webp": {
"original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
"translation_date": "2026-07-14T01:36:09+00:00",
"source_file": "2-Regression/2-Data/images/lineplot.png",
"language_code": "my"
},
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T16:59:53+00:00",
@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "my"
},
"relplot.a03837d8f0329cec.webp": {
"original_hash": "4733544cb1c2e58e987087283e66b4a5",
"translation_date": "2026-07-14T01:35:54+00:00",
"source_file": "2-Regression/2-Data/images/relplot.png",
"language_code": "my"
},
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T17:14:43+00:00",

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "uk"
},
"catplot.e73fc35fdf96242b.webp": {
"original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
"translation_date": "2026-07-14T01:35:51+00:00",
"source_file": "2-Regression/2-Data/images/catplot.png",
"language_code": "uk"
},
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T17:03:09+00:00",
@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "uk"
},
"heatmap.bd98dce43b404c57.webp": {
"original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
"translation_date": "2026-07-14T01:36:04+00:00",
"source_file": "2-Regression/2-Data/images/heatmap.png",
"language_code": "uk"
},
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T17:02:49+00:00",
@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "uk"
},
"lineplot.f9034ba47b1e30ee.webp": {
"original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
"translation_date": "2026-07-14T01:36:17+00:00",
"source_file": "2-Regression/2-Data/images/lineplot.png",
"language_code": "uk"
},
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T17:00:01+00:00",
@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "uk"
},
"relplot.a03837d8f0329cec.webp": {
"original_hash": "4733544cb1c2e58e987087283e66b4a5",
"translation_date": "2026-07-14T01:35:56+00:00",
"source_file": "2-Regression/2-Data/images/relplot.png",
"language_code": "uk"
},
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T17:14:44+00:00",

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

@ -24,8 +24,8 @@
"language_code": "lt"
},
"1-Introduction/3-fairness/README.md": {
"original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
"translation_date": "2025-09-05T07:55:02+00:00",
"original_hash": "0f00d72169a0d37eecfd16d71e01700a",
"translation_date": "2026-07-14T01:34:47+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "lt"
},
@ -54,8 +54,8 @@
"language_code": "lt"
},
"2-Regression/1-Tools/README.md": {
"original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
"translation_date": "2025-09-05T07:46:22+00:00",
"original_hash": "0b8635427b582d03ea4ab7089b93e505",
"translation_date": "2026-07-14T01:31:41+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "lt"
},
@ -72,8 +72,8 @@
"language_code": "lt"
},
"2-Regression/2-Data/README.md": {
"original_hash": "7c077988328ebfe33b24d07945f16eca",
"translation_date": "2025-09-05T07:47:19+00:00",
"original_hash": "a58b2c4d16c6b122643391745ac15af6",
"translation_date": "2026-07-14T01:32:30+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "lt"
},
@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "lt"
},
"2-Regression/2-Data/solution/notebook.ipynb": {
"original_hash": "96b95f8cf473481f2f371de8156f1571",
"translation_date": "2026-07-14T01:06:47+00:00",
"source_file": "2-Regression/2-Data/solution/notebook.ipynb",
"language_code": "lt"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:19:25+00:00",
@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
"translation_date": "2025-09-05T08:02:11+00:00",
"translation_date": "2026-07-14T01:34:00+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "lt"
},
@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
"translation_date": "2025-09-05T07:53:11+00:00",
"translation_date": "2026-07-14T01:35:40+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "lt"
},
@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "lt"
},
"__translation_failures__": {
"sketchnotes/LICENSE.md": {
"original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
"source_file": "sketchnotes/LICENSE.md",
"language_code": "lt",
"failure_date": "2026-07-14T01:31:01+00:00",
"status": "failed",
"error_type": "TranslationIncompleteError",
"error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
"translator_version": "0.20.0",
"failure_policy_version": 1
}
},
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-03T17:20:41+00:00",

@ -1,133 +1,167 @@
# Kuriant mašininio mokymosi sprendimus su atsakingu dirbtiniu intelektu
![Atsakingo dirbtinio intelekto mašininio mokymosi santrauka sketchnote](../../../../sketchnotes/ml-fairness.png)
> Sketchnote sukūrė [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Prieš paskaitą atlikite testą](https://ff-quizzes.netlify.app/en/ml/)
# Atsakingos dirbtinio intelekto mašininio mokymosi sprendimų kūrimas
![Atsakingo dirbtinio intelekto mašininiame mokyme santrauka sketchnote formatu](../../../../translated_images/lt/ml-fairness.ef296ebec6afc98a.webp)
> Sketchnote pateikė [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Išankstinis viktorinos testas](https://ff-quizzes.netlify.app/en/ml/)
## Įvadas
Šioje mokymo programoje pradėsite suprasti, kaip mašininis mokymasis veikia mūsų kasdienį gyvenimą. Jau dabar sistemos ir modeliai dalyvauja kasdieniuose sprendimų priėmimo procesuose, tokiuose kaip sveikatos priežiūros diagnozės, paskolų patvirtinimai ar sukčiavimo aptikimas. Todėl svarbu, kad šie modeliai veiktų patikimai ir teiktų patikimus rezultatus. Kaip ir bet kuri programinė įranga, dirbtinio intelekto sistemos gali neatitikti lūkesčių arba turėti nepageidaujamų rezultatų. Todėl būtina suprasti ir paaiškinti dirbtinio intelekto modelio elgesį.
Šiame kurse pradėsite atrasti, kaip mašininis mokymasis gali paveikti ir jau veikia mūsų kasdienį gyvenimą. Jau dabar sistemos ir modeliai dalyvauja kasdieniniame sprendimų priėmime, pavyzdžiui, sveikatos diagnozėse, paskolų patvirtinime ar sukčiavimo aptikime. Todėl svarbu, kad šie modeliai veiktų gerai ir suteiktų patikimus rezultatus. Kaip ir bet kuri programinė įranga, DI sistemos gali neišpildyti lūkesčių arba sukelti nepageidaujamą rezultatą. Todėl būtina sugebėti suprasti ir paaiškinti DI modelio elgseną.
Įsivaizduokite, kas gali nutikti, kai duomenys, kuriuos naudojate modelių kūrimui, neturi tam tikrų demografinių duomenų, tokių kaip rasė, lytis, politinės pažiūros, religija, arba neproporcingai atspindi šiuos demografinius duomenis. O kas, jei modelio rezultatai yra interpretuojami taip, kad jie palankūs tam tikrai demografinei grupei? Kokios pasekmės tai gali turėti programai? Be to, kas nutinka, kai modelis sukelia neigiamą rezultatą ir yra žalingas žmonėms? Kas atsakingas už dirbtinio intelekto sistemos elgesį? Tai yra klausimai, kuriuos nagrinėsime šioje mokymo programoje.
Įsivaizduokite, kas gali nutikti, kai duomenys, kuriais kūrėjate šiuos modelius, trūksta tam tikrų demografinių grupių, pavyzdžiui, pagal rasę, lytį, politinę nuostatą, religiją arba disproporcingai atstovauja tokias grupes. O kaip kai modelio rezultatai interpretuojami taip, tarsi jie palankiai vertintų tam tikrą demografinę grupę? Kokia to pasekmė programai? Be to, kas nutinka, kai modelis sukelia neigiamą poveikį ir yra kenksmingas žmonėms? Kas atsakingas už DI sistemos elgesį? Į šiuos klausimus atsakysime šiame kurse.
Šioje pamokoje jūs:
- Suprasite, kodėl svarbu užtikrinti teisingumą mašininiame mokymesi ir išvengti su tuo susijusių žalingų pasekmių.
- Susipažinsite su praktika, kaip analizuoti išskirtinius atvejus ir neįprastas situacijas, siekiant užtikrinti patikimumą ir saugumą.
- Suprasite, kodėl būtina kurti įtraukias sistemas, kurios suteikia galimybes visiems.
- Išnagrinėsite, kodėl svarbu apsaugoti duomenų ir žmonių privatumą bei saugumą.
- Suprasite, kodėl būtina turėti „stiklinės dėžės“ požiūrį, kad būtų galima paaiškinti dirbtinio intelekto modelių elgesį.
- Būsite sąmoningi, kodėl atsakomybė yra būtina, siekiant sukurti pasitikėjimą dirbtinio intelekto sistemomis.
- Ugdysite suvokimą apie teisingumo svarbą mašininiame mokymesi ir su tuo susijusias žalas.
- Susipažinsite su praktika tirti išskirtinius atvejus ir neįprastas situacijas, siekiant užtikrinti patikimumą ir saugumą.
- Suprasite, kodėl svarbu įgalinti visus, kuriant įtraukiąsias sistemas.
- Išnagrinėsite, kaip svarbu apsaugoti privatumo ir duomenų saugumą.
- Sužinosite apie stiklinės dėžutės veikimo principą, paaiškinant DI modelių elgseną.
- Suprasite, kaip atsakomybė yra būtina kuriant pasitikėjimą DI sistemomis.
## Privalomos žinios
## Reikalavimai iš anksto
Prieš pradedant, rekomenduojame peržiūrėti „Atsakingo dirbtinio intelekto principų“ mokymo kelią ir pažiūrėti žemiau pateiktą vaizdo įrašą šia tema:
Prieš pradedant rekomenduojame pereiti per "Atsakingo DI principus" mokymosi kelią ir peržiūrėti žemiau pateiktą vaizdo įrašą tema:
Sužinokite daugiau apie atsakingą dirbtinį intelektą, sekdami šį [mokymo kelią](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
Sužinokite daugiau apie atsakingą DI naudodamiesi šiuo [Mokymosi keliu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
[![Microsoft požiūris į atsakingą dirbtinį intelektą](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft požiūris į atsakingą dirbtinį intelektą")
[![Microsoft požiūris į atsakingą DI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft požiūris į atsakingą DI")
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte vaizdo įrašą: Microsoft požiūris į atsakingą dirbtinį intelektą
> 🎥 Spustelėkite aukščiau esančią nuotrauką, jei norite žiūrėti vaizdo įrašą: Microsoft požiūris į atsakingą DI
## Teisingumas
Dirbtinio intelekto sistemos turėtų elgtis teisingai su visais ir vengti skirtingo poveikio panašioms žmonių grupėms. Pavyzdžiui, kai dirbtinio intelekto sistemos teikia rekomendacijas dėl medicininio gydymo, paskolų paraiškų ar įdarbinimo, jos turėtų pateikti tas pačias rekomendacijas visiems, turintiems panašius simptomus, finansines aplinkybes ar profesinę kvalifikaciją. Kiekvienas iš mūsų, kaip žmonės, turime paveldėtus šališkumus, kurie veikia mūsų sprendimus ir veiksmus. Šie šališkumai gali atsispindėti duomenyse, kuriuos naudojame dirbtinio intelekto sistemų mokymui. Tokia manipuliacija kartais gali įvykti netyčia. Dažnai sunku sąmoningai suvokti, kada į duomenis įvedate šališkumą.
DI sistemos turėtų visus vertinti teisingai ir vengti paveikti panašias žmonių grupes skirtingai. Pavyzdžiui, kai DI sistemos pateikia rekomendacijas gydymo, paskolų ar įdarbinimo klausimais, jos turėtų daryti tokias pačias rekomendacijas visiems su panašiais simptomais, finansine padėtimi ar profesiniais kvalifikacijomis. Kiekvienas iš mūsų, kaip žmonių, turime paveldėtų šališkumų, kurie veikia mūsų sprendimus ir veiksmus. Šie šališkumai gali būti matomi duomenyse, kuriais mokosi DI sistemos. Tokia manipuliacija kartais įvyksta netyčia. Dažnai sunku sąmoningai suprasti, kada duomenyse įvedamas šališkumas.
**„Netolygumas“** apima neigiamą poveikį arba „žalą“ žmonių grupei, pavyzdžiui, apibrėžtai pagal rasę, lytį, amžių ar negalios statusą. Pagrindinės su teisingumu susijusios žalos rūšys gali būti klasifikuojamos taip:
**„Neteisingumas“** apima neigiamą poveikį arba „žalą“ žmonių grupėms, apibrėžtoms pagal rasę, lytį, amžių ar neįgalumo statusą. Pagrindinės žalos, susijusios su teisingumu, gali būti skirstomos į:
- **Paskirstymas**, kai, pavyzdžiui, lytis ar etninė grupė yra palankesnė už kitą.
- **Paslaugos kokybė**. Jei duomenys mokomi tik vienam konkrečiam scenarijui, tačiau realybė yra daug sudėtingesnė, tai lemia prastai veikiančią paslaugą. Pavyzdžiui, rankų muilo dozatorius, kuris negali aptikti žmonių su tamsia oda. [Nuoroda](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **Menkinimas**. Nesąžiningai kritikuoti ir žymėti ką nors ar kažką. Pavyzdžiui, vaizdų žymėjimo technologija klaidingai pažymėjo tamsiaodžių žmonių nuotraukas kaip gorilas.
- **Perteklinis arba nepakankamas atstovavimas**. Idėja, kad tam tikra grupė nėra matoma tam tikroje profesijoje, o bet kokia paslauga ar funkcija, kuri toliau tai skatina, prisideda prie žalos.
- **Stereotipai**. Tam tikros grupės susiejimas su iš anksto priskirtais atributais. Pavyzdžiui, kalbos vertimo sistema tarp anglų ir turkų kalbų gali turėti netikslumų dėl žodžių, susijusių su stereotipiniais lyties ryšiais.
- **Paskirstymas**, pvz., kai pirmenybė teikiama lyčiai ar etninei grupei.
- **Paslaugos kokybė**. Jei duomenys yra mokomi tik vienam scenarijui, tačiau realybė yra daug sudėtingesnė, tai lemia prastai veikiančią paslaugą. Pavyzdžiui, muilo dozatorius, kuris neatskiria žmonių su tamsesne oda. [Šaltinis](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **Gėdinimas**. Neteisingai kritikuoti ir etiketėmis apklijuoti kažką ar kažką. Pavyzdžiui, vaizdų žymėjimo technologija tapo žinoma dėl tamsios odos žmonių nuotraukų klaidingo žymėjimo kaip gorilų.
- **Perdėta ar nepilna atstovybė**. Mintis, kad tam tikra grupė nėra matoma tam tikroje profesijoje, ir bet koks paslaugų ar funkcijų, kurios tai skatina, palaikymas prisideda prie žalos.
- **Stereotipai**. Priskirti iš anksto apibrėžtoms grupėms tam tikras savybes. Pavyzdžiui, anglų ir turkų kalbų vertimo sistema gali netiksliai versti žodžius, turinčius lyčių stereotipų atspalvį.
![vertimas į turkų kalbą](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png)
![vertimas į turkų kalbą](../../../../translated_images/lt/gender-bias-translate-en-tr.f185fd8822c2d437.webp)
> vertimas į turkų kalbą
![vertimas atgal į anglų kalbą](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png)
![vertimas atgal į anglų kalbą](../../../../translated_images/lt/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp)
> vertimas atgal į anglų kalbą
Kuriant ir testuojant dirbtinio intelekto sistemas, turime užtikrinti, kad dirbtinis intelektas būtų teisingas ir neprogramuotas priimti šališkų ar diskriminuojančių sprendimų, kurių žmonėms taip pat draudžiama priimti. Teisingumo užtikrinimas dirbtiniame intelekte ir mašininiame mokymesi išlieka sudėtingu sociotechniniu iššūkiu.
Kuriant ir testuojant DI sistemas, turime užtikrinti, kad DI būtų teisingas ir nesukurtų šališkų ar diskriminuojančių sprendimų, kurių taip pat neleidžiama priimti žmonėms. Užtikrinti teisingumą DI ir mašininiame mokymesi yra sudėtinga sociotechninė užduotis.
### Patikimumas ir saugumas
Norint sukurti pasitikėjimą, dirbtinio intelekto sistemos turi būti patikimos, saugios ir nuoseklios tiek įprastomis, tiek netikėtomis sąlygomis. Svarbu žinoti, kaip dirbtinio intelekto sistemos elgsis įvairiose situacijose, ypač kai jos yra išskirtinės. Kuriant dirbtinio intelekto sprendimus, reikia skirti daug dėmesio tam, kaip spręsti įvairias aplinkybes, su kuriomis dirbtinio intelekto sprendimai gali susidurti. Pavyzdžiui, savarankiškai vairuojantis automobilis turi prioritetą teikti žmonių saugumui. Todėl dirbtinis intelektas, valdantis automobilį, turi atsižvelgti į visas galimas situacijas, su kuriomis automobilis gali susidurti, tokias kaip naktis, audros, pūgos, vaikai, bėgantys per gatvę, augintiniai, kelio darbai ir pan. Kaip gerai dirbtinio intelekto sistema gali patikimai ir saugiai spręsti įvairias sąlygas, atspindi duomenų mokslininko ar dirbtinio intelekto kūrėjo numatymo lygį projektavimo ar testavimo metu.
Norint užmegzti pasitikėjimą, DI sistemos turi būti patikimos, saugios ir nuoseklios tiek įprastomis, tiek netikėtomis sąlygomis. Svarbu žinoti, kaip DI sistemos elgsis įvairiose situacijose, ypač kai tai išimtys. Kuriant DI sprendimus reikia skirti daug dėmesio įvairių galimų situacijų, su kuriomis DI sprendimai gali susidurti, valdymui. Pavyzdžiui, autonominis automobilis turi pirmiausia rūpintis žmonių saugumu. Todėl automobilį valdančiam DI reikia apsvarstyti visas galimas situacijas, su kuriomis automobilis gali susidurti, tokių kaip naktis, perkūnija ar pūgos, vaikai bėgantys per gatvę, gyvūnai, kelio darbai ir pan. Kaip gerai DI sistema gali patikimai ir saugiai susidoroti su skirtingomis sąlygomis, rodo duomenų mokslininko ar DI kūrėjo numatymo lygį projektuojant ar testuojant sistemą.
> [🎥 Spustelėkite čia, kad peržiūrėtumėte vaizdo įrašą: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
> [🎥 Spustelėkite čia, jei norite žiūrėti vaizdo įrašą: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Įtrauktis
### Įtraukumas
Dirbtinio intelekto sistemos turėtų būti sukurtos taip, kad įtrauktų ir suteiktų galimybes visiems. Kuriant ir įgyvendinant dirbtinio intelekto sistemas, duomenų mokslininkai ir dirbtinio intelekto kūrėjai identifikuoja ir sprendžia galimas kliūtis sistemoje, kurios netyčia galėtų išskirti žmones. Pavyzdžiui, pasaulyje yra 1 milijardas žmonių su negalia. Su dirbtinio intelekto pažanga jie gali lengviau pasiekti įvairią informaciją ir galimybes savo kasdieniame gyvenime. Sprendžiant kliūtis, atsiranda galimybės inovuoti ir kurti dirbtinio intelekto produktus su geresnėmis patirtimis, kurios naudingos visiems.
DI sistemas reikėtų kurti taip, kad jos įtrauktų ir įgalintų visus. Kuriant ir diegiant DI sistemas, duomenų mokslininkai ir DI kūrėjai identifikuoja ir šalina galimas kliūtis, kurios gali netyčia pašalinti žmones. Pavyzdžiui, pasaulyje yra 1 milijardas neįgaliųjų. Besivystantis DI jiems leidžia lengviau pasiekti daug informacijų ir galimybių kasdieniniame gyvenime. Pašalinus kliūtis, atsiveria galimybės inovuoti ir kurti geresnes DI produktų patirtis, naudingas visiems.
> [🎥 Spustelėkite čia, kad peržiūrėtumėte vaizdo įrašą: įtrauktis dirbtiniame intelekte](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
> [🎥 Spustelėkite čia, jei norite žiūrėti vaizdo įrašą: įtraukumas DI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Saugumas ir privatumas
Dirbtinio intelekto sistemos turėtų būti saugios ir gerbti žmonių privatumą. Žmonės mažiau pasitiki sistemomis, kurios kelia pavojų jų privatumui, informacijai ar gyvybei. Mokant mašininio mokymosi modelius, mes pasikliaujame duomenimis, kad gautume geriausius rezultatus. Tai darydami turime atsižvelgti į duomenų kilmę ir vientisumą. Pavyzdžiui, ar duomenys buvo pateikti vartotojų, ar viešai prieinami? Be to, dirbant su duomenimis, būtina kurti dirbtinio intelekto sistemas, kurios galėtų apsaugoti konfidencialią informaciją ir atsispirti atakoms. Kadangi dirbtinis intelektas tampa vis labiau paplitęs, privatumo apsauga ir svarbios asmeninės bei verslo informacijos saugumas tampa vis svarbesni ir sudėtingesni. Privatumo ir duomenų saugumo klausimai reikalauja ypatingo dėmesio dirbtiniam intelektui, nes duomenų prieiga yra būtina, kad dirbtinio intelekto sistemos galėtų tiksliai ir informuotai priimti sprendimus apie žmones.
DI sistemos turėtų būti saugios ir gerbti žmonių privatumą. Žmonės mažiau pasitiki sistemomis, kurios kelia grėsmę jų privatumui, informacijai ar gyvybėms. Mokant mašininio mokymosi modelius, mes pasikliaujame duomenimis, kad gautume geriausius rezultatus. Svarbu atsižvelgti į duomenų kilmę ir vientisumą. Pavyzdžiui, ar duomenys buvo pateikti vartotojo, ar yra viešai prieinami? Toliau dirbant su duomenimis svarbu kurti DI sistemas, galinčias apsaugoti konfidencialią informaciją ir atsilaikyti prieš atakas. Su DI plėtra vis svarbiau ir sudėtingiau apsaugoti privatumą bei svarbią asmeninę ir verslo informaciją. Privatumo ir duomenų saugumo klausimai yra itin svarbūs DI, nes prieiga prie duomenų yra būtina DI sistemoms tiksliai ir pagrįstai prognozuoti bei priimti sprendimus apie žmones.
> [🎥 Spustelėkite čia, kad peržiūrėtumėte vaizdo įrašą: saugumas dirbtiniame intelekte](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Spustelėkite čia, jei norite žiūrėti vaizdo įrašą: saugumas DI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Pramonėje pasiekėme reikšmingų privatumo ir saugumo pažangų, kurias labai paskatino tokie reglamentai kaip GDPR (Bendrasis duomenų apsaugos reglamentas).
- Tačiau dirbtinio intelekto sistemose turime pripažinti įtampą tarp poreikio turėti daugiau asmeninių duomenų, kad sistemos būtų asmeniškesnės ir efektyvesnės, ir privatumo.
- Kaip ir su interneto atsiradimu, matome didelį saugumo problemų, susijusių su dirbtiniu intelektu, augimą.
- Tuo pačiu metu matome, kaip dirbtinis intelektas naudojamas saugumui gerinti. Pavyzdžiui, dauguma modernių antivirusinių skenerių šiandien yra pagrįsti dirbtinio intelekto heuristika.
- Turime užtikrinti, kad mūsų duomenų mokslų procesai harmoningai derėtų su naujausiomis privatumo ir saugumo praktikomis.
- Kaip industrija, padarėme didelę pažangą privatumo ir saugumo srityje, ypač reguliuojant tokias sritis kaip GDPR (Bendrasis duomenų apsaugos reglamentas).
- Tačiau DI sistemose turime pripažinti įtampą tarp poreikio turėti daugiau asmens duomenų, kad sistemos būtų personalizuotos ir efektyvios, ir tarp privatumo reikalavimų.
- Kaip ir interneto sukūrimo laikais, matome stiprų saugumo problemų augimą, susijusį su DI.
- Tuo pačiu metu DI naudojamas saugumui gerinti. Pavyzdžiui, dauguma šiuolaikinių antivirusinių programų šiandien naudoja DI heuristikas.
- Turime užtikrinti, kad mūsų duomenų mokslas harmoningai dera su pačiomis naujausiomis privatumo ir saugumo praktikomis.
### Skaidrumas
Dirbtinio intelekto sistemos turėtų būti suprantamos. Svarbi skaidrumo dalis yra paaiškinti dirbtinio intelekto sistemų ir jų komponentų elgesį. Gerinant dirbtinio intelekto sistemų supratimą, reikia, kad suinteresuotosios šalys suprastų, kaip ir kodėl jos veikia, kad galėtų identifikuoti galimas veikimo problemas, saugumo ir privatumo rūpesčius, šališkumus, išskirtines praktikas ar netikėtus rezultatus. Taip pat tikime, kad tie, kurie naudoja dirbtinio intelekto sistemas, turėtų būti sąžiningi ir atviri apie tai, kada, kodėl ir kaip jie nusprendžia jas naudoti. Taip pat apie naudojamų sistemų apribojimus. Pavyzdžiui, jei bankas naudoja dirbtinio intelekto sistemą, kad palaikytų vartotojų paskolų sprendimus, svarbu išnagrinėti rezultatus ir suprasti, kurie duomenys daro įtaką sistemos rekomendacijoms. Vyriausybės pradeda reguliuoti dirbtinį intelektą įvairiose pramonės šakose, todėl duomenų mokslininkai ir organizacijos turi paaiškinti, ar dirbtinio intelekto sistema atitinka reglamentavimo reikalavimus, ypač kai yra nepageidaujamas rezultatas.
### Skaidrumas
DI sistemos turėtų būti suprantamos. Svarbi skaidrumo dalis yra paaiškinti DI sistemų ir jų komponentų elgseną. Geresnis DI sistemų supratimas reikalauja, kad suinteresuotosios šalys suprastų, kaip ir kodėl jos veikia, kad galėtų atpažinti galimas našumo problemas, saugumo ir privatumo rizikas, šališkumus, pašalinimo praktikas ar nepageidaujamus rezultatus. Taip pat manome, kad tie, kurie naudoja DI sistemas, turėtų būti sąžiningi ir atviri apie tai, kada, kodėl ir kaip juos diegia. Taip pat apie sistemų, kurias jie naudoja, apribojimus. Pavyzdžiui, jei bankas naudoja DI sistemą, remiantį jo paskolų vartotojams sprendimus, svarbu peržiūrėti rezultatus ir suprasti, kurie duomenys daro įtaką sistemos rekomendacijoms. Vyriausybės jau pradeda reguliuoti DI įvairiose pramonės šakose, todėl duomenų mokslininkai ir organizacijos privalo paaiškinti, ar DI sistema atitinka reguliavimo reikalavimus, ypač jei rezultatai nepageidaujami.
> [🎥 Spustelėkite čia, kad peržiūrėtumėte vaizdo įrašą: skaidrumas dirbtiniame intelekte](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Spustelėkite čia, jei norite žiūrėti vaizdo įrašą: skaidrumas DI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Kadangi dirbtinio intelekto sistemos yra tokios sudėtingos, sunku suprasti, kaip jos veikia ir interpretuoti rezultatus.
- Šis supratimo trūkumas veikia tai, kaip šios sistemos yra valdomos, operatyviai naudojamos ir dokumentuojamos.
- Šis supratimo trūkumas dar svarbiau veikia sprendimus, priimamus remiantis šių sistemų rezultatais.
- Kadangi DI sistemos yra labai sudėtingos, sunku suprasti, kaip jos veikia, ir interpretuoti rezultatus.
- Šis supratimo trūkumas veikia tai, kaip šios sistemos valdomos, įdiegiamos ir dokumentuojamos.
- Dar svarbiau, šis supratimo trūkumas įtakoja sprendimus, priimamus remiantis šiomis sistemomis gautais rezultatais.
### Atsakomybė
Žmonės, kurie kuria ir diegia DI sistemas, turi būti atsakingi už tai, kaip jų sistemos veikia. Atsakomybės poreikis ypač svarbus jautrių technologijų, tokių kaip veido atpažinimas, naudojimo atvejais. Pastaruoju metu veido atpažinimo technologijos paklausa auga, ypač teisėsaugos institucijų, kurios mato jos potencialą, pavyzdžiui, ieškant dingusių vaikų. Tačiau šios technologijos galėtų būti panaudotos vyriausybės, keliant pavojų piliečių pagrindinėms laisvėms, pavyzdžiui, nuolat stebint konkrečius asmenis. Todėl duomenų mokslininkai ir organizacijos turi prisiimti atsakomybę už tai, kaip jų DI sistema veikia individų arba visuomenės atžvilgiu.
Žmonės, kurie kuria ir diegia dirbtinio intelekto sistemas, turi būti atsakingi už tai, kaip jų sistemos veikia. Atsakomybės poreikis yra ypač svarbus jautrių technologijų, tokių kaip veido atpažinimas, naudojimo atveju. Pastaruoju metu didėja veido atpažinimo technologijos paklausa, ypač iš teisėsaugos organizacijų, kurios mato technologijos potencialą, pavyzdžiui, ieškant dingusių vaikų. Tačiau šios technologijos galėtų būti naudojamos vyriausybių, kad būtų pažeistos piliečių pagrindinės laisvės, pavyzdžiui, leidžiant nuolatinę tam tikrų asmenų stebėseną. Todėl duomenų mokslininkai ir organizacijos turi būti atsakingi už tai, kaip jų dirbtinio intelekto sistema veikia žmones ar visuomenę.
[![Pagrindinis DI tyrėjas perspėja apie masinį stebėjimą per veidų atpažinimą](../../../../translated_images/lt/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft požiūris į atsakingą DI")
[![Pirmaujantis dirbtinio intelekto tyrėjas įspėja apie masinę stebėseną per veido atpažinimą](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft požiūris į atsakingą dirbtinį intelektą")
> 🎥 Spustelėkite aukščiau esančią nuotrauką, jei norite žiūrėti vaizdo įrašą: Perspėjimai dėl masinio stebėjimo per veidų atpažinimą
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte vaizdo įrašą: Įspėjimai apie masinę stebėseną per veido atpažinimą
Galų gale vienas didžiausių mūsų kartos klausimų, kaip pirmosios kartos, kuri įveda dirbtinį intelektą į visuomenę, yra tai, kaip užtikrinti, kad kompiuteriai išliktų atsakingi žmonėms ir kaip užtikrinti, kad žmonės, kurie kuria kompiuterius, išliktų atsakingi visiems kitiems.
Galutinis vienas didžiausių klausimų mūsų kartai, kaip pirmai kartai, kuri diegia DI visuomenei, yra kaip užtikrinti, kad kompiuteriai liktų atsakingi žmonėms ir kaip užtikrinti, kad kompiuterius kuriantys žmonės liktų atsakingi visuomenei.
## Poveikio vertinimas
Prieš mokant mašininio mokymosi modelį, svarbu atlikti poveikio vertinimą, kad suprastumėte dirbtinio intelekto sistemos tikslą; kokia yra numatyta paskirtis; kur ji bus naudojama; ir kas sąveikaus su sistema. Tai naudinga vertintojams ar testuotojams, kad jie žinotų, kokius veiksnius reikia apsvarstyti identifikuojant galimas rizikas ir numatomas pasekmes.
Prieš mokant mašininio mokymosi modelį svarbu atlikti poveikio vertinimą, norint suprasti DI sistemos paskirtį; kokia yra numatyta paskirtis; kur ji bus diegiama; ir kas naudosis sistema. Tai padeda peržiūrėtojams ar testuotojams žinoti, kokius veiksnius reikia atsižvelgti, identifikuojant galimas rizikas ir numatomąsias pasekmes.
Atlikdami poveikio vertinimą atkreipkite dėmesį į šias sritis:
* **Neigiamas poveikis individams.** Svarbu žinoti apie bet kokius apribojimus ar reikalavimus, neleistiną naudojimą ar žinomas ribotumus, kurie gali paveikti sistemos veikimą, kad sistema nebūtų naudojama kenksmingai žmonėms.
* **Duomenų reikalavimai.** Suprasti, kaip ir kur sistema naudos duomenis, leidžia peržiūrėtojams įvertinti visus duomenų reikalavimus, kurių reikia laikytis (pvz., GDPR ar HIPAA duomenų taisykles). Taip pat svarbu patikrinti, ar duomenų šaltinis ir kiekis yra pakankami mokymui.
* **Poveikio santrauka.** Surinkite galimų žalos atvejų sąrašą, kurie gali kilti naudojant sistemą. Per visą ML gyvavimo ciklą patikrinkite, ar šios problemos buvo sumažintos ar pašalintos.
* **Taikytini tikslai** kiekvienam iš šešių pagrindinių principų. Įvertinkite, ar kiekvieno principo tikslai buvo pasiekti ir ar yra kokių nors spragų.
## Atsakingas DI derinimas
Kaip ir derinant programinę įrangą, DI sistemos derinimas yra būtinas procesas, skirtas nustatyti ir išspręsti sistemas veikimo problemas. Daugelis veiksnių gali lemti, kad modelis neveikia taip, kaip tikėtasi ar neatsakingai. Tradiciniai modelio veikimo rodikliai yra kiekybiniai agregatai, nepakankami analizuoti, kaip modelis pažeidžia atsakingo DI principus. Be to, mašininio mokymosi modelis yra juodoji dėžė, kurios sunku suprasti, kas lemia rezultatą ar paaiškinti klaidą. Vėliau šiame kurse išmoksime naudoti Atsakingo DI skydelį, padedantį derinti DI sistemas. Šis skydelis suteikia holistinį įrankį duomenų mokslininkams ir DI kūrėjams atlikti:
* **Klaidų analizę.** Nustatyti modelio klaidų pasiskirstymą, galintį paveikti sistemos teisingumą ar patikimumą.
* **Modelio apžvalgą.** Atrasti, kur modelio veikime yra skirtumų duomenų grupėse.
* **Duomenų analizę.** Suprasti duomenų pasiskirstymą ir nustatyti galimą šališkumą duomenyse, galintį sukelti problemas su teisingumu, įtraukumu ir patikimumu.
* **Modelio interpretuojamumą.** Suprasti, kas veikia ar įtakoja modelio prognozes. Tai padeda paaiškinti modelio elgseną, kas svarbu skaidrumui ir atsakomybei.
## 🚀 Iššūkis
Siekiant išvengti žalos, turėtume:
- turėti įvairių fonų ir požiūrių tarp sistemų kūrėjų
- investuoti į duomenų rinkinius, atspindinčius mūsų visuomenės įvairovę
- kurti geresnius metodus visame mašininio mokymosi gyvavimo cikle, skirtus atsakingo DI aptikimui ir taisymui
Pagalvokite apie realias situacijas, kai modelio nepatikimumas akivaizdus modelio kūrime ir naudojime. Ką dar turėtume apsvarstyti?
## [Viktorinos testas po paskaitos](https://ff-quizzes.netlify.app/en/ml/)
Štai sritys, į kurias reikia atkreipti dėmesį atliekant poveikio vertinimą:
## Apžvalga ir savarankiškas mokymasis
* **Neigiamas poveikis asmenims**. Svarbu žinoti apie bet kokius apribojimus
Žiūrėkite šį seminarą, kad giliau suprastumėte temas:
Šioje pamokoje jūs sužinojote pagrindus apie teisingumo ir neteisingumo sąvokas mašininiame mokyme.
Peržiūrėkite šį seminarą, kad giliau suprastumėte temas:
- Atsakingo dirbtinio intelekto siekimas: principų įgyvendinimas praktikoje, pristato Besmira Nushi, Mehrnoosh Sameki ir Amit Sharma
- Atsakingo DI siekis: Principų taikymas praktikoje, pristato Besmira Nushi, Mehrnoosh Sameki ir Amit Sharma
[![Atsakingo DI įrankių rinkinys: atvirojo kodo sistema atsakingam DI kurti](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Atvirojo kodo sistema atsakingam DI kurti")
[![Atsakingo DI įrankių rinkinys: Atvirojo kodo sistema atsakingam DI kūrimui](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
> 🎥 Spustelėkite paveikslėlį aukščiau, kad peržiūrėtumėte vaizdo įrašą: RAI Toolbox: Atvirojo kodo sistema atsakingam DI kurti, pristato Besmira Nushi, Mehrnoosh Sameki ir Amit Sharma
> 🎥 Spauskite aukščiau esantį paveikslėlį vaizdo įrašui: RAI Toolbox: Atvirojo kodo įrankių rinkinys atsakingam DI kūrimui, pristato Besmira Nushi, Mehrnoosh Sameki ir Amit Sharma
Taip pat skaitykite:
Taip pat skaitykite:
- Microsoft atsakingo DI išteklių centras: [Atsakingo DI ištekliai Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- „Microsoft“ RAI išteklių centras: [Responsible AI Resources Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft FATE tyrimų grupė: [FATE: Sąžiningumas, Atsakomybė, Skaidrumas ir Etika DI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- „Microsoft“ FATE tyrimų grupė: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
RAI įrankių rinkinys:
RAI įrankių rinkinys:
- [Atsakingo DI įrankių rinkinio GitHub saugykla](https://github.com/microsoft/responsible-ai-toolbox)
- [Responsible AI Toolbox GitHub saugykla](https://github.com/microsoft/responsible-ai-toolbox)
Skaitykite apie Azure Machine Learning įrankius, skirtus užtikrinti sąžiningumą:
Skaitykite apie Azure Machine Learning įrankius siekiant užtikrinti teisingumą:
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Užduotis
[Susipažinkite su RAI įrankių rinkiniu](assignment.md)
[Tyrinėkite RAI įrankių rinkinį](assignment.md)
---
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,120 +1,121 @@
# Pradėkite dirbti su Python ir Scikit-learn regresijos modeliams
![Regresijų santrauka sketchnote](../../../../sketchnotes/ml-regression.png)
![Regresijų santrauka sketchnote formatu](../../../../translated_images/lt/ml-regression.4e4f70e3b3ed446e.webp)
> Sketchnote sukūrė [Tomomi Imura](https://www.twitter.com/girlie_mac)
> Sketchnote autorius [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Klausimynas prieš paskaitą](https://ff-quizzes.netlify.app/en/ml/)
## [Priešpaskaitinis testas](https://ff-quizzes.netlify.app/en/ml/)
> ### [Ši pamoka taip pat prieinama R kalba!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
> ### [Ši pamoka prieinama R kalba!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Įvadas
Šiose keturiose pamokose sužinosite, kaip kurti regresijos modelius. Netrukus aptarsime, kam jie skirti. Tačiau prieš pradėdami, įsitikinkite, kad turite tinkamus įrankius, kad galėtumėte pradėti procesą!
Šiose keturiose pamokose jūs sužinosite, kaip kurti regresijos modelius. Apie ką jie trumpai bus paaiškinta netrukus. Tačiau prieš imdamiesi darbo įsitikinkite, kad turite tinkamus įrankius procesui pradėti!
Šioje pamokoje išmoksite:
- Konfigūruoti savo kompiuterį vietinėms mašininio mokymosi užduotims.
- Dirbti su Jupyter užrašinėmis.
- Naudoti Scikit-learn, įskaitant diegimą.
- Išbandyti linijinę regresiją praktiniame užsiėmime.
- Konfigūruoti savo kompiuterį vietiniams mašininio mokymosi uždaviniams.
- Dirbti su Jupyter Notebooks.
- Naudoti Scikit-learn įskaitant įdiegimą.
- Tyrinėti linijinę regresiją per praktinę užduotį.
## Diegimai ir konfigūracijos
## Įdiegimai ir konfigūravimas
[![ML pradedantiesiems - Paruoškite įrankius mašininio mokymosi modelių kūrimui](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pradedantiesiems - Paruoškite įrankius mašininio mokymosi modelių kūrimui")
[![Pradedantiesiems ML - Paruoškite savo įrankius mašininio mokymosi modelių kūrimui](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "Pradedantiesiems ML - Paruoškite savo įrankius mašininio mokymosi modelių kūrimui")
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie kompiuterio konfigūravimą ML užduotims.
> 🎥 Paspauskite paveikslėlį aukščiau trumpam vaizdo įrašui, kaip konfigūruoti kompiuterį ML darbams.
1. **Įdiekite Python**. Įsitikinkite, kad jūsų kompiuteryje įdiegta [Python](https://www.python.org/downloads/). Python bus naudojamas daugeliui duomenų mokslo ir mašininio mokymosi užduočių. Dauguma kompiuterių sistemų jau turi Python diegimą. Taip pat yra naudingų [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), kurie palengvina nustatymą kai kuriems vartotojams.
1. **Įdiekite Python**. Įsitikinkite, kad jūsų kompiuteryje įdiegtas [Python](https://www.python.org/downloads/). Python bus naudojamas daugelyje duomenų mokslo ir mašininio mokymosi uždavinių. Dauguma kompiuterių sistemų jau turi Python diegimą. Taip pat yra naudingų [Python kodo paketų](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), kurie kai kuriems naudotojams palengvina diegimo procesą.
Kai kurios Python naudojimo situacijos reikalauja vienos programinės įrangos versijos, o kitos - kitos. Dėl šios priežasties naudinga dirbti [virtualioje aplinkoje](https://docs.python.org/3/library/venv.html).
Kai kuriems Python naudojimams reikalingos skirtingos programinės įrangos versijos, todėl naudinga dirbti [virtualioje aplinkoje](https://docs.python.org/3/library/venv.html).
2. **Įdiekite Visual Studio Code**. Įsitikinkite, kad jūsų kompiuteryje įdiegta Visual Studio Code. Sekite šias instrukcijas, kad atliktumėte [Visual Studio Code diegimą](https://code.visualstudio.com/). Šiame kurse naudosite Python Visual Studio Code aplinkoje, todėl galbūt norėsite pasipraktikuoti, kaip [konfigūruoti Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) Python kūrimui.
2. **Įdiekite Visual Studio Code**. Įsitikinkite, kad jūsų kompiuteryje įdiegtas Visual Studio Code. Vadovaukitės instrukcijomis, kaip [įdiegti Visual Studio Code](https://code.visualstudio.com/) baziniam diegimui. Šiame kurse naudosite Python Visual Studio Code aplinkoje, taigi verta susipažinti, kaip [konfigūruoti Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) Python kūrimui.
> Susipažinkite su Python, atlikdami šią [mokymosi modulių kolekciją](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
> Prisijaukinkite Python per šį [Learn modulių](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) rinkinį.
>
> [![Nustatykite Python su Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Nustatykite Python su Visual Studio Code")
> [![Python konfigūravimas Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Python konfigūravimas Visual Studio Code")
>
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte vaizdo įrašą apie Python naudojimą VS Code aplinkoje.
> 🎥 Paspauskite paveikslėlį aukščiau video peržiūrai: Python naudojimas VS Code aplinkoje.
3. **Įdiekite Scikit-learn**, sekdami [šias instrukcijas](https://scikit-learn.org/stable/install.html). Kadangi jums reikia užtikrinti, jog naudojate Python 3, rekomenduojama naudoti virtualią aplinką. Atkreipkite dėmesį, jei diegiate šią biblioteką M1 Mac kompiuteryje, yra specialios instrukcijos aukščiau pateiktame puslapyje.
3. **Įdiekite Scikit-learn**, vadovaudamiesi [šiais nurodymais](https://scikit-learn.org/stable/install.html). Kadangi reikia naudoti Python 3 versiją, rekomenduojama naudoti virtualią aplinką. Jei diegiate biblioteką M1 Mac kompiuteryje, puslapyje pateikti specialūs nurodymai.
4. **Įdiekite Jupyter Notebook**. Jums reikės [įdiegti Jupyter paketą](https://pypi.org/project/jupyter/).
1. **Įdiekite Jupyter Notebook**. Jums reikės [įdiegti Jupyter paketą](https://pypi.org/project/jupyter/).
## Jūsų ML kūrimo aplinka
Jūs naudosite **užrašines** (notebooks), kad sukurtumėte Python kodą ir kurtumėte mašininio mokymosi modelius. Šio tipo failai yra įprastas įrankis duomenų mokslininkams, ir juos galima atpažinti pagal jų priesagą arba plėtinį `.ipynb`.
Jūs naudosite **užrašų knygutes** (notebooks) kurti Python kodui ir mašininio mokymosi modeliams. Tokio tipo failai yra įprasta priemonė duomenų mokslininkams, juos galima atpažinti pagal plėtinį `.ipynb`.
Užrašinės yra interaktyvi aplinka, leidžianti kūrėjui tiek rašyti kodą, tiek pridėti pastabas ir dokumentaciją aplink kodą, kas yra labai naudinga eksperimentiniams ar moksliniams projektams.
Užrašų knygutės yra interaktyvi aplinka, leidžianti programuotojui tiek rašyti kodą, tiek pridėti pastabas ir dokumentaciją aplink kodą, kas yra ypač naudinga eksperimentiniams ar moksliniams projektams.
[![ML pradedantiesiems - Nustatykite Jupyter užrašines regresijos modelių kūrimui](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pradedantiesiems - Nustatykite Jupyter užrašines regresijos modelių kūrimui")
[![Pradedantiesiems ML - Paruoškite Jupyter Notebooks pradėti kurti regresijos modelius](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "Pradedantiesiems ML - Paruoškite Jupyter Notebooks pradėti kurti regresijos modelius")
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie šį pratimą.
> 🎥 Paspauskite paveikslėlį aukščiau trumpam vaizdo įrašui dirbant su šia užduotimi.
### Pratimas - darbas su užrašine
### Užduotis - dirbti su užrašų knygute
Šiame aplanke rasite failą _notebook.ipynb_.
1. Atidarykite _notebook.ipynb_ Visual Studio Code aplinkoje.
1. Atidarykite _notebook.ipynb_ Visual Studio Code programoje.
Jupyter serveris bus paleistas su Python 3+. Užrašinėje rasite vietas, kurias galima `paleisti`, t. y. kodo dalis. Galite paleisti kodo bloką, pasirinkdami piktogramą, kuri atrodo kaip grojimo mygtukas.
Jūsų darbui bus paleistas Jupyter serveris su Python 3+. Užrašų knygutėje rasite vietas, kurias galima `vykdyti` kodų blokai. Galite vykdyti kodo bloką paspausdami mygtuką, kuris atrodo kaip paleidimo mygtukas (play).
2. Pasirinkite `md` piktogramą ir pridėkite šiek tiek markdown teksto, pvz., **# Sveiki atvykę į savo užrašinę**.
1. Paspauskite `md` ikoną ir pridėkite šiek tiek markdown: **# Sveiki atvykę į savo užrašų knygutę**.
Tada pridėkite šiek tiek Python kodo.
Toliau įrašykite šiek tiek Python kodo.
3. Įveskite **print('hello notebook')** kodo bloke.
4. Paspauskite rodyklę, kad paleistumėte kodą.
1. Įveskite kodą **print('hello notebook')** kodo bloke.
1. Paspauskite rodyklę, kad paleistumėte kodą.
Turėtumėte pamatyti atspausdintą sakinį:
Turėtumėte pamatyti išspausdintą eilutę:
```output
hello notebook
```
![VS Code su atidaryta užrašine](../../../../2-Regression/1-Tools/images/notebook.jpg)
![VS Code atidarius užrašų knygutę](../../../../translated_images/lt/notebook.4a3ee31f396b8832.webp)
Galite įterpti savo kodą su komentarais, kad savarankiškai dokumentuotumėte užrašinę.
Galite tarp kodo įterpti komentarus, kad dokumentuotumėte savo užrašų knygutę.
✅ Pagalvokite minutę, kaip skiriasi žiniatinklio kūrėjo darbo aplinka nuo duomenų mokslininko aplinkos.
✅ Pagalvokite minutei, kaip skiriasi interneto programuotojo darbo aplinka nuo duomenų mokslininko.
## Darbas su Scikit-learn
## Pradėkime naudoti Scikit-learn
Dabar, kai Python yra nustatytas jūsų vietinėje aplinkoje ir jūs jaučiatės patogiai dirbdami su Jupyter užrašinėmis, pasistenkime taip pat susipažinti su Scikit-learn (tariama `sci`, kaip `science`). Scikit-learn siūlo [platus API](https://scikit-learn.org/stable/modules/classes.html#api-ref), kuris padeda atlikti ML užduotis.
Dabar, kai Python jau sukonfigūruotas jūsų vietinėje aplinkoje ir esate patogiai susipažinęs su Jupyter užrašų knygutėmis, pažinkime Scikit-learn (tai tariama `sci` kaip `science`). Scikit-learn suteikia [išsamų API](https://scikit-learn.org/stable/modules/classes.html#api-ref), kuris padės atlikti ML užduotis.
Pagal jų [svetainę](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn yra atviro kodo mašininio mokymosi biblioteka, palaikanti prižiūrimą ir neprižiūrimą mokymąsi. Ji taip pat siūlo įvairius įrankius modelių pritaikymui, duomenų apdorojimui, modelių pasirinkimui ir vertinimui bei daugybę kitų naudingų funkcijų."
Pagal jų [svetainę](https://scikit-learn.org/stable/getting_started.html), „Scikit-learn yra atvirojo kodo mašininio mokymosi biblioteka, kuri palaiko prižiūrimą ir neprižiūrimą mokymąsi. Taip pat ji teikia įvairius įrankius modeliui pritaikyti, duomenims apdoroti, modeliui pasirinkti ir įvertinti bei daug kitų priemonių.“
Šiame kurse naudosite Scikit-learn ir kitus įrankius, kad sukurtumėte mašininio mokymosi modelius, skirtus vadinamoms 'tradicinio mašininio mokymosi' užduotims. Mes sąmoningai vengėme neuroninių tinklų ir giluminio mokymosi, nes jie geriau aptariami mūsų būsimoje 'AI pradedantiesiems' mokymo programoje.
Šiame kurse naudosite Scikit-learn ir kitus įrankius kurtumėte mašininio mokymosi modelius tradicinėms mašininio mokymosi užduotims atlikti. Sąmoningai vengėme neurologinių tinklų ir giluminio mokymosi temų, nes jos geriau aptariamos mūsų būsimoje „AI pradedantiesiems“ programoje.
Scikit-learn leidžia lengvai kurti modelius ir vertinti jų naudojimą. Ji daugiausia orientuota į skaitinių duomenų naudojimą ir turi keletą paruoštų duomenų rinkinių, skirtų mokymuisi. Ji taip pat apima iš anksto sukurtus modelius, kuriuos studentai gali išbandyti. Pažvelkime į procesą, kaip įkelti iš anksto paruoštus duomenis ir naudoti įmontuotą vertintoją pirmam ML modeliui su Scikit-learn, naudojant pagrindinius duomenis.
Scikit-learn leidžia lengvai kurti ir vertinti modelius. Ji daugiausia orientuota į skaitmeninius duomenis ir turi kelis paruoštus naudoti rinkinius, skirtus mokymuisi. Taip pat siūlo iš anksto sukurtus modelius studentų praktikai. Pirmiausia pažvelkime, kaip įkelti iš anksto paruoštus duomenis ir naudoti integruotą estimator modelį su Scikit-learn paprastiems duomenims.
## Pratimas - jūsų pirmoji Scikit-learn užrašinė
## Užduotis - jūsų pirmoji Scikit-learn užrašų knygutė
> Šis mokymas buvo įkvėptas [linijinės regresijos pavyzdžio](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) Scikit-learn svetainėje.
> Ši pamoka įkvėpta [linijinės regresijos pavyzdžio](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) Scikit-learn svetainėje.
[![ML pradedantiesiems - Jūsų pirmasis linijinės regresijos projektas Python kalba](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML pradedantiesiems - Jūsų pirmasis linijinės regresijos projektas Python kalba")
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie šį pratimą.
[![Pradedantiesiems ML - Jūsų pirmasis linijinės regresijos projektas Python kalba](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "Pradedantiesiems ML - Jūsų pirmasis linijinės regresijos projektas Python kalba")
Failo _notebook.ipynb_ susijusio su šia pamoka, ištrinkite visas ląsteles paspausdami 'šiukšliadėžės' piktogramą.
> 🎥 Paspauskite paveikslėlį aukščiau trumpam video, kaip atlikti šią užduotį.
Šiame skyriuje dirbsite su nedideliu duomenų rinkiniu apie diabetą, kuris yra įtrauktas į Scikit-learn mokymosi tikslais. Įsivaizduokite, kad norite išbandyti gydymą diabetu sergantiems pacientams. Mašininio mokymosi modeliai gali padėti nustatyti, kurie pacientai geriau reaguotų į gydymą, remiantis kintamųjų deriniais. Net labai paprastas regresijos modelis, vizualizuotas, gali parodyti informaciją apie kintamuosius, kurie padėtų organizuoti teorinius klinikinius tyrimus.
Failo _notebook.ipynb_ šioje pamokoje langelyje išvalykite visas ląsteles paspausdami šiukšliadėžės piktogramą.
✅ Yra daug regresijos metodų tipų, ir kurį pasirinkti priklauso nuo klausimo, į kurį norite atsakyti. Jei norite prognozuoti tikėtiną žmogaus ūgį pagal jo amžių, naudotumėte linijinę regresiją, nes ieškote **skaitinės vertės**. Jei jus domina, ar tam tikra virtuvė turėtų būti laikoma veganiška, ieškote **kategorijos priskyrimo**, todėl naudotumėte logistinę regresiją. Vėliau sužinosite daugiau apie logistinę regresiją. Pagalvokite apie keletą klausimų, kuriuos galite užduoti duomenims, ir kuris iš šių metodų būtų tinkamesnis.
Šioje dalyje naudosite nedidelį diabetui skirtų duomenų rinkinį, kuris įtrauktas į Scikit-learn mokymosi reikmėms. Įsivaizduokite, kad norite patikrinti gydymo poveikį diabetikams. Mašininio mokymosi modeliai galėtų padėti nustatyti, kurie pacientai geriau reaguos į gydymą, remiantis įvairių kintamųjų deriniais. Net ir paprastas regresijos modelis, vizualizuotas, gali parodyti informaciją apie kintamuosius, kurie padėtų organizuoti teorinius klinikinius tyrimus.
Pradėkime šią užduotį.
✅ Yra daug regresijos metodų, o kurį pasirinkti priklauso nuo ieškomo atsakymo. Jei norite numatyti galimą žmogaus ūgį pagal amžių, naudotumėte linijinę regresiją, nes ieškote **skaitmeninės reikšmės**. Jei domina, ar tam tikros virtuvės tipas yra veganiškas ar ne, ieškote **kategorijos priskyrimo**, tad naudotumėte logistinio regresijos metodą. Apie logistinę regresiją sužinosite vėliau. Pagalvokite apie klausimus, kuriuos galima užduoti duomenims, ir kuris metodas būtų tinkamesnis.
### Bibliotekų importavimas
Pradėkime šį darbą.
Šiai užduočiai importuosime keletą bibliotekų:
### Importuokite bibliotekas
- **matplotlib**. Tai naudinga [grafikų kūrimo priemonė](https://matplotlib.org/), kurią naudosime linijiniam grafikui kurti.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) yra naudinga biblioteka skaitinių duomenų tvarkymui Python kalboje.
Šiai užduočiai importuosime kelias bibliotekas:
- **matplotlib**. Tai naudingas [grafikų braižymo įrankis](https://matplotlib.org/), kurį naudosime linijinės diagramos braižymui.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) yra naudinga biblioteka skaitmeninių duomenų tvarkymui Python kalboje.
- **sklearn**. Tai [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) biblioteka.
Importuokite keletą bibliotekų, kurios padės atlikti užduotis.
Importuokite šias bibliotekas, kad padėtų jums atlikti užduotis.
1. Pridėkite importus, įvesdami šį kodą:
1. Įrašykite šį importo kodą:
```python
import matplotlib.pyplot as plt
@ -122,26 +123,26 @@ Importuokite keletą bibliotekų, kurios padės atlikti užduotis.
from sklearn import datasets, linear_model, model_selection
```
Aukščiau importuojate `matplotlib`, `numpy` ir importuojate `datasets`, `linear_model` bei `model_selection``sklearn`. `model_selection` naudojamas duomenų skirstymui į mokymo ir testavimo rinkinius.
Viršuje jūs importuojate `matplotlib`, `numpy` ir iš `sklearn` importuojate `datasets`, `linear_model` ir `model_selection`. `model_selection` naudojama duomenims skirstyti į treniruočių ir testavimo rinkinius.
### Diabeto duomenų rinkinys
Įmontuotas [diabeto duomenų rinkinys](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) apima 442 duomenų pavyzdžius apie diabetą, su 10 kintamųjų, kai kurie iš jų yra:
Integruotas [diabeto duomenų rinkinys](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) apima 442 mėginius apie diabetą su 10 požymių, iš kurių kai kurie yra:
- amžius: amžius metais
- kūno masės indeksas (BMI)
- vidutinis kraujo spaudimas
- s1 tc: T-ląstelės (tam tikros rūšies baltieji kraujo kūneliai)
- amžius: metai
- KMI: kūno masės indeksas
- kraujospūdis: vidutinis kraujo spaudimas
- s1 tc: T-ląstelės (tam tikros baltųjų kraujo ląstelių rūšys)
✅ Šis duomenų rinkinys apima 'lyties' sąvoką kaip svarbų kintamąjį diabetui tirti. Daugelis medicininių duomenų rinkinių apima tokio tipo dvejetainę klasifikaciją. Pagalvokite, kaip tokios kategorijos gali išskirti tam tikras populiacijos dalis iš gydymo.
✅ Šiame rinkinyje požymis „lytis“ yra svarbus diabetui tyrinėti. Daugelis medicininių duomenų rinkinių apima tokias dvejetaines klasifikacijas. Pagalvokite, kaip tokios kategorizacijos gali išskirti tam tikras gyventojų grupes iš gydymo galimybių.
Dabar įkelkite X ir y duomenis.
> 🎓 Prisiminkite, tai yra prižiūrimas mokymasis, ir mums reikia pavadinto 'y' tikslo.
> 🎓 Prisiminkite, kad tai yra prižiūrimas mokymasis, ir mums reikia pavadinto tikslo „y“.
Naujoje kodo ląstelėje įkelkite diabeto duomenų rinkinį, naudodami `load_diabetes()`. Įvestis `return_X_y=True` nurodo, kad `X` bus duomenų matrica, o `y` bus regresijos tikslas.
Naujoje kodo ląstelėje įkelkite diabeto duomenų rinkinį kviesdami `load_diabetes()`. Parametras `return_X_y=True` reiškia, kad `X` bus duomenų matrica, o `y` regresijos tikslas.
1. Pridėkite keletą spausdinimo komandų, kad parodytumėte duomenų matricos formą ir jos pirmąjį elementą:
1. Įtraukite spausdinimo komandas, kad parodytumėte duomenų matricos formą ir pirmą elementą:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@ -149,9 +150,9 @@ Naujoje kodo ląstelėje įkelkite diabeto duomenų rinkinį, naudodami `load_di
print(X[0])
```
Tai, ką gaunate kaip atsakymą, yra tuple. Jūs priskiriate pirmąsias dvi tuple reikšmes `X` ir `y` atitinkamai. Sužinokite daugiau [apie tuple](https://wikipedia.org/wiki/Tuple).
Gaunate tuple (kelių reikšmių krepšelį). Čia pirmos dvi tuple reikšmės priskiriamos atitinkamai `X` ir `y`. Daugiau apie [tuple](https://wikipedia.org/wiki/Tuple) sužinosite čia.
Galite matyti, kad šie duomenys turi 442 elementus, suformuotus į 10 elementų masyvus:
Matyti, kad duomenų rinke yra 442 elementai, kiekvienas sudarytas iš 10 elementų masyvo:
```text
(442, 10)
@ -159,62 +160,75 @@ Naujoje kodo ląstelėje įkelkite diabeto duomenų rinkinį, naudodami `load_di
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
✅ Pagalvokite apie ryšį tarp duomenų ir regresijos tikslo. Linijinė regresija prognozuoja ryšius tarp kintamojo X ir tikslo kintamojo y. Ar galite rasti [tikslą](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) diabeto duomenų rinkinyje dokumentacijoje? Ką šis duomenų rinkinys demonstruoja, atsižvelgiant į tikslą?
✅ Pagalvokite apie ryšį tarp duomenų ir regresijos tikslo. Linijinė regresija prognozuoja ryšius tarp požymio X ir tikslo y. Ar rasite šiame dokumente [pasiekiamą tikslą](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) diabeto duomenų rinkiniui? Ką šis rinkinys demonstruoja su tuo tikslu?
2. Tada pasirinkite dalį šio duomenų rinkinio, kurią norite pavaizduoti, pasirinkdami 3-ąją duomenų rinkinio stulpelį. Tai galite padaryti naudodami `:` operatorių, kad pasirinktumėte visas eilutes, ir tada pasirinkdami 3-ąjį stulpelį naudodami indeksą (2). Taip pat galite pertvarkyti duomenis į 2D masyvą - kaip reikalaujama grafiko kūrimui - naudodami `reshape(n_rows, n_columns)`. Jei vienas iš parametrų yra -1, atitinkama dimensija apskaičiuojama automatiškai.
2. Toliau pasirinkite dalį duomenų piešimui 3-ią stulpelį. Tai atliekama naudojant `:` visiems eilutėms ir stulpelio indeksą (2). Duomenis taip pat galima pertvarkyti į dvimatį masyvą, reikalingą braižymui, panaudojant `reshape(n_rows, n_columns)`. Jei vienas parametras yra -1, atitinkama dimensija apskaičiuojama automatiškai.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
✅ Bet kuriuo metu spausdinkite duomenis, kad patikrintumėte jų formą.
✅ Bet kada spausdinkite duomenis, kad patikrintumėte jų formą.
3. Dabar, kai turite duomenis, paruoštus grafiko kūrimui, galite patikrinti, ar mašina gali padėti nustatyti logišką skirstymą tarp skaičių šiame duomenų rinkinyje. Norėdami tai padaryti, turite padalyti tiek duomenis (X), tiek tikslą (y) į testavimo ir mokymo rinkinius. Scikit-learn turi paprastą būdą tai padaryti; galite padalyti savo testavimo duomenis tam tikru tašku.
3. Kai duomenys paruošti piešimui, pažiūrėkime, ar mašina gali padėti nustatyti logišką ribą tarp skaičių šiame rinkinyje. Tam turite padalinti ir duomenis (X), ir tikslą (y) į testavimo ir treniruočių rinkinius. Scikit-learn leidžia paprastai tai atlikti; galite nurodyti, kur skirti testavimo duomenis.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
4. Dabar esate pasiruošę treniruoti savo modelį! Įkelkite linijinės regresijos modelį ir treniruokite jį su savo X ir y mokymo rinkiniais, naudodami `model.fit()`:
4. Dabar galite apmokyti savo modelį! Įkelkite linijinės regresijos modelį ir apmokykite naudodami `X` ir `y` treniruočių rinkinius per `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
`model.fit()` yra funkcija, kurią pamatysite daugelyje ML bibliotekų, tokių kaip TensorFlow.
`model.fit()` yra funkcija, kurią rasite daugelyje ML bibliotekų, pavyzdžiui, TensorFlow.
5. Tada sukurkite prognozę, naudodami testavimo duomenis, naudodami funkciją `predict()`. Tai bus naudojama linijai nubrėžti tarp duomenų grupių.
5. Tuomet, sukūrę prognozę testavimo duomenims, naudokite funkciją `predict()`. Ji bus naudojama brėžti linijai tarp duomenų grupių.
```python
y_pred = model.predict(X_test)
```
6. Dabar laikas parodyti duomenis grafike. Matplotlib yra labai naudinga priemonė šiai užduočiai. Sukurkite sklaidos grafiką visiems X ir y testavimo duomenims, o prognozę naudokite linijai nubrėžti tinkamiausioje vietoje tarp modelio duomenų grupių.
6. Dabar laikas parodyti duomenis diagramoje. Matplotlib yra labai naudingas įrankis šiam tikslui. Sukurkite taškų diagramą (scatterplot) su visais X ir y testiniais duomenimis ir pagal prognozę nubrėžkite liniją tinkamiausioje vietoje tarp modelio duomenų grupių.
```python
plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3)
plt.xlabel('Scaled BMIs')
plt.ylabel('Disease Progression')
plt.title('A Graph Plot Showing Diabetes Progression Against BMI')
plt.show()
```
![taškų diagrama apie diabetą](../../../../translated_images/lt/scatterplot.ad8b356bcbb33be6.webp)
✅ Pagalvokite, kas čia vyksta. Tiesi linija eina per daugybę mažų duomenų taškų, bet ką ji iš tikrųjų daro? Ar galite pastebėti, kaip ši linija gali padėti numatyti, kur naujas, dar nematytas duomenų taškas turėtų atsidurti santykyje su grafiko y ašimi? Pabandykite žodžiais apibūdinti praktinį šio modelio pritaikymą.
✅ Šiek tiek pagalvokite, kas čia vyksta. Tiesė eina per daug mažų duomenų taškų, bet ką ji tiksliai daro? Ar galite matyti, kaip turėtumėte naudoti šią liniją, kad nuspėtumėte, kur naujas, nematytas duomenų taškas turėtų tilpti susiejant su grafiko y ašimi? Pabandykite žodžiais apibūdinti šio modelio praktinį naudojimą.
Sveikiname, jūs sukūrėte savo pirmąjį linijinį regresijos modelį, atlikote prognozę su juo ir pavaizdavote ją grafike!
Sveikiname, jūs sukūrėte savo pirmąjį tiesinės regresijos modelį, padarėte su juo prognozę ir pavaizdavote ją grafike!
---
## 🚀Iššūkis
Pavaizduokite kitą šio duomenų rinkinio kintamąjį. Užuomina: redaguokite šią eilutę: `X = X[:,2]`. Atsižvelgiant į šio duomenų rinkinio tikslą, ką galite sužinoti apie diabeto progresavimą kaip ligą?
## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
Nubraižykite kitą kintamąjį iš šio duomenų rinkinio. Užuomina: redaguokite šią eilutę: `X = X[:,2]`. Atsižvelgiant į šio duomenų rinkinio tikslą, ką galite sužinoti apie diabeto ligos progresavimą?
## [Paskaitos po testas](https://ff-quizzes.netlify.app/en/ml/)
## Apžvalga ir savarankiškas mokymasis
## Peržiūra ir savarankiškas mokymasis
Šioje pamokoje dirbote su paprasta linijine regresija, o ne su univariante ar daugiavariante regresija. Pasidomėkite skirtumais tarp šių metodų arba peržiūrėkite [šį vaizdo įrašą](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
Šiame vadove dirbote su paprasta tiesine regresija, o ne vienkryptia ar daugiakryptia tiesine regresija. Truputį paskaitykite apie skirtumus tarp šių metodų arba pažiūrėkite [šį vaizdo įrašą](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
Plačiau pasiskaitykite apie regresijos sąvoką ir pagalvokite, kokius klausimus galima atsakyti naudojant šią techniką. Norėdami giliau suprasti, peržiūrėkite šį [vadovą](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott).
Skaitykite daugiau apie regresijos sąvoką ir pagalvokite, kokius klausimus galima atsakyti naudojant šią techniką. Pasirinkite šį [vadovą](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), kad gilintumėte supratimą.
## Užduotis
## Namų darbai
[Kitas duomenų rinkinys](assignment.md)
---
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,62 +1,62 @@
# Sukurkite regresijos modelį naudodami Scikit-learn: paruoškite ir vizualizuokite duomenis
![Duomenų vizualizacijos infografika](../../../../2-Regression/2-Data/images/data-visualization.png)
![Duomenų vizualizacijos infografika](../../../../translated_images/lt/data-visualization.54e56dded7c1a804.webp)
Infografiką sukūrė [Dasani Madipalli](https://twitter.com/dasani_decoded)
Infografika parengė [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Prieš paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
## [Priešpaskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
> ### [Ši pamoka pasiekiama R kalba!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
> ### [Šios pamokos versija yra R kalba!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Įvadas
Dabar, kai turite visus įrankius, reikalingus pradėti kurti mašininio mokymosi modelius su Scikit-learn, esate pasiruošę pradėti užduoti klausimus savo duomenims. Dirbant su duomenimis ir taikant ML sprendimus, labai svarbu mokėti užduoti tinkamus klausimus, kad galėtumėte maksimaliai išnaudoti savo duomenų potencialą.
Dabar, kai turite įrankius, reikalingus pradėti kurti mašininio mokymosi modelius su Scikit-learn, esate pasirengę pradėti kelti klausimus savo duomenims. Dirbant su duomenimis ir taikant ML sprendimus, labai svarbu suprasti, kaip užduoti tinkamą klausimą, kad tinkamai atskleistumėte savo duomenų rinkinio potencialą.
Šioje pamokoje sužinosite:
- Kaip paruošti duomenis modelio kūrimui.
- Kaip paruošti duomenis modeliui kurti.
- Kaip naudoti Matplotlib duomenų vizualizacijai.
- Kaip naudoti Seaborn išraiškingesnei duomenų vizualizacijai.
## Tinkamų klausimų uždavimas savo duomenims
## Kaip tinkamai užduoti klausimą savo duomenims
Klausimas, į kurį norite gauti atsakymą, nulems, kokio tipo ML algoritmus naudosite. Atsakymo kokybė labai priklausys nuo jūsų duomenų pobūdžio.
Klausimas, į kurį norite gauti atsakymą, nulems, kokias ML algoritmų rūšis naudosite. O atsakymo kokybė labai priklausys nuo jūsų duomenų pobūdžio.
Pažvelkite į [duomenis](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), pateiktus šiai pamokai. Šį .csv failą galite atidaryti VS Code. Greitai peržvelgus matyti, kad yra tuščių langelių, mišrių tekstinių ir skaitinių duomenų. Taip pat yra keista stulpelis „Package“, kuriame duomenys yra maišyti tarp „sacks“, „bins“ ir kitų reikšmių. Duomenys, tiesą sakant, yra gana netvarkingi.
Peržiūrėkite [duomenis](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), pateiktus šiai pamokai. Galite atidaryti šį .csv failą VS Code. Greitas įvertinimas iškart rodo, kad yra tuščių reikšmių ir mišinių tarp tekstinių ir skaitinių duomenų. Taip pat yra keistas stulpelis „Package“, kuriame duomenys yra mišrūs: 'sacks', 'bins' ir kitos reikšmės. Iš tiesų šie duomenys yra šiek tiek chaotiški.
[![ML pradedantiesiems - Kaip analizuoti ir valyti duomenų rinkinį](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pradedantiesiems - Kaip analizuoti ir valyti duomenų rinkinį")
[![ML pradedantiesiems kaip analizuoti ir valyti duomenų rinkinį](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pradedantiesiems kaip analizuoti ir valyti duomenų rinkinį")
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie duomenų paruošimą šiai pamokai.
> 🎥 Spustelėkite aukščiau esantį paveikslėlį, kad peržiūrėtumėte trumpą vaizdo įrašą apie šios pamokos duomenų paruošimą.
Iš tiesų, retai pasitaiko, kad duomenų rinkinys būtų visiškai paruoštas ML modelio kūrimui iš karto. Šioje pamokoje sužinosite, kaip paruošti neapdorotą duomenų rinkinį naudojant standartines Python bibliotekas. Taip pat išmoksite įvairių duomenų vizualizavimo technikų.
Iš tiesų, nėra dažna, kad gautumėte duomenų rinkinį, kuris būtų visiškai paruoštas naudojimui ir mašininio mokymosi modeliui sukurti. Šioje pamokoje išmoksite, kaip paruošti žalius duomenis naudojant standartines Python bibliotekas. Taip pat išmoksite įvairias duomenų vizualizavimo technikas.
## Atvejo analizė: „moliūgų rinka“
Šiame aplanke rasite .csv failą šakniniame `data` aplanke, pavadintą [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), kuriame yra 1757 eilutės duomenų apie moliūgų rinką, suskirstytų pagal miestus. Tai yra neapdoroti duomenys, gauti iš [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), kuriuos platina Jungtinių Valstijų Žemės ūkio departamentas.
Šiame aplanke rasite .csv failą pagrindiniame `data` aplanke, vadinamą [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), kuriame yra 1757 duomenų eilutės apie moliūgų rinką, suskirstytos pagal miestus. Tai žali duomenys, išgauti iš [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), kuriuos platina Jungtinių Valstijų Žemės ūkio departamentas.
### Duomenų paruošimas
Šie duomenys yra viešojoje erdvėje. Juos galima atsisiųsti iš USDA svetainės atskirais failais pagal miestus. Kad išvengtume per daug atskirų failų, sujungėme visus miestų duomenis į vieną skaičiuoklę, taigi jau šiek tiek _paruošėme_ duomenis. Dabar pažvelkime į duomenis atidžiau.
Šie duomenys yra viešojo naudojimo. Juos galima atsisiųsti daugybėje atskirų failų, po vieną už miestą, iš USDA svetainės. Kad nesusidarytų per daug atskirų failų, mes sujungėme visų miestų duomenis į vieną lentelę, taigi šiek tiek jau _paruošėme_ duomenis. Dabar pažvelkime į duomenis iš arčiau.
### Moliūgų duomenys - pirminės išvados
### Moliūgų duomenys pirminės išvados
Ką pastebite apie šiuos duomenis? Jau matėte, kad yra mišrių tekstinių, skaitinių, tuščių ir keistų reikšmių, kurias reikia suprasti.
Ką pastebite apie šiuos duomenis? Jau matėte, kad yra mišinių tekstų, skaičių, trūkstamų reikšmių ir keistų duomenų, kuriuos reikia suprasti.
Kokį klausimą galite užduoti šiems duomenims, naudodami regresijos techniką? Pavyzdžiui: „Prognozuoti moliūgo kainą pardavimui tam tikrą mėnesį“. Pažvelgus į duomenis dar kartą, reikia atlikti tam tikrus pakeitimus, kad sukurtumėte tinkamą duomenų struktūrą šiai užduočiai.
Kokį klausimą galite užduoti šiems duomenims, naudodami regresijos techniką? Galbūt „Numatykite moliūgo kainą pardavimo mėnesį“. Vėl peržiūrint duomenis, reikia atlikti tam tikrus pakeitimus, kad sukurtumėte tinkamą duomenų struktūrą šiai užduočiai.
## Pratimai analizuokite moliūgų duomenis
## Užduotis - analizuoti moliūgų duomenis
Naudosime [Pandas](https://pandas.pydata.org/), (pavadinimas reiškia `Python Data Analysis`) labai naudingą įrankį duomenų formavimui, kad analizuosime ir paruoštume šiuos moliūgų duomenis.
Naudokime [Pandas](https://pandas.pydata.org/) (pavadinimas reiškia `Python Data Analysis`), labai naudingą įrankį duomenų formavimui, kad analizuotume ir paruoštume šiuos moliūgų duomenis.
### Pirmiausia patikrinkite, ar nėra trūkstamų datų
### Pirma, patikrinkite, ar nėra trūkstamų datų
Pirmiausia turėsite patikrinti, ar nėra trūkstamų datų:
Pirma reikės patikrinti, ar nėra trūkstamų datų:
1. Konvertuokite datas į mėnesio formatą (tai yra JAV datos, todėl formatas yra `MM/DD/YYYY`).
2. Ištraukite mėnesį į naują stulpelį.
Atidarykite _notebook.ipynb_ failą Visual Studio Code ir importuokite skaičiuoklę į naują Pandas dataframe.
Atidarykite _notebook.ipynb_ failą Visual Studio Code ir importuokite lentelę į naują Pandas dataframe objektą.
1. Naudokite `head()` funkciją, kad peržiūrėtumėte pirmas penkias eilutes.
1. Naudokite funkciją `head()`, kad peržiūrėtumėte pirmas penkias eilutes.
```python
import pandas as pd
@ -64,28 +64,28 @@ Atidarykite _notebook.ipynb_ failą Visual Studio Code ir importuokite skaičiuo
pumpkins.head()
```
✅ Kokią funkciją naudotumėte, kad peržiūrėtumėte paskutines penkias eilutes?
✅ Kurią funkciją naudotumėte, norėdami peržiūrėti paskutines penkias eilutes?
1. Patikrinkite, ar dabartiniame dataframe yra trūkstamų duomenų:
1. Patikrinkite, ar dabartiniame dataframe ra trūkstamų duomenų:
```python
pumpkins.isnull().sum()
```
Yra trūkstamų duomenų, tačiau galbūt tai nesvarbu šiai užduočiai.
Yra trūkstamų duomenų, bet galbūt tai neturės didelės reikšmės atliekant užduotį.
1. Kad jūsų dataframe būtų lengviau dirbti, pasirinkite tik reikalingus stulpelius, naudodami `loc` funkciją, kuri iš originalaus dataframe ištraukia eilutes (pateiktas kaip pirmas parametras) ir stulpelius (pateiktus kaip antras parametras). Ženklas `:` žemiau reiškia „visos eilutės“.
1. Kad būtų patogiau dirbti su dataframe, pasirinkite tik reikalingus stulpelius naudodami `loc` funkciją, kuri iš originalaus dataframe išrenka grupę eilučių (pirmasis parametras) ir stulpelių (antrasis parametras). Žymėjimas `:` žemiau reiškia „visas eilutes“.
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
### Antra, nustatykite vidutinę moliūgo kainą
### Antra nustatykite vidutinę moliūgo kainą
Pagalvokite, kaip nustatyti vidutinę moliūgo kainą tam tikrą mėnesį. Kokius stulpelius pasirinktumėte šiai užduočiai? Užuomina: jums reikės 3 stulpelių.
Pagalvokite, kaip nustatyti vidutinę moliūgo kainą tam tikram mėnesiui. Kokius stulpelius pasirinktumėte šiai užduočiai? Patarimas: reikės 3 stulpelių.
Sprendimas: paimkite vidurkį iš `Low Price` ir `High Price` stulpelių, kad užpildytumėte naują Price stulpelį, ir konvertuokite Date stulpelį, kad būtų rodomas tik mėnuo. Laimei, pagal aukščiau atliktą patikrinimą, nėra trūkstamų duomenų datoms ar kainoms.
Sprendimas: imkite vidurkį iš `Low Price` ir `High Price` stulpelių, kad užpildytumėte naują stulpelį Price, o Date stulpelį konvertuokite taip, kad jis rodytų tik mėnesį. Laimei, pagal aukščiau atliktą patikrą, trūkstamų duomenų apie datas ir kainas nėra.
1. Norėdami apskaičiuoti vidurkį, pridėkite šį kodą:
@ -96,7 +96,7 @@ Sprendimas: paimkite vidurkį iš `Low Price` ir `High Price` stulpelių, kad u
```
Galite laisvai spausdinti bet kokius duomenis, kuriuos norite patikrinti, naudodami `print(month)`.
Drąsiai spausdinkite bet kokius duomenis su `print(month)`, jei norite patikrinti.
2. Dabar nukopijuokite konvertuotus duomenis į naują Pandas dataframe:
@ -104,29 +104,29 @@ Sprendimas: paimkite vidurkį iš `Low Price` ir `High Price` stulpelių, kad u
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
Spausdindami savo dataframe pamatysite švarią, tvarkingą duomenų rinkinį, kuriame galėsite kurti naują regresijos modelį.
Spausdinant dataframe pamatysite švarų, tvarkingą duomenų rinkinį, ant kurio galėsite kurti naują regresijos modelį.
### Bet palaukite! Čia kažkas keisto
### Bet palaukite! Čia yra keletas keistenybių
Jei pažvelgsite į `Package` stulpelį, moliūgai parduodami įvairiomis konfigūracijomis. Kai kurie parduodami „1 1/9 bushel“ matavimo vienetais, kai kurie „1/2 bushel“ matavimo vienetais, kai kurie pagal moliūgą, kai kurie pagal svorį, o kai kurie didelėse dėžėse su skirtingais pločiais.
Pažvelgus į `Package` stulpelį matyti, kad moliūgai parduodami įvairiomis formomis. Kai kurie parduodami '1 1/9 bushel' matmenimis, kai kurie '1/2 bushel', kai kurie už vienetą, kai kurie už svarą, o kai kurie didelėse dėžėse, kurių plotis skirtingas.
> Moliūgus atrodo labai sunku sverti nuosekliai
> Moliūgų svoris atrodo sunkiai nuosekliai matuojamas
Gilindamiesi į originalius duomenis, pastebėsite, kad viskas, kas turi `Unit of Sale` reikšmę „EACH“ arba „PER BIN“, taip pat turi `Package` tipą pagal colį, biną arba „each“. Moliūgus atrodo labai sunku sverti nuosekliai, todėl filtruokime juos, pasirinkdami tik tuos moliūgus, kurių `Package` stulpelyje yra žodis „bushel“.
Iš pradinių duomenų matyti, kad viskas, kur `Unit of Sale` lygu 'EACH' arba 'PER BIN', taip pat turi `Package` tipą per colį, per dėžę arba „kiekvieną“. Moliūgus sunku nuosekliai pasverti, tad filtruokime juos pasirinkdami tik tuos moliūgus, kurių `Package` stulpelyje yra žodis 'bushel'.
1. Pridėkite filtrą failo viršuje, po pradinio .csv importo:
1. Pridėkite filtrą failo viršuje, po pradiniu .csv importu:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
Jei dabar spausdinsite duomenis, pamatysite, kad gaunate tik apie 415 eilučių duomenų, kuriuose moliūgai pateikiami pagal bushel.
Jei dabar spausdinsite duomenis, matysite, kad gaunate tik apie 415 eilučių, kurių duomenys apie moliūgus pagal bushelį.
### Bet palaukite! Dar vienas dalykas, kurį reikia padaryti
### Bet palaukite! Dar reikia vieno žingsnio
Ar pastebėjote, kad bushel kiekis skiriasi kiekvienoje eilutėje? Jums reikia normalizuoti kainas, kad būtų rodomos kainos pagal bushel, todėl atlikite keletą skaičiavimų, kad standartizuotumėte.
Pastebėjote, kad kiekvienos eilutės bushelio kiekis skiriasi? Reikia normalizuoti kainas, kad jos būtų nurodytos už vieną bushelį, tad atlikite matematinius veiksmus, kad standartizuotumėte kainas.
1. Pridėkite šias eilutes po bloko, kuris sukuria new_pumpkins dataframe:
1. Pridėkite šias eilutes po bloko, kuris kuria new_pumpkins dataframe:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@ -134,29 +134,29 @@ Ar pastebėjote, kad bushel kiekis skiriasi kiekvienoje eilutėje? Jums reikia n
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
✅ Pasak [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), bushel svoris priklauso nuo produkto tipo, nes tai yra tūrio matavimo vienetas. „Pavyzdžiui, pomidorų bushel turėtų sverti 56 svarus... Lapai ir žalumynai užima daugiau vietos su mažesniu svoriu, todėl špinatų bushel yra tik 20 svarų.“ Tai gana sudėtinga! Nesivarginkime su bushel į svarus konversija, o vietoj to kainą skaičiuokime pagal bushel. Visa ši moliūgų bushel analizė, tačiau, parodo, kaip svarbu suprasti savo duomenų pobūdį!
✅ Pasak [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), bushelio svoris priklauso nuo produkto tipo, nes tai tūrio matas. „Pavyzdžiui, vienas bushelis pomidorų turėtų sverti 56 svarus... Lapai ir žalumynai užima daugiau vietos, bet sveria mažiau, todėl vienas špinatų bushelis sveria tik 20 svarų.“ Viskas gana sudėtinga! Neskaičiuokime konversijos iš bushelio į svarą, o vertinkime kainas pagal bushelį. Visa ši moliūgų bushelių analizė parodo, kaip svarbu suprasti savo duomenų prigimtį!
Dabar galite analizuoti kainas pagal vienetą, remdamiesi jų bushel matavimu. Jei dar kartą spausdinsite duomenis, pamatysite, kaip jie yra standartizuoti.
Dabar galite analizuoti vieneto kainą pagal jų bushelio matavimą. Jei dar kartą atspausdinsite duomenis, matysite, kaip jie yra standartizuoti.
✅ Ar pastebėjote, kad moliūgai, parduodami pagal pusę bushel, yra labai brangūs? Ar galite suprasti, kodėl? Užuomina: maži moliūgai yra daug brangesni nei dideli, tikriausiai todėl, kad jų yra daug daugiau viename bushel, atsižvelgiant į nepanaudotą vietą, kurią užima vienas didelis tuščiaviduris pyrago moliūgas.
✅ Ar pastebėjote, kad moliūgai, parduodami per pusę bushelio, yra labai brangūs? Ar galite suprasti, kodėl? Patarimas: mažieji moliūgai kainuoja gerokai daugiau nei didieji, tikriausiai todėl, kad jų bushelyje yra daug daugiau, atsižvelgiant į neišnaudotą vietą, kurią užima didelis didelis moliūgas.
## Vizualizacijos strategijos
## Vizualizavimo strategijos
Duomenų mokslininko vaidmuo yra parodyti duomenų kokybę ir pobūdį, su kuriais jis dirba. Tam jie dažnai kuria įdomias vizualizacijas, tokias kaip sklaidos diagramos, grafikai ir lentelės, kurios parodo skirtingus duomenų aspektus. Tokiu būdu jie gali vizualiai parodyti ryšius ir spragas, kurių kitaip būtų sunku pastebėti.
Duomenų mokslininko vaidmuo yra parodyti, kokie duomenys yra ir kokios jų savybės. Tam dažnai kuriami įdomūs vaizdai, diagramos ir grafikai, kurie atskleidžia santykius ir spragas, kurias kitaip sunku pastebėti.
[![ML pradedantiesiems - Kaip vizualizuoti duomenis naudojant Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML pradedantiesiems - Kaip vizualizuoti duomenis naudojant Matplotlib")
[![ML pradedantiesiems kaip vizualizuoti duomenis su Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML pradedantiesiems kaip vizualizuoti duomenis su Matplotlib")
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie duomenų vizualizaciją šiai pamokai.
> 🎥 Spustelėkite paveikslėlį aukščiau, norėdami peržiūrėti trumpą vaizdo įrašą apie šios pamokos duomenų vizualizaciją.
Vizualizacijos taip pat gali padėti nustatyti, kuris mašininio mokymosi metodas yra tinkamiausias duomenims. Pavyzdžiui, sklaidos diagrama, kuri atrodo kaip linija, rodo, kad duomenys yra tinkami linijinės regresijos užduočiai.
Vizualizacijos taip pat padeda nustatyti, kokia mašininio mokymosi technika yra tinkamiausia duomenims. Pavyzdžiui, taškinė diagrama, kuri atrodo kaip sekanti liniją, rodo, kad duomenys gali būti tinkami linijinei regresijai.
Viena duomenų vizualizacijos biblioteka, kuri gerai veikia Jupyter užrašuose, yra [Matplotlib](https://matplotlib.org/) (ją taip pat matėte ankstesnėje pamokoje).
Viena iš bibliotekų duomenų vizualizacijai, kuri gerai veikia Jupyter užrašų knygelėse, yra [Matplotlib](https://matplotlib.org/) (kurią jau matėte ankstesnėje pamokoje).
> Gaukite daugiau patirties su duomenų vizualizacija [šiame vadove](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
> Gaukite daugiau patirties su duomenų vizualizacija šiuose [mokymuose](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Užduotis - eksperimentuokite su Matplotlib
## Pratimai eksperimentuokite su Matplotlib
Pabandykite sukurti keletą pagrindinių diagramų, kad parodytumėte naują dataframe, kurį ką tik sukūrėte. Ką parodytų pagrindinė linijinė diagrama?
Pabandykite sukurti pagrindines diagramas, kad parodytumėte ką tik sukurtą dataframe. Ką rodo paprasta linijinė diagrama?
1. Importuokite Matplotlib failo viršuje, po Pandas importo:
@ -164,8 +164,8 @@ Pabandykite sukurti keletą pagrindinių diagramų, kad parodytumėte naują dat
import matplotlib.pyplot as plt
```
1. Paleiskite visą užrašų knygelę iš naujo, kad atnaujintumėte.
1. Užrašų knygelės apačioje pridėkite langelį, kad duomenys būtų pateikti kaip dėžutė:
1. Perpaleiskite visą užrašų knygelę.
1. Apačioje pridėkite langelį, kad nupieštumėte duomenis kaip dėžutės diagramą:
```python
price = new_pumpkins.Price
@ -174,44 +174,121 @@ Pabandykite sukurti keletą pagrindinių diagramų, kad parodytumėte naują dat
plt.show()
```
![Sklaidos diagrama, rodanti kainos ir mėnesio ryšį](../../../../2-Regression/2-Data/images/scatterplot.png)
![Taškinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../translated_images/lt/scatterplot.b6868f44cbd2051c.webp)
Ar tai naudinga diagrama? Ar kas nors joje jus nustebina?
Ar ši diagrama naudinga? Ar kažkas jus nustebino?
Ji nėra ypač naudinga, nes tiesiog rodo jūsų duomenis kaip taškų sklaidą tam tikrame mėnesyje.
Ji nėra ypač naudinga, nes tik rodo jūsų duomenis kaip pasklidusius taškus tam tikrame mėnesyje.
### Padarykite ją naudingą
Kad diagramos rodytų naudingus duomenis, paprastai reikia kažkaip grupuoti duomenis. Pabandykime sukurti diagramą, kur y ašis rodo mėnesius, o duomenys demonstruoja duomenų pasiskirstymą.
Kad diagramos rodytų naudingus duomenis, dažnai reikia duomenis kažkaip sugrupuoti. Pabandykime sukurti diagramą, kur y ašis rodo mėnesius, o duomenys rodo jų pasiskirstymą.
1. Pridėkite langelį, kad sukurtumėte grupuotą stulpelinę diagramą:
1. Pridėkite langelį, kuris sukurs grupinę stulpelinę diagramą:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
![Stulpelinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../2-Regression/2-Data/images/barchart.png)
![Stulpelinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../translated_images/lt/barchart.a833ea9194346d76.webp)
Tai naudingesnė duomenų vizualizacija! Ji rodo, kad aukščiausia moliūgų kaina yra rugsėjį ir spalį. Ar tai atitinka jūsų lūkesčius? Kodėl ar kodėl ne?
## Pratimai eksperimentuokite su Seaborn
Matplotlib yra galinga, bet sukurti paruoštą diagramą gali prireikti daug kodo. [Seaborn](https://seaborn.pydata.org/) yra biblioteka, sukurta _virš_ Matplotlib, skirta statistinei duomenų vizualizacijai. Ji tiesiogiai dirba su Pandas dataframe objektais, taiko patrauklius numatytuosius stilius ir leidžia kurti informatyvias diagramas su daug mažiau kodo. Kadangi Seaborn grąžina Matplotlib objektus, vis dar galite naudoti viską, ką jau žinote apie Matplotlib, rezultatui tikslinti.
> Jei dar neturite įdiegę Seaborn, įdiekite jį su `pip install seaborn`.
1. Importuokite Seaborn užrašų knygelės viršuje, po kitų importų. Paprastai jis importuojamas kaip `sns`:
```python
import seaborn as sns
```
### Taškinės diagramos santykiams atskleisti
Svarbi duomenų tyrimo dalis prieš kuriant modelį ieškoti _santykių_ tarp kintamųjų. [Taškinė diagrama](https://en.wikipedia.org/wiki/Scatter_plot) yra vienas geriausių įrankių tokiam tikslui: jei taškai atrodo kertantys liniją, gali būti, kad du kintamieji yra susiję, o tai rodo, kad linijinės regresijos modelis gali veikti.
1. Atkurkite ankstesnę kainos ir mėnesio taškinę diagramą, šį kartą naudodami Seaborn funkciją [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (santykinė diagrama), kuri tiesiogiai dirba su jūsų dataframe stulpeliais:
```python
sns.relplot(x="Price", y="Month", data=new_pumpkins)
```
![Seaborn taškinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../translated_images/lt/relplot.a03837d8f0329cec.webp)
Atkreipkite dėmesį, kaip jūs perduodate _stulpelių pavadinimus_ ir dataframe, o Seaborn pats sukuria ašių etiketes.
2. Galite pakeisti į linijinę diagramą, perduodami `kind="line"`. Seaborn net piešia šešėlinę juostą, rodančią pasitikėjimo intervalą aplink liniją:
```python
sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
```
![Seaborn linijinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../translated_images/lt/lineplot.f9034ba47b1e30ee.webp)
Šie duomenys yra gana triukšmingi, todėl linijinė diagrama nėra aiškiausias pasirinkimas čia bet tai rodo, kaip lengvai galite keisti diagramų tipus Seaborn.
### Stulpelinės diagramos rodant pasiskirstymus
Anksčiau jūs rankiniu būdu grupavote duomenis, kad sukurtumėte juostinę diagramą su Matplotlib. Seaborn funkcija [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorinė diagrama) gali atlikti grupavimą ir agregavimą už jus. Pagal numatytuosius nustatymus `kind="bar"` rodo kiekvienos kategorijos vidurkį su juoda linija, nurodančia pasitikėjimo intervalą.
1. Sukurkite juostinę diagramą, rodančią vidutinę kainą per mėnesį:
```python
sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
```
![Seaborn juostinė diagrama, rodanti kainų pasiskirstymą pagal mėnesius](../../../../translated_images/lt/catplot.e73fc35fdf96242b.webp)
Tai patvirtina, ką matėte su Matplotlib kainos pasiekia piką apie rugsėjį ir spalių tačiau Seaborn taip pat vizualizuoja, kiek kaina _svyruoja_ kiekvieno mėnesio viduje.
### Karštųjų taškų žemėlapiai rodantys koreliacijas
Sklaidos diagramos lygina po du kintamuosius. Turint kelias skaitines stulpelius, [karštųjų taškų žemėlapis](https://en.wikipedia.org/wiki/Heat_map) leidžia iš karto matyti ryšio stiprumą tarp _kiekvienos_ poros stulpelių. Tai įprastas būdas pastebėti, kurie bruožai yra labiausiai koreliuoti prieš pasirenkant, ką naudoti modeliui (ir vėliau tokio tipo diagrama naudojama rodyti painiavos matricas klasifikacijoje).
1. Sukurkite koreliacijos matricą su Pandas, tada nupieškite ją naudodami Seaborn funkciją [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Parinktis `annot=True` išspausdina koreliacijos reikšmes kiekviename langelyje:
```python
correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
sns.heatmap(correlations, annot=True, cmap="coolwarm")
```
![Seaborn karštųjų taškų žemėlapis, rodantis koreliacijas tarp skaitinių stulpelių](../../../../translated_images/lt/heatmap.bd98dce43b404c57.webp)
Reikšmės, artimos `1` (arba `-1`), reiškia, kad stulpeliai yra stipriai _linijiškai_ koreliuoti. Pastebėkite, kaip `Low Price` ir `High Price` beveik idealiai koreliuojasi. O štai `Month` rodo tik silpną tiesinę koreliaciją su kaina nors juostinė diagrama aukščiau atskleidė aiškų sezonišką piko laikotarpį rugsėjį ir spaly. Tai svarbi pamoka: koreliacijos koeficientas matuoja tik _tiesines_ priklausomybes, todėl gali nepastebėti sezoninių ar kitaip nelinijinių modelių. ✅ Kodėl naudinga pažvelgti tiek į karštųjų taškų žemėlapį, tiek į diagramas, kaip juostinė diagrama, prieš nusprendžiant, kuriuos stulpelius naudoti?
### Matplotlib ar Seaborn?
Abu bibliotekos verta žinoti:
- **Matplotlib** suteikia smulkią kontrolę kiekvienam diagramos elementui ir yra pagrindas, ant kurio statomos beveik visos kitos Python braižymo bibliotekos.
- **Seaborn** siūlo aukštesnio lygio funkcijas ir patrauklius numatytus nustatymus statistinėms diagramoms, tiesiogiai dirba su duomenų rėmeliais ir dažnai yra greitesnis atliekant tyrinėjamuosius duomenų analizės darbus.
Tai yra naudingesnė duomenų vizualizacija! Atrodo, kad didžiausia moliūgų kaina yra rugsėjį ir spalį. Ar tai atitinka jūsų lūkesčius? Kodėl arba kodėl ne?
Dažniausias darbo eiga naudoti Seaborn greitam duomenų tyrinėjimui, o tada pereiti prie Matplotlib, kai reikia pritaikyti detales.
---
## 🚀Iššūkis
Ištyrinėkite skirtingus vizualizacijos tipus, kuriuos siūlo Matplotlib. Kurie tipai yra tinkamiausi regresijos problemoms?
Tyrinėkite skirtingus Matplotlib ir Seaborn siūlomus vizualizacijos tipus. Kokie tipai labiausiai tinka regresijos uždaviniams?
## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
## [Paskaitos pabaigos testas](https://ff-quizzes.netlify.app/en/ml/)
## Apžvalga ir savarankiškas mokymasis
Pažvelkite į daugybę būdų vizualizuoti duomenis. Sudarykite sąrašą įvairių bibliotekų ir pažymėkite, kurios yra geriausios tam tikriems užduočių tipams, pavyzdžiui, 2D vizualizacijoms ir 3D vizualizacijoms. Ką atrandate?
Pažiūrėkite į daugybę būdų vizualizuoti duomenis. Sudarykite įvairių turimų bibliotekų sąrašą ir pažymėkite, kurios geriausiai tinka tam tikroms užduotims, pavyzdžiui, 2D vizualizacijoms prieš 3D vizualizacijas. Ką atrandate?
## Užduotis
## Namų darbai
[Duomenų vizualizacijos tyrinėjimas](assignment.md)
[Vizualizacijos tyrinėjimas](assignment.md)
---
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, atkreipiame dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudotis profesionalių vertėjų paslaugomis. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus aiškinimus, kylančius dėl šio vertimo naudojimo.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"## Linijinė regresija moliūgams - 2 pamoka\n"
]
},
{
"cell_type": "code",
@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Vizualizavimas naudojant Seaborn\n",
"\n",
"[Seaborn](https://seaborn.pydata.org/) yra sukurtas ant Matplotlib pagrindo ir tiesiogiai veikia su duomenų rėmeliais, todėl labai greitai galima sukurti patrauklias statistines diagramas, naudojant labai mažai kodo.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sklaidos diagramos santykiams parodyti\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Juostiniai diagramos parodyti pasiskirstymus\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
"source": [
"sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Atsakomybės apribojimas**: \nŠis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.\n"
"### Šilumos žemėlapiai, rodantys koreliacijas\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
"sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Atsakomybės apribojimas**:\nŠis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
"orig_nbformat": 2,
"coopTranslator": {
"original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
"translation_date": "2025-09-03T19:44:53+00:00",
"source_file": "2-Regression/2-Data/solution/notebook.ipynb",
"language_code": "lt"
}
"orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2

@ -1,47 +1,47 @@
# Įvadas į stiprinamąjį mokymą ir Q-mokymą
# Įvadas į stiprinamąjį mokymąsi ir Q-mokymąsi
![Stiprinamojo mokymosi santrauka sketchnote](../../../../sketchnotes/ml-reinforcement.png)
> Sketchnote sukūrė [Tomomi Imura](https://www.twitter.com/girlie_mac)
![Stiprinamojo mokymosi apžvalga mašininiame mokyme iliustruota sketchnote](../../../../translated_images/lt/ml-reinforcement.94024374d63348db.webp)
> Sketchnote autorius [Tomomi Imura](https://www.twitter.com/girlie_mac)
Stiprinamasis mokymasis apima tris svarbias sąvokas: agentą, tam tikras būsenas ir veiksmų rinkinį kiekvienai būsenai. Atlikdamas veiksmą tam tikroje būsenoje, agentas gauna atlygį. Įsivaizduokite kompiuterinį žaidimą „Super Mario“. Jūs esate Mario, esate žaidimo lygyje, stovite šalia uolos krašto. Virš jūsų yra moneta. Jūs, būdamas Mario, tam tikroje žaidimo lygio pozicijoje... tai yra jūsų būsena. Žengus žingsnį į dešinę (veiksmas), nukristumėte nuo uolos, ir tai suteiktų jums mažą skaitinį rezultatą. Tačiau paspaudus šuolio mygtuką, pelnytumėte tašką ir išliktumėte gyvas. Tai yra teigiamas rezultatas, kuris turėtų suteikti jums teigiamą skaitinį rezultatą.
Stiprinamasis mokymasis apima tris svarbias sąvokas: agentą, kai kurias būsenas ir kiekvienai būsenai priskirtą veiksmų rinkinį. Vykdydamas veiksmą tam tikroje būsenoje, agentas gauna apdovanojimą. Vėl įsivaizduokite kompiuterinį žaidimą Super Mario. Jūs esate Mario, esate žaidimo lygyje prie skardžio krašto. Virš jūsų yra moneta. Jūs, būdamas Mario, žaidimo lygyje tam tikroje vietoje ... tai yra jūsų būsena. Padaryti žingsnį į dešinę (veiksmas) reiškia, kad nukrisite nuo skardžio ir gausite mažą skaičių kaip rezultatą. Tačiau paspaudus šokinėjimo mygtuką, jūs pelnysite tašką ir liksite gyvas. Tai yra teigiamas rezultatas, už kurį turėtumėte gauti teigiamą skaitinį įvertinimą.
Naudodami stiprinamąjį mokymą ir simuliatorių (žaidimą), galite išmokti žaisti žaidimą taip, kad maksimaliai padidintumėte atlygį, t. y. išliktumėte gyvas ir surinktumėte kuo daugiau taškų.
Naudodami stiprinamąjį mokymąsi ir simuliatorių (žaidimą), galite išmokti žaisti žaidimą taip, kad maksimalizuotumėte apdovanojimą - išlikimą ir taškų skaičių.
[![Įvadas į stiprinamąjį mokymą](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo)
[![Įvadas į stiprinamąjį mokymąsi](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad išgirstumėte Dmitrijų kalbant apie stiprinamąjį mokymą
> 🎥 Spustelėkite paveikslėlį aukščiau, norėdami išgirsti Dmitrijų apie stiprinamąjį mokymąsi
## [Prieš paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
## [Priešpaskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
## Reikalavimai ir paruošimas
## Reikalingos žinios ir nustatymai
Šioje pamokoje eksperimentuosime su Python kodu. Turėtumėte sugebėti paleisti Jupyter Notebook kodą iš šios pamokos, arba savo kompiuteryje, arba debesyje.
Šiame pamokoje eksperimentuosime su kai kuriu Python kodu. Jūs turėtumėte sugebėti paleisti Jupyter Notebook kodą iš šios pamokos savo kompiuteryje arba debesyje.
Galite atidaryti [pamokos užrašų knygelę](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ir peržiūrėti šią pamoką, kad ją sukurtumėte.
Galite atidaryti [pamokos užrašų knygelę](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ir pereiti šią pamoką, kad sukurtumėte projektą.
> **Pastaba:** Jei atidarote šį kodą iš debesies, taip pat turite gauti [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) failą, kuris naudojamas užrašų knygelės kode. Įdėkite jį į tą patį katalogą kaip ir užrašų knygelę.
> **Pastaba:** Jei atidarote šį kodą iš debesies, taip pat turite atsisiųsti [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) failą, kuris naudojamas užrašų knygelės kode. Įdėkite jį į tą patį katalogą kaip užrašų knygelę.
## Įvadas
Šioje pamokoje tyrinėsime **[Petro ir vilko](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** pasaulį, įkvėptą muzikinės pasakos, sukurtos rusų kompozitoriaus [Sergejaus Prokofjevo](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Naudosime **stiprinamąjį mokymą**, kad Petras galėtų tyrinėti savo aplinką, rinkti skanius obuolius ir vengti susitikimo su vilku.
Šioje pamokoje tyrinėsime **[Petras ir vilkas](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** pasaulį, įkvėptą muzikos pasakos, kurį sukūrė rusų kompozitorius [Sergejus Prokofjevas](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Naudosime **stiprinamąjį mokymąsi**, kad Petras tyrinėtų savo aplinką, rinktų skanius obuolius ir vengė susitikti su vilku.
**Stiprinamasis mokymasis** (RL) yra mokymosi technika, leidžianti išmokti optimalaus **agento** elgesio tam tikroje **aplinkoje**, atliekant daugybę eksperimentų. Agentas šioje aplinkoje turėtų turėti tam tikrą **tikslą**, apibrėžtą **atlygio funkcija**.
**Stiprinamasis mokymasis** (RL) yra mokymosi metodas, leidžiantis išmokti optimalią elgseną **agento** tam tikroje **aplinkoje** vykdant daugybę eksperimentų. Agentas šioje aplinkoje turi turėti tam tikrą **tikslą**, apibrėžtą **apdovanojimo funkcija**.
## Aplinka
Paprasčiausiai, įsivaizduokime Petro pasaulį kaip kvadratinę lentą, kurios dydis yra `plotis` x `aukštis`, panašiai kaip ši:
Paprastumui, Petras pasaulį laikysime kvadratine lenta, kurios dydis yra `width` x `height`, kaip parodyta žemiau:
![Petro aplinka](../../../../8-Reinforcement/1-QLearning/images/environment.png)
![Petro aplinka](../../../../translated_images/lt/environment.40ba3cb66256c93f.webp)
Kiekviena ląstelė šioje lentoje gali būti:
Kiekviena lentoje esanti ląstelė gali būti vienas iš šių dalykų:
* **žemė**, ant kurios Petras ir kiti padarai gali vaikščioti.
* **vanduo**, ant kurio, akivaizdu, negalima vaikščioti.
* **medis** arba **žolė**, vieta, kur galima pailsėti.
* **obuolys**, kurį Petras norėtų rasti, kad pasimaitintų.
* **žemė**, ant kurios gali vaikščioti Petras ir kitos būtybės.
* **vanduo**, ant kurio žinoma negalima vaikščioti.
* **medis** arba **žolė**, vieta, kur gali pailsėti.
* **obuolys**, kuris reiškia tai, ko Petras džiaugtųsi radęs ir galėtų pavalgyti.
* **vilkas**, kuris yra pavojingas ir kurio reikėtų vengti.
Yra atskiras Python modulis, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), kuriame yra kodas, skirtas dirbti su šia aplinka. Kadangi šis kodas nėra svarbus mūsų koncepcijoms suprasti, mes importuosime modulį ir naudosime jį, kad sukurtume pavyzdinę lentą (kodo blokas 1):
Yra atskiras Python modulis, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), kuris turi kodą darbui su šia aplinka. Kadangi šis kodas nėra svarbus mūsų koncepcijų supratimui, importuosime modulį ir naudosime jį pavyzdinės lentos sukūrimui (kodo blokas 1):
```python
from rlboard import *
@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
Šis kodas turėtų atspausdinti aplinkos vaizdą, panašų į aukščiau pateiktą.
Šis kodas turėtų atspausdinti aplinkos vaizdą panašų į aukščiau pateiktą.
## Veiksmai ir politika
Mūsų pavyzdyje Petro tikslas būtų rasti obuolį, vengiant vilko ir kitų kliūčių. Tam jis iš esmės gali vaikščioti, kol suras obuolį.
Mūsų pavyzdyje Petro tikslas būtų rasti obuolį, vengiant vilko ir kitų kliūčių. Tam jis pagal paskirtį gali vaikščioti, kol suras obuolį.
Todėl bet kurioje pozicijoje jis gali pasirinkti vieną iš šių veiksmų: aukštyn, žemyn, kairėn ir dešinėn.
Todėl bet kurioje pozicijoje jis gali pasirinkti vieną iš šių veiksmų: aukštyn, žemyn, į kairę ir į dešinę.
Šiuos veiksmus apibrėšime kaip žodyną ir susiesime juos su atitinkamais koordinačių pokyčių poromis. Pavyzdžiui, judėjimas dešinėn (`R`) atitiktų porą `(1,0)`. (kodo blokas 2):
Apibrėšime šiuos veiksmus kaip žodyną ir susiesime juos su atitinkamais koordinatų pokyčių pora. Pavyzdžiui, judėjimas į dešinę (`R`) atitinka porą `(1,0)`. (kodo blokas 2):
```python
actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) }
action_idx = { a : i for i,a in enumerate(actions.keys()) }
```
Apibendrinant, šio scenarijaus strategija ir tikslas yra tokie:
Apibendrinant, strategija ir šio scenarijaus tikslas yra tokie:
- **Strategija**, mūsų agento (Petro) yra apibrėžta vadinamąja **politika**. Politika yra funkcija, kuri grąžina veiksmą bet kurioje būsenoje. Mūsų atveju problemos būsena yra lentos vaizdas, įskaitant žaidėjo dabartinę poziciją.
- **Strategija**, mūsų agento (Petro) yra apibrėžta taip vadinama **politika**. Politika yra funkcija, kuri bet kurioje būsenoje grąžina veiksmą. Mūsų atveju problemos būsena yra atvaizduojama lenta, įskaitant dabartinę žaidėjo poziciją.
- **Tikslas**, stiprinamojo mokymosi yra galiausiai išmokti gerą politiką, kuri leis efektyviai išspręsti problemą. Tačiau kaip pagrindą, apsvarstykime paprasčiausią politiką, vadinamą **atsitiktiniu vaikščiojimu**.
- **Tikslas**, stiprinamojo mokymosi yra pagaliau išmokti gerą politiką, leidžiančią efektyviai spręsti problemą. Tačiau kaip pradinį tašką laikykime paprasčiausią politiką, vadinamą **atsitiktiniu ėjimu**.
## Atsitiktinis vaikščiojimas
## Atsitiktinis ėjimas
Pirmiausia išspręskime mūsų problemą įgyvendindami atsitiktinio vaikščiojimo strategiją. Naudodami atsitiktinį vaikščiojimą, atsitiktinai pasirinksime kitą veiksmą iš leidžiamų veiksmų, kol pasieksime obuolį (kodo blokas 3).
Pirmiausia išspręskime problemą įgyvendindami atsitiktinio ėjimo strategiją. Naudodamiesi atsitiktiniu ėjimu, mes atsitiktinai pasirinksime kitą veiksmą iš leidžiamų veiksmų, kol pasieksime obuolį (kodo blokas 3).
1. Įgyvendinkite atsitiktinį vaikščiojimą naudodami žemiau pateiktą kodą:
1. Įgyvendinkite atsitiktinį ėjimą su žemiau pateiktu kodu:
```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 # žingsnių skaičius
# nustatyti pradinę poziciją
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
return n # success!
return n # sėkmė!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
return -1 # eaten by wolf or drowned
return -1 # suėdė vilkas arba nuskendo
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) # atlikti tikrąjį judesį
break
n+=1
walk(m,random_policy)
```
Funkcijos `walk` iškvietimas turėtų grąžinti atitinkamo kelio ilgį, kuris gali skirtis kiekvieno paleidimo metu.
Iškvietimas `walk` turėtų grąžinti atitinkamo kelio ilgį, kuris gali skirtis paleidžiamų kartų metu.
1. Paleiskite vaikščiojimo eksperimentą kelis kartus (pvz., 100) ir atspausdinkite gautą statistiką (kodo blokas 4):
1. Paleiskite ėjimo eksperimentą keletą kartų (pvz., 100) ir atspausdinkite rezultatais pagrįstas statistikas (kodo blokas 4):
```python
def print_statistics(policy):
@ -125,17 +125,17 @@ Pirmiausia išspręskime mūsų problemą įgyvendindami atsitiktinio vaikščio
print_statistics(random_policy)
```
Atkreipkite dėmesį, kad vidutinis kelio ilgis yra apie 3040 žingsnių, o tai yra gana daug, atsižvelgiant į tai, kad vidutinis atstumas iki artimiausio obuolio yra apie 56 žingsnius.
Atkreipkite dėmesį, kad vidutinis kelio ilgis yra apie 30-40 žingsnių, kas yra gana daug, atsižvelgiant į tai, kad vidutinis atstumas iki artimiausio obuolio yra apie 5-6 žingsnius.
Taip pat galite pamatyti, kaip atrodo Petro judėjimas atsitiktinio vaikščiojimo metu:
Taip pat galite pamatyti, kaip atrodo Petro judesys atsitiktinio ėjimo metu:
![Petro atsitiktinis vaikščiojimas](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif)
![Petro atsitiktinis ėjimas](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif)
## Atlygio funkcija
## Apdovanojimo funkcija
Kad mūsų politika būtų protingesnė, turime suprasti, kurie judesiai yra „geresni“ už kitus. Tam reikia apibrėžti mūsų tikslą.
Norėdami padaryti politiką protingesnę, turime suprasti, kurie veiksmai yra "geresni" už kitus. Tam reikia apibrėžti tikslą.
Tikslas gali būti apibrėžtas **atlygio funkcijos** forma, kuri grąžins tam tikrą balo reikšmę kiekvienai būsenai. Kuo didesnis skaičius, tuo geresnė atlygio funkcija. (kodo blokas 5)
Tikslas gali būti apibrėžtas per **apdovanojimo funkciją**, kuri kiekvienai būsenai suteikia tam tikrą įvertinimą. Kuo didesnis skaičius, tuo geresnė apdovanojimo funkcija. (kodo blokas 5)
```python
move_reward = -0.1
@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
Įdomus dalykas apie atlygio funkcijas yra tas, kad daugeliu atvejų *mes gauname reikšmingą atlygį tik žaidimo pabaigoje*. Tai reiškia, kad mūsų algoritmas turėtų kažkaip prisiminti „gerus“ žingsnius, kurie veda į teigiamą atlygį pabaigoje, ir padidinti jų svarbą. Panašiai visi judesiai, kurie veda į blogus rezultatus, turėtų būti atgrasomi.
Įdomu tai, kad apdovanojimo funkcijose daugeliu atvejų *žymus apdovanojimas gaunamas tik žaidimo pabaigoje*. Tai reiškia, kad mūsų algoritmas turėtų kažkaip atsiminti "gerus" žingsnius, vedančius į teigiamą apdovanojimą pabaigoje, ir padidinti jų reikšmę. Panašiai visi veiksmai, vedantys į blogus rezultatus, turėtų būti nerekomenduojami.
## Q-mokymasis
Algoritmas, kurį aptarsime čia, vadinamas **Q-mokymu**. Šiame algoritme politika apibrėžiama funkcija (arba duomenų struktūra), vadinama **Q-lentele**. Ji registruoja kiekvieno veiksmo „gerumą“ tam tikroje būsenoje.
Algoritmas, kurį aptarsime, vadinamas **Q-mokymosi**. Šiame algoritme politika apibrėžiama funkcija (arba duomenų struktūra), vadinama **Q-lentele**. Ji įrašo kiekvieno veiksmo "gerumą" tam tikroje būsenoje.
Ji vadinama Q-lentele, nes dažnai patogu ją vaizduoti kaip lentelę arba daugiamačio masyvo formą. Kadangi mūsų lenta turi matmenis `plotis` x `aukštis`, Q-lentelę galime vaizduoti naudodami numpy masyvą, kurio forma yra `plotis` x `aukštis` x `len(veiksmai)`: (kodo blokas 6)
Jis vadinamas Q-lentele, nes dažnai patogu ją pateikti kaip lentelę arba daugiamačio masyvo formą. Kadangi mūsų lenta turi matmenis `width` x `height`, galime reprezentuoti Q-lentelę naudodami numpy masyvą su matmenimis `width` x `height` x `len(actions)`: (kodo blokas 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
Atkreipkite dėmesį, kad mes inicializuojame visas Q-lentelės reikšmes lygiomis reikšmėmis, mūsų atveju - 0.25. Tai atitinka „atsitiktinio vaikščiojimo“ politiką, nes visi judesiai kiekvienoje būsenoje yra vienodai geri. Q-lentelę galime perduoti funkcijai `plot`, kad vizualizuotume lentelę lentoje: `m.plot(Q)`.
Pastebėkite, kad mes inicializuojame visus Q-lentelės reikšmes vienodai, mūsų atveju - 0.25. Tai atitinka "atsitiktinio ėjimo" politiką, nes visi ėjimai kiekvienoje būsenoje yra vienodai geri. Galime perduoti Q-lentelę funkcijai `plot`, kad vizualizuotume lentelę lentoje: `m.plot(Q)`.
![Petro aplinka](../../../../8-Reinforcement/1-QLearning/images/env_init.png)
![Petro aplinka](../../../../translated_images/lt/env_init.04e8f26d2d60089e.webp)
Kiekvienos ląstelės centre yra „rodyklė“, rodanti pageidaujamą judėjimo kryptį. Kadangi visos kryptys yra vienodos, rodomas taškas.
Kiekvienos ląstelės centre yra "rodyklė", nurodanti pageidaujamą judėjimo kryptį. Kadangi visos kryptys yra vienodos, rodoma taškas.
Dabar turime paleisti simuliaciją, tyrinėti savo aplinką ir išmokti geresnį Q-lentelės reikšmių pasiskirstymą, kuris leis mums daug greičiau rasti kelią iki obuolio.
Dabar turime paleisti simuliaciją, tyrinėti aplinką ir išmokti geresnį Q-lentelės reikšmių pasiskirstymą, kuris leis mums greičiau rasti kelią iki obuolio.
## Q-mokymosi esmė: Bellmano lygtis
## Q-mokymosi esmė: Belmano lygtis
Kai pradedame judėti, kiekvienas veiksmas turės atitinkamą atlygį, t. y. teoriškai galime pasirinkti kitą veiksmą pagal didžiausią tiesioginį atlygį. Tačiau daugumoje būsenų judesys nepasieks mūsų tikslo pasiekti obuolį, todėl negalime iš karto nuspręsti, kuri kryptis yra geresnė.
Kai pradedame judėti, kiekvienas veiksmas turi atitinkamą apdovanojimą, t.y. teoriškai galime pasirinkti kitą veiksmą pagal didžiausią tiesioginį apdovanojimą. Tačiau daugelyje būsenų judesys nepasieks mūsų tikslo - rasti obuolį, ir todėl negalime iš karto nuspręsti, kuri kryptis geresnė.
> Atminkite, kad svarbus ne tiesioginis rezultatas, o galutinis rezultatas, kurį gausime simuliacijos pabaigoje.
> Atminkite, svarbu ne tiesioginis rezultatas, o galutinis rezultatas, kurį gausime simuliacijos pabaigoje.
Kad atsižvelgtume į šį uždelstą atlygį, turime naudoti **[dinaminio programavimo](https://en.wikipedia.org/wiki/Dynamic_programming)** principus, kurie leidžia apie problemą galvoti rekursyviai.
Norėdami atsižvelgti į šį atidėtą apdovanojimą, turime naudoti **[dinaminio programavimo](https://en.wikipedia.org/wiki/Dynamic_programming)** principus, leidžiančius spręsti problemą rekursyviai.
Tarkime, kad dabar esame būsenoje *s*, ir norime pereiti į kitą būseną *s'*. Tai darydami gausime tiesioginį atlygį *r(s,a)*, apibrėžtą atlygio funkcija, plius tam tikrą būsimą atlygį. Jei manome, kad mūsų Q-lentelė teisingai atspindi kiekvieno veiksmo „patrauklumą“, tada būsenoje *s'* pasirinksime veiksmą *a*, kuris atitinka didžiausią *Q(s',a')* reikšmę. Taigi, geriausias galimas būsimas atlygis, kurį galėtume gauti būsenoje *s*, bus apibrėžtas kaip `max`
Tarkime, kad dabar esame būsenoje *s* ir norime pereiti į kitą būseną *s'*. Tai atlikdami, gausime tiesioginį apdovanojimą *r(s,a)*, apibrėžtą apdovanojimo funkcijos, plius tam tikrą ateities apdovanojimą. Jei manytume, kad mūsų Q-lentelė tiksliai atspindi kiekvieno veiksmo "patrauklumą", tada būsenoje *s'* pasirinksime veiksmą *a*, atitinkantį maksimalų *Q(s',a')* vertę. Tokiu būdu geriausias galimas ateities apdovanojimas būsenoje *s* bus apibrėžtas kaip `max`<sub>a'</sub>*Q(s',a')* (maksimumas apskaičiuojamas per visus galimus veiksmus *a'* būsenoje *s'*).
## Tikriname politiką
Tai suteikia **Belmano formulę**, skaičiuojant Q-lentelės vertę būsenoje *s* atsižvelgiant į veiksmą *a*:
Kadangi Q-lentelėje pateikiamas kiekvieno veiksmo "patrauklumas" kiekvienoje būsenoje, ją gana lengva naudoti efektyviam navigavimui mūsų pasaulyje apibrėžti. Paprasčiausiu atveju galime pasirinkti veiksmą, atitinkantį didžiausią Q-lentelės reikšmę: (kodo blokas 9)
<img src="../../../../translated_images/lt/bellman-equation.7c0c4c722e5a6b7c.webp"/>
Čia γ yra vadinamasis **nuolaidos koeficientas**, nusakantis, kiek turėtumėte teikti pirmenybę dabartiniam apdovanojimui prieš ateities apdovanojimą ir atvirkščiai.
## Mokymosi algoritmas
Atsižvelgiant į aukščiau pateiktą lygtį, dabar galime parašyti pseudo kodą mūsų mokymosi algoritmui:
* Inicializuokite Q-lentelę Q vienodais skaičiais visoms būsenoms ir veiksmams
* Nustatykite mokymosi greitį α ← 1
* Kartokite simuliaciją daug kartų
1. Pradėkite atsitiktinėje pozicijoje
1. Kartokite
1. Pasirinkite veiksmą *a* būsenoje *s*
2. Įvykdykite veiksmą pereidami į naują būseną *s'*
3. Jei susiduriame su žaidimo pabaigos sąlyga arba bendras apdovanojimas per mažas - išeikite iš simuliacijos
4. Apskaičiuokite apdovanojimą *r* naujoje būsenoje
5. Atnaujinkite Q-funkciją pagal Belmano lygtį: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ max<sub>a'</sub>Q(s',a'))*
6. *s* ← *s'*
7. Atnaujinkite bendrą apdovanojimą ir sumažinkite α.
## Eksploatacija prieš tyrinėjimą
Aukščiau pateiktame algoritme nenurodėme, kaip tiksliai pasirinkti veiksmą 2.1 žingsnyje. Jei pasirenkame veiksmą atsitiktinai, mes atsitiktinai **tyrinėsime** aplinką, ir greičiausiai dažnai žusime bei aplankysime sritis, į kurias paprastai neeitume. Kitaip galima būtų **eksploatuoti** jau žinomas Q-lentelės reikšmes ir pasirinkti geriausią veiksmą (su didesne Q-lentelės verte) būsenoje *s*. Tačiau tai neleis mums tyrinėti kitų būsenų ir greičiausiai neatrastume optimalaus sprendimo.
Todėl geriausias būdas yra rasti pusiausvyrą tarp tyrinėjimo ir eksploatacijos. Tai galima padaryti pasirinkus veiksmą būsenoje *s* pagal tikimybę, proporcingą reikšmėms Q-lentelėje. Pradžioje, kai Q-lentelės reikšmės visos vienodos, tai bus atsitiktinis pasirinkimas, tačiau mokantis daugiau apie aplinką, tikimybė sekti optimaliu maršrutu padidės, leidžiant agentui kartais rinktis netyrinėtą kelią.
## Python įgyvendinimas
Dabar esame pasirengę įgyvendinti mokymosi algoritmą. Prieš tai mums reikės funkcijos, kuri pavers atsitiktinius skaičius Q-lentelėje į tikimybių vektorių atitinkamiems veiksmams.
1. Sukurkite funkciją `probs()`:
```python
def probs(v,eps=1e-4):
v = v-v.min()+eps
v = v/v.sum()
return v
```
Pridėjome kelis `eps` prie pradinio vektoriaus siekiant išvengti dalybos iš 0 pradžioje, kai visi komponentai yra vienodi.
Paleiskite mokymo algoritmą per 5000 bandymų, vadinamų **epochomis**: (kodo blokas 8)
```python
for epoch in range(5000):
# Pasirinkite pradinį tašką
m.random_start()
# Pradėkite kelionę
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) # leidžiame žaidėjui judėti už lentos ribų, kas baigia epizodą
r = reward(m)
cum_reward += r
if r==end_reward or cum_reward < -1000:
lpath.append(n)
break
alpha = np.exp(-n / 10e5)
gamma = 0.5
ai = action_idx[a]
Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
n+=1
```
Po šio algoritmo įvykdymo Q-lentelė turėtų būti atnaujinta reikšmėmis, apibrėžiančiomis skirtingų veiksmų patrauklumą kiekviename žingsnyje. Galime bandyti vizualizuoti Q-lentelę nubrėždami vektorių kiekvienoje ląstelėje, kuris rodys pageidaujamą judėjimo kryptį. Paprastumui vietoj rodyklės galvos nubrėžiame mažą apskritimą.
<img src="../../../../translated_images/lt/learned.ed28bcd8484b5287.webp"/>
## Politikos tikrinimas
Kadangi Q-lentelė pateikia kiekvieno veiksmo "patrauklumą" kiekvienoje būsenoje, gana paprasta ja naudotis efektyviai navigacijai mūsų pasaulyje. Paprasčiausiu atveju galime pasirinkti veiksmą, atitinkantį didžiausią Q-lentelės reikšmę: (kodo blokas 9)
```python
def qpolicy_strict(m):
@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
> Jei kelis kartus paleisite aukščiau pateiktą kodą, galite pastebėti, kad kartais jis "užstringa", ir jums reikia paspausti STOP mygtuką užrašinėje, kad jį nutrauktumėte. Taip nutinka, nes gali būti situacijų, kai dvi būsenos "rodo" viena į kitą pagal optimalią Q-reikšmę, tokiu atveju agentas nuolat juda tarp tų būsenų.
> Jei aukščiau pateiktą kodą bandysite kelis kartus, galite pastebėti, kad kartais jis „užstringa“ ir jums tenka paspausti STABDYMO mygtuką užrašuose, kad jį nutrauktumėte. Taip nutinka todėl, kad gali būti situacijų, kai dvi būsenos „rodo“ viena į kitą pagal optimalų Q-reikšmę, ir tokiu atveju agentas be galo judės tarp tų būsenų.
## 🚀Iššūkis
> **Užduotis 1:** Pakeiskite `walk` funkciją taip, kad kelio ilgis būtų apribotas tam tikru žingsnių skaičiumi (pvz., 100), ir stebėkite, kaip aukščiau pateiktas kodas kartais grąžina šią reikšmę.
> **Užduotis 1:** Patobulinkite funkciją `walk`, kad apribotumėte maksimalią kelio ilgį tam tikru žingsnių skaičiumi (pavyzdžiui, 100), ir stebėkite, kaip aukščiau pateiktas kodas kartais grąžins šią reikšmę.
> **Užduotis 2:** Pakeiskite `walk` funkciją taip, kad ji negrįžtų į vietas, kuriose jau buvo. Tai neleis `walk` funkcijai užstrigti cikle, tačiau agentas vis tiek gali "įstrigti" vietoje, iš kurios negali pabėgti.
> **Užduotis 2:** Patobulinkite funkciją `walk`, kad ji negrįžtų į vietas, kuriose jau yra buvusi anksčiau. Tai apsaugos nuo ciklų `walk` funkcijoje, tačiau agentas vis tiek gali patekti į „įkalinimą“ vietoje, iš kurios negalės pabėgti.
## Navigacija
Geresnė navigacijos politika būtų ta, kurią naudojome mokymo metu, derinant išnaudojimą ir tyrinėjimą. Pagal šią politiką kiekvienas veiksmas pasirenkamas su tam tikra tikimybe, proporcinga Q-lentelės reikšmėms. Ši strategija vis dar gali lemti, kad agentas grįš į jau ištirtą vietą, tačiau, kaip matote iš žemiau pateikto kodo, ji lemia labai trumpą vidutinį kelią iki norimos vietos (prisiminkite, kad `print_statistics` paleidžia simuliaciją 100 kartų): (kodo blokas 10)
Geresnė navigacijos politika būtų ta, kurią naudojome mokymosi metu, apjungianti išnaudojimą ir tyrinėjimą. Šioje politikoje mes kiekvieną veiksmą renkamės tikimybiškai, proporcingai vertėms Q-lentelėje. Ši strategija vis tiek gali sukelti, kad agentas sugrįš į jau ištirtą poziciją, bet, kaip matote žemiau pateiktame kode, ji leidžia pasiekti labai trumpą vidutinį kelią iki norimos vietos (atminkite, kad `print_statistics` paleidžia simuliaciją 100 kartų): (kodo bloko 10)
```python
def qpolicy(m):
@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
Paleidus šį kodą, turėtumėte gauti daug mažesnį vidutinį kelio ilgį nei anksčiau, maždaug 3-6 diapazone.
Paleidus šį kodą, turėtumėte gauti daug mažesnį vidutinį kelio ilgį nei anksčiau, maždaug 36 intervale.
## Mokymosi proceso tyrinėjimas
Kaip jau minėjome, mokymosi procesas yra pusiausvyra tarp tyrinėjimo ir sukauptų žinių apie problemos erdvės struktūrą išnaudojimo. Matėme, kad mokymosi rezultatai (gebėjimas padėti agentui rasti trumpą kelią iki tikslo) pagerėjo, tačiau taip pat įdomu stebėti, kaip vidutinis kelio ilgis keičiasi mokymosi proceso metu:
Kaip jau minėjome, mokymosi procesas yra pusiausvyra tarp tyrinėjimo ir įgytos žinios panaudojimo apie problemos erdvės struktūrą. Matėme, kad mokymosi rezultatai (gebėjimas padėti agentui rasti trumpą kelią iki tikslo) pagerėjo, tačiau įdomu stebėti, kaip vidutinis kelio ilgis elgiasi mokymosi proceso metu:
<img src="../../../../translated_images/lt/lpathlen1.0534784add58d4eb.webp"/>
## Mokymosi apibendrinimas:
Mokymai gali būti apibendrinti taip:
- **Vidutinis kelio ilgis didėja.** Iš pradžių matome, kad vidutinis kelio ilgis didėja. Taip tikriausiai yra todėl, kad, kai nieko nežinome apie aplinką, esame linkę įstrigti blogose būsenose, tokiose kaip vanduo ar vilkas. Kai daugiau sužinome ir pradedame naudoti šias žinias, galime ilgiau tyrinėti aplinką, tačiau vis dar nelabai žinome, kur yra obuoliai.
- **Vidutinis kelio ilgis didėja**. Matome, kad pradžioje vidutinis kelio ilgis didėja. Tai tikriausiai todėl, kad kai apie aplinką nieko nežinome, tikėtina, kad pateksime į blogas būsenas, pvz., vandenį ar vilką. Mokantis daugiau ir pradėjus naudoti šias žinias, galime ilgiau tyrinėti aplinką, tačiau vis dar nepakankamai gerai žinome, kur yra obuoliai.
- **Kelio ilgis mažėja, kai daugiau išmokstame.** Kai pakankamai išmokstame, agentui tampa lengviau pasiekti tikslą, ir kelio ilgis pradeda mažėti. Tačiau mes vis dar atviri tyrinėjimui, todėl dažnai nukrypstame nuo geriausio kelio ir tyrinėjame naujas galimybes, dėl ko kelias tampa ilgesnis nei optimalus.
- **Kelio ilgis mažėja, mokantis daugiau**. Kai pakankamai išmokstame, agentui lengviau pasiekti tikslą, ir kelio ilgis pradeda mažėti. Vis dėlto, mes vis dar atviri tyrinėjimui, tad dažnai nukrypstame nuo geriausio kelio ir ieškome naujų variantų, dėl ko kelias tampa ilgesnis nei optimalus.
- **Ilgis staiga padidėja.** Grafike taip pat pastebime, kad tam tikru momentu ilgis staiga padidėja. Tai rodo proceso stochastiškumą ir tai, kad tam tikru momentu galime "sugadinti" Q-lentelės koeficientus, perrašydami juos naujomis reikšmėmis. Tai idealiai turėtų būti sumažinta mažinant mokymosi greitį (pavyzdžiui, mokymo pabaigoje Q-lentelės reikšmes koreguojame tik nedidele verte).
- **Ilgis staigiai padidėja**. Šiame grafike taip pat matome, kad tam tikru momentu ilgis staigiai padidėjo. Tai rodo proceso stokastinę prigimtį ir tai, kad tam tikru momentu galime „sugadinti“ Q-lentelės koeficientus perrašydami juos naujomis reikšmėmis. Tai idealiai turėtų būti sumažinta mažinant mokymosi greitį (pavyzdžiui, mokymosi pabaigoje mes koreguojame Q-lentelės reikšmes tik nedideliu dydžiu).
Apskritai svarbu prisiminti, kad mokymosi proceso sėkmė ir kokybė labai priklauso nuo parametrų, tokių kaip mokymosi greitis, mokymosi greičio mažėjimas ir diskonto faktorius. Šie parametrai dažnai vadinami **hiperparametrais**, kad būtų atskirti nuo **parametrų**, kuriuos optimizuojame mokymo metu (pavyzdžiui, Q-lentelės koeficientai). Geriausių hiperparametrų reikšmių paieškos procesas vadinamas **hiperparametrų optimizavimu**, ir tai yra atskira tema.
Apskritai svarbu prisiminti, kad sėkmė ir mokymosi proceso kokybė labai priklauso nuo parametrų, tokių kaip mokymosi greitis, jo mažėjimas ir nuolaidos koeficientas. Jie dažnai vadinami **hiperparametrais**, kad būtų atskirti nuo **parametrų**, kuriuos optimizuojame mokymosi metu (pvz., Q-lentelės koeficientai). Geriausių hiperparametrų reikšmių paieškos procesas vadinamas **hiperparametrų optimizavimu** ir nusipelno atskiros temos.
## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
## Užduotis
[Daugiau realistiškas pasaulis](assignment.md)
## Užduotis
[Realiau pasaulyje](assignment.md)
---
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,148 +1,179 @@
# Postscriptas: Modelių derinimas mašininio mokymosi srityje naudojant atsakingos dirbtinio intelekto (AI) prietaisų skydelio komponentus
## [Prieš paskaitą pateikiamas testas](https://ff-quizzes.netlify.app/en/ml/)
# Priedas: Modelio derinimas mašininio mokymosi srityje naudojant Atsakingos AI skydelio komponentus
## [Prieš paskaitą testas](https://ff-quizzes.netlify.app/en/ml/)
## Įvadas
Mašininis mokymasis daro įtaką mūsų kasdieniam gyvenimui. Dirbtinis intelektas (AI) vis dažniau naudojamas svarbiose sistemose, kurios veikia tiek mus kaip individus, tiek mūsų visuomenę nuo sveikatos priežiūros, finansų, švietimo iki įdarbinimo. Pavyzdžiui, sistemos ir modeliai dalyvauja kasdieniuose sprendimų priėmimo procesuose, tokiuose kaip sveikatos priežiūros diagnozės ar sukčiavimo aptikimas. Dėl to AI pažanga ir spartus jos pritaikymas susiduria su besikeičiančiais visuomenės lūkesčiais ir augančiu reguliavimu. Nuolat matome sritis, kuriose AI sistemos neatitinka lūkesčių, atskleidžia naujus iššūkius, o vyriausybės pradeda reguliuoti AI sprendimus. Todėl svarbu analizuoti šiuos modelius, kad jie užtikrintų teisingus, patikimus, įtraukius, skaidrius ir atsakingus rezultatus visiems.
Mašininis mokymasis veikia mūsų kasdienį gyvenimą. Dirbtinis intelektas įsilieja į kai kurias svarbiausias sistemas, kurios veikia mus kaip individų ir kaip visuomenę, nuo sveikatos priežiūros, finansų, švietimo iki užimtumo. Pavyzdžiui, sistemos ir modeliai dalyvauja kasdieniniame sprendimų priėmime, tokiose užduotyse kaip sveikatos diagnostika ar sukčiavimo aptikimas. Todėl dirbtinio intelekto pažanga kartu su sparčiu jos diegimu susiduria su kintančiomis visuomenės lūkesčiais ir augančia reglamentacija. Nuolat matome sritis, kuriose AI sistemos nesugeba patenkinti lūkesčius; jos atskleidžia naujus iššūkius; o vyriausybės pradeda reglamentuoti AI sprendimus. Todėl svarbu, kad šie modeliai būtų analizuojami siekiant pateikti sąžiningus, patikimus, įtraukius, skaidrius ir atsakingus rezultatus visiems.
Šioje mokymo programoje nagrinėsime praktinius įrankius, kurie gali būti naudojami siekiant įvertinti, ar modelis turi atsakingo AI problemų. Tradiciniai mašininio mokymosi derinimo metodai dažniausiai grindžiami kiekybiniais skaičiavimais, tokiais kaip apibendrintas tikslumas ar vidutinė klaidų nuostolių vertė. Įsivaizduokite, kas gali nutikti, jei duomenys, kuriuos naudojate šiems modeliams kurti, neturi tam tikrų demografinių duomenų, tokių kaip rasė, lytis, politinės pažiūros, religija, arba jei šie demografiniai duomenys yra neproporcingai atstovaujami. O kas, jei modelio rezultatai interpretuojami taip, kad būtų palankūs tam tikrai demografinei grupei? Tai gali sukelti per didelį arba nepakankamą jautrių savybių grupių atstovavimą, dėl kurio modelis gali tapti neteisingas, neįtraukus ar nepatikimas. Kitas veiksnys yra tas, kad mašininio mokymosi modeliai laikomi „juodosiomis dėžėmis“, todėl sunku suprasti ir paaiškinti, kas lemia modelio prognozes. Visa tai yra iššūkiai, su kuriais susiduria duomenų mokslininkai ir AI kūrėjai, kai jie neturi tinkamų įrankių modelio teisingumui ar patikimumui įvertinti ir derinti.
Šiame mokymo plane apžvelgsime praktinius įrankius, kuriuos galima naudoti norint įvertinti, ar modelis turi atsakingo AI problemas. Tradicinės mašininio mokymosi derinimo technikos dažniausiai yra grindžiamos kiekybiniais skaičiavimais, tokiais kaip apibendrintas tikslumas arba vidutinė klaidos nuostolio reikšmė. Įsivaizduokite, kas gali nutikti, jei duomenys, kuriais naudojatės kurdami modelius, neapima tam tikrų demografinių grupių, pavyzdžiui, rasės, lyties, politinių pažiūrų ar religijos, arba neproporcingai atstovauja tokias grupes. O kas jei modelio rezultatai yra interpretuojami taip, kad būtų palankūs kai kuriai demografiniai grupei? Tai gali sukelti pernelyg didelį arba nepakankamą šių jautrių požymių grupių atstovavimą, dėl ko kyla sąžiningumo, įtraukimo ar patikimumo problemos. Kitas faktorius yra tas, kad mašininio mokymosi modeliai dažnai laikomi juodosiomis dėžėmis, dėl ko sunku suprasti ir paaiškinti, kas lemia modelio prognozę. Visos šios problemos kyla duomenų mokslininkams ir AI kūrėjams, kai jie neturi tinkamų įrankių modelio derinimui ir sąžiningumo ar patikimumo vertinimui.
Šioje pamokoje sužinosite, kaip derinti savo modelius naudojant:
Šioje pamokoje sužinosite apie modelių derinimą naudojant:
- **Klaidų analizę**: nustatyti, kur jūsų duomenų pasiskirstyme modelis turi didelius klaidų rodiklius.
- **Modelio apžvalgą**: atlikti lyginamąją analizę tarp skirtingų duomenų grupių, kad būtų galima aptikti modelio veikimo rodiklių skirtumus.
- **Duomenų analizę**: ištirti, kur gali būti per didelis arba nepakankamas duomenų atstovavimas, kuris gali iškreipti modelį, kad jis būtų palankus vienai demografinei grupei, o ne kitai.
- **Savybių svarbą**: suprasti, kurios savybės lemia modelio prognozes globaliu ar lokaliu lygmeniu.
- **Klaidų analizę**: nustatyti, kur jūsų duomenų pasiskirstyme modelis turi didelį klaidų dažnį.
- **Modelio apžvalgą**: atlikti palyginamąją analizę tarp skirtingų duomenų kohortų, kad būtų atrastos modelio našumo metrikų skirtumai.
- **Duomenų analizę**: tirti, kur gali būti pernelyg daug arba per mažai tam tikrų duomenų, kas gali iškreipti modelį palankiai nuteikiant prieš vieną demografinę grupę kitos sąskaita.
- **Požymių svarbą**: suprasti, kokie požymiai lemia modelio prognozes globaliu ar lokaliu lygiu.
## Privalomos žinios
## Reikalavimai
Prieš pradedant, rekomenduojame peržiūrėti [Atsakingo AI įrankius kūrėjams](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard).
Prieš tęsiant, peržiūrėkite [Atsakingo AI įrankiai kūrėjams](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
> ![Gif apie atsakingo AI įrankius](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif)
> ![Gif apie Atsakingo AI įrankius](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif)
## Klaidų analizė
Tradiciniai modelio veikimo rodikliai, naudojami tikslumui matuoti, dažniausiai grindžiami teisingų ir neteisingų prognozių skaičiavimais. Pavyzdžiui, nustatyti, kad modelis yra tikslus 89 % atvejų su klaidų nuostoliu 0,001, gali būti laikoma geru veikimu. Tačiau klaidos dažnai nėra tolygiai pasiskirsčiusios jūsų pagrindiniuose duomenyse. Galite gauti 89 % modelio tikslumo įvertinimą, tačiau pastebėti, kad tam tikrose duomenų srityse modelis nesėkmingas 42 % atvejų. Šių nesėkmių pasekmės tam tikrose duomenų grupėse gali sukelti teisingumo ar patikimumo problemų. Svarbu suprasti, kuriose srityse modelis veikia gerai, o kuriose ne. Duomenų sritys, kuriose modelis turi daug netikslumų, gali būti svarbios demografinės grupės.
Tradicinės modelio darbo rodiklių metrikos, matuojant tikslumą, dažniausiai grindžiamos teisingų ir neteisingų prognozių skaičiavimais. Pavyzdžiui, modelio tikslumas 89 % su klaidos nuostoliu 0,001 gali būti vertinamas kaip geras rezultatas. Klaidos dažnai nėra vienodai pasiskirsčiusios duomenų rinkinyje. Galite turėti 89 % tikslumą, bet sužinoti, kad tam tikrose duomenų srityse modelis nepavyksta net 42 % atvejų. Tokie klaidų pasiskirstymo modeliai tam tikrose duomenų grupėse gali sukelti sąžiningumo arba patikimumo problemas. Svarbu suprasti sritis, kuriose modelis veikia gerai arba blogai. Duomenų sritys, kur modelis turi daug netikslumų, gali būti reikšminga duomenų demografinė grupė.
![Analizuokite ir derinkite modelio klaidas](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png)
![Analizuokite ir derinkite modelio klaidas](../../../../translated_images/lt/ea-error-distribution.117452e1177c1dd8.webp)
Klaidų analizės komponentas RAI prietaisų skydelyje iliustruoja, kaip modelio nesėkmės pasiskirsto įvairiose grupėse, naudodamas medžio vizualizaciją. Tai naudinga nustatant savybes ar sritis, kuriose jūsų duomenyse yra didelis klaidų rodiklis. Matydami, iš kur kyla dauguma modelio netikslumų, galite pradėti tirti pagrindinę priežastį. Taip pat galite kurti duomenų grupes analizei atlikti. Šios duomenų grupės padeda derinimo procese nustatyti, kodėl modelis veikia gerai vienoje grupėje, bet daro klaidas kitoje.
Klaidų analizės komponentas Atsakingo AI skydelyje rodo, kaip modelio klaidos pasiskirsčiusios tarp įvairių kohortų medžio vizualizacijoje. Tai naudinga nustatant požymius ar sritis, kuriose duomenų rinkinyje yra didelis klaidų dažnis. Matydami, iš kur daugiausia kyla netikslumai, galite pradėti tirti pagrindines priežastis. Taip pat galite sukurti duomenų kohortas analizės atlikimui. Šios kohortos padeda derinimo procese suprasti, kodėl modelio našumas yra geras vienoje kohortoje, bet klaidingas kitoje.
![Klaidų analizė](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png)
![Klaidų analizė](../../../../translated_images/lt/ea-error-cohort.6886209ea5d438c4.webp)
Medžio žemėlapio vizualiniai indikatoriai padeda greičiau nustatyti problemų sritis. Pavyzdžiui, kuo tamsesnė raudona spalva medžio mazge, tuo didesnis klaidų rodiklis.
Vizualiniai indikatoriai medžio žemėlapyje padeda greičiau surasti problemines sritis. Pavyzdžiui, kuo tamsesnė raudonos spalvos atspalvio medžio šaka, tuo didesnis klaidų dažnumas.
Šilumos žemėlapis yra dar viena vizualizacijos funkcija, kurią naudotojai gali naudoti klaidų rodikliui tirti, naudodami vieną ar dvi savybes, kad nustatytų modelio klaidų priežastis visame duomenų rinkinyje ar grupėse.
Karštinių žemėlapis yra dar viena vizualizavimo galimybė, kuri leidžia vartotojams tirti klaidų dažnį, naudojant vieną arba du požymius ir taip rasti modelio klaidų priežastis visame duomenų rinkinyje ar kohortose.
![Klaidų analizės šilumos žemėlapis](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png)
![Klaidų analizės karštinių žemėlapis](../../../../translated_images/lt/ea-heatmap.8d27185e28cee383.webp)
Naudokite klaidų analizę, kai reikia:
Naudokite klaidų analizę, kai jums reikia:
* Giliai suprasti, kaip modelio nesėkmės pasiskirsto duomenų rinkinyje ir keliose įvesties bei savybių dimensijose.
* Išskaidyti apibendrintus veikimo rodiklius, kad automatiškai atrastumėte klaidingas grupes ir informuotumėte apie tikslines problemų sprendimo priemones.
* Giliai suprasti, kaip modelio klaidos pasiskirsčiusios duomenų rinkinyje ir tarp kelių įvesties bei požymių dimensijų.
* Išskaidyti bendrą našumo metriką, kad automatiškai būtų atrastos klaidų turinčios kohortos ir būtų galima planuoti tikslingas pataisymo priemones.
## Modelio apžvalga
Mašininio mokymosi modelio veikimo vertinimas reikalauja holistinio jo elgsenos supratimo. Tai galima pasiekti peržiūrint daugiau nei vieną rodiklį, pvz., klaidų rodiklį, tikslumą, atšaukimą, tikslumą ar MAE (vidutinę absoliučią klaidą), kad būtų galima nustatyti veikimo rodiklių skirtumus. Vienas veikimo rodiklis gali atrodyti puikiai, tačiau netikslumai gali išryškėti kitame rodiklyje. Be to, rodiklių palyginimas visame duomenų rinkinyje ar grupėse padeda atskleisti, kur modelis veikia gerai, o kur ne. Tai ypač svarbu norint pamatyti modelio veikimą tarp jautrių ir nejautrių savybių (pvz., paciento rasės, lyties ar amžiaus), kad būtų galima atskleisti galimą modelio neteisingumą. Pavyzdžiui, atradus, kad modelis yra klaidingesnis grupėje, kurioje yra jautrių savybių, galima atskleisti galimą modelio neteisingumą.
Norint įvertinti mašininio mokymosi modelio našumą, reikia holistiškai suprasti jo elgseną. Tai galima pasiekti peržiūrint ne tik vieną metriką, pavyzdžiui, klaidų dažnį, tikslumą, atgaminimą, tikslumą ar vidutinę absoliučią klaidą (MAE), ir ieškant skirtumų tarp našumo metrikoje. Viena metrika gali atrodyti puikiai, bet klaidos gali būti atskleistos kitoje. Be to, lyginant šias metrikas tarp viso duomenų rinkinio ar kohortų, galima pamatyti, kur modelis veikia gerai, o kur ne. Tai ypač svarbu matant modelio našumą tarp jautrių ir nejautrių požymių (pvz., paciento rasės, lyties ar amžiaus), kad būtų atskleista galimai nelygi modelio veikla. Pavyzdžiui, jei modelis klaidingesnis kohortoje, kur yra jautrūs požymiai, tai gali atskleisti neteisingumą.
Modelio apžvalgos komponentas RAI prietaisų skydelyje padeda ne tik analizuoti duomenų atstovavimo veikimo rodiklius grupėje, bet ir suteikia naudotojams galimybę palyginti modelio elgseną skirtingose grupėse.
Atsakingo AI skydelio Modelio apžvalgos komponentas padeda ne tik analizuoti našumo metrikas pagal duomenų kohortas, bet ir suteikia vartotojams galimybę palyginti modelio elgseną tarp skirtingų kohortų.
![Duomenų grupės modelio apžvalga RAI prietaisų skydelyje](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png)
![Duomenų kohortos - modelio apžvalga RAI skydelyje](../../../../translated_images/lt/model-overview-dataset-cohorts.dfa463fb527a35a0.webp)
Komponento savybių pagrindu atliekama analizė leidžia naudotojams susiaurinti duomenų pogrupius tam tikroje savybėje, kad būtų galima nustatyti anomalijas detaliu lygmeniu. Pavyzdžiui, prietaisų skydelyje yra įmontuotas intelektas, kuris automatiškai generuoja grupes pagal naudotojo pasirinktą savybę (pvz., *"time_in_hospital < 3"* arba *"time_in_hospital >= 7"*). Tai leidžia naudotojui atskirti tam tikrą savybę nuo didesnės duomenų grupės, kad pamatytų, ar ji yra pagrindinis modelio klaidingų rezultatų veiksnys.
Komponento funkcija, leidžianti analizuoti rūšiuojant pagal požymius, leidžia vartotojams susiaurinti duomenų pogrupius pagal tam tikrą požymį ir nustatyti anomalijas detaliau. Pavyzdžiui, skydelyje yra integruotas įdirbis, automatiškai generuojantis kohortas pagal vartotojo pasirinktą požymį (pvz., *"time_in_hospital < 3"* arba *"time_in_hospital >= 7"*). Tai leidžia atskirti tam tikrą požymį iš didesnės grupės ir pažiūrėti, ar jis yra lemiamas veiksnys modelio klaidų prognozėse.
![Savybių grupės modelio apžvalga RAI prietaisų skydelyje](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png)
![Požymių kohortos - modelio apžvalga RAI skydelyje](../../../../translated_images/lt/model-overview-feature-cohorts.c5104d575ffd0c80.webp)
Modelio apžvalgos komponentas palaiko dviejų klasių skirtumų rodiklius:
Modelio apžvalgos komponentas palaiko dvi skirtumų metrikų klases:
**Skirtumai modelio veikime**: Šie rodikliai apskaičiuoja skirtumus (skirtumą) pasirinktų veikimo rodiklių reikšmėse tarp duomenų pogrupių. Štai keli pavyzdžiai:
**Modelio našumo skirtumu**: Ši metrikų grupė apskaičiuoja skirtumus (nuokrypius) pasirinkto našumo rodiklio reikšmėse tarp duomenų pogrupių. Štai keletas pavyzdžių:
* Tikslumo rodiklio skirtumas
* Klaidų rodiklio skirtumas
* Tikslumo skirtumas
* Atšaukimo skirtumas
* Klaidos dažnio skirtumas
* Tikslumo (precision) skirtumas
* Atgaminimo (recall) skirtumas
* Vidutinės absoliučios klaidos (MAE) skirtumas
**Skirtumai pasirinkimo rodiklyje**: Šis rodiklis apima skirtumą pasirinkimo rodiklyje (palankioje prognozėje) tarp pogrupių. Pavyzdžiui, tai gali būti paskolų patvirtinimo rodiklių skirtumas. Pasirinkimo rodiklis reiškia duomenų taškų dalį kiekvienoje klasėje, klasifikuotą kaip 1 (dvejetainėje klasifikacijoje), arba prognozių reikšmių pasiskirstymą (regresijoje).
**Pasirinkimo dažnio skirtumas**: Ši metrika nurodo skirtumą pasirinkimo dažnyje (palankios prognozės) tarp pogrupių. Pavyzdys būtų skirtumas patvirtinant paskolas. Pasirinkimo dažnis reiškia duomenų taškų, priskirtų klasei 1 (dvigubos klasifikacijos atveju) arba paskirstytų pagal prognozes (regresijoje), dalį kiekvienoje klasėje.
## Duomenų analizė
> „Jei pakankamai ilgai kankinsite duomenis, jie prisipažins bet ką“ Ronald Coase
> „Jei ilgai kankinsi duomenis, jie prisipažins bet kam“ Ronaldas Coase
Ši frazė skamba radikaliai, bet tiesa yra ta, kad duomenis galima manipuliuoti, siekiant paremti bet kokias išvadas. Kartais tokia manipuliacija gali būti netyčinė. Kaip žmonės, mes visi turime savo šališkumų, ir dažnai sunku sąmoningai pastebėti, kai įtraukiame šališkumą į duomenis. Užtikrinti sąžiningumą AI ir mašininio mokymosi srityse išlieka sudėtinga užduotis.
Šis teiginys skamba ekstremaliai, tačiau tiesa, kad duomenis galima manipuliuoti, kad jie palaikytų bet kokią išvadą. Tokia manipuliacija kartais gali įvykti netyčia. Kaip žmonės, mes visi turime šališkumų, ir dažnai sunku sąmoningai suvokti, kada įvedate šališkumą į duomenis. Užtikrinti teisingumą AI ir mašininio mokymosi srityje išlieka sudėtingas iššūkis.
Duomenys yra didelė aklavietė tradicinėms modelio darbo metrikoms. Galite turėti aukštus tikslumo rodiklius, bet tai ne visada atspindi gilesnį duomenų rinkinio šališkumą. Pavyzdžiui, jei darbuotojų duomenų rinkinyje 27 % vyrų užima vykdomąsias pareigas, o 73 % moterų yra toje pačioje pozicijoje, dirbtinio intelekto modelis, mokytas pagal šiuos duomenis, gali pagrinde taikyti savo skelbimus vyrams dėl aukštesnių pareigų. Ši duomenų disbalanso problema iškreipia modelio prognozes, leidžiant joms būti palankia vienam lyčiui. Tai atskleidžia sąžiningumo problemą, kai AI modelyje egzistuoja lyties šališkumas.
Duomenys yra didelė akloji zona tradiciniams modelio veikimo rodikliams. Galite turėti aukštus tikslumo rodiklius, tačiau tai ne visada atspindi pagrindinį duomenų šališkumą, kuris gali būti jūsų duomenų rinkinyje. Pavyzdžiui, jei darbuotojų duomenų rinkinyje 27 % moterų užima vadovaujančias pareigas įmonėje, o 73 % vyrų yra tame pačiame lygyje, darbo skelbimų AI modelis, apmokytas pagal šiuos duomenis, gali daugiausia taikyti vyrų auditorijai aukšto lygio darbo pozicijoms. Šis duomenų disbalansas iškreipė modelio prognozę, kad ji būtų palanki vienai lyčiai. Tai atskleidžia teisingumo problemą, kai AI modelis turi lyčių šališkumą.
Duomenų analizės komponentas Atsakingo AI skydelyje padeda identifikuoti sritis, kuriose duomenų rinkinyje yra per didelis arba per mažas tam tikrų grupių atstovavimas. Tai leidžia vartotojams diagnozuoti klaidų ir sąžiningumo problemas, kilusias dėl duomenų disbalanso arba tam tikrų grupių trūkumo. Komponentas suteikia galimybę vizualizuoti duomenų rinkinius pagal prognozuotus ir faktinius rezultatus, klaidų grupes ir konkrečius požymius. Kartais atradus nepakankamai atstovaujamą grupę, galima suprasti, kad modelis blogai mokosi, stebint didelį netikslumų kiekį. Modelis, turintis duomenų šališkumą, yra ne tik sąžiningumo problema, bet ir rodo, kad modelis nėra įtraukiantis ar patikimas.
Duomenų analizės komponentas RAI prietaisų skydelyje padeda nustatyti sritis, kuriose duomenų rinkinyje yra per didelis arba nepakankamas atstovavimas. Jis padeda naudotojams diagnozuoti klaidų ir teisingumo problemų, atsirandančių dėl duomenų disbalanso ar tam tikros duomenų grupės atstovavimo trūkumo, pagrindines priežastis. Tai suteikia naudotojams galimybę vizualizuoti duomenų rinkinius pagal prognozuojamus ir faktinius rezultatus, klaidų grupes ir specifines savybes. Kartais atradus nepakankamai atstovaujamą duomenų grupę taip pat galima pastebėti, kad modelis nesimoko tinkamai, todėl yra didelis netikslumas. Modelis, turintis duomenų šališkumą, yra ne tik teisingumo problema, bet ir rodo, kad modelis nėra įtraukus ar patikimas.
![Duomenų analizės komponentas Atsakingo AI skydelyje](../../../../translated_images/lt/dataanalysis-cover.8d6d0683a70a5c1e.webp)
![Duomenų analizės komponentas RAI prietaisų skydelyje](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png)
Naudokite duomenų analizę, kai reikia:
* Tyrinėti savo duomenų rinkinio statistiką, pasirenkant skirtingus filtrus, kad suskaidytumėte duomenis į skirtingas dimensijas (dar vadinamas grupėmis).
* Suprasti savo duomenų rinkinio pasiskirstymą skirtingose grupėse ir savybių grupėse.
* Nustatyti, ar jūsų išvados, susijusios su teisingumu, klaidų analize ir priežastingumu (gautos iš kitų prietaisų skydelio komponentų), yra jūsų duomenų rinkinio pasiskirstymo rezultatas.
* Nuspręsti, kuriose srityse rinkti daugiau duomenų, kad būtų sumažintos klaidos, atsirandančios dėl atstovavimo problemų, žymų triukšmo, savybių triukšmo, žymų šališkumo ir panašių veiksnių.
* Tirti duomenų rinkinio statistiką, pasirenkant skirtingus filtrus, kad jūsų duomenys būtų suskirstyti į skirtingas dimensijas (dar vadinamas kohortomis).
* Suprasti duomenų paskirstymą skirtingose kohortose ir požymių grupėse.
* Nustatyti, ar jūsų išvados apie sąžiningumą, klaidų analizę ir priežastingumą (gautos iš kitų skydelio komponentų) yra duomenų paskirstymo rezultatas.
* Nuspręsti, kuriose srityse reikia rinkti daugiau duomenų, kad būtų sumažintos klaidos, kylančios dėl atstovavimo problemų, žymėjimo triukšmo, požymių triukšmo, žymėjimo šališkumo ir panašių veiksnių.
## Modelio interpretacija
## Modelio aiškinamumas
Mašininio mokymosi modeliai dažnai laikomi „juodosiomis dėžėmis“. Suprasti, kurios pagrindinės duomenų savybės lemia modelio prognozę, gali būti sudėtinga. Svarbu užtikrinti skaidrumą, kodėl modelis priima tam tikrą prognozę. Pavyzdžiui, jei AI sistema prognozuoja, kad diabetu sergantis pacientas rizikuoja būti pakartotinai hospitalizuotas per mažiau nei 30 dienų, ji turėtų pateikti duomenis, kurie pagrindžia šią prognozę. Turint tokius duomenų rodiklius, atsiranda skaidrumas, kuris padeda gydytojams ar ligoninėms priimti gerai pagrįstus sprendimus. Be to, galimybė paaiškinti, kodėl modelis priėmė tam tikrą prognozę konkrečiam pacientui, leidžia užtikrinti atitiktį sveikatos reguliavimams. Kai naudojate mašininio mokymosi modelius, kurie daro įtaką žmonių gyvenimams, būtina suprasti ir paaiškinti, kas lemia modelio elgseną. Modelio paaiškinamumas ir interpretacija padeda atsakyti į klausimus tokiose situacijose kaip:
Mašininio mokymosi modeliai dažnai laikomi juodosiomis dėžėmis. Sunku suprasti, kokie svarbiausi duomenų požymiai lemia modelio prognozę. Svarbu užtikrinti skaidrumą, kodėl modelis daro tam tikrą prognozę. Pvz., jei AI sistema prognozuoja, kad diabetu sergantis pacientas bus vėl priimtas į ligoninę per mažiau nei 30 dienų, ji turi pateikti palaikomus duomenis, kurie lėmė šią prognozę. Turint tokius duomenų indikatorius, skaidrumas padeda klinikams ar ligoninėms priimti gerai informuotus sprendimus. Be to, galimybė paaiškinti, kodėl modelis pateikė prognozę konkrečiam pacientui, užtikrina atsakomybę pagal sveikatos reguliavimą. Naudojant mašininio mokymosi modelius žmonių gyvenime, itin svarbu suprasti ir paaiškinti, kas įtakoja modelio elgseną. Modelio paaiškinamumas ir aiškinamumas padeda atsakyti į klausimus tokiose situacijose kaip:
* Modelio derinimas: Kodėl mano modelis padarė šią klaidą? Kaip galiu pagerinti savo modelį?
* Žmogaus ir AI bendradarbiavimas: Kaip galiu suprasti ir pasitikėti modelio sprendimais?
* Reguliavimo atitiktis: Ar mano modelis atitinka teisės aktų reikalavimus?
* Modelio derinimas: kodėl mano modelis padarė šią klaidą? Kaip galiu patobulinti modelį?
* Žmogaus ir AI bendradarbiavimas: kaip galiu suprasti ir pasitikėti modelio sprendimais?
* Reguliacinis atitikimas: ar modelis atitinka teisės reikalavimus?
Savybių svarbos komponentas RAI prietaisų skydelyje padeda derinti ir gauti išsamų supratimą apie tai, kaip modelis priima prognozes. Tai taip pat naudingas įrankis mašininio mokymosi specialistams ir sprendimų priėmėjams, norint paaiškinti ir pateikti įrodymus apie savybes, kurios daro įtaką modelio elgsenai, siekiant užtikrinti reguliavimo atitiktį. Naudotojai gali tyrinėti tiek globalius, tiek lokalius paaiškinimus, kad patvirtintų, kurios savybės lemia modelio prognozę. Globalūs paaiškinimai pateikia pagrindines savybes, kurios paveikė bendrą modelio prognozę. Lokalieji paaiškinimai parodo, kurios savybės lėmė modelio prognozę konkrečiu atveju. Galimybė įvertinti lokalius paaiškinimus taip pat naudinga derinant ar audituojant konkretų atvejį, siekiant geriau suprasti ir interpretuoti, kodėl modelis priėmė tikslią ar
- **Per didelė arba per maža reprezentacija**. Idėja yra ta, kad tam tikra grupė nėra matoma tam tikroje profesijoje, o bet kokia paslauga ar funkcija, kuri toliau skatina tokį reiškinį, prisideda prie žalos.
Atsakingo AI skydelio Požymių svarbos komponentas padeda derinti ir išsamiai suprasti, kaip modelis priima sprendimus. Tai taip pat naudinga mašininio mokymosi specialistams ir sprendimų priėmėjams, siekiant paaiškinti ir pateikti įrodymus, kokie požymiai veikia modelio elgseną dėl reguliavimo atitikimo. Toliau vartotojai gali tirti tiek globalius, tiek lokalius paaiškinimus, kad patvirtintų, kokie požymiai lemia modelio prognozę. Globalūs paaiškinimai pateikia svarbiausių požymių, kurie turėjo poveikį modeliui apskritai, sąrašą. Lokalieji paaiškinimai rodo, kurie požymiai nulėmė modelio prognozę konkrečiam atvejui. Lokaliųjų paaiškinimų vertinimas taip pat naudingas derinant ar tikrinant specifinį atvejį, siekiant geriau suprasti ir paaiškinti, kodėl modelis padarė tikslią ar netikslią prognozę.
### Azure RAI prietaisų skydelis
![Požymių svarbos komponentas Atsakingo AI skydelyje](../../../../translated_images/lt/9-feature-importance.cd3193b4bba3fd4b.webp)
[Azure RAI prietaisų skydelis](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) yra sukurtas remiantis atvirojo kodo įrankiais, kuriuos sukūrė pirmaujančios akademinės institucijos ir organizacijos, įskaitant Microsoft. Šie įrankiai yra labai naudingi duomenų mokslininkams ir AI kūrėjams, siekiant geriau suprasti modelio elgseną, aptikti ir sumažinti nepageidaujamus AI modelių aspektus.
* Globalūs paaiškinimai: pavyzdžiui, kokie požymiai veikia bendrą diabeto ligoninės pakartotinio priėmimo modelio elgseną?
* Lokalieji paaiškinimai: pavyzdžiui, kodėl diabetu sergantis pacientas, vyresnis nei 60 m., turintis ankstesnių hospitalizacijų, buvo prognozuotas būti arba nebūti priimtas vėl per 30 dienų?
- Sužinokite, kaip naudoti skirtingus komponentus, peržiūrėdami RAI prietaisų skydelio [dokumentaciją.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
Derinant modelio našumą skirtingose kohortose, Požymių svarbos komponentas rodo, kokį poveikį požymis turi tarp kohortų. Tai padeda atskleisti anomalijas, lyginant požymių įtaką modelio klaidingoms prognozėms. Komponentas gali parodyti, kurios požymių reikšmės teigiamai arba neigiamai paveikė modelio rezultatą. Pavyzdžiui, jei modelis padarė netikslią prognozę, komponentas leidžia gilintis ir nustatyti, kurie požymiai ar požymių reikšmės nulėmė prognozę. Toks detalus lygis naudingas ne tik derinimui, bet ir skaidrumui bei atsakomybės užtikrinimui auditavimo metu. Galiausiai, komponentas gali padėti atpažinti sąžiningumo problemas. Pvz., jei jautrus požymis, kaip etninė kilmė ar lytis, yra labai svarbus modelio prognozei, tai gali būti rasinės arba lyties šališkumo ženklas modelyje.
- Peržiūrėkite keletą RAI prietaisų skydelio [pavyzdinių užrašų knygelių](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks), skirtų atsakingesnių AI scenarijų derinimui Azure Machine Learning aplinkoje.
![Požymių svarba](../../../../translated_images/lt/9-features-influence.3ead3d3f68a84029.webp)
---
## 🚀 Iššūkis
Naudokite aiškinamumą, kai jums reikia:
* Nustatyti, kiek patikimos jūsų AI sistemos prognozės, suprantant, kurie požymiai yra svarbiausi prognozėms.
* Pradėti modelio derinimą, pirmiausia jį suprantant ir nustatant, ar modelis naudoja sveikus požymius, ar tik klaidingus koreliacijų ryšius.
* Atpažinti galimus neteisingumo šaltinius, suprantant, ar modelis savo prognozes grindžia jautriais požymiais ar tais, kurie labai susiję su jais.
* Stiprinti vartotojų pasitikėjimą modelio sprendimais, generuojant lokalius paaiškinimus, kurie iliustruoja jų rezultatus.
* Atlikti reguliavimo auditą AI sistemai, kad būtų patvirtinti modeliai ir stebimas modelio sprendimų poveikis žmonėms.
## Išvados
Kad statistiniai ar duomenų šališkumai nebūtų įtraukti nuo pat pradžių, turėtume:
Visi Atsakingo AI skydelio komponentai yra praktiški įrankiai, padedantys kurti mašininio mokymosi modelius, kurie yra mažiau žalingi ir patikimesni visuomenei. Tai gerina žmogaus teisių apsaugą nuo grėsmių; diskriminacijos ar tam tikrų grupių pašalinimo iš gyvenimo galimybių; taip pat fizinės ar psichologinės žalos rizikos mažinimą. Tai taip pat leidžia kurti pasitikėjimą modelio sprendimais generuojant lokalius paaiškinimus, kurie iliustruoja jų rezultatus. Kai kurios galimos žalos gali būti klasifikuojamos kaip:
- užtikrinti, kad sistemų kūrime dalyvautų žmonės iš įvairių aplinkybių ir perspektyvų
- investuoti į duomenų rinkinius, kurie atspindi mūsų visuomenės įvairovę
- kurti geresnius metodus šališkumui aptikti ir ištaisyti, kai jis pasireiškia
- **Paskirstymas**, pavyzdžiui, kai viena lytis ar etninė grupė yra palankesnė už kitą.
- **Paslaugos kokybė**. Jei mokote duomenis vienai konkrečiai situacijai, bet realybė yra kur kas sudėtingesnė, tai lemia prastą paslaugos kokybę.
- **Stereotipizavimas**. Susiejiant tam tikrą grupę su iš anksto priskirtais atributais.
Pagalvokite apie realaus gyvenimo scenarijus, kur modelių kūrime ir naudojime akivaizdus neteisingumas. Ką dar turėtume apsvarstyti?
- **Niekolinimas**. Neteisingai kritikuoti ir pažymėti ką nors ar ką nors.
- **Perdėta arba nepakankama atstovavimas**. Idėja yra ta, kad tam tikros grupės tam tikroje profesijoje nematoma, ir bet koks paslaugų ar funkcijų skatinimas, kuris tai palaiko, prisideda prie žalos.
### Azure RAI informacijos suvestinė
[Azure RAI informacijos suvestinė](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) sukurta naudojant atviro kodo įrankius, parengtus pirmaujančių akademinių institucijų ir organizacijų, įskaitant Microsoft, kurie yra svarbūs duomenų mokslininkams ir DI kūrėjams geriau suprasti modelio elgseną, atrasti ir sumažinti nepageidaujamas problemas DI modeliuose.
- Sužinokite, kaip naudotis skirtingais komponentais, peržiūrėdami RAI informacijos suvestinės [dokumentaciją.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
- Peržiūrėkite kai kuriuos RAI informacijos suvestinės [pavyzdinius užrašų knygeles](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks), skirtus atsakingesnio DI scenarijų derinimui Azure Machine Learning aplinkoje.
---
## 🚀 Iššūkis
Kad būtų išvengta statistinių ar duomenų šališkumų atsiradimo iš esmės, turėtume:
## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
## Peržiūra ir savarankiškas mokymasis
- turėti skirtingų patirčių ir požiūrių įvairovę sistemų kūrime dirbančių žmonių tarpe
- investuoti į duomenų rinkinius, atspindinčius mūsų visuomenės įvairovę
- tobulinti geresnius metodus, skirtus šališkumui aptikti ir taisyti, kai jis pasireiškia
Šioje pamokoje sužinojote apie praktinius įrankius, kaip įtraukti atsakingą AI į mašininį mokymąsi.
Pagalvokite apie realius scenarijus, kur neteisingumas yra akivaizdus modelių kūrime ir naudojime. Ką dar turėtume apsvarstyti?
Peržiūrėkite šį seminarą, kad giliau pasinertumėte į temas:
## [Po paskaitos viktorina](https://ff-quizzes.netlify.app/en/ml/)
## Peržiūra ir savarankiškas mokymasis
Šioje pamokoje išmokote kai kurių praktinių atsakingo DI įrankių taikymo mašininio mokymosi srityje.
- Atsakingo AI prietaisų skydelis: Vieno langelio principas RAI praktiniam įgyvendinimui, Besmira Nushi ir Mehrnoosh Sameki
Peržiūrėkite šį seminarą, kad giliau įsigilintumėte į temas:
[![Atsakingo AI prietaisų skydelis: Vieno langelio principas RAI praktiniam įgyvendinimui](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Atsakingo AI prietaisų skydelis: Vieno langelio principas RAI praktiniam įgyvendinimui")
- Atsakingo DI informacijos suvestinė: Viena vieta, skirta atsakingo DI pritaikymui praktikoje, pristato Besmira Nushi ir Mehrnoosh Sameki
> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte vaizdo įrašą: Atsakingo AI prietaisų skydelis: Vieno langelio principas RAI praktiniam įgyvendinimui, Besmira Nushi ir Mehrnoosh Sameki
[![Atsakingo DI informacijos suvestinė: Viena vieta, skirta atsakingo DI pritaikymui praktikoje](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Atsakingo DI informacijos suvestinė: Viena vieta, skirta atsakingo DI pritaikymui praktikoje")
Naudokitės šiais šaltiniais, kad sužinotumėte daugiau apie atsakingą AI ir kaip kurti patikimesnius modelius:
> 🎥 Spustelėkite paveikslėlį aukščiau, kad peržiūrėtumėte vaizdo įrašą: Atsakingo DI informacijos suvestinė: Viena vieta, skirta atsakingo DI pritaikymui praktikoje, pristato Besmira Nushi ir Mehrnoosh Sameki
Naudokite šiuos šaltinius, kad sužinotumėte daugiau apie atsakingą DI ir kaip kurti patikimesnius modelius:
- Microsoft RAI prietaisų skydelio įrankiai ML modelių derinimui: [Atsakingo AI įrankių šaltiniai](https://aka.ms/rai-dashboard)
- Microsoft RAI informacijos suvestinės įrankiai mašininio mokymosi modelių derinimui: [Atsakingo DI įrankių ištekliai](https://aka.ms/rai-dashboard)
- Susipažinkite su Atsakingo AI įrankių rinkiniu: [Github](https://github.com/microsoft/responsible-ai-toolbox)
- Išnagrinėkite Atsakingo DI įrankių rinkinį: [Github](https://github.com/microsoft/responsible-ai-toolbox)
- Microsoft RAI išteklių centras: [Atsakingo AI ištekliai Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft RAI išteklių centras: [Atsakingo DI ištekliai Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft FATE tyrimų grupė: [FATE: Sąžiningumas, Atsakomybė, Skaidrumas ir Etika AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Microsoft FATE tyrimų grupė: [FATE: Sąžiningumas, Atsakomybė, Skaidrumas ir Etika DI srityje Microsoft Research](https://www.microsoft.com/research/theme/fate/)
## Užduotis
[Susipažinkite su RAI prietaisų skydeliu](assignment.md)
[Išnagrinėkite RAI informacijos suvestinę](assignment.md)
---
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Dėl svarbios informacijos rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius naudojant šį vertimą.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -13,7 +13,7 @@
},
"1-Introduction/2-history-of-ML/README.md": {
"original_hash": "6a05fec147e734c3e6bfa54505648e2b",
"translation_date": "2025-09-05T12:54:49+00:00",
"translation_date": "2026-07-14T01:17:00+00:00",
"source_file": "1-Introduction/2-history-of-ML/README.md",
"language_code": "my"
},
@ -24,8 +24,8 @@
"language_code": "my"
},
"1-Introduction/3-fairness/README.md": {
"original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
"translation_date": "2025-09-05T12:40:56+00:00",
"original_hash": "0f00d72169a0d37eecfd16d71e01700a",
"translation_date": "2026-07-14T01:18:14+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "my"
},
@ -54,8 +54,8 @@
"language_code": "my"
},
"2-Regression/1-Tools/README.md": {
"original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
"translation_date": "2025-09-05T11:43:05+00:00",
"original_hash": "0b8635427b582d03ea4ab7089b93e505",
"translation_date": "2026-07-14T01:13:47+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "my"
},
@ -72,8 +72,8 @@
"language_code": "my"
},
"2-Regression/2-Data/README.md": {
"original_hash": "7c077988328ebfe33b24d07945f16eca",
"translation_date": "2025-09-05T11:47:48+00:00",
"original_hash": "a58b2c4d16c6b122643391745ac15af6",
"translation_date": "2026-07-14T01:14:58+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "my"
},
@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "my"
},
"2-Regression/2-Data/solution/notebook.ipynb": {
"original_hash": "96b95f8cf473481f2f371de8156f1571",
"translation_date": "2026-07-14T01:06:26+00:00",
"source_file": "2-Regression/2-Data/solution/notebook.ipynb",
"language_code": "my"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:16:22+00:00",
@ -331,7 +337,7 @@
},
"6-NLP/4-Hotel-Reviews-1/README.md": {
"original_hash": "8d32dadeda93c6fb5c43619854882ab1",
"translation_date": "2025-09-05T14:06:07+00:00",
"translation_date": "2026-07-14T01:12:04+00:00",
"source_file": "6-NLP/4-Hotel-Reviews-1/README.md",
"language_code": "my"
},
@ -415,7 +421,7 @@
},
"7-TimeSeries/2-ARIMA/README.md": {
"original_hash": "917dbf890db71a322f306050cb284749",
"translation_date": "2025-09-05T11:56:13+00:00",
"translation_date": "2026-07-14T01:21:20+00:00",
"source_file": "7-TimeSeries/2-ARIMA/README.md",
"language_code": "my"
},
@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
"translation_date": "2025-09-05T13:40:42+00:00",
"translation_date": "2026-07-14T01:16:15+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "my"
},
@ -511,7 +517,7 @@
},
"9-Real-World/1-Applications/README.md": {
"original_hash": "83320d6b6994909e35d830cebf214039",
"translation_date": "2025-09-05T12:27:38+00:00",
"translation_date": "2026-07-14T01:19:25+00:00",
"source_file": "9-Real-World/1-Applications/README.md",
"language_code": "my"
},
@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "my"
},
"__translation_failures__": {
"sketchnotes/LICENSE.md": {
"original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
"source_file": "sketchnotes/LICENSE.md",
"language_code": "my",
"failure_date": "2026-07-14T01:10:13+00:00",
"status": "failed",
"error_type": "TranslationIncompleteError",
"error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
"translator_version": "0.20.0",
"failure_policy_version": 1
}
},
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T12:22:38+00:00",

@ -1,131 +1,157 @@
# စက်ရုပ်သင်ယူမှု၏ သမိုင်းကြောင်း
# စက်သင်ယူခြင်း၏ သမိုင်းကြောင်း
![စက်ရုပ်သင်ယူမှု၏ သမိုင်းကြောင်းကို Sketchnote ဖြင့် အကျဉ်းချုပ်](../../../../sketchnotes/ml-history.png)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
![စက်သင်ယူခြင်း၏ သမိုင်းကို စကက်ချန်နိုးမှာ အကျဉ်းချုပ်](../../../../translated_images/my/ml-history.a1bdfd4ce1f464d9.webp)
> စကက်ချန်နိုးကို [Tomomi Imura](https://www.twitter.com/girlie_mac) မှ ဖန်တီးသည်
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## [မိတ်ဆက်ခန်းမမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
---
[![ML for beginners - History of Machine Learning](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "ML for beginners - History of Machine Learning")
[![စက်သင်ယူခြင်းအတွက် မိတ်ဆက် - စက်သင်ယူခြင်း၏ သမိုင်းကြောင်း](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "စက်သင်ယူခြင်းအတွက် မိတ်ဆက် - စက်သင်ယူခြင်း၏ သမိုင်းကြောင်း")
> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာကို ရှင်းလင်းထားသော ဗီဒီယိုကို ကြည့်ပါ။
> 🎥 ဒီသင်ခန်းစာကို လေ့လာရန် ဗီဒီယိုတိုကို အပေါ်ဓာတ်ပုံကို နှိပ်ပါ။
ဒီသင်ခန်းစာမှာ စက်ရုပ်သင်ယူမှုနှင့် အတုအမြင့်တုအာရုံ၏ သမိုင်းကြောင်းတွင် အရေးပါသော အခန်းကဏ္ဍများကို လေ့လာသွားပါမည်။
ဒီသင်ခန်းစာမှာ စက်သင်ယူခြင်းနဲ့ လူမှုပညာရပ်ဇာတိကျဇယားတစ်ခုဖြစ်တဲ့ အတုအယောင်ပါဝင်တဲ့ အတုအယောင်ဖြစ်မှုအရေးပါရာ ဖွံ့ဖြိုးမှုကို ဖြစ်ပေါ်လာသည့် အကြောင်းကြီးတစ်ခုချင်းစီကို လမ်းလျှောက်သွားမှာဖြစ်သည်။
အတုအမြင့်တုအာရုံ (AI) ၏ သမိုင်းကြောင်းသည် စက်ရုပ်သင်ယူမှု၏ သမိုင်းကြောင်းနှင့် ဆက်စပ်နေပြီး ML ကို အခြေခံသော algorithm များနှင့် ကွန်ပျူတာတိုးတက်မှုများသည် AI ၏ ဖွံ့ဖြိုးတိုးတက်မှုကို အထောက်အကူပြုခဲ့သည်။ ဒီနယ်ပယ်များသည် 1950 ခုနှစ်များတွင် သီးခြားသော သုတေသနနယ်ပယ်များအဖြစ် ပုံသွင်းလာခဲ့သော်လည်း [algorithm, statistical, mathematical, computational နှင့် technical discoveries](https://wikipedia.org/wiki/Timeline_of_machine_learning) များသည် ဒီကာလမတိုင်မီ ရှိခဲ့ပြီး အချို့ overlap ဖြစ်ခဲ့သည်။ အမှန်တကယ်တော့ လူသားများသည် [ရာစုနှစ်များစွာ](https://wikipedia.org/wiki/History_of_artificial_intelligence) အတွင်း ဒီမေးခွန်းများကို စဉ်းစားခဲ့ကြသည်။ ဒီဆောင်းပါးသည် 'စဉ်းစားနိုင်သော စက်' ၏ အတွေးအမြင်၏ သမိုင်းဆိုင်ရာ အခြေခံအမြင်များကို ဆွေးနွေးထားသည်။
လူမှုပညာရပ် (AI) ရဲ့ သမိုင်းကြောင်းသည် စက်သင်ယူခြင်း၏ သမိုင်းနှင့် ပေါင်းသင်းနေပြီး ML အခြေခံထားသော အယ်လ်ဂိုရစ်သမ်များနှင့် ကွန်ပျူတာတိုးတက်မှုများသည် AI ဖွံ့ဖြိုးရာတွင် အရေးပါပြီးဖြစ်သည်။ ဒီနယ်ပယ်များသည် 1950 တန်းက စတင်ပေါ်ထွက်ခဲ့ကြပေမယ့် အရေးကြီးသော [အယ်လ်ဂိုရစ် သမ်၊ သင်္ချာ၊ စာရင်းပညာနှင့် နည်းပညာရှာဖွေမှုများ](https://wikipedia.org/wiki/Timeline_of_machine_learning) ကို ဒီကာလမတိုင်ခင်တည်းကလည်း ရှိခဲ့ပြီး တချို့အချိန်အကွာအဝေးထဲမှ တူရိယာကြမ်းဖက်မှုများပါ စဉ်ဆက်မပြတ် ရှိနေခဲ့သည်။ အမှန်တကယ် လူတွေဟာ [ရာစုများကြာပြီး](https://wikipedia.org/wiki/History_of_artificial_intelligence) စိတ်ကူးထားသော 'စဉ်းစားတတ်သောစက်' အတွေးအခေါ်များအပေါ် ဆက်စပ်စဉ်းစားလာကြပြီး ဒီဆောင်းပါးသည် ထိုအတွေး၏ သမိုင်းကြောင်းတ္တိတင်အတွေးအခေါ်များကို ဆွေးနွေးသည်။
---
## အရေးပါသော ရှာဖွေတွေ့ရှိမှုများ
## ထူးခြားသော ရှာဖွေတွေ့ရှိမှုများ
- 1763, 1812 [Bayes Theorem](https://wikipedia.org/wiki/Bayes%27_theorem) နှင့် ၎င်း၏ ရှေးဦးများ။ ဒီသီအိုရီသည် အကြိုသိရှိမှုအပေါ် အခြေခံပြီး ဖြစ်နိုင်ခြေကို ဖော်ပြသော inference ကို အခြေခံသည်။
- 1805 [Least Square Theory](https://wikipedia.org/wiki/Least_squares) ကို ပြင်သစ်ဂဏန်းသိပ္ပံပညာရှင် Adrien-Marie Legendre မှ တီထွင်ခဲ့သည်။ ဒီသီအိုရီကို Regression unit တွင် လေ့လာရမည်ဖြစ်ပြီး ဒေတာ fitting ကို အထောက်အကူပြုသည်။
- 1913 [Markov Chains](https://wikipedia.org/wiki/Markov_chain) ကို ရုရှားဂဏန်းသိပ္ပံပညာရှင် Andrey Markov မှ တီထွင်ခဲ့ပြီး အခြေခံအခြေအနေအပေါ် အခြေခံသော ဖြစ်နိုင်သော အဖြစ်အပျက်များ၏ အစဉ်အလာကို ဖော်ပြသည်။
- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron) ကို အမေရိကန် စိတ်ပညာရှင် Frank Rosenblatt မှ တီထွင်ခဲ့ပြီး deep learning တိုးတက်မှုများ၏ အခြေခံဖြစ်သည်။
- 1763, 1812 [Bayes သီအိုရီ](https://wikipedia.org/wiki/Bayes%27_theorem) နှင့် ၎င်း၏ ယခင်မျိုးဆက်များ။ ဤသီအိုရီနှင့် ၎င်း၏ အသုံးချမှုများသည် အခြေခံပြီး အဖြစ်တွေဖြစ်ပေါ်နိုင်မှုကို ရှာဖွေဖော်ပြသည်။
- 1805 ပြင်သစ်သင်္ချာပညာရှင် Adrien-Marie Legendre ၏ [အနည္းဆုံးစတုရန်းသီအိုရီ](https://wikipedia.org/wiki/Least_squares)။ ဤသီအိုရီသည် ဒေတာကို ကိုက်ညီစေရန် အထောက်အကူပြုသည်။
- 1913 ရုရှားသင်္ချာပညာရှင် Andrey Markov ၏ အမည်ပေါ်မူတည်၍ [Markov လမ်းကြောင်းများ](https://wikipedia.org/wiki/Markov_chain) သည် ယခင်အခြေအနေများပေါ်မူတည်၍ ဖြစ်နိုင်သောဖြစ်ရပ်များအဆက်အစပ်ကို ဖော်ပြရန်အသုံးပြုသည်။
- 1957 အမေရိကန်စိတ်ပညာရှင် Frank Rosenblatt မှ ဖန်တီးသော [Perceptron](https://wikipedia.org/wiki/Perceptron) သည် အကြောင်းအရာလိုက်ခွဲခြားရေးနည်းပညာတစ်မျိုးဖြစ်ပြီး နက်ရှိုင်းစိတ်ကွဲနည်းပညာ တိုးတက်မှုများ၏ အခြေခံဖြစ်သည်။
---
- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) ကို route များကို map ပြုလုပ်ရန် အစတင်ဖန်တီးခဲ့သည်။ ML context တွင် pattern များကို ရှာဖွေဖော်ထုတ်ရန် အသုံးပြုသည်။
- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation) ကို [feedforward neural networks](https://wikipedia.org/wiki/Feedforward_neural_network) များကို training ပြုလုပ်ရန် အသုံးပြုသည်။
- 1982 [Recurrent Neural Networks](https://wikipedia.org/wiki/Recurrent_neural_network) ကို feedforward neural networks မှ ဆင်းသက်လာပြီး အချိန်ဇယားများကို ဖန်တီးသည်။
- 1967 [အနီးဆုံးအိမ်နှင့်စာရင်းစစ်ခြင်း](https://wikipedia.org/wiki/Nearest_neighbor) သည် စတင်က မောင်းနှင်လမ်းကြောင်းများ ချထားရန် ဖန်တီးခဲ့သော်လည်း ML တွင် ပုံစံများကို ရှာဖွေရန်အသုံးပြုသည်။
- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation) ကို [feedforward neural networks](https://wikipedia.org/wiki/Feedforward_neural_network) ကို လေ့ကျင့်ရေးအတွက် အသုံးပြုသည်။
- 1982 [Recurrent Neural Networks](https://wikipedia.org/wiki/Recurrent_neural_network) သည် feedforward neural networks မှ မူရင်းယူ၍ အချိန်ဆက်တိုက်သဏ္ဍာန်ရသော ကွန်ယက်များ ဖန်တီးသော အတုများဖြစ်သည်။
✅ သုတေသနအနည်းငယ် ပြုလုပ်ပါ။ ML နှင့် AI ၏ သမိုင်းကြောင်းတွင် အရေးပါသော အခြားသော ရက်စွဲများကို ရှာဖွေပါ။
✅ သုတေသန တစိတ်တပိုင်းလုပ်ပါ။ ML နဲ့ AI ရဲ့ သမိုင်းမှာ အရေးကြီးတဲ့ နေ့ရက်တစ်ချို့က ဘာတွေလဲဆိုတာ ရှာဖွေကြည့်ပါ။
---
## 1950: စဉ်းစားနိုင်သော စက်များ
## 1950: စဉ်းစားတတ်သော စက်များ
Alan Turing သည် 2019 ခုနှစ်တွင် [လူထုမှ](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20 ရာစု၏ အကြီးမားဆုံး သိပ္ပံပညာရှင်အဖြစ် မဲပေးရွေးချယ်ခံရသော ထူးချွန်သောပုဂ္ဂိုလ်ဖြစ်ပြီး 'စဉ်းစားနိုင်သော စက်' ၏ အခြေခံအမြင်ကို တည်ဆောက်ရန် အထောက်အကူပြုခဲ့သည်။ ၎င်းသည် [Turing Test](https://www.bbc.com/news/technology-18475646) ကို ဖန်တီးခြင်းဖြင့် ဒီအမြင်ကို အတည်ပြုရန် ကြိုးစားခဲ့သည်။ Turing Test ကို NLP သင်ခန်းစာများတွင် လေ့လာရမည်။
Alan Turing, လူထုမှ 2019 ခုနှစ်တွင် [20 ရာစု၏ ထိပ်ဆုံး သိပ္ပံပညာရှင်ရင်း](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) အဖြစ် မဲပေးထောက်ခံခဲ့သူ တစ်ဦးဖြစ်ပြီး၊ 'စဉ်းစားတတ်သောစက်' ဆိုသော အဓိပ္ပါယ် အခြေခံရန် အခြေခံထားသူတစ်ဦးအနေဖြင့် ကျွမ်းကျင်သူဖြစ်သည်။ သူသည် ယမကာများနှင့် မိမိအသက်သက်သေခံချက်ဖြစ်စေခြင်းလိုအပ်ချက်ကြားတွင် တစ်စိတ်တစ်ပိုင်းဖြစ်ပြီး [Turing စမ်းသပ်မှု](https://www.bbc.com/news/technology-18475646) ကို ဖန်တီးခဲ့သည်။ ၎င်းသည် ကျွန်တော်တို့ NLP သင်ခန်းစာများတွင် လေ့လာသွားမည်ဖြစ်သည်။
---
## 1956: Dartmouth Summer Research Project
## 1956: Dartmouth နွေရာသီ သုတေသန စီမံကိန်း
"Dartmouth Summer Research Project on artificial intelligence သည် အတုအမြင့်တုအာရုံနယ်ပယ်အတွက် အရေးပါသော အခန်းကဏ္ဍတစ်ခုဖြစ်ပြီး ဒီနေရာတွင် 'artificial intelligence' ဆိုသော စကားလုံးကို ပထမဆုံး အသုံးပြုခဲ့သည်။" ([source](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))
"Dartmouth နွေရာသီ သုတေသန စီမံကိန်းသည် လူမှုပညာရပ်တစ်ခုအနေဖြင့် အရေးကြီးသော ရက်ခွင်တစ်ခုဖြစ်ပြီး လူမှုပညာရပ် ဆိုသော စကားလုံးကို ပထမဆုံးဖန်တီးခဲ့သည်။" ([ရင်းမြစ်](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))
> သင်ယူမှု၏ အပိုင်းအစများ သို့မဟုတ် ဉာဏ်ရည်၏ အခြားသော လက္ခဏာများကို စက်တစ်ခုမှ simulation ပြုလုပ်နိုင်ရန် အလွန်တိကျစွာ ဖော်ပြနိုင်သည်။
> သင်ယူမှု၏ ဂဏန်းမတူသော အပါအဝင် လူမှုပညာရပ်၏ မည်သည့်အချက်အလက်တွင်မဆို တိကျစွာ ဖော်ပြနိုင်ပြီး၊ စက်တစ်စက်ဖြင့် အတုလုပ်နိုင်သည်။
---
ဦးဆောင်သုတေသနပညာရှင်ဖြစ်သော ဂဏန်းသိပ္ပံပညာရှင် John McCarthy သည် "သင်ယူမှု၏ အပိုင်းအစများ သို့မဟုတ် ဉာဏ်ရည်၏ အခြားသော လက္ခဏာများကို စက်တစ်ခုမှ simulation ပြုလုပ်နိုင်ရန် အလွန်တိကျစွာ ဖော်ပြနိုင်သည်" ဆိုသော အယူအဆအပေါ် အခြေခံ၍ ဆက်လက်လုပ်ဆောင်ရန် မျှော်လင့်ခဲ့သည်။ ၎င်း၏ ပါဝင်သူများတွင် Marvin Minsky ကဲ့သို့သော နယ်ပယ်၏ ထူးချွန်သောပုဂ္ဂိုလ်တစ်ဦးလည်း ပါဝင်ခဲ့သည်။
ဦးဆောင်သုတေသနဆရာ John McCarthy သည် "သင်ယူမှု၏ မည်သည့်အချက်ကိုမဆို တိကျစွာဖော်ပြနိုင်သောကြောင့် စက်ဖြင့် အတုလုပ်နိုင်သည်" ဟူသော သီအိုရီပေါ်မူတည်၍ ရှေ့ဆက်၍ အလုပ်လုပ်မည်ဟု မျှော်လင့်ခဲ့သည်။ ပါဝင်သူများထဲတွင် Marvin Minsky ဟူသော နယ်ပယ်ကျော်ကြားသူတစ်ဦးပါဝင်ခဲ့သည်။
ဒီ workshop ကို "symbolic methods, limited domains (early expert systems), deductive systems နှင့် inductive systems" တိုးတက်မှုများကို စတင်ပြီး အားပေးခဲ့သည်ဟု သတ်မှတ်ထားသည်။ ([source](https://wikipedia.org/wiki/Dartmouth_workshop))
ဤအစည်းအဝေးသည် "သင်္ကေတသုံးနည်းလမ်းများ မြင့်တက်လာခြင်း၊ အကန့်အသတ်ရှိသော နယ်ပယ်များအတွင်း ဦးတည်သော စနစ်များ (အစောပိုင်း ကျွမ်းကျင်သူစနစ်များ) နှင့် ကုသိုလ်ရှာဖွေရေးစနစ်များနှင့် အညီအစပ်စနစ်များ" စသည်တို့ ဆွေးနွေးမှုများကို ဖြေဠာက်လျက်ရှိသည်။ ([ရင်းမြစ်](https://wikipedia.org/wiki/Dartmouth_workshop))
---
## 1956 - 1974: "ရွှေခေတ်"
## 1956 - 1974: "ရွှေ့ရတီနှစ်များ"
1950 ခုနှစ်များမှ 1970 ခုနှစ်ဝန်းကျင်အထိ AI သည် အများပြည်သူ၏ ပြဿနာများကို ဖြေရှင်းနိုင်မည်ဟု မျှော်လင့်မှုများ အလွန်မြင့်မားခဲ့သည်။ 1967 ခုနှစ်တွင် Marvin Minsky သည် "တစ်မျိုးဆက်အတွင်း ... 'artificial intelligence' ဖန်တီးခြင်း၏ ပြဿနာကို အများအားဖြင့် ဖြေရှင်းနိုင်မည်" ဟု ယုံကြည်စွာ ပြောကြားခဲ့သည်။ (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
1950 ခုနှစ်များမှ 1970s အလယ်အလတ်အထိ လူမှုပညာရပ်သည် ပြဿနာများကို ဖြေရှင်းနိုင်ကြောင်း မျှော်လင့်ချက်များ စိတ်ဓာတ်မြင့်မားခဲ့သည်။ 1967 ခုနှစ်တွင် Marvin Minsky က "တစ်မျိုးဆက်အတွင်း... 'လူမှုပညာရပ်' ဖန်တီးမှု ပြဿနာကို အဓိကအားဖြင့် ဖြေရှင်းလိမ့်မည်" ဟူ၍ ယုံကြည်စွာ ထုတ်ပြန်ခဲ့သည်။ (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
natural language processing သုတေသနများ တိုးတက်မှုရှိခဲ့ပြီး ရှာဖွေမှုများကို ပိုမိုစွမ်းဆောင်နိုင်စေခဲ့သည်။ 'micro-worlds' ဆိုသော အတွေးအမြင်ကို ဖန်တီးခဲ့ပြီး ရိုးရှင်းသော လုပ်ငန်းများကို ရိုးရှင်းသော စကားလုံးများဖြင့် ပြုလုပ်နိုင်ခဲ့သည်။
သဘာဝဘာသာစကားကို သုတေသန ပြုလုပ်ခြင်း ပျံ့နှံ့ခဲ့ပြီး ရှာဖွေမှုနည်းလမ်းအသစ်များ သာမာန်ဘာသာစကားညွှန်ကြားချက်များဖြင့် အလွယ်တကူ ပြီးမြောက်စေရန် စီမံကိန်းများ ဖန်တီးခဲ့သည်။
---
သုတေသနများကို အစိုးရအေဂျင်စီများမှ ရန်ပုံငွေထောက်ပံ့ခဲ့ပြီး ကွန်ပျူတာနှင့် algorithm များတွင် တိုးတက်မှုများ ရှိခဲ့သည်။ ဉာဏ်ရည်ရှိသော စက်များ၏ prototype များကို ဖန်တီးခဲ့သည်။ ၎င်းတို့ထဲတွင် ပါဝင်သော စက်များမှာ -
အစိုးရအဖွဲ့အစည်းများမှ စုံစုံလင်လင် ရန်ပုံငွေဖြင့် ထောက်ပံ့ခဲ့ပြီး ကွန်ပျူတာနှင့် အယ်လ်ဂိုရစ်သမ်များ အောင်မြင်မှုများ ရှိခဲ့သည်။ ၎င်းတို့ထဲမှာ အနည်းငယ်သော စက်များမှာ:
* [Shakey the robot](https://wikipedia.org/wiki/Shakey_the_robot) သည် လှုပ်ရှားနိုင်ပြီး 'ဉာဏ်ရည်ရှိ' လုပ်ငန်းများကို ဆုံးဖြတ်နိုင်သည်။
* [Shakey the robot](https://wikipedia.org/wiki/Shakey_the_robot) သည် လမ်းညွှန်ခြင်းနှင့် အလုပ်များကို 'အသိပညာ' ဖြင့် ဆုံးဖြတ်နိုင်သည်။
![Shakey, an intelligent robot](../../../../1-Introduction/2-history-of-ML/images/shakey.jpg)
> Shakey in 1972
![Shakey, an intelligent robot](../../../../translated_images/my/shakey.4dc17819c447c05b.webp)
> 1972 ခုနှစ်တွင် Shakey
---
* Eliza သည် စောစောပိုင်း 'chatterbot' တစ်ခုဖြစ်ပြီး လူများနှင့် စကားပြောနိုင်သည်။ ၎င်းသည် primitive 'therapist' အဖြစ် လုပ်ဆောင်နိုင်သည်။ Eliza ကို NLP သင်ခန်းစာများတွင် ပိုမိုလေ့လာရမည်။
* Eliza သည် ကျူးလွန်သူ 'စကားပြောစက်' တစ်ခုဖြစ်ပြီး လူများနှင့် စကားပြောဆက်ဆံခြင်းနှင့် အဓိက 'ကုထုံးပေးသူ' အဖြစ် ဆောင်ရွက်နိုင်သည်။ NLP သင်ခန်းစာများတွင် Eliza အကြောင်း များစွာ သိရှိသွားမည်။
![Eliza, a bot](../../../../1-Introduction/2-history-of-ML/images/eliza.png)
> Eliza ၏ version တစ်ခု
![Eliza, a bot](../../../../translated_images/my/eliza.84397454cda9559b.webp)
> Eliza ၏ ဗားရှင်းတစ်ခု၊ စကားပြောစက်တစ်ခု
---
* "Blocks world" သည် blocks များကို စုစည်းခြင်းနှင့် စီမံခြင်းကို ပြုလုပ်နိုင်သော micro-world တစ်ခုဖြစ်ပြီး စက်များကို ဆုံးဖြတ်ချက်ချရန် သင်ကြားမှုများကို စမ်းသပ်နိုင်သည်။ [SHRDLU](https://wikipedia.org/wiki/SHRDLU) ကဲ့သို့သော library များဖြင့် language processing ကို တိုးတက်စေခဲ့သည်။
* "Blocks world" သည် စက်များစွမ်းဆောင်ဆရာပြုရန် စားပွဲပျော်မြောက်မှု နှင့် စီစစ်ပေးမှုများ လုပ်ဆောင်နိုင်သော micro-world တစ်ခုဖြစ်ပြီး [SHRDLU](https://wikipedia.org/wiki/SHRDLU) ကဲ့သို့သော စာကြောင်းဖြန့်ဖြူးမှု ကို တိုးတက်စေမည့် စာကြောင်းခွဲတမ်းများ ဖန်တီးရန် အသုံးပြုခဲ့သည်။
[![blocks world with SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world with SHRDLU")
> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဗီဒီယိုကြည့်ပါ: Blocks world with SHRDLU
> 🎥 ဓာတ်ပုံအပေါ်ကို နှိပ်ပြီး ဗီဒီယိုကြည့်ရှုပါ: Blocks world with SHRDLU
---
## 1974 - 1980: "AI Winter"
1970 ခုနှစ်ဝန်းကျင်တွင် 'ဉာဏ်ရည်ရှိသော စက်' ဖန်တီးခြင်း၏ အခက်အခဲများကို အလွန်နည်းနည်းသာ သတ်မှတ်ထားသည်ဟု သိရှိလာခဲ့ပြီး compute power ရှိမှုအပေါ် အလွန်မြှင့်တင်ထားသည်ဟု သိရှိလာခဲ့သည်။ ရန်ပုံငွေများ လျော့နည်းလာခဲ့ပြီး နယ်ပယ်အပေါ် ယုံကြည်မှုများ လျော့နည်းလာခဲ့သည်။ ယုံကြည်မှုကို ထိခိုက်စေသော အချက်များမှာ -
## 1974 - 1980: "AI ဆောင်းရာသီ"
1970s အလယ်အတွင်း 'အသိပညာရှိစက်များ' ဖန်တီးရခြင်း၏ ရှုပ်ထွေးမှုကို မျှော်လင့်ချက်ထက် ပိုမိုနည်းနေပြီး ရန်ပုံငွေ သက်သာလျော့နည်းလာပြီ သက်သေအားလုံး ရှငျဆီးကြောင့် ယုံကြည်မှု လျော့နည်းလာခဲ့သည်။ ယုံကြည်မှု လျော့နည်းစေသည့် ကိစ္စအချို့မှာ:
---
- **ကန့်သတ်ချက်များ**။ Compute power သည် အလွန်နည်းပါးနေသည်
- **Combinatorial explosion**။ စက်များကို ပိုမိုတိုးတက်စွမ်းဆောင်စေရန် training လိုအပ်သော parameters များသည် exponential အတိုင်း တိုးလာခဲ့သည်
- **ဒေတာနည်းပါးမှု**။ ဒေတာနည်းပါးမှုသည် algorithm များကို စမ်းသပ်ခြင်း၊ ဖွံ့ဖြိုးတိုးတက်ခြင်းနှင့် ပြုပြင်ခြင်းကို အတားအဆီးဖြစ်စေခဲ့သည်။
- **ကျွန်ုပ်တို့မှန်ကန်သောမေးခွန်းများကို မေးနေပါသလား?**။ မေးခွန်းများကို မေးနေသော နည်းလမ်းများကို ပြန်လည်စဉ်းစားခဲ့သည်။
- Turing tests ကို 'chinese room theory' ကဲ့သို့သော အယူအဆများဖြင့် ပြန်လည်စဉ်းစားခဲ့သည်။ "digital computer ကို programming ပြုလုပ်ခြင်းသည် ဘာသာစကားကို နားလည်သည့်အတိုင်း ထင်ရစေသော်လည်း အမှန်တကယ် နားလည်မှုကို ဖန်တီးနိုင်မည်မဟုတ်ပါ။" ([source](https://plato.stanford.edu/entries/chinese-room/))
- "therapist" ELIZA ကဲ့သို့သော artificial intelligences များကို လူ့အဖွဲ့အစည်းထဲသို့ ထည့်သွင်းခြင်း၏ ethics ကို စိစစ်ခဲ့သည်။
- **ကန့်သတ်ချက်များ**။ ကွန်ပျူတာစွမ်းအား မလုံလောက်ခြင်း
- **Combinatorial ပွင့်ပွင့်လင်းလင်းကြီးထွားမှု**။ ပိုမိုမေးမြန်းရန်အတွက် စနစ်လက်ရှိ လေ့ကျင့်ဆောင်ရွက် သည် parameter ပမာဏ ပျမ်းမျှအတိုင်း တိုးတက်မှုမရှိခြင်း
- **ဒေတာမလုံလောက်ခြင်း**။ အယ်လ်ဂိုရစ်သမ်များ ကို စမ်းသပ်၊ ဖွံ့ဖြိုးမြှင့်တင်ခြင်းတွင် ဒေတာနည်းပါးမှုကြောင့် ချို့ယွင်းမှုဖြစ်ခဲ့သည်။
- **ကျွန်တော်တို့ မေးခွန်းမြန်မာဖို့မှန်သလား?**. မေးခွန်းများကို ခွဲခြားစစ်ဆေးရန် စတင်ခဲ့သည်။ သုတေသနဆရာများသည် မိမိနည်းလမ်းများအပေါ် အပြစ်တင်ခံရခြင်းရှိသည်။
- Turing စမ်းသပ်မှုများသည် 'တရုတ်အခန်း သီအိုရီ' စနစ်ကဲ့သို့ အကြံပြုချက်တစ်ခုဖြင့် စိစစ်ခံရသည်၊ ဤအကြောင်းက "ဒစ်ဂျစ်တယ်ကွန်ပျူတာကို အစီအစဉ်ရေးခြင်းကဘာသာစကားကို နားလည်သဏ္ဍာန်လုပ်ပေးနိုင်သော်လည်း ကိုယ့်ခံနားလည်မှုကို မဖန်တီးနိုင်ပါ။" ([ရင်းမြစ်](https://plato.stanford.edu/entries/chinese-room/))
- လူမှုအသိုင်းအဝိုင်းထဲမှ “ကုထုံးပေးသူ” ELIZA အဖွဲ့အစည်းများကို မူဝါဒသတ်မှတ်ခြင်း အပေါ်စိစစ်တင်ပြခြင်းရှိနေသည်။
---
AI သုတေသနနယ်ပယ်များတွင် အမျိုးအစားများ ပေါ်ပေါက်လာခဲ့သည်။ ["scruffy" vs. "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies) အယူအဆများကို ဖွဲ့စည်းခဲ့သည်။ _Scruffy_ labs များသည် ရလဒ်လိုက်ဖို့အတွက် program များကို အချိန်ကြာကြာ tweak ပြုလုပ်ခဲ့သည်။ _Neat_ labs များသည် "logic နှင့် formal problem solving" ကို အဓိကထားခဲ့သည်။ ELIZA နှင့် SHRDLU သည် _scruffy_ systems များဖြစ်သည်။ 1980 ခုနှစ်များတွင် ML systems များကို reproducible ဖြစ်စေရန် demand ပေါ်လာသည်နှင့်အမျှ _neat_ approach သည် gradually အရေးပါလာခဲ့သည်။
တူတူအချိန်တွင် AI အတွေးအခေါ်အချို့ ဖွဲ့စည်းလာသည်။ ["ခွက်ဆွဲသော" နှင့် "စနစ်တကျ AI"] ပုံစံများကြား ရိုက်နှက်မှု ဖြစ်ပေါ်ခဲ့သည်။ _ခွက်ဆွဲသော_ လက်ရုံးနည်းစနစ်များသည် မိနစ်များစွာ ပြင်ဆင်ခဲ့သည်။ _စနစ်တကျ_ စက်ရုံများ သည်းခံစွာ သင်္ချာနှင့် အချက်ပြ ဟန်ချက်ညီကာ ပြဿနာများ ဖြေရှင်းရာတွင် ဦးတည်သည်။ ELIZA နဲ့ SHRDLU သည် _ခွက်ဆွဲသော_ စနစ်များ ဖြစ်သည်။ 1980s တွင် ML စနစ်များကို ထပ်မံထုတ်ပြန်နိုင်စေရန် လိုအပ်လာပြီး ယင်းအတွက် _စနစ်တကျ_ နည်းလမ်းများ အားသာမှု ရရှိလာသည်။
---
## 1980s Expert systems
## 1980s စွမ်းကျင်သူ စနစ်များ
နယ်ပယ်သည် တိုးတက်လာသည်နှင့် ၎င်း၏ စီးပွားရေးအကျိုးကျေးဇူးများ ပိုမိုရှင်းလင်းလာခဲ့ပြီး 1980 ခုနှစ်များတွင် 'expert systems' များ ပေါ်ပေါက်လာခဲ့သည်။ "Expert systems သည် အတုအမြင့်တုအာရုံ (AI) software ၏ ပထမဆုံးအောင်မြင်သော အမျိုးအစားများအနက် တစ်ခုဖြစ်သည်။" ([source](https://wikipedia.org/wiki/Expert_system))
နယ်ပယ်တိုးတက်လာသည်နှင့်အမျှ စီးပွားရေးတွင် အသုံးအဆောင်ဖြစ်လာပြီး 1980s တွင် 'စွမ်းကျင်သူစနစ်' များ တိုးချဲ့ခဲ့သည်။ "စွမ်းကျင်သူစနစ်များသည် လူမှုပညာရပ် (AI) ဆော့ဖ်ဝဲအမျိုးအစား အောင်မြင်ပြီးစတင်သော ပုံစံများဖြစ်သည်။" ([ရင်းမြစ်](https://wikipedia.org/wiki/Expert_system))
ဒီအမျိုးအစားသည် _hybrid_ system တစ်ခုဖြစ်ပြီး rules engine တစ်ခုနှင့် inference engine တစ်ခုကို ပေါင်းစပ်ထားသည်။
၎င်းစနစ်များသည် ဟိုက်ဘရစ်အမျိုးအစားဖြစ်ပြီး တစ်စိတ်တစ်ပိုင်းမှာ စီးပွားရေးလိုအပ်ချက်များကို သိမ်းဆည်းထားသော စည်းမျဉ်းစနစ်ဖြစ်ပြီး နောက်တစ်စိတ်မှာ စည်းမျဉ်းစနစ်ကို အသုံးပြု၍ အချက်အလက်သစ်များကို ထုတ်ယူခွင့်ရသော စနစ်ဖြစ်သည်။
ဒီကာလတွင် neural networks အပေါ် အာရုံစိုက်မှုများလည်း တိုးလာခဲ့သည်။
ဤအချိန်ကာလတွင် နယူးရယ်ကွန်ယက်များတွင် ပိုမိုစိတ်ဝင်စားလာသော အချိန်လည်းဖြစ်သည်။
---
## 1987 - 1993: AI 'Chill'
## 1987 - 1993: AI 'အေးခဲမှု'
specialized expert systems hardware များ၏ ပေါ်ပေါက်မှုသည် အလွန် specialized ဖြစ်လာခဲ့သည်။ Personal computers များ၏ တိုးတက်မှုသည် ဒီအကြီးမားသော specialized systems များနှင့် ယှဉ်ပြိုင်ခဲ့သည်။ Computing ၏ democratization သည် စတင်ခဲ့ပြီး big data ၏ explosion ကို pave လုပ်ပေးခဲ့သည်။
ကြီးမှုထူးခြားသည့် စွမ်းကျင်သူစနစ်များ ရုံးခွဲများ ဖြစ်လာသည်။ မိမိစီးပွားရေးကိုယ်ပိုင် ကွန်ပျူတာများ လည်း ဤကြီးမားပြီး အထူးပြုစနစ်များဖြင့် ယှဉ်ပြိုင်လာပါသည်။ ကွန်ပျူတာများကို လူသုံးများလာခြင်းက ကွန်ပျူတာဒေတာများ ပိုမိုကြီးပြင်းလာရန် များစွာ ခြေလှမ်းတိုးခဲ့သည်။
---
## 1993 - 2011
ဒီကာလတွင် ML နှင့် AI သည် data နှင့် compute power နည်းပါးမှုကြောင့် ဖြစ်ပေါ်ခဲ့သော ပြဿနာများကို ဖြေရှင်းနိုင်စွမ်းရှိလာခဲ့သည်။ ဒေတာပမာဏသည် အလွန်မြန်ဆန်စွာ တိုးလာခဲ့ပြီး smartphone ၏ ပေါ်ပေါက်မှု (2007) ကြောင့် ပိုမိုရရှိနိုင်လာခဲ့သည်။ Compute power သည် exponential အတိုင်း တိုးလာခဲ့ပြီး algorithm များလည်း တိုးတက်လာခဲ့သည်။ နယ်ပယ်သည် အတိတ်ကာလ၏ freewheeling days များမှ အတည်ပြု discipline တစ်ခုအဖြစ် crystallize ဖြစ်လာခဲ့သည်။
ဒီအချိန်ကာလတွင် ML နှင့် AI သည် ဒေတာနည်းပါးခြင်းနှင့် ကွန်ပျူတာစွမ်းအား ကန့်သတ်ချက်အရ ဖြစ်ပေါ်ခဲ့သော ပြဿနာများကို ဖြေရှင်းနိုင်ရန် အသစ်တစ်ခုချင်းစီ ကာလဖြစ်ခဲ့သည်။ ဒေတာ ပမာဏများမြန်ဆန်စွာတိုးပွားလာပြီး အသုံးပြုမှု ပိုမိုကျယ်ပြန့်လာခဲ့သည်။ အထူးသဖြင့် 2007 ခုနှစ်အနီးတွင် စမတ်ဖုန်းများပေါ်ပေါက်လာခဲ့သည်။ ကွန်ပျူတာစွမ်းအားသည် ပရိုက်မီတစ်သည့်ဖြစ်ပြီး အယ်လ်ဂိုရစ်သမ်များလည်း တိုးတက်ကောင်းမွန်လာသည်။ နယ်ပယ်သည် ကျွမ်းကျင်လာပြီး ယခင်自由自在သောကာလ သည် တကယ့်အတည်ပြုသော သင်တန်းရပ်ဖြစ်လာသည်။
---
## ယနေ့
ယနေ့တွင် စက်ရုပ်သင်ယူမှုနှင့် AI သည် လူသားများ၏ ဘဝ၏ အစိတ်အပိုင်းများအားလုံးကို ထိခိုက်စေသည်။ ဒီကာလသည် algorithm များ၏ လူသားဘဝများအပေါ် ရှုထောင့်များနှင့် အကျိုးသက်ရောက်မှုများကို သေချာနားလည်ရန် လိုအပ်သည်။ Microsoft's Brad Smith က "သတင်းအချက်အလက်နည်းပညာသည် privacy နှင့် freedom of expression ကဲ့သို့သော အခြေခံလူ့အခွင့်အရေးများကို ထိခိုက်စေသော ပြဿနာများကို ရှုထောင့်ပေးသည်။ ဒီပြဿနာများသည် ဒီထုတ်ကုန်များကို ဖန်တီးသော နည်းပညာကုမ္ပဏီများအတွက် တာဝန်ရှိမှုကို မြှင့်တင်စေသည်။ ကျွန်ုပ်တို့၏အမြင်အရ၊ ၎င်းတို့သည် thoughtful government regulation နှင့် acceptable uses အပေါ် norms ဖွံ့ဖြိုးတိုးတက်မှုကို လိုအပ်သည်။" ([source](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)) ဟု ပြောကြားခဲ့သည်။
ယနေ့စက်သင်ယူခြင်း နဲ့ AI သည် ကျွန်တော်တို့ဘဝ၏ များသော ရာထူးကို ထိန်းသိမ်းထားသည်။ ဒီအချိန်ကာလမှာ သက်ဆိုင်ရာ နည်းလမ်းများ အန္တရာယ်များနှင့် အကျိုးဆက်များကို သေချာ သိရှိရန် လိုအပ်သည်။ Microsoft ၏ Brad Smith က ပြောကြားခဲ့သလို "သတင်းအချက်အလက်နည်းပညာသည် မူဝါဒဆိုင်ရာ အခြေခံ အခွင့်အရေးများဖြစ်သည့် ကိုယ်ရေးကိုယ်တာရေးနှင့် အသံလွှင့်ခွင့်ကဲ့သို့ ဂရုပြုမှုအရေးကြီးသောကိစ္စများကို ဖြစ်ပေါ်စေသည်။ ၎င်းအချက်များသည် ထုတ်ကုန်များဖန်တီးသော နည်းပညာကုမ္ပဏီများ၏ တာဝန်ကို တင်မြှောက်သည်။ ကျွန်တော်တို့၏ အမြင်အရ ထိုသူတို့သည် အတည်ပြုခွင့်ရှိသော စီမံခန့်ခွဲမှုနှင့် သုံးစွဲမှုနည်းစနစ်များဖန်တီးရန် အစိုးရစီမံကိန်းတစ်ခုလိုအပ်ကြောင်းဖြစ်သည်။" ([ရင်းမြစ်](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/))
---
မနာလိုက်မနေပြီးတော့ နောက်လှည့်အခြေအနေမှာ ဘာတွေရှိမယ်ဆိုတာ သိသင့်သော်လည်း ဒီကွန်ပျူတာစနစ်များနဲ့ ၎င်းတို့ရဲ့ ဆော့ဖ်ဝဲနဲ့ အယ်လ်ဂိုရစ်သမ်များကို သိရှိနားလည်ခြင်းအရေးကြီးသည်။ ဒီသင်တန်းအစီအစဉ်သည် သင်များ ပိုမိုနားလည်ကောင်းစေရန် ကူညီနိုင်မည်ဟု မျှော်လင့်ပါတယ်။
[![နက်ရှိုင်းစိတ်ကွဲနည်းပညာ၏ သမိုင်းကြောင်း](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "နက်ရှိုင်းစိတ်ကွဲနည်းပညာ၏ သမိုင်းကြောင်း")
> 🎥 ဓာတ်ပုံအထက်ကို နှိပ်၍ ဗီဒီယိုကြည့်ရှုပါ: Yann LeCun က သင်ခန်းစာတွင် နက်ရှိုင်းစိတ်ကွဲနည်းပညာ၏ သမိုင်းကို ဆွေးနွေးခြင်း
---
## 🚀 စိန်ခေါ်မှု
ဒီသမိုင်းဖြတ်သန်းဖြစ်ရပ်အချို့ကို စူးစမ်းပြီး နောက်ကွယ်က လူတွေအကြောင်းပို၍ လေ့လာပါ။ စိတ်ဝင်စားဖွယ်ကောင်းသော ဇာတ်ကောင်များ တွေ့ရှိရမည်ဖြစ်ပြီး သိပ္ပံရှာဖွေမှုသည် ယဉ်ကျေးမှုနယ်ပယ်ကအစရဲ႕ မရှိမျှပါ။
## [သင်ခန်းစာပြီးနောက် မေးခွန်းများ](https://ff-quizzes.netlify.app/en/ml/)
---
## ပြန်လည်ဆန်းစစ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
ဒီ့အတွက် စုံစမ်းကြည့်ရန်နှင့် နားထောင်ရန် ရှိသည်။
[Amy Boyd က လူမှုပညာ၏ ဖွံ့ဖြိုးတိုးတက်မှုကို ဆွေးနွေးသော ပေါ့ဒ်ကတ်](http://runasradio.com/Shows/Show/739)
[![Amy Boyd မှ လူမှုပညာ၏ သမိုင်းကြောင်း](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy Boyd မှ လူမှုပညာ၏ သမိုင်းကြောင်း")
---
## အလုပ်အမှု
အနာဂတ်တွင် ဘာဖြစ်မည်ဆိုသည်ကို မသိရသေးပါသော်လည်း ဒီ computer systems များနှင့် ၎င်းတို့ run လုပ်သော software နှင့် algorithm
[အချိန်ဇယားတစ်ခု ဖန်တီးပါ](assignment.md)
---
**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်ရန် လိုအပ်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များ၏ ပရော်ဖက်ရှင်နယ်ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ပြောကြားချက်**
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,135 +1,167 @@
# တာဝန်ရှိသော AI ဖြင့် စက်မှုသင်ယူမှုဖြေရှင်းချက်များ တည်ဆောက်ခြင်း
# တာဝန်ရှိသော AI ဖြင့် စက့်မှတ်လေ့လာမှု ဖြေရှင်းနည်းများ တည်ဆောက်ခြင်း
![စက့်မှတ်နိုတ်အဖြစ် တာဝန်ရှိသော AI ၏ စက့်မှတ်လေ့လာမှု အကျဉ်းချုပ်](../../../../translated_images/my/ml-fairness.ef296ebec6afc98a.webp)
> [Tomomi Imura](https://www.twitter.com/girlie_mac) မှ စက့်မှတ်နိုတ်
![စက်မှုသင်ယူမှုတွင် တာဝန်ရှိသော AI အကြောင်းအရာကို ရှင်းပြထားသော ပုံ](../../../../sketchnotes/ml-fairness.png)
> ပုံရေးဆွဲသူ - [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [သင်ခန်းစာမတိုင်မီ စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
## နိဒါန်း
## [မတိုင်မီ စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
ဒီသင်ရိုးမှာ၊ စက့်မှတ်လေ့လာမှု (Machine Learning) သည် ကျွန်တော်တို့၏ နေ့စဥ်ဘဝများကို ဘယ်လို သက်ရောက်နိုင်ပြီး သက်ရောက်နေသည်ကို စတင်ရှာဖွေ သင်ကြားမည်။ ယနေ့ဟာတောင် ကုမ္ပဏီစနစ်များနှင့် မော်ဒယ်များသည် နေ့စဥ် ဆုံးဖြတ်ချက်များ တာဝန်ယူရာတွင် ပါဝင်နေကြပြီး ကျန်းမာရေးဌာန ရောဂါသိမြင်ခြင်းများ ၊ ကျပ်ငွေ ခွင့်ပြုချက်များ သို့မဟုတ် လိမ်လည်မှုတွေ ရှာဖွေရေး စသည်ဖြင့် ပါဝင်သည်။ ထို့ကြောင့် အဲဒီမော်ဒယ်တွေက ယုံကြည်စိတ်ချရတဲ့ ရလဒ်တွေ ရရှိစေရန် ကောင်းစွာ အသုံးပြုနိုင်ဖို့ အရေးကြီးပါပဲ။ ဆော့ဖ်ဝဲလ်လ်လ်မှာ ဖြစ်နိုင်သလို AI စနစ်များလည်း မျှော်လင့်ချက်များကို မဖြည့်ဆည်းနိုင် ရလဒ် မမှန်ကန်ခြင်းတွေ ဖြစ်တတ်ပါတယ်။ ဒါကြောင့် AI မော်ဒယ်တစ်ခု၏ လုပ်ဆောင်ချက်များကို နားလည်ရန် နှင့် ရှင်းပြနိုင်ရန် နှစ်ပါးရှိခြင်းသည် အရေးကြီးပါသည်။
## အကျဉ်းချုပ်
မော်ဒယ်ထားဆောက်ရာတွင် အသုံးပြုသော ဒေတာတွင် လူမျိုး၊ ကျားမ၊ နိုင်ငံရေး အမြင်၊ ဘာသာရေး သို့မဟုတ် အချို့ လူ့အုပ်စုများ ပြည့်စုံစွာ မပါဝင်ခြင်း သို့မဟုတ် မညီမျှစွာ ကိုယ်စားပြု ဖြစ်နေခြင်း ဖြစ်လာခဲ့ပါက ဘာတွေ ဖြစ်နိုင်မလဲဆိုတာ စဉ်းစားကြည့်ပါ။ မော်ဒယ်၏ ထွက်လာသော ရလဒ်သည် အချို့ လူမျိုးအုပ်စုများ အကျိုးပြုရန် အဓိပ္ပါယ် လျှင်ပါက အက်ပလီကေးရှင်းအတွက် ထိရောက်မှု ဘယ်လို ဖြစ်ကြမလဲ? ထို့ပြင် မော်ဒယ်တွင် မကောင်းစွာ ထွက်ရှိခြင်းများ ဖြစ်ပွားပြီး လူမှုကို ထိခိုက်စေပါက အဲဒီ AI စနစ်၏ လုပ်ဆောင်ချက်များအတွက် တာဝန်ရှိသူများမှာ ဘယ်သူများဖြစ်မလဲ? ဒီမေးခွန်းများကို ဒီသင်ရိုးမှာ ရှာဖွေပေးသွားမှာ ဖြစ်ပါတယ်။
ဒီသင်ရိုးမှာ သင်သည် စက်မှုသင်ယူမှု (Machine Learning) က ဘယ်လိုနဲ့ ဘယ်လိုများ ကျွန်တော်တို့ရဲ့ နေ့စဉ်ဘဝတွေကို သက်ရောက်နေတယ်ဆိုတာကို စတင်လေ့လာသိရှိရမှာဖြစ်ပါတယ်။ ယနေ့တိုင် အချိန်မှာတောင် စနစ်များနဲ့ မော်ဒယ်များဟာ ကျွန်တော်တို့ရဲ့ နေ့စဉ်ဆုံးဖြတ်မှုလုပ်ငန်းစဉ်တွေမှာ ပါဝင်နေပါတယ်။ ဥပမာ - ကျန်းမာရေးစစ်ဆေးမှု၊ ချေးငွေခွင့်ပြုမှု သို့မဟုတ် လိမ်လည်မှုတွေကို ရှာဖွေခြင်းစသဖြင့်။ ဒါကြောင့် ဒီမော်ဒယ်တွေက ယုံကြည်စိတ်ချရတဲ့ ရလဒ်တွေကို ပေးနိုင်ဖို့ အရေးကြီးပါတယ်။ အခြားသော ဆော့ဖ်ဝဲလ်လျှောက်လွှာတစ်ခုလိုပဲ AI စနစ်တွေကလည်း မျှော်မှန်းချက်နဲ့ မကိုက်ညီတာတွေ သို့မဟုတ် မလိုလားအပ်တဲ့ ရလဒ်တွေကို ရရှိစေတတ်ပါတယ်။ ဒါကြောင့် AI မော်ဒယ်တစ်ခုရဲ့ အပြုအမူကို နားလည်နိုင်ဖို့နဲ့ ရှင်းပြနိုင်ဖို့ အရေးကြီးပါတယ်။
ဒီသင်ခန်းစာမှာ မင်းတွေ လုပ်လို့ရမှာက
သင်တစ်ခါမှ မော်ဒယ်တည်ဆောက်ဖို့ သုံးတဲ့ ဒေတာတွေမှာ လူမျိုး၊ လိင်၊ နိုင်ငံရေးအမြင်၊ ဘာသာရေး စသဖြင့် အချို့သော လူမှုအုပ်စုတွေ မပါဝင်ဘူးဆိုရင် ဘာတွေဖြစ်နိုင်မလဲ စဉ်းစားကြည့်ပါ။ ဒါမှမဟုတ် မော်ဒယ်ရဲ့ ရလဒ်တွေက အချို့သော လူမှုအုပ်စုတွေကို အားပေးတဲ့အနေနဲ့ အဓိပ္ပာယ်ဖွင့်ဆိုရင်လည်း ဘာတွေဖြစ်နိုင်မလဲ။ ထို့အပြင် မော်ဒယ်ရဲ့ ရလဒ်တွေက လူတွေကို နစ်နာစေတဲ့အခါမှာလည်း ဘယ်သူက AI စနစ်ရဲ့ အပြုအမူအတွက် တာဝန်ရှိမလဲ။ ဒီသင်ရိုးမှာ ဒီလိုမေးခွန်းတွေကို လေ့လာသွားမှာဖြစ်ပါတယ်။
- စက့်မှတ်လေ့လာမှုတွင် တရားမျှတမှုပေါ် အာရုံစိုက်မှု မြှင့်တင်ခြင်းနှင့် တရားမျှတမှုဆိုင်ရာ ထိခိုက်မှုများကို နားလည်ခြင်း။
- ရေတွက်နိုင်စရာ မဟုတ်သော အကြောင်းအရာများနှင့် မလွဲမှားသော အခြေအနေများကို စူးစမ်းလေ့လာခြင်းဖြင့် ယုံကြည်စိတ်ချရမှုနှင့် လုံခြုံမှုကို အာမခံခြင်း။
- တစ်ဦးချင်းစီအားပါဝင်မှုရှိစေရန် စနစ်များကို ဒီဇိုင်းဆွဲခြင်းအားဖြင့် အားပေးပို့ဆောင် ဖွံ့ဖြိုးတိုးတက်မှု ရရှိစေရန် နားလည်မှု ရရှိခြင်း။
- ဒေတာနှင့် လူများ၏ လျှို့ဝှက်ရေးနှင့် လုံခြုံရေးကို ကာကွယ်ရန် အရေးကြီးမှု စူးစမ်းလေ့လာခြင်း။
- AI မော်ဒယ်၏ လုပ်ဆောင်ချက်များကို ရှင်းလင်း သော ကောင်တာ (glass box) နည်းလမ်းဖြင့် ရှင်းပြနိုင်သော အရေးပါမှုကို မြင်တွေ့ခြင်း။
- AI စနစ်များ၏ ယုံကြည်မှုကို တည်ဆောက်ရန် တာဝန်ယူမှု အသိအမှတ်ပြုမှု အရေးကြီးမှုအပေါ် သတိပြုခြင်း။
ဒီသင်ခန်းစာမှာ သင်သည် -
## ကြိုတင် အရည်အချင်း
- စက်မှုသင်ယူမှုမှာ တရားမျှတမှုရဲ့ အရေးပါမှုနဲ့ ဆက်စပ်သော နစ်နာမှုများကို နားလည်သိရှိလာမယ်။
- ယုံကြည်စိတ်ချရမှုနဲ့ လုံခြုံမှုရှိစေရန် အထူးအခြေအနေတွေကို စူးစမ်းလေ့လာတဲ့ လေ့ကျင့်မှုနဲ့ ရင်းနှီးလာမယ်။
- လူတိုင်းကို အခွင့်အရေးပေးနိုင်ဖို့ အပါဝင်စနစ်တွေကို ဒီဇိုင်းဆွဲဖို့ လိုအပ်ချက်ကို နားလည်လာမယ်။
- ဒေတာနဲ့ လူတွေရဲ့ ကိုယ်ရေးအချက်အလက်ကို ကာကွယ်ဖို့ အရေးကြီးမှုကို လေ့လာမယ်။
- AI မော်ဒယ်ရဲ့ အပြုအမူကို ရှင်းပြနိုင်ဖို့ "ဖန်သားပုံး" လိုက်နာမှုရဲ့ အရေးကြီးမှုကို မြင်တွေ့မယ်။
- AI စနစ်တွေမှာ ယုံကြည်မှုတည်ဆောက်ဖို့ တာဝန်ရှိမှုရဲ့ အရေးကြီးမှုကို သတိပြုမယ်။
ကြိုတင် အရည်အချင်းအနေနဲ့ "တာဝန်ရှိသော AI နိယာမများ" ရေးဖြေနက်ကို လေ့လာပြီး အောက်ဖော်ပြပါ ဗီဒီယိုကို ကြည့်ပါ။
## ကြိုတင်လိုအပ်ချက်
ဒီ [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) မှတဆင့် တာဝန်ရှိသော AI အကြောင်း ပိုမိုသိရှိနိုင်ပါသည်။
ဒီသင်ခန်းစာကို စတင်မတိုင်မီ "တာဝန်ရှိသော AI မူဝါဒများ" သင်ခန်းစာကို လေ့လာပြီး အောက်ပါဗီဒီယိုကို ကြည့်ပါ။
[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
[ဒီသင်ခန်းစာကို လေ့လာရန်](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
> 🎥 အထက်ဖော်ပြပါ ဓာတ်ပုံကို နှိပ်ကာ မိုက်ကရိုဆော့ဖ့စ်၏ တာဝန်ရှိသော AI နည်းလမ်း ဗီဒီယိုကို ကြည့်ရှုပါ
[![Microsoft ရဲ့ တာဝန်ရှိသော AI မူဝါဒ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft ရဲ့ တာဝန်ရှိသော AI မူဝါဒ")
## တရားမျှတမှု
> 🎥 အထက်ပါပုံကို နှိပ်ပြီး Microsoft ရဲ့ တာဝန်ရှိသော AI မူဝါဒကို ကြည့်ပါ
AI စနစ်များသည် လူတိုင်းအားတရားမျှတစွာ ကိုင်တွယ်ရမည် ဖြစ်ပြီး၊ လူအုပ်စုဆွဲတူညီသူများအား မတူကွဲပြားစေရန် မဖြစ်သင့်ပါ။ ဥပမာအားဖြင့် AI စနစ်များသည် ဆေးကုသမှု၊ ကျပ်ငွေနှင့် လျှောက်လွှာ၊ အလုပ်အကိုင်ဆိုင်ရာ ညွှန်ကြားမှုများ ပေးသောအခါ၊ တစ်ဦးချင်းစီ၏ ရောဂါ၊ ဘဏ္ဍာရေး အခြေအနေ သို့မဟုတ် အလုပ်အရည်အချင်း ပုံစံတူသူများအား တူညီသော အကြံပေးချက်များ ပေးရမည် ဖြစ်သည်။ လူတိုင်းတွင် မတူညီသော အမြင်များနှင့် ယဉ်ကျေးမှုလက္ခဏာများ ပါရှိပြီး သူတို့၏ ဆုံးဖြတ်ချက်များ၌ ထိခိုက်သက်ရောက်မှု ရှိသည်။ ဤနေရာတွင် ကျွန်ုပ်တို့ အသုံးပြု သော ဒေတာများ၌ ကြည့်ရှုရမည့် ကွဲပြားချက်များ ပါဝင်နိုင်ပြီး အကြောင်းတရားမရှိဘဲ ဖြစ်ပေါ်နိုင်သည့် အထင်အမြင်များ ဖြစ်နိုင်ပါသည်။ ဤအထင်အမြင်များကို သတိထားမိရလွယ်ခြင်း ခက်ခဲတတ်ပါသည်
## တရားမျှတမှု
**"တရားမျှတမမှု"** ဟူသည် လူမျိုး၊ ကျားမ၊ အသက်အရွယ် သို့မဟုတ် မသန်စွမ်းမှုအခြေအနေ ကြောင့် ဖြစ်သည့် လူအုပ်စုအတွက် ဆိုးကျိုးများ သို့မှ "ထိခိုက်မှုများ" ကို ဆိုလိုသည်။ အဓိကတရားမျှတမှု ဆိုင်ရာ ထိခိုက်မှုများမှာ အောက်ပါအတိုင်း 分類 လုပ်နိုင်သည်။
- **ခွဲဝေပေးမှု**၊ ဥပမာတစ်ခုတွင် ကျားမ သို့လူမျိုးတစ်ခုကို အခြားတစ်ခုထက် ဦးစားပေးခြင်း။
- **ဝန်ဆောင်မှု အရည်အသွေး**။ အထူးအခြေအနေတစ်ခုအတွက် ဒေတာလေ့လာသော်လည်း အမှန်တကယ် ပိုမိုရှုပ်ထွေးမှုရှိသောကြောင့် ဝန်ဆောင်မှု ချို့ယွင်းမှု ဖြစ်ပေါ်ခြင်း။ ဥပမာအားဖြင့် အသားအရည် အနက်ရောင် လူများကို ခြေရာခံ၍ မရသော လက်ဆပ်မှုတူဆပ်ကပ်များ။ [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **အသိအမှတ်ပြုချိန်၌ ရိုက်ခတ်ခြင်း**။ တရားမျှတမူ ခံစားရစေသော နှိုးစက်မှုအနေဖြင့် တစ်စုံတစ်ခု သို့မဟုတ် လူတစ်ဦးကို မမှန်ကန်သောနည်းဖြင့် သတ်မှတ်ခြင်း။ ဥပမာ၊ သရုပ်ပုံ မှတ်တမ်း စနစ်သည် အနက်ရောင် အရောင်ရှိ လူများ၏ ဓာတ်ပုံများကို မိမိမိ မေးကားလိုအာဏာရသည့် လူကြီးမင်းများအဖြစ် မှတ်သားခြင်း။
- **မတူညီသော ကိုယ်စားပြုမှု**။ အသွင်အပြင် ဖြင့် တစ်စုတစ်စည်းကို အမြဲမမြင်ရခြင်း၊ အဲဒီဝန်ဆောင်မှု သို့မဟုတ် လုပ်ငန်းများသည် ထိုအကွာအဝေးကို ထိခိုက်စေခြင်း။
- **ရိုးရိုး ဖော်ပြချက် သဘောထား**။ သတ်မှတ်ထားသော အုပ်စုတစ်စုအား အထူးသတ်မှတ်ထားသော အင်္ဂါရပ်များစွာနှင့် ဆက်နွယ်စေခြင်း။ ဥပမာ၊ အင်္ဂလိပ်နှင့် တူရကီ ဘာသာပြန်စနစ်တွင် ကျားမ နှင့် 女 性 အကြောင်း တရားမျှတ မလိုက်ဖက်မှု ရှိခြင်း။
![တူရကီဘာသာသို့ ဘာသာပြန်ခြင်း](../../../../translated_images/my/gender-bias-translate-en-tr.f185fd8822c2d437.webp)
> တူရကီဘာသာသို့ ဘာသာပြန်ခြင်း
![အင်္ဂလိပ်ဘာသာ ပြန်ခြင်း](../../../../translated_images/my/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp)
> အင်္ဂလိပ်ဘာသာ ပြန်ခြင်း
AI စနစ်များကို ဒီဇိုင်းဆွဲပြီး စမ်းသပ်ရာတွင် AI သည် တရားမျှတမှုရှိစေရန်၊ လူသားများကဲ့သို့ စွဲထောက်၍ ဆုံးဖြတ်ချက်ချမှုများ မပြုလုပ်ရန် အာမခံရမည်ဖြစ်သည်။ AI နှင့် စက့်မှတ်လေ့လာမှုတွင် တရားမျှတမှု အာမခံခြင်းသည် ရှုပ်ထွေးသော လူမှုနည်းပညာ အခက်အခဲတစ်ရပ် ဖြစ်နေဆဲဖြစ်သည်။
### ယုံကြည်စိတ်ချရမှုနှင့် လုံခြုံမှု
AI စနစ်တွေဟာ လူတိုင်းကို တရားမျှတစွာ ဆက်ဆံရမယ်။ နောက်ထပ် လူမှုအုပ်စုတွေကို မတူညီစွာ သက်ရောက်မှုမရှိစေရမယ်။ ဥပမာ - AI စနစ်တွေက ဆေးကုသမှုအကြံပြုမှု၊ ချေးငွေလျှောက်လွှာ သို့မဟုတ် အလုပ်ခန့်အပ်မှုအတွက် လမ်းညွှန်မှုပေးတဲ့အခါမှာ တူညီတဲ့ ရောဂါလက္ခဏာ၊ ငွေကြေးအခြေအနေ သို့မဟုတ် အလုပ်အတွေ့အကြုံရှိသူတိုင်းကို တူညီတဲ့ အကြံပြုချက်ပေးရမယ်။
ယုံကြည်မှုတည်ဆောက်ရန် AI စနစ်များသည် ပုံမှန်နှင့် မမှန်းဆမိသော အခြေအနေများတွင် ယုံကြည်စိတ်ချရမည်၊ လုံခြုံရမည်၊ တပြိုင်နက် မပြောင်းလဲရပါ။ AI စနစ်များ စသည်ဖြင့် အမျိုးမျိုးသော အခြေအနေများတွင် မည်သို့ ပြုမူမည်ကို သိရှိထားရန် အရေးကြီးပါသည်၊ အထူးသဖြင့် အထူးသက်သက် အခြေအနေများဖြစ်သည်။ AI ဖြေရှင်းနည်းများ တည်ဆောက်စဉ်တွင်၊ AI ဖြေရှင်းနည်း ခံရသော အခြေအနေနွေများကို စိတ်အားထက်သန်စေသော အာရုံစိုက်မှု လိုအပ်ပါသည်။ ဥပမာအားဖြင့် မော်တော်ယာဉ် မောင်းသူ တစ်ယောက်သည် လူများ၏ လုံခြုံမှုကို ထိရောက်စွာ ထိန်းသိမ်းရမည်။ ထို့ကြောင့် မော်တော်ယာဉ်အတွင်း AI သွယ်ဝိုက်အရားများကို ညာညီသော ကာကွယ်မှုအတွက်၊ ညနေခင်း၊ မိုးရွာသည်၊ ကြမ်းတမ်းသောစက္ကူလျှပ်၊ ကလေးများလမ်းကို ဖြတ်သွားခြင်း၊ မိန်းမိသားစုများ၊ လမ်းတံတား ပြုပြင်မှု စသဖြင့် စနစ်အားလုံး အခြေအနေအမျိုးမျိုး ဖြတ်သန်းရမည့် အခြေအနေများအား ရေတွက်ဆင်ခြင်ရန်လိုအပ်သည်။ AI စနစ် တစ်ခုသည် အခြေအနေအမျိုးမျိုးကို ဘယ်လောက်တောင် ယုံကြည်စိတ်ချရစွာနှင့် လုံခြုံစွာ ကိုင်တွယ်နိုင်မည်ကို ဒေတာ သိပ္ပံပညာရှင် သို့ AI ဖွံ့ဖြိုးသူက စနစ် ဒီဇိုင်းဆွဲစဉ် သို့ စမ်းသပ်စဉ် တွက်ချက်ထားသည်ကို ပြသနိုင်သည်။
လူတိုင်းမှာ မျိုးရိုးစဉ်ဆက်နဲ့ ရရှိလာတဲ့ အမြင်များရှိပြီး ဒါတွေက ကျွန်တော်တို့ရဲ့ဆုံးဖြတ်မှုနဲ့ လုပ်ဆောင်မှုတွေကို သက်ရောက်စေတတ်ပါတယ်။ ဒီလို အမြင်တွေဟာ AI စနစ်တွေကို သင်ကြားဖို့ သုံးတဲ့ ဒေတာထဲမှာပါဝင်လာတတ်ပါတယ်။ တစ်ခါတစ်ရံ ဒီလိုအခြေအနေတွေဟာ မတော်တဆ ဖြစ်တတ်ပါတယ်။ ဒေတာထဲမှာ ဘယ်အချိန်မှာ ဘာအမြင်တွေ ထည့်သွင်းနေတယ်ဆိုတာကို သိရှိဖို့ ခက်ခဲတတ်ပါတယ်။
> [🎥 ဤနေရာ၌ ဗီဒီယိုကို နှိပ်ရန်: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
**“မတရားမှု”** ဆိုတာ လူမျိုး၊ လိင်၊ အသက်အရွယ် သို့မဟုတ် မသန်စွမ်းမှုအခြေအနေ စသဖြင့် လူတစ်စုအပေါ် အနုတ်လက္ခဏာ သို့မဟုတ် “နစ်နာမှု” ဖြစ်စေတဲ့ သက်ရောက်မှုတွေကို ဆိုလိုပါတယ်။ မတရားမှုနဲ့ ဆက်စပ်တဲ့ နစ်နာမှုတွေကို အောက်ပါအတိုင်း ခွဲခြားနိုင်ပါတယ် -
### ပါဝင်ဆောင်ရွက်ခြင်း
- **ခွဲဝေမှု (Allocation)** - ဥပမာအားဖြင့် လိင် သို့မဟုတ် လူမျိုးတစ်ခုကို အခြားတစ်ခုထက် အားပေးခြင်း။
- **ဝန်ဆောင်မှုအရည်အသွေး (Quality of service)** - ဒေတာကို တစ်ခုတည်းသော အခြေအနေအတွက် သင်ကြားပြီး အမှန်တရားမှာ ပိုမိုရှုပ်ထွေးတဲ့အခါ၊ ဝန်ဆောင်မှုအရည်အသွေးကျဆင်းတတ်ပါတယ်။ ဥပမာအားဖြင့် အမဲရောင်အသားရည်ရှိသူတွေကို မသိနိုင်တဲ့ လက်ဆေးဆပ်ပြာထည့်စက်။
- **အပြစ်တင်မှု (Denigration)** - တစ်စုံတစ်ခု သို့မဟုတ် တစ်စုံတစ်ယောက်ကို မတရားစွာ အပြစ်တင်ခြင်း။
- **အလွန်အကျွံ သို့မဟုတ် အနည်းငယ်သာ ပါဝင်မှု (Over- or under-representation)** - လူတစ်စုကို သက်ဆိုင်ရာ အလုပ်အကိုင်မှာ မမြင်ရခြင်း။
- **စံနှုန်းသတ်မှတ်မှု (Stereotyping)** - လူတစ်စုကို သတ်မှတ်ထားတဲ့ အင်္ဂါရပ်တွေနဲ့ ဆက်စပ်ခြင်း။
AI စနစ်များကို လူတိုင်း ပါဝင်ဆောင်ရွက်နိုင်စေရန် ဒီဇိုင်းဆွဲသင့်သည်။ AI စနစ်များကို ဒီဇိုင်းဆွဲခြင်းနှင့် ဖွံ့ဖြိုးမှုတွင် ဒေတာ သိပ္ပံပညာရှင်များနှင့် AI ဖွံ့ဖြိုးသူများသည် လူများအား မဖြစ်မနေ ပိတ်ဆို့မှုဖြစ်နိုင်သော အခက်အခဲများကို သိရှိပြီး ရုပ်သိမ်း ဖြေရှင်းရန် ကြိုးစားကြသည်။ ဥပမာအားဖြင့် ကမ္ဘာလုံးဆိုင်ရာ မသန်စွမ်းသူများ ၁ဘီလံကျော်ရှိကြသည်။ AI တိုးတက်မှုကြောင့် သူတို့အတွက် နေ့စဥ်ဘဝမှာ အချက်အလက်များနှင့် အခွင့်အရေးများကို လွယ်ကူချောမွေ့စွာ ရရှိနိုင်သည်။ ပိတ်ဆို့မှုများကို ဖြေရှင်းခြင်းအားဖြင့် အားလုံးအတွက် အကျိုးပြုသော AI ထုတ်ကုန်များကို ဖန်တီးပေးနိုင်သော မျိုးဆက်အသစ် ဖြစ်လာသည်။
![အင်္ဂလိပ်မှ တူရကီဘာသာပြန်](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png)
> အင်္ဂလိပ်မှ တူရကီဘာသာပြန်
> [🎥 ဤနေရာ၌ ဗီဒီယိုကို နှိပ်ရန်: AI တွင် ပါဝင်ဆောင်ရွက်မှု](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
![တူရကီမှ အင်္ဂလိပ်ပြန်](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png)
> တူရကီမှ အင်္ဂလိပ်ပြန်
### လုံခြုံမှုနှင့် လျှို့ဝှက်ရေး
AI စနစ်တွေကို ဒီဇိုင်းဆွဲပြီး စမ်းသပ်တဲ့အခါမှာ AI ဟာ မတရား သို့မဟုတ် ခွဲခြားဆက်ဆံမှု ဆုံးဖြတ်ချက်တွေ မလုပ်ဖို့ သေချာစေရမယ်။ AI နဲ့ စက်မှုသင်ယူမှုမှာ တရားမျှတမှုကို အာမခံဖို့ဟာ လူမှုနဲ့ နည်းပညာဆိုင်ရာ စိန်ခေါ်မှုတစ်ခုဖြစ်နေဆဲပါ
AI စနစ်များသည် လုံခြုံစိတ်ချရပြီး လူများ၏ လျှို့ဝှက်ရေးကို လေးစားသင့်သည်။ လူများသည် ကိုယ်ပိုင်လျှို့ဝှက်ချက်များ၊ အချက်အလက်များ၊ သို့မဟုတ် ဘဝများ ပြဿနာဖြစ်စေရန် စနစ်များအား ယုံကြည်မှုနည်းသည်။ စက့်မှတ်လေ့လာမှု မော်ဒယ်များကို လေ့လာသင်ကြားစဉ်တွင် ဒေတာသည် အကောင်းဆုံးရလဒ် ရရှိစေရန် အခြေခံသည်။ အဲဒါ့ကြောင့် ဒေတာ၏ မူလကွဲပြားမှု နှင့် သမာဓိကို လေးစား စဉ်းစားရပါမည်။ ဥပမာအားဖြင့် ဒေတာသည် အသုံးပြုသူပေးသလား သို့မဟုတ် ပြည်သူလူထုဖွင့်ထားသလား? နောက်ထပ် အချက်မှာ ဒေတာကို ကိုင်တွယ်လုပ်ကိုင်ရာတွင် လျှို့ဝှက် သတင်းအချက်အလက်ကာကွယ်နိုင်ပြီး ထိခိုက်မှု ကာကွယ်နိုင်သော AI စနစ်များ ဖွံ့ဖြိုးရန် အရေးကြီးသည်။ AI တိုးတက်လာသည့် အချိန်တွင်၊ လျှို့ဝှက်ရေး ကာကွယ်မှုနှင့် လုပ်ငန်းအချက်အလက်အရေးကြီးသော ကိုယ်ပိုင် သတင်းအချက်အလက်များ ကာကွယ်မှုသည် ပိုမိုအရေးကြီးပြီး ရှုပ်ထွေးလာသည်။ ဒေတာ အကောက်ခွန်အသုံးပြုမှုများပြားသောကြောင့် AI တွင် လျှို့ဝှက်ရေးနှင့် ဒေတာလုံခြုံရေး ပြဿနာများကို အထူးသတိထား ရှိရမည်ဖြစ်သည်
### ယုံကြည်စိတ်ချမှုနှင့် လုံခြုံမှု
> [🎥 ဤနေရာ၌ ဗီဒီယိုကို နှိပ်ရန်: AI တွင် လုံခြုံမှု](https://www.microsoft.com/videoplayer/embed/RE4voJF)
AI စနစ်တွေဟာ ယုံကြည်စိတ်ချရပြီး သာမန်အခြေအနေနဲ့ မထင်မှတ်ထားတဲ့ အခြေအနေတွေမှာ တိကျမှုရှိရမယ်။ AI စနစ်တွေဟာ အမျိုးမျိုးသော အခြေအနေတွေမှာ ဘယ်လို အပြုအမူပြုမယ်ဆိုတာ သိရှိထားဖို့ အရေးကြီးပါတယ်။ AI ဖြေရှင်းချက်တွေကို တည်ဆောက်တဲ့အခါမှာ AI ဖြေရှင်းချက်တွေ ကြုံတွေ့နိုင်တဲ့ အခြေအနေမျိုးစုံကို စဉ်းစားထားဖို့ အလေးပေးရမယ်။
- စက်မှုလုပ်ငန်းအနေနှင့် Privacy နှင့် လုံခြုံမှုတွင် အရေးပါသော တိုးတက်မှုများ ပြုလုပ်ခဲ့ပြီး၊ GDPR (ယေဘုယျ ဒေတာ ကာကွယ်ရေး စည်းမျဉ်း) ကဲ့သို့သော စည်းကမ်းချက်များက အထူးအားထားသည်။
- သို့သော် AI စနစ်များတွင် ပုဂ္ဂိုလ်ရေး ဒေတာများ ပိုမိုလိုအပ်သည့် တိုးလာမှုနှင့် Privacy တို့တွင် ဆန့်ကျင်မှု ရှိသည်ကို မှတ်သားထားရမည်။
- အင်တာနက်နှင့် ဆက်သွယ်ထားသော ကွန်ပျူတာများ ပေါ်ပေါက်ခဲ့သည့် နေရာတွင်လည်း AI နှင့် ပြဿနာ ကာကွယ်ရေး ပြဿနာများ တိုးများလာသည်ကို တွေ့ရှိရသည်။
- တစ်ပြိုင်နက် AI ကို ကာကွယ်ရေးတိုးတက်အောင် အသုံးပြုခြင်းလည်း ဖြစ်ပေါ်ပြီး၊ ယနေ့ခေတ် ယာယီဗီရပ်စ် စကင်နာများအများစုကို AI ရှာဖွေရေးနည်းပညာ မောင်းနှင်သည်။
- ဒေတာ သိပ္ပံလုပ်ငန်းစဉ်များကို မျက်နှာသာသော လျှို့ဝှက်ရေးနှင့် လုံခြုံရေး အသုံးပြုပြီး မရောမလွှဲအောင် အာမခံရမည်။
ဥပမာအားဖြင့် ကိုယ်တိုင်မောင်းနှင်တဲ့ ကားတစ်စီးဟာ လူတွေ့လုံခြုံမှုကို အဓိကထားရမယ်။ AI ကားမောင်းစနစ်ဟာ ည၊ မိုးသီး၊ မိုးနှင်း၊ လမ်းပေါ်မှာ ကလေးတွေ သို့မဟုတ် တိရစ္ဆာန်တွေ ရုတ်တရက်ပေါ်လာတာ စသဖြင့် အခြေအနေမျိုးစုံကို စဉ်းစားထားရမယ်။
> [🎥 ဗီဒီယိုကြည့်ရန်](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### ထွက်ပေါ်မှုပွင့်လင်းမှု
AI စနစ်များကို နားလည်နိုင်ရန် ဖြစ်ရမည်။ ထွက်ပေါ်မှုပွင့်လင်းမှု၏ အရေးကြီးသော အစိတ်အပိုင်းမှာ AI စနစ်နှင့် ၎င်း၏အစိတ်အပိုင်းများ၏ လုပ်ဆောင်ချက်ကို ရှင်းပြခြင်းဖြစ်သည်။ AI စနစ် နားလည်မှု မြှင့်တင်ရန် အကျိုးရှိကြောင်း သက်ဆိုင်သူများသည် ၎င်းတို့ ဘယ်လိုနှင့် ဘာကြောင့် လုပ်ဆောင်သည်ကို နားလည်ပြီး ဆောင်ရွက်မှု အရေးယူရာတွင် ဖြစ်ပေါ်နိုင်သော ထုတ်လုပ်မှု ပြဿနာများ၊ လုံခြုံရေးနှင့် လျှို့ဝှက်ရေး စိုးရိမ်ချက်များ၊ အကြွင်းမဲ့ခြင်း၊ ပိတ်ပင်ပစ်ခြင်းသို့မဟုတ် မမျှော်လင့်ထားသော ရလဒ်များကို ရှာဖွေနိုင်ရန်အတွက် ဖြစ်သည်။ AI စနစ်များကို အသုံးပြုသူများသည် AI စနစ် အသုံးပြုချိန်၊ ဘာကြောင့်၊ မည်သည့်နည်းဖြင့် အသုံးပြုကြောင်း နှင့် ၎င်းစနစ်၏ ကန့်သတ်ချက်များအကြောင်း သတင်းမှန် သက်သေပြရမည်ဟု ယုံကြည်ကြသည်။ ဥပမာအားဖြင့် ဘဏ်တစ်ခုသည် စားသုံးသူများ၏ ချေးငွေ ဆုံးဖြတ်ချက်များကို ထောက်ပံ့ရန် AI စနစ် အသုံးပြုပါက ရလဒ်များကို စစ်ဆေးပြီး မော်ဒယ်၏ အကြံပေးမှုများအပေါ် ဘယ်ဒေတာများ သက်ရောက်သည်ဆိုတာ နားလည်ရန် အရေးကြီးပါသည်။ အစိုးရများသည် စက်မှုလုပ်ငန်းအမျိုးမျိုးတွင် AI ကို စည်းကမ်းသည်မှာ စတင်ပြီး၊ ဒေတာ သိပ္ပံပညာရှင်များနှင့် အဖွဲ့အစည်းများသည် မလိုလားအပ်သော ရလဒ်ရှိသည်မှာ AI စနစ်သည် စည်းကမ်းချက်များနှင့် ကိုက်ညီနေခြင်းကို ရှင်းပြနိုင်ရမည်။
### အပါဝင်မှု
> [🎥 ဤနေရာ၌ ဗီဒီယိုကို နှိပ်ရန်: AI တွင် ထွက်ပေါ်မှုပြတ်သားမှု](https://www.microsoft.com/videoplayer/embed/RE4voJF)
AI စနစ်တွေဟာ လူတိုင်းကို ပါဝင်စေပြီး အခွင့်အရေးပေးနိုင်ဖို့ ဒီဇိုင်းဆွဲရမယ်။ AI စနစ်တွေကို ဒီဇိုင်းဆွဲပြီး အကောင်အထည်ဖော်တဲ့အခါ ဒေတာသိပ္ပံပညာရှင်တွေနဲ့ AI တီထွင်သူတွေဟာ စနစ်ထဲမှာ လူတွေကို မတော်တဆ ခွဲခြားမထားဖို့ အတားအဆီးတွေကို သတ်မှတ်ပြီး ဖြေရှင်းရမယ်။
- AI စနစ်များသည် ရှုပ်ထွေးမှုကြောင့် ၎င်းတို့ ဘယ်လို လုပ်ဆောင်ကြသည်ကို နားလည်ရန် နှင့် ရလဒ်များ ငြိမ်းချမ်းစွာ ဖတ်ရှုရန် ခက်ခဲသည်။
- ဒီ နားလည်မှုကမဲ့မှုသည် ဤစနစ်များကို မည်သို့ စီမံခန့်ခွဲ၊ လည်ပတ်၊ မှတ်တမ်းတင်သည်ကို သက်ရောက်စေသည်။
- ပိုမိုအရေးကြီးသည်မှာ ထိုနားလည်မှုမရှိခြင်းသည် ဤစနစ်များမှ ထုတ်လွှင့် ရလဒ်များ အသုံးပြုခြင်းမှ ဆုံးဖြတ်ချက်များကို သက်ရောက်စေသည်။
ဥပမာအားဖြင့် ကမ္ဘာပေါ်မှာ မသန်စွမ်းသူ ၁ ဘီလီယံရှိပါတယ်။ AI ရဲ့ တိုးတက်မှုကြောင့် သူတို့ဟာ နေ့စဉ်ဘဝမှာ အချက်အလက်နဲ့ အခွင့်အရေးတွေကို ပိုမိုလွယ်ကူစွာ ရရှိနိုင်ပါတယ်။
### တာဝန်ခံမှု
AI စနစ်များကို ဒီဇိုင်းဆွဲပြီး ဖြန့်ချိသည့် လူများသည် ၎င်းတို့သည် စနစ် မည်သည့်နည်းဖြင့် လည်ပတ်သည်ကို တာဝန်ယူရမည်။ မျက်နှာဖုံးစနစ်ကဲ့သို့ သံသရာများတွင် တာဝန်ယူမှုသည် အလွန်အရေးကြီးသည်။ မကြာသေးမီက မျက်နှာဖုံးစနစ် နည်းပညာအတွက် တိုးတက်လိုစိတ်ရှာဖွေရေး အပေါ် လုံခြုံမှု ဆရာများနှင့် တရားမျှတမှုကို တောင်းဆိုမှုများ မြင့်တက်လာသည်။ ဥပမာ၊ ဒဏ္ဍာရီဆုံးရှားနေသော ကလေးများရှာဖွေရေးတွင် ဥပေရာဏ်များ အကြီးစား အားထားသည့် နည်းပညာ ဖြစ်ပေမယ့် အစိုးရတချို့၌ မြို့ပြကြီးများကို ဆက်တိုက်ကြည့်ရှုမှု ခွင့်ပြု၍ နိုင်ငံသားများ၏ အခြေခံလွတ်လပ်ခွင့်များကို ထိခိုက်စေနိုင်သည်။ ဒါကြောင့် ဒေတာ သိပ္ပံပညာရှင်များနှင့် အဖွဲ့အစည်းများသည် ၎င်းတို့ AI စနစ်ရဲ့ လူမှု သို့ နယ်မြေ ပေါ်တွင် ထိရောက်မှုအတွက် တာဝန်ယူရပါမည်။
> [🎥 ဗီဒီယိုကြည့်ရန်](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
[![မျက်နှာဖုံးစနစ်ကတဆင့် စ သည် မျက်နှာဖုံး ငြိမ်းချမ်းရေး လုံခြုံမှု သတိပေးချက်](../../../../translated_images/my/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
### လုံခြုံမှုနှင့် ကိုယ်ရေးအချက်အလက်
> 🎥 အထက်ပါ ဓာတ်ပုံကို နှိပ်ကာ မျက်နှာဖုံး စနစ်ကတဆင့် စ နေသည့် သတိပေးချက် ဗီဒီယိုကို ကြည့်ရှုပါ
AI စနစ်တွေဟာ လုံခြုံပြီး လူတွေရဲ့ ကိုယ်ရေးအချက်အလက်ကို လေးစားရမယ်။ AI စနစ်တွေကို ယုံကြည်မှုရှိဖို့ လူတွေရဲ့ ကိုယ်ရေးအချက်အလက် သို့မဟုတ် ဘဝကို အန္တရာယ်မဖြစ်စေရမယ်။
နောက်ဆုံးတွင် ကျွန်တော်တို့ မျိုးဆက်အတွက် အကြီးမားဆုံး မေးခွန်းများထဲမှာ၊ ကွန်ပျူတာများကို လူတများအား တာဝန်ရှိစွာပြီး မြင်သာစေရန် နည်းလမ်းကို ဘယ်လိုသေချာစေရန်နှင့် ကွန်ပျူတာ ဒီဇိုင်နာတွေကလူတိုင်းအား တာဝန်ရှိစွာ ကောင်းကင်ဆောင်ရွက်ခံရမည်ကို ဘယ်လို သေချာအောင် လုပ်မလဲ ဆိုတာ ဖြစ်ပါတယ်။
> [🎥 ဗီဒီယိုကြည့်ရန်](https://www.microsoft.com/videoplayer/embed/RE4voJF)
## သက်ရောက်မှု ချေးရန် လေ့လာခြင်း
### တာဝန်ရှိမှု
စက့်မှတ်လေ့လာမှု မော်ဒယ်ကို သင်ကြားခိုင်းရန် မပြုမီ AI စနစ်၏ ရည်ရွယ်ချက်၊ အသုံးချမည့် နေရာ၊ ၎င်းနှင့် ဆက်သွယ်မည့် လူများအား နားလည်ရန် သက်ရောက်မှု လေ့လာမှု ပြုလုပ်ခြင်း လိုအပ်သည်။ ဤအချက်များသည် စနစ်ကို စစ်ဆေးသူများ သို့မဟုတ် စမ်းသပ်သူများအား သတိထားရမည့် အချက်များနှင့် ဖြစ်ပေါ်နိုင်သော အန္တရာယ်များအပေါ် ဆုံးဖြတ်ချက်ပြုရမှုအတွက် အထောက်အကူဖြစ်သည်။
AI စနစ်တွေကို ဒီဇိုင်းဆွဲပြီး တည်ဆောက်သူတွေဟာ သူတို့ရဲ့ စနစ်တွေ ဘယ်လိုအလုပ်လုပ်တယ်ဆိုတာအတွက် တာဝန်ရှိရမယ်။
အောက်ပါအချက်များသည် သက်ရောက်မှု လေ့လာမှု ပြုလုပ်သည့်အခါ အာရုံစိုက်ရမည့် နေရာများ ဖြစ်သည်။
[![AI နဲ့ မျက်နှာသိရှိမှုနည်းပညာရဲ့ အန္တရာယ်](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "AI နဲ့ မျက်နှာသိရှိမှုနည်းပညာရဲ့ အန္တရာယ်")
* **ပုဂ္ဂိုလ်ရေး ဆိုးကျိုး သက်ရောက်မှု**။ စနစ်၏ လုပ်ဆောင်မှုကို ထိခိုက်စေနိုင်သော ကန့်သတ်ချက်များ၊ လိုအပ်ချက်များ၊ မပံ့ပိုးသည့် အသုံးပြုမှုများ သို့မဟုတ် သတိထားရမည့် ကန့်သတ်ချက်များရှိရှိမရှိ လူများအတွက် ဆိုးကျိုးဖြစ်စေခြင်း ရှောင်ကြဉ်ရန် အရေးကြီးသည်။
* **ဒေတာ လိုအပ်ချက်များ**။ စနစ်သည် ဒေတာကို မည်ကဲ့သို့၊ မည်နေရာတွင် အသုံးပြုမည်ကို နားလည်ခြင်းဖြင့် စနစ် စစ်ဆေးသူများသည် ဒေတာ အကောက်ချက်ထုတ်များ (ဥပမာ၊ GDPR သို့မဟုတ် HIPAA ဒေတာ စည်းမျဉ်းများ) ကို သတိပြုရန် ဝါသနာပါစေရန် အထောက်အကူပြုသည်။ ထို့အပြင် လေ့လာသင်ကြားရာတွင် ဒေတာ အရင်းအမြစ် သို့မဟုတ် ပမာဏ လိုအပ်ချက်များ တိတိကျကျ သေချာစေရန် စိစစ်နိုင်သည်။
* **သက်ရောက်မှု အကျဉ်း**။ စနစ်အသုံးပြုမှုကြောင့် ဖြစ်ပေါ်နိုင်သော ဆိုးကျိုးများ စာရင်းစုဆောင်းခြင်း။ စက့်မှတ်လေ့လာမှု ဘဝစဉ်လေးတွင် ထို ဘေးအန္တရာယ်များကို လျှော့ချရန် သို့ရင်ဆိုင်ရန် စစ်တမ်းသုံးသပ်မှု ပြုလုပ်သည်။
* **ဦးတည်ချက်များ** (principles) ခြောက်ချက် ပမာဏရောက်သည်ဖို့ တိုင်းတာခြင်း၊ နားလည်မှုရှိခြင်းနှင့် ပြဿနာများ အား စူးစမ်းစစ်ဆေးခြင်း။
> 🎥 ဗီဒီယိုကြည့်ရန်: မျက်နှာသိရှိမှုနည်းပညာရဲ့ အန္တရာယ်
## သက်ရောက်မှုအကဲဖြတ်မှု
## တာဝန်ရှိသော AI ဖြင့် အမှားရှာဖွေရေး
မော်ဒယ်တစ်ခုကို သင်ကြားမတိုင်မီ AI စနစ်ရဲ့ ရည်ရွယ်ချက်၊ သုံးစွဲမည့်နေရာ၊ သက်ဆိုင်သူတွေကို နားလည်ဖို့ အရေးကြီးပါတယ်။
ဆော့ဖ်ဝဲလ် မှားယွင်းချက်များရှာဖွေရေးလိုသလို AI စနစ်မှားယွင်းချက်တွေ ရှာဖွေရေးလည်း လိုအပ်ပါတယ်။ မော်ဒယ်သည် မျှော်မှန်းထားသလို မလုပ်နိုင်ခြင်း ဆိုင်ရာ အကြောင်းအမျိုးမျိုး ရှိနိုင်ပြီး အများအားဖြင့် စံသတ်မှတ်ချက်များသာ အသုံးပြုထား သောကြောင့် တာဝန်ရှိသော AI နိယာမများ ကျော်လွှားမှုများကို ရှာဖွေရန် ခက်ခဲပါသည်။ ထို့ပြင် စက့်မှတ်လေ့လာမှု မော်ဒယ်သည် ရှင်းလင်းမှုမရှိသော Black Box ဖြစ်၍ ဤမော်ဒယ် ထွက်ရှိသော ရလဒ်၏ အကြောင်းရင်းကို နားလည်ရန် မလွယ်ကူ သာမန်အား AI စနစ် အမှား ပြုလွန်းသောအခါ ရှင်းပြရန် စိတ်ပူစရာ ဖြစ်တတ်သည်။ ဒီသင်ခန်းစာနောက်ပိုင်းတွင် တာဝန်ရှိသော AI dashboard ကို အသုံးပြုပြီး AI စနစ် မတော်တဆ ဖြစ်ပေါ်မှုများရှာဖွေနိုင်မည် ဖြစ်သည်။ Dashboard သည် ဒေတာ သိပ္ပံပညာရှင်များနှင့် AI ဖွံ့ဖြိုးသူများအတွက် အထွာကျယ်သောကိရိယာ ပေးစွမ်းသည်။
## တာဝန်ရှိသော AI ဖြင့် Debugging
* **အမှားခွဲခြမ်းစိတ်ဖြာခြင်း**။ စနစ်၏ တရားမျှတမှု သို့ ယုံကြည်စိတ်ချရမှုကို ထိခိုက်စေသော မော်ဒယ်၏ အမှားဖြန့်ဖြူးမှုကို ရှာဖွေရန်။
* **မော်ဒယ် အကျဉ်းချုပ်**။ ဒေတာ အုပ်စုများပေါ် မော်ဒယ် ဆောင်ရွက်မှုအကြား ကွာခြားမှု ရှာဖွေရန်။
* **ဒေတာ ခွဲခြမ်းစိတ်ဖြာခြင်း**။ ဒေတာ ဖော်ပြချက် နားလည်ပြီး ဒေတာအတွင်း တရားမျှတမှု၊ ပါဝင်မှုနှင့် ယုံကြည်စိတ်ချရမှု ပြဿနာများ ဖြစ်ပေါ်ခြင်း ရှိမရှိ စစ်ဆေးရန်။
* **မော်ဒယ် ရှင်းလင်းနိုင်မှု**။ မော်ဒယ် ခန့်မှန်းချက်တို့ကို ဘယ်အရာများ ထိခိုက်သက်ရောက်စေသည်နားလည်ရန်။ ၎င်းသည် ထွက်ပေါ်မှုပြတ်သားမှုနှင့် တာဝန်ယူမှုအတွက် အရေးကြီးသည်။
AI စနစ်တွေကို Debugging လုပ်တဲ့အခါမှာ တာဝန်ရှိသော AI မူဝါဒတွေကို ထည့်သွင်းစဉ်းစားရမယ်။
## 🚀 စိန်ခေါ်မှု
ဆိုးကျိုးများ မဖြစ်ပေါ်စေရန် အောက်ပါအချက်များ ပြုလုပ်သင့်သည်။
နစ်နာမှုတွေ မဖြစ်ပေါ်စေရန် -
- စနစ်ဖန်တီးသူများအတွင်း သဘာဝပိုင်းနှင့် အမြင်ပိုင်း မျိုးစုံခွဲဝေပေးရန်
- လူ့အသိုင်းအဝိုင်း မျိုးစုံ ကိုယ်စားပြုသော ဒေတာများတွင် ရင်းနှီးမြှုပ်နှံရန်
- တာဝန်ရှိသော AI လုပ်ငန်းစဉ်တွင် ရှာဖွေရေးနှင့် ပြင်ဆင်ရေးနည်းလမ်းများကို တိုးတက်စေရန်
- အလုပ်လုပ်သူတွေမှာ အမျိုးမျိုးသော နောက်ခံနဲ့ အမြင်တွေ ပါဝင်စေရမယ်။
- လူမှုအဖွဲ့အစည်းရဲ့ အမျိုးမျိုးသော အချက်အလက်တွေကို အထောက်အပံ့ပေးမယ့် ဒေတာတွေကို ရင်းနှီးမြှုပ်နှံရမယ်။
- စက်မှုသင်ယူမှု လုပ်ငန်းစဉ်တစ်လျှောက်မှာ တာဝန်ရှိသော AI ကို ရှာဖွေပြီး ပြင်ဆင်နိုင်တဲ့ နည်းလမ်းတွေ တိုးတက်အောင်လုပ်ရမယ်။
မော်ဒယ် တည်ဆောက်ခြင်းနှင့် အသုံးပြုမှုများတွင် မယုံကြည်ခြင်း သက်သေပြသော ကိစ္စများကို စိတ်ထဲတွင် ထားပါ။ ဘယ်အရာတွေကို ထပ်မံစဉ်းစားသင့်မလဲ?
## [သင်ခန်းစာပြီးနောက် စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
## [သင်ခန်းစာပြီးသည့်အခါ စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
## ပြန်လည်သုံးသပ်မှုနှင့် ကိုယ်တိုင်လေ့လာမှု
ဒီသင်ခန်းစာမှာ သင်သည် စက်မှုသင်ယူမှုမှာ တရားမျှတမှုနဲ့ မတရားမှုဆိုင်ရာ အခြေခံအယူအဆတွေကို လေ့လာသိရှိခဲ့ပါတယ်။
ဒီ workshop ကို ကြည့်ပြီး အကြောင်းအရာများကို ပိုမိုနက်ရှိုင်းစွာ လေ့လာပါ:
ဤသင်ခန်းစာ၌ သင်သည် စက်သင်ယူမှုတွင် မှန်ကန်မှုနှင့် မမှန်ကန်မှု အယူအဆတို့၏ အခြေခံအချက်များကို လေ့လာသင်ယူခဲ့ပါသည်။
ဤအကြောင်းအရာများအား ပိုမိုနက်ရှိုင်းစွာ နားလည်ရန် မိမိဆွေးနွေးပွဲကို ကြည့်ရှုပါ။
- တာဝန်ရှိသော AI ရှာဖွေမှု: အခြေခံသဘောတရားများကို လက်တွေ့ကျအောင် ပြုလုပ်ခြင်း - Besmira Nushi, Mehrnoosh Sameki နှင့် Amit Sharma
- တာဝန်ထမ်းဆောင်နိုင်သော AI ရှာဖွေရေး: Besmira Nushi, Mehrnoosh Sameki နှင့် Amit Sharma တို့မှ မူဝါဒများကို လက်တွေ့အသုံးချခြင်း
[![Responsible AI Toolbox: တာဝန်ရှိသော AI ဖန်တီးရန်အတွက် အခမဲ့ framework](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: တာဝန်ရှိသော AI ဖန်တီးရန်အတွက် အခမဲ့ framework")
[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဗီဒီယိုကြည့်ပါ: RAI Toolbox: တာဝန်ရှိသော AI ဖန်တီးရန်အတွက် အခမဲ့ framework - Besmira Nushi, Mehrnoosh Sameki နှင့် Amit Sharma
> 🎥 ဤရုပ်ပုံအား နှိပ်၍ ဗွီဒီယိုကို ကြည့်ရှုနိုင်ပါသည် - RAI Toolbox: Besmira Nushi၊ Mehrnoosh Sameki နှင့် Amit Sharma တို့က တာဝန်ရှိသော AI ဖန်တီးရေးအတွက် open-source ကန့်သတ်တမ်းများ၏ ဖွဲ့စည်းပုံ
ို့အပြင် ဖတ်ရှုရန်:
ပ်မံဖတ်ရှုရန် -
- Microsoft ရဲ့ RAI အရင်းအမြစ်စင်တာ: [Responsible AI Resources 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: Fairness, Accountability, Transparency, and Ethics in 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/)
RAI Toolbox:
- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
- [Responsible AI Toolbox GitHub သိမ်းဆည်းတိုက်](https://github.com/microsoft/responsible-ai-toolbox)
Azure Machine Learning ရဲ့ တရားမျှတမှုကို အာမခံရန် tools များအကြောင်း ဖတ်ရှုပါ:
Azure Machine Learning ၏ မှန်ကန်မှုအာမခံမှု ကိရိယာများအကြောင်း ဖတ်ရှုပါ။
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## လုပ်ငန်း
## လေ့ကျင့်ခန်း
[RAI Toolbox ကို လေ့လာပါ](assignment.md)
[RAI Toolbox စူးစမ်းလေ့လာရန်](assignment.md)
---
**အကြောင်းကြားချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ပြောကြားချက်**
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,120 +1,121 @@
# Python နှင့် Scikit-learn ကို အသုံးပြု၍ Regression Models တည်ဆောက်ခြင်း
# Python နှင့် Scikit-learn ဖြင့် regression မော်ဒယ်များ စတင်ခြင်း
![Regression များ၏ အကျဉ်းချုပ်ကို Sketchnote](../../../../sketchnotes/ml-regression.png)
![Sketchnote မှ regressions အကျဉ်းချုပ်](../../../../translated_images/my/ml-regression.4e4f70e3b3ed446e.webp)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
> Sketchnote ကို [Tomomi Imura](https://www.twitter.com/girlie_mac) ရေးသားသည်
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## [မဟာသင်ကြားမှု မတိုင်မီ စစ်တမ်း](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)
## အကျဉ်းချုပ
## ကိုယ်ပွားပြောကြားချက
ဒီသင်ခန်းစာလေးများမှာ Regression Models တည်ဆောက်ပုံကို လေ့လာနိုင်ပါမယ်။ Regression Models သည် ဘာအတွက်အသုံးဝင်သလဲဆိုတာကို မကြာမီဆွေးနွေးသွားပါမယ်။ သို့သော် စတင်လုပ်ဆောင်ရန်အတွက် သင့်စက်မှာ လိုအပ်သော Tools များကို အရင်ဆုံး ပြင်ဆင်ထားဖို့ လိုအပ်ပါတယ်
ဒီသင်ခန်းစာ ၄ ခုတွင် regression မော်ဒယ်များ ဖန်တီးနည်းကို ရှာဖွေနိုင်မည်။ ၎င်းတို့ ဘာကြောင့်သုံးသည့်အကြောင်းကို မကြာမီတင်ပြပါမည်။ သင် တစုံတရာမလုပ်မီ မိမိတွင် လိုအပ်သောကိရိယာများရှိပြီး စတင်နိုင်ကြောင်း သေချာပါစေ
ဒီသင်ခန်းစာမှာ သင်လေ့လာနိုင်မယ့်အရာများမှာ -
ဒီသင်ခန်းစာတွင် သင် သင်ယူရမည့်အရာများမှာ -
- သင့်ကွန်ပျူတာကို Local Machine Learning Tasks အတွက် ပြင်ဆင်ခြင်း။
- Jupyter Notebooks ကို အသုံးပြုခြင်း။
- Scikit-learn ကို အသုံးပြုခြင်း (installation အပါအဝင်)
- Linear Regression ကို လက်တွေ့လုပ်ဆောင်ခြင်း။
- ဒေသိယ စက်ပညာဆိုင်ရာ တာဝန်များအတွက် သင့်ကွန်ပြူတာကို တပ်ဆင်ခြင်း။
- Jupyter Notebook များနှင့် လုပ်ကိုင်ခြင်း။
- Scikit-learn ကို သုံးခြင်း၊ ထည့်သွင်းတပ်ဆင်ခြင်းအပါအဝင်
- လက်တွေ့လေ့ကျင့်မှုဖြင့် လိုင်းနေရေး regression ကို လေ့လာခြင်း။
## Installations နှင့် Configurations
## ထည့်သွင်းခြင်းများ နှင့် ပျိုးထောင်မှုများ
[![ML for beginners - Machine Learning Models တည်ဆောက်ရန် Tools များကို ပြင်ဆင်ခြင်း](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for beginners - Machine Learning Models တည်ဆောက်ရန် Tools များကို ပြင်ဆင်ခြင်း")
[![ML စတင်သင်ယူသူများအတွက် - မောင်းနှင်ရန်အတွက် လိုအပ်သောကိရိယာများ စတင်တပ်ဆင်ခြင်း](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML စတင်သင်ယူသူများအတွက် - မောင်းနှင်ရန်အတွက် လိုအပ်သောကိရိယာများ စတင်တပ်ဆင်ခြင်း")
> 🎥 အထက်ပါပုံကို Click လုပ်ပြီး ML အတွက် သင့်ကွန်ပျူတာကို Configure လုပ်ပုံကို ကြည့်ပါ။
> 🎥 ML အတွက် ကွန်ပြူတာတပ်ဆင်ခြင်း လုပ်ငန်းစဉ်တစ်ခုကို အနည်းငယ် ဗီဒီယိုအဖြစ် မြင်လိုပါက ပုံကို နှိပ်ပါ။
1. **Python ကို Install လုပ်ပါ**။ သင့်ကွန်ပျူတာမှာ [Python](https://www.python.org/downloads/) ကို Install လုပ်ထားရှိရပါမယ်။ Python ကို Data Science နှင့် Machine Learning Tasks များအတွက် အသုံးပြုပါမယ်။ အများစုသော ကွန်ပျူတာစနစ်များမှာ Python ကို အရင်ကတည်းက Install လုပ်ထားပြီးဖြစ်ပါတယ်။ [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) များလည်း ရနိုင်ပြီး၊ အချို့သောအသုံးပြုသူများအတွက် Setup ကို ပိုမိုလွယ်ကူစေပါတယ်။
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) များလည်း ရရှိနိုင်ပါသည်။
သို့သော် Python ကို အသုံးပြုခြင်းမှာ Version များကွဲပြားမှုရှိနိုင်ပါတယ်။ အချို့သော Tasks များအတွက် Version တစ်ခုလိုအပ်ပြီး၊ အခြား Tasks များအတွက် Version တစ်ခုလိုအပ်နိုင်ပါတယ်။ ဒီအကြောင်းကြောင့် [Virtual Environment](https://docs.python.org/3/library/venv.html) တွင် အလုပ်လုပ်ခြင်းသည် အကျိုးရှိပါတယ်။
သို့သော် Python အသုံးပြုမှုအချို့တွင် ဆော့ဖ်ဝဲ version တစ်ခုနဲ့အသုံးပြုရန်လိုအပ်ပြီး၊ အခြားအသုံးပြုမှုများတွင် အခြား version လိုအပ်နိုင်သဖြင့် [virtual environment](https://docs.python.org/3/library/venv.html) တစ်ခုအတွင်း၌ လုပ်ဆောင်ခြင်း အထောက်အကူဖြစ်သည်။
2. **Visual Studio Code ကို Install လုပ်ပါ**။ သင့်ကွန်ပျူတာမှာ Visual Studio Code ကို Install လုပ်ထားရှိရပါမယ်။ [Visual Studio Code](https://code.visualstudio.com/) ကို Install လုပ်ပုံအဆင့်ဆင့်ကို လိုက်နာပါ။ ဒီသင်ခန်းစာမှာ Python ကို Visual Studio Code မှာ အသုံးပြုမယ်၊ [Visual Studio Code ကို Python Development အတွက် Configure လုပ်ပုံ](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) ကိုလည်း လေ့လာပါ
2. **Visual Studio Code ထည့်သွင်းပါ**။ သင့်တွင် Visual Studio Code ထည့်သွင်းထားမှသာ သေချာပါစေနိုင်သည်။ [Visual Studio Code ထည့်သွင်းခြင်း](https://code.visualstudio.com/) အတွက် သင့်ဝက်ဘ်ဆိုဒ်မှ လမ်းညွှန်ချက်များကို ကျင့်သုံးပါ။ ဒီသင်ခန်းစာတွင် Visual Studio Code ဖြင့် Python ကို အသုံးပြုမည် ဖြစ်သောကြောင့် [Visual Studio Code ကို Python ဖန်တီးမှုအတွက် ပုံစံချထားခြင်း](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) နည်းလမ်းများကို သင်ယူလေ့လာနိုင်ပါသည်
> Python ကို အသုံးပြုရင်း ကျွမ်းကျင်စေဖို့ ဒီ [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) များကို လေ့လာပါ။
> [Learn modules များ](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) ကို တစ်ခုလုံး လေ့လာခြင်းဖြင့် Python ကို သက်သာစွာ သဘောပေါက်စေပါ။
>
> [![Visual Studio Code မှာ Python ကို Setup လုပ်ခြင်း](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code မှာ Python ကို Setup လုပ်ခြင်း")
> [![Visual Studio Code ဖြင့် Python ပြင်ဆင်ခြင်း](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ဖြင့် Python ပြင်ဆင်ခြင်း")
>
> 🎥 အထက်ပါပုံကို Click လုပ်ပြီး VS Code မှာ Python ကို အသုံးပြုပုံကို ကြည့်ပါ။
> 🎥 VS Code အတွင်း Python အသုံးပြုနည်းကို ဗီဒီယိုအဖြစ် ကြည့်ရှုရန် ပုံကို နှိပ်ပါ။
3. **Scikit-learn ကို Install လုပ်ပါ**။ [ဒီအညွှန်းများ](https://scikit-learn.org/stable/install.html) ကို လိုက်နာပြီး Install လုပ်ပါ။ Python 3 ကို အသုံးပြုရမယ်ဆိုတာ သေချာစေဖို့ Virtual Environment ကို အသုံးပြုရန် အကြံပြုပါတယ်။ M1 Mac မှာ Library ကို Install လုပ်ရင် အထူးအညွှန်းများရှိပါတယ်။
3. **Scikit-learn ထည့်သွင်းပါ**။ ထည့်သွင်းနည်းကို [ဤနေရာတွင်](https://scikit-learn.org/stable/install.html) လိုက်နာပါ။ Python 3 ကို သုံးမည့်အတွက် virtual environment အသုံးပြုရန် အကြံပြုပါသည်။ M1 Mac တွင် ထည့်သွင်းရာတွင် အထူးနည်းလမ်းများ ရှိသည်ကို ဤစာမျက်နှာတွင် ဖော်ပြထားပါသည်။
4. **Jupyter Notebook ကို Install လုပ်ပါ**။ [Jupyter package](https://pypi.org/project/jupyter/) ကို Install လုပ်ပါ
1. **Jupyter Notebook ထည့်သွင်းပါ**။ [Jupyter package ထည့်သွင်းရန်](https://pypi.org/project/jupyter/) လိုအပ်ပါသည်
## သင့် ML Authoring Environment
## သင့် ML ဖန်တီးရေး ပတ်ဝန်းကျင်
သင**notebooks** ကို အသုံးပြုပြီး Python Code တွေကို Develop လုပ်ပြီး Machine Learning Models တွေကို တည်ဆောက်ပါမယ်။ ဒီအမျိုးအစားဖိုင်တွေဟာ Data Scientists တွေအတွက် အများဆုံးအသုံးပြုတဲ့ Tools ဖြစ်ပြီး `.ipynb` extension နဲ့ ဖိုင်တွေကို မှတ်သားနိုင်ပါတယ်။
သင့် Python ကုဒ်ဖန်တီးရေးနှင့် စက်သင်ယူမော်ဒယ်များ ဖန်တီးရန် **notebooks** ကို သုံးမည်ဖြစ်သည်။ ဒီဖိုင် အမျိုးအစားသည် ဒေတာသိပ္ပံပညာရှင်များ အသုံးပြု့လေ့ရှိသော ကိရိယာဖြစ်ပြီး `.ipynb` ဆိုသည့် ထပ်ဆင့်သင်္ကေတဖြင့် သိရှိနိုင်သည်။
Notebooks တွေဟာ Interactive Environment ဖြစ်ပြီး Developer တွေကို Code ရေးခြင်း၊ Notes ထည့်ခြင်း၊ Documentation ရေးခြင်း စတဲ့ အလုပ်တွေကို လုပ်နိုင်စေပါတယ်။ အထူးသဖြင့် Experimental သို့မဟုတ် Research-oriented Projects တွေအတွက် အထောက်အကူဖြစ်ပါတယ်။
Notebooks သည် အပြန်အလှန်လုပ်ဆောင်နိုင်သည့် ပတ်ဝန်းကျင်တစ်ခုဖြစ်ပြီး၊ ဖန်တီးသူအနေဖြင့် ကုဒ်ရေးခြင်း၊ မှတ်ချက်ထည့်ခြင်းနှင့် ရေးသားမှုများ ဖော်ပြနိုင်ခြင်းကြောင့် သုတေသန သို့မဟုတ် စမ်းသပ်မှုအခြေပြု စီမံကိန်းများတွင် အထောက်အကူဖြစ်ပေးသည်။
[![ML for beginners - Jupyter Notebooks ကို Setup လုပ်ပြီး Regression Models တည်ဆောက်ခြင်း](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for beginners - Jupyter Notebooks ကို Setup လုပ်ပြီး Regression Models တည်ဆောက်ခြင်း")
[![ML စတင်သင်ယူသူများ - Jupyter Notebooks တပ်ဆင်ပြီး regression မော်ဒယ်များ စတင်ဆောက်ရန်](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML စတင်သင်ယူသူများ - Jupyter Notebooks တပ်ဆင်ပြီး regression မော်ဒယ်များ စတင်ဆောက်ရန်")
> 🎥 အထက်ပါပုံကို Click လုပ်ပြီး ဒီအလုပ်ကို လုပ်ဆောင်ပုံကို ကြည့်ပါ။
> 🎥 ဒီလေ့ကျင့်ခန်းကို ဗီဒီယိုအနုပညာပိုင်းဖြစ်စွာ လေ့လာရန် ပုံကို နှိပ်ပါ။
### လက်တွေ့လုပ်ဆောင်မှု - Notebook ကို အသုံးပြုခြင်း
### လေ့ကျင့်ခန်း - notebook တစ်ခုဖြင့် လုပ်ကိုင်ခြင်း
ဒီ Folder မှာ _notebook.ipynb_ ဖိုင်ကို တွေ့နိုင်ပါမယ်။
ဒီဖိုလ်ဒါတွင် _notebook.ipynb_ ဖိုင်ကို တွေ့ရှိမည်ဖြစ်သည်။
1. _notebook.ipynb_ ကို Visual Studio Code မှာ ဖွင့်ပါ။
1. Visual Studio Code ဖြင့် _notebook.ipynb_ ဖိုင်ကိုဖွင့်ပါ။
Jupyter Server တစ်ခု Python 3+ နဲ့ စတင်ပါမယ်။ Notebook မှာ `run` လို့ရတဲ့ Code Block တွေကို တွေ့နိုင်ပါမယ်။ Code Block တစ်ခုကို Run လုပ်ဖို့ Play Button ပုံစံ Icon ကို ရွေးပါ
Jupyter server နှင့် Python 3+ စတင်ပါမည်။ notebook တွင် `run` လို့ရစေရန် ကုဒ်အစိတ်အပိုင်းများ ရှိသည်။ ၎င်းများကို play ခလောက်ကဲ့သို့ မြင်သာသော အိုင်ကွန်ကို ရွေး၍ ဖျော်ဖြေနိုင်သည်
2. `md` icon ကို ရွေးပြီး Markdown အနည်းငယ်ထည့်ပါ၊ **# Welcome to your notebook** ဆိုတဲ့ စာသားကို ထည့်ပါ။
1. `md` အိုင်ကွန်ကို ရွေးပြီး markdown တစ်ခုပြုလုပ်ပါ၊ အထက်ပါ စာသားတစ်ခု **# Welcome to your notebook** ကို ထည့်ပါ။
နောက်တစ်ဆင့်မှာ Python Code ကို ထည့်ပါ။
ပို၍ Python ကုဒ်တစ်ခုထည့်ပါ။
3. Code Block မှာ **print('hello notebook')** ကို ရိုက်ပါ။
4. Arrow ကို ရွေးပြီး Code ကို Run လုပ်ပါ။
1. ကုဒ်အပိုင်းတွင် **print('hello notebook')** ရိုက်ထည့်ပါ။
1. ကုဒ်အား run ခလုတ်ကို နှိပ်ပါ။
Printed Statement ကို တွေ့ရပါမယ် -
ထုတ်ပေးထားသော စကားစုကို မြင်ရမည်ဖြစ်သည်။
```output
hello notebook
```
![VS Code မှာ Notebook ဖွင့်ထားပုံ](../../../../2-Regression/1-Tools/images/notebook.jpg)
![VS Code မှာ notebook ဖွင့်ထားသည်](../../../../translated_images/my/notebook.4a3ee31f396b8832.webp)
သင့် Code ကို Comments တွေနဲ့ ပေါင်းစပ်ပြီး Notebook ကို Self-document လုပ်နိုင်ပါတယ်။
သင့်ကုဒ်နှင့် မှတ်ချက်များကို notebook တွင် ထည့်သွင်းရေးသားနိုင်သည်။
Web Developer ရဲ့ အလုပ်လုပ်ပုံနဲ့ Data Scientist ရဲ့ အလုပ်လုပ်ပုံက ဘယ်လိုကွာခြားနေလဲဆိုတာ အနည်းငယ်တွေးကြည့်ပါ။
ဝဘ်ဆာဗာဖန်တီးသူ တစ်ယောက်၏ လုပ်ငန်းပတ်ဝန်းကျင်နှင့် ဒေတာသိပ္ပံပညာရှင်တစ်ဦးရဲ့ လုပ်ငန်းပတ်ဝန်းကျင် ဘာကွာခြားမှုများရှိသည်ကို တစ်မိနစ်စဉ်းစားကြည့်ပါ။
## Scikit-learn ကို အသုံးပြုခြင်း
## Scikit-learn ဖြင့် အလုပ်လုပ်နိုင်ရန်
Python ကို Local Environment မှာ Setup လုပ်ပြီး၊ Jupyter Notebooks ကို အသုံးပြုရင်း ကျွမ်းကျင်လာပြီးနောက်၊ Scikit-learn ကိုလည်း ကျွမ်းကျင်စေဖို့ လိုအပ်ပါတယ်။ Scikit-learn ကို `sci` (science) လို့ အသံထွက်ပါ။ Scikit-learn မှာ ML Tasks တွေကို လုပ်ဆောင်ဖို့ [အကျယ်အဝန်း API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ရှိပါတယ်။
Python ကို ဒေသိယပတ်ဝန်းကျင်တွင် စတင်တပ်ဆင်ပြီး Jupyter Notebooks နှင့် သဘောတူလာပါက Scikit-learn ကိုလည်း သဘောကျကျ သုံးစွဲနိုင်ရအောင် ကြိုးစားကြရအောင် (သတ်မှတ်ပုံ `sci` လိုဖတ်ပါ၊ `science` လိုသည်။) Scikit-learn တွင် [ကျယ်ပြန့်သော API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ရှိ၍ ML လုပ်ဆောင်ချက်များ အကူအညီပေးသည်။
သူတို့ရဲ့ [website](https://scikit-learn.org/stable/getting_started.html) အရ - "Scikit-learn သည် supervised learning နှင့် unsupervised learning ကို ပံ့ပိုးပေးတဲ့ open source machine learning library ဖြစ်ပါတယ်။ Model fitting, data preprocessing, model selection နှင့် evaluation အပါအဝင် အခြားသော Utilities များစွာကိုလည်း ပံ့ပိုးပေးပါတယ်။"
သူတို့ရဲ့ [ဝက်ဘ်ဆိုဒ်](https://scikit-learn.org/stable/getting_started.html) အရ "Scikit-learn သည် supervised နှင့် unsupervised ပညာသင်ကြားမှုများကို ထောက်ပံ့ပေးသော အခမဲ့ စက်သင်ယူမှု စာကြည့်တိုက် ဖြစ်သည်။ မော်ဒယ်ကို ဆွဲဆိုင်းခြင်း၊ ဒေတာကြိုတင်ပြုပြင်ခြင်း၊ မော်ဒယ်ရွေးချယ်မှုနှင့် သုံးသပ်မှုများအတွက် ကိရိယာအခြားများလည်း ထည့်သွင်းပေးထားသည်။"
ဒီသင်ခန်းစာမှာ Scikit-learn နှင့် အခြား Tools များကို အသုံးပြုပြီး 'traditional machine learning' tasks တွေကို လုပ်ဆောင်ပါမယ်။ Neural Networks နှင့် Deep Learning ကို မပါဝင်စေဖို့ ရည်ရွယ်ထားပြီး၊ အဲဒီအကြောင်းအရာတွေကို 'AI for Beginners' curriculum မှာ ပိုမိုလေ့လာနိုင်ပါမယ်။
ဒီသင်တန်းမှာ Scikit-learn နှင့် ကိရိယာအခြားများကို သုံးပြီး ပုံမှန် စက်သင်ယူမှု လုပ်ငန်းရှင်လုပ်ကိုင်သည်။ neural network နှင့် deep learning များကို ကျွန်တော်တို့ 'AI for Beginners' သင်ခန်းစာတွင် လေ့လာရန်ထားကြသည်။
Scikit-learn သည် Models တွေကို တည်ဆောက်ပြီး အသုံးပြုဖို့ အလွယ်ကူဆုံးဖြစ်စေပါတယ်။ Numeric Data ကို အဓိကထားပြီး Learning Tools အဖြစ် အသုံးပြုနိုင်တဲ့ Dataset များစွာပါဝင်ပါတယ်။ Pre-built Models တွေကိုလည်း Students တွေ စမ်းသပ်နိုင်ပါတယ်။ Prepackaged Data ကို Load လုပ်ပြီး Built-in Estimator ကို အသုံးပြုတဲ့ ပထမဆုံး ML Model ကို လေ့လာကြည့်ပါမယ်။
Scikit-learn က မော်ဒယ်ဖန်တီးခြင်းနှင့် သုံးစွဲရန် စံထားသတ်မှတ်ခြင်းကို ရိုးရှင်းစွာ လုပ်ဆောင်နိုင်သည်။ ဥပမာနှင့် သင်ယူရန်အသင့်ရှိသော ဒေတာစုစည်းမှုများပါဝင်ပြီး သူတို့ အတွက်မော်ဒယ်များပါဝင်သည်။ ပထမဆံုး Scikit-learn မော်ဒယ်အတွက် ကြိုတင်ထားသော ဒေတာနှင့် estimator အသုံးပြုခြင်းကို စတင်ကြည့်ကြရအောင်။
## လက်တွေ့လုပ်ဆောင်မှု - ပထမဆုံး Scikit-learn Notebook
## လေ့ကျင့်ခန်း - သင့်ပထမဆုံး Scikit-learn notebook
> ဒီ Tutorial ကို Scikit-learn ရဲ့ [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) မှာ အခြေခံပြီး ရေးသားထားပါတယ်။
> ဒီ သင်ကြားမှုကို Scikit-learn ၏ [linear regression ဥပမာ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) မှ အကြံဉာဏ်ယူထားသည်။
[![ML for beginners - Python မှာ ပထမဆုံး Linear Regression Project](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Python မှာ ပထမဆုံး Linear Regression Project")
> 🎥 အထက်ပါပုံကို Click လုပ်ပြီး ဒီအလုပ်ကို လုပ်ဆောင်ပုံကို ကြည့်ပါ။
[![ML စတင်သင်ယူသူ - Python ဖြင့် ပထမဆုံး လိုင်းနေရေး Regression စီမံကိန်း](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML စတင်သင်ယူသူ - Python ဖြင့် ပထမဆုံး လိုင်းနေရေး Regression စီမံကိန်း")
_notebook.ipynb_ ဖိုင်မှာရှိတဲ့ Cell တွေကို 'trash can' icon ကို နှိပ်ပြီး ရှင်းလင်းပါ။
> 🎥 ဤလေ့ကျင့်ခန်းကို ဗီဒီယိုနည်းဖြင့် လေ့လာရန် ပုံကို နှိပ်ပါ။
ဒီအပိုင်းမှာ Scikit-learn မှာ Learning အတွက် Built-in ဖြစ်တဲ့ Diabetes Dataset ကို အသုံးပြုပါမယ်။ Diabetic Patients တွေအတွက် Treatment ကို စမ်းသပ်ချင်တယ်လို့ စဉ်းစားပါ။ Machine Learning Models တွေက Variables တွေကို အခြေခံပြီး ဘယ်သူတွေ Treatment ကို ပိုမိုတုံ့ပြန်နိုင်မလဲဆိုတာကို သတ်မှတ်ပေးနိုင်ပါတယ်။ Visualization လုပ်ထားတဲ့ Basic Regression Model တစ်ခုက Variables တွေကို သုံးပြီး Clinical Trials တွေကို စီမံခန့်ခွဲဖို့ အထောက်အကူဖြစ်စေမယ်
_notebook.ipynb_ ဖိုင်တွင် ရှိသော cells အားလုံးကို 'trash can' အိုင်ကွန်နှိပ်၍ ဖျက်ပစ်ပါ
✅ Regression Methods များစွာရှိပြီး၊ သင်ရွေးချယ်ရမယ့် Method က သင်လိုချင်တဲ့ အဖြေကို အခြေခံပါတယ်။ လူတစ်ဦးရဲ့ အသက်အရွယ်ကို အခြေခံပြီး အမြင့်ကို ခန့်မှန်းချင်တယ်ဆို Linear Regression ကို အသုံးပြုပါမယ်၊ အကြောင်းက Numeric Value ကို ရှာဖွေနေပါတယ်။ အစားအစာအမျိုးအစားတစ်ခုကို Vegan ဖြစ်/မဖြစ် သတ်မှတ်ချင်တယ်ဆို Logistic Regression ကို အသုံးပြုပါမယ်၊ အကြောင်းက Category Assignment ကို ရှာဖွေနေပါတယ်။ Logistic Regression ကို နောက်ပိုင်းမှာ ပိုမိုလေ့လာနိုင်ပါမယ်။ Data ကို အခြေခံပြီး မေးခွန်းများစွာကို တွေးကြည့်ပြီး၊ ဘယ် Method က ပိုသင့်တော်မလဲဆိုတာ တွေးကြည့်ပါ
ဤပိုင်းတွင် Scikit-learn တွင် သင်ယူမှုအတွက် ပါဝင်သော diabetes အချက်အလက်အစုလိုက် တစ်ခုဖြင့် လုပ်ဆောင်မည်ဖြစ်သည်။ လက်က်ကျင့်မှုအတွက် diabetic လူနာများကို ဆုတ်ကမ်းသည့်ကုထုံး စမ်းသပ်လိုသူဟု ရှုမြင်ပါက စက်သင်ယူမှု မော်ဒယ်တို့က မည်သူများအတွက် ကောင်းမွန်သော တုံ့ပြန်မှုရှိမည်ဆိုသည်ကို ဖော်ထုတ်နိုင်သည်။ အလွယ်တကူ regression မော်ဒယ်တစ်ခုကို ကြည့်ရှုချက်ဖြင့် ၎င်းသည် သင်၏ သတိပြုရမည့် အချက်အလက်များကို ပြသနိုင်သည်
အလုပ်ကို စတင်လိုက်ပါ။
✅ regression နည်းလမ်းစုံရှိပြီး သင် ရရှိလိုသည့် ဖြေချက်ပုံစံပေါ်မူတည်သည်။ အသက်တစ်မျိုးနှင့် မျှော်မှန်းထားသော အမြင့်တန်ဖိုးခန့်မှန်းရန် linear regression ကိုသုံးမည်။ လူတစ်ဦးအရွယ်အရအမြင့်ကို ကြိုတင်တွက်ရန် numeric value လိုတွင် မျိုးဖြစ်သည်။ စားအစာတစ်မျိုးတစ်စုံက ဗီဂန် ဟုတ်မဟုတ် သတ်မှတ်ရန် logistic regression (category assignment) ကို အသုံးပြုမည်။ logistic regression ကို နောက်ပိုင်းတွင် သင်ယူမည်ဖြစ်သည်။ သင်ဖြစ်နိုင်သည့် ဒေတာမေးခွန်းများကို စဉ်းစားပြီး သင့်ရဲ့ မေးခွန်းနှင့် ကိုက်ညီသည့် regression နည်းလမ်းကို ရွေးချယ်ပါ။
### Libraries များ Import လုပ်ခြင်း
ဒီအလုပ်ကို စတင်လိုက်ကြရအောင်။
ဒီအလုပ်အတွက် Libraries အချို့ကို Import လုပ်ပါမယ် -
### စာကြည့်တိုက်များ ကိုသွင်းယူခြင်း
- **matplotlib**. [Graphing Tool](https://matplotlib.org/) အဖြစ် အသုံးဝင်ပြီး Line Plot တစ်ခုကို ဖန်တီးဖို့ အသုံးပြုပါမယ်။
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) သည် Python မှာ Numeric Data ကို Handle လုပ်ဖို့ အသုံးဝင်တဲ့ Library ဖြစ်ပါတယ်။
- **sklearn**. [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) Library ဖြစ်ပါတယ်။
လုပ်ငန်းအတွက် စာကြည့်တိုက်များကို သုံးမည် -
သင့် Tasks များအတွက် အထောက်အကူဖြစ်စေမယ့် Libraries များကို Import လုပ်ပါ။
- **matplotlib**။ ဒါသည် အသုံးဝင်သော [ဂရပ်ဖ်ကိရိယာ](https://matplotlib.org/) ဖြစ်၍ လိုင်းပလော့ဖန်တီးရန်သုံးမည်။
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) သည် Python တွင် နံပါတ်များကိုဆောင်ရွက်ရာ အထောက်အကူဖြစ်သော စာကြည့်တိုက်ဖြစ်သည်။
- **sklearn**. ၎င်းသည် [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) စာကြည့်တိုက်ဖြစ်သည်။
1. အောက်ပါ Code ကို ရိုက်ပါ -
လုပ်ငန်းများအတွက် ကူညီရန် စာကြည့်တိုက်များကို သွင်းယူပါ။
1. အောက်ပါကုဒ်ဖြင့် import ပြုလုပ်ပါ -
```python
import matplotlib.pyplot as plt
@ -122,26 +123,26 @@ _notebook.ipynb_ ဖိုင်မှာရှိတဲ့ Cell တွေကိ
from sklearn import datasets, linear_model, model_selection
```
အထက်မှာ `matplotlib`, `numpy` ကို Import လုပ်ပြီး၊ `datasets`, `linear_model` နှင့် `model_selection` ကို `sklearn` မှ Import လုပ်ထားပါတယ်။ `model_selection` ကို Data ကို Training နှင့် Test Sets အဖြစ် ခွဲခြားဖို့ အသုံးပြုပါတယ်။
အထက်တွင် `matplotlib`, `numpy` နှင့် `sklearn` မှ `datasets`, `linear_model`, `model_selection` ကို import လုပ်ပါသည်။ `model_selection` သည် ဒေတာကို လေ့ကျင့်မှုနှင့် စမ်းသပ်မှု အစိတ်အပိုင်းများသို့ ခွဲခြားရန် သုံးသည်။
### Diabetes Dataset
### diabetes ဒေတာစုစည်းမှု
Built-in [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) မှာ Diabetes နှင့် ပတ်သက်တဲ့ Data Samples 442 ခုပါဝင်ပြီး Feature Variables 10 ခုပါဝင်ပါတယ်၊ အချို့မှာ -
ပြည့်စုံပြီး [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) တွင် ၄၄၂ နမူနာပါရှိပြီး diabetes နှင့်ဆက်စပ်သော အချက်အလက်များ ၁၀ ခုပါရှိသည်၊ အချို့မှာ -
- age: အသက် (နှစ်)
- bmi: Body Mass Index
- bp: ပျမ်းမျှ သွေးပေါင်ချိန
- s1 tc: T-Cells (အဖြူရောင် သွေးဆဲလ်အမျိုးအစား)
- age: အသက်နှစ်များ
- bmi: ခန္ဓာကိုယ် အလေးချိန်ညွှန်းကိန်း
- bp: သွေးတိုးပတ်ဝန်းကျင် စမ်းသပ်မှု အချက်အလက
- s1 tc: T-Cells (ဖြူသော သွေးအရိုးအမြစ်အမျိုးအစား)
✅ ဒီ Dataset မှာ Diabetes နှင့် ပတ်သက်တဲ့ Research အတွက် Feature Variable အဖြစ် 'sex' ကိုပါဝင်ထားပါတယ်။ Medical Datasets များစွာမှာ ဒီလို Binary Classification ပါဝင်ပါတယ်။ Population တစ်ခုခုကို Treatment မရနိုင်စေတဲ့ Categorization များအကြောင်း အနည်းငယ်တွေးကြည့်ပါ။
✅ ဒီ dataset တွင် 'sex' ဟူသော ယောကျ္ားမနှစ်မျိုးအုပ်စု ခြားနားမှုကို ပြသထားသည်။ ဆေးဘက်ဆိုင်ရာ ဒေတာစုစည်းမှုများစွာတွင် ယင်းအမျိုးအစား မျိုးခွဲခြားမှုပါဝင်သည်။ ထိုသို့မျိုးခွဲခြားခြင်းကြောင့် လူဦးရေတစ်စုချင်းခုခံကုထုံးမှ ထုတ်ပစ်ခြင်း ဖြစ်တက်သည်ကို စဉ်းစားကြည့်ပါ။
အခု X နှင့် y Data ကို Load လုပ်ပါ။
ယခု X နှင့် y ဒေတာများကို load လုပ်ပါ။
> 🎓 ဒီဟာ supervised learning ဖြစ်ပြီး၊ Named 'y' Target လိုအပ်ပါတယ်။
> 🎓 သတိပြုရန်- supervised learning ဖြစ်ပြီး 'y' target ဟုအမည်ပေးထားသည်။
Code Cell အသစ်တစ်ခုမှာ `load_diabetes()` ကို ခေါ်ပြီး Diabetes Dataset ကို Load လုပ်ပါ။ Input `return_X_y=True` သည် `X` ကို Data Matrix အဖြစ်၊ `y` ကို Regression Target အဖြစ် Return ပြန်ပေးပါမယ်။
နယူး code cell တစ်ခုတွင် `load_diabetes()` ဟူသော function ကို ခေါ်ပြီး diabetes ဒေတာစုစည်းမှုကို load ပါ။ input `return_X_y=True` သည် `X` ကို ဒေတာ matrix ျဖစ္စေ၊ `y` ကို regression target ဖြစ်စေ စေသည်။
1. Data Matrix ရဲ့ Shape နဲ့ ပထမဆုံး Element ကို ပြသဖို့ Print Commands အချို့ကို ထည့်ပါ -
1. ဒေတာ matrix ၏ အရွယ်အစားနှင့် ပထမဆုံး အရာကို ပြရန် print command များထည့်ပါ။
```python
X, y = datasets.load_diabetes(return_X_y=True)
@ -149,9 +150,9 @@ Code Cell အသစ်တစ်ခုမှာ `load_diabetes()` ကို ခ
print(X[0])
```
Response အနေနဲ့ Tuple တစ်ခုကို ပြန်ပေးပါမယ်။ Tuple ရဲ့ ပထမဆုံးနှင့် ဒုတိယတန်ဖိုးကို `X` နှင့် `y` အဖြစ် Assign လုပ်ထားပါတယ်။ [Tuples](https://wikipedia.org/wiki/Tuple) အကြောင်းပိုမိုလေ့လာပါ။
ပြန်လာသည့်တုန့်ပြန်ချက်မှာ tuple ဖြစ်ပြီး၊ tuple ၏ အစောဆုံး တန်ဖိုးနှစ်ခုကို `X` နှင့် `y` သတ်မှတ်ခြင်း ဖြစ်သည်။ tuple အကြောင်း ပို၍ လေ့လာနိုင်ရန် [tuples](https://wikipedia.org/wiki/Tuple) နှင့်ဆက်သွယ်ကြည့်ပါ။
ဒီ Data မှာ 442 Items ရှိပြီး 10 Elements ပါဝင်တဲ့ Arrays အဖြစ် Shape ရှိပါတယ် -
ဒီဒေတာတွင် ၄၄၂ လုံးရှိပြီး အစီအစဉ်အလိုက် ၁၀ ခုထည့်ထားသော အက်၍ ray အဖြစ် ဖြစ်သည်။
```text
(442, 10)
@ -159,55 +160,75 @@ Code Cell အသစ်တစ်ခုမှာ `load_diabetes()` ကို ခ
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
Data နဲ့ Regression Target အကြား ဆက်နွယ်မှုကို အနည်းငယ်တွေးကြည့်ပါ။ Linear Regression သည် Feature X နှင့် Target Variable y အကြား ဆက်နွယ်မှုကို ခန့်မှန်းပေးပါတယ်။ Diabetes Dataset ရဲ့ [Target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ကို Documentation မှာ ရှာဖွေပါ။ ဒီ Dataset က ဘာကို ပြသနေသလဲ?
ဒေတာနှင့် regression target အကြား ဆက်စပ်မှုကို စဉ်းစားပါ။ Linear regression သည် feature X နှင့် target y အကြား ဆက်နွယ်မှုများ ခန့်မှန်းသည်။ diabetic dataset ၏ [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ကို စာတမ်းထဲတွင် ရှာဖွေရန် ကြိုးစားပါ။ ၎င်း target သည် ဘာကိုပြသနေသနည်း?
2. Dataset ရဲ့ တစ်စိတ်တစ်ပိုင်းကို Plot ဖို့ Dataset ရဲ့ 3rd Column ကို ရွေးပါ။ `:` Operator ကို အသုံးပြုပြီး Rows အားလုံးကို ရွေးပြီး၊ Index (2) ကို အသုံးပြုပြီး 3rd Column ကို ရွေးပါ။ Data ကို 2D Array အဖြစ် Reshape လုပ်ဖို့ `reshape(n_rows, n_columns)` ကို အသုံးပြုပါ။ Parameter တစ်ခုမှာ -1 ရှိရင်၊ Dimension ကို အလိုအလျောက်တွက်ချက်ပေးပါမယ်။
2. dataset ၏ တခြားအပိုင်းတစ်ခုကို ရွေးချယ်ရန် dataset ၏ ၃ လုံးကော်လံကို ရွေးပါ။ `:` အကောင့်အားလုံးကို ရွေးပြီး၊ index (2) ဖြင့် ၃ လုံးကော်လံကို ရွေးပါ။ ဒေတာကို ပလော့ဖ်ဖို့အတွက် ၂ ဒီ array အဖြစ် `reshape(n_rows, n_columns)` ဖြင့် ပြင်ဆင်ရမည်။ parameter တန်ဖိုး -1 ဖြစ်လျှင် အတူတကွဖြတ်တောက်ချက်ကို အလိုလိုတွက်ချက်ပေးသည်။
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
Data ရဲ့ Shape ကို အချိန်မရွေး Print လုပ်ပြီး စစ်ဆေးပါ။
အချိန်တိုင်း ပြန်ကြည့်၍ ဒေတာ၏ အရွယ်အစားကို စစ်ဆေးပါ။
3. Data ကို Plot လုပ်ဖို့ ပြင်ဆင်ပြီးနောက်၊ ဒီ Dataset မှာ Numbers တွေကို Logical Split လုပ်ဖို့ Machine ကို အသုံးပြုနိုင်ပါမယ်။ ဒီအလုပ်ကို လုပ်ဖို့ Data (X) နှင့် Target (y) ကို Test နှင့် Training Sets အဖြစ် ခွဲခြားဖို့ လိုအပ်ပါတယ်။ Scikit-learn မှာ ဒီအလုပ်ကို လုပ်ဖို့ လွယ်ကူတဲ့ နည်းလမ်းရှိပါတယ်၊ Test Data ကို တစ်ခုခု Point မှာ Split လုပ်နိုင်ပါတယ်။
3. ဒေတာအား များတင်ပလော့ဖ်ရန် အသင့်ရှိသည့်အခြေအနေမှ စတင်ပြီး၊ အခြားသော မော်ဒယ်အလုပ်လုပ်စေဖို့အတွက် ဒေတာ (X) နှင့် target (y) တို့ကို စမ်းသပ်ခြင်း နှင့် လေ့ကျင့်ခြင်းအပိုင်း ခွဲခြားသုံးဆောင်ရမည်။ Scikit-learn တွင် ဒီ ခွဲခြားမှုကို ရိုးရှင်းစွာ ဆောင်ရွက်နိုင်ပြီး သတ်မှတ်ထားသော နေရာတွင် သင့် စမ်းသပ်ဒေတာကို ခွဲပေးနိုင်သည်။
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
4. Model ကို Training လုပ်ဖို့ ပြင်ဆင်ပါ! Linear Regression Model ကို Load လုပ်ပြီး `model.fit()` ကို အသုံးပြုပြီး X နှင့် y Training Sets များကို Training လုပ်ပါ။
4. ယခု မော်ဒယ်လေ့ကျင့်ရန် အသင့်ဖြစ်ပြီ။ linear regression မော်ဒယ်ကို ထည့်သွင်းပြီး `model.fit()` ဖြင့် X နှင့် y လေ့ကျင့်စရာ ဒေတာများဖြင့် သင်ကြားပါ။
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
`model.fit()` သည် TensorFlow ကဲ့သို့သော ML Libraries များမှာ တွေ့ရနိုင်တဲ့ Function ဖြစ်ပါတယ်။
`model.fit()` သည် TensorFlow ကဲ့သို့သော ML စာကြည့်တိုက်များတွင် တွေ့ရသော function တစ်ခုဖြစ်သည်။
5. ပြီးလျှင် စမ်းသပ်မှု ဒေတာဖြင့် မော်ဒယ် အနာဂတ်ခန့်မှန်းချက် ပြုလုပ်ရန် `predict()` function ကိုအသုံးပြုပါ။
5. Test Data ကို အသုံးပြုပြီး Prediction တစ်ခုကို ဖန်တီးပါ၊ `predict()` Function ကို အသုံးပြုပါ။ ဒီဟာကို Model ရဲ့ Data Groupings အကြား Line ကို ရေးဆ
✅ ဒီမှာဘာဖြစ်နေတာလဲဆိုတာကိုအနည်းငယ်တွေးကြည့်ပါ။ တစ်ခုတည်းသောတည့်တည့်လိုင်းတစ်ခုဟာ အချက်အလက်အနည်းငယ်များကိုဖြတ်သွားနေပါတယ်၊ ဒါပေမယ့် အတိအကျဘာလုပ်နေတာလဲ? မသိသေးတဲ့ အချက်အလက်တစ်ခုဟာ ဒီလိုင်းနဲ့ပတ်သက်ပြီး y axis ပေါ်မှာဘယ်နေရာမှာရှိမလဲဆိုတာကို သင်ခန့်မှန်းနိုင်ပုံကိုမြင်နိုင်ပါသလား? ဒီမော်ဒယ်ရဲ့ အကျိုးကျေးဇူးကို လက်တွေ့အသုံးချပုံအနေနဲ့ စကားလုံးတွေနဲ့ဖော်ပြကြည့်ပါ။
```python
y_pred = model.predict(X_test)
```
အောင်မြင်ပါတယ်၊ သင့်ရဲ့ ပထမဆုံး linear regression မော်ဒယ်ကို တည်ဆောက်ပြီး၊ အဲဒီနဲ့ ခန့်မှန်းချက်တစ်ခုကိုဖန်တီးပြီး၊ plot ထဲမှာ ပြသနိုင်ခဲ့ပါပြီ!
6. ယခု ဒေတာကို ပလော့ဖ်တွင် ပြရန်အချိန်။ Matplotlib သည် ဤလုပ်ငန်းအတွက် အသုံးပေါ် စွမ်းဆောင်ရည်ကောင်းစွာ ရှိသည်။ X နှင့် y စမ်းသပ် ဒေတာအား scatterplot ဖြင့် ဖော်ပြပြီး မော်ဒယ်၏ ဒေတာအုပ်စုများအကြား သင့်လျော်ဆုံးနေရာတွင် အနာဂတ်ခန့်မှန်းချက်ဖြင့် မှန်ကန်သော လိုင်းတစ်ခု ဆွဲပါ။
```python
plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3)
plt.xlabel('Scaled BMIs')
plt.ylabel('Disease Progression')
plt.title('A Graph Plot Showing Diabetes Progression Against BMI')
plt.show()
```
![diabetes ပတ်ဝန်းကျင်ရှိ ဒေတာဟာ ပလော့ဖ်တစ်ခု](../../../../translated_images/my/scatterplot.ad8b356bcbb33be6.webp)
---
## 🚀စိန်ခေါ်မှု
ဒီ dataset ထဲက အခြား variable တစ်ခုကို plot လုပ်ပါ။ အကြံပြုချက်: ဒီလိုင်းကို ပြင်ဆင်ပါ `X = X[:,2]`။ ဒီ dataset ရဲ့ target ကိုအခြေခံပြီး၊ ဆီးချိုရောဂါရဲ့ တိုးတက်မှုအခြေအနေကို ဘာတွေရှာဖွေနိုင်မလဲ?
✅ ဒီမှာဘာဖြစ်နေသလဲဆိုတာအနည်းငယ်စဉ်းစားကြည့်ပါ။ တစ်ကြောင်းချောင်းစိုး ကာလေးနဲ့ရှားပါးတဲ့ ဒေတာလေးတွေကြားဖြတ်သွားတဲ့ တည့်တည့်တဲ့ချောင်းတစ်ခုရှိတယ်၊ ဒါပေမဲ့ ဒါကဘာလုပ်နေသလဲ? ဒီချောင်းကို အသုံးပြုပြီး အသစ်မြင်ဖူးသေးတဲ့ ဒေတာပျိုတစ်ခုက ဒီပလော့့ရဲ့ y အလျား ညီအောင် ဘယ်နေရာမှာထားမလဲဆိုတာ တွက်ချက်ခန့်မှန်းနိုင်ဖို့ ဘယ်လိုမြင်နိုင်မလဲ? ဒီမော်ဒယ်ရဲ့ လက်တွေ့အသုံးချမှုကို စကားလုံးတွေဖြင့်ဖော်ပြပါ။
ဂုဏ်ယူပါတယ်၊ သင်ဟာ သင်၏ ပထမဆုံး လိုင်းရေးဂရက်ရှင်းမော်ဒယ်ကို တည်ဆောက်ပြီး၊ ခန့်မှန်းခြေတစ်ခုကို ပြုလုပ်ပြီး၊ ပလော့တစ်ပေါ်မှာ ပြသခဲ့ပါပြီ!
---
## 🚀 စိန်ခေါ်မှု
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
ဒီဒေတာစုံစုမှ ကွဲပြားသော အမျိုးအစားတစ်ခုကို ပလော့လုပ်ပါ။ အကြောင်းပြချက် - ဤလိုင်းကို တည်းဖြတ်ပါ: `X = X[:,2]`။ ဒီဒေတာစုံစုရဲ့ ရည်မှန်းချက်ကို သုံးပြီး ဆီးချိုရောဂါ ရောဂါအဖြစ် တိုးတက်မှုအပေါ် ဘာတွေ ရှာဖွေတွေ့ရှိနိုင်သလဲ?
## [စာသင်ပြီးတော့ စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/)
## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာရန်
ဒီသင်ခန်းစာမှာ သင် simple linear regression ကို အသုံးပြုခဲ့ပြီး၊ univariate regression သို့မဟုတ် multiple linear regression မဟုတ်ပါဘူး။ ဒီနည်းလမ်းတွေကြားက ကွာခြားချက်တွေကို အနည်းငယ်ဖတ်ရှုပါ၊ ဒါမှမဟုတ် [ဒီဗီဒီယို](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) ကိုကြည့်ပါ။
ဒီစာသင်ခြင်းတွင် သင်သည် တစ်မျိုးအပြင်ပြင်တိုင်းသို့ မဟုတ် များပြားသောလိုင်းရေးဂရက်ရှင်း မဟုတ်ဘဲ ရိုးရှင်းသောလိုင်းရေးဂရက်ရှင်းတစ်ခုနှင့် အလုပ်လုပ်ခဲ့သည်။ ဤနည်းလမ်းများ၏ ကွာခြားချက်များအကြောင်းအနည်းငယ်ဖတ်ပါ၊ ဒါမှမဟုတ် [ဒီဗီဒီယို](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) ကိုကြည့်ပါ။
Regression ရဲ့ အယူအဆကို ပိုမိုနားလည်ရန် ဖတ်ရှုပါ၊ ဒီနည်းလမ်းနဲ့ ဖြေရှင်းနိုင်တဲ့ မေးခွန်းအမျိုးမျိုးကို တွေးကြည့်ပါ။ သင့်နားလည်မှုကို ပိုမိုတိုးတက်စေရန် [ဒီသင်ခန်းစာ](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ကို လေ့လာပါ။
Regression အယူအဆအကြောင်းပိုမိုဖတ်ရှုပြီး ဤနည်းလမ်းဖြင့် ဖြေရှင်းနိုင်သော မေးခွန်းအမျိုးအစားများအကြောင်း စဉ်းစားပါ။ နားလည်မှုကို တွေးတောရန် [ဒီစာသင်ခန်းမ](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ကိုယူပါ။
## အလုပ်ပေးစာ
## တာဝန်ပေးချက်
[A different dataset](assignment.md)
[ကွဲပြားသော ဒေတာစုံစု](assignment.md)
---
**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ အတည်ပြုထားသော ဘာသာပြန်မှုကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ပြောကြားချက်**
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,62 +1,62 @@
# Scikit-learn ကို အသုံးပြု၍ Regression Model တည်ဆောက်ခြင်း - ဒေတာကို ပြင်ဆင်ပြီး ရှင်းလင်းဖော်ပြခြင်း
# Scikit-learn ကို အသုံးပြု၍ regression မော်ဒယ် တည်ဆောက်ခြင်း - ဒေတာ ပြင်ဆင်ခြင်းနှင့် မှတ်ပုံတင်ပြသခြင်း
![ဒေတာရှင်းလင်းဖော်ပြမှု infographic](../../../../2-Regression/2-Data/images/data-visualization.png)
![ဒေတာ မှတ်ပုံတင်ပြသမှု အချက်အလက်ပုံတင်](../../../../translated_images/my/data-visualization.54e56dded7c1a804.webp)
Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
အချက်အလက်ပုံတင်ကို [Dasani Madipalli](https://twitter.com/dasani_decoded) မှဆွဲဆောင်ထားသည်
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## [သင်ခန်းစာမတိုင်မီ စစ်တမ်း](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 ကို အသုံးပြု၍ Machine Learning Model တည်ဆောက်ရန် လိုအပ်သော tools များကို ပြင်ဆင်ပြီးနောက်၊ သင်၏ဒေတာကို မေးခွန်းထုတ်ရန် အဆင်သင့်ဖြစ်ပါပြီ။ ML ဖြေရှင်းချက်များကို အသုံးပြုပြီး ဒေတာနှင့်အလုပ်လုပ်သည့်အခါ၊ သင့်ဒေတာ၏ အခွင့်အလမ်းများကို အကောင်းဆုံးအသုံးချနိုင်ရန် မေးခွန်းကို မှန်ကန်စွာမေးနိုင်ဖို့ အရေးကြီးပါတယ်။
Scikit-learn ဖြင့် ဂဏန်းသင်ယူမှုပုံစံ တည်ဆောက်ခြင်းလုပ်ငန်းစဉ်ကို စတင်ရန် လိုအပ်သော ကိရိယာများပေးပြီးဖြစ်သည့်အတွက် သင်၏ဒေတာကို မေးခွန်းမေးပြီးစတင်ကာ အကောင်အထည်ဖော်နိုင်ပါပြီ။ ဒေတာနှင့် အလုပ်လုပ်ရာတွင် ML ဖြေရှင်းနည်းများကို အသုံးပြုချိန်တွင် သင်၏datasets ၏ ထူးခြားချက်များကိုမှန်ကန်စွာဖော်ထုတ်ရန် တိကျသွားသောမေးခွန်းမေးခြင်း အရေးကြီးသည်။
ဒီသင်ခန်းစာမှာ သင်လေ့လာရမည့်အရာများမှာ:
ဤသင်ခန်းစာတွင် သင်လေ့လာမည့်အချက်များမှာ-
- Model တည်ဆောက်ရန်အတွက် ဒေတာကို ပြင်ဆင်နည်း။
- Matplotlib ကို အသုံးပြု၍ ဒေတာကို ရှင်းလင်းဖော်ပြနည်း။
- မော်ဒယ် တည်ဆောက်ရန် သင်၏ဒေတာကို ပြင်ဆင်သမျှ။
- Matplotlib ကို ဒေတာမှတ်ပုံတင်ပြသရန် အသုံးပြုခြင်း။
- Seaborn ကို ပိုမိုစိတ်ဝင်စားဖွယ်ရာ ဒေတာမှတ်ပုံတင်ပြသမှုအတွက် အသုံးပြုခြင်း။
## သင့်ဒေတာကို မှန်ကန်စွာမေးခွန်းထုတ်ခြင်း
## သင်၏ဒေတာအတွက် မွန်မြတ်သည့်မေးခွန်းမေးခြင်း
သင်လိုအပ်သော အဖြေကို သတ်မှတ်သည့် မေးခွန်းသည် သင်အသုံးပြုမည့် ML algorithm အမျိုးအစားကို ဆုံးဖြတ်ပေးပါမည်။ သင်ရရှိမည့် အဖြေ၏ အရည်အသွေးသည် သင့်ဒေတာ၏ သဘာဝပေါ်မူတည်ပါမည်။
သင့်ရဲ့ မေးခွန်းသည် မည်မျှသာ ML အယ်လဂေါရစ်သမ်သုံးရမည်ကို သတ်မှတ်ပေးမည်ဖြစ်သည်။ ပြန်လည်ရရှိမည့်ဖြေကြားချက်၏ အရည်အသွေးသည် သင့်ဒေတာ၏ ထုတ်လွှင့်မှုအပေါ် မူတည်သည်။
ဒီသင်ခန်းစာအတွက် [ဒေတာ](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) ကို ကြည့်ပါ။ VS Code တွင် .csv ဖိုင်ကိုဖွင့်နိုင်သည်။ ဗဟိုပြချက်တစ်ခုအနေနှင့် ရှင်းလင်းချက်များ၊ စာသားနှင့်ဂဏန်းဒေတာများ ဖြစ်ပေါ်နေကြောင်းမြင်ရမည်။ "Package" ဟုခေါ်သော မြင်ကွင်းထူးခြားသော ကော်လံတစ်ခု ရှိပြီး 'sacks', 'bins' နှင့် အခြားအဖြစ်များပေါင်းစပ်သည်။ ဒေတာသည် တကယ်လို့ စည်းမျဉ်းမရှိသော အခြေအနေတစ်ခုဖြစ်သည်။
[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset")
> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာအတွက် ဒေတာကို ပြင်ဆင်န်းကို ကြည့်ပါ။
> 🎥 ဤရုပ်ပုံကို နှိပ်ပြီး ဤသင်ခန်းစာအတွက် ဒေတာပြင်ဆင်ရေးလုပ်ငန်းစဉ်ကို ရှင်းလင်းတတ်၏ဗီဒီယိုတိုကိုကြည့်ပါ။
တကယ်တော့ ML model တစ်ခုကို တည်ဆောက်ရန် အဆင်သင့်ဖြစ်နေသော ဒေတာကို ရရှိခြင်းသည် ရှားပါးသောအရာဖြစ်သည်။ ဒီသင်ခန်းစာမှာ သင် Python libraries များကို အသုံးပြု၍ raw dataset ကို ပြင်ဆင်နည်းကို လေ့လာပါမည်။ ဒါ့အပြင် ဒေတာကို ရှင်းလင်းဖော်ပြရန် နည်းလမ်းများကိုလည်း လေ့လာပါမည်။
တကယ်လို့၊ အသုံးပြုနိုင်သော ML မော်ဒယ် တစ်ခုဖန်တီးရန် အထူပြင်ဆင်ထားပြီး ဒေတာကို ရရှိရခြင်း မရှိခြင်းသည် ရှားပါးသည်။ ဤသင်ခန်းစာတွင် Python စံထားသော ပိုင်ရာစာကြည့်တိုက်များ အသုံးပြု၍ သဘာဝဒေတာများကို ပြင်ဆင်ပုံကို သင်တတ်မြောက်ပါမည်။ ပိုပြီးမန်မာပြ ဒေတာမှတ်ပုံတင်ခြင်းနည်းလမ်းများကိုလည်း သင်ယူပါမည်။
## Case study: 'ဖရုံသီးဈေးကွက်'
## အမှုလေ့လာမှု - 'the pumpkin market'
ဒီ folder မှာ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ဆိုတဲ့ .csv ဖိုင်ကို `data` folder ရဲ့ root မှာ တွေ့နိုင်ပါတယ်။ ဒီဖိုင်မှာ မြို့အလိုက် အုပ်စုဖွဲ့ထားတဲ့ ဖရုံသီးဈေးကွက်အကြောင်း 1757 လိုင်းရှိပါတယ်။ ဒါဟာ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) မှ ထုတ်ယူထားတဲ့ raw data ဖြစ်ပြီး အမေရိကန် စိုက်ပျိုးရေးဌာနက ဖြန့်ဝေထားတာဖြစ်ပါတယ်။
ဤဖိုင်ကို ရှိသော `data` ဖိုလ်ဒါ၏ အမြစ်တွင် [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) နာမည်ရှိ .csv ဖိုင်ရှိပြီး မြို့အလိုက် စုပေါင်းထားသော pumpkin စျေးကွက်ဆိုင်ရာ ဒေတာ 1757 အကြောင်း ပါဝင်သည်။ ဤတွေ့ရှိချက်သည် US Department of Agriculture မှ အထူးစိုက်ပျိုးရေးဈေးကွက် စံအစီရင်ခံစာများမှ မူတည်၍ ရယူထားသည်။
### ဒေတာကို ပြင်ဆင်ခြင်း
### ဒေတာ ပြင်ဆင်ခြင်း
ဒီဒေတာဟာ public domain မှာ ရှိပါတယ်။ ဒေတာကို USDA website မှာ မြို့အလိုက် ဖိုင်များအနေနဲ့ ဒေါင်းလုဒ်လုပ်နိုင်ပါတယ်။ အလွဲလွဲအချော်ချော် ဖိုင်များကို ရှောင်ရှားရန် မြို့အလိုက် ဒေတာအားလုံးကို spreadsheet တစ်ခုအဖြစ် ပေါင်းစည်းထားပြီး ဒေတာကို အနည်းငယ် ပြင်ဆင်ထားပါတယ်။ အခုတော့ ဒေတာကို နီးကပ်စွာ ကြည့်လိုက်ရအောင်။
ဤဒေတာသည် ပြည်သူ့ပိုင်ဆိုင်မှု ဖြစ်သည်။ USDA ဝက်ဘ်ဆိုက်မှမြို့တိုင်းအလိုက် ဖိုင်များစွာကို မျှဝေသည်။ ဖိုင်များ အများကြီး မဖြန့်ချိရန် အားလုံးကို တစ်ခုတည်း စာရွက်ထဲတွင် ပေါင်းစပ်ထားပြီး ဒေတာကိုအနည်းငယ် ပြင်ဆင်ထားသည်။ အောက်တွင် ဒေတာကို နက်ရှိုင်းစွာကြည့်ခြင်းပြုလုပ်မည်။
### ဖရုံသီးဒေတာ - စောစောကနေ သုံးသပ်ချက်များ
### pumpkin data - ပထမအကြမ်းဖျင်းအမြင်
ဒီဒေတာအကြောင်း သင်ဘာတွေ သတိထားမိပါသလဲ? စာသား၊ ကိန်းဂဏန်း၊ အလွတ်နေရာများနှင့် ထူးဆန်းတဲ့ အချက်အလက်များ ရောနှောနေမှုကို သင်ကြည့်ပြီးသားဖြစ်ပါတယ်။
ဤဒေတာကို ကြည့်ပါက၊ စာသား၊နံပါတ်၊အစွန်းအထင်း၊ ထူးခြားတန်ဖိုးများ စပ်လျဥ်သည့်အချက်များ ရှိသည်ကို သတိထားမိသည်။
Regression နည်းလမ်းကို အသုံးပြု၍ ဒီဒေတာကို ဘယ်လိုမေးခွန်းထုတ်နိုင်မလဲ? "တစ်လအတွင်းရောင်းချသော ဖရုံသီးတစ်လုံး၏ဈေးနှုန်းကို ခန့်မှန်းပါ" ဆိုတဲ့ မေးခွန်းကို မေးနိုင်ပါတယ်။ ဒေတာကို ပြန်ကြည့်လိုက်ရင် ဒီ task အတွက် လိုအပ်သော data structure ကို ဖန်တီးရန် အချို့ပြောင်းလဲမှုများ လိုအပ်ပါသည်။
ကိန်းဂဏန်းပြားနည်းဖြင့် "တစ်လအတွင်း ရောင်းမည့် pumpkin ၏ ဈေးနှုန်း ခန့်မှန်းခြင်း" ထုတ်ထားသောမေးခွန်းတစ်ခု မေးလို့ရမလား? ဒေတာကို ထပ်မံကြည့်မည်ဆိုပါက ဤတာဝန်လုပ်ရန် မလိုက်ဖက်သည့် ဒေတာဖွဲ့စည်းမှု တချို့ ပြင်ဆင်ရန် လိုအပ်သည်။
## လေ့ကျင့်ခန်း - pumpkin data ကို စိစစ်ပါ
## လေ့ကျင့်ခန်း - ဖရုံသီးဒေတာကို သုံးသပ်ခြင်း
ဒေတာကို ပုံသဏ္ဍာန်ဖွဲ့ရာတွင် အထောက်အကူပြုသည့် [Pandas](https://pandas.pydata.org/) ကို အသုံးပြုကာ ဒီ pumpkin data ကို စိစစ်ပြီး ပြင်ဆင်ပါ။
[Pandas](https://pandas.pydata.org/) ကို အသုံးပြုပါ။ (Pandas ဆိုတာ `Python Data Analysis` ကို ရည်ညွှန်းပါတယ်) ဒေတာကို အဆင်ပြေစွာ ပြင်ဆင်ရန် အထူးအသုံးဝင်တဲ့ tool ဖြစ်ပါတယ်။
### ပထမဦးစွာ ရက်စွဲပျောက်ဆုံးမှု ရှာဖွေစစ်ဆေးခြင်း
### ပထမဦးဆုံး၊ နေ့စွဲပျောက်နေမှုကို စစ်ဆေးပါ
ပထမဦးစွာ ရက်စွဲများ ပျောက်သွားမှု ရှိမရှိ စစ်ဆေးရန် လိုအပ်သည်။
သင်အရင်ဆုံး နေ့စွဲပျောက်နေမှုကို စစ်ဆေးရန် လိုအပ်ပါမည်:
1. ရက်စွဲများကို လပိုင်းပုံစံအဖြစ် ပြောင်းရန် (အမေရိကန်ရက်စွဲ[MM/DD/YYYY])ဖြစ်သည်။
2. လပိုင်းကို ကော်လံအသစ်တစ်ခုသို့ ဖြုတ်ယူရန်။
1. နေ့စွဲများကို လအဖြစ် ပြောင်းပါ (ဒီဟာ US dates ဖြစ်တဲ့အတွက် format က `MM/DD/YYYY` ဖြစ်ပါတယ်)။
2. လကို အသစ်သော ကော်လံတစ်ခုထဲမှာ ထုတ်ယူပါ။
Visual Studio Code တွင် _notebook.ipynb_ ဖိုင်ကို ဖွင့်၍ စာရွက်ကို pandas dataframe အသစ်သို့ ထည့်ပါ။
_notebook.ipynb_ ဖိုင်ကို Visual Studio Code မှာ ဖွင့်ပြီး spreadsheet ကို Pandas dataframe အသစ်တစ်ခုထဲ import လုပ်ပါ။
1. `head()` function ကို အသုံးပြု၍ ပထမ ၅ ရွေ့ကို ကြည့်ပါ။
1. `head()` function ကို အသုံးပြု၍ ပထမဆုံးငါးကြောင်းကို ကြည့်ရှုပါ။
```python
import pandas as pd
@ -64,30 +64,30 @@ _notebook.ipynb_ ဖိုင်ကို Visual Studio Code မှာ ဖွင
pumpkins.head()
```
✅ နောက်ဆုံး ၅ ရွေ့ကို ကြည့်ရန် ဘယ် function ကို အသုံးပြုမလဲ?
✅ နောက်ဆုံးငါးကြောင်းကို ကြည့်ရန် မည်သည့် function ကို အသုံးပြုမလဲ?
1. လက်ရှိ dataframe မှာ ပျောက်နေသော ဒေတာရှိမရှိ စစ်ဆေးပါ:
1. လက်ရှိ dataframe တွင် ဒေတာပျောက်ဆုံးမှုရှိမရှိစစ်ဆေးပါ-
```python
pumpkins.isnull().sum()
```
ပျောက်နေသော ဒေတာရှိပါတယ်၊ ဒါပေမယ့် ဒီ task အတွက် အရေးမကြီးလို့ ဖြစ်နိုင်ပါတယ်
ဒေတာပျောက်ဆုံးထားသည်။ သို့သော် အလုပ်မှာ မထိခိုက်နိုင်ပါ
1. သင့် dataframe ကို အလုပ်လုပ်ရန် ပိုမိုလွယ်ကူစေရန် `loc` function ကို အသုံးပြု၍ လိုအပ်သော ကော်လံများကိုသာ ရွေးပါ။ `:` ဆိုတဲ့ expression က "အလုံးစုံသော ရွေ့များ" ကို ရည်ညွှန်းပါတယ်။
1. ရိုးရှင်းစေဖို့သင်၏ dataframe တွင် လိုအပ်သောကော်လံများဖြင့် `loc` function ကို သုံးပြီး ဂဏန်းများ နှင့် ကော်လံများကို ရွေးချယ်ပါ။ ဤနေရာ `.loc[:, ]` သည် "အားလုံးကို" ဆိုလိုသည်။
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
### ဒုတိယ၊ ဖရုံသီး၏ ပျမ်းမျှဈေးနှုန်းကို ဆုံးဖြတ်ပါ
### ဒုတိယ - pumpkin ဈေးနှုန်းပျမ်းမျှတွက်ချက်ခြင်း
ဖရုံသီးတစ်လုံး၏ ပျမ်းမျှဈေးနှုန်းကို ဆုံးဖြတ်ရန် ဘယ်ကော်လံများကို ရွေးမလဲ? အကြံပြုချက် - သင့်အတွက် ၃ ကော်လံလိုအပ်ပါမည်။
တစ်လအတွင်း pumpkin ဈေးနှုန်းပျမ်းမျှကို သိရန် ဘယ်ကော်လံများကို ရွေးမလဲ? အကြံပြုချက် - ကော်လံ ၃ ခုလိုအပ်သည်။
ဖြေရှင်းချက် - `Low Price` နှင့် `High Price` ကော်လံများ၏ ပျမ်းမျှကို ရယူပြီး Price column အသစ်ကို ဖြည့်ပါ၊ နေ့စွဲကော်လံကို လသာသာ ပြောင်းပါ။ အထက်ပါစစ်ဆေးမှုအရ၊ နေ့စွဲများနှင့်ဈေးနှုန်းများအတွက် ပျောက်နေသော ဒေတာမရှိပါ။
ဖြေရှင်းနည်း - `Low Price` နှင့် `High Price` ကော်လံများ၏ ပျမ်းမျှတန်ဖိုးကို Price ကော်လံသစ်တွင် ထည့်သွင်းပြီး Date ကော်လံကို လပိုင်းအဖြစ်သတ်မှတ်ပါ။ ရှေ့ကစစ်ဆေးချက်အရ ရက်စွဲနှင့် ဈေးနှုန်းတို့တွင် ဒေတာပျောက်မှုမရှိပါ။
1. ပျမ်းမျှကိုတွက်ရန် အောက်ပါ code ကို ထည့်ပါ:
1. ပျမ်းမျှတွက်ချက်ရန် အောက်ပါကုဒ်ကို ထည့်ပါ။
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@ -96,37 +96,37 @@ _notebook.ipynb_ ဖိုင်ကို Visual Studio Code မှာ ဖွင
```
`print(month)` ကို အသုံးပြု၍ သင်စစ်ဆေးလိုသော ဒေတာကို print လုပ်နိုင်ပါတယ်။
လိုသမျှဒေတာကို `print(month)` ဖြင့် စစ်ဆေးနိုင်ပါသည်။
2. ပြောင်းလဲထားသော ဒေတာကို Pandas dataframe အသစ်တစ်ခုထဲ copy လုပ်ပါ:
2. ယခု ပြောင်းထားသောဒေတာကို pandas dataframe အသစ်သို့ ကူးယူပါ။
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
သင့် dataframe ကို print လုပ်ပါက သင် regression model အသစ်တစ်ခုတည်ဆောက်ရန် သန့်ရှင်းပြီး tidy ဖြစ်သော dataset ကို တွေ့ပါမည်။
dataframe ကို print ပြုလုပ်သည်မှာ စက်တင် အဆင်ပြေပြီး ပျက်စီးကြောင်းမရှိသော ဒေတာများကို မြင်နိုင်ပါသည်။
### ဒါပေမယ့်! ဒီမှာ ထူးဆန်းတဲ့အရာတစ်ခုရှိပါတယ
### သို့သော် အံ့အားသင့်စရာရှိသည
`Package` ကော်လံကို ကြည့်ပါက ဖရုံသီးများကို အမျိုးမျိုးသော configuration များဖြင့် ရောင်းချထားသည်ကို တွေ့နိုင်ပါတယ်။ တချို့ကို '1 1/9 bushel' အတိုင်းရောင်းပြီး တချို့ကို '1/2 bushel' အတိုင်းရောင်းထားပါတယ်၊ တချို့ကို တစ်လုံးချင်း၊ တချို့ကို ပေါင်ချင်း၊ တချို့ကို အကျယ်အဝန်းအမျိုးမျိုးရှိသော box ใหญ่များဖြင့် ရောင်းထားပါတယ်။
`Package` ကော်လံကို ကြည့်ပါက pumpkins များသည် အမျိုးမျိုးသော ပုံစံများဖြင့် ရောင်းချသည်။ တချို့ '1 1/9 bushel' တိုင်းတာမှုဖြင့်၊ တချို့သည် '1/2 bushel', တစ်ခုချင်းစီနှင့် ပေါင်နှင့်၊ နောက်တစ်ချို့က ဂေဟာပြားများအမျိုးမျိုးဖြင့် ရောင်းချသည်။
> ဖရုံသီးများကို တိကျစွာချိန်ဆမရလွယ်ကူပါ
> ဖရဲသီးများကို တိတိကျကျ ဝန်ချတတ်ခြင်း မလွယ်ကူပါ။
မူရင်းဒေတာကို စူးစမ်းကြည့်ပါက `Unit of Sale` က 'EACH' သို့မဟုတ် 'PER BIN' ဖြစ်သောအခါ `Package` အမျိုးအစားသည် inch, bin, သို့မဟုတ် 'each' ဖြစ်သည်ကို တွေ့နိုင်ပါတယ်။ ဖရုံသီးများကို တိကျစွာချိန်ဆမရလွယ်ကူသောကြောင့် `Package` ကော်လံတွင် 'bushel' စာသားပါသော ဖရုံသီးများကိုသာ ရွေးပါ
အစေခံဒေတာကို မြှောက် မြင်ပါက `Unit of Sale` သည် 'EACH' သို့မဟုတ် 'PER BIN' ဖြစ်သော နေရာများတွင် `Package` ပုံစံအဖြစ် ပေါင် အနည်းငယ်၊ တစ်ဦးချင်း သို့မဟုတ် 'each' ဖြစ်သည်။ ဖရဲသီးတွေကို တိတိကျကျ မလေးချိန်စစ်တာ ဖြစ်သောကြောင့် `Package` ကော်လမ်တွင် 'bushel' ဆိုသော စာကြောင်းပါဝင်သည့် ဖရဲသီးများကိုသာ ရွေးချယ် filter ထားမည်
1. .csv import အစပိုင်းတွင် filter တစ်ခု ထည့်ပါ:
1. ဖိုင်၏ အပေါ်ဆုံးတွင် ထည့်သွင်းမှု filter ကို ထည့်ပါ။
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
ဒေတာကို print လုပ်ပါက သင် bushel ဖြင့် ရောင်းချသော ဖရုံသီး 415 ရွေ့ခန့်သာ ရရှိနေသည်ကို တွေ့နိုင်ပါမည်။
ယခုအခါ ဒေတာကို print ထုတ်မည်ဆိုသည့်အခါ bushel ဖြင့်ရောင်းချသော လူကြီး pumpkin များ ၄၁၅ ကြောင့်သောအတန်းများသာ ပြရန်ကြည့်ရမည်။
### ဒါပေမယ့်! လုပ်စရာတစ်ခုကျန်နေပါတယ
### သို့သော် တစ်ခုခု အနက်တစ်ခု ဆက်လုပ်ရန်ရှိသည
Bushel အရေအတွက်သည် row တစ်ခုချင်းစီအလိုက် ကွဲပြားနေသည်ကို သတိထားမိပါသလား? သင် bushel တစ်ခုအတိုင်းဈေးနှုန်းကို ပြသရန် ဈေးနှုန်းကို normalize လုပ်ရန် လိုအပ်ပါသည်။
bushel အရေအတွက်သည် ကွဲပြားခြားနားသည်။ ဈေးနှုန်းကို bushel တစ်ခုခြင်းဖြင့် ပေါင်းစပ် ပြန်တွက်သားရန် လိုအပ်သည်။
1. new_pumpkins dataframe ဖန်တီးသော block အောက်တွင် အောက်ပါ code ကို ထည့်ပါ:
1. new_pumpkins dataframe ဖန်တီးပြီးနောက် အောက်ပါကုဒ်များထည့်ပါ။
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@ -134,38 +134,38 @@ Bushel အရေအတွက်သည် row တစ်ခုချင်းစ
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) အဆိုအရ bushel ၏ အလေးချိန်သည် ထုတ်ကုန်အမျိုးအစားပေါ်မူတည်ပြီး ကွဲပြားပါသည်။ "ဥပမာအားဖြင့် တမာတီဖရုံသီး bushel တစ်ခုသည် 56 ပေါင်အလေးချိန်ရှိသင့်သည်... အရွက်များနှင့် အပင်များသည် ပိုမိုနေရာယူပြီး အလေးချိန်နည်းပါသည်၊ ထို့ကြောင့် spinach bushel တစ်ခုသည် 20 ပေါင်သာရှိသည်။" ဒါဟာ အတော်ရှုပ်ထွေးပါတယ်! Bushel-to-pound conversion ကို မလုပ်တော့ပါ၊ bushel အတိုင်းဈေးနှုန်းကိုသာ ပြသပါ။ Bushel ၏ သဘာဝကို နားလည်ရန် အရေးကြီးကြောင်းကို ဒီဖရုံသီး bushel များကို လေ့လာခြင်းမှ သက်သေပြနိုင်ပါတယ်။
✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) အစီရင်ခံချက်အရ bushel အလေးချိန်သည် ရွေးချယ်ထားသည့် ထွက်ပေါက်အမျိုးအစားပေါ် မူတည်သည်။ ပမာဏတန်ဖိုးဖြစ်သည်။ "ပုလြီး bushel ပမာဏသည် ၅၆ ပေါင်ခန့်ရှိသည်။ .. အသေအချာစောင့်ကြည့်သော အရွက်ငွေနှင့် ဟင်းသီးဟင်းရွက်များသည် ပိုမိုနေရာကုန်လျက် အလေးချိန်နည်းစွာဖြစ်၍ spinach bushel သည် ၂၀ ပေါင်သာရှိသည်။" ဆက်လက်ရှင်းလင်းမှု များသည်ခက်ခဲသော်လည်း bushel ကို ပေါင်သို့ပြောင်းနှိပ်မထားဘဲ၊ bushel နဲ့ ဈေးတွက်ပါ။ pumpkin bushel များကို လေ့လာခြင်းက သင့်ဒေတာ၏ ယန္တရားနဲ့ သဘာဝကို နက်ရှိုင်းစွာ နားလည်ရန် အရေးကြီးမှုကို ပြသသည်။
အခုတော့ bushel အတိုင်း standardized ဖြစ်သောဈေးနှုန်းကို သုံးသပ်နိုင်ပါပြီ။ ဒေတာကို print လုပ်ပါက သင် standardized ဖြစ်သော ဒေတာကို တွေ့နိုင်ပါမည်။
ယခု ချိန်ဆပေးပုံသည် သူတို့၏ bushel သတ်မှတ်ချက်အခြေခံ၍ တစ်ခုချင်းစီ ဈေးနှုန်းကို သုံးသပ်နိုင်သည်။ ဒေတာကို တစ်ကြိမ်လောက် print ထုတ်ပါက အသားပေးထားသည့် ပုံစံကို မြင်နိုင်ပါသည်။
Half-bushel ဖြင့် ရောင်းချသော ဖရုံသီးများသည် အတော်လေးဈေးကြီးနေသည်ကို သတိထားမိပါသလား? ဘာကြောင့်ဖြစ်နိုင်မလဲ? အကြံပြုချက် - သေးငယ်သော ဖရုံသီးများသည် ကြီးမားသော ဖရုံသီးများထက် ပိုမိုဈေးကြီးပါသည်၊ အကြောင်းကတော့ တစ် bushel အတွင်း သေးငယ်သော ဖရုံသီးများသည် အလုံးအရေအတွက်ပိုများပြီး ကြီးမားသော ဖရုံသီးတစ်လုံး၏ အလွတ်နေရာများကို ယူထားသောကြောင့် ဖြစ်နိုင်ပါသည်။
ထူးခြားသောအချက်မှာ half-bushel ဖြင့်ရောင်းခြင်းသည် အလွန်ကြီးမားသော ဈေးနှုန်းရှိသည်။ အကြောင်းရင်းကို ထောက်လှမ်းကြည့်ပါ။ အကြွင်းမဲ့နေရာရှိသော pie pumpkin တစ်ခုကြောင့် နည်းငယ်များသော စိတ်ကြိုက်မီးဖို pumpkin များသည် bushel တစ်ခုလျှင် အရေအတွက်ပိုမိုများ၍ ဈေးနှုန်းမြင့်တက်ခြင်းဖြစ်သည်။
## Visualization Strategies
## မှတ်ပုံတင်ပြသမှု အကြံပေးနည်းများ
Data Scientist တစ်ဦး၏ အလုပ်တစ်ခုမှာ သူတို့အလုပ်လုပ်နေသော ဒေတာ၏ အရည်အသွေးနှင့် သဘာဝကို ဖော်ပြရန် ဖြစ်သည်။ ဒေတာ၏ အမျိုးမျိုးသော aspect များကို ဖော်ပြသော interesting visualizations, plots, graphs, နှင့် charts များကို ဖန်တီးခြင်းဖြင့် ဒေတာ၏ ဆက်နွယ်မှုများနှင့် ရှာဖွေရန်ခက်ခဲသော အပိုင်းများကို ရှင်းလင်းဖော်ပြနိုင်သည်။
ဒေတာ သိပ္ပံပညာရှင်၏ တာဝန်အချိုးအစားတစ်ခုမှာ အလုပ်လုပ်နေသည့် ဒေတာ၏ အရည်အသွေးနှင့် သဘာဝကို ပြသခြင်းဖြစ်ပြီး၊ ယင်းအတွက် ထူးခြားသောမှတ်ပုံတင်ပြသမှုများ၊ ဇယားများ၊ ဝိုင်းမြင်ကွင်းများ ဖန်တီးသည်။ ယင်းဖြင့် မျှမျှတတမရှာရသော ဆက်နွယ်မှု နှင့် အခွာအဝေးများကို ရုပ်မြင်ပြီး သတိမထားမိရသော တန်ဖိုးများကိုအလွယ်တကူ ဆွဲထုတ်နိုင်သည်။
[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib")
> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာအတွက် ဒေတာကို ရှင်းလင်းဖော်ပြနည်းကို ကြည့်ပါ။
> 🎥 ဤရုပ်ပုံကို နှိပ်ပြီး ဤသင်ခန်းစာအတွက် ဒေတာမှတ်ပုံတင်ပြသမှု ဗီဒီယိုတိုကို ကြည့်ပါ။
Visualizations များသည် ML technique အတွက် သင့်လျော်သောနည်းလမ်းကို ဆုံးဖြတ်ရန်လည်း အထောက်အကူပြုနိုင်သည်။ Scatterplot တစ်ခုသည် လိုင်းတစ်ခုလိုမျိုးဖြစ်နေသည်ကို တွေ့ပါက ဒေတာသည် linear regression exercise အတွက် သင့်လျော်သည်ကို ပြသနိုင်သည်။
မှတ်ပုံတင်ပြသမှုများသည် ဒေတာအတွက် ကိုက်ညီသော မက်ရှင်လေ့လာမှုနည်းလမ်းရွေးချယ်ရာ၌ အကူအညီဖြစ်စေနိုင်သည်။ ဥပမာ - scatterplot တစ်ခုသည် အတန်းလိုက်လိုက်ဟန်ချက်ကို သိလိုသော ရာဇဝင်သို့လိုက်လျောညီထွေရှိသည်ဆိုပါက linear regression လေ့လာမှုအတွက် ကောင်းမွန်သော ဒေတာဖြစ်ကြောင်း ပြသသည်။
Jupyter notebooks တွင် အလုပ်လုပ်ရန် သင့်လျော်သော data visualization library တစ်ခုမှာ [Matplotlib](https://matplotlib.org/) ဖြစ်သည် (သင်မကြာသေးမီက သင်ခန်းစာတွင်လည်း Matplotlib ကို တွေ့ခဲ့ပါသည်)။
Jupyter notebook များတွင် အသုံးပြုရန်သင့်တော်သော ဒေတာမှတ်ပုံတင်စာကြည့်တိုက်သည် [Matplotlib](https://matplotlib.org/) ဖြစ်သည် (ခန့်မှန်းချိန်တွင် မကြာခဏ တွေ့ရှိရမည့်အခြေအနေ)။
> [ဒီ tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) တွင် data visualization ကို ပိုမိုလေ့လာပါ
> စိတ်ဝင်စားသူများအတွက် [ဤသင်ခန်းစာများ](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) တွင် ဒေတာမှတ်ပုံတင်ခြင်းနည်းပညာကို ပိုမိုတွေ့မြင်နိုင်သည်
## လေ့ကျင့်ခန်း - Matplotlib ကို စမ်းသပ်ခြင်း
## လေ့ကျင့်ခန်း - Matplotlib ဖြင့် လေ့လာခြင်း
သင်ဖန်တီးထားသော dataframe အသစ်ကို ပြသရန် အခြေခံ plot များကို ဖန်တီးကြည့်ပါ။ အခြေခံ line plot တစ်ခုက ဘာကို ပြသမလဲ?
သင်สร้างထားသော များထဲတွင် ပုံစံပြုလုပ်မှု အခြေခံပုံများကို ဖန်တီးကြည့်ပါ။ လိုင်းပုံရိပ်အခြေခံထား၍ ဘာကို ပြသမည်လဲ?
1. ဖိုင်၏ အပေါ်ပိုင်း Pandas import အောက်တွင် Matplotlib ကို import လုပ်ပါ:
1. pandas import ရှိသည့်နောက် ကျောဆုံးတွင် Matplotlib ကို import ပြုလုပ်ပါ။
```python
import matplotlib.pyplot as plt
```
1. notebook အားလုံးကို ပြန်လည် run လုပ်ပါ။
1. notebook အောက်ဆုံးတွင် box အဖြစ် ဒေတာကို plot လုပ်ရန် cell တစ်ခု ထည့်ပါ:
1. notebook အားလုံးကို ပြန်လည် အလုပ်လုပ်စေပါ။
1. notebook အောက်ဆုံးတွင် data ကို box plot အဖြစ် ပုံဖော်ရန် စာသားထည့်ပါ။
```python
price = new_pumpkins.Price
@ -174,36 +174,121 @@ Jupyter notebooks တွင် အလုပ်လုပ်ရန် သင့်
plt.show()
```
![Scatterplot showing price to month relationship](../../../../2-Regression/2-Data/images/scatterplot.png)
![ဈေးနှုန်းနှင့် လပိုင်းဆက်နွယ်မှုကို ပြသသည့် scatterplot](../../../../translated_images/my/scatterplot.b6868f44cbd2051c.webp)
ဒီ plot သုံးစွဲရန် အသုံးဝင်ပါသလား? ဘာအကြောင်းကြောင့် အံ့ဩမိပါသလဲ?
ဤပုံရိပ်သည် အသုံးဝင်ပါသလား? ဘာသာတခုခု သင့်အား အံ့အားသင့်စေပါသလား?
ဒါဟာ အသုံးဝင်တဲ့ plot မဟုတ်ပါဘူး၊ ဒါက သင့်ဒေတာကို တစ်လအတွင်း point များအဖြစ် ပြသထားတာသာ ဖြစ်ပါတယ်။
ဤသည်အတော် မအသုံးဝင်သေးပါဘူး၊ လပိုင်း အတွင်း မျှဝေထားသောတစ်ချက်စာနယ်ဇင်းအဖြစ် ဒေတာကိုပဲပြသည်။
### အသုံးဝင်အောင်လုပ်ပါ
### အသုံးဝင်စေပါ
Charts များကို အသုံးဝင်အောင်လုပ်ရန် ဒေတာကို အုပ်စုဖွဲ့ရန် လိုအပ်ပါသည်။ ဒေတာကို အုပ်စုဖွဲ့ပြီး y axis တွင် လများကို ပြသပြီး ဒေတာသည် distribution ကို ပြသသော plot တစ်ခုကို ဖန်တီးကြည့်ပါ
အသုံးဝင်သော ဇယားဖန်တီးရန် ဒေတာကို အဖွဲ့ခွဲရန်လိုအပ်သည်။ y axis သည် လပိုင်းများကို ပြပါက ဒေတာ သိမျှဝေမှုရိုက်ချက်ကို ပြနိုင်ပါသည်
1. Grouped bar chart ဖန်တီးရန် cell တစ်ခု ထည့်ပါ:
1. အဖွဲ့ခွဲထားသော ဘားဇယားရေးရန် စာသားထည့်ပါ။
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
![Bar chart showing price to month relationship](../../../../2-Regression/2-Data/images/barchart.png)
![ဈေးနှုန်းနှင့် လပိုင်းဆက်နွယ်မှုကို ပြသသည့် ဘားဇယား](../../../../translated_images/my/barchart.a833ea9194346d76.webp)
ဤသည်ဟာ ပိုအသုံးဝင်သော ဒေတာမှတ်ပုံတင်ပြသမှု တစ်ခုဖြစ်သည်။ pumpkin ဈေးနှုန်းအမြင့်ဆုံးသည် စက်တင်ဘာနှင့် အောက်တိုဘာတွင် ဖြစ်သည်ဟု ဆိုလိုသည်။ သင့်စိတ်ကူးနှင့် ကိုက်ညီပါသလား? ဘာကြောင့် ညီမညီပါသလဲ?
## လေ့ကျင့်ခန်း - Seaborn ဖြင့် လေ့လာခြင်း
Matplotlib သည် များစွာကိုင်တွယ်နိုင်သော်လည်း တောက်ပသောဇယားဖန်တီးရန် ကုဒ်များစွာလိုအပ်ပါသည်။ [Seaborn](https://seaborn.pydata.org/) သည် Matplotlib ပေါ်တွင် တည်ဆောက်ပြီး စာရင်းများနှင့် အချက်အလက်များကို စတိုင်လ် ဆွဲရန်၊ ဖန်တီးရန် လွယ်ကူစေသည်။ Seaborn သည် Matplotlib အ объက်များ ပြန်လည်ထုတ်ပေးသဖြင့် Matplotlib အသုံးပြုနည်းများကို ဆက်လက်အသုံးပြုနိုင်သည်။
> Seaborn ဆော့ဖ်ဝဲ မရှိသေးရင် `pip install seaborn` ဖြင့် 설치ပါ။
1. စာရွက်ပေါ်တွင် အချိတ်ဆက်များအောက် နေရာတွင် Seaborn ကို `sns` အဖြစ် import ပြုလုပ်ပါ။
```python
import seaborn as sns
```
### ဆက်နွယ်မှုများ ပြသရန် scatter plot များ
မော်ဒယ်တည်ဆောက်မှု မတိုင်မီ ဒေတာစူးစမ်းရာ၌ လက္ခဏာများအကြား _ဆက်နွယ်မှုများ_ ရှာဖွေရန်အရေးကြီးသည်။ [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) သည် ထိပ်တန်းကိရိယာတစ်ခုဖြစ်သည်။ ပြင်ပတွင် အချက်များသည် တန်းလိုက်လိုက်လံများခဲ့လျှင်, လက္ခဏာနှစ်ခုမှာဆက်နွယ်မှုရှိနိုင်၍ linear regression မော်ဒယ်လုပ်ငန်းအတွက် အခြေခံဖြစ်နိုင်ပါသည်။
1. ယခင်စက်တင်ငွေမှတ်ပုံတင်အား Seaborn ၏ [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) ဖြင့် ပြန်ဖန်တီးပါ - dataframe ကော်လံများကို တိုက်ရိုက်အသုံးပြုသည်။
```python
sns.relplot(x="Price", y="Month", data=new_pumpkins)
```
![Seaborn scatterplot showing price to month relationship](../../../../translated_images/my/relplot.a03837d8f0329cec.webp)
ကော်လံအမည်များ နှင့် dataframe ကို ဖြတ်သွားပြီး Seaborn သည် axis အမည်များကို သင့်အတွက် ဖြည့်စည်းပေးသည်။
2. `kind="line"` ကို ပေးလိုက်၍ လိုင်းပုံဖော်လည်းလုပ်နိုင်သည်။ Seaborn သည် လိုင်းပေါ်တွင် ယုံကြည်မှုအပိုင်းအခြားများကို ခြုံဆိုင်ခြားပေးသည်။
```python
sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
```
![Seaborn line plot showing price to month relationship](../../../../translated_images/my/lineplot.f9034ba47b1e30ee.webp)
ဤဒေတာသည် ဆူညံမှုများပါဝင်သဖြင့် လိုင်းပုံရိပ်သည် ထိပ်တန်းရှင်းလင်းမှုမရှိသဘောဖြစ်သည် - သို့သော် Seaborn တွင် ဇယားအမျိုးအစား ပြောင်းလဲရန် အလွန်လွယ်ကူသည်ကို ပြသသည်။
### အကြောင်းအမျိုးမျိုးကို ပြသရန် Bar chart များ
ဒါဟာ ပိုမိုအသုံးဝင်သော data visualization ဖြစ်ပါတယ်! ဖရုံသီးများ၏ အမြင့်ဆုံးဈေးနှုန်းသည် စက်တင်ဘာနှင့် အောက်တိုဘာတွင် ဖြစ်သည်ကို ပြသနေသည်။ ဒါဟာ သင့်မျှော်လင့်ချက်နှင့် ကိုက်ညီပါသလား? ဘာကြောင့်/ဘာကြောင့်မဟုတ်ပါလဲ?
မကြာသေးမီက မင်းဟာလက်ဆောင်အဖြစ် ဒေတာတွေကို စုပုံပြီး Matplotlib နဲ့ ဘားဇယားချတ် ဖြတ်ချက်တခု ပြုလုပ်ခဲ့တယ်။ Seaborn ရဲ့ [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (categorical plot) က စုပေါင်းခြင်းနဲ့ စုပေါင်းမှုကို မင်းအတွက် လုပ်ပေးနိုင်ပါတယ်။ ပုံမှန်အားဖြင့် `kind="bar"` က အမျိုးအစားတိုင်းရဲ့ ပျမ်းမျှတန်ဖိုးကို ပြသပြီး ယုံကြည်စိတ်ချနိုင်မှု အစိတ်အပိုင်းကို အနက်ရောင်လိုင်းနဲ့ပြသော့ပါတယ်။
1. လတိုင်း ပျမ်းမျှစျေးနှုန်းအတွက် ဘားချတ် တစ်ခု ဖန်တီးပါ။
```python
sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
```
![လတိုင်း စျေးနှုန်း ဖြန့်ဖြူးမှုကို ပြသသော Seaborn ဘားချတ်](../../../../translated_images/my/catplot.e73fc35fdf96242b.webp)
ဒါက Matplotlib နဲ့ တွေ့ရသလို အတည်ပြုပြထားတာပါ — စျေးနှုန်းတွေ က စက်တင်ဘာနဲ့ အောက်တိုဘာ လအတွင်း ပိုမိုမြင့်တက်တယ် — ဒါပေမဲ့ Seaborn ကလည်း လတိုင်းအတွင်း စျေးနှုန်း _ရောနှောမှု_ ရှိတာကို မြင်သာစေပါတယ်။
### အပူမြေပုံများဖြင့် သက်ဆိုင်မှုများကို ပြသောကြောင့်
Scatter plot တွေက တစ်ခါ သုံးသော အနည်းဆုံး ကွဲပြားမှုနှစ်ခုကို နှိုင်းယှဉ်သည်။ အရေအတွက်စာရင်း အနည်းများရှိတဲ့အခါ [heatmap](https://en.wikipedia.org/wiki/Heat_map) က လုံး၀ ကော်လံအတွဲတိုင်းရဲ့ ဆက်စပ်မှုခွန်အားကို တစ်ပြိုင်နက်တည်း တွေ့မြင်ခွင့်ပြုသည်။ ဒါဟာ မော်ဒယ်ထဲမှာ ဘာများထည့်မလဲ သတ်မှတ်တဲ့အရင်က ဆက်စပ်မှုများကိုရှာဖွေရန် နည်းလမ်း တစ်ခုဖြစ်ပြီး (ပြီးတော့ classification ရဲ့ confusion matrix များကို ပြသရာမှာကလည်း ဒီလို chart က အလားတူသုံးပါတယ်)။
1. Pandas နဲ့ correlation matrix တည်ဆောက်ပြီး Seaborn ရဲ့ [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) နဲ့ ဆွဲပါ။ `annot=True` ရွေးချယ်မှုက ဆက်စပ်မှုတန်ဖိုးတွေကို တစ်စက်စက်ပေါ်မှာ ပုံနှိပ်ပေးပါသည်။
```python
correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
sns.heatmap(correlations, annot=True, cmap="coolwarm")
```
![နံပါတ်ကော်လံများအကြား သက်ဆိုင်မှုများကို ပြသသော Seaborn အပူမြေပုံ](../../../../translated_images/my/heatmap.bd98dce43b404c57.webp)
`1` (သို့မဟုတ် `-1`) နားကပ်သောတန်ဖိုးများက ကော်လံများသည် အပြင်းအထန် _တန်းလိုက်_ ဆက်စပ်မှုရှိကြောင်း ဆိုလိုသည်။ `Low Price` နဲ့ `High Price` တို့သည် အလွန်နီးစပ် ပြေသောဆက်စပ်မှုရှိသည်ကို သတိပေးပါ။ `Month` ကတော့ စျေးနှုန်းနှင့် တစ်ဖက်ဖက်မှ တန်းလိုက်ဆက်စပ်မှု သာ့နည်းနည်းရှိနေသည် — ဘားချတ်ထက်ဘယ်လိုက စက်တင်ဘာနဲ့ အောက်တိုဘာ လအတွင်း အရောင်ပြတ်သားတဲ့ ရာသီဦးတန်းရှိစေသည်ကို ဖော်ပြခဲ့သည်။ ဒါက သင်ခန်းစာတစ်ခု ဖြစ်ပါတယ် - correlation coefficient က _တိုက်ရိုက် စာကြောင်း_ ဆက်စပ်မှုများကို တိုင်းတာသောကြောင့် ရာသီဥတု သို့မဟုတ် အခြားအမျိုးအစား မဟုတ်သော ရွေ့လျားမှုများအား မတွေ့နိုင်တာပါ။ ✅ ဘားချတ်စာရင်းနဲ့အတူ အပူမြေပုံ တို့ကို ကြည့်သည့်အခါ ဘယ်တော့မှ ဘယ်ကော်လံတွေကို အသုံးပြုမလဲ ဆုံးဖြတ်ဖို့ ဘာကြောင့် အသုံးဝင်သလဲ?
### Matplotlib နဲ့ Seaborn?
နှစ်ခုလုံးကို သိထားဖို့ တန်ဖိုးရှိပါတယ်။
- **Matplotlib** က ချတ်တစ်ခု၏ အစိတ်အပိုင်း အားလုံးကို သေချာ ထိန်းချုပ်နိုင်စွမ်း ရှိပြီး အခြား Python ပုံဆွဲစာကြည့်တိုက်များအတွက် အခြေခံဖြစ်ပါသည်။
- **Seaborn** က မြင့်မားသောအဆင့် လုပ်ဆောင်မှုများနဲ့ သတင်းအချက်အလက် ရေးဆွဲချက်များအတွက် ဆွဲဆောင်မှုရှိတဲ့ ပုံသဏ္ဍာန်များကို ပေးပြီး ဒေတာဖရိမ်များနဲ့ တိုက်ရိုက် ဝင်ရောက်လေ့လာနိုင်သောကြောင့် အမြန်ရွေးချယ်မှုအတွက် အသုံးဝင်သည်။
ပုံမှန်လုပ်ငန်းစဉ်မှာ လျင်မြန်စွာ ဒေတာလေ့လာဖို့ Seaborn ကို အသုံးပြုပြီး အကြောင်းအရာ အသေးစိတ်ပြင်ဆင်ဖို့ Matplotlib ကို သုံးပါတယ်။
---
## 🚀Challenge
## 🚀စိန်ခေါ်မှု
Matplotlib နဲ့ Seaborn မှ ပေးသည့် မတူညီသော ဗီဇွယ်ဖိတ်ရှင်းအမျိုးအစားများကို စူးစမ်းပါ။ regression ပြဿနာများအတွက် ဘယ်အမျိုးအစားတွေ အကောင်းဆုံးလဲ?
## [စာသင်ခန်း ကြိုတင် စစ်ဆေးခြင်း](https://ff-quizzes.netlify.app/en/ml/)
## ပြန်လည် သုံးသပ်ခြင်း & ကိုယ်တိုင်လေ့လာခြင်း
ဒေတာဗီဇွယ်ဖိတ်ရှင်း များစွာကို ကြည့်ပြီး စာရင်းပြုလုပ်ပါ။ အသုံးဝင်တဲ့ စာကြည့်တိုက်အမျိုးအစားများနဲ့ မြင်သာဆုံးအလုပ်အမူများကို မှတ်သားပါ၊ ဥပမာ 2D ဗီဇွယ်ဖိတ်ရှင်း နှင့် 3D ဗီဇွယ်ဖိတ်ရှင်းအတွက် ဘယ်လိုမျိုးများကို တွေ့ရှိသလဲ?
Matplotlib မှ ပေးသော visualization အမျိုးအစားများကို စူးစမ်းပါ။ Regression problems အတွက် သင့်လျော်သော အမျိုးအစားများက ဘာတွေလဲ?
## သတ်မှတ်ချက်
## [Post-lecture quiz](https://ff-quizzes.netlify
[ဗီဇွယ်ဖိတ်ရှင်း စူးစမ်းခြင်း](assignment.md)
---
**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ဆိုမှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူကူးဘာသာပြန်ဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ပြောကြားချက်**
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"## ဖရုံကင်များအတွက် လိုင်းနာ နှုတ်ဆက်ရေး - သင်ခန်းစာ ၂\n"
]
},
{
"cell_type": "code",
@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Seaborn ဖြင့် မြင်ကွင်းပြခြင်း\n",
"\n",
"[Seaborn](https://seaborn.pydata.org/) သည် Matplotlib အပေါ်ယံတွင် တည်ဆောက်ထားပြီး dataframes နှင့် တိုက်ရိုက် ဆောင်ရွက်နိုင်သောကြောင့် အလွန်နည်းနည်းသော ကုဒ်ဖြင့် ဆွဲဆောင်မှုရှိသော စာရင်းအင်းဆိုင်ရာ ကွက်တိများကို မျက်နှာပြင်ပေါ် ပုံဖော်ပေးနိုင်သည်။\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ဆက်စပ်မှုများကို ပြသရန် စက်တာပလော့များ \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ဖြန့်ဖြူးမှုများပြသရန် ဘားဇယားများ \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
"source": [
"sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**ဝက်ဘ်ဆိုက်မှတ်ချက်**: \nဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်ရန် လိုအပ်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူကောင်းမွန်သော ပရော်ဖက်ရှင်နယ်ဘာသာပြန်ဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပါယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။\n"
"### ဆက်စပ်မှုများကို ပြသရန် အပူမြေပုံများ\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
"sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ပြောကြားချက်**\nဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
"orig_nbformat": 2,
"coopTranslator": {
"original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
"translation_date": "2025-09-06T11:53:15+00:00",
"source_file": "2-Regression/2-Data/solution/notebook.ipynb",
"language_code": "my"
}
"orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2

@ -1,141 +1,210 @@
# ဟိုတယ်ပြန်လည်သုံးသပ်မှုများနှင့် စိတ်ခံစားမှုခွဲခြမ်းစိတ်ဖြာမှု - ဒေတာကို အလုပ်လုပ်စေခြင်း
# ဟိုတယ် သုံးသပ်ချက်များဖြင့် စိတ်ခံစားချက် ခွဲခြမ်းစိတ်ဖြာခြင်း - ဒေတာကို ပြုပြင်ခြင်း
ဤအပိုင်းတွင် သင်သည် ယခင်သင်ခန်းစာများတွင် သင်ယူခဲ့သော နည်းလမ်းများကို အသုံးပြု၍ ဒေတာအစုအဝေးကြီးတစ်ခုကို စူးစမ်းလေ့လာမှု ဒေတာခွဲခြမ်းစိတ်ဖြာမှု (EDA) ပြုလုပ်မည်ဖြစ်သည်။ အမျိုးမျိုးသော ကော်လံများ၏ အသုံးဝင်မှုကို နားလည်ပြီးနောက် သင်သည် အောက်ပါအရာများကို သင်ယူမည်ဖြစ်သည်-
ဤအပိုင်းတွင် သင်သည် ယခင်သင်ခန်းစာများတွင် သင်ယူခဲ့သည့် နည်းပညာများကို အသုံးပြု၍ ကြီးမားသော ဒေတာစုစည်းမှုကို လေ့လာသုံးသပ်မည်ဖြစ်သည်။ ကော်လံအမျိုးမျိုး၏ အသုံးဝင်မှုကို သေချာစွာ နားလည်သည့်အခါ သင်သည် အောက်ဖော်ပြပါအချက်များကို သင်ယူမည်ဖြစ်သည်။
- မလိုအပ်သော ကော်လံများကို ဖယ်ရှားန
- ရှိပြီးသား ကော်လံများအပေါ် အခြေခံပြီး ဒေတာအသစ်များကို တွက်ချက်နည်း
- နောက်ဆုံး စိန်ခေါ်မှုတွင် အသုံးပြုရန်အတွက် ရလဒ်အဖြစ်ရသော ဒေတာအစုအဝေးကို သိမ်းဆည်းနည်း
- မလိုအပ်သော ကော်လံများကို မည်သို့ ဖယ်ရှားန်
- ရှိပြီးသား ကော်လံများအပေါ် မူတည်၍ အချက်အလက်အသစ်များကို မည်သို့တွက်ချက်ရန်
- နောက်ဆုံး စိန်ခေါ်မှုအတွက် အသုံးပြုနိုင်ရန် ရလဒ်အဖြစ်ကာလတစ်ခုကို မည်သို့ သိမ်းဆည်းရန်
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## [အကြိုသင်ခန်းစာ စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/)
### အကျဉ်းချုပ်
### နိဒါန်း
ယခုအချိန်ထိ သင်သည် စာသားဒေတာသည် ကိန်းဂဏန်းဒေတာများနှင့် မတူကြောင်း သင်ယူခဲ့ပြီဖြစ်သည်။ လူသားများရေးသားထားသည့် သို့မဟုတ် ပြောဆိုထားသည့် စာသားများကို ပုံစံများနှင့် မကြာခဏဖြစ်သော စကားလုံးများ၊ စိတ်ခံစားမှုများနှင့် အဓိပ္ပါယ်များကို ရှာဖွေခွဲခြမ်းနိုင်သည်။ ဤသင်ခန်းစာတွင် သင်သည် အမှန်တကယ်သော ဒေတာအစုအဝေးနှင့် အမှန်တကယ်သော စိန်ခေါ်မှုတစ်ခုကို ရင်ဆိုင်မည်ဖြစ်သည် - **[515K Hotel Reviews Data in Europe](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** (ဤဒေတာသည် [CC0: Public Domain license](https://creativecommons.org/publicdomain/zero/1.0/) ဖြင့် ထုတ်ဝေထားသည်)။ ဒေတာကို Booking.com မှ ပြည်သူ့ရင်းမြစ်များမှ စုဆောင်းထားပြီး ဒေတာဖန်တီးသူမှာ Jiashen Liu ဖြစ်သည်။
ယခုအထိ သင်သည် စာသား ဒေတာသည် ကိန်းဂဏန်း ဒေတာအမျိုးအစားများနှင့် မတူကြောင်း သင်ခဲ့ပါပြီ။ မည်သည့် စာသားကို လူသားရေးထား သို့မဟုတ် ပြောဆိုထားလည်း ပုံစံများနှင့် ဖြစ်ပေါ်မှုများ၊ စိတ်ခံစားချက်နှင့် အဓိပ္ပါယ် များကို ခွဲခြမ်းစိတ်ဖြာနိုင်ပါသည်။ ဤသင်ခန်းစာသည် သက်ဝင်နေသော ဒေတာစုစည်းမှုနှင့် စိန်ခေါ်မှုဖြစ်သော **[515K ဟိုတယ် သုံးသပ်ချက် ဒေတာများ ဥရောပတွင်](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** ကို ခွဲခြမ်းစိတ်ဖြာပြီး [CC0: Public Domain လိုင်စင်](https://creativecommons.org/publicdomain/zero/1.0/) ပါဝင်သည်။ ၎င်းသည် Booking.com မှ စုပြီး လူသုံး င်း_နိုင်သော လုပ်ဆောင်ချက်များမှ ရယူထားသည်။ ဒေတာစုစည်းမှုဖန်တီးသူမှာ Jiashen Liu ဖြစ်သည်။
### ပြင်ဆင်မှု
သင်လိုအပ်မည့်အရာများ-
သင်လိုအပ်သည်မှာ-
* Python 3 ဖြင့် .ipynb notebooks များကို အလုပ်လုပ်စေနိုင်ရမည်
* Python 3 ဖြင့် .ipynb notebook များကို လည်ပတ်နိုင်စွမ်း
* pandas
* NLTK, [ဤနေရာတွင် ဒေသတွင်းတွင် ထည့်သွင်းပါ](https://www.nltk.org/install.html)
* Kaggle တွင် ရရှိနိုင်သည့် ဒေတာအစုအဝေး [515K Hotel Reviews Data in Europe](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)။ ဒေတာကို ဖိုင်ဖွင့်ပြီးနောက် 230 MB ခန့်ရှိသည်။ ဒေတာကို ဤ NLP သင်ခန်းစာများနှင့် ဆက်စပ်သော `/data` ဖိုလ်ဒါတွင် ဒေါင်းလုပ်ဆွဲထားပါ။
* NLTK၊ [သင်ရွေးချယ်၍ တင်သွင်းရမည့် အကြံပြုချက်](https://www.nltk.org/install.html)
* Kaggle သာလျှင်ရရှိနိုင်သော ဒေတာစုစည်းမှု [515K ဟိုတယ် သုံးသပ်ချက် ဒေတာများ ဥရောပတွင်](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)။ ဖိုင်သည် ဘာမြားဖြစ်ပါသည် 230MB ခန့်ဖြစ်ပြီး unzip လုပ်လျှင် ရရှိသည်။ ဒီ NLP သင်ခန်းစာများနှင့် ဆက်စပ်သည့် /data ဖိုလ်ဒါအတွင်း သိမ်းဆည်းပါ။
## စူးစမ်းလေ့လာမှု ဒေတာခွဲခြမ်းစိတ်ဖြာမှု
## လေ့လာစူးစမ်းအချက်အလက် ခွဲခြမ်းစိတ်ဖြာခြင်း
ဤစိန်ခေါ်မှုသည် စိတ်ခံစားမှုခွဲခြမ်းစိတ်ဖြာမှုနှင့် ဧည့်သည်ပြန်လည်သုံးသပ်မှုအမှတ်များကို အသုံးပြု၍ ဟိုတယ်အကြံပြုမှုဘော့တစ်ခုကို တည်ဆောက်နေသည်ဟု သင်ယူထားသည်။ သင်အသုံးပြုမည့် ဒေတာအစုအဝေးတွင် မြို့ကြီး ၆ ခုရှိ ဟိုတယ် ၁၄၉၃ ခုမှ ပြန်လည်သုံးသပ်မှုများ ပါဝင်သည်။
ယခု စိန်ခေါ်မှုမှာ သင်သည် ဟိုတယ်အကြံပြု ဆော့ဖ်ဝဲ စနစ်တစ်ခုကို စိတ်ခံစားချက် ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် ဧည့်သည် သုံးသပ်ချက် အဆင့်များဖြင့် တည်ဆောက်နေောင်းသည်ဟု သတ်မှတ်ထားသည်။ သင်အသုံးပြုမည့် ဒေတာစုစည်းမှုတွင် ၆ မြို့ရှိ ဟိုတယ် ၁၄၉၃ ခု၏ သုံးသပ်ချက်များပါဝင်သည်။
Python, ဟိုတယ်ပြန်လည်သုံးသပ်မှုဒေတာအစုအဝေးနှင့် NLTK ၏ စိတ်ခံစားမှုခွဲခြမ်းစိတ်ဖြာမှုကို အသုံးပြု၍ သင်သည် အောက်ပါအရာများကို ရှာဖွေနိုင်သည်-
Python သုံး၍ ဟိုတယ် သုံးသပ်ချက်ဒေတာစုစည်းမှုနှင့် NLTK ၏ စိတ်ခံစားချက် ခွဲခြမ်းစိတ်ဖြာမှုကို အသုံးပြုပြီး မေးခွန်းအချို့ကို ရှာဖွေနိုင်ပါသည်-
* ပြန်လည်သုံးသပ်မှုများတွင် အကြိမ်ရေအများဆုံးဖြစ်သော စကားလုံးများနှင့် စကားစုများက ဘာတွေလဲ။
* ဟိုတယ်ကို ဖော်ပြသည့် *tags* များသည် ပြန်လည်သုံးသပ်မှုအမှတ်များနှင့် ဆက်စပ်နေပါသလား (ဥပမာ- *Family with young children* အတွက် အနုတ်လက္ခဏာပြန်လည်သုံးသပ်မှုများသည် *Solo traveller* ထက် ပိုများနေပါသလား၊ ဤဟိုတယ်သည် *Solo travellers* အတွက် ပိုသင့်တော်ကြောင်း ပြသနိုင်သည်)။
* NLTK ၏ စိတ်ခံစားမှုအမှတ်များသည် ဟိုတယ်ပြန်လည်သုံးသပ်သူ၏ ကိန်းဂဏန်းအမှတ်နှင့် 'သဘောတူ' နေပါသလား။
* သုံးသပ်ချက်တွင် အများဆုံး အသုံးပြုသော စကားလုံးနှင့် စကားစုများက ဘာတွေဖြစ်ကြသလဲ?
* ဟိုတယ်ကို ဖော်ညွှန်သည့် တရားဝင် *tags* များသည် သုံးသပ်ချက်အဆင့်နှင့် ကိုက်ညီမှုရှိပါသလား (ဥပမာ- *ကလေးငယ် မိသားစု* အတွက် မကြာခဏ နောက်ဆုတ်သုံးသပ်ချက်များရှိပြီး *တစ်ဦးတည်း ခရီးသွား* များအတွက်ကောင်းမွန်မှုများ ပိုရှိသည်ဟု သုံးသပ်ကြသည်ဟု မျှောလင့်နိုင်သလား?)
* NLTK စိတ်ခံစားချက် အဆင့်များသည် ဟိုတယ် သုံးသပ်သူ၏ ကိန်းဂဏန်း အဆင့်နှင့် ကိုက်ညီမှု ရှိပါသလား?
#### ဒေတာအစုအဝေး
#### ဒေတာစုစည်းမှု
သင်ဒေါင်းလုပ်ဆွဲပြီး ဒေသတွင်းတွင် သိမ်းဆည်းထားသော ဒေတာအစုအဝေးကို စူးစမ်းကြည့်ပါ။ ဖိုင်ကို VS Code သို့မဟုတ် Excel ကဲ့သို့သော တည်းဖြတ်ရေးဆော့ဖ်ဝဲတစ်ခုဖြင့် ဖွင့်ပါ။
သင်ဒေါင်းလုပ်ပြီး ပြီးနောက် ဒေတာစုစည်းမှုကို စူးစမ်းကြည့်မည်။ VS Code သို့မဟုတ် Excel ကဲ့သို့သော editor တွင် ဖိုင်ကို ဖွင့်ပါ။
ဒေတာအစုအဝေးတွင် ပါဝင်သော ခေါင်းစဉ်များမှာ အောက်ပါအတိုင်းဖြစ်သည်-
ဒေတာစုစည်းမှုတွင် ခေါင်းစဉ်များမှာ အောက်ပါအတိုင်းဖြစ်ပါသည်။
*Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng*
ဤခေါင်းစဉ်များကို အောက်ပါအတိုင်း အုပ်စုဖွဲ့ထားသည်-
၎င်းတို့ကို စူးစမ်းလေ့လာရ လွယ်ကူစေရန် အုပ်စုခွဲထားသည်။
##### ဟိုတယ် ဆိုင်ရာ ကော်လံများ
##### ဟိုတယ်ကော်လံများ
* `Hotel_Name`, `Hotel_Address`, `lat` (အလျားလိုင်း), `lng` (အကြာလိုင်း)
* *lat* နှင့် *lng* ကို အသုံးပြုပြီး Python ဖြင့် ဟိုတယ် နေရာများကို မြေပုံပုံဆွဲ၍ ပြသနိုင်သည် (ဥပမာ- မကောင်းသော သုံးသပ်ချက်နှင့် ကောင်းသော သုံးသပ်ချက်များအတွက် အရောင် ဖြင့် ဖော်ပြနိုင်သည်)
* Hotel_Address သည် ကျွန်ုပ်တို့အတွက် အသုံးဝင်မှု ရှိမရှိ ထင်ရှားမဟုတ်ပေ။ နောက်ဆုံးတွင် မနိုင်ငံခြားပိုင်ဖြစ်လွယ်စေရန် နိုင်ငံတစ်ခု ဖြင့် အစားထိုးနိုင်သည်။
* `Hotel_Name`, `Hotel_Address`, `lat` (latitude), `lng` (longitude)
* *lat* နှင့် *lng* ကို အသုံးပြု၍ Python ဖြင့် ဟိုတယ်တည်နေရာများကို မြေပုံပေါ်တွင် ရှုထောင့်အရောင်သတ်မှတ်ထားပြီး ရေးဆွဲနိုင်သည်။
* Hotel_Address သည် ကျွန်ုပ်တို့အတွက် ထင်ရှားစွာ အသုံးမဝင်သည့်အရာဖြစ်ပြီး၊ အလွယ်တကူ စီစစ်ခြင်းနှင့် ရှာဖွေမှုအတွက် နိုင်ငံတစ်ခုဖြင့် အစားထိုးမည်ဖြစ်သည်။
**ဟိုတယ် Meta-review ကော်လံများ**
**ဟိုတယ် မီတာ သုံးသပ်ချက် ကော်လံများ**
* `Average_Score`
* ဒေတာဖန်တီးသူအဆိုအရ၊ ဤကော်လံသည် *နောက်ဆုံးနှစ်အတွင်းမှ နောက်ဆုံးမှတ်ချက်အပေါ် အခြေခံ၍ တွက်ချက်ထားသော ဟိုတယ်၏ ပျမ်းမျှအမှတ်* ဖြစ်သည်။ ၎င်းသည် အမှတ်ကို တွက်ချက်သည့် ပုံစံအနေနှင့် ထူးဆန်းသော်လည်း၊ ယခုအချိန်အတွက် ကျွန်ုပ်တို့သည် ၎င်းကို ယုံကြည်ရမည်ဖြစ်သည်။
* ဒေတာစုစည်းမှုဖန်တီးသူ၏ မှတ်ချက်အရ၊ ဤကော်လံသည် *လွန်ခဲ့သောနှစ်တစ်နှစ်တွင် နောက်ဆုံးမှတ်ချက်အပေါ်အခြေခံ၍ ဟိုတယ်၏ ပျမ်းမျှ အမှတ်* ဖြစ်သည်။ ၎င်းသည် ထူးခြားသော ထည့်သွင်းပုံဖြစ်သော်လည်း ဒေတာကို တရားဝင် သိမ်းဆည်းထားသဖြင့် ယခုအချိန်တွင် တင်စားနိုင်သည်။
ဤဒေတာအတွင်းရှိ အခြားသော ကော်လံများအပေါ် အခြေခံ၍ ပျမ်းမျှအမှတ်ကို တွက်ချက်ရန် နည်းလမ်းတစ်ခုကို သင်စဉ်းစားနိုင်ပါသလား။
ဒီဒေတာတွင် ပါသော အခြားကော်လံများအရ မတူညီသော ပျမ်းမျှအမှတ်တွက်ချက်မှုနည်းဖော်ပြနိုင်ပါသလား?
* `Total_Number_of_Reviews`
* ဤဟိုတယ်သည် ရရှိထားသော ပြန်လည်သုံးသပ်မှုအရေအတွက် - ၎င်းသည် (အချို့သော ကုဒ်ရေးသားမှုမပြုလုပ်မီ) ဒေတာအစုအဝေးတွင် ပါဝင်သော ပြန်လည်သုံးသပ်မှုများကို ဆိုလိုသည်ဟု မရှင်းလင်းပါ။
* ဤဟိုတယ်သို့ သုံးသပ်ချက်စုစုပေါင်း အရေအတွက်ဖြစ်ပြီး ဒေတာစုစည်းမှုရှိ သုံးသပ်ချက်များအား ရည်ညွှန်းသည်ဟုတ်မဟုတ် မသေချာပါ (ကုဒ်ရေးခြင်း မရှိခဲ့လျှင်)
* `Additional_Number_of_Scoring`
* ၎င်းသည် ပြန်လည်သုံးသပ်မှုအမှတ်ကို ပေးခဲ့သော်လည်း ပြန်လည်သုံးသပ်မှုအနုတ်လက္ခဏာ သို့မဟုတ် အပေါင်းလက္ခဏာကို မရေးသားခဲ့သော အခြေအနေကို ဆိုလိုသည်။
* သုံးသပ်ချက် အမှတ်ပေးခဲ့သော်လည်း သုံးသပ်ချက်စာ မရေးသားသော ပြဿနာဖြစ်သည်။
**ပြန်လည်သုံးသပ်မှုကော်လံများ**
**သုံးသပ်ချက် ကော်လံများ**
- `Reviewer_Score`
- ၎င်းသည် အနည်းဆုံးနှင့် အများဆုံးတန်ဖိုး 2.5 နှင့် 10 အကြားတွင် အများဆုံး ဒသမ ၁ ချက်ရှိသော ကိန်းဂဏန်းတန်ဖိုးဖြစ်သည်
- အနည်းဆုံးအမှတ်ဖြစ်နိုင်သော 2.5 သည် အနိမ့်ဆုံးအမှတ်ဖြစ်ရမည့်အကြောင်းကို မရှင်းလင်းထားပါ။
- အနိမ့်ဆုံး 2.5 မှ အမြင့်ဆုံး 10 အထိ ၁ ဒယ်သင်္ကေတဖြင့် ကိန်းဂဏန်းတန်ဖိုးဖြစ်သည်
- အိပ်မက်မှာ 2.5 သည် အနိမ့်ဆုံးဖြစ်သော ပြဿနာ မရှင်းလင်းပါ
- `Negative_Review`
- ပြန်လည်သုံးသပ်သူသည် ဘာမှ မရေးသားပါက၊ ဤကွင်းသည် "**No Negative**" ဟု ရေးထားမည်။
- ပြန်လည်သုံးသပ်သူသည် အနုတ်လက္ခဏာကွင်းတွင် အပေါင်းလက္ခဏာပြန်လည်သုံးသပ်မှုကို ရေးသားနိုင်သည် (ဥပမာ- "ဤဟိုတယ်တွင် မကောင်းသောအရာမရှိပါ")။
- `Review_Total_Negative_W
🚨 သတိပေးချက်
ဒီ dataset ကို အသုံးပြုတဲ့အခါမှာ သင်ရေးတဲ့ code က text ကို ဖတ်စရာမလိုဘဲ text ထဲကနေ တစ်ခုခုကိုတွက်ချက်ပေးနိုင်ရမယ်။ ဒါဟာ NLP ရဲ့ အဓိကအချက်ဖြစ်ပြီး လူ့အဖွဲ့အစည်းမပါဘဲ အဓိပ္ပါယ်နဲ့ခံစားချက်ကို အနက်ဖွင့်ပေးနိုင်တာပဲဖြစ်ပါတယ်။ သို့သော် သင်အချို့သော အနုတ်လက္ခဏာရှိတဲ့ review တွေကို ဖတ်မိနိုင်ပါတယ်။ အဲ့ဒီ review တွေကို မဖတ်ဖို့ အကြံပေးချင်ပါတယ်၊ ဘာဖြစ်လို့လဲဆိုတော့ သင်ဖတ်စရာမလိုလို့ပါ။ အချို့ review တွေက အလွဲလွဲအချော်ချော်ဖြစ်ပြီး hotel နဲ့မသက်ဆိုင်တဲ့ အနုတ်လက္ခဏာရှိတဲ့ review တွေဖြစ်နိုင်ပါတယ်၊ ဥပမာ "ရာသီဥတုက မကောင်းဘူး" ဆိုတဲ့အရာတွေ၊ hotel ရဲ့ ထိန်းချုပ်မှုအောက်မှာမရှိတဲ့အရာတွေ၊ ဒါမှမဟုတ် ဘယ်သူ့အတွက်မှ ထိန်းချုပ်လို့မရတဲ့အရာတွေပါ။ ဒါပေမယ့် review တွေထဲမှာ အနောက်ဖက်မှောင်မိုက်တဲ့အပိုင်းလည်းရှိပါတယ်။ အချို့သော အနုတ်လက္ခဏာရှိတဲ့ review တွေက လူမျိုးရေး၊ လိင်ရေး၊ အသက်အရွယ်ရေး အနက်ဖွင့်မှုတွေပါဝင်နိုင်ပါတယ်။ ဒါဟာ စိတ်မကောင်းစရာကောင်းပေမယ့် public website မှာ scrape လုပ်ထားတဲ့ dataset မှာ ဖြစ်နိုင်တဲ့အရာပါ။ အချို့သော reviewer တွေက သင်မကြိုက်မယ်၊ သက်တောင့်သက်သာမရှိမယ်၊ ဒါမှမဟုတ် စိတ်မကောင်းစရာကောင်းမယ်လို့ ခံစားရမယ့် review တွေကို ရေးသားထားနိုင်ပါတယ်။ sentiment ကို code က တိုင်းတာပေးစေပြီး review တွေကို ကိုယ်တိုင်ဖတ်ပြီး စိတ်မကောင်းဖြစ်စေဖို့ မလုပ်ပါနဲ့။ ဒါဆိုလည်း အဲ့ဒီလိုအရာတွေကို ရေးသားတဲ့သူတွေက အနည်းငယ်ပဲရှိပေမယ့် သူတို့ရှိနေတယ်ဆိုတာတော့ အမှန်ပါပဲ။
## လေ့ကျင့်မှု - ဒေတာစူးစမ်းခြင်း
### ဒေတာကို တင်ပါ
- သုံးသပ်သူက စာမရေးသားခဲ့ပါက ဒီနေရာတွင် "**No Negative**" ပါလိမ့်မည်
- သတိထားပါ၊ သုံးသပ်သူသည် ဆန့်ကျင်ဘက် သုံးသပ်ချက်ကို [Negative review] ကော်လံတွင် ပေးနိုင်သည် (ဥပမာ- "ဤဟိုတယ်အပေါ် မကောင်းသော အကြောင်းမရှိပါ")
- `Review_Total_Negative_Word_Counts`
- စကားလုံး အရေအတွက်များသည် နိမ့်သော အမှတ်နဲ့ ဆက်စပ်မှုရှိနိုင်သည် (စိတ်ခံစားချက်မစစ်ဆေးမီ)
- `Positive_Review`
- သုံးသပ်သူက စာမရေးသားခဲ့ပါက ဒီနေရာတွင် "**No Positive**" ပါလိမ့်မည်
- သတိထားပါ၊ သုံးသပ်သူသည် ကောင်းသော သုံးသပ်ချက်ကို [Positive review] ကော်လံတွင် ပေးနိုင်သည် (ဥပမာ- "ဤဟိုတယ်အပေါ် ကောင်းသော အကြောင်းအရာ မရှိပါ")
- `Review_Total_Positive_Word_Counts`
- စကားလုံးများပို များခြင်းသည် အကြောင်းပြချက် အဆင့်မြင့်ကြောင်း ဖော်ပြသည် (စိတ်ခံစားချက်မစစ်ဆေးမီ)
- `Review_Date` နှင့် `days_since_review`
- သုံးသပ်ချက်သက်တမ်းသစ်သက်ဟောင်းကို တိုင်းတာနိုင်သည် (ဟိုတယ် စီမံခန့်ခွဲမှု ပြောင်းလဲမှု, ပြုပြင်မွမ်းမံမှုများ, ရေကူးကန် အသစ်ထည့်သွင်းမှု စသဖြင့် ကြောင်း)
- `Tags`
- သုံးသပ်သူသည် သူတို့ဖြစ်သော ဧည့်သည် အမျိုးအစား (တစ်ဦးတည်း သို့မဟုတ် မိသားစု), အခန်းအမျိုးအစား, နေ့ရက်ပမာဏနှင့် သုံးသပ်ချက် ပေးပုံတို့ကို ဖော်ပြသော အကျဉ်းချုပ် သက်သေပြချက်များ ဖြစ်သည်။
- ဤ tag များကို အသုံးပြုခြင်းတွင် ပြဿနာရှိပါသည်၊ အောက်တွင် ထိုအသုံးဝင်မှုအကြောင်း ဆွေးနွေးထားသည်
**သုံးသပ်သူ ကော်လံများ**
- `Total_Number_of_Reviews_Reviewer_Has_Given`
- ဤသည်သည် အကြံပြုမှုမော်ဒယ်တွင် အရေးပါနိုင်သည်၊ ဥပမာ- သုံးသပ်ချက်များ စုစုပေါင်း ပြုလုပ်သူများသည် ပိုမို ဆန့်ကျင်ဘက် သုံးသပ်မှုများ ပေးနိုင်ကြောင်း တွေ့ရှိရပါက။ သို့သော် တစ်ဦးတည်း သုံးသပ်သူကို တစ်ကိုယ်တည်း အမှတ်တံဆိပ်နဲ့ တွဲဖက်၍ မရရှိနိုင်ပါ၊ အရေးပါသော သုံးသပ်ချက် မဟုတ်ပါ။ သုံးသပ်သူ ၁၀၀ ကျော် သုံးသပ်မှုရှိသူ ၃၀ ယောက်ရှိပြီး သို့သော် ၎င်းသည် အကြံပြုမှုမော်ဒယ်အတွက် အထောက်အကူဖြစ်မရေး။
- `Reviewer_Nationality`
- အချို့သူများသည် နိုင်ငံသားများကို အကောင်း သို့မဟုတ် ဆိုးသော သုံးသပ်ချက် ပေးနိုင်မှု များသည် နိုင်ငံသားအရ တစ်စိတ်တစ်ပိုင်းက ဆုံးဖြတ်ချက်ကြောင်း ရှိနိုင်ကြောင်း ထင်မြင်နိုင်သည်။ ဤစိတ်ကူးများကို မော်ဒယ်တွင် ထည့်သွင်းမှုအသိရှိမှုများ အထောက်ကူမဖြစ်စေရေး ကြိုးစားပါ။ ဤသည်မှာ နိုင်ငံတော်အောက်ခြေ စိတ်ကူးထင်မြင်မှုများဖြစ်ပြီး တစ်ဦးချင်း သုံးသပ်သူသည် သူတို့အတွေ့အကြုံအပေါ် အခြေခံ၍ သုံးသပ်ချက်ရေးသားသူ ဖြစ်ပါသည်။ ပြီးခဲ့သော ဟိုတယ်များ၊ ခရီးသွားခရီးနံပါတ်၊ ကိုယ်ပိုင် ပြစ်ဒဏ်မူရင်းများကဲ့သို့သော အကြောင်းအရာများဖြင့် စစ်ထုတ်ကြည့်နိုင်သည်။ စေရန် ၎င်းတို့၏ နိုင်ငံသားဖြစ်ခြင်းသည် သုံးသပ်ချက် အဆင့်များ အကြောင်းရင်းဖြစ်သည်ဟု ဆိုပါက သက်ဆိုင်မှု မရှိပါ။
##### နမူနာများ
| ပျမ်းမျှ အဆင့် | စုစုပေါင်း သုံးသပ်ချက် အရေအတွက် | သုံးသပ်သူ အဆင့် | နောက်ဆုတ်<br />သုံးသပ်ချက် | ကောင်းမွန်သော သုံးသပ်ချက် | Tag များ |
| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
| 7.8 | 1945 | 2.5 | ဤနေရာမှာ ယခုအချိန်တွင် ဟိုတယ်မဟုတ်ဘဲ ဆောက်လုပ်ရေးလုပ်ငန်း ဆိုသည်သူ သက်တမ်းတစ်နေ့တာကြာ အဆူပူခံယူခဲ့ရပြီး ခရီးရှည်ပြီးနောက် အနားယူနေစဉ် မလွယ်ကူသော ဆူညံသံကြောင့် ရန်ပုန်းခဲ့ရသည်။ လူများသည် တစ်နေ့လုံးတစ်ခန်းစီ ပြန်လည်တည်ဆောက်နေကြသော ပြေးစက်များတို့ဖြင့် အဆင့်တင်ရောင်းချနေသည်။ အခန်းပြောင်းရန် တောင်းဆိုခဲ့ပေမယ့် ကျောင်းဆဲ အခန်းက အားလုံးလှုပ်မကြတတ်။ နောက်ပိုင်း၌ စျေးနီးနေသလို ထပ်မံလည်း ဈေးချိုင်းခံရသည်။ ညအချိန်တွင် လျော်ကြေးလက်ခံပြီးစေ၊ နောက်နေ့တွင် အကျွမ်းအမွတ်မရှိဘဲ စျေးနှင့်သာမန် ဈေးထက်ပို၍ လက်ခံထားသည်။ ဤနေရာသည် ဆိုးရွားသောနေရာပါ ။ ပစ္စည်းများမှာ အာမခံမရှိပါ။ | အရာရာ မကောင်းပါ။ နှောင့်နှေးသောနေရာ။ | စီးပွားရေးခရီး၊ စုံတွဲစတန်းဒါဒေါ်ဘယ် အခန်း နှစ်ည ဆင်းခဲ့သည် |
သင်မြင်နိုင်သလို ဤဧည့်သည်သည် ဟိုတယ်တွင် ဝမ်းသာမှုမရှိပါ။ ဟိုတယ်သည် ပျမ်းမျှ အဆင့် 7.8 နှင့် သုံးသပ်ချက် 1945 ခုရှိသော်လည်း ဤသုံးသပ်သူက 2.5 အမှတ်ပေးပြီး မကောင်းသော အတွေ့အကြုံများကို 115 စကားလုံးဖြင့် ဖော်ပြထားသည်။ Positive_Review ကော်လံတွင် ဘာမှ မရေးသားခဲ့လျှင် မကောင်းသော အချက်မရှိကြောင်း ထင်မြင်နိုင်သော်လည်း ၎င်းသည် သတိပေးစကား 7 စကားလုံးရေးသားထားသည်။ စကားလုံးများကိုသာ ရေတွက်ခဲ့လျှင် သို့မဟုတ် စာသား၏ အဓိပ္ပါယ် သို့မဟုတ် စိတ်ခံစားချက်ကို မစစ်ဆေးဘဲ ရေတွက်ပါက ဤသုံးသပ်သူ၏ ရည်ရွယ်ချက်ကို မှားပုံဖော်နိုင်သည်။ ထူးဆန်းစရာမှာ ၎င်း၏ 2.5 အမှတ်သည် စိတ်အနှောင့်အယှက် ဖြစ်သည်။ ဟိုတယ်သို့ အလွန်ဆိုးသောအတွေ့အကြုံရှိခဲ့လျှင် ဘာကြောင့် စတင်ပေးသင့်သည့် အမှတ်ရှိသနည်း? ဒေတာကို နီးစပ်စွာ ကြည့်တာကြောင့် အနိမ့်ဆုံးအမှတ်မှာ 2.5 ဖြစ်ပြီး 0 မဟုတ်ပါ။ အမြင့်ဆုံး အမှတ်မှာ 10 ဖြစ်သည်။
##### Tag များ
အထက်တွင် ဖော်ပြသည့်အတိုင်း၊ `Tags` ကို သုံးပြီး ဒေတာကို အုပ်စုခွဲရန် စဉ်းစားမှုမှာ သာမန်အကြံဖြစ်သည်။ မဒါပေမယ့် ဤ tag များမှာ စံချိန်မရှိသောကြောင့် အချို့ဟိုတယ်တွင် *Single room*, *Twin room*, နှင့် *Double room* ကျင့်သုံးမည့်နေရာ၌ နောက်ထပ်ဟိုတယ်တစ်ခုတွင် *Deluxe Single Room*, *Classic Queen Room*, နှင့် *Executive King Room* ဖြစ်နိုင်သည်။ ၎င်းတို့သည် တူညီသော အရာများဖြစ်နိုင်သော်လည်း အမျိုးမျိုးရှိခဲ့၍ ရွေးချယ်ရန် အခက်အခဲဖြစ်ရသည်-
၁။ စကားလုံးအားလုံးကို တစ်ခုတည်းသော စံချိန်သို့ ပြောင်းလဲရန် ကြိုးစားရန်၊ ဤအရာမှာ မူလ အခြေအနေများအား ကြည့်၍ (ဥပမာ- *Classic single room* သည် *Single room* သို့ ညွှန်ပြသနည်းရှိသော်လည်း *Superior Queen Room with Courtyard Garden or City View* သည် မလွယ်ကူပါ)
၂။ NLP နည်းလမ်းကို အသုံးပြုပြီး *Solo*, *Business Traveller*, သို့မဟုတ် *Family with young kids* ကဲ့သို့သော စကားလုံးများ ထပ်တိုးရေတွက်ပြီး ဟိုတယ်တစ်ခုချင်းစီကို ညွှန်ပြ၍ အကြံပြုမှုတွင် ပါဝင်စေရန်
Tag များသည် တစ်ခေါက်တည်း ၅ စကားလုံးမှ ၆ စကားလုံးအထိ ကွန်မာနှင့်ခွဲခြားထားသည့် ဘာသာပြန် အမျိုးအစား၊ ဧည့်သည်အမျိုးအစား၊ အခန်းအမျိုးအစား၊ နေ့ရက်ပမာဏ၊ သုံးသပ်ချက်တင်သွင်းခဲ့သော စက်ပစ္စည်း အမျိုးအစားအရ အုပ်စုတစ်ခု ဖြစ်သည်။ သို့သော် သုံးသပ်သူများသည် တစ်ချို့ အကွက်များအား ပြည့်စုံစွာ မဖြည့်ရန် ဖြစ်ပြုသောကြောင့် အနည်းငယ်သီးခြားနေပါသည်။
ဥပမာအားဖြင့် *Type of group* ကိုပါဝင်ပါစေ။ `Tags` ကော်လံ၌ ယခုအခါ 1025 ကွဲပြားသည့် ဖြစ်နိုင်မှုရှိပြီး ချို့ယွင်းမှုမှာ အချို့ဟာ မိသားစုကို ရည်ညွှန်းထားသော်လည်း အချို့ဟာ အခန်းအမျိုးအစားဖြစ်သည်။ တစ်ခြားမှာ "family" ဆိုသော စကားလုံးပါသောအောက်တွင် များစွာ *Family room* အမျိုးအစားရလဒ်ပါဝင်သည်။ "with" ဟုပါဝင်သော စကားလုံးအတွက် (ဥပမာ "Family with young children" သို့ "Family with older children") သည် ၈၀, ကျော်ဖြစ်ပြီး ၅၁၅, ခန့်ရလဒ်၌ ပါဝင်သည်။
ယင်းသည် tags ကော်လံအချို့ အကျိုးရှိကြောင်း ပြသသော်လည်း အသုံးဝင်စေရန် အလုပ်များသည့် ကိစ္စဖြစ်သည်။
##### ဟိုတယ် ပျမ်းမျှ အမှတ်
ဒေတာစုစည်းမှုပေါ်တွင် ထူးထူးခြားခြား ရှိသည့် အချက်အလက်များ တချို့ ရှိပြီး ဒီမှာ ဖော်ပြထားသည်။ မိမိ၏ မော်ဒယ်များ ဆောက်လုပ်ခြင်းအတွင်း ၎င်းတို့အကြောင်း အချက်အလက်ကို သိရှိရန် အရေးကြီးသည်။ မိတ်ဆွေရှာဖွေတွေ့ရှိပါက ဆွေးနွေးမှုပိုင်း၌ မျှဝေရန် လိုအပ်ပါသည်။
ဒေတာစုစည်းမှုတွင် ပျမ်းမျှ အမှတ် နှင့် သုံးသပ်ချက် အရေအတွက်နှင့် ဆက်စပ်သော ကော်လံများမှာ :
၁။ Hotel_Name
၂။ Additional_Number_of_Scoring
၃။ Average_Score
၄။ Total_Number_of_Reviews
၅။ Reviewer_Score
ဤဒေတာစုစည်းမှုတွင် အများဆုံး သုံးသပ်ချက်ရရှိထားသော ဟိုတယ်တစ်ခုမှာ *Britannia International Hotel Canary Wharf* ဖြစ်ပြီး 4789 သုံးသပ်ချက် ရှိသည်။ သို့သော် `Total_Number_of_Reviews` အတွက် တန်ဖိုးသည် 9086 ဖြစ်ပါသည်။ သင်သည် သုံးသပ်ချက်မရှိပေမယ့် အမှတ်များပိုမိုရှိကြောင်း ထင်မြင်နိုင်သည်၊ ထို့ကြောင့် `Additional_Number_of_Scoring` ကော်လံတန်ဖိုးကို ထည့်သွင်းရန်လိုအပ်သည်။ ဤတန်ဖိုးမှာ 2682 ဖြစ်ပြီး 4789 နှင့် ပေါင်းလျှင် 7,471 ရှိသော်လည်း `Total_Number_of_Reviews` မှ 1615 ချို့ယွင်းနေသည်။
`Average_Score` ကော်လံကို ကြည့်ပါက ဒေတာစုစည်းမှုအတွင်း သုံးသပ်ချက်ပေါင်းများ၏ ပျမ်းမျှဟု ထင်မြင်နိုင်သော်လည်း Kaggle မှ ဖေါ်ပြချက်မှာ "*လွန်ခဲ့သော နှစ်တစ်နှစ်အတွင်း နောက်ဆုံးမှတ်ချက်အပေါ် အခြေခံသော ဟိုတယ်၏ ပျမ်းမျှ အမှတ်*" ဟုဆိုသည်။ ၎င်းသည် အသုံးဝင်မှုနည်းသောဖြစ်နိုင်သော်လည်း၊ သင်အကြံပြု မော်ဒယ်အတွက် သုံးသပ်ချက် အမှတ်အရ ပျမ်းမျှစကားကို မတွက်ဘဲ ကိုယ်တိုင်တွက်ချက်နိုင်ပါသည်။ ဥပမာအနေဖြင့် အဆိုပါ ဟိုတယ်၏ ပျမ်းမျှ အမှတ်မှာ 7.1 ဖြစ်သော်လည်း ဒေတာတွင် ပါသော သုံးသပ်သူတို့၏ ပျမ်းမျှ အမှတ်က 6.8 ဖြစ်သည်။ ၎င်းသည် နီးကပ်သောတန်ဖိုးဖြစ်သော်လည်း မတူကြောင်း ဖြစ်ပြီး `Additional_Number_of_Scoring` အမှတ်များကြောင့် 7.1 အထိ တိုးတက်နိုင်သည့် အဆင့်ဖြစ်သည်ဟု ခန့်မှန်းနိုင်ပါသည်။ ဒါပေမယ့် စစ်ဆေးမရနိုင်သဖြင့် `Average_Score`, `Additional_Number_of_Scoring` နှင့် `Total_Number_of_Reviews` ကို 믿거나 사용하기 어렵다
တောင့်တင်းမှုတစ်ခု ဖြစ်စေသည်မှာ၊ အမှတ် ပိုများသော ဒုတိယဟိုတယ်သည် 8.12 တန်ဖိုးအရွယ်ရှိပြီး Kaggle ၏ `Average_Score` သည် 8.1 ဖြစ်သည်။ ဤမှန်ကန်ခြင်းမှာ သန့်ရှင်းမှု မဟုတ်မည်သို့ သို့မဟုတ် ပထမ ဟိုတယ်၏ ခြားနားမှုဖြစ်ပါသလား?
ဤဟိုတယ်များသည် အထူးသဖြင့် ထူးခြားချက်ပါတဲ့ဟိုတယ်များ ဖြစ်နိုင်ချေရှိပြီး အများအားဖြင့် တန်ဖိုးများသည် မလွဲမှားဘဲ တွက်ချက်ချက်မှုများ ဖြစ်သည်ဟု ယူဆရသည် (သို့သော် အချို့အကြောင်းကြောင့် မမှန်ကန်သလို ဖြစ်နေပေ) ဒေတာစုစည်းမှုရှိသည့် တန်ဖိုးများကို စူးစမ်းလေ့လာရန် နောက်တစ်ခုအနေဖြင့် ကိရိယာ အသေးစားရေးသားသွားမည်ဖြစ်သည်။
> 🚨 သတိပေးချက်တစ်ခု
>
> ဤဒေတာစုစည်းမှုနှင့် လုပ်ငန်းဆောင်တာများကို လုပ်ဆောင်ရာတွင် မိမိကိုယ်တိုင်သောစာသားများကို ဖတ်ရန် သို့မဟုတ် သဒ္ဒါနက်ရှိုင်းစွာခြေရာခံရန် မလိုပါ၊ ဒီလုပ်ငန်းသည် NLP ၏ အဓိကအချက်ဖြစ်ပြီး လူ့အသက်မလိုဘဲ အဓိပ္ပါယ်သို့မဟုတ် စိတ်ခံစားမှုကို ဦးမြှောက်ဖော်ပြခြင်းဖြစ်သည်။ သို့ရာတွင် အနုတ်လက္ခဏာရှိသည့် သုံးသပ်ချက်များအား ဖတ်ရှုရသဖြင့် မဖတ်ရန် အကြံပြုပါသည်။ အချို့မှာ မလိုလားအပ်သော၊ သက်ဆိုင်မည့် အနုတ်လက္ခဏာမဟုတ်သော ဟိုတယ်ဆိုင်ရာ သုံးသပ်ချက်များဖြစ်ပြီး၊ ဥပမာ "ရာသီဥတုမကောင်းပါ" ဟု ဆိုသည့်အတိုင်း ဟိုတယ် ထိန်းချုပ်မှုအပြင် လူတိုင်းအတွက် ပြဿနာဖြစ်သည်။ သို့သော် တချို့သုံးသပ်ချက်များတွင် အနုတ်လက္ခဏာများဟာ အမျိုးသားဝါဒီ၊ လိင်လိုက်ဖက်မှု၊ သက်တမ်း၀ါဒီကဲ့သို့ ဆိုးရွားမှုရှိနိုင်သည်၊ ယင်းသည် အင်တာနက်မှ စုဆောင်းသည့် ဒေတာတွင် မျှော်လင့်ရသော ဆိုးရွားချက်တစ်ရပ် ဖြစ်သည်။ သုံးသပ်သူတချို့သည် သင် မနှစ်သက်မဖြစ်စရာ၊ မနည်းလြှံစရာ၊ စိတ်မကောင်းစေမည့် သုံးသပ်ချက်များမှာ တင်ပေးနိုင်သည်။ ထိုသို့ဖြစ်သော်လည်း ကိုက်ညီမှုကို ကုဒ်က စစ်ဆေးပေးခြင်းဖြစ်သည့်အတွက် ကိုယ်တိုင်ဖတ်ပြီး စိတ်ပျက်ဖွယ်ရာမဖြစ်စေပါနှင့်။ ဒါပေမယ့် အဲဒီလို အနုတ်လက္ခဏာ သုံးသပ်သူများက ညှစ်ညမ်းသောအခါ အနည်းငယ်ဘဲ ဖြစ်ပြီး ရှိနေပေမယ့် ရှိနေသည်။
ဒေတာကို မျက်မြင်ဖြင့် စစ်ဆေးတာလုံလောက်ပြီဆိုရင်၊ အခုတော့ သင့်ရဲ့ ကုဒ်ကိုရေးပြီး အဖြေတွေကို ရယူကြည့်ပါ။ ဒီအပိုင်းမှာ pandas library ကို အသုံးပြုမှာဖြစ်ပါတယ်။ သင့်ရဲ့ ပထမဆုံးတာဝန်က CSV ဒေတာကို load လုပ်ပြီး ဖတ်နိုင်တာ သေချာစေဖို့ပါ။ pandas library မှာ CSV loader တစ်ခုရှိပြီး၊ ရလဒ်ကို dataframe အနေနဲ့ ထည့်သွင်းပေးပါတယ်၊ ယခင် သင်ခန်းစာတွေမှာလိုပဲ။ ကျွန်တော်တို့ load လုပ်မယ့် CSV ဖိုင်မှာ တန်းစီထားတဲ့ အတန်း ၅ သိန်းကျော်ရှိပေမယ့် ကော်လံ ၁၇ ခုသာ ပါဝင်ပါတယ်။ Pandas က dataframe နဲ့ အလုပ်လုပ်ဖို့ အစွမ်းထက်နည်းလမ်းတွေ အများကြီးပေးထားပြီး၊ တန်းစီထားတဲ့ အတန်းတိုင်းမှာ လုပ်ဆောင်ချက်တွေ ပြုလုပ်နိုင်ပါတယ်။
## လေ့ကျင့်ခန်း - ဒေတာစူးစမ်းခြင်း
### ဒီတစ်ကြိမ်မှာ ဒေတာထည့်သွင်းခြင်း
ဒီသင်ခန်းစာမှာ ဒီနေရာကစပြီး ကုဒ် snippet တွေ၊ ကုဒ်ရဲ့ ရှင်းလင်းချက်တွေ၊ ရလဒ်တွေက ဘာကို ဆိုလိုတာလဲဆိုတာ ဆွေးနွေးချက်တွေ ပါဝင်မှာဖြစ်ပါတယ်။ သင့်ရဲ့ ကုဒ်အတွက် _notebook.ipynb_ ကို အသုံးပြုပါ။
ေတာကို မျက်နှာပြင်ပေါ်တွင် ကြည့်ရှုဖို့လုံလောက်ပြီ၊ ယခု မှာ ကိုယ်တိုင် ကုဒ်ရေးပြီး အဖြေတစ်ချို့ရယူကြပါစို့! ဤတန်းတူက pandas စာကြည့်တိုက်ကို အသုံးပြုသည်။ သင့်၏ ပထမဆုံးတာဝန်မှာ CSV ဒေတာကို ထည့်သွင်းပြီး ဖတ်ရှုနိုင်ခြင်းဖြစ်သည်။ pandas သည် အမြန်ဆုံး CSV loader ရှိပြီး၊ ရလဒ်ကို တန်းကြပ်တည်းစီထားသော dataframe အဖြစ် ထည့်သွင်းပေးသည်၊ ယခင်သင်ခန်းစာများနှင့် ဆင်တူသည်။ သည့် CSV တွင် တန်းချက်စီ ၅သိန်းကျော်ရှိသော်လည်း ကော်လံ ၁၇ သာရှိသည်။ pandas သည် dataframe အသစ်နှင့် အလုပ်လုပ်ရန် အကြံပြုမှုအများကြီး ပံ့ပိုးပေးသည်၊ ပြီးတဲ့နောက် စဉ်ကြောင့် ထည့်သွင်းထားသော စိတ်ကြိုက်လုပ်ဆောင်ချက်များကို လုပ်ဆောင်နိုင်သည်။
အရင်ဆုံး သင်အသုံးပြုမယ့် ဒေတာဖိုင်ကို load လုပ်တာကစပါမယ် -
ယခု သင်ခန်းစာတွင် ကုဒ်ပိုင်းများနှင့် ကုဒ်ရဲ့ ရည်ညွှန်းချက်၊ ရလဒ်များ၏ အဓိပ္ပါယ်တို့ အကြောင်းအရာရှိတယ်။ သင်၏ကုဒ်အတွက် ထည့်သွင်းထားသည့် _notebook.ipynb_ ကို အသုံးပြုပါ။
သင့် အသုံးပြုမည့် ဒေတာဖိုင်ကို load လုပ်ခြင်းဖြင့် စတင်ကြပါစို့။
```python
# Load the hotel reviews from CSV
# ဟိုတယ်မှ သုံးသပ်ချက်များကို CSV ဖိုင်မှ ထည့်သွင်းသည်
import pandas as pd
import time
# importing time so the start and end time can be used to calculate file loading time
# စတင်ချိန်နှင့် အဆုံးချိန်ကို ဖိုင်ဒေါင်းလုပ်ချိန်တွက်ရန်အတွက် time ကို သွင်းယူခြင်း
print("Loading data file now, this could take a while depending on file size")
start = time.time()
# df is 'DataFrame' - make sure you downloaded the file to the data folder
# df ဆိုသည်မှာ 'DataFrame' ဖြစ်ပြီး ဖိုင်ကို data ဖိုလ်ဒါအတွင်းဒေါင်းလုပ်လုပ်ထားသည်မှာ မှန်ကန်သေချာပါစေ
df = pd.read_csv('../../data/Hotel_Reviews.csv')
end = time.time()
print("Loading took " + str(round(end - start, 2)) + " seconds")
```
```
ဒေတာကို load လုပ်ပြီးပြီဆိုရင်၊ အခုတော့ ဒေတာပေါ်မှာ လုပ်ဆောင်ချက်တွေ ပြုလုပ်နိုင်ပါပြီ။ ဒီကုဒ်ကို သင့်ရဲ့ အစီအစဉ်ရဲ့ အပေါ်ဆုံးမှာ ထည့်ထားပါ။
ဒေတာအား ဖတ်ခြင်းပြီးလျှင် အလုပ်ထုတ်မှု အချို့လုပ်ဆောင်နိုင်ပါတယ်။ သင်၏ အစီအစဉ်၏ အတွင်းက မိမိရေးထားသည့် ကုဒ်အစ ထိန်းထားပါ။
## ဒေတာကို စူးစမ်းပါ
## ဒေတာကို စူးစမ်းရှာဖွေခြင်း
ဒီအခါမှာတော့ ဒေတာဟာ *သန့်ရှင်း* ဖြစ်ပြီး၊ အလုပ်လုပ်ဖို့ အဆင်သင့်ဖြစ်နေပါပြီ။ ဒါက ဘာကိုဆိုလိုတာလဲဆိုရင်၊ အင်္ဂလိပ်စာလုံးတွေကိုသာ မျှော်လင့်နေတဲ့ အယ်လဂိုရီသမ်တွေကို အနှောက်အယှက်ဖြစ်စေမယ့် အခြားဘာသာစကားတွေရဲ့ စာလုံးတွေ မပါဝင်ဘူးဆိုတာပါ။
ဤနည်းဖြင့် တင်ပြသည့် ဒေတာသည် *သန့်ရှင်းပြီး* ဖြစ်သည်၊ ဤသည်မှာ ပြန်လည်အသုံးပြုရန်အဆင်ပြေပြီး အခြားဘာသာစကားလက္ခဏာများနှင့် မရောမချုပ်ထားပါက Algorithm များကို တားဆီးမှုမဖြစ်စေပါ။
✅ သင့်အနေနဲ့ NLP နည်းပညာတွေကို အသုံးချမယ့်အခါ၊ ဒေတာကို အစပိုင်းမှာ format ပြင်ဆင်ဖို့ လိုအပ်တတ်ပါတယ်၊ ဒါပေမယ့် ဒီအခါမှာတော့ မလိုအပ်ပါဘူး။ သင့်အနေနဲ့ အင်္ဂလိပ်မဟုတ်တဲ့ စာလုံးတွေကို ဘယ်လိုကိုင်တွယ်မလဲ?
✅ သင်တစ်ခါတရံ အစ ပိုင်းတွင် လိုအပ်၍ ဒေတာကို စနစ်တကျ ပြင်ဆင်ရန် လိုအပ်နိုင်သည်၊ ဒါပေမယ့် ယခုအခါတော့ မလိုပါဘူး။ လုံလောက်ခဲ့လျှင် မသင်ယူနိုင်သော ဘာသာစကား လက္ခဏာများကို မည်သို့処理 မည်နည်း။
ဒေတာကို load လုပ်ပြီးတာနဲ့၊ ကုဒ်နဲ့အတူ စူးစမ်းနိုင်တာ သေချာစေပါ။ `Negative_Review` နဲ့ `Positive_Review` ကော်လံတွေကို အလွယ်တကူ အာရုံစိုက်ချင်တတ်ပါတယ်။ ဒီကော်လံတွေမှာ သင့်ရဲ့ NLP အယ်လဂိုရီသမ်တွေ အလုပ်လုပ်ဖို့ သဘာဝစာသားတွေ ပါဝင်ပါတယ်။ ဒါပေမယ့် ခဏစောင့်ပါ! NLP နဲ့ စိတ်ခံစားမှုကို စတင်မလုပ်ခင်၊ pandas နဲ့ ရှာဖွေတွေ့ရှိထားတဲ့ တန်ဖိုးတွေဟာ ဒေတာစဉ်မှာပေးထားတဲ့ တန်ဖိုးတွေနဲ့ ကိုက်ညီမကိုက်ညီ စစ်ဆေးဖို့ အောက်ပါကုဒ်ကို လိုက်နာပါ။
ဒေတာကို ထည့်သွင်းပြီးနောက် စူးစမ်းရှာဖွေရန် ကိုယ်တိုင် အချိန်ယူပါ။ သင်၏ NLP algorithm များအတွက်သော `Negative_Review` နှင့် `Positive_Review` ကော်လံများတွင် စိတ်ဝင်စားမှုရှိသည်။ သို့သော် NLP နှင့် စိတ်ခံစားမှုကို စတင်ရန်မပြုမီ pandas နှင့် တွက်ချက်ထားသော တန်ဖိုးများနှင့် Dataset တွင် တန်ဖိုးများကို ကိုက်ညီကြောင်း သေချာစေရန် အောက်ပါ ကုဒ်ကို လုပ်ဆောင်ပါ။
## Dataframe လုပ်ဆောင်ချက်များ
## Dataframe လုပ်ဆောင်ချက်များ
ဒီသင်ခန်းစာရဲ့ ပထမဆုံးတာဝန်ကတော့ အောက်ပါ အတည်ပြုချက်တွေကို စစ်ဆေးဖို့ ကုဒ်ရေးပါ။ ဒေတာဖရိမ်ကို ပြောင်းလဲမလုပ်ဘဲ စစ်ဆေးပါ။
ဤသင်ခန်းစာ၏ ပထမဆုံးတာဝန်မှာ ဒေတာဖရိမ့်ကို သုံးသပ်ရန် စစ်ဆေးခြင်းဖြစ်ပြီး (ပြောင်းလဲမှု မလုပ်ဘဲ) စာသားများကို အောက်ပါအတိုင်း ဖြေဆိုရန် ဖြစ်သည်။
> Programming လုပ်ငန်းတာဝန်အများစုလိုပဲ၊ ဒီအလုပ်ကို ပြီးမြောက်ဖို့ နည်းလမ်းအများကြီး ရှိပါတယ်၊ ဒါပေမယ့် အကောင်းဆုံးအကြံပေးချက်ကတော့ သင်နောက်ပိုင်းမှာ ဒီကုဒ်ကို ပြန်ကြည့်တဲ့အခါ အလွယ်တကူ နားလည်နိုင်အောင် ရိုးရှင်းပြီး လွယ်ကူတဲ့ နည်းလမ်းနဲ့ လုပ်ပါ။ Dataframe တွေအတွက် Comprehensive API တစ်ခုရှိပြီး၊ သင်လိုချင်တာကို ထိရောက်စွာ ပြုလုပ်နိုင်မယ့် နည်းလမ်းတစ်ခု ရှိတတ်ပါတယ်။
> အများသော programming လုပ်ငန်းများကဲ့သို့ ဖြေရှင်းနည်းအများကြီးရှိပြီး၊ အနာဂတ်တွင်ပြန်လည်ကြည့်ရှုလွယ်ကူရန် ကျယ်ပြန့်ပြီး လွယ်ကူသော နည်းလမ်းဖြင့် ဆောင်ရွက်ခြင်းသည် အကြံပြုချက်ကောင်းဖြစ်သည်။ dataframes တွင် လုပ်နိုင်သည့် ပရိုဂရမ်များကို အလွယ်တကူကျွမ်းကျင်စွာ အသုံးပြုနိုင်သည်။
အောက်ပါမေးခွန်းတွေကို coding task အနေနဲ့ သတ်မှတ်ပြီး၊ ဖြေရှင်းချက်ကို မကြည့်ဘဲ ကြိုးစားဖြေပါ။
အောက်ပါမေးခွန်းများကို ကုဒ်ရေးခြင်း အလုပ်အဖြစ် သတ်မှတ်ပြီး ဖြေဆိုရန် ကြိုးစားကြပါ။
1. သင် load လုပ်ထားတဲ့ dataframe ရဲ့ *shape* ကို print ထုတ်ပါ (shape ဆိုတာက အတန်းနဲ့ ကော်လံအရေအတွက်ပါ)
2. Reviewer နိုင်ငံသားများအတွက် frequency count ကိုတွက်ပါ -
1. `Reviewer_Nationality` ကော်လံမှာ ဘယ်လောက် distinct value တွေရှိပြီး၊ အဲဒီ value တွေက ဘာတွေလဲ?
2. Dataset မှာ အများဆုံးတွေ့ရတဲ့ reviewer နိုင်ငံသားက ဘယ်နိုင်ငံသားလဲ (နိုင်ငံနဲ့ review အရေအတွက်ကို print ထုတ်ပါ)
3. နောက်ထပ် အများဆုံးတွေ့ရတဲ့ နိုင်ငံသား ၁၀ ယောက်နဲ့ သူတို့ရဲ့ frequency count တွေက ဘယ်လောက်လဲ?
3. အများဆုံး review ရရှိတဲ့ ဟိုတယ်ကို top 10 reviewer နိုင်ငံသားအလိုက် တွက်ပါ။
4. Dataset မှာ ဟိုတယ်တစ်ခုစီအတွက် review အရေအတွက် (frequency count) ကို တွက်ပါ။
5. Dataset မှာ ဟိုတယ်တစ်ခုစီအတွက် `Average_Score` ကော်လံတစ်ခုရှိပေမယ့်၊ reviewer score တွေကို အသုံးပြုပြီး သင့်ကိုယ်တိုင်လည်း အလယ်ပျမ်းမျှကို တွက်နိုင်ပါတယ်။ `Calc_Average_Score` ဆိုတဲ့ ကော်လံခေါင်းစဉ်နဲ့ အသစ်တစ်ခုထည့်ပါ။
6. `Average_Score` နဲ့ `Calc_Average_Score` တန်ဖိုးတွေဟာ တူညီတဲ့ ဟိုတယ်တွေ ရှိပါသလား (တစ်ဆင့်တည်းအနက် rounded)?
1. Python function တစ်ခုရေးပါ၊ Series (row) တစ်ခုကို argument အနေနဲ့ ယူပြီး၊ တန်ဖိုးတွေ မတူညီတဲ့အခါ message တစ်ခု print ထုတ်ပါ။ `.apply()` method ကို အသုံးပြုပြီး row တစ်ခုစီကို process လုပ်ပါ။
7. `Negative_Review` ကော်လံမှာ "No Negative" ဆိုတဲ့ တန်ဖိုးရှိတဲ့ row အရေအတွက်ကို တွက်ပြီး print ထုတ်ပါ။
8. `Positive_Review` ကော်လံမှာ "No Positive" ဆိုတဲ့ တန်ဖိုးရှိတဲ့ row အရေအတွက်ကို တွက်ပြီး print ထုတ်ပါ။
9. `Positive_Review` ကော်လံမှာ "No Positive" နဲ့ `Negative_Review` ကော်လံမှာ "No Negative" ဆိုတဲ့ တန်ဖိုးနှစ်ခုလုံးရှိတဲ့ row အရေအတွက်ကို တွက်ပြီး print ထုတ်ပါ။
1. Load လုပ်ထားသော data frame ၏ *shape* ကိုပုံနှိပ်ပါ (shape သည် စားတန်းနှင့် ကော်လံ အရေအတွက်)
2. Reviewer များ၏ နိုင်ငံလက္ခဏာများရေအတွက် တွက်ချက်ပါ -
1. `Reviewer_Nationality` ကော်လမ်တွင် မတူညီသောတန်ဖိုးများ ဘယ်နှစ်ခုရှိပြီး ဘာလဲ။
2. ဒေတာများတွင် အများဆုံး တွေ့ရှိရသော မည်သည့်နိုင်ငံသား မြို့တော်လဲ (နိုင်ငံနာမည်နှင့် မှတ်ချက်အရေအတွက် ကို ပုံနှိပ်ပါ)။
3. နောက်တစ်ဆင့် အများဆုံး တွေ့ရှိရသော နိုင်ငံသား ၁၀ ခုနဲ့ တစ်ပါတည်းသော တွက်ချက်မှုရေအရေအတွက်။
3. အများဆုံး ပြန်လည်သုံးသပ်ခဲ့သော ဟိုတယ်များသည် ထို ၁၀ နိုင်ငံသားအဖြစ် ကွဲပြားမှုရှိသည်။
4. ဒေတာအရ ဟိုတယ်တစ်ခုစီတွင် Review များရေအတွက် ဘယ်လောက်ရှိသနည်း။
5. အဆိုပါ `Average_Score` ကော်လံသည် ဟိုတယ်တစ်ခုစီအတွက် ရှိသော်လည်း pandas ကိုအသုံးပြုပြီး ဟိုတယ်တစ်ခုစီ၏ စုပေါင်း reviewer ရမှတ်အပေါ်မှ လက်တွေ့တွက်ချက်သော `Calc_Average_Score` လို့ နောက်ထပ်အကွာအဝေးကော်လံတစ်ခု ထည့်ပါ။
6. တချို့ဟိုတယ်များသည် (၁ ဒသမချိုးမြှောက်မှုအတိုင်း) `Average_Score` နှင့် `Calc_Average_Score` တန်ဖိုးနှစ်ခုတူညီသလား။
1. Series နှင့် ဆက်နွယ်သော function တစ်ခုကိုရေး၍ တန်ဖိုးမညီဘဲမူအခါပါ ပြောကြားပါ။ `.apply()` နည်းလမ်းဖြင့် လုပ်ဆောင်ပါ။
7. `Negative_Review` ကော်လံတွင် "No Negative" တန်ဖိုးရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
8. `Positive_Review` ကော်လံတွင် "No Positive" တန်ဖိုးရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
9. `Positive_Review` ကော်လံတွင် "No Positive" နှင့် `Negative_Review` ကော်လံတွင် "No Negative" တန်ဖိုးများပါရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
### ကုတ်ဖြေဆိုချက်များ
### ကုဒ်ဖြေရှင်းချက်
1. Load လုပ်ထားသော data frame ၏ *shape* ကိုပုံနှိပ်ပါ (shape သည် စားတန်းနှင့် ကော်လံ အရေအတွက်)
1. ```python
```python
print("The shape of the data (rows, cols) is " + str(df.shape))
> The shape of the data (rows, cols) is (515738, 17)
```
```
2. Reviewer များ၏ နိုင်ငံလက္ခဏာများရေအတွက် တွက်ချက်ပါ -
2. ```python
# value_counts() creates a Series object that has index and values in this case, the country and the frequency they occur in reviewer nationality
1. `Reviewer_Nationality` ကော်လမ်တွင် မတူညီသောတန်ဖိုးများ ဘယ်နှစ်ခုရှိပြီး ဘာလဲ။
2. ဒေတာများတွင် အများဆုံး တွေ့ရှိရသော မည်သည့်နိုင်ငံသား မြို့တော်လဲ (နိုင်ငံနာမည်နှင့် မှတ်ချက်အရေအတွက် ကို ပုံနှိပ်ပါ)။
```python
# value_counts() သည် Series object တစ်ခုကို ဖန်တီးပြီး၊ ဤအမှုအတွင်းမှာ index နှင့် values များရှိသည်၊ အဲဒါကတော့ နိုင်ငံနှင့် သူတို့၏ ရှိံ့ပြောသည့် frequency ဖြစ်သည်
nationality_freq = df["Reviewer_Nationality"].value_counts()
print("There are " + str(nationality_freq.size) + " different nationalities")
# print first and last rows of the Series. Change to nationality_freq.to_string() to print all of the data
# Series ၏ ပထမနှင့် နောက်ဆုံး စာသားများကို ပုံနှိပ်ပါ။ ဒေတာအားလုံးကို ပုံနှိပ်ရန် nationality_freq.to_string() ထဲသို့ ပြောင်းပါ။
print(nationality_freq)
There are 227 different nationalities
@ -151,15 +220,40 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
Cape Verde 1
Guinea 1
Name: Reviewer_Nationality, Length: 227, dtype: int64
```
```
3. နောက်တစ်ဆင့် အများဆုံး တွေ့ရှိရသော နိုင်ငံသား ၁၀ ခုနဲ့ တစ်ပါတည်းသော တွက်ချက်မှုရေအရေအတွက်။
3. ```python
# What was the most frequently reviewed hotel for the top 10 nationalities
# Normally with pandas you will avoid an explicit loop, but wanted to show creating a new dataframe using criteria (don't do this with large amounts of data because it could be very slow)
```python
print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.")
# တန်ဖိုးများအပေါ်တွင် ဦးစီးအထောင့်နေရာရှိပြီး strip() သည် ပုံနှိပ်ရန် အလင်းသတင်းများအား ဖယ်ရှားသည်
# ထိပ်ဆုံး ၁၀ ခုသော နိုင်ငံသားမှုများနှင့် ၎င်းတို့၏ ဖြစ်နိုင်ခြေအမြင့်များ ဘာတွေလဲ?
print("The next 10 highest frequency reviewer nationalities are:")
print(nationality_freq[1:11].to_string())
The highest frequency reviewer nationality is United Kingdom with 245246 reviews.
The next 10 highest frequency reviewer nationalities are:
United States of America 35437
Australia 21686
Ireland 14827
United Arab Emirates 10235
Saudi Arabia 8951
Netherlands 8772
Switzerland 8678
Germany 7941
Canada 7894
France 7296
```
3. အများဆုံး ပြန်လည်သုံးသပ်ခဲ့သော ဟိုတယ်များသည် ထို ၁၀ နိုင်ငံသားအဖြစ် ကွဲပြားမှုရှိသည်။
```python
# ထိပ်ဆုံး ၁၀ အမျိုးအစားနှင့်အတူ အကြိမ်ရေများဆုံး ပြန်လည်သုံးသပ်ထားသော ဟိုတယ်သည် ဘယ်ဟိုတယ်လဲ
# သာမာန်အားဖြင့် pandas ဖြင့် ပတ်လည်ခြင်းကို ရှောင်ရှားပါမည်၊ သို့သော် ဖေါ်ပြထားသော ဒေတာအခြေအနေဖြင့် DataFrame အသစ် တည်ဆောက်ခြင်းကို ပြသလိုသည် ( ဒေတာအရေအတွက်ကြီးလျှင် မလုပ်သင့်ပါ၊ အလွန်ဆွဲချိတ်နိုင်ပါသည်)
for nat in nationality_freq[:10].index:
# First, extract all the rows that match the criteria into a new dataframe
# ပထမဦးစွာ၊ စံညွှန်းနှင့် ကိုက်ညီသော အတိုင်း အသစ် DataFrame ထဲသို့ အတန်းများအားလုံး ယူပါ
nat_df = df[df["Reviewer_Nationality"] == nat]
# Now get the hotel freq
# ယခု ဟိုတယ် စံดิต်ကိန်းကို ယူပါ
freq = nat_df["Hotel_Name"].value_counts()
print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.")
@ -173,42 +267,81 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
The most reviewed hotel for Switzerland was Hotel Da Vinci with 97 reviews.
The most reviewed hotel for Germany was Hotel Da Vinci with 86 reviews.
The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews.
```
```
4. ```python
# First create a new dataframe based on the old one, removing the uneeded columns
4. ဒေတာအရ ဟိုတယ်တစ်ခုစီတွင် Review များရေအတွက် ဘယ်လောက်ရှိသနည်း။
```python
# ပထမဦးဆုံး အဟောင်း dataframe ကို အခြေခံပြီး အသစ်တစ်ခုကို ဖန်တီးပါ၊ မလိုအပ်သော ကော်လံများကို ဖယ်ရှားပါ
hotel_freq_df = df.drop(["Hotel_Address", "Additional_Number_of_Scoring", "Review_Date", "Average_Score", "Reviewer_Nationality", "Negative_Review", "Review_Total_Negative_Word_Counts", "Positive_Review", "Review_Total_Positive_Word_Counts", "Total_Number_of_Reviews_Reviewer_Has_Given", "Reviewer_Score", "Tags", "days_since_review", "lat", "lng"], axis = 1)
# Group the rows by Hotel_Name, count them and put the result in a new column Total_Reviews_Found
# သိုလှောင်ရာတွင် Hotel_Name အလ်က ပြန်လည်စုစည်းပြီး အရေအတွက်ကိုတွက်ပါ၊ နောက်ထပ် ကော်လံအသစ် Total_Reviews_Found တွင် ရလဒ်ကို ထည့်ပါ
hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count')
# Get rid of all the duplicated rows
# ထပ်တူနေသောအတန်းများအားလုံးကို ဖယ်ရှားပါ
hotel_freq_df = hotel_freq_df.drop_duplicates(subset = ["Hotel_Name"])
display(hotel_freq_df)
```
```
| Hotel_Name | Total_Number_of_Reviews | Total_Reviews_Found |
| :----------------------------------------: | :---------------------: | :-----------------: |
| Britannia International Hotel Canary Wharf | 9086 | 4789 |
| Park Plaza Westminster Bridge London | 12158 | 4169 |
| Copthorne Tara Hotel London Kensington | 7105 | 3578 |
| ... | ... | ... |
| Mercure Paris Porte d Orleans | 110 | 10 |
| Hotel Wagner | 135 | 10 |
| Hotel Gallitzinberg | 173 | 8 |
သင်တွေ့မည်မှာ *ဒေတာစုစည်းမှုအရ ရေတွက်ထားသော အကြောင်းအရာ* သည် `Total_Number_of_Reviews` မှာပါတဲ့ တန်ဖိုးနှင့် ကိုက်ညီမှု မရှိ။ ဒေတာတွင် ဤတန်ဖိုးသည် ဟိုတယ်၏ စုစုပေါင်း समीक्षा အရေအတွက်ကို ကိုယ်စားပြုနိုင်သော်လည်း အားလုံး မဆွဲယူထားကြောင်း သို့မဟုတ် အခြား ကိန်းဂဏန်းနည်းလမ်းဖြင့်တွက်ချက်ထားသည့် အရာ ဖြစ်နိုင်သည်။ `Total_Number_of_Reviews` ကို မော်ဒယ်တွင် အသုံးမပြုခြင်းမှာ ဒီအကြောင်းမှာဖြစ်ပါတယ်။
5. ဒေတာအတွက် `Average_Score` column ရှိသော်လည်း pandas ရဲ့ မှတ်ချက်အားလုံးရမှတ်၏ အပျမ်းမျှကို ကိုယ်တိုင်တွက်ချက်ပြီး အသစ် `Calc_Average_Score` column ကို ထည့်သွင်းပါ။ `Hotel_Name`, `Average_Score`, `Calc_Average_Score` ကော်လံများကို ပုံနှိပ်ပေးပါ။
5. ```python
# define a function that takes a row and performs some calculation with it
```python
# တစ်စောင်ကိုယူပြီး အဲ့ဒီဆိုဒ်နဲ့ တွက်ချက်မှုတစ်ခုခုလုပ်တဲ့ function ကို သတ်မှတ်ပါ
def get_difference_review_avg(row):
return row["Average_Score"] - row["Calc_Average_Score"]
# 'mean' is mathematical word for 'average'
# 'mean' က သင်္ချာအတွက် 'ပျမ်းမျှ' ဆိုတဲ့စကားလုံးပါ
df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1)
# Add a new column with the difference between the two average scores
# နှစ်ခုဆင့်ပျမ်းမျှအချက်အလက်ကြားက လွဲပြောင်းချက်ကို သတ္တုအသစ်ကော်လံတစ်ခုထည့်ပါ
df["Average_Score_Difference"] = df.apply(get_difference_review_avg, axis = 1)
# Create a df without all the duplicates of Hotel_Name (so only 1 row per hotel)
# Hotel_Name ရဲ့တူညီချက်အားလုံးမပါသော df တစ်ခုဖန်တီးပါ (အဲဒါထဲမှာ ဟိုတယ်တစ်ခုလျှင် တစ်စောင်သာ)
review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"])
# Sort the dataframe to find the lowest and highest average score difference
# ပျမ်းမျှအချက်အလက်အနိမ့်ဆုံးနဲ့အမြင့်ဆုံး လွဲပြောင်းချက်ရှာဖွေအောင် dataframe ကို အစီအစဉ်ရေးပါ
review_scores_df = review_scores_df.sort_values(by=["Average_Score_Difference"])
display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]])
```
```
`Average_Score` နှင့် `Calc_Average_Score` တန်ဖိုးများ ပြောင်းလဲခြင်းများ ရှိသည့် အကြောင်းကို စူးစမ်းမေးမြန်းမှု ရှိနိုင်သည်။ ဘာကြောင့် တစ်ချို့ တန်ဖိုးများကိုက်ညီသော်လည်း တချို့ မတူညီကြောင်း သိရှိနိုင်ခြင်း မရှိပါ။ အကောင်းဆုံးလမ်းမှာ ကိုယ်တိုင်တွက်ချက်ထားသော review score ကိုအသုံးပြုခြင်းဖြစ်သည်။ แตกต่างกันနည်းလမ်းများသည် မကြီးမှူဖေါ်ပြထားသော်လည်း နောက်ဆုံးဟိုတယ်များ၏ လွန်လွန်ကဲကဲ ပြောင်းလဲမှုများအား စိစစ်ထားသည့် အနုမြူစာရင်းများမှာ အောက်ပါအတိုင်းဖြစ်သည်။
| Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name |
| :----------------------: | :-----------: | :----------------: | ------------------------------------------: |
| -0.8 | 7.7 | 8.5 | Best Western Hotel Astoria |
| -0.7 | 8.8 | 9.5 | Hotel Stendhal Place Vend me Paris MGallery |
| -0.7 | 7.5 | 8.2 | Mercure Paris Porte d Orleans |
| -0.7 | 7.9 | 8.6 | Renaissance Paris Vendome Hotel |
| -0.5 | 7.0 | 7.5 | Hotel Royal Elys es |
| ... | ... | ... | ... |
| 0.7 | 7.5 | 6.8 | Mercure Paris Op ra Faubourg Montmartre |
| 0.8 | 7.1 | 6.3 | Holiday Inn Paris Montparnasse Pasteur |
| 0.9 | 6.8 | 5.9 | Villa Eugenie |
| 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux |
| 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar |
၁နာရီကျော်ကွာခြားမှုရှိသော ဟိုတယ်တစ်ခုသာရှိသောကြောင့် ကွာခြားမှုကို လက်မခံခြင်းနှင့် ကိုယ်တိုင်တွက်ချက်ထားသော အပျမ်းမျှမှတ်ချက်ကို အသုံးပြုနိုင်ပါသည်။
6. ```python
# with lambdas:
6. `Negative_Review` ကော်လံတွင် "No Negative" အကြောင်းအရာရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပေးပါ။
7. `Positive_Review` ကော်လံတွင် "No Positive" အကြောင်းအရာရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပေးပါ။
8. `Positive_Review` ကော်လံတွင် "No Positive" နှင့် `Negative_Review` ကော်လံတွင် "No Negative" တန်ဖိုးရှိသော စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
```python
# lambda များဖြင့်:
start = time.time()
no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1)
print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index)))
@ -225,14 +358,14 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
Number of No Positive reviews: 35946
Number of both No Negative and No Positive reviews: 127
Lambdas took 9.64 seconds
```
```
## အခြားနည်းလမ်း
## နည်းလမ်းအခြား
Lambda မသုံးဘဲ item တွေကို count လုပ်ပြီး၊ row တွေကို count လုပ်ဖို့ sum ကို အသုံးပြုပါ -
Lambda မသုံးပဲ အရာဝတ္ထုရေတွက်ခြင်းဖြင့် တခြားနည်းလမ်းဖြင့် row ရေတွက်မှုကို sum ဖြင့် ရှာပါ။
```python
# without lambdas (using a mixture of notations to show you can use both)
# လမ်ဘ်ဒါများမသုံးဘဲ (နှစ်မျိုးစလုံးသုံးနိုင်ကြောင်း ပြသရန် အသုံးပြုသော လက္ခဏာများရောစပ်မှုဖြင့်)
start = time.time()
no_negative_reviews = sum(df.Negative_Review == "No Negative")
print("Number of No Negative reviews: " + str(no_negative_reviews))
@ -250,28 +383,30 @@ Lambda မသုံးဘဲ item တွေကို count လုပ်ပြီ
Number of No Positive reviews: 35946
Number of both No Negative and No Positive reviews: 127
Sum took 0.19 seconds
```
```
127 rows မှာ `Negative_Review` နဲ့ `Positive_Review` ကော်လံတွေမှာ "No Negative" နဲ့ "No Positive" တန်ဖိုးတွေ ရှိနေတယ်ဆိုတာ သတိထားမိမှာပါ။ ဒါကဆိုရင် reviewer က ဟိုတယ်ကို နံပါတ်အဆင့်ပေးခဲ့ပေမယ့်၊ အပြုသဘော သို့မဟုတ် အနုတ်သဘော review မရေးခဲ့တာဖြစ်ပါတယ်။ ဒေတာစဉ်မှာ review မပါဝင်တဲ့ row တွေ ရှိတယ်ဆိုတာ မမျှော်လင့်ထားတာဖြစ်ပေမယ့်၊ ဒေတာကို စူးစမ်းတဲ့အခါ ဒီလို row တွေကို ရှာဖွေတွေ့ရှိရမှာပါ။
အကယ်၍ 127 စားတန်းတွင် `Negative_Review` နှင့် `Positive_Review` ကော်လံများတွင် "No Negative" နှင့် "No Positive" တန်ဖိုးရှိသည်ဟု တွေ့ရှိပါက ဤသည်မှာ ဝန်တော်သုံးသပ်သူသည် ဟိုတယ်ကို ဂဏန်းရမှတ် ပေးခဲ့သော်လည်း အနုတ်/အပါ အခြားသုံးသပ်ချက် မရေးချင်ခဲ့ခြင်း ဖြစ်သည်။ အံ့အားသင့်စရာကောင်းစွာ ဤသည်မှာ စားတန်း ၅၁၅၊၇၃၈ ထဲမှ ၁၂၇ များသာဖြစ်သဖြင့် (0.02%) မော်ဒယ် သို့မဟုတ် ရလဒ်အပေါ် မထိခိုက်မပျက်အကျိုးသက်ရောက်မှုမရှိသလောက် ဖြစ်ပါသည်၊ ဒါပေမယ့် မည်သည့် သုံးသပ်ချက်များတွင် သုံးသပ်ချက် မရှိသော စားတန်းများ ရှိနိုင်ခြင်းကို သိရှိရန် ဒေတာကို စူးစမ်းဖော်ထုတ်ရန် တန်ဖိုးရှိသည်။
အခုတော့ dataset ကို စူးစမ်းပြီးဖြစ်တဲ့အတွက်၊ နောက်သင်ခန်းစာမှာ ဒေတာကို filter လုပ်ပြီး sentiment analysis တစ်ခု ထည့်သွင်းပါမယ်။
သင်သည် ဒေတာစုစည်းမှုကို စူးစမ်းပြီးနောက်၊ နောက်တစ်ခုအတွဲတွင် ဒေတာကို စစ်ထုတ်ပြီး စိတ်ခံစားချက်သုံးသပ်မှုပေါင်းထည့်မည်။
---
## 🚀 စိန်ခေါ်မှု
---
## 🚀စိန်ခေါ်မှု
ဒီသင်ခန်းစာက ပြသသလို၊ သင့်ဒေတာနဲ့ ဒေတာရဲ့ အားနည်းချက်တွေကို နားလည်ဖို့ အရေးကြီးကြောင်း ပြသပါတယ်။ စာသားအခြေပြု ဒေတာတွေကို အထူးသဖြင့် သေချာစွာ စစ်ဆေးဖို့ လိုအပ်ပါတယ်။ စာသားအများကြီးပါတဲ့ dataset တွေကို စူးစမ်းပြီး၊ မော်ဒယ်မှာ bias သို့မဟုတ် skewed sentiment ဖြစ်စေနိုင်တဲ့ အပိုင်းတွေ ရှာဖွေကြည့်ပါ။
ယခင်သင်ခန်းစာများတွင် ကြည့်ရှုသည့်အတိုင်း၊ သင့်ဒေတာနှင့် ၎င်း၏အထူးပြကုန်များကို နားလည်ခြင်းသည် လုပ်ဆောင်မှုများကို လုပ်မည်မတိုင်မီ အရေးကြီးမှုရှိသည်ကို ဖော်ပြသည်။ စာသားအခြေပြုဒေတာများကို စူးစမ်းလိုက်ပြီး မော်ဒယ်အတွက် မှတ်ချက် အနုတ်လက္ခဏာ သို့မဟုတ် အတော်လေး ထိုလောက်မဟုတ်သော စိတ်ခံစားမှု ဖြစ်ပေါ်စေနိုင်သော နေရာများ ရှာဖွေပါ။
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## [သင်ခန်းစာပြီးစီးမှု စစ်ဆေးမှု](https://ff-quizzes.netlify.app/en/ml/)
## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
## ပြန်လည်ဆန်းစစ်ခြင်း နှင့် ကိုယ်တိုင်သင်ယူခြင်း
[ဒီ Learning Path on NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) ကို လေ့လာပြီး၊ စကားပြောနဲ့ စာသားအခြေပြု မော်ဒယ်တွေ တည်ဆောက်တဲ့အခါ အသုံးပြုနိုင်မယ့် ကိရိယာတွေကို ရှာဖွေပါ။
[NLP ကို သင်ယူရန် Learning Path အကြောင်း](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) မှာ မဆို မော်ဒယ်ဖန်တီးရာတွင် အသုံးပြုနိုင်သည့် ကိရိယာများ ရှာဖွေပါ။
## လုပ်ငန်းတာဝန်
## အလုပ်အပ်ဒါ
[NLTK](assignment.md)
[NLTK](assignment.md)
---
**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်ကြောင်း သတိပြုပါ။ မူလဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပါယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ပြောကြားချက်**
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,53 +1,76 @@
# ARIMA ဖြင့် အချိန်စီးရီးခန့်မှန်းခြေ
# ARIMA ဖြင့် အချိန်တန်းစီးရီး ခန့်မှန်းခြေ
ယခင်သင်ခန်းစာတွင်၊ အချိန်စီးရီးခန့်မှန်းခြေကို အနည်းငယ်လေ့လာပြီး အချိန်ကာလအတွင်း လျှပ်စစ်သုံးစွဲမှုအတက်အကျကို ဖော်ပြသည့် ဒေတာစဉ်ကို တင်သွင်းခဲ့ပါသည်။
ယခင်သင်ခန်းစာတွင် သင်သည် အချိန်တန်းစီးရီး ခန့်မှန်းခြေ အကြောင်း နည်းနည်း သိရှိခဲ့ပြီး အချိန်တစ်ရက်အတွင်း လျှပ်စစ်ဝန်ဆောင်မှု အပြောင်းအလဲများ ဖော်ပြထားသော ဒေတာစနစ်ကို ဖတ်ယူခဲ့သည်။
[![ARIMA အကြောင်းမိတ်ဆက်](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](https://youtu.be/IUSk-YDau10 "ARIMA အကြောင်းမိတ်ဆက်")
[![ARIMA အကြောင်းအနိမ့်ဖော်ပြချက်](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](https://youtu.be/IUSk-YDau10 "ARIMA အကြောင်းအနိမ့်ဖော်ပြချက်")
> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဗီဒီယိုကြည့်ပါ: ARIMA မော်ဒယ်များအကြောင်း အကျဉ်းချုပ်။ ဤနမူနာကို R တွင် ပြုလုပ်ထားသော်လည်း၊ အယူအဆများသည် အထွေထွေသဘောတူပါသည်။
> 🎥 ဗီဒီယိုကို ကြည့်ရန် အပေါ်ကို ဓာတ်ပုံနှိပ်ပါ။ ARIMA မော်ဒယ်များ၏ အနိမ့်ဖော်ပြချက်တို။ ဥပမာအား R မှာ ပြုလုပ်ထားသော်လည်း အကြောင်းအရာများသည် အားလုံးအတွက် ကျင်းပအသုံးပြုနိုင်သည်။
## [သင်ခန်းစာမတိုင်မီ မေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
## [ဘာသာရပ်မတိုင်ခင် စစ်ဆေးရန်မေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
## မိတ်ဆက်
## အကိုယ်တိုင်မိတ်ဆက်ခြင်း
ဤသင်ခန်းစာတွင်၊ [ARIMA: *A*uto*R*egressive *I*ntegrated *M*oving *A*verage](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average) ဖြင့် မော်ဒယ်များတည်ဆောက်ရန် နည်းလမ်းတစ်ခုကို ရှာဖွေပါမည်။ ARIMA မော်ဒယ်များသည် [non-stationarity](https://wikipedia.org/wiki/Stationary_process) ပြသသည့် ဒေတာများကို အထူးသင့်လျော်သည်။
ဒီသင်ခန်းစာတွင် သင်သည် [ARIMA: *A*uto*R*egressive *I*ntegrated *M*oving *A*verage](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)ဖြင့် မော်ဒယ်များ တည်ဆောက်နည်း အထူးရှုသွားမည်ဖြစ်သည်။ ARIMA မော်ဒယ်များသည် [non-stationarity](https://wikipedia.org/wiki/Stationary_process) ပြသသော ဒေတာများအတွက် အထူးသင့်တော်သည်။
## အထွေထွေအယူအဆများ
## အထွေထွေ အယူအဆများ
ARIMA ကို အသုံးပြုနိုင်ရန် အောက်ပါအယူအဆများကို သိရှိထားရန် လိုအပ်ပါသည်-
ARIMA နှင့် အလုပ်လုပ်နိုင်ရန် သိရန်လိုသော အယူအဆအချို့ရှိသည်။
- 🎓 **Stationarity**: စာရင်းဇယားအရ၊ stationarity သည် အချိန်အလိုက် ရွှေ့လျားသည့်အခါ မပြောင်းလဲသော ဒေတာဖြန့်ဖြူးမှုကို ဆိုလိုသည်။ Non-stationary ဒေတာသည် အဆင့်အတက်အကျကြောင့် အတက်အကျပြသပြီး၊ ခန့်မှန်းရန်အတွက် ပြောင်းလဲမှုများ လိုအပ်သည်။ ဥပမာအားဖြင့် ရာသီဥတုအခြေအနေသည် ဒေတာတွင် အတက်အကျများကို ဖြစ်ပေါ်စေပြီး 'seasonal-differencing' လုပ်ငန်းစဉ်ဖြင့် ဖယ်ရှားနိုင်သည်။
- 🎓 **Stationarity**။ စာရင်းအင်းဆိုင်ရာအမြင်မှ ကြည့်လျှင်၊ stationarity သည် အချိန်အရိပ်အမြွက် ပြောင်းလဲမှုမရှိသော ဒေတာဖြစ်သည်။ non-stationary ဒေတာမှာ တိမ်ညိုမတ်မျိုးဖြစ်သော ပြောင်းလဲမှုများ ကြားသည်။ ဥပမာ တစ်ခုမှာ ရာသီဆိုင်ရာ ပြောင်းလဲမှု (seasonality) ပါဝင်ပြီး 'ရာသီပိုင်း ကွာခြားခြင်း' ဖြစ်စဉ်ဖြင့် ဖယ်ရှားနိုင်သည်။
- 🎓 **[Differencing](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**: Differencing သည် non-stationary ဒေတာကို stationarity ဖြစ်စေရန် ပြောင်းလဲခြင်းဖြစ်ပြီး၊ non-constant trend ကို ဖယ်ရှားသည်။ "Differencing သည် အချိန်စီးရီး၏ အဆင့်အတက်အကျများကို ဖယ်ရှားပြီး၊ trend နှင့် seasonality ကို ဖယ်ရှားကာ အချိန်စီးရီး၏ mean ကို တည်ငြိမ်စေသည်။" [Shixiong et al မှ စာတမ်း](https://arxiv.org/abs/1904.07632)
- 🎓 **[Differencing](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**။ ပြန်လည်ကွာခြားခြင်း (differencing) သည် non-stationary ဒေတာကို stationarity ဖြစ်စေရန် လှုပ်ရှားချက်များ ဖယ်ရှားကာ ပြောင်းလဲခြင်း ဖြစ်ပြီး "Differencing သည် အချိန်တန်းစီးရီး၏ အဆင့် ပြောင်းလဲမှုများကို ဖယ်ရှားကာ ထုံးစံနှင့် ရာသီဆိုင်ရာများကို ဖယ်ရှားပြီး အချိန်တန်းစီးရီး၏ ပျမ်းမျှတန်ဖိုးကို တည်မြဲစေသည်။" [Shixiong et al စာတမ်း](https://arxiv.org/abs/1904.07632)
## အချိန်စီးရီးတွင် ARIMA ၏ အရေးပါမှု
## အချိန်တန်းစီးရီးကိုင်တွယ်ရာ၌ ARIMA
ARIMA ၏ အစိတ်အပိုင်းများကို ဖွင့်ရှင်းပြီး၊ အချိန်စီးရီးကို မော်ဒယ်တည်ဆောက်ရန်နှင့် ခန့်မှန်းရန် အကူအညီပေးပုံကို နားလည်ပါမည်။
ARIMA ၏ အစိတ်အပိုင်းများကို ခွဲခြမ်းစိတ်ဖြာပြီး အချိန်တန်းစီးရီး မော်ဒယ်တည်ဆောက်ရာတွင် အထောက်အကူဖြစ်စေသည်ကို သိရှိကြရအောင်။
- **AR - AutoRegressive**: Autoregressive မော်ဒယ်များသည် အတိတ်ဒေတာများကို 'နောက်' ပြန်ကြည့်ကာ ခန့်မှန်းချက်များ ပြုလုပ်သည်။ ဥပမာအားဖြင့် ခဲတံရောင်းအား၏ လစဉ်ဒေတာသည် 'evolving variable' အဖြစ် သတ်မှတ်နိုင်သည်။ [wikipedia](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)
- **AR - AutoRegressive အတွက်**။ Autoregressive မော်ဒယ်များသည် အမည်အရ ယခင်အချိန်များကို ကြည့်၍ ဒေတာတွင် တွေ့ရသော တန်ဖိုးများကို စုဆောင်းကာ ခန့်မှန်းချက်များပြုစုသည်။ ယင်း ယခင်တန်ဖိုးများကို 'lags' ဟုခေါ်သည်။ ဥပမာအားဖြင့် သစ်သားပင်ဆွဲ စီးဝယ်ရောင်းအားအတွက် လစဉ်ရောင်းအား ဒေတာဟာ 'ဖွံ့ဖြိုးရွှင်လာသော အသေးစိတ်' များအနေနှင့် တွက်ချက်သည်။ ဤမော်ဒယ်သည် "အဓိကစိတ်ဝင်စားမှုရှိသော အသေးစိတ်သည် မိမိ၏ ယခင်တန်ဖိုးများပေါ် အခြေခံ၍ ပြန်လည်ခန့်မှန်းခြေခံရသည်။" [wikipedia](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)
- **I - Integrated**: ARIMA ၏ 'I' သည် [integrated](https://wikipedia.org/wiki/Order_of_integration) aspect ကို ဆိုလိုသည်။ Differencing လုပ်ငန်းစဉ်များကို အသုံးပြုကာ non-stationarity ကို ဖယ်ရှားသည်။
- **I - Integrated အတွက်**။ ARMA မော်ဒယ်များနှင့် ကွဲပြားပြီး 'I' ဆိုသည်မှာ *[integrated](https://wikipedia.org/wiki/Order_of_integration)* အချက်ဖြစ်သည်။ Differencing လုပ်ငန်းစဉ်များ ဖြင့် non-stationarity ဖယ်ရှားရာတွင် ဒေတာသည် 'integrated' ဖြစ်သည်။
- **MA - Moving Average**: [Moving-average](https://wikipedia.org/wiki/Moving-average_model) aspect သည် lag များ၏ လက်ရှိနှင့် အတိတ်တန်ဖိုးများကို ကြည့်ကာ output variable ကို သတ်မှတ်သည်။
- **MA - Moving Average အတွက်**။ ဤမော်ဒယ်၏ [moving-average](https://wikipedia.org/wiki/Moving-average_model) အစိတ်အပိုင်းသည် ယခုနှင့် ယခင် လက်တွေ့တန်ဖိုးများအား စစ်ဆေးသည့် output မဟာဗျူဟာဖြစ်သည်။
အကျဉ်းချုပ်: ARIMA သည် အချိန်စီးရီးဒေတာ၏ အထူးပုံစံနှင့် အနီးစပ်ဆုံးဖြစ်စေရန် မော်ဒယ်တည်ဆောက်ရန် အသုံးပြုသည်။
စာအုတ်တင်လိုက်ပါ။ ARIMA ကို အချိန်တန်းစီးရီး ဒေတာ အမျိုးအစားအတွက် အလွန်နီးကပ်စွာ မော်ဒယ် ပြုလုပ်ရန် အသုံးပြုသည်။
## လေ့ကျင့်ခန်း - ARIMA မော်ဒယ်တည်ဆောက်ခြင်း
## လေ့ကျင့်ခန်း - ARIMA မော်ဒယ် တည်ဆောက်ခြင်း
ဤသင်ခန်းစာ၏ [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA/working) ဖိုလ်ဒါကို ဖွင့်ပြီး [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/2-ARIMA/working/notebook.ipynb) ဖိုင်ကို ရှာပါ။
ဒီသင်ခန်းစာမှ [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA/working) ဖိုလ်ဒါကိုဖွင့်ပြီး [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/2-ARIMA/working/notebook.ipynb) ဖိုင်ကိုရှာပါ။
1. `statsmodels` Python library ကို notebook တွင် run လုပ်ပါ။ ARIMA မော်ဒယ်များအတွက် လိုအပ်ပါသည်။
1. notebook များကို `statsmodels` Python စာကြည့်တိုက်ကို တင်ရန် လည်ပတ်ပါ။ ARIMA မော်ဒယ်များအတွက် လိုအပ်ပါသည်။
1. လိုအပ်သော libraries များကို load လုပ်ပါ။
1. လိုအပ်သော စာကြည့်တိုက်များကို တင်ပါ
1. ဒေတာကို `/data/energy.csv` ဖိုင်မှ Pandas dataframe သို့ load လုပ်ပြီး ကြည့်ပါ:
1. အခု အချက်အလက်တွေကို ကွက်ပန်းပြသရန် အသုံးဝင်သော စာကြည့်တိုက်များကို အပိုတင်ပါ။
```python
import os
import warnings
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import datetime as dt
import math
from pandas.plotting import autocorrelation_plot
from statsmodels.tsa.statespace.sarimax import SARIMAX
from sklearn.preprocessing import MinMaxScaler
from common.utils import load_data, mape
from IPython.display import Image
%matplotlib inline
pd.options.display.float_format = '{:,.2f}'.format
np.set_printoptions(precision=2)
warnings.filterwarnings("ignore") # သတိပေးချက်မက်ဆေ့မြေ့များကို မက်မရောက်စေရန် သတ်မှတ်ပါ
```
1. `/data/energy.csv` ဖိုင်ထဲမှ ဒေတာအား Pandas dataframe သို့ တင်ပြီး ကြည့်ရှုပါ။
```python
energy = load_data('./data')[['load']]
energy.head(10)
```
1. 2012 ခုနှစ် ဇန်နဝါရီမှ 2014 ခုနှစ် ဒီဇင်ဘာအထိရှိသော လျှပ်စစ်သုံးစွဲမှုဒေတာအား plot လုပ်ပါ:
1. ၂၀၁၂ ခုနှစ် ဇန်နဝါရီလမှ ၂၀၁၄ ခုနှစ် ဒီဇင်ဘာလ အထိ ပါဝင်သော စွမ်းအင်ဒေတာအား မျက်နှာပြင်တွင် ဖော်ပြပါ။ ယခင်သင်ခန်းစာတွင် တွေ့ခဲ့သောအတိုင်း မထင်မှတ်ထားသော အချက်မရှိပါ:
```python
energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
@ -56,22 +79,22 @@ ARIMA ၏ အစိတ်အပိုင်းများကို ဖွင့
plt.show()
```
ယခု မော်ဒယ်တည်ဆောက်ရန် စတင်ပါ။
ယခု မော်ဒယ် တည်ဆောက်ကြရအောင်!
### Training နှင့် Testing ဒေတာစဉ်များ ဖန်တီးခြင်း
### လေ့ကျင့်ရန်နှင့် စမ်းသပ်ရန် ဒေတာများကို ဖန်တီးခြင်း
ဒေတာကို load လုပ်ပြီးပါက၊ train နှင့် test sets သို့ ခွဲခြားပါ။ Train set တွင် မော်ဒယ်ကို လေ့ကျင့်ပြီး၊ test set တွင် accuracy ကို စစ်ဆေးပါမည်။
ယခု ဒေတာတင်ပြီးဖြစ်သည်ဖြစ်၍ လေ့ကျင့်ရန် (train) နှင့် စမ်းသပ်ရန် (test) ဒေတာများအဖြစ် ခွဲနိုင်ပါသည်။ မော်ဒယ်ကို လေ့ကျင့်ရန် trainဒေတာမှာ အသုံးပြုပါမည်။ ထုံးစံအတိုင်း မော်ဒယ် လေ့ကျင့်ပြီးနောက် S test ဒေတာဖြင့် တိကျမှုအား စစ်ဆေးပါမည်။ စမ်းသပ်မှု ဒေတာက လေ့ကျင့်မှု ဒေတာထက်နောက်ပိုင်း အချိန်ကာလကို ဖုံးလွှမ်းထားသည့်အဆင့်ဖြစ်ရမည်။
1. 2014 ခုနှစ် စက်တင်ဘာ 1 မှ အောက်တိုဘာ 31 အထိ train set အဖြစ် သတ်မှတ်ပါ။ Test set သည် 2014 ခုနှစ် နိုဝင်ဘာ 1 မှ ဒီဇင်ဘာ 31 အထိ ဖြစ်ပါမည်:
1. ၂၀၁၄ ခုနှစ် စက်တင်ဘာ ၁ ရက်မှ အောက်တိုဘာ ၃၁ ရက် ပထမနှစ်လအထိ သင်တန်းဒေတာသာ ခွဲဝေပေးပါ။ စမ်းသပ် ဒေတာသည် ၂၀၁၄ ခုနှစ် နိုဝင်ဘာ ၁ ရက်မှ ဒီဇင်ဘာ ၃၁ ရက်အထိ ဖြစ်ပါသည်။
```python
train_start_dt = '2014-11-01 00:00:00'
test_start_dt = '2014-12-30 00:00:00'
```
ေတာသည် ရာသီဥတုအတက်အကျများကို ပြသသော်လည်း၊ နောက်ဆုံးရက်များနှင့် ဆင်တူသည်။
ီဒေတာမှာ နေ့စဉ် စွမ်းအင်အသုံးအနှုန်းကို ပြသသည့်အတွက် ရာသီဆိုင်ရာ ဖွဲ့စည်းမှုရှိသော်လည်း နောက်ဆုံးနေ့များထက် ပိုမိုနီးစပ်သည့် အသုံးအနှုန်းများ ဖြစ်သည်။
1. ခွဲခြားထားသော train နှင့် test sets ကို visualization ပြုလုပ်ပါ:
1. ကွဲပြားချက်များကို ကိုင်တွယ် ကြည့်ပါ။
```python
energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \
@ -82,15 +105,17 @@ ARIMA ၏ အစိတ်အပိုင်းများကို ဖွင့
plt.show()
```
![training and testing data](../../../../7-TimeSeries/2-ARIMA/images/train-test.png)
![training and testing data](../../../../translated_images/my/train-test.8928d14e5b91fc94.webp)
ထို့ကြောင့် training ဒေတာကို သာသာလေး ခြေနေချိန်တွင် သင်ယူခြင်း သင့်လျော်သည်။
> မှတ်ချက်: ARIMA မော်ဒယ် fitting လုပ်စဉ်တွင် in-sample validation ကို အသုံးပြုသဖြင့် validation data ကို မထည့်ပါ။
> မှတ်ချက် - ARIMA မော်ဒယ် တည်ဆောက်ရာတွင် sample validation ကို အသုံးပြုသဖြင့် validation ဒေတာကို ထည့်မသုံးပါ။
### Training အတွက် ဒေတာကို ပြင်ဆင်ခြင်း
### လေ့ကျင့်ရန် အချက်အလက်များ ပြင်ဆင်ခြင်း
Training အတွက် ဒေတာကို filter နှင့် scale ပြုလုပ်ပါ။
ယခုသင်အချက်အလက်များကို စစ်ထုတ်ခြင်းနှင့် အတိုင်းအတာပြောင်းခြင်း ဖျော်ဖြေရန် လိုပါသည်။ သင့်လိုအပ်သည့် အချိန်ကာလနှင့် ကော်လံများ ကန့်သတ်ပြီး ဒေတာကို စစ်ထုတ်ပြီး၊ 0 နှင့် 1 ကြားသို့ အတိုင်းအတာပြောင်းပါ။
1. Train နှင့် test sets အတွက် လိုအပ်သော column များကို filter လုပ်ပါ:
1. အစောပိုင်းဒေတာတွင် ယင်းအချိန်ကာလများနှင့် 'load' ကော်လံနှင့် ရက်စွဲကော်လံ များသာ ပါဝင်အောင် စစ်ထုတ်ပါ။
```python
train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]
@ -100,7 +125,14 @@ Training အတွက် ဒေတာကို filter နှင့် scale ပ
print('Test data shape: ', test.shape)
```
1. ဒေတာကို (0, 1) interval အတွင်း scale ပြုလုပ်ပါ:
ဒေတာ၏ အပုံစံကို ကြည့်ရှုနိုင်သည်။
```output
Training data shape: (1416, 1)
Test data shape: (48, 1)
```
1. ဒေတာကို (0, 1) အတွင်း အတိုင်းအတာပြောင်းပါ။
```python
scaler = MinMaxScaler()
@ -108,7 +140,7 @@ Training အတွက် ဒေတာကို filter နှင့် scale ပ
train.head(10)
```
1. Original ဒေတာနှင့် scaled ဒေတာကို ကြည့်ပါ:
1. မူလ ဒေတာနှင့် အတိုင်းအတာပြောင်းပြီး ဒေတာကို ကြည့်ရှုပါ။
```python
energy[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']].rename(columns={'load':'original load'}).plot.hist(bins=100, fontsize=12)
@ -116,27 +148,50 @@ Training အတွက် ဒေတာကို filter နှင့် scale ပ
plt.show()
```
![original](../../../../7-TimeSeries/2-ARIMA/images/original.png)
![original](../../../../translated_images/my/original.b2b15efe0ce92b87.webp)
> Original ဒေတာ
> မူလ ဒေတာ
![scaled](../../../../7-TimeSeries/2-ARIMA/images/scaled.png)
![scaled](../../../../translated_images/my/scaled.e35258ca5cd3d43f.webp)
> Scaled ဒေတာ
> အတိုင်းအတာပြောင်းပြီး ဒေတာ
### ARIMA ကို အကောင်အထည်ဖော်ခြင်း
1. အဲဒီအတိုင်းအတာပြောင်းထားသော ဒေတာနဲ့ စမ်းသပ် ဒေတာကိုလည်း အတိုင်းအတာပြောင်းပါ။
`statsmodels` library ကို အသုံးပြုကာ ARIMA ကို အကောင်အထည်ဖော်ပါ။
```python
test['load'] = scaler.transform(test)
test.head()
```
### ARIMA ကို အသုံးပြုပါ
ယခု ARIMA ကို အသုံးပြုရမှာ ဖြစ်ပြီး ယခင်တွင် တင်ထားသော `statsmodels` စာကြည့်တိုက်ကို အသုံးပြုပါမည်။
ယခုအဆင့်တွင် အဆင့်အလိုက် လုပ်ဆောင်ရမည့် အဆင့်များမှာ
1. `SARIMAX()` ကို ခေါ်ပြီး မော်ဒယ် ပါရာမီတာများ p, d, q နှင့် P, D, Q ကို ဖြည့်ပါ။
2. လေ့ကျင့်မှု ဒေတာအတွက် `fit()` လုပ်ဆောင်ချက်ကို ခေါ်ကာ မော်ဒယ်ကို ပြင်ဆင်ပါ။
3. ခန့်မှန်းရန် `forecast()` ကို ခေါ်ပြီး ခန့်မှန်းမည့် အဆင့်များ (horizon) အရေအတွက် သတ်မှတ်ပါ။
1. Horizon value ကို သတ်မှတ်ပါ။ ဥပမာအားဖြင့် 3 နာရီ:
> 🎓 ဒီ parameter တို့သည် ဘာအတွက်လဲ? ARIMA မော်ဒယ်တွင် ခန့်မှန်းရန် အဓိက အချက် ၃ ခု ရှိသည်။ ၎င်းမှာ ရာသီဆိုင်ရာ (seasonality), ချဲ့ထွင်မှု (trend), နှင့် အသံညှိ (noise) ဖြစ်သည်။ အကြောင်းအရာများမှာ:
`p`: မော်ဒယ်တွင် auto-regressive အပိုင်းနှင့် ဆက်စပ်မှုရှိပြီး *အရင်*တန်ဖိုးများကိုယူပါသည်။
`d`: မော်ဒယ်၏ integrated အပိုင်းနှင့် ဆက်စပ်မှုရှိပြီး *differencing* ထည့်သွင်းသည့်အတိုးအကျယ်ကို အကျိုးသက်ရောက်စေသည်။
`q`: မော်ဒယ်တွင် moving-average အပိုင်းနှင့် ဆက်စပ်သည်။
> မှတ်ချက်- သင့်ဒေတာတွင် ရာသီဆိုင်ရာအစိတ်အပိုင်းရှိပါက - ဒါမှမဟုတ် - ရာသီ ARIMA မော်ဒယ် (SARIMA) ကိုအသုံးပြုသည်။ ၎င်းအတွက် `P`, `D`, `Q` parameter များကိုအသုံးပြုရပြီး, p, d, q နှင့် တူညီသည်ဟုဆိုပါလျက် ရာသီဆိုင်ရာ component များအတွက် အသုံးပြုသည်။
1. သင့်နှစ်သက်ရာ horizon ကို သတ်မှတ်ပါ။ ၃ နာရီ ကြိုးစားကြည့်ရအောင်။
```python
# Specify the number of steps to forecast ahead
# ရှေ့ကြိုခန့်မှန်းရန်ခြေလှမ်းအရေအတွက်ကို ပြသပါ။
HORIZON = 3
print('Forecasting horizon:', HORIZON, 'hours')
```
1. Parameters များကို manual ရွေးချယ်ပါ:
ARIMA မော်ဒယ် parameter များအတွက် အကောင်းဆုံးတန်ဖိုးရွေးချယ်ခြင်းသည် စိတ်ခံစားချက်နှင့် အချိန်ယူမှုကြောင့် အခက်အခဲရှိနိုင်သည်။ `auto_arima()` ကို [`pyramid` စာကြည့်တိုက်မှ](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html) အသုံးပြုနိုင်သည်၊
1. ယခုအချိန်တွင် လက်ဖြင့် ရွေးချယ်၍ မော်ဒယ်ကောင်းမလား ကြိုးစားကြည့်ပါ။
```python
order = (4, 1, 0)
@ -148,13 +203,23 @@ Training အတွက် ဒေတာကို filter နှင့် scale ပ
print(results.summary())
```
> 🎓 Parameters များသည် seasonality, trend, နှင့် noise ကို မော်ဒယ်တည်ဆောက်ရန် အရေးပါသည်။
အဖြေများ စာရင်းကို ပုံနှိပ်ပြပါမည်။
### မော်ဒယ်ကို အကဲဖြတ်ခြင်း
သင့်ပထမဆုံး မော်ဒယ်ကို တည်ဆောက်ပြီးပြီ! ယခု ဒီမော်ဒယ်ကို ရှာဖွေရန် လိုအပ်သည်။
Walk-forward validation ကို အသုံးပြုကာ မော်ဒယ်ကို အကဲဖြတ်ပါ။
### သင့် မော်ဒယ်ကို တိုင်းတာခြင်း
1. Test data point များကို horizon step အလိုက် ဖန်တီးပါ:
သင့်မော်ဒယ်အား `walk forward` စိစစ်မှုဖြင့် စမ်းသပ်နိုင်သည်။ လက်တွေ့တွင် အချိန်တန်းစီးရီး မော်ဒယ်များသည် ထပ်တလဲလဲ ပြန်လည်လေ့ကျင့်သည်။ ၎င်းအားဖြင့် မော်ဒယ်သည် အချိန်တိုင်းတွင် အကောင်းဆုံး ခန့်မှန်းချက်ဖော်ဆောင်နိုင်စေသည်။
အချိန်တန်းစီးရီးအစပိုင်းမှ စ၍ ဒီနည်းလမ်းဖြင့် သင်ယူရန် ဒေတာပေါ် မော်ဒယ်ကို လေ့ကျင့်ပါ။ နောက်ထပ် အချိန်အပိုင်းတွင် ခန့်မှန်းချက်ပြုလုပ်ပါ။ ခန့်မှန်းချက်ကို သိရှိပြီးသားတန်ဖိုးနှင့် နှိုင်းယှဉ်၍ တန်ဖိုးတိုင်း သိရှိပြီးမှ ပြန်လည် လေ့ကျင့်မှုလက်စွဲမှာ ထပ်ခေါင်းထည့်ပါ။ ဒီလုပ်ငန်းစဉ်ကို ထပ်လည်ပြုလုပ်ပါ။
> မှတ်ချက်- သင်ယူမှု data window ကို တည်တံ့စေဖို့ အဆင့်မြှင့်သင့်ပါသည်။ မည်သည့်ဖော်ပြချက်အသစ်ကို training set တွင် ထည့်သွင်းပါက အသစ်ထည့်သည့် အစိတ်အပိုင်းကို စတင်နေရာမှ ဖယ်ရှားရမည်။
ဤလုပ်ငန်းစဉ်သည် မော်ဒယ်၏ လုပ်ဆောင်ချက်ကို ပိုမိုတိကျစွာ ခန့်မှန်းရန် အထောက်အကူပြုသည်။ သို့သော် မော်ဒယ်များ များစွာ ဖန်တီးရခြင်းကြောင့် ကြိုတင်တွက်ချက်မှုဝက်လက်များ ဖြစ်ပေါ်နိုင်သည်။ ဒေတာ သေးငယ်ပါက သို့မဟုတ် မော်ဒယ် လွယ်ကူပါက ခုံလုပ်နိုင်သည်၊ သို့မဟုတ် ပမာဏကြီးလျှင် ပြဿနာဖြစ်ပေါ်နိုင်သည်။
Walk-forward စစ်ဆေးမှုသည် အချိန်တန်းစီးရီး မော်ဒယ် စစ်ဆေးမှု၏ ရွှေစံချိန်ဖြစ်ပြီး သင့်ပရောဂျက်များတွင် အကြံပြုသည်။
1. ပထမဆုံး HORIZON အဆင့်အတွက် စမ်းသပ်ဒေတာ များကို ဖန်တီးပါ။
```python
test_shifted = test.copy()
@ -166,11 +231,21 @@ Walk-forward validation ကို အသုံးပြုကာ မော်ဒ
test_shifted.head(5)
```
1. Sliding window approach ဖြင့် prediction ပြုလုပ်ပါ:
| | | load | load+1 | load+2 |
| ---------- | -------- | ---- | ------ | ------ |
| 2014-12-30 | 00:00:00 | 0.33 | 0.29 | 0.27 |
| 2014-12-30 | 01:00:00 | 0.29 | 0.27 | 0.27 |
| 2014-12-30 | 02:00:00 | 0.27 | 0.27 | 0.30 |
| 2014-12-30 | 03:00:00 | 0.27 | 0.30 | 0.41 |
| 2014-12-30 | 04:00:00 | 0.30 | 0.41 | 0.57 |
ဒေတာသည် horizon point အတိုင်း အမြန်ကြောင့် ရွှေ့လျားထားသည်။
1. စမ်းသပ် ဒေတာတွင် ဒီ sliding window နည်းကို အသုံးပြု၍ loop ဇယားအတိုင်း ခန့်မှန်းချက်များ ပြုလုပ်ပါ။
```python
%%time
training_window = 720 # dedicate 30 days (720 hours) for training
training_window = 720 # လေ့ကျင့်မှုအတွက် ၃၀ ရက် (၇၂၀ နာရီ) သီးသန့် ပေးပါ
train_ts = train['load']
test_ts = test_shifted
@ -189,14 +264,27 @@ Walk-forward validation ကို အသုံးပြုကာ မော်ဒ
yhat = model_fit.forecast(steps = HORIZON)
predictions.append(yhat)
obs = list(test_ts.iloc[t])
# move the training window
# လေ့ကျင့်သင်ကြားမှု ပြတင်းပေါ်ကို ရွှေ့ပါ
history.append(obs[0])
history.pop(0)
print(test_ts.index[t])
print(t+1, ': predicted =', yhat, 'expected =', obs)
```
1. Prediction နှင့် actual load ကို နှိုင်းယှဉ်ပါ:
သင်ယူမှုဖြစ်စဉ်ကို ကြည့်နေရနိုင်သည်။
```output
2014-12-30 00:00:00
1 : predicted = [0.32 0.29 0.28] expected = [0.32945389435989236, 0.2900626678603402, 0.2739480752014323]
2014-12-30 01:00:00
2 : predicted = [0.3 0.29 0.3 ] expected = [0.2900626678603402, 0.2739480752014323, 0.26812891674127126]
2014-12-30 02:00:00
3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795]
```
1. ခန့်မှန်းချက်များကို ပင်မ စွမ်းအင်အသုံးအနှုန်းနှင့် နှိုင်းယှဉ်ပါ။
```python
eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)])
@ -207,19 +295,30 @@ Walk-forward validation ကို အသုံးပြုကာ မော်ဒ
eval_df.head()
```
> Output: Prediction နှင့် actual load တို့၏ တိကျမှုကို စစ်ဆေးပါ။
ထွက်မည့်အချက်
| | | timestamp | h | prediction | actual |
| --- | ---------- | --------- | --- | ---------- | -------- |
| 0 | 2014-12-30 | 00:00:00 | t+1 | 3,008.74 | 3,023.00 |
| 1 | 2014-12-30 | 01:00:00 | t+1 | 2,955.53 | 2,935.00 |
| 2 | 2014-12-30 | 02:00:00 | t+1 | 2,900.17 | 2,899.00 |
| 3 | 2014-12-30 | 03:00:00 | t+1 | 2,917.69 | 2,886.00 |
| 4 | 2014-12-30 | 04:00:00 | t+1 | 2,946.99 | 2,963.00 |
### မော်ဒယ်၏ တိကျမှုကို စစ်ဆေးခြင်း
Mean absolute percentage error (MAPE) ကို အသုံးပြုကာ မော်ဒယ်၏ တိကျမှုကို စစ်ဆေးပါ။
> **🧮 သင်္ချာကို ပြပါ**
>
> ![MAPE](../../../../7-TimeSeries/2-ARIMA/images/mape.png)
နာရီစဉ် ဒေတာများ၏ ခန့်မှန်းချက်များကို တကယ့် စွမ်းအင်အသုံးအနှုန်းနှင့် နှိုင်းယှဉ်ပါ။ ဘယ်လောက်တိကျသနည်း။
### မော်ဒယ်တိကျမှု စစ်ဆေးခြင်း
သင်၏ မော်ဒယ်၏ တိကျမှုကို ခန့်မှန်းချက် အားလုံးတွင် သူ့ရဲ့ mean absolute percentage error (MAPE) ဖြင့် စမ်းသပ်ပါ။
> **🧮 ဂဏန်းသိပ္ပံကို ပြပါ**
>
> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) ကို အထက်ပါဖော်ပြထားသော ဖော်မြူလာအတိုင်း အချိုးအစားအဖြစ် သတ်မှတ်ပြီး ခန့်မှန်းချက်တိကျမှုကို ပြရန် အသုံးပြုသည်။ အမှန်တကယ်ဖြစ်ရပ်နှင့် ခန့်မှန်းချက်အကြားကွာဟချက်ကို အမှန်တကယ်ဖြစ်ရပ်ဖြင့် ခွဲခြားသည်။
> ![MAPE](../../../../translated_images/my/mape.fd87bbaf4d346846.webp)
>
> "ဤတွက်ချက်မှုတွင် အပြည့်အဝတန်ဖိုးကို အချိန်အပိုင်းအခြားတိုင်းတွင် ခန့်မှန်းထားသော အချက်အလက်များအတွက် စုစုပေါင်းတွက်ချက်ပြီး ခန့်မှန်းထားသော အချက်အလက်အရေအတွက် n ဖြင့် ခွဲခြားသည်။" [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error)
1. ကုဒ်ဖြင့် ဆွဲချက်ကို ဖော်ပြပါ။
> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) ကို ခန့်မှန်းချက်တိကျမှုအနေဖြင့် အထက်ဖော်ပြထားသော ဖော်မြူလာအား အသုံးပြုသည်။ actual<sub>t</sub> နှင့် predicted<sub>t</sub> ကြား ကွာခြားမှုကို actual<sub>t</sub> ဖြင့် 나누다။ "ဤ ဂဏန်းတွက်ချက်မှု များကို အချိန်တိုင်း မှတ်တမ်းပြီး နောက်ဆုံးတွင် ခန့်မှန်းချက်အရေအတွက် n ဖြင့် ညှိသည်။" [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error)
1. သင်္ချာညွှန်းချက်ကို ကုဒ်အနေဖြင့်ဖေါ်ပြပါ။
```python
if(HORIZON > 1):
@ -233,9 +332,9 @@ Mean absolute percentage error (MAPE) ကို အသုံးပြုကာ
print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%')
```
တစ်ဆင့်ခန့်မှန်းချက် MAPE: 0.5570581332313952 %
တစ်ဆင့် ကောက်ချက် MAPE: 0.5570581332313952 %
1. အဆင့်များစွာခန့်မှန်းချက် MAPE ကို ပုံနှိပ်ပါ။
1. မျိုးစုံတစ်ဆင့် ကောက်ချက် MAPE ကို ပုံနှိပ်ပါ။
```python
print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%')
@ -245,17 +344,17 @@ Mean absolute percentage error (MAPE) ကို အသုံးပြုကာ
Multi-step forecast MAPE: 1.1460048657704118 %
```
ိမ့်သောနံပါတ်က အကောင်းဆုံးဖြစ်သည်။ MAPE 10 ရှိသောခန့်မှန်းချက်တစ်ခုသည် 10% မှားနေသည်ဟု ဆိုလိုသည်။
ည်းနည်းနိမ့်တဲ့ နံပါတ်က အကောင်းဆုံးပါ: MAPE 10 ရတဲ့ ကောက်ချက်ဟာ 10% အမှားရှိတယ်လို့ သတ်မှတ်နိုင်ပါတယ်။
1. သို့သော် အမြဲတမ်းလိုလို၊ ဒီလိုတိကျမှုတိုင်းတာမှုကို မြင်ရလွယ်အောင် ပုံဆွဲကြည့်ရင် ပိုမိုကောင်းမွန်သည်
1. ဒါပေမယ့် အမြဲလိုအပ်သလို ဒီအမျိုးအစား တိကျမှုတိုင်းတာမှုကို မြင်ရှုဖို့ ပိုလွယ်ကူပါတယ်၊ ထို့ကြောင့် ပြသကြပါစို့
```python
if(HORIZON == 1):
## Plotting single step forecast
## တစ်ဆင့် အနာဂတ်ခန့်မှန်းချက် ဆွဲကြည့်ခြင်း
eval_df.plot(x='timestamp', y=['actual', 'prediction'], style=['r', 'b'], figsize=(15, 8))
else:
## Plotting multi step forecast
## မျိုးစုံအဆင့် အနာဂတ်ခန့်မှန်းချက် ဆွဲကြည့်ခြင်း
plot_df = eval_df[(eval_df.h=='t+1')][['timestamp', 'actual']]
for t in range(1, HORIZON+1):
plot_df['t+'+str(t)] = eval_df[(eval_df.h=='t+'+str(t))]['prediction'].values
@ -275,27 +374,29 @@ Mean absolute percentage error (MAPE) ကို အသုံးပြုကာ
plt.show()
```
![အချိန်စီးရီးမော်ဒယ်တစ်ခု](../../../../7-TimeSeries/2-ARIMA/images/accuracy.png)
![a time series model](../../../../translated_images/my/accuracy.2c47fe1bf15f44b3.webp)
🏆 တိကျမှုကောင်းမွန်သော မော်ဒယ်ကို ဖော်ပြထားသည့် အလွန်ကောင်းမွန်သော ပုံတစ်ပုံ။ အလုပ်ကောင်းပါတယ်!
🏆 တိကျမှုကောင်းတဲ့ မော်ဒယ်ကို ဖော်ပြသည့် အလွန်လှပတဲ့ ပုံတစ်ပုံ ပါ။ ကောင်းစွာဆောင်ရွက်ပြီးပါပြီ။
---
## 🚀စိန်ခေါ်မှု
## 🚀 စိန်ခေါ်မှု
အချိန်စီးရီးမော်ဒယ်တစ်ခု၏ တိကျမှုကို စမ်းသပ်နိုင်သော နည်းလမ်းများကို လေ့လာပါ။ ဒီသင်ခန်းစာတွင် MAPE ကိုသာ ထိတွေ့ခဲ့ကြပေမယ့် သင်အသုံးပြုနိုင်သည့် အခြားနည်းလမ်းများ ရှိပါသလား။ ၎င်းတို့ကို သုတေသနပြုပြီး မှတ်ချက်ထည့်ပါ။ အသုံးဝင်သော စာရွက်စာတမ်းကို [ဒီမှာ](https://otexts.com/fpp2/accuracy.html) တွေ့နိုင်ပါသည်။
အချိန်အဆက်အတန်း မော်ဒယ် တိကျမှုကို စမ်းသပ်ရန် နည်းလမ်းများကို အပြည့်အဝ လေ့လာပါ။ ဤသင်ခန်းစာတွင် MAPE ကို အနည်းငယ် ပြောဆိုထားပြီး အခြားနည်းလမ်းများရှိပါသလား? သူတို့ကို ရှာဖွေပြီး မှတ်ချက်ထိုးပါ။ အကူအညီဖြစ်သည့် စာရွက်ကို [ဒီမှာ](https://otexts.com/fpp2/accuracy.html) ရရှိနိုင်သည်။
## [သင်ခန်းစာပြီးနောက် မေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
## [သင်ခန်းစာပြီးနောက် စစ်ဆေးမှု](https://ff-quizzes.netlify.app/en/ml/)
## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
ဒီသင်ခန်းစာသည် ARIMA ဖြင့် အချိန်စီးရီးခန့်မှန်းခြင်း၏ အခြေခံအချက်များကိုသာ ထိတွေ့သည်။ [ဒီ repository](https://microsoft.github.io/forecasting/) နှင့် ၎င်း၏ မော်ဒယ်အမျိုးအစားများကို လေ့လာခြင်းဖြင့် အချိန်စီးရီးမော်ဒယ်များ တည်ဆောက်ရန် အခြားနည်းလမ်းများကို သင်ယူရန် အချိန်ယူပါ။
ဤသင်ခန်းစာသည် ARIMA ဖြင့် အချိန်စီးဆင်းမှု မော်ဒယ်တစ်ခု၏ အခြေခံအချက်များကိုသာ ဖြတ်သန်းသည်။ အချိန်စီးဆင်းမှု မော်ဒယ်များဖန်တီးခြင်းအတွက် မော်ဒယ်အမျိုးမျိုးနှင့်အတူ ဤ [repository](https://microsoft.github.io/forecasting/) ကို ဝင်ရောက်လေ့လာ၍ သင်၏အသိပညာကို အတိုးအကျယ်ပြုပါ။
## လုပ်ငန်းတာဝန်
## တာဝန်
[ARIMA မော်ဒယ်အသစ်](assignment.md)
---
**အကြောင်းကြားချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရ အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွဲအချော်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ပြောကြားချက်**
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,47 +1,47 @@
# Reinforcement Learning နှင့် Q-Learning အကြောင်းမိတ်ဆက်
# ပြန်လည်မြှင့်တင်သင်ယူမှုပညာနှင့် Q-သင်ယူမှု မိတ်ဆက်ခြင်း
![Machine Learning တွင် reinforcement အကျဉ်းချုပ်ကို sketchnote](../../../../sketchnotes/ml-reinforcement.png)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
![စက်ရုပ်သင်ယူမှုတွင် ပြန်လည်မြှင့်တင်ခြင်းအကျဆုံးအကျဉ်းတင်ဆွဲကြောင်း](../../../../translated_images/my/ml-reinforcement.94024374d63348db.webp)
> Sketchnote ကို [Tomomi Imura](https://www.twitter.com/girlie_mac) မှ ဖန်တီးခဲ့သည်
Reinforcement learning တွင် အရေးပါသော အချက် ၃ ခုရှိသည်။ အဲဒါတွေကတော့ agent, states တစ်ချို့, နှင့် state တစ်ခုစီအတွက် actions တွေဖြစ်သည်။ သတ်မှတ်ထားသော state မှာ action တစ်ခုကို လုပ်ဆောင်ခြင်းအားဖြင့် agent သည် reward ရရှိမည်။ Super Mario ကွန်ပျူတာဂိမ်းကို ထပ်မံစဉ်းစားပါ။ သင်သည် Mario ဖြစ်ပြီး ဂိမ်းအဆင့်တစ်ခုတွင်၊ ချိုင့်စွန်းအနားမှာရပ်နေသည်။ သင့်အပေါ်မှာ coin တစ်ခုရှိသည်။ သင်သည် Mario ဖြစ်ပြီး၊ ဂိမ်းအဆင့်တစ်ခုတွင်၊ တိကျသောနေရာတွင် ရပ်နေသည်... ဒါက သင့် state ဖြစ်သည်။ ညာဘက်ကို တစ်ခြေလှမ်း (action) ရွှေ့ခြင်းသည် ချိုင့်စွန်းအောက်ကို ကျသွားစေပြီး၊ အနိမ့်သော ကိန်းဂဏန်း score ရရှိမည်။ သို့သော် jump ခလုတ်ကို နှိပ်ခြင်းဖြင့် သင် point ရရှိပြီး အသက်ရှင်နေမည်။ ဒါက အကောင်းဆုံးရလဒ်ဖြစ်ပြီး၊ သင့်ကို အကောင်းသော ကိန်းဂဏန်း score ပေးသင့်သည်။
ပြန်လည်မြှင့်တင်သင်ယူမှုတွင် အရေးကြီးသော အကြောင်းအရာသုံးခု ပါဝင်သည်။ အAgent၊ အချို့သော အခြေအနေများနှင့် အခြေအနေတိုင်းအလိုက် ကြားခံ လုပ်ဆောင်ချက်များဖြစ်သည်။ အAgent သည် ရှိသော အခြေအနေကြောင်းတွင် လုပ်ဆောင်ချက်တစ်ခုကို ဆောင်ရွက်ခြင်းဖြင့် ဆုလာဘ်ရနိုင်သည်။ ပြန်လည်စဉ်းစားပါ Super Mario ကွန်ပျူတာဂိမ်းအား။ သင်သည် Mario ဖြစ်ပြီး ဂိမ်းအဆင့်တစ်ခုတွင် တောင်တန်းကျောနားတွင် ရပ်နေနေသည်။ သင့်အပေါ်တွင် ပိုက်ဆံတစ်စက်ရှိသည်။ သင် Mario နှင့်အတူ ဂိမ်းအဆင့်အတည်ပြုဆိုင်း ... ၎င်းသည် သင့်အခြေအနေဖြစ်သည်။ ညာဘက်သို့ တစ်ခြားခြေလှမ်းတက်ခြင်း (လုပ်ဆောင်ချက်မှ) သင့်အား ကျောနေရာထက် ကျရောက်စေပြီး ဂဏန်းအနည်းငယ်သော ရမှတ်ဖြစ်ပွားစေမည်။ သို့သော် ကွေ့လျှင်ခလုတ်ကို နှိပ်ခြင်းသည် သင့်အား ရမှတ်တစ်ခုရရှိစေပြီး ကယ်တင်မှုရှိစေမည်။ ၎င်းသည် ကောင်းသောရလဒ်ဖြစ်ပြီး ကောင်းသောဂဏန်းတန်ဖိုးဖြင့် ဆုလာဘ်ပေးသင့်သည်။
Reinforcement learning နှင့် simulator (ဂိမ်း) ကို အသုံးပြုခြင်းအားဖြင့် သင်သည် အသက်ရှင်နေခြင်းနှင့် အများဆုံး point ရရှိရန် ဂိမ်းကို ကစားပုံကို သင်ယူနိုင်သည်။
ပြန်လည်မြှင့်တင်သင်ယူမှုနှင့် စမ်းသပ်ကစားနည်း (ဂိမ်း) ကို အသုံးပြု၍ ဂိမ်းကို ကစားရန် သင်ယူနိုင်ကာ အသက်ကို ကယ်တင်ခြင်း၊ အများဆုံးဆုလာဘ်ရရှိစေရန် နည်းလမ်းရှာနိုင်သည်။
[![Reinforcement Learning မိတ်ဆက်](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo)
[![ပြန်လည်မြှင့်တင်သင်ယူမှု မိတ်ဆက်](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 အထက်ပါပုံကို နှိပ်ပြီး Dmitry ၏ Reinforcement Learning အကြောင်းဆွေးနွေးမှုကို ကြည့်ပါ
> 🎥 Dmitry မှ ပြန်လည်မြှင့်တင်သင်ယူမှုအကြောင်း ဆွေးနွေးခြင်းကြားရှုရန် ဓာတ်ပုံကို နှိပ်ပါ
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## [ကြိုတင်စာမေးပွဲ](https://ff-quizzes.netlify.app/en/ml/)
## အကြိုလိုအပ်ချက်များနှင့် Setup
## မတိုင်မီလိုအပ်ချက်များနှင့် တပ်ဆင်ခြင်း
ဒီသင်ခန်းစာမှာ Python မှာ code တွေကို စမ်းသပ်မည်ဖြစ်သည်။ သင်သည် Jupyter Notebook code ကို သင်ခန်းစာမှ သင်၏ကွန်ပျူတာတွင် သို့မဟုတ် cloud တစ်ခုခုတွင် run လို့ရနိုင်ရမည်။
ဤသင်ခန်းစာတွင် Python ကုဒ်အချို့ဖြင့် စမ်းသပ်လေ့လာမည်။ သင်သည် သင့်ကွန်ပျူတာတွင်သို့မဟုတ် ကောင်းလ်ၤ(Could) တစ်နေရာမှာ ဒီသင်ခန်းစာ၏ Jupyter Notebook ကုဒ်ကို ပတ်သတ်၍ ပြေးဆွဲနိုင်ပါသည်။
[သင်ခန်းစာ notebook](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) ကို ဖွင့်၍ သင်ခန်းစာကို လေ့လာနိုင်သည်
> **Note:** သင်သည် ဒီ code ကို cloud မှ ဖွင့်နေပါက၊ notebook code တွင် အသုံးပြုထားသော [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ဖိုင်ကိုလည်း fetch လုပ်ရန်လိုအပ်သည်။ notebook နှင့် တူညီသော directory တွင် ထည့်ပါ။
> **မှတ်ချက်။** သင်သည် ကောင်းလ်ၤမှ ကုဒ်ဖိုင်ဖွင့်နေသည်ဆိုလျှင် သင်သည် [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ဖိုင်ကိုလည်း ယူဆောင်ရမည်ဖြစ်ပြီး ၎င်းသည် Notebook ကုဒ်တွင် အသုံးပြုသည်။ Notebook နဲ့တူညီသော ဖိုင်တည်နေရာတွင် ထည့်သွင်းထားပါ။
## မိတ်ဆက်
## မိတ်ဆက်ခြင်း
ဒီသင်ခန်းစာမှာ **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** ၏ ကမ္ဘာကို ရုရှားတေးရေးဆရာ [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ၏ ဂီတပုံပြင်မှ အားပေးမှုဖြင့် ရှာဖွေမည်။ **Reinforcement Learning** ကို အသုံးပြုပြီး Peter ကို သူ့ပတ်ဝန်းကျင်ကို စူးစမ်းစေပြီး၊ အရသာရှိသောပန်းသီးများကို စုဆောင်းစေပြီး ဝံကို မတွေ့ရအောင်လုပ်မည်။
ဤသင်ခန်းစာတွင် ကျွန်ုပ်တို့သည် ရုရှားဂီတရေးဆရာ [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ၏ဂီတဇာတ်လမ်းတစ်ပုဒ်ကို အတွေးပေး၍ **[Peter နှင့် Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** ၏ကမ္ဘာကို ရှာဖွေမှာဖြစ်သည်။ ကျွန်ုပ်တို့ **ပြန်လည်မြှင့်တင်သင်ယူမှု** သုံးပြီး Peter ကို သူ့ပတ်ဝန်းကျင်ကို လေ့လာစေပြီး အပျော်စေသောပန်းသီးများ စုဆောင်းကာ ယုမ်သမားနှင့် တွေ့ဆုံခြင်းမှ ရှောင်ကြဉ်စေမည်။
**Reinforcement Learning** (RL) သည် **agent** တစ်ခု၏ **environment** တစ်ခုတွင် အကောင်းဆုံးအပြုအမူကို သင်ယူရန် အတတ်ပညာဖြစ်သည်။ ဒီ environment တွင် agent တစ်ခုသည် **reward function** ဖြင့် သတ်မှတ်ထားသော **goal** တစ်ခုရှိရမည်။
**ပြန်လည်မြှင့်တင်သင်ယူမှု** (RL) သည် စမ်းသပ်မှုများ ခန့်မှန်းပြုခြင်းဖြင့် အAgent ၏အကောင်းဆုံး အပြုအမူကို သင်ယူနိုင်စေသော သင်ယူနည်းပညာတစ်ခုဖြစ်သည်။ အAgent ၏ရည်မှန်းချက် သည် **ဆုလာဘ်လုပ်ဆောင်ချက်** နှင့် သတ်မှတ်ထားသည်။
## Environment
## ပတ်ဝန်းကျင်
ရိုးရှင်းစွာပြောရမည်ဆိုပါက Peter ၏ ကမ္ဘာကို `width` x `height` အရွယ်ရှိသော စတုရန်း board အဖြစ် သတ်မှတ်ပါမည်၊ ဒီလိုပုံစံဖြစ်သည်
လွယ်ကူစွာ သတ်မှတ်ရအောင် Peter ၏ကမ္ဘာကို `အကျယ်` x `အမြင့်` အရွယ်အစား စတုရန်းဝင်းထားသော ဘားဒ်အဖြစ်ယူလိုက်ပါ
![Peter ၏ Environment](../../../../8-Reinforcement/1-QLearning/images/environment.png)
![Peter ၏ ပတ်ဝန်းကျင်](../../../../translated_images/my/environment.40ba3cb66256c93f.webp)
ဒီ board ရဲ့ cell တစ်ခုစီမှာ အောက်ပါအတိုင်းဖြစ်နိုင်သည်-
ဤဘားဒ်၌ အစီအစဉ်တစ်ခုစီမှာ
* **ground**, Peter နှင့် အခြားသော သတ္တဝါများ လမ်းလျှောက်နိုင်သောနေရာ။
* **water**, လမ်းလျှောက်လို့မရသောနေရာ။
* **tree** သို့မဟုတ် **grass**, အနားယူနိုင်သောနေရာ။
* **apple**, Peter အတွက် အစားအသောက်အဖြစ် ရှာဖွေလိုသောနေရာ။
* **wolf**, အန္တရာယ်ရှိပြီး ရှောင်ရှားသင့်သောနေရာ
* **မြေပြင်**, Peter နှင့် တခြားတိရစ္ဆာန်များလျှောက်နိုင်သောနေရာ။
* **ရေ**, သင်မလျှောက်နိုင်သည့်နေရာ။
* **သစ်ပင်** သို့မဟုတ် **ရွက်မြက်**, အနားယူနိုင်သောနေရာ။
* **ပန်းသီး**, Peter ကို သူ့ကိုယ်သူ စားစရာရှာဖွေရေးအတွက် ဝမ်းသာစေသော အရာ။
* **ယုမ်**, အန္တရာယ်ရှိပြီး ရှောင်ကြဉ်သင့်သည်
Python module တစ်ခုဖြစ်သော [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) တွင် ဒီ environment နှင့် အလုပ်လုပ်ရန် code ပါဝင်သည်။ ဒီ code သည် ကျွန်ုပ်တို့၏ concepts ကို နားလည်ရန်အရေးကြီးမဟုတ်သောကြောင့် module ကို import လုပ်ပြီး sample board ကို ဖန်တီးရန် အသုံးပြုမည် (code block 1):
Python မော်ဂျူးလ်တစ်ခုဖြစ်သော [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) တွင် ဤပတ်ဝန်းကျင်နဲ့ပတ်သက်သော ကုဒ်များ ပါဝင်သည်။ ၎င်း ကုဒ်သည် သဘောတရားနားလည်ရန် မလိုအပ်သဖြင့် မော်ဂျူးလ်ကို ရှာဖွေပြီး နမူနာဘားဒ် ဖန်တီးရန် အသုံးပြုပါမည် (ကုဒ်ပိုင်း ၁)။
```python
from rlboard import *
@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
ဒီ code သည် အထက်ပါပုံနှင့် ဆင်တူသော environment ၏ ပုံကို print လုပ်သင့်သည်။
ဤကုဒ်က ပတ်ဝန်းကျင်ဓာတ်ပုံကို အထက်ပါ သဘောတူညီမှုနှင့် တူညီစွာ ပုံနှိပ်ပြမည်။
## Actions နှင့် Policy
## လုပ်ဆောင်ချက်များနှင့် မူဝါဒ
ဒီဥပမာမှာ Peter ၏ ရည်မှန်းချက်မှာ ဝံနှင့် အခြားသော အတားအဆီးများကို ရှောင်ရှားပြီး ပန်းသီးကို ရှာဖွေခြင်းဖြစ်သည်။ ဒီအတွက် သူသည် ပန်းသီးကို ရှာဖွေမရအောင် လမ်းလျှောက်နိုင်သည်။
ဥပမာတွင် Peter ၏ ရည်မှန်းချက်မှာ ပန်းသီးကို ရှာဖွေရေးဖြစ်၊ ယုမ်နှင့် အခြားအတားအဆီးများရှောင်ကြဉ်ရန်ဖြစ်သည်။ ၎င်းအတွက် Peter သည် ပန်းသီးတစ်ခု တွေ့ရန်အထိ လမ်းလျှောက်ဝင်နိုင်သည်။
ထို့ကြောင့်၊ တည်နေရာတစ်ခုစီတွင် သူသည် အောက်ပါ action များအနက် တစ်ခုကို ရွေးချယ်နိုင်သည်- up, down, left နှင့် right
ထို့ကြောင့် မည်သည့်အနေအထားတွင်မဆို တောင်ဘက်၊ လျှောက်ဘက်၊ ဘယ်နှင့် ညာဘက် တို့မှ လုပ်ဆောင်ချက်များကို ရွေးချယ်နိုင်သည်။
action များကို dictionary အဖြစ် သတ်မှတ်ပြီး၊ coordinate changes နှင့် mapping လုပ်မည်။ ဥပမာအားဖြင့်, right (`R`) ကို `(1,0)` pair နှင့် ကိုက်ညီစေမည်။ (code block 2):
ကုဒ်တွင် ၎င်းလုပ်ဆောင်ချက်များကို dictionary အဖြစ် သတ်မှတ်ကာ သက်ဆိုင်ရာ ဂဏန်းတစ်စုသို့ မျှဝေအပ်ပါမည်။ ဥပမာအားဖြင့် ညာဘက်သို့ ရွှေ့ခြင်း(`R`) သည် ဖော်ပြချက် `(1,0)` နှင့်ကိုက်ညီမည် (ကုဒ်ပိုင်း 2)။
```python
actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) }
action_idx = { a : i for i,a in enumerate(actions.keys()) }
```
အကျဉ်းချုပ်အားဖြင့်၊ ဒီ scenario ၏ strategy နှင့် goal သည် အောက်ပါအတိုင်းဖြစ်သည်-
နိဂုံးချုပ်အနေဖြင့်၊ ဒီအကြောင်းအရာ၏ မူဝါဒနှင့် ရည်ရွယ်ချက်မှာ အောက်ပါအတိုင်းဖြစ်သည်။
- **Strategy**, agent (Peter) ၏ strategy ကို **policy** ဟုခေါ်သော function ဖြင့် သတ်မှတ်သည်။ Policy သည် တည်နေရာတစ်ခုစီတွင် action ကို ပြန်ပေးသည်။ ကျွန်ုပ်တို့၏ problem ၏ state သည် player ၏ လက်ရှိတည်နေရာအပါအဝင် board ကို ကိုယ်စားပြုသည်။
- **မူဝါဒ** သည် ကျွန်ုပ်တို့၏အAgent (Peter) အတွက် သတ်မှတ်ထားသော **policy** အဓိပ္ပါယ်ရှိသည်။ မူဝါဒမှာ အခြေအနေတစ်ခုစီတွင် လုပ်ဆောင်ချက်ကို ပြန်လည်ပေးအပ်သော function ဖြစ်သည်။ ၎င်းတွင် ပြဿနာ၏ အခြေအနေသည် ဘားဒ်နှင့် လောလောဆယ်ကစားသမားအနေအထားဖြင့် ကိုယ်စားပြုသည်။
- **Goal**, reinforcement learning ၏ ရည်မှန်းချက်မှာ problem ကို ထိရောက်စွာ ဖြေရှင်းနိုင်ရန် အကောင်းဆုံး policy ကို သင်ယူရန်ဖြစ်သည်။ သို့သော် baseline အနေဖြင့် **random walk** ဟုခေါ်သော ရိုးရှင်းသော policy ကို စဉ်းစားပါမည်။
- **ရည်ရွယ်ချက်** သည် ပြန်လည်မြှင့်တင်သင်ယူမှု၏ နောက်ဆုံးရည်မှန်းချက်ဖြစ်ကာ ပြဿနာကို ထိရောက်စွာ ဖြေရှင်းနိုင်သော ကောင်းမွန်သော မူဝါဒတစ်ခု သင်ယူရန်ဖြစ်သည်။ သို့သော် အခြေခံအနေဖြင့် **random walk** မူဝါဒရိုးရိုးဆွဲကြည့်ရမည်။
## Random Walk
အရင်ဆုံး random walk strategy ကို အသုံးပြု၍ ကျွန်ုပ်တို့၏ problem ကို ဖြေရှင်းပါမည်။ Random walk ဖြင့်၊ ကျွန်ုပ်တို့သည် ခွင့်ပြုထားသော actions များအနက်မှ နောက်တစ်ခုကို အလွတ်ရွေးချယ်ပြီး၊ ပန်းသီးကို ရောက်သည်အထိ ဆက်လုပ်မည် (code block 3)။
ပထမဦးဆုံး random walk မူဝါဒဖြင့် ပြဿနာကို ဖြေရှင်းကြပါစို့။ random walk နှင့် အနာဂတ်လုပ်ဆောင်ချက်ကို ခွင့်ပြုသော လုပ်ဆောင်ချက်များထဲမှ သဘောတူညီမှုအတိုင်း ရွေးချယ်၍ ပန်းသီးကို ရောက်သည်အထိ လိုက်နာမည် (ကုဒ်ပိုင်း 3)။
1. အောက်ပါ code ဖြင့် random walk ကို အကောင်အထည်ဖော်ပါ-
1. အောက်ပါကုဒ်ဖြင့် random walk ကို အကောင်အထည်ဖော်ပါ။
```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` ကို ခေါ်ဆိုခြင်းသည် သက်ဆိုင်ရာ လမ်းကြောင်း၏ အရှည်ကို ပြန်ပေးသင့်ပြီး၊ run တစ်ခုစီတွင် ကွဲပြားနိုင်သည်။
`walk` ခေါ်သည့်အခါ တဆင့်လျှောက်လမ်းကြောင်း၏ အရှည် (run တစ်ခုနှင့် အခြားတစ်ခုကွဲပြားနိုင်သည်) ကို ပြန်လည်ပေးအပ်သည်။
1. walk စမ်းသပ်မှုကို အကြိမ်ရေ (ဥပမာ 100) အများကြီး run လုပ်ပြီး၊ ရလဒ် statistics ကို print လုပ်ပါ (code block 4):
1. လမ်းလျှောက် စမ်းသပ်မှုကို ၁၀၀ ကြိမ် ပြေးပြီး ရလဒ်စာရင်း ပုံနှိပ်ပါ(ကုဒ်ပိုင်း 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 ခြေလှမ်းသာရှိသည်။
လမ်းကြောင်း၏ ပျမ်းမျှအရှည်မှာ ၃၀-၄၀ ခြေလှမ်းအတွင်းဖြစ်ကာ ပန်းသီးအဝေးကြည့်ရလို့၎င်း သာလွန်ရှည်လျားသည်။
Random walk အတွင်း Peter ၏ လှုပ်ရှားမှုကိုလည်း ကြည့်နိုင်သည်-
Peter ၏ random walk အတွင်း လမ်းလျှောက်မှု အနေအထားကိုလည်း ကြည့်ရှုနိုင်သည်။
![Peter ၏ Random Walk](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif)
## Reward Function
## ဆုလာဘ်လုပ်ဆောင်ချက်
Policy ကို ပိုပြီး ဉာဏ်ရည်ရှိအောင်လုပ်ရန်၊ ဘယ် moves တွေက "ပိုကောင်း" သောအရာများဖြစ်သည်ကို နားလည်ရန်လိုအပ်သည်။ ဒီအတွက် ကျွန်ုပ်တို့၏ ရည်မှန်းချက်ကို သတ်မှတ်ရန်လိုအပ်သည်။
မူဝါဒကို ပိုမို ဉာဏ်မြင့်အောင် ပြင်ဆင်ရန် ရှေ့ဆက်လျှောက်လှမ်းမှုများထက် "ပိုကောင်း" ဟု သတ်မှတ်နိုင်သော လှုပ်ရှားမှုများကို နားလည်ရန် လိုအပ်သည်။
ရည်မှန်းချက်ကို **reward function** ဖြင့် သတ်မှတ်နိုင်ပြီး၊ state တစ်ခုစီအတွက် score value တစ်ခုကို ပြန်ပေးမည်။ ကိန်းဂဏန်းမြင့်မည်လျှင် reward function ပိုကောင်းသည်။ (code block 5)
ရည်မှန်းချက်သည် **ဆုလာဘ်လုပ်ဆောင်ချက်** အနေဖြင့် သတ်မှတ်နိုင်ပြီး အခြေအနေလတ်ဖြစ်စဉ်တိုင်းတွင် နံပါတ်တန်ဖိုးတစ်ခုကို ပြန်ထုတ်ပေးသည်။ နံပါတ်မြင့်မားမှုသာ ဆုလာဘ်တန်ဖိုးကောင်းချက် ဖြစ်သည်။ (ကုဒ်ပိုင်း 5)
```python
move_reward = -0.1
@ -154,41 +154,115 @@ def reward(m,pos=None):
return move_reward
```
Reward functions ၏ စိတ်ဝင်စားဖွယ်ကောင်းသောအချက်မှာ အများဆုံးအခြေအနေတွင် *ဂိမ်းအဆုံးတွင်သာ အရေးပါသော reward ရရှိသည်* ဖြစ်သည်။ ဒါကဆိုရင် ကျွန်ုပ်တို့၏ algorithm သည် positive reward ရရှိသောအခြေအနေများကို "မှတ်မိ" ရမည်။ ထို့နောက်၊ အကောင်းဆုံးရလဒ်ရရှိရန် "ကောင်းသော" လှုပ်ရှားမှုများ၏ အရေးပါမှုကို တိုးမြှင့်ရမည်။ ထို့နောက်၊ အဆိုးဆုံးရလဒ်ရရှိသော moves များကိုလည်း လျော့နည်းစေရမည်။
ဆုလာဘ်လုပ်ဆောင်ချက်အကြောင်း စိတ်ဝင်စားဖွယ်ကောင်းတာက များသောအားဖြင့် *ဂိမ်းကုန်ဆုံးချိန်တွင်သာ ဆုလာဘ်တန်ဖိုးအရေးကြီးကြောင်း* ဖြစ်သည်။ ထို့ကြောင့် ကျွန်ုပ်တို့၏ အစီအစဉ်သည် ကောင်းမွန်သော ခြေလှမ်းများကို မှတ်မိကာ အဆုံးတွင် အကောင်းဆုံးဆုလာဘ် ရရှိစေဖို့ အလေးထားရမည်ဖြစ်သည်။ ဆိုးသောရလဒ်သို့ ခြေလှမ်းတွေကို ကန့်သတ်ပေးရမည်။
## Q-Learning
## Q-သင်ယူခြင်း
ဒီမှာ ဆွေးနွေးမည့် algorithm ကို **Q-Learning** ဟုခေါ်သည်။ ဒီ algorithm တွင် policy ကို **Q-Table** ဟုခေါ်သော function (သို့မဟုတ် data structure) ဖြင့် သတ်မှတ်သည်။ Q-Table သည် တည်နေရာတစ်ခုစီတွင် action များ၏ "ကောင်းမှု" ကို မှတ်တမ်းတင်သည်။
ကျူးလွန်မည့် အစီအစဉ်ကို **Q-သင်ယူခြင်း** ဟု ခေါ်သည်။ ၎င်းတွင် မူဝါဒကို **Q-ဇယား** ဟု ခေါ်သော function (သို့) ဒေတာဖွဲ့စည်းမှုမှ သတ်မှတ်သည်။ ၎င်းမှာ တစ်ခုချင်း လုပ်ဆောင်ချက်အား "ကောင်းမှု" အဆင့်တိုင်း ပြန်မှတ်တမ်းတင်သည်။
Q-Table ဟုခေါ်ရသည်မှာ table သို့မဟုတ် multi-dimensional array အဖြစ် ကိုယ်စားပြုရန် အဆင်ပြေသောကြောင့်ဖြစ်သည်။ ကျွန်ုပ်တို့၏ board တွင် `width` x `height` အတိုင်းအတာရှိသည့်အတွက် Q-Table ကို numpy array ဖြင့် `width` x `height` x `len(actions)` အရွယ်အစားဖြင့် ကိုယ်စားပြုနိုင်သည်။ (code block 6)
Q-ဇယားဟု ခေါ်ရသည့် အကြောင်းမှာ အားလုံးထိုင်ရာဇယားသို့မဟုတ် မျိုးစုံအတိုင်းအတာအဆင့် ရှိ multi-dimensional array အဖြစ် ကိုယ်စားပြုသည့်အတွက်ဖြစ်သည်။ ကျွန်ုပ်တို့ဘားဒ်မှာ `အကျယ်` x `အမြင့်` သတ်မှတ်ချက်ရှိသည့်အတွက် numpy array အဖြစ် သတ်မှတ်၍ `အကျယ်` x `အမြင့်` x `လုပ်ဆောင်ချက်အရေအတွက်` ကိုရှိစေသည်။ (ကုဒ်ပိုင်း 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
Q-Table ၏ value အားလုံးကို တူညီသောတန်ဖိုးဖြင့် initialize လုပ်သည်ကို သတိပြုပါ၊ ကျွန်ုပ်တို့၏အခြေအနေတွင် - 0.25 ဖြစ်သည်။ ဒါက "random walk" policy ကို ကိုယ်စားပြုသည်၊ အကြောင်းမူကား တစ်ခုစီတွင် moves အားလုံးသည် တူညီသောအကောင်းမှုရှိသည်။ Q-Table ကို board တွင် visualize လုပ်ရန် `plot` function ကို pass လုပ်နိုင်သည်- `m.plot(Q)`
Q-ဇယားမှ တန်ဖိုးအားလုံးကို 0.25 ဟူ၍ စတင်သတ်မှတ်ထားခြင်းမှာ "random walk" မူဝါဒနှင့် ကိုက်ညီပြီးထားသော လက်တွေ့လုပ်ဆောင်ချက်များအားလုံးမှာ မတူညီမှုမရှိခြင်းကို ဆိုလိုသည်။ ဤ Q-ဇယားကို `plot` function သို့ ဖြတ်သွားကာ ဘားဒ်ပေါ်တွင် မြင်ကွင်းပြရန် အသုံးပြုနိုင်သည်၊ `m.plot(Q)`
![Peter ၏ Environment](../../../../8-Reinforcement/1-QLearning/images/env_init.png)
![Peter ၏ ပတ်ဝန်းကျင်](../../../../translated_images/my/env_init.04e8f26d2d60089e.webp)
Cell တစ်ခုစီ၏ အလယ်တွင် "arrow" တစ်ခုရှိပြီး၊ လှုပ်ရှားမှု၏ အကြိုက်ဆုံး direction ကို ဖော်ပြသည်။ Direction အားလုံးတူညီသောကြောင့် dot တစ်ခုကို ဖော်ပြသည်။
အစိတ်အပိုင်းများ အတွင်းနောက်ခံတွင် ကိုယ်တိုင်လှည့်ပတ်မှု ဦးတည်ရာပြတင်းများရှိသည်။ အ directional အားလုံးသည်မျှတခြင်းကြောင့် dot တစ်ခု မြင်ရသည်။
အခု simulation ကို run လုပ်ပြီး၊ environment ကို စူးစမ်းပြီး၊ Q-Table values များ၏ distribution ကို ပိုကောင်းစေပြီး၊ ပန်းသီးကို ရှာဖွေရာတွင် ပိုမြန်စေမည်။
ယခု simulation ကို စတင်ပြေး၍ ပတ်ဝန်းကျင်ကို ရှာဖွေပြီး Q-ဇယား၏ တန်ဖိုးများကို ပိုကောင်းအောင် သင်ယူခြင်းဖြင့် ပန်းသီးကို ရောက်ရှိရန် လမ်းကြောင်းကို အံ့သြဖွယ်မြန်ဆန်စေမည်။
## Q-Learning ၏ အဓိကအချက်: Bellman Equation
## Q-သင်ယူမှု၏ အဓိပ္ပါယ် - Bellman ဂဏန်းနိတိ
လှုပ်ရှားမှုကို စတင်ပြီးနောက်၊ action တစ်ခုစီတွင် သက်ဆိုင်ရာ reward ရရှိမည်၊ ဉပမာ immediate reward အမြင့်ဆုံးဖြင့် နောက်တစ်ခုကို ရွေးချယ်နိုင်သည်။ သို့သော်၊ အများဆုံး states တွင် move သည် ပန်းသီးကို ရောက်ရန် ရည်မှန်းချက်ကို မရောက်စေပါ၊ ထို့ကြောင့် ဘယ် direction က ပိုကောင်းသည်ကို ချက်ချင်းဆုံးဖြတ်လို့မရပါ
လှည့်ပတ်ခြင်းစတင်သည်နှင့် လုပ်ဆောင်ချက်တိုင်းတွင် ဆုလာဘ်ရမည့် အခွင့်အရေးရှိသည်။ သိုသော် များသောအခြေအနေများတွင် လှည့်လည်းသည့် လမ်းကြောင်းသည် ပန်းသီးကို ရောက်ရှိစေမည်မဟုတ်သဖြင့် မည်သည့် ဦးတည်ရာကောင်းကြောင်း ချက်ချင်းဆုံးဖြတ်၍ မရနိုင်
> သတိပြုပါ၊ ချက်ချင်းရလဒ်သည် အရေးမကြီးပါ၊ အရေးကြီးသည် simulation ၏ အဆုံးတွင် ရရှိမည့် နောက်ဆုံးရလဒ်ဖြစ်သည်။
> အမြန်ရလဒ်မဟုတ်ပဲ အဆုံးတွင်ရမည့် နောက်ဆုံးရလဒ်သာ အရေးကြီးသည်။
ဒီ delayed reward ကို ထည့်သွင်းစဉ်းစားရန် **[dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming)** ၏ မူကွဲများကို အသုံးပြုရမည်၊ အဲဒါက ကျွန်ုပ်တို့၏ပြဿနာကို recursive အနေနှင့် စဉ်းစားရန် ခွင့်ပြုသည်။
ဤနောက်ကျသော ဆုလာဘ်အတွက် **[ဒိုင်နမစ်ပရိုဂရမ်မင်း](https://en.wikipedia.org/wiki/Dynamic_programming)** ၏ စံနှုန်းများကို အသုံးပြုရန် လိုအပ်သည်။ ၎င်းတွင် ပြဿနာကို recursive အနေဖြင့် စဉ်းစားနိုင်သည်။
ယခု state *s* တွင်ရှိပြီး၊ နောက် state *s'* သို့ ရွှေ့လိုသည်ဟု ယူဆပါ။ ဒီလိုလုပ်ခြင်းအားဖြင့် immediate reward *r(s,a)* ကို reward function ဖြင့် သတ်မှတ်ပြီး၊ အနာဂတ် reward တစ်ခုရရှိမည်။ ကျွန်ုပ်တို့၏ Q-Table သည် action တစ်ခုစီ၏ "attractiveness" ကို မှန်ကန်စွာ ဖော်ပြသည်ဟု ယူဆပါက၊ state *s'* တွင် *Q(s',a')* ၏ maximum value ကို ကိုက်ညီသော action *a'* ကို ရွေးချယ်မည်။ ထို့ကြောင့် state *s* တွင် ရရှိနိုင်သော အကောင်းဆုံး အနာဂတ် reward ကို `max` *Q(s',a')* (state *s'* တွင် action *a'* များအားလုံးအပေါ်မှာ maximum ကိုတွက်ချက်သည်) ဖြင့် သတ်မှတ်နိုင်သည်
ယခုအခါ ကျွန်ုပ်တို့သည် အခြေအနေ *s* တွင်ရှိပြီး နောက်ထပ်အခြေအနေ *s'* သို့ လှည့်သွားလိုပါက လက်ရှိ ဆုလာဘ် *r(s,a)* ကို ဆုလာဘ်လုပ်ဆောင်ချက်မှ ရရှိမည်ဖြစ်ပြီး နောက်အနာဂတ်ဆုလာဘ်ကိုလည်း ရရှိမည်။ ကျွန်ုပ်တို့ Q-ဇယားသည် လုပ်ဆောင်ချက်တိုင်း၏ "ကြည့်ရလှသော" တန်ဖိုးကို မှန်ကန်စွာ ကိုယ်စားပြုခဲ့သည်ဆိုရင် အခြေအနေ *s'* တွင် အကောင်းဆုံးတန်ဖိုးရှိသော လုပ်ဆောင်ချက် *a'* ကို ရွေးချယ်နိုင်မည်ဖြစ်သည်။ ထို့ကြောင့် အခြေအနေ *s* တွင် ရနိုင်သော အကောင်းဆုံး နောက်အနာဂတ်ဆုလာဘ်မှာ `max`<sub>a'</sub>*Q(s',a')* ဖြစ်မည် (ဖြစ်နိုင်သမျှ လုပ်ဆောင်ချက်အားလုံးပေါ်တွင် `max` ရရှိသည်)
ဒီအချက်သည် **Bellman formula** ကို ပေးသည်၊ action *a* ကို ရွေးချယ်သော state *s* တွင် Q-Table ၏ value ကိုတွက်ချက်ရန်:
၎င်းသည် အခြေအနေ *s* တွင် လုပ်ဆောင်ချက် *a* အတွက် Q-ဇယားတန်ဖိုးတွက်ချက်ရာတွင် **Bellman ဂဏန်းနိတိ** ကို ပေးသည်။
## မူဝါဒကို စစ်ဆေးခြင်း
<img src="../../../../translated_images/my/bellman-equation.7c0c4c722e5a6b7c.webp"/>
Q-Table သည် အခြေအနေတစ်ခုစီတွင် လုပ်ဆောင်မှုတစ်ခုစီ၏ "ဆွဲဆောင်မှု" ကို ဖော်ပြထားသောကြောင့် ကျွန်ုပ်တို့၏ကမ္ဘာတွင် ထိရောက်သော လမ်းကြောင်းရှာဖွေမှုကို သတ်မှတ်ရန် အလွယ်တကူ အသုံးပြုနိုင်သည်။ အလွယ်တကူဆုံးသောအခြေအနေတွင် Q-Table အတန်ဖိုးအမြင့်ဆုံးနှင့် ကိုက်ညီသော လုပ်ဆောင်မှုကို ရွေးချယ်နိုင်သည်။ (code block 9)
ဒီမှာ γ ဆိုသည်မှာ **discount factor** ဖြစ်ပြီး လက်ရှိ ဆုလာဘ်ကို နောက်အနာဂတ်ဆုလာဘ်ထက် ဘယ်လောက်လောက် အရေးပေးရမည်ကို သတ်မှတ်ပေးသည်။
## သင်ယူမှု 알고리즘
အထက်ပါ ဂဏန်းနိတိအရ ကျွန်ုပ်တို့ သင်ယူမှု 알고리즘၏ စPseudoကုဒ်ကို ရေးနိုင်သည်။
* Q-ဇယား Q ကို states နှင့် လုပ်ဆောင်ချက်အားလုံးအတွက် တူညီသော နံပါတ်ဖြင့် စတင်သတ်မှတ်ပါ။
* သင်ယူနှုန်း α ← ၁ သတ်မှတ်ပါ။
* simulation တစ်လျှောက် များစွာ လုပ်ဆောင်ပါ။
1. ကျပ်တည်းသောနေရာမှ စတင်ပါ။
1. ထပ်မံလုပ်ဆောင်ပါ
1. အခြေအနေ *s* တွင် လုပ်ဆောင်ချက် *a* ကို ရွေးပါ။
2. လုပ်ဆောင်ချက်ကို အခြေအနေအသစ် *s'* သို့ ရွှေ့ပါ။
3. ဂိမ်းဆုံးခြင်းကိစ္စဖြစ်ပွားသော်လည်း ဒေါသဆုလာဘ်လွန်စွာနည်းပါက simulation ထွက်ပါ။
4. အခြေအနေအသစ်တွင် ဆုလာဘ် *r* ကိုတွက်ချက်ပါ။
5. Bellman ဂဏန်းနိတိ အတိုင်း Q-Function ကို အပ်ဒိတ်လုပ်ပါ: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ max<sub>a'</sub>Q(s',a'))*
6. *s* ← *s'*
7. စုစုပေါင်း ဆုလာဘ်ကို အပ်ဒိတ်လုပ်ပြီး α ကို လျော့ချပါ။
## Exploit နှင့် explore
အထက်ပါ 알고리즘တွင် 2.1 အဆင့်တွင် လုပ်ဆောင်ချက် ရွေးချယ်ပုံမသတ်မှတ်ထား။ အကယ်၍ လုပ်ဆောင်ချက်ကို ကျပ်တည်းစွာ ရွေးပါက ပတ်ဝန်းကျင်ကို မျှတစွာ စူးစမ်းပြီး မကြာခဏ သေဆုံးမှုများဖြစ်ပွားနိုင်သည်။ အခြားနည်းလမ်းမှာ ရှိပြီးသား Q-ဇယားတန်ဖိုးကို အသုံးချ၍ အခက်အခဲအတိုင်း အကောင်းဆုံး လုပ်ဆောင်ချက်ကို ရွေးချယ်ခြင်းဖြစ်သည်။ ၎င်းသည် အခြားအခြေအနေများကို စူးစမ်းရန် ကန့်သတ်သွားသည်၊ နှင့် အကောင်းဆုံးဖြေရှင်းချက် မရနိုင်နိုင်။
ထို့ကြောင့် စူးစမ်းမှု (exploration) နှင့် အသုံးချမှု (exploitation) ၏ မျှတမှုကို ရှာဖွေရန် အကောင်းဆုံးဖြစ်သည်။ ၎င်းကို Q-ဇယားတန်ဖိုးအလိုက် အလားအလာနှင့် လုပ်ဆောင်ချက်ရွေးချယ်ခြင်းဖြင့် ပြုလုပ်နိုင်သည်။ ပထမအခါတွင် Q-ဇယားတန်ဖိုးအားလုံး တူညီလျှင် နောက်ဆုံးတွင် မျှတသော ရွေးချယ်မှုဖြစ်သည်။ လေ့လာပြီးတိုင်း အကောင်းဆုံးလမ်းကြောင်းကို လိုက်နာရန်နှင့် အAgent သည် တခါတစ်လေ မသက်ဆိုင်သောလမ်းကိုလည်း သွားနိုင်စေရန် ဖြစ်သည်။
## Python အကောင်အထည်ဖော်မှု
အခုတော့ သင်ယူမှု 알고리즘 ကို အကောင်အထည်ဖော်ရန် အသင့်ဖြစ်သည်။ ၎င်းတို့ဖြစ်ရန် Q-ဇယားအတွင်း ကန့်သတ်မရှိသော နံပါတ်များကို လုပ်ဆောင်ချက်နှင့် အတူ လုပ်ဆောင်ချက် Probability များသို့ ပြောင်းလဲရန် လုပ်ဆောင်ချက်တစ်ခု လိုအပ်မည်။
1. `probs()` function ကို ဖန်တီးပါ။
```python
def probs(v,eps=1e-4):
v = v-v.min()+eps
v = v/v.sum()
return v
```
အစပိုင်းတွင် vector ၏ သိပ်သည်းမှု ညီထွေမှုအသုံးများအတွက် division by 0 ဖြစ်ခြင်းမှ ကာကွယ်ရန် `eps` တန်ဖိုးနည်းနည်း ပေါင်းထည့်ထားသည်။
၅၀၀၀ ကြိမ် စမ်းသပ်မှု (epoch) ဖြင့် သင်ယူမှု 알고리즘 ကို ပြေးဆွဲပါ (ကုဒ်ပိုင်း 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) # ကစားသူအား ဘုတ်ပေါ်အပြင်သို့ ရွေ့နိုင်ခွင့်ပြုသည်၊ ၎င်းသည် အပိုင်းဆုံးမသည်ကို ဖြစ်စေသည်
r = reward(m)
cum_reward += r
if r==end_reward or cum_reward < -1000:
lpath.append(n)
break
alpha = np.exp(-n / 10e5)
gamma = 0.5
ai = action_idx[a]
Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
n+=1
```
알고리즘 ဖြတ်ပြီးနောက် Q-ဇယားမှာ လုပ်ဆောင်ချက်များနှင့် ဆွဲငင်မှုအဆင့်ကို သတ်မှတ်ထားသည့် တန်ဖိုးများဖြင့် update လုပ်ထားသင့်သည်။ Q-ဇယားကို မျက်နှာပြင်ပေါ်တွင် လမ်းညွှန်အတိုင်း တည်နေရာစနစ်ကို ပြရန် ကြိုးစားနိုင်သည်။ လွယ်ကူအောင် သုံးသော ဒီဇိုင်းတွင် arrow မဟုတ်ဘဲ circle သေးသေး ချည်းရိုက်သည်။
<img src="../../../../translated_images/my/learned.ed28bcd8484b5287.webp"/>
## မူဝါဒစစ်ဆေးခြင်း
Q-ဇယားသည် အခြေအနေနှင့် လုပ်ဆောင်ချက်စုံ၏ ဆွဲငင်မှုကို စာရင်းပြုစုထားသဖြင့် ပိုမိုထိရောက်သော လမ်းညွှန်မှု ရှာဖွေရန် အလွယ်တကူ အသုံးပြုနိုင်သည်။ လွယ်ကူဆုံးအမှုအခြေအနေတွင် Q-ဇယားသည် တန်ဖိုးသည် အမြင့်ဆုံးဖြစ်သည့် လုပ်ဆောင်ချက်ကို ရွေးချယ်နိုင်သည်။ (ကုဒ်ပိုင်း 9)
```python
def qpolicy_strict(m):
@ -200,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
> အထက်ပါ code ကို အကြိမ်ကြိမ် စမ်းကြည့်ပါက တစ်ခါတစ်ရံ "hang" ဖြစ်ပြီး notebook တွင် STOP ခလုတ်ကို နှိပ်၍ ရပ်တန့်ရန်လိုအပ်သည်ကို သတိထားမိနိုင်သည်။ ၎င်းသည် အခြေအနေနှစ်ခုသည် အကောင်းဆုံး Q-Value အရ တစ်ခုနှင့်တစ်ခုကို "ညွှန်ပြ" သည့်အခြေအနေများရှိနိုင်သောကြောင့် ဖြစ်ပြီး agent သည် အခြေအနေများအကြား အဆုံးမရှိလှုပ်ရှားနေမိသည်။
## 🚀စိန်ခေါ်မှု
> အထက်ပါကုဒ်ကို အကြိမ်ကြိမ် စမ်းသပ်ကြည့်မယ်ဆိုရင် တစ်ခါတစ်ရံမှာ "ထောက်လှမ်းနေတယ်" လို့ ခံစားရနိုင်ပြီး၊ notebook ထဲက STOP ခလုတ်ကို နှိပ်ဖို့ လိုအပ်ပါတယ်။ ဒီဟာက အ optimal Q-Value အရ နှစ်ခု states က မျှဝေ 'ညှိနှိုင်း' လုပ်နေတဲ့ အခြေအနေတွေ ဖြစ်နိုင်တာကြောင့် ဖြစ်ပါတယ်၊ ဒီလိုဖြစ်ရင် agent တွေဟာ ထို states တွေကြား ကိုယ်တိုင်ကာလအတိုင်း လှည့်လည်နေတတ်ပါတယ်။
## 🚀Challenge
> **Task 1:** `walk` function ကို ပြင်ဆင်ပြီး လမ်းကြောင်း၏ အရှည်ကို အတိအကျ အဆင့်အတန်း (ဥပမာ 100) ဖြင့် ကန့်သတ်ပါ၊ အထက်ပါ code သည် အချိန်အခါမရွေး ဤတန်ဖိုးကို ပြန်ပေးသည်ကို ကြည့်ပါ။
> **Task 1:** `walk` function ကို ပြင်ဆင်ပြီး လမ်းကြောင်း အရှည်အတွက် အများဆုံး အဆင့်နောက်ဆုံးတက်ထားပါ (ဥပမာ- 100 အဆင့်)၊ ထို့နောက် အထက်ဖေါ်ပြသောကုဒ်က အချိန်အားလုံး အဲဒီတန်ဖိုးကို ပြန်ခေါ်ပေးတာကို ကြည့်ပါ။
> **Task 2:** `walk` function ကို ပြင်ဆင်ပြီး ယခင်က ရောက်ရှိခဲ့သောနေရာများကို ပြန်မသွားအောင်လုပ်ပါ။ ၎င်းသည် `walk` ကို loop ဖြစ်ခြင်းမှ ကာကွယ်ပေးနိုင်သော်လည်း agent သည် ထွက်မရနိုင်သောနေရာတွင် "ပိတ်မိ" ဖြစ်နိုင်သည်။
> **Task 2:** `walk` function ကို ပြင်ဆင်ပြီး ယခင်အချိန်များတွင် သွားခဲ့သော နေရာများကို နောက်တစ်ခါ မသွားစေရန် ပြင်ဆင်ပါ။ ဒါကြောင့် `walk` function မှာ ဇယားပတ်မှု မဖြစ်ပေါ်ပါဘူး၊ သို့သော် agent သည် ထွက်ပြေးခက်ခဲသော နေရာတစ်ခုတွင် ပိတ်မိနိုင်သည်။
## လမ်းကြောင်းရှာဖွေမှု
## Navigation
လမ်းကြောင်းရှာဖွေမှု မူဝါဒအကောင်းဆုံးသည် ကျွန်ုပ်တို့ သင်ကြားမှုအတွင်း အသုံးပြုခဲ့သော မူဝါဒဖြစ်ပြီး exploitation နှင့် exploration ကို ပေါင်းစပ်ထားသည်။ ဤမူဝါဒတွင် Q-Table တွင်ရှိသောတန်ဖိုးများနှင့် အချိုးကျသော probability ဖြင့် လုပ်ဆောင်မှုတစ်ခုစီကို ရွေးချယ်မည်ဖြစ်သည်။ ဤနည်းလမ်းသည် agent ကို ရှာဖွေပြီးသားနေရာသို့ ပြန်သွားစေမည့် အခွင့်အရေးရှိသော်လည်း အောက်ပါ code မှာ မြင်နိုင်သည့်အတိုင်း ရှိသည့်နေရာသို့ ရောက်ရန် အလွန်တိုသော လမ်းကြောင်းကို ရလဒ်ပေးသည်။ (သတိရပါ - `print_statistics` သည် simulation ကို 100 ကြိမ် ပြုလုပ်သည်): (code block 10)
ပိုမိုကောင်းမွန်သော သယ်ယူပို့ဆောင်ရေးမူဝါဒမှာ သင်ကြားမှုအတွင်းအသုံးပြုခဲ့သည့် policy ဖြစ်ပြီး exploitation နဲ့ exploration များကို ပေါင်းစပ်ထားသည်။ ဒီမူဝါဒမှာ Q-Table မှတန်ဖိုးများကို အခြေခံပြီး အချိုးကျသော probability ဖြင့် action တစ်ခုချင်း ရွေးချယ်မည်။ ဒီနည်းလမ်းက agent သည် ရှေးရှုထားပြီးသော တည်နေရာကို ပြန်လည်သွားလာနိုင်သော်လည်း အောက်ပါကုဒ်မှ ကြည့်မယ်ဆိုရင် ပင်မ ရည်ရွယ်ရာနေရာထံ ဆန္ဒအတိုင်း အလျင်အမြန် လမ်းကြောင်းတိုကို ရှာဖွေတယ် (သတိပေးရန် `print_statistics` က simulation ကို 100 ဆ ပြေးဆွဲသည်):
```python
def qpolicy(m):
@ -222,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
ဤ code ကို run ပြီးပါက အရင်ကထက် average path length အလွန်တိုသော 3-6 အတွင်း ရရှိသင့်သည်။
ဒီကုဒ်ကို ပြေးပြီးပြီဆိုရင် ဖော်ပြထားသည့်အတိုင်း ၃ မှ ၆ အတွင်း အလယ်အလတ် လမ်းကြောင်း တလျှောက် အတိုင်းအတာကို မျှော်မှန်းရမယ်။
## သင်ယူမှုဖြတ်သန်းမှု စူးစမ်းလေ့လာခြင်း
## သင်ယူမှုလုပ်ငန်းစဉ်ကို စုံစမ်းခြင်း
ကြော်ငြာထားသလို သင်ယူမှုဖြတ်သန်းမှုသည် problem space ၏ ဖွဲ့စည်းပုံအပေါ် ရရှိသော အသိပညာ စူးစမ်းခြင်းနှင့် စုဆောင်းမှုတို့၏ ထိန်းညှိမှုဖြစ်သည်။ သင်ယူမှုရလဒ်များမှာ (agent ကို ရည်ရွယ်ရာနေရာထိ လမ်းကြောင်းတိုရှာနိုင်စွမ်းမြှင့်တင်မှု) တိုးတက်လာသည်ကို မြင်တွေ့ပြီးပြီ၊ သို့သော် သင်ယူမှုဖြတ်သန်းမှုကာလအတွင်း လမ်းကြောင်းအလယ်အလတ် တာဝန်ခံမှု ကို စူးစမ်းလေ့လာတာကပါ စိတ်ဝင်စားဖွယ်ကောင်းသည်။
ကျွန်ုပ်တို့ ပြောခဲ့သည့်အတိုင်း သင်ယူမှုလုပ်ငန်းစဉ်သည် problem space ၏ ဖွဲ့စည်းမှုအပေါ် ရရှိထားသော အသိပညာကို ရှာဖွေခြင်းနှင့် အသုံးချခြင်းအကြား တစ်ခုတည်းသော လိုက်လျောမှုဖြစ်သည်။ သင်ယူမှုရလဒ်များ (agent ကို ရည်မှန်းချက်သို့ ရောက်ရန် အတိုသော လမ်းကြောင်းကို ရှာဖွေနိုင်စွမ်း) ကောင်းမွန်လာသည်ကို မြင်ရသော်လည်း သင်ယူမှုလုပ်ငန်းစဉ်အတွင်း average path length ၏ အပြောင်းအလဲကို ကြည့်ရှုခြင်းလည်း စိတ်ဝင်စားဖွယ်ကောင်းသည်။
<img src="../../../../translated_images/my/lpathlen1.0534784add58d4eb.webp"/>
## သင်ယူမှုများကို အကျဉ်းချုပ်နိုင်သည်။
သင်ယူမှုကို အောက်ပါအတိုင်း အနှစ်ချုပ်နိုင်သည်-
- **Average path length တိုးလာသည်**။ အစပိုင်းတွင် average path length တိုးလာသည်ကို မြင်ရသည်။ ၎င်းသည် ပတ်ဝန်းကျင်အကြောင်း မသိသေးသောအခါတွင် အဆိုးဆုံး state များ (ရေ၊ ဝက်ဝံ) တွင် ပိတ်မိနိုင်သောကြောင့် ဖြစ်နိုင်သည်။ ပတ်ဝန်းကျင်အကြောင်းပိုမိုသိလာပြီး ဤအသိပညာကို အသုံးပြု၍ ပတ်ဝန်းကျင်ကို ရှာဖွေနိုင်သော်လည်း ပန်းသီးများရှိရာကို မသိသေးသောကြောင့် ဖြစ်နိုင်သည်
- **လမ်းကြောင်း အလယ်အလတ် တိုးပွားတယ်**။ ဒီမှာ မြင်တွေ့ရတာက စတင်အချိန်မှာ လမ်းကြောင်း အလယ်အလတ် တိုးပွားတယ်ဆိုတာပါ။ ဒါက စတင်အချိန်မှာ ပတ်ဝန်းကျင်အကြောင်း မသိသောကြောင့် မကောင်းတဲ့ states (ရေ သို့မဟုတ် ကျွံ) တွင် ပိတ်မိနိုင်မှုကြောင့်ဖြစ်ပါတယ်။ ပိုမိုသိလာပြီး အသိပညာအသုံးချတယ်ဆိုရင် ပတ်ဝန်းကျင်ကို ပိုပြီး စူးစမ်းနိုင်ရင်လည်း ပန်းသီးများ ရှိနေရာကို မကောင်းစွာ သိရှိနိုင်ကြောင်းပါ
- **Path length လျော့ကျလာသည်**။ သင်ယူမှုများလုံလောက်စွာ ရရှိလာသည့်အခါ agent အတွက် ရည်မှန်းချက်ကို ရောက်ရန် ပိုမိုလွယ်ကူလာပြီး path length လျော့ကျလာသည်။ သို့သော်လည်း agent သည် အကောင်းဆုံးလမ်းကြောင်းမှ ချော်၍ အခြားရွေးချယ်မှုများကို ရှာဖွေသည့်အခါ path length သည် အကောင်းဆုံးထက် ပိုမိုရှည်လျားလာနိုင်သည်။
- **သင်ယူသည့်အတိုင်း လမ်းကြောင်း လျော့နည်းလာတယ်**။ လုံလောက်စွာ သင်ယူပြီးရင် agent ရည်မှန်းရာကို အကောင်းဆုံး ရောက်နိုင်သလို လမ်းကြောင်းရည်ညွှန်းချက် လျော့နည်းလာတယ်။ သို့သော် exploration ကို ဆက်လက်ဖွင့်ထားတဲ့အတွက် ဆက်လက် အကောင်းဆုံး လမ်းကြောင်းမှ ပွားထွက်သွားပြီး နောက်ထပ်ရွေးချယ်မှုအသစ်များကို စူးစမ်းရာ အသွားအလာ ပြီးတော့ လမ်းကြောင်း ကြီးလာတတ်တယ်။
- **Length တစ်ခါတစ်ရံ ရုတ်တရက် တိုးလာသည်**။ ဤ graph တွင် တစ်ချိန်ချိန်တွင် length ရုတ်တရက် တိုးလာသည်ကိုလည်း တွေ့ရသည်။ ၎င်းသည် လုပ်ငန်းစဉ်၏ stochastic nature ကို ဖော်ပြပြီး Q-Table coefficients များကို တန်ဖိုးအသစ်များဖြင့် ပြန်ရေးသားခြင်းကြောင့် ဖြစ်နိုင်သည်။ ၎င်းကို သင်ကြားမှုအဆုံးပိုင်းတွင် learning rate ကို လျော့ချခြင်းဖြင့် minimize လုပ်သင့်သည် (ဥပမာ Q-Table တန်ဖိုးများကို အနည်းငယ်သာ ပြင်ဆင်ခြင်း)
- **လမ်းကြောင်း တိုးကျယ်မှု ပြင်းထန်စွာ ဖြစ်တယ်**။ ဤ graph တွင် သိရှိထားတဲ့အတိုင်း တစ်ကြိမ်မှာ လမ်းကြောင်း တိုးကျယ်မှု ပြင်းထန်စွာ ဖြစ်ပေါ်ခဲ့တာကို တွေ့ရသည်။ ဒါက stochastic လုပ်ငန်းစဉ် အရ ဖြစ်ပြီး Q-Table ကုဒ်ဆိုဒ်များကို အသစ်တပ်ရိုက်တာကြောင့် ပြောင်းလဲမှု ဖြစ်တတ်သည်။ အထူးသဖြင့် သင်ကြားမှု၏ နောက်ဆုံးအဆင့်တွင် learning rate ကို နည်းစေပြီး Q-Table တန်ဖိုးများကို သေးငယ်စွာ ပြင်ဆင်သင့်သည်
စုစုပေါင်းအားဖြင့် သင်ယူမှုလုပ်ငန်းစဉ်၏ အောင်မြင်မှုနှင့် အရည်အသွေးသည် learning rate, learning rate decay, နှင့် discount factor ကဲ့သို့သော parameters များအပေါ် အလွန်အမင်း မှီခိုနေသည်ကို သတိထားရမည်။ ၎င်းတို့ကို **hyperparameters** ဟု ခေါ်ပြီး **parameters** (ဥပမာ Q-Table coefficients) နှင့် ခွဲခြားရန် သတ်မှတ်ထားသည်။ hyperparameter များ၏ အကောင်းဆုံးတန်ဖိုးများကို ရှာဖွေခြင်းလုပ်ငန်းစဉ်ကို **hyperparameter optimization** ဟု ခေါ်ပြီး ၎င်းသည် သီးခြားအကြောင်းအရာတစ်ခုအဖြစ် သတ်မှတ်ရန် တန်ဖိုးရှိသည်။
ဒါ့အပြင် သင်ယူမှုဖြတ်သန်းမှု အောင်မြင်မှုနှင့် အရည်အသွေးမှာ learning rate, learning rate decay, discount factor တို့ကဲ့သို့သော parameters ပေါ်မူတည်သည်။ ဤ parameters များကို **hyperparameters** ဟု ခေါ်ကြပြီး သင်ကြားမှုကာလအတွင်း optimize ဖြစ်သော **parameters** (ဥပမာ Q-Table coefficient များ) ကွဲပြားသည်။ hyperparameter တန်ဖိုးများကို ရှာဖွေသည့် လုပ်ငန်းစဉ်ကို **hyperparameter optimization** ဟုဆိုပြီး သီးခြားခေါင်းစဉ်တစ်ခုလိုချင်သည်။
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## အလုပ်ပေးစာ
## Assignment
[A More Realistic World](assignment.md)
---
**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ဆိုမှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူက ဘာသာပြန်ဝန်ဆောင်မှုကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ပြောကြားချက်**
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,127 +1,155 @@
# Postscript: အမှန်တကယ်သောကမ္ဘာတွင် Machine Learning
# အပြီးအစီး မှတ်စု - အမှန်တကယ်ကမ္ဘာကို ရှု့ရာတွင် စက်နှင့် သင်ယူမှု
![အမှန်တကယ်သောကမ္ဘာတွင် Machine Learning အကျဉ်းချုပ်ကို Sketchnote အနေနဲ့](../../../../sketchnotes/ml-realworld.png)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
ဒီသင်ခန်းစာတွဲမှာ သင်သည် training အတွက် data ကိုပြင်ဆင်နည်းများနှင့် machine learning models ဖန်တီးနည်းများကိုလေ့လာခဲ့ပါသည်။ သင်သည် regression, clustering, classification, natural language processing, နှင့် time series models များကိုတစ်စဉ်တစ်စဉ်တည်ဆောက်ခဲ့ပါသည်။ ဂုဏ်ယူပါတယ်! အခုတော့ သင်သည် "ဒါတွေဘာအတွက်လဲ..." "ဒီ models တွေကို အမှန်တကယ်ဘယ်လိုအသုံးချနိုင်မလဲ" ဆိုပြီး စဉ်းစားနေရနိုင်ပါတယ်။
![အမှန်တကယ်ကမ္ဘာကို ရှု့ရာတွင် စက်နှင့် သင်ယူမှု၏ အကျဉ်းချုပ် စကက်ချ်မှတ်သားချက်](../../../../translated_images/my/ml-realworld.26ee274671615577.webp)
> စကက်ချ်မှတ်သားချက်ကို [Tomomi Imura](https://www.twitter.com/girlie_mac) မှ ပြုစုသည်
AI သည် deep learning ကိုအခြေခံပြီး စက်မှုလုပ်ငန်းများတွင် အလွန်စိတ်ဝင်စားမှုရရှိထားသော်လည်း classical machine learning models များအတွက်လည်း အရေးပါသောအသုံးချမှုများရှိနေဆဲဖြစ်သည်။ သင်သည် ယနေ့တိုင်အောင် ဒီအသုံးချမှုများကိုတချို့အသုံးပြုနေတတ်ပါသည်။ ဒီသင်ခန်းစာမှာ သင်သည် အခြားသောလုပ်ငန်းများနှင့် အထူးကျွမ်းကျင်မှုရှိသောနယ်ပယ် ၈ ခုက ဒီ models များကို application များကိုပိုမိုထိရောက်စေခြင်း၊ ယုံကြည်စိတ်ချစေခြင်း၊ ဉာဏ်ရည်ရှိစေခြင်း၊ နှင့် အသုံးပြုသူများအတွက်တန်ဖိုးရှိစေခြင်းအတွက် ဘယ်လိုအသုံးချကြောင်းကိုလေ့လာပါမည်။
သင်သည် ၎င်းပညာရပ်တွင် သင်ကြားသည့်အခါ ချိန်ညှိရန် ဒေတာပြင်ဆင်ခြင်းနည်းလမ်းများနှင့် စက်သင်ယူမှု မော်ဒယ်များ ဖန်တီးခြင်းနည်းလမ်းများကို များစွာလေ့လာခဲ့ပါသည်။ တိုင်းထွာမှု၊ အစုအဝေးခွဲခြားမှု၊ အတန်းခွဲခြားမှု၊ သဘာဝဘာသာစကားကို ထောက်ပံ့ရေးခြင်းနှင့် အချိန်ဇယားနိယာမ မော်ဒယ်များကို တည်ဆောက်ခဲ့ပါသည်။ ဂုဏ်ယူပါတယ်! ယခု သင်စဉ်းစား နေမှာ ဖြစ်တယ်... ဒီ မော်ဒယ်တွေကို အမှန်တကယ် ဘယ်လို အသုံးပြုကြတာလဲ?
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
စက်မှုလုပ်ငန်းတွင် AI ကို တစ်ခါတရံ အသုံးပြု၍ အလွန်စိတ်ဝင်စားမှုရရှိခဲ့သော်လည်း စက်သင်ယူမှုမော်ဒယ်ရိုးရှင်းသောတို့တွင်လည်း သုံးစွဲမှုအသုံးချနိုင်မှု မြင့်မားသေးသည်။ ယနေ့တစ်နေ့မှာတောင် ဒီအသုံးချမှုများတချို့ကို သင် အသုံးပြုနေနိုင်ပါသည်! ဒီသင်ခန်းစာမှာ စက်မှုလုပ်ငန်းအမျိုးအစားရှစ်ခုနှင့် အထူးကဏ္ဍများတွင် ဤမျိုးစုံမော်ဒယ်များကို အသုံးပြု၍ ၎င်း၏ အသုံးပြုမှုများကို ပိုမိုထိရောက်၊ ယုံကြည်စိတ်ချစေရန်၊ တရားမြတ်သောနှင့် အသုံးဝင်မှုရှိသော အဖြစ်လုပ်ဆောင်နေကြသည်ကို ရှာဖွေရမှာ ဖြစ်သည်။
## [သင်ခန်းစာမတိုင်ခင် စိစစ်မေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
## 💰 ဘဏ္ဍာရေး
ဘဏ္ဍာရေးကဏ္ဍသည် machine learning အတွက် အခွင့်အလမ်းများစွာပေးနိုင်သည်။ ဒီကဏ္ဍရှိပြဿနာများစွာသည် ML ကိုအသုံးပြု၍ မော်ဒယ်တည်ဆောက်ခြင်းနှင့် ဖြေရှင်းခြင်းအတွက် သင့်လျော်သည်။
ဘဏ္ဍာရေးကဏ္ဍမှာ စက်သင်ယူမှု အသုံးချရန် အခွင့်အလမ်းများစွာ ရှိသည်။ ဒီနယ်ပယ်ထဲရှိ ပြဿနာများ ဆက်စပ်ပြီး စက်သင်ယူမှုဖြင့် မော်ဒယ်ပြုလုပ်ကာ ဖြေရှင်းနိုင်ခြင်းများ ရှိပါသည်။
### ခရက်ဒစ်ကတ်လိမ်လည်မှုရှာဖွေခြင်း
### ခရက်ဒစ်ကတ်လိမ်လည်မှု ကာကွယ်စစ်ဆေးခြင်း
ကျွန်ုပ်တို့သည် [k-means clustering](../../5-Clustering/2-K-Means/README.md) ကို သင်ခန်းစာတွင်လေ့လာခဲ့ပါသည်၊ ဒါပေမယ့် ဒါကို ခရက်ဒစ်ကတ်လိမ်လည်မှုဆိုင်ရာပြဿနာများကို ဘယ်လိုဖြေရှင်းနိုင်မလဲ?
သင်သည် အစောပိုင်းတွင် [k-means အစုအဝေးခွဲခြားမှု](../../5-Clustering/2-K-Means/README.md) ပြုလုပ်မှုကို လေ့လာခဲ့သည်၊ သို့သော် ၎င်းကို ခရက်ဒစ်ကတ်လိမ်လည်မှုနှင့် ဆက်စပ်သော ပြဿနာများကို မည်ကဲ့သို့ ဖြေရှင်းနိုင်သနည်း?
K-means clustering သည် **outlier detection** ဟုခေါ်သော ခရက်ဒစ်ကတ်လိမ်လည်မှုရှာဖွေခြင်းနည်းလမ်းတွင် အလွန်အသုံးဝင်သည်။ Outliers သည် data set တစ်ခုအပေါ်ရှိ observation များတွင် အထူးပြောင်းလဲမှုများဖြစ်ပြီး ခရက်ဒစ်ကတ်ကို သာမန်အသုံးပြုမှုဖြစ်မဖြစ်၊ သို့မဟုတ် ထူးခြားသောအရာတစ်ခုဖြစ်နေမဖြစ်ကို ပြောပြနိုင်သည်။ အောက်ပါစာတမ်းတွင် ဖော်ပြထားသည့်အတိုင်း သင်သည် k-means clustering algorithm ကိုအသုံးပြု၍ ခရက်ဒစ်ကတ် data ကို စီစစ်နိုင်ပြီး transaction တစ်ခုစီကို outlier ဖြစ်ပုံကိုအခြေခံ၍ cluster တစ်ခုသို့ သတ်မှတ်နိုင်သည်။ ထို့နောက် သင်သည် fraudulent versus legitimate transactions အတွက် အန္တရာယ်များသော clusters များကို အကဲဖြတ်နိုင်သည်။
k-means အစုအဝေးခွဲခြားမှုသည် ခရက်ဒစ်ကတ်လိမ်လည်မှု ကာကွယ်စနစ်တွင် **အထူးထွက်များ (outlier detection)** အဖြစ် အသုံးပြုသည်။ အထူးထွက်များသည် ဒေတာအစုတစ်စုတွင် စောင့်ကြည့်ချက်များတွင် ကြာခြားမှုများဖြစ်ပြီး ခရက်ဒစ်ကတ်သည် ပုံမှန်အသုံးပြုမှုဖြစ်နေသည်ဟုတ်ဟု မဟုတ်ဟု ခွဲခြားပေးနိုင်သည်။ အောက်ပါ စာတမ်းတွင် ဖော်ပြထားသလို k-means မော်ဒယ်ဖြင့် ခရက်ဒစ်ကတ် ဒေတာများကို အစုအဝေးများအဖြစ် ကန့်သတ်ပြီး၊ လုပ်ငန်းဆောင်တာတိုင်းကို အထူးထွက်အသုံးပြုမှုအရ အစုတစ်ခုချင်းစီသို့ ခွဲခြားပေးနိုင်သည်။ ထို့နောက် အန္တရာယ်ဆုံး အစုများကို လိမ်လည်မှုနဲ့ တရားဝင်လုပ်ငန်းဆောင်တာများအနေဖြင့် သုံးသပ်နိုင်ပါသည်။
[Reference](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf)
### Wealth management
### ငွေကြေး စီမံခန့်ခွဲမှု
Wealth management တွင် တစ်ဦးတစ်ယောက် သို့မဟုတ် ကုမ္ပဏီတစ်ခုသည် သူတို့၏ client များအတွက် ရင်းနှီးမြှုပ်နှံမှုများကို စီမံခန့်ခွဲသည်။ သူတို့၏အလုပ်သည် ရေရှည်တွင် ငွေကြေးကို ထိန်းသိမ်းပြီး တိုးတက်စေခြင်းဖြစ်သည်၊ ထို့ကြောင့် အကောင်းဆုံးလုပ်ဆောင်သော ရင်းနှီးမြှုပ်နှံမှုများကို ရွေးချယ်ရန် အရေးကြီးသည်။
ငွေကြေး စီမံခန့်ခွဲမှုတွင် ကိုယ်ပိုင်သို့မဟုတ်ကုမ္ပဏီတစ်ခုသည် သုံးစွဲသူတစ်ဦး ဒါမှမဟုတ် အသင်းအတွက် ရင်းနှီးမြှုပ်နှံမှုများကို ကိုင်တွယ်သည်။ ၎င်း၏တာဝန်မှာ ရေရှည်အတွေ့အကြုံအတွက် ငွေကြေးကို ထိန်းသိမ်းပြီး တိုးတက်စေခြင်းဖြစ်သောကြောင့် ထိရောက်သော ရင်းနှီးမြှုပ်နှံမှုကိုေရြးချယ်ရပါမည်။
ရင်းနှီးမြှုပ်နှံမှုတစ်ခုသည် ဘယ်လိုလုပ်ဆောင်သလဲဆိုတာကို အကဲဖြတ်ရန် statistical regression သည် အလွန်တန်ဖိုးရှိသော tools ဖြစ်သည်။ [Linear regression](../../2-Regression/1-Tools/README.md) သည် fund တစ်ခုသည် benchmark တစ်ခုနှင့် ဆက်စပ်မှုကို နားလည်ရန် အရေးပါသော tools ဖြစ်သည်။ Regression ရလဒ်များသည် statistically significant ဖြစ်မဖြစ်၊ သို့မဟုတ် client ၏ ရင်းနှီးမြှုပ်နှံမှုများကို ဘယ်လောက်ထိခိုက်စေမည်ကိုလည်း သုံးသပ်နိုင်သည်။ သင်သည် multiple regression ကို အသုံးပြု၍ အခြားသော risk factors များကိုပါ ထည့်သွင်းပြီး analysis ကို တိုးချဲ့နိုင်သည်။ Fund တစ်ခုအတွက် ဒီနည်းလမ်းက ဘယ်လိုအလုပ်လုပ်မည်ဆိုတာကို အောက်ပါစာတမ်းတွင် ကြည့်ရှုနိုင်ပါသည်။
ရင်းနှီးမြှုပ်နှံမှုတစ်ခု၏ ဖောင်မော်ထိုးကို စစ်ဆေးမှုတစ်ခုက စာရင်းဇယား အနည်းငယ်မှတစ်ဆင့် ခုခံချက်တစ်ပါးသည် စတယ်လ့်ကတင်ခန့်မှန်းခြင်းဖြစ်ပါသည်။ [လင်းနီယာစတယ်လ့်](../../2-Regression/1-Tools/README.md) သည် ရင်းနှီးမြှုပ်နှံမှုတစ်ခု၏စတင်ယူဆချက်နှင့် ယှဉ်ပြိုင်သော အခြေခံခန့်မှန်းချက်များကို နားလည်ရန် အရေးပါတဲ့ကိရိယာတစ်ခု ဖြစ်သည်။ ထို့ပြင် စတယ်လ့်ရလဒ်များသည် စာရင်းဇယားအနေဖြင့် အရေးပါတော့မလား၊ ဒါမှမဟုတ် ရင်းနှီးမြှုပ်နှံသူ၏ ရင်းနှီးမြှုပ်နှံမှုကို မည်သို့ သက်ရောက်မှုရှိမည်ကို သုံးသပ်နိုင်ပါသည်။ လေ့လာမှုကို နည်းလမ်းပိုမိုကွဲပြားသော စတယ်လ့်များဖြင့် တိုးချဲ့နိုင်ပြီး အန္တရာယ်အချက်များကို ထည့်သွင်းစဉ်းစားနိုင်ပါသည်။ သတ်မှတ်ထားသော ငွေကြေးဖောင်တစ်ခုအတွက် စတယ်လ့်ဖြင့် အကဲဖြတ်ခြင်း စာတမ်းကို အောက်တွင် ကြည့်ရှုနိုင်သည်။
[Reference](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/)
## 🎓 ပညာရေး
ပညာရေးကဏ္ဍသည် ML ကို အသုံးချနိုင်သော စိတ်ဝင်စားဖွယ်ရာနယ်ပယ်တစ်ခုဖြစ်သည်။ စမ်းသပ်မှုများ သို့မဟုတ် စာတမ်းများတွင် လိမ်လည်မှုကို ရှာဖွေခြင်း၊ correction process တွင် bias (မတူညီမှု) ကို စီမံခန့်ခွဲခြင်းစသည်တို့က စိတ်ဝင်စားဖွယ်ရာပြဿနာများဖြစ်သည်။
ပညာရေးနယ်ပယ်များတွင်လည်း စက်သင်ယူမှုအသုံးပြုမှုများစွာ ရှိသည်။ စာမေးပွဲသို့မဟုတ် စာအဖွဲ့ရေးထဲ၌ လိမ်လည်မှုကို စစ်ဆေးခြင်း၊ မမြင်သာသော အမျိုးသမီးမဟုတ်သော အကြမ်းဖက်မှုများနှင့် ပြုပြင်ခြင်းလုပ်ငန်းစဉ်မှာ ရှုပ်ထွေးသော အကျိုးသက်ရောက်မှုများကို ကိုင်တွယ်နိုင်သော ခွင့်ရှိသည်။
### ကျောင်းသားအပြုအမူကိုခန့်မှန်းခြင်း
### ကျောင်းသား စိတ်ဓာတ်ခန့်မှန်းခြေ
[Coursera](https://coursera.com) သည် online open course provider တစ်ခုဖြစ်ပြီး သူတို့ engineering ဆုံးဖြတ်ချက်များစွာကို ဆွေးနွေးသော tech blog တစ်ခုရှိသည်။ ဒီ case study တွင် သူတို့သည် regression line တစ်ခုကို plot လုပ်ပြီး low NPS (Net Promoter Score) rating နှင့် course retention သို့မဟုတ် drop-off အကြား correlation ရှိမရှိကို ရှာဖွေခဲ့သည်။
[Coursera](https://coursera.com) သည် အွန်လိုင်းသင်တန်းပေးသူတစ်ခုဖြစ်ပြီး အင်ဂျင်နီယာလုပ်ငန်း ဆုံးဖြတ်ချက်များကို ဆွေးနွေးသော ထုတ်လွှင့်ထားသော နည်းပညာဘလော့ဂ်ရှိသည်။ ဤလေ့လာမှုတွင် သူတို့သည် သင်ခန်းစာအရည်အသွေးနိမ့်ခြင်း (NPS) နှင့် သင်ရိုးတန်းတွေ့ဆုံမှု သို့မဟုတ် မက်ကွာခြင်းအကြား တွဲထိန်းမှုရှိမရှိ စစ်ဆေးရန် စတယ်လ့်လိုင်းတစ်ခုကို အကြောင်းပြုခဲ့သည်။
[Reference](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a)
### Bias ကိုလျှော့ချခြင်း
### အမျိုးသမီး အလားအလာ လျော့ပါးခြင်း လုပ်ငန်းကိစ္စများ ကာကွယ်ခြင်း
[Grammarly](https://grammarly.com) သည် spelling နှင့် grammar အမှားများကို စစ်ဆေးပေးသော writing assistant တစ်ခုဖြစ်ပြီး သူတို့၏ product များတွင် sophisticated [natural language processing systems](../../6-NLP/README.md) များကို အသုံးပြုသည်။ သူတို့ tech blog တွင် gender bias ကို machine learning တွင် ဘယ်လိုကိုင်တွယ်ခဲ့သည်ဆိုတာကို case study အနေနဲ့ ဖော်ပြထားသည်။ သင်သည် [introductory fairness lesson](../../1-Introduction/3-fairness/README.md) တွင်လည်း ဒီအကြောင်းကိုလေ့လာခဲ့ပါသည်။
[Grammarly](https://grammarly.com) သည် စာရေးအကူအညီပေးသော ကိရိယာတစ်ခုဖြစ်ပြီး စာလုံးပုဒ်နှင့် စာပိုဒ်တစ်ခုလုံးမှားတွေကို စစ်ဆေးပေးသည်။ ၎င်း၏ ကုန်ပစ္စည်းများတွင် နိုင်ငံတကာ [သဘာဝဘာသာစကားကိရိယာများ](../../6-NLP/README.md) ကို တိုးတက်စွာအသုံးပြုသည်။ သူတို့ နည်းပညာဘလော့ဂ်တွင် စက်သင်ယူမှုအမျိုးအစားများအတွက် အမျိုးသမီးအလားအလာ ပြဿနာဖြေရှင်းခဲ့ပုံကို စိတ်ဝင်စားဖွယ် ရေးသားခဲ့သည်။ သင်သည် ကျွန်ုပ်တို့၏ [အတန်းအတွင်းတရားမျှတမှု နိယာမသင်ခန်းစာ](../../1-Introduction/3-fairness/README.md) မှ လေ့လာခဲ့ဖူးသည်။
[Reference](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/)
## 👜 လက်လီရောင်းဝယ်ရေး
## 👜 လက်လီရောင်း
လက်လီရောင်းဝယ်ရေးကဏ္ဍသည် ML ကို အသုံးပြု၍ customer journey ကိုပိုမိုကောင်းမွန်စေခြင်း၊ inventory ကို အကောင်းဆုံးစီမံခန့်ခွဲခြင်းစသည်တို့တွင် အကျိုးရှိစေသည်။
လက်လီအရောင်း ပြဿနာများတွင် ဖောက်သည် ခရီးစဉ်ကောင်းမွန်မှုဖန်တီးခြင်းမှ စတင်၍ အကောင်းဆုံး ထုတ်ကုန်အသွင်းသိုလှောင်မှုထိ စက်သင်ယူမှု အသုံးချမှု အကျိုးရှိသည်။
### Customer journey ကို personalize လုပ်ခြင်း
### ဖောက်သည် ခရီးစဉ်ကို ပုဂ္ဂိုလ်ရေးပြုလုပ်ခြင်း
Wayfair သည် furniture ကဲ့သို့သော home goods များကိုရောင်းချသောကုမ္ပဏီတစ်ခုဖြစ်ပြီး customer များအတွက် taste နှင့်လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးရန် အရေးကြီးသည်။ ဒီ article တွင် Wayfair ၏ engineers များက ML နှင့် NLP ကို "customer များအတွက် အမှန်တကယ်သောရလဒ်များကို surface လုပ်ရန်" ဘယ်လိုအသုံးပြုကြောင်းကို ဖော်ပြထားသည်။ အထူးသဖြင့် သူတို့၏ Query Intent Engine သည် entity extraction, classifier training, asset နှင့် opinion extraction, နှင့် sentiment tagging ကို customer reviews တွင် အသုံးပြုထားသည်။ ဒါဟာ online retail တွင် NLP ဘယ်လိုအလုပ်လုပ်တတ်သလဲဆိုတာကို classic use case တစ်ခုဖြစ်သည်။
Wayfair ဆိုသည်မှာ ကုမ္ပဏီတစ်ခုဖြစ်ပြီး မီးပုံးစတိုင်ပစ္စည်းများကို ရောင်းချကာ ဖောက်သည်များ တိုင်းရင်းသား၏ အရသာနှင့် လိုအပ်ချက်များ အတွက် ထုတ်ကုန်မှန်များရှာဖွေရန်အရေးကြီးသည်။ ဒီဆောင်းပါးတွင် ကုမ္ပဏီမှ အင်ဂျင်နီယာများက စက်သင်ယူမှုနှင့် သဘာဝဘာသာစကားကို အသုံးပြု၍ "ဖောက်သည်များအတွက် မှန်ကန်သော ရလဒ်များကို ပြသရန်" ပြောကြားသည်။ အထူးသဖြင့် သူတို့၏ Query Intent Engine သည် ဖောက်သည် ပြန်လည်သုံးသပ်ချက်များပေါ်တွင် အရာဝတ္ထုထုတ်ယူခြင်း၊ အတန်းခွဲ လေ့ကျင့်မှု၊ ပစ္စည်းနှင့် အမြင်ထုတ်ယူခြင်း၊ခံစားချက် စာတန်းပေးခြင်းတို့ကို သုံးစွဲရန် တည်ဆောက်ထားသည်။ ၎င်းသည် အွန်လိုင်း လက်လီအရောင်းတွင် သဘာဝဘာသာစကားစနစ် အသုံးချမှု၏ ရိုးရာနမူနာတစ်ခုဖြစ်သည်။
[Reference](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search)
### Inventory management
### ပစ္စည်း သိုလှောင်မှု စီမံခန့်ခွဲမှု
[StitchFix](https://stitchfix.com) ကဲ့သို့သော innovative, nimble ကုမ္ပဏီများသည် ML ကို recommendation နှင့် inventory management အတွက် အလွန်အကျိုးရှိစွာအသုံးပြုသည်။ သူတို့၏ styling teams များသည် merchandising teams များနှင့်ပေါင်းစည်းလုပ်ဆောင်ကြသည်။ "ကျွန်ုပ်တို့၏ data scientist တစ်ဦးသည် genetic algorithm တစ်ခုကို apparel တွင် အသုံးပြု၍ ယနေ့မရှိသေးသော successful piece of clothing ကိုခန့်မှန်းခဲ့သည်။"
[StitchFix](https://stitchfix.com) ဆိုသည်မှာ အသုံးပြုသူထံ အဝတ်အစားပို့ဆောင်ပေးသည့် ဘောက်စ်ဆိုင်တစ်ခုဖြစ်ပြီး အကြံပြုခြင်းနှင့် ပစ္စည်းသိုလှောင်မှု စီမံခန့်ခွဲမှုအတွက် စက်သင်ယူမှုကို အလွန်အကျွံ အားထားခြင်းဖြစ်သည်။ ၎င်းတို့၏ စတိုင်နည်းပညာအဖွဲ့များသည် ကုန်စာရင်းအဖွဲ့နှင့် ပူးပေါင်း၍ "တစ်ယောက်သော ဒေတာသိပ္ပံပညာရှင်တစ်ဦးက ဇီ၀ဗေဒနည်းပညာဂဏန်းရှင်ဓာတ်ခွဲခြင်းကို စမ်းသပ်၍ မယ့်အဝတ်အစားကို ခန့်မှန်းနိုင်သည့် ကိရိယာကို ဖန်တီးခဲ့သည်။ ၎င်းအရာကို ကုန်စာရင်းအဖွဲ့သို့ လာရောက်ခဲ့ပြီး ယခုအခါ ၎င်းတို့က သုံးစွဲသည့် ကိရိယာတစ်ခု ဖြစ်လာနိုင်သည်။"
[Reference](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/)
## 🏥 ကျန်းမာရေး
## 🏥 ကျန်းမာရေးစောင့်ရှောက်မှု
ကျန်းမာရေးကဏ္ဍသည် ML ကို အသုံးပြု၍ သုတေသနလုပ်ငန်းများနှင့် logistic ပြဿနာများကို optimize လုပ်နိုင်သည်။ ဥပမာ - လူနာများကိုပြန်လည်လက်ခံခြင်း၊ သို့မဟုတ် ရောဂါများပျံ့နှံ့မှုကိုတားဆီးခြင်း
ကျန်းမာရေးစောင့်ရှောက်မှုနယ်ပယ်သည် သုတေသနတာဝန်များနှင့် လူနာများအား ပြန်လည်တက်ရောက်မှု သို့မဟုတ် ရောဂါ ကပ်လျက် ထိန်းချုပ်မှု တို့မှာ စက်သင်ယူမှုကို အကျိုးရှိစွာ အသုံးချနိုင်သည်
### Clinical trials စီမံခန့်ခွဲခြင်း
### ဆေးစမ်းသပ်မှုစီမံခန့်ခွဲမှုပြဿနာ
Clinical trials တွင် toxicity သည် drug makers များအတွက် အရေးကြီးသောပြဿနာတစ်ခုဖြစ်သည်။ Toxicity ဘယ်လောက်ထိခံနိုင်ရမလဲ? ဒီသုတေသနတွင် clinical trial methods များကို analysis လုပ်ပြီး clinical trial outcomes ကိုခန့်မှန်းရန်နည်းလမ်းအသစ်တစ်ခုကို ဖန်တီးခဲ့သည်။ အထူးသဖြင့် random forest ကိုအသုံးပြု၍ [classifier](../../4-Classification/README.md) တစ်ခုကို ဖန်တီးခဲ့သည်။
ဆေးစမ်းသပ်မှုတွင် အဆိပ်အတောက်သည် ဆေးထုတ်လုပ်သူများအတွက် အဓိကပူပန်မှုပြဿနာဖြစ်သည်။ ဘယ်လောက်အဆိပ်ကို ချွတ်နိုင်သနည်း? ဤသုတေသနတွင် ဆေးစမ်းသပ်မှုနည်းပညာရှာဖွေရေးများနှင့်အတူ အခြေအနေများခန့်မှန်းခြင်းအသစ်တစ်ခုကို ဖန်တီးခဲ့သည်။ အထူးသဖြင့် random forest ကို အသုံးပြု၍ ဆေးအုပ်စုအသီးသီးကို ခွဲခြားနိုင်သော [အတန်းခွဲစနစ် (classifier)](../../4-Classification/README.md) ကို တည်ဆောက်နိုင်ခဲ့သည်။
[Reference](https://www.sciencedirect.com/science/article/pii/S2451945616302914)
### လူနာပြန်လည်လက်ခံမှုစီမံခန့်ခွဲခြင်း
### ဆေးရုံ ပြန်လည်တက်ရောက်မှု စီမံခန့်ခွဲမှု
ဆေးရုံ care သည် အလွန်ကုန်ကျစရိတ်များရှိပြီး လူနာများကိုပြန်လည်လက်ခံရခြင်းသည် အထူးကုန်ကျစရိတ်များရှိသည်။ ဒီစာတမ်းတွင် ML ကို clustering algorithms အသုံးပြု၍ readmission potential ကိုခန့်မှန်းရန် ဘယ်လိုအသုံးပြုကြောင်းကို ဖော်ပြထားသည်။ ဒီ clusters များက "readmissions များတွင် common cause ရှိနိုင်သောအုပ်စုများကို ရှာဖွေရန်" analyst များကိုကူညီပေးသည်။
ဆေးရုံစောင့်ရှောက်မှုသည်စျေးနှုန်းမြင့်သည်၊ အထူးသဖြင့် လူနာများ ပြန်လည်တက်ရောက်ရသည့်အခါ။ ဒီစာတမ်းတွင် ML ကို အသုံးပြု၍ [အစုအဝေးခွဲခြားမှု](../../5-Clustering/README.md) စနစ်ဖြင့် ပြန်လည်တက်ရောက်မှုရှိနိုင်ချေကို ခန့်မှန်းကြောင်းဖော်ပြသည်။ ဤအစုများက "မျိုးစုံသောပြန်လည်တက်ရောက်မှုပေးသောအုပ်စုများကို ရှာဖွေတွေ့ရှိရန်" ကူညီသည်။
[Reference](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning)
### ရောဂါစီမံခန့်ခွဲခြင်း
### ရောဂါစီမံခန့်ခွဲမှု
နောက်ဆုံးကာလ pandemic သည် ML ကိုရောဂါပျံ့နှံ့မှုကိုတားဆီးရန် ဘယ်လိုအသုံးပြုနိုင်သည်ဆိုတာကို အလင်းရောင်ပေးခဲ့သည်။ ဒီ article တွင် ARIMA, logistic curves, linear regression, နှင့် SARIMA ကိုအသုံးပြုထားသည်။ "ဒီအလုပ်သည် virus ၏ပျံ့နှံ့နှုန်းကိုတွက်ချက်ရန်နှင့် သေဆုံးမှုများ၊ ပြန်လည်ကောင်းမွန်မှုများ၊ နှင့် အတည်ပြုမှုများကိုခန့်မှန်းရန် ကြိုးစားမှုတစ်ခုဖြစ်သည်။"
ကိုဗစ်ကပ်ရောဂါကဲ့သို့ နောက်ဆုံးဗိသုကာကာလတွင် စက်သင်ယူမှုက ရောဂါပြန့်ပွားမှုကို တားဆီးရာတွင် အလင်းစိုက် ချထားသည်။ ဤဆောင်းပါးတွင် ARIMA, logistic curves, linear regression, SARIMA ဆိုင်ရာအသုံးပြုမှုများကို တွေ့မြင်ရမည်။ "ဤလေ့လာမှုသည် ဤဗိုင်းရပ်စ်တို့၏ ပြန်လည်ပြန့်ပွားမှုနှုန်းကို ခန့်မှန်မှန်းခြေခြင်းဖြစ်ပြီး အသေဆုံးမှု၊ ကုန်လွန်မှု၊ အတည်ပြု ရောဂါကြုံတွေ့မှုများကို ကြိုတင်ခန့်မှန်းရန် အကူအညီပေးမည်ဖြစ်သည်။"
[Reference](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/)
## 🌲 သဘာဝပတ်ဝန်းကျင်နှင့် Green Tech
## 🌲 သဘာဝပတ်ဝန်းကျင် နှင့် အစိမ်းနှင့် နည်းပညာ
သဘာဝနှင့် သုပ်တောဟူသည် သတ္တဝါနှင့် သဘာဝ၏ တုံ့ပြန်ဆက်ဆံမှုရှိသော ကြောင့် ပျက်စီးမှုများကို တိတိကျကျ တိုင်းတာနိုင်ပြီး တင်းကြပ်စွာ ကိုင်တွယ်ရန် အရေးကြီးသည်။ မျိုးစိုက်မှု သို့မဟုတ် သတ္တဝါများ ဇယားကျမည့် ဖြစ်ရပ်များတွင် သင့်တော်သော လှုပ်ရှားမှုများ ပြုလုပ်ပေးရပါမည်။
သဘာဝနှင့်သဘာဝပတ်ဝန်းကျင်သည် အလွန်နူးညံ့သောစနစ်များဖြစ်ပြီး တိရစ္ဆာန်များနှင့်သဘာဝအကြားဆက်ဆံရေးကိုအဓိကထားသည်။ ဒီစနစ်များကိုတိကျစွာတိုင်းတာနိုင်ရန်နှင့် တစ်စုံတစ်ခုဖြစ်ပျက်ပါက သင့်တော်သောအရေးယူမှုများလုပ်ဆောင်ရန် အရေးကြီးသည်။
### သစ်တော စီမံခန့်ခွဲမှု
### သစ်တောစီမံခန့်ခွဲမှု
သင်သည် ယခင်သင်ခန်းစာများတွင် [ထပ်မံလေ့လာမှု](../../8-Reinforcement/README.md) ကို လေ့လာခဲ့သည်။ သဘာဝအတွင်း နမူနာခန္ဓာ့လမ်းညွန်များ ခန့်မှန်းရာတွင် အထူးအသုံးဝင်သည်။ အထူးသဖြင့် သစ်တောမီးလောင်မှုများနှင့် အန္တရာယ်ရှိသော အသဉ်းဖွင့်ပိုးများ ပြန့်ပွားမှုတို့ကို စောင့်ကြည့်နိုင်သည်။ ကနေဒါတွင် သုတေသနဆိုင်ရာအဖွဲ့တစ်ခုက Reinforcement Learning ကို လေကြောင်းဓာတ်ပုံပေါ်မှ သစ်တောမီးလောင်မှုမော်ဒယ်များ ဖန်တီးရန် အသုံးပြုခဲ့သည်။ "spatially spreading process (SSP)" ဟု ခေါ်သော ပြုပြင်မှုတစ်ခုဖြင့် သစ်တောမီးလုံးကို သဘာဝအတိုင်း ဇယားတစ်ခု၏ ဆဲလ်တစ်ခုအတွက် ဆိုင်ရာ အေးဂျင့်အဖြစ် ဖော်ပြထားသည်။ "မီးလောင်မှုသည် အချိန်အမျိုးမျိုးတွင် မြောက်၊ တောင်၊ အရှေ့၊ အغربသို့ ပြန့်ပွားမှု သို့မဟုတ် မပြန့်ပွားမှု ပြုနိုင်ပါသည်။"
သင်သည် [Reinforcement Learning](../../8-Reinforcement/README.md) ကို ယခင်သင်ခန်းစာများတွင်လေ့လာခဲ့ပါသည်။ သဘာဝတွင် pattern များကိုခန့်မှန်းရန် အလွန်အသုံးဝင်သည်။ အထူးသဖြင့် သစ်တောမီးလောင်မှုများနှင့် invasive species များပျံ့နှံ့မှုကဲ့သို့သော ecological ပြဿနာများကို tracking လုပ်ရန် အသုံးပြုနိုင်သည်။ ကနေဒါတွင် သုတေသနလုပ်ငန်းတစ်ခုသည် satellite images ကိုအသုံးပြု၍ forest wildfire dynamics models များကို reinforcement learning ဖြင့်တည်ဆောက်ခဲ့သည်။
ဤနည်းလမ်းသည် ဓါတ်ပုံသွက်နယ်ပယ်၏ Markov Decision Process (MDP) တန်ဖိုးသိရှိမှုစနစ်အား လုံးဝ ပြောင်းလဲမည်ဖြစ်သည်။ ဤအဖွဲ့မော်ဒယ်များ၏ ရိုးရာအယ်လဂိုရီသည်မျှကို အောက်ပါ လင့်ခ်တွင် ဖတ်ရှုနိုင်သည်။
[Reference](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full)
### တိရစ္ဆာန်များ၏လှုပ်ရှားမှုကိုစစ်ဆေးခြင်း
### သတ္တဝါများ၏ လှုပ်ရှားမှု ချိတ်ဆက်မှု
Deep learning သည် တိရစ္ဆာန်လှုပ်ရှားမှုများကို visually tracking လုပ်ရန် revolution တစ်ခုဖန်တီးခဲ့သော်လည်း classic ML သည် ဒီအလုပ်တွင် အရေးပါနေဆဲဖြစ်သည်။
အမြင့်ပြင်းထန်သော နည်းပညာဖြစ်သည့် deep learning က သတ္တဝါလှုပ်ရှားမှုကို ထိရောက်စွာ စောင့်ကြည့်ခြင်း ရလဒ် ပြောင်းလဲမှု တစ်ခု ဖြစ်လာခဲ့သည် (သင့်ကိုယ်ပိုင် [polar bear tracker](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) တည်ဆောက်နိုင်သည်)။ သို့သော် ရိုးရိုးစက်သင်ယူမှုလည်း ဤလုပ်ငန်းတွင် အသုံးဖြစ်နေဆဲ ဖြစ်သည်။
Farm animals များ၏လှုပ်ရှားမှုများကို tracking လုပ်ရန် sensor များနှင့် IoT ကိုအသုံးပြုသော်လည်း data ကို preprocess လုပ်ရန် basic ML techniques များကိုအသုံးပြုသည်။ ဥပမာ - ဒီစာတမ်းတွင် classifier algorithms များကိုအသုံးပြု၍ သိုးများ၏ posture များကိုစစ်ဆေးခဲ့သည်။
မိုးမွှမ်းသတ္တဝါလှုပ်ရှားမှုများစောင့်ကြည့်ရန် ဆင်ဆာများနှင့် IoT မှာ ဤအမျိုးအစား တွေ့မြင်မှု ပြုလုပ်မှုကို အသုံးပြုကြပြီး ဒေတာ မတည့်မှုများကို အထူး ML နည်းပညာဖြင့် ကြိုတင် စစ်ဆေးကြသည်။ ဥပမာအားဖြင့်၊ ဤစာတမ်းတွင် ဆိတ်လေးများ၏ ခန္ဓာကိုယ်အနေအထားများကို အတန်းခွဲစနစ်များဖြင့် စောင့်ကြည့် စစ်ဆေးခဲ့သည်။ စာမျက်နှာ ၃၃၅ တွင် ROC ကွက်ကို သင် မှတ်မိနိုင်ပါသည်။
[Reference](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf)
### ⚡️ စွမ်းအင်စီမံခန့်ခွဲမှု
[time series forecasting](../../7-TimeSeries/README.md) သင်ခန်းစာများတွင် supply နှင့် demand ကိုနားလည်ခြင်းအပေါ်အခြေခံပြီး smart parking meters ကို revenue ရရှိရန်အသုံးပြုခဲ့သည်။ ဒီ article တွင် clustering, regression နှင့် time series forecasting ကိုပေါင်းစပ်ပြီး smart metering အပေါ်အခြေခံ၍ အနာဂတ်စွမ်းအင်အသုံးပြုမှုကိုခန့်မှန်းခဲ့သည်။
### ⚡️ စွမ်းအင် စီမံခန့်ခွဲမှု
ကျွန်ုပ်တို့၏ [အချိန်စီးရီး ခန့်မှန်းချက်](../../7-TimeSeries/README.md) သင်ခန်းစာတွင် မြို့တော်အတွက် နေရပ်ဒေသများ စီမံခန့်ခွဲမှုအတွက် smart parking meters ကို အသုံးပြုပြီး ထွက်ကုန်နှင့် တောင်းဆိုမှုကို ပြန်လည်နားထောင်ခြင်းရေးထားသည်။ ဤဆောင်းပါးမှာ ไอร์แลนด์နိုင်ငံ၏ စမတ်မီတာအခြေပြု စွမ်းအင်သုံးစားမှု ခန့်မှန်းခြင်းအား အေစုအဝေးခွဲခြားမှု၊ စတယ်လ့်နှင့် အချိန်စီးရီးချိန်ခန့်မှန်းမှုတို့ပေါင်းစပ်သုံးစွဲမှုကို အသေးစိတ် ဆွေးနွေးထားသည်။
[Reference](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf)
## 💼 အာမခံ
အာမခံကဏ္ဍသည် ML ကိုအသုံးပြု၍ financial နှင့် actuarial models များကိုတည်ဆောက်ခြင်းနှင့် optimize လုပ်ခြင်းအတွက် အသုံးပြုသည်။
အာမခံကဏ္ဍသည် စီးပွားရေးနှင့် အာမခံဆိုင်ရာ မော်ဒယ်များကို တည်ဆောက်၍ အဆင်ပြေစွာ စီမံခန့်ခွဲရန် စက်သင်ယူမှုကို အသုံးပြုသည်။
### Volatility Management
### ကွာခြားမှု စီမံခန့်ခွဲမှု
MetLife သည် life insurance provider တစ်ခုဖြစ်ပြီး သူတို့ financial models တွင် volatility ကိုဘယ်လိုခန့်မှန်းပြီး လျှော့ချကြောင်းကို ဖော်ပြထားသည်။ ဒီ article တွင် binary နှင့် ordinal classification visualizations များကိုတွေ့နိုင်သည်။
MetLife အာမခံကုမ္ပဏီသည် ငွေကြေးမော်ဒယ်များတွင် ကွာခြားမှုများကို စိစစ်ပြီး လျှော့ချပေးမှု နည်းလမ်းများကို ဖော်ပြထားသည်။ ဤဆောင်းပါးတွင်ဒစ်ဂျစ်တယ်နှင့် စာရင်းဗေဒအတန်းခွဲရေး မျှဝေမှုများကို တွေ့မြင်ရမည်ဖြစ်ပြီး ခန့်မှန်းချက် ပြသမှုများပါရှိသည်။
[Reference](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf)
## 🎨 အနုပညာ၊ ယဉ်ကျေးမှုနှင့်စာပေ
## 🎨 အနုပညာ၊ ယဉ်ကျေးမှုနှင့် စာပေ
အနုပညာတွင် ဥပမာအားဖြင့် သတင်းစာထုတ်လုပ်ရေးကဲ့သို့ လိမ်လည်သတင္းတွေ့၇ၣ်ကိစ္စ làအဓိက ဖြစ်သည်၊ ၎င်းသည် လူ့မြတ်နိုးစိတ်ကို ထိခိုက်ပြီး ဒီမိုကရေစီ များစုစည်းနိုင။ ပြတိုက်များသည် မူရင်းပစ္စည်းများနှင့် ယှဉ်၍ အရင်းအမြစ်စီမံခန့်ခွဲမှုအထိ အဓိက အကျိုးရှိစေရန် အထောက်အကူပြုသည်။
### လိမ်လည်သတင်းစစ်ဆေးခြင်း
လိမ်လည်သတင်းစစ်ဆေးခြင်းသည် ယနေ့မီဒီယာ၌ ကြိုးစားလျက်ရှိသော အပြိုင်အဆိုင်ကစားခြင်း တစ်ခုဖြစ်လာသည်။ ဤဆောင်းပါးတွင် သုတေသနကျွမ်းကျင်သူများက ကျွန်ုပ်တို့ လေ့လာခဲ့သော စက်သင်ယူမှုနည်းပညာများစွာ ပေါင်းစပ်သုံးစွဲသော စနစ်တစ်ခုစမ်းသပ်ပြီး အကောင်းဆုံး မော်ဒယ်ကို စမ်းသပ်၍ တပ်ဆင်ကြောင်း ချဉ်းကပ်သည်။ "ဤစနစ်သည် သဘာဝဘာသာစကား ပြန်လည်သုံးသပ်မှု ရှိ၍ ဒေတာမှ လက္ခဏာများကိုထုတ်ယူပြီး၊ Naive Bayes, Support Vector Machine (SVM), Random Forest (RF), Stochastic Gradient Descent (SGD), Logistic Regression(LR) ကဲ့သို့ စက်သင်ယူမှု အတန်းခွဲစနစ်များ လေ့ကျင့်ရန် သုံးသည်။"
[Reference](https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf)
ဤဆောင်းပါးသည် စက်သင်ယူမှု နယ်ပယ်များစွာ ပေါင်းစပ်ခြင်းဖြင့် လက်တွေ့ကောင်းမွန်သည့် ရလဒ်များထုတ်ပေးနိုင်ပြီး လိမ်လည်သတင်းများ ပြန့်ပွားမှု နှင့် စိုးရိမ်ရသော ပျက်စီးမှုများ အောင်မလုပ်စေရန် ကူညီနိုင်ကြောင်းပြသည်။ ဤအမှုတွင် COVID ကုသမှုများအကြောင်း လျှို့ဝှက်ချက်များ ပြန့်ပွား၍ လူဦးရေ ဆူပူမှု ဖြစ်ခဲ့သည်။
### ပြတိုက်တွင် စက်သင်ယူမှု
ပြတိုက်များသည် AI တိုးတက်နေသည့်အချိန် လူ့ဒီဂျစ်တယ်များနှင့် စုပေါင်းရန်နှင့် မူရင်းသက်တမ်းစာရွက်စာတမ်းများမှ တွဲချိတ်မှုများ ရှာဖွေရန် လွယ်ကူပြီဖြစ်လာသည်။ [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) ကဲ့သို့သော ပရောဂျက်များသည် ဗာတီကန်စာရွက်စာတမ်းများ ပိတ်ထားခြင်းကို ဖြေရှင်းရာတွင် ကူညီနေသည်။ ပြတိုက်စီးပွားရေးအပိုင်းမှာလည်း စက်သင်ယူမှု မော်ဒယ်များက ကူညီနေသည်။
ဥပမာအားဖြင့် Chicago အနုပညာအဖွဲ့အစည်းသည် ပရိသတ်တို့စိတ်ဝင်စားမှုများကို ခန့်မှန်းပြီး ပြပွဲများအတွက် ဘယ်တော့တက်ရောက်မည်ကို ခန့်မှန်းသည့် မော်ဒယ်တွေ ဖန်တီးခဲ့သည်။ ရည်ရွယ်ချက်မှာ သုံးစွဲသူတိုင်း ပြတိုက်သို့တက်ရောက်သည့်အခါ ပုဂ္ဂိုလ်ရေးနှင့် ထိရောက်သည့် ခရီးစဉ်ဖန်တီးခြင်းဖြစ်သည်။ "2017 ဘဏ္ဍာရေးနှစ်အတွင်း ထိုမော်ဒယ်သည် တက်ရောက်မှုနှင့် ဝင်ခွင့် ခန့်မှန်းချက်အား ၁ ရာခိုင်နှုန်း အစီအစဉ်အတိုင်း တိကျစွာ ခန့်မှန်းနိုင်ခဲ့ဟု Andrew Simnick၊ Art Institute ၏ ဒီဂရီအဆင့်မြင့် ဥက္ကဋ္ဌ ပြောသည်။"
[Reference](https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices)
## 🏷 စျေးကွက်ရှာဖွေရေး
### ဖောက်သည်အုပ်စု ခွဲခြားခြင်း
အကောင်းဆုံးစျေးကွက်ရှာဖွေရေး သတ္တိစနစ်များသည် ဖောက်သည်များကို အုပ်စုအလိုက် မတူညီသည့် နည်းလမ်းဖြင့်ရည်ရွယ်သည်။ ဤဆောင်းပါးမှာ အစုအဝေးခွဲခြားမှုအယ်လဂိုရီသည်များကို အသုံးပြုကာ ခွဲခြားထားသောစျေးကွက်ရှာဖွေရေးကို ထောက်ပံ့သည်။ ခွဲခြားထားသော စျေးကွက်ရှာဖွေရေးသည် ကုမ္ပဏီများအား အမှတ်တံဆိပ် အသိအမှတ်ပြုမှုတိုးတက်ခြင်း၊ ဖောက်သည်များပိုမိုရောက်ရှိနိုင်ခြင်းနှင့် အမြတ်ပိုများစေရန် ကူညီပေးသည်။
[Reference](https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/)
## 🚀 စိန်ခေါ်မှု
အနုပညာတွင် ဥပမာ - သတင်းစာပညာတွင် စိတ်ဝင်စားဖွယ်ရာပြဿနာများစွာရှိသည်။ Fake news ကိုရှာဖွေခြင်းသည် လူများ၏အမြင်ကိုသက်ရောက်စေခြင်းနှင့် ဒီမိုကရေစီများကိုတုန်လှုပ်စေခြင်းအထိ သက်ရောက်မှုရှိသည်ဟု သက်သေပြထားသည်။ ပြတိုက်များသည် artifacts များအကြားဆက်စပ်မှုများကိုရှာဖွေခြင်းမှစ၍ resource planning အထိ ML ကိုအသုံးပြုနိုင်သည်။
ဤ သင်ခန်းစာတွင် သင်ယူခဲ့သော နည်းလမ်းများအချို့ကို အသုံးပြုသော နယ်ပယ်အသစ်တစ်ခုကို ရှာဖွေပြီး၊ စက်သင်ယူမှု မည်သို့ အသုံးချနေသည်ကို ရှာဖွေပါ
### Fake news detection
Fake news ကိုရှာဖွေခြင်းသည် ယနေ့မီဒီယာတွင် ကြောင်နှင့်ကြွက်ကစားပွဲတစ်ခုဖြစ်လာသည်။ ဒီ article တွင် သုတေသနလုပ်ငန်းများက ML techniques များစွာကိုပေါင်းစပ်ပြီး အကောင်းဆုံးမော်ဒယ်ကို deploy လုပ်နိုင်ကြောင်းကိုဖော်ပြထားသည်။ "ဒီစနစ်သည် data မှ features များကို extract လုပ်ရန် natural language processing ကို
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## [စာသင်ပြီးနောက် စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/)
## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
## ပြန်လည်စစ်ဆေးခြင်းနှင့် ကိုယ့်ကိုယ်ကိုလေ့လာမှု
Wayfair ရဲ့ ဒေတာသိပ္ပံအဖွဲ့က ML ကို သူတို့ကုမ္ပဏီမှာ ဘယ်လိုအသုံးပြုတယ်ဆိုတာနဲ့ပတ်သက်ပြီး စိတ်ဝင်စားဖွယ်ဗီဒီယိုများစွာရှိပါတယ်။ [ကြည့်ရှုဖို့](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) တန်ပါတယ်!
Wayfair ဒေတာသိပ္ပံအဖွဲ့က သူတို့ကုမ္ပဏီမှာ ML ကို ဘယ်လိုအသုံးပြုနေတယ်ဆိုတာကို စိတ်ဝင်စားဖွယ် ရုပ်သံများ အများကြီးရှိပါတယ်။ [ကြည့်ရှုဖို့](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) တစ်ကြိမ်လောက် သတိပြုဖို့တန်ပါပြီ!
## လုပ်ငန်းတာဝန်
## အလုပ်အမှု
[A ML scavenger hunt](assignment.md)
[ML ရှာဖွေခြင်း အားဖြည့်လုပ်ငန်း](assignment.md)
---
**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ဆိုမှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူပညာရှင်များမှ ဘာသာပြန်ဆိုမှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ဆိုမှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားမှုများ သို့မဟုတ် အဓိပ္ပာယ်မှားမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ပြောကြားချက်**
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -24,8 +24,8 @@
"language_code": "uk"
},
"1-Introduction/3-fairness/README.md": {
"original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
"translation_date": "2025-09-05T12:39:07+00:00",
"original_hash": "0f00d72169a0d37eecfd16d71e01700a",
"translation_date": "2026-07-14T01:27:31+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "uk"
},
@ -54,8 +54,8 @@
"language_code": "uk"
},
"2-Regression/1-Tools/README.md": {
"original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
"translation_date": "2025-09-05T11:42:11+00:00",
"original_hash": "0b8635427b582d03ea4ab7089b93e505",
"translation_date": "2026-07-14T01:25:01+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "uk"
},
@ -72,8 +72,8 @@
"language_code": "uk"
},
"2-Regression/2-Data/README.md": {
"original_hash": "7c077988328ebfe33b24d07945f16eca",
"translation_date": "2025-09-05T11:47:09+00:00",
"original_hash": "a58b2c4d16c6b122643391745ac15af6",
"translation_date": "2026-07-14T01:25:51+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "uk"
},
@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "uk"
},
"2-Regression/2-Data/solution/notebook.ipynb": {
"original_hash": "96b95f8cf473481f2f371de8156f1571",
"translation_date": "2026-07-14T01:06:37+00:00",
"source_file": "2-Regression/2-Data/solution/notebook.ipynb",
"language_code": "uk"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:18:00+00:00",
@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
"translation_date": "2025-09-05T13:38:44+00:00",
"translation_date": "2026-07-14T01:26:47+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "uk"
},
@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
"translation_date": "2025-09-05T12:32:04+00:00",
"translation_date": "2026-07-14T01:28:22+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "uk"
},
@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "uk"
},
"__translation_failures__": {
"sketchnotes/LICENSE.md": {
"original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
"source_file": "sketchnotes/LICENSE.md",
"language_code": "uk",
"failure_date": "2026-07-14T01:24:13+00:00",
"status": "failed",
"error_type": "TranslationIncompleteError",
"error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
"translator_version": "0.20.0",
"failure_policy_version": 1
}
},
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T12:22:28+00:00",

@ -1,140 +1,167 @@
# Створення рішень машинного навчання з відповідальним AI
![Резюме відповідального AI у машинному навчанні у вигляді скетчноту](../../../../sketchnotes/ml-fairness.png)
> Скетчнот від [Tomomi Imura](https://www.twitter.com/girlie_mac)
# Створення рішень машинного навчання з відповідальним ШІ
![Підсумок відповідального ШІ в машинному навчанні у вигляді скетчноуту](../../../../translated_images/uk/ml-fairness.ef296ebec6afc98a.webp)
> Скетчноут від [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
## Вступ
У цьому курсі ви почнете досліджувати, як машинне навчання впливає на наше повсякденне життя. Уже зараз системи та моделі беруть участь у щоденних процесах прийняття рішень, таких як діагностика в охороні здоров’я, схвалення кредитів або виявлення шахрайства. Тому важливо, щоб ці моделі працювали добре та забезпечували результати, яким можна довіряти. Як і будь-яке програмне забезпечення, системи AI можуть не відповідати очікуванням або мати небажані наслідки. Саме тому важливо розуміти та пояснювати поведінку моделі AI.
У цій навчальній програмі ви почнете відкривати, як машинне навчання може впливати і вже впливає на наше повсякденне життя. Навіть зараз системи та моделі залучені до щоденних процесів прийняття рішень, таких як діагностика в охороні здоров’я, схвалення кредитів чи виявлення шахрайства. Тому важливо, щоб ці моделі працювали коректно, забезпечуючи надійні результати. Як і будь-який програмний додаток, системи штучного інтелекту можуть не виправдати очікувань або призвести до небажаних результатів. Ось чому важливо бути здатним розуміти та пояснювати поведінку моделі ШІ.
Уявіть, що може статися, якщо дані, які ви використовуєте для створення цих моделей, не враховують певні демографічні групи, такі як раса, стать, політичні погляди, релігія, або непропорційно представляють ці групи. А що, якщо результати моделі інтерпретуються так, що вони надають перевагу певній демографічній групі? Які наслідки це матиме для застосування? Крім того, що станеться, якщо модель матиме негативний результат і завдасть шкоди людям? Хто несе відповідальність за поведінку систем AI? Це деякі з питань, які ми будемо досліджувати в цьому курсі.
Уявіть, що станеться, коли дані, які ви використовуєте для створення цих моделей, не містять певних демографічних груп, таких як раса, стать, політичні погляди, релігія, або ж непропорційно представляють такі групи. А що, якщо результат моделі інтерпретують так, що вона надає перевагу певній демографічній категорії? Які наслідки це матиме для застосунку? Крім того, що відбувається, якщо модель дає несприятливий результат і шкодить людям? Хто несе відповідальність за поведінку системи ШІ? Ось деякі питання, які ми розглянемо в цій програмі.
У цьому уроці ви:
- Збільшите свою обізнаність про важливість справедливості в машинному навчанні та шкоду, пов’язану з несправедливістю.
- Ознайомитеся з практикою дослідження аномалій і незвичайних сценаріїв для забезпечення надійності та безпеки.
- Зрозумієте необхідність створення інклюзивних систем, які надають можливості всім.
- Дослідите важливість захисту конфіденційності та безпеки даних і людей.
- Побачите важливість прозорого підходу для пояснення поведінки моделей AI.
- Усвідомите, як відповідальність є ключовою для створення довіри до систем AI.
- Підвищите свою обізнаність щодо важливості справедливості в машинному навчанні та шкоди, пов’язаної з несправедливістю.
- Ознайомитеся з практикою вивчення аномалій та незвичних сценаріїв, щоб забезпечити надійність і безпеку.
- Отримаєте розуміння необхідності надання повноважень усім шляхом проектування інклюзивних систем.
- Дослідите, наскільки важливо захищати приватність і безпеку даних і людей.
- Побачите важливість підходу "прозорої скриньки" для пояснення поведінки моделей ШІ.
- Будете усвідомлювати, наскільки відповідальність є суттєвою для створення довіри до систем ШІ.
## Передумови
## Вимоги до підготовки
Як передумову, пройдіть навчальний курс "Принципи відповідального AI" та перегляньте відео нижче на цю тему:
Як вимогу підготуйтеся, пройшовши навчальний шлях "Принципи відповідального ШІ" і перегляньте відео нижче на цю тему:
Дізнайтеся більше про відповідальний AI, слідуючи цьому [навчальному курсу](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
Дізнайтеся більше про відповідальний ШІ, дотримуючись цього [Навчального шляху](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
[![Підхід Microsoft до відповідального AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Підхід Microsoft до відповідального AI")
[![Підхід Microsoft до відповідального ШІ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Підхід Microsoft до відповідального ШІ")
> 🎥 Натисніть на зображення вище, щоб переглянути відео: Підхід Microsoft до відповідального AI
> 🎥 Натисніть на зображення вище для перегляду відео: Підхід Microsoft до відповідального ШІ
## Справедливість
Системи 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)
- **Приниження.** Несправедливе критикування чи маркування чогось або когось. Наприклад, технологія маркування зображень сумно помилково позначила темношкірих людей як горил.
- **Надмірна або недостатня представленість.** Ідея полягає в тому, що певна група не представлена у певній професії, і будь-який сервіс чи функція, які сприяють цьому стану, спричиняють шкоду.
- **Стереотипізація.** Пов’язання певної групи з визначеними заздалегідь характеристиками. Наприклад, система перекладу між англійською та турецькою може мати помилки через слова з гендерними стереотипами.
![переклад на турецьку](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png)
> переклад на турецьку
![переклад турецькою](../../../../translated_images/uk/gender-bias-translate-en-tr.f185fd8822c2d437.webp)
> переклад турецькою
![переклад назад на англійську](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png)
> переклад назад на англійську
![переклад назад англійською](../../../../translated_images/uk/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp)
> переклад назад англійською
Під час розробки та тестування систем AI ми повинні гарантувати, що AI є справедливим і не запрограмований на прийняття упереджених або дискримінаційних рішень, які також заборонено приймати людям. Гарантування справедливості в AI і машинному навчанні залишається складним соціотехнічним викликом.
При проєктуванні та тестуванні систем ШІ слід забезпечити справедливість і уникнути програмування упереджених або дискримінаційних рішень, які також заборонені людині. Забезпечення справедливості в ШІ та машинному навчанні залишається складним соціотехнічним викликом.
### Надійність і безпека
### Надійність та безпека
Щоб створити довіру, системи AI повинні бути надійними, безпечними та стабільними за нормальних і несподіваних умов. Важливо знати, як системи AI поводитимуться в різних ситуаціях, особливо коли вони є аномаліями. Під час створення рішень AI необхідно приділяти значну увагу тому, як обробляти широкий спектр обставин, з якими можуть зіткнутися ці рішення. Наприклад, самокерований автомобіль повинен ставити безпеку людей на перше місце. Відповідно, AI, який керує автомобілем, має враховувати всі можливі сценарії, з якими автомобіль може зіткнутися, такі як ніч, грози чи хуртовини, діти, які перебігають дорогу, домашні тварини, дорожні роботи тощо. Наскільки добре система AI може надійно та безпечно обробляти широкий спектр умов, відображає рівень передбачення, який врахував розробник даних або AI під час проектування чи тестування системи.
Для здобуття довіри системи ШІ повинні бути надійними, безпечними та послідовними в нормальних і непередбачуваних умовах. Важливо знати, як системи ШІ поводитимуться у різних ситуаціях, особливо коли це вийняткові випадки. При створенні рішень ШІ потрібно приділяти значну увагу опрацюванню різних обставин, із якими система може зіштовхнутися. Наприклад, автомобіль з автопілотом повинен ставити безпеку людей на перше місце. Тому ШІ, що керує автомобілем, повинен враховувати всі можливі сценарії, з якими він може зіткнутися, такі як ніч, грози чи заметілі, діти, що раптово вибігають на дорогу, домашні тварини, дорожні роботи тощо. Наскільки добре система ШІ може ефективно і безпечно працювати в таких різних умовах, відображає рівень передбачення, який враховував дата-сайєнтист чи розробник ШІ при проєктуванні та тестуванні системи.
> [🎥 Натисніть тут для відео: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Інклюзивність
Системи AI повинні бути розроблені для залучення та надання можливостей усім. Під час розробки та впровадження систем AI науковці з даних і розробники AI визначають і усувають потенційні бар’єри в системі, які можуть ненавмисно виключати людей. Наприклад, у світі є 1 мільярд людей із інвалідністю. Завдяки розвитку AI вони можуть легше отримувати доступ до широкого спектру інформації та можливостей у своєму повсякденному житті. Усунення бар’єрів створює можливості для інновацій і розробки продуктів AI із кращим досвідом, які приносять користь усім.
Системи ШІ повинні бути спроектовані так, щоб залучати та надавати повноваження кожному. Під час розробки та впровадження систем дані науковці та розробники ШІ ідентифікують і усувають потенційні бар’єри в системі, які могли б ненавмисно виключати людей. Наприклад, у світі приблизно 1 мільярд людей з інвалідністю. Завдяки розвитку ШІ вони можуть легше отримувати широкий доступ до інформації та можливостей у своєму повсякденному житті. Усунення бар’єрів створює можливості для інновацій та розробки продуктів ШІ з кращим досвідом, що вигідний для всіх.
> [🎥 Натисніть тут для відео: інклюзивність у AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
> [🎥 Натисніть тут для відео: інклюзивність у ШІ](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Безпека та конфіденційність
### Безпека та приватність
Системи AI повинні бути безпечними та поважати конфіденційність людей. Люди менше довіряють системам, які ставлять під загрозу їхню конфіденційність, інформацію чи життя. Під час навчання моделей машинного навчання ми покладаємося на дані для отримання найкращих результатів. При цьому необхідно враховувати походження даних і їхню цілісність. Наприклад, чи були дані надані користувачем чи доступні публічно? Далі, працюючи з даними, важливо розробляти системи AI, які можуть захищати конфіденційну інформацію та протистояти атакам. Оскільки AI стає більш поширеним, захист конфіденційності та забезпечення безпеки важливої особистої та бізнес-інформації стає дедалі критичнішим і складнішим. Питання конфіденційності та безпеки даних потребують особливої уваги для AI, оскільки доступ до даних є важливим для того, щоб системи AI могли робити точні та обґрунтовані прогнози та рішення про людей.
Системи ШІ повинні бути безпечними та поважати приватність людей. Люди менше довіряють системам, які ставлять під загрозу їхню приватність, інформацію чи життя. При навчанні моделей машинного навчання ми покладаємося на дані для отримання найкращих результатів. Тому важливо враховувати походження та цілісність даних. Наприклад, чи були дані надані користувачами або доступні публічно? Далі, під час роботи з даними, необхідно розробляти системи ШІ, які можуть захищати конфіденційну інформацію та протистояти атакам. З поширенням ШІ захист приватності і безпека важливої особистої та комерційної інформації стають дедалі більш критичними і складними. Питання приватності і безпеки даних потребують особливої уваги для ШІ, оскільки доступ до даних є необхідним для систем ШІ, щоб робити точні та обґрунтовані прогнози і прийняття рішень щодо людей.
> [🎥 Натисніть тут для відео: безпека в AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Натисніть тут для перегляду відео: безпека в ШІ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Як галузь ми досягли значного прогресу в питаннях конфіденційності та безпеки, значною мірою завдяки регулюванням, таким як GDPR (Загальний регламент захисту даних).
- Однак із системами AI ми повинні визнати напруженість між потребою в більшій кількості персональних даних для підвищення ефективності систем і конфіденційністю.
- Як і з появою підключених комп’ютерів через Інтернет, ми також спостерігаємо значне зростання кількості проблем безпеки, пов’язаних із AI.
- Водночас ми бачимо, як AI використовується для покращення безпеки. Наприклад, більшість сучасних антивірусних сканерів працюють на основі AI-евристики.
- Ми повинні гарантувати, що наші процеси обробки даних гармонійно поєднуються з найновішими практиками конфіденційності та безпеки.
- Як галузь ми зробили значні кроки у сфері приватності та безпеки, багато в чому завдяки регуляціям, таким як GDPR (Загальний регламент захисту даних).
- Але в системах ШІ необхідно враховувати напругу між потребою у більшій кількості персональних даних для підвищення персоналізації та ефективності і приватністю.
- Подібно до народження підключених комп'ютерів з інтернетом, ми також спостерігаємо значне зростання кількості проблем з безпекою, що пов’язані із ШІ.
- Водночас ми бачимо, що ШІ використовується для покращення безпеки. Наприклад, більшість сучасних антивірусних сканерів працюють на основі евристики ШІ.
- Потрібно забезпечити, щоб наші процеси Data Science гармонійно поєднувалися з найсучаснішими практиками приватності та безпеки.
### Прозорість
Системи AI повинні бути зрозумілими. Важливою частиною прозорості є пояснення поведінки систем AI та їхніх компонентів. Покращення розуміння систем AI вимагає, щоб зацікавлені сторони розуміли, як і чому вони функціонують, щоб вони могли визначити потенційні проблеми продуктивності, проблеми безпеки та конфіденційності, упередження, практики виключення або ненавмисні наслідки. Ми також вважаємо, що ті, хто використовує системи AI, повинні бути чесними та відкритими щодо того, коли, чому та як вони вирішують їх впроваджувати, а також щодо обмежень систем, які вони використовують. Наприклад, якщо банк використовує систему AI для підтримки своїх рішень щодо споживчого кредитування, важливо перевірити результати та зрозуміти, які дані впливають на рекомендації системи. Уряди починають регулювати AI у різних галузях, тому науковці з даних і організації повинні пояснювати, чи відповідає система AI нормативним вимогам, особливо коли виникає небажаний результат.
### Прозорість
Системи ШІ повинні бути зрозумілими. Важливою складовою прозорості є пояснення поведінки систем ШІ та їх компонентів. Покращення розуміння систем ШІ потребує, щоб зацікавлені сторони усвідомлювали, як і чому вони працюють, щоб мати змогу виявляти потенційні проблеми з продуктивністю, питання безпеки та приватності, упередження, виключення чи небажані результати. Також ми вважаємо, що ті, хто використовує системи ШІ, повинні бути чесними і відкритими про те, коли, чому та як вони обирають їх застосовувати. А також про обмеження систем, які вони використовують. Наприклад, якщо банк використовує систему ШІ для підтримки рішень щодо споживчих кредитів, важливо перевірити результати та зрозуміти, які дані впливають на рекомендації системи. Уряди починають регулювати ШІ у різних галузях, тому дата-сайентісти та організації мають пояснювати, чи відповідає система ШІ нормативним вимогам, особливо коли виникає небажаний результат.
> [🎥 Натисніть тут для відео: прозорість у AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 Натисніть тут для відео: прозорість у ШІ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- Оскільки системи AI є дуже складними, важко зрозуміти, як вони працюють і інтерпретувати результати.
- Ця відсутність розуміння впливає на те, як ці системи управляються, впроваджуються та документуються.
- Ця відсутність розуміння, що важливіше, впливає на рішення, прийняті на основі результатів, які ці системи генерують.
- Через складність систем ШІ важко зрозуміти їх роботу і інтерпретувати результати.
- Такий брак розуміння впливає на управління, експлуатацію і документацію цих систем.
- Ще важливіше, що брак розуміння впливає на рішення, прийняті на основі результатів, які продукують ці системи.
### Відповідальність
Особи, які проєктують і впроваджують системи ШІ, повинні нести відповідальність за те, як працюють їхні системи. Потреба у відповідальності особливо важлива для чутливих технологій, таких як розпізнавання облич. Останнім часом зростає попит на технологію розпізнавання облич, особливо від правоохоронних органів, які бачать її потенціал у використанні для пошуку зниклих дітей. Проте ці технології потенційно можуть застосовуватися урядом для порушення фундаментальних свобод громадян, наприклад, через постійне спостереження за конкретними особами. Тому дата-сайентісти і організації повинні відповідально ставитися до того, як їхня система ШІ впливає на окремих людей чи суспільство.
Люди, які розробляють і впроваджують системи AI, повинні нести відповідальність за те, як їхні системи працюють. Потреба у відповідальності особливо важлива для технологій чутливого використання, таких як розпізнавання облич. Останнім часом зростає попит на технологію розпізнавання облич, особливо з боку правоохоронних організацій, які бачать потенціал цієї технології, наприклад, у пошуку зниклих дітей. Однак ці технології можуть бути використані урядом для того, щоб поставити під загрозу основні свободи громадян, наприклад, шляхом постійного спостереження за конкретними особами. Тому науковці з даних і організації повинні бути відповідальними за те, як їхня система AI впливає на окремих осіб або суспільство.
[![Відомий дослідник ШІ попереджає про масове спостереження за допомогою розпізнавання облич](../../../../translated_images/uk/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Підхід Microsoft до відповідального ШІ")
[![Попередження провідного дослідника AI про масове спостереження через розпізнавання облич](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Підхід Microsoft до відповідального AI")
> 🎥 Натисніть на зображення вище для відео: Попередження про масове спостереження за допомогою розпізнавання облич
> 🎥 Натисніть на зображення вище, щоб переглянути відео: Попередження про масове спостереження через розпізнавання облич
Зрештою, одне з найбільших питань для нашого покоління, як першого покоління, яке впроваджує AI у суспільство, полягає в тому, як гарантувати, що комп’ютери залишатимуться підзвітними людям, і як гарантувати, що люди, які розробляють комп’ютери, залишатимуться підзвітними всім іншим.
Зрештою, одне з найбільших питань для нашого покоління, як першого покоління, що впроваджує ШІ у суспільство, полягає в тому, як забезпечити, щоб комп’ютери залишалися підзвітними людям і як гарантувати, що ті, хто проєктує комп’ютери, залишаються відповідальними перед усіма.
## Оцінка впливу
Перед навчанням моделі машинного навчання важливо провести оцінку впливу, щоб зрозуміти мету системи AI; її передбачуване використання; де вона буде впроваджена; і хто буде взаємодіяти із системою. Це корисно для рецензентів або тестувальників, які оцінюють систему, щоб знати, які фактори слід враховувати під час визначення потенційних ризиків і очікуваних наслідків.
Перед навчанням моделі машинного навчання важливо провести оцінку впливу, щоб зрозуміти призначення системи ШІ; її очікуване використання; де вона буде застосовуватися; і хто буде взаємодіяти із системою. Це допомагає рецензентам або тестувальникам системи знати, які фактори слід враховувати при виявленні потенційних ризиків і очікуваних наслідків.
Наступні сфери є предметом уваги під час проведення оцінки впливу:
* **Негативний вплив на окремих осіб.** Необхідно враховувати будь-які обмеження чи вимоги, нерекомендоване використання або будь-які відомі обмеження, що можуть перешкоджати роботі системи, щоб забезпечити, що система не використовується таким чином, що може зашкодити людям.
* **Вимоги до даних.** Розуміння того, як і де система використовуватиме дані, дозволяє рецензентам вивчити всі вимоги до даних (наприклад, регулювання GDPR чи HIPAA). Крім того, слід оцінити, чи є джерело або обсяг даних достатніми для навчання.
* **Підсумок впливу.** Зібрати список потенційних шкод, які можуть виникнути при використанні системи. Протягом життєвого циклу машинного навчання перевірте, чи вирішуються або пом’якшуються виявлені проблеми.
* **Застосовні цілі** для кожного з шести основних принципів. Оцініть, чи досягаються цілі кожного з принципів і чи є прогалини.
## Налагодження з відповідальним ШІ
Подібно до налагодження програмного додатку, налагодження системи ШІ є необхідним процесом виявлення та усунення проблем у системі. Існує багато факторів, що можуть вплинути на те, що модель не працює як очікувалося або відповідально. Більшість традиційних метрик продуктивності моделі є кількісними агрегатами, які недостатні для аналізу того, як модель порушує принципи відповідального ШІ. Крім того, модель машинного навчання є «чорною скринькою», що ускладнює розуміння причин її результатів або пояснення помилок. Пізніше в цьому курсі ми навчимося використовувати панель інструментів Responsible AI для допомоги у налагодженні систем ШІ. Ця панель надає цілісний інструмент для дата-сайентістів та розробників ШІ для виконання:
* **Аналізу помилок.** Для виявлення розподілу помилок моделі, що можуть впливати на справедливість або надійність системи.
* **Огляду моделі.** Щоб виявити, де існують розбіжності у продуктивності моделі між різними когортами даних.
* **Аналізу даних.** Щоб зрозуміти розподіл даних і виявити потенційну упередженість, що може призвести до проблем зі справедливістю, інклюзивністю та надійністю.
* **Інтерпретованості моделі.** Щоб зрозуміти, що впливає чи визначає прогнози моделі. Це допомагає пояснити поведінку моделі, що важливо для прозорості та відповідальності.
## 🚀 Виклик
Щоб запобігти запровадженню шкоди спочатку, ми повинні:
- мати різноманітність фонів і поглядів серед людей, що працюють над системами
- інвестувати у набори даних, які відображають різноманіття нашого суспільства
- розробляти кращі методи протягом життєвого циклу машинного навчання для виявлення та виправлення відповідального ШІ, коли він виникає
Наступні аспекти є ключовими під час проведення оцінки впливу:
Подумайте про реальні сценарії, коли недовіра до моделі є очевидною в процесі створення та використання моделі. Що ще слід врахувати?
* **Негативний вплив на окремих осіб**. Усвідомлення будь-яких обмежень або вимог, невідповідного використання чи будь-яких відомих обмежень, які перешкоджають продуктивності системи, є важливим для забезпечення того, щоб система не використовувалася таким чином, який може завдати шкоди окремим особам.
* **Вимоги до даних**. Розуміння того, як і де система буде використовувати дані, дозволяє рецензентам досліджувати будь-які вимоги до даних, які потрібно враховувати (наприклад, регулювання даних GDPR або HIPPA). Крім того, перевірте, чи є джерело або кількість даних достатніми для навчання.
* **Резюме впливу**. Зберіть список потенційної шкоди, яка може виникнути внаслідок використання системи. Протягом життєвого циклу ML перевіряйте, чи вирішені або усунені виявлені проблеми.
* **Відповідні цілі** для кожного з шести основних принципів. Оцініть, чи досягнуті цілі кожного принципу та чи є якісь прогалини.
## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/)
## Відлагодження з відповідальним AI
## Підсумок і самостійне вивчення
Подібно до відлагодження програмного забезпечення, відлагодження системи AI є необхідним процесом виявлення та вирішення проблем у системі. Існує багато факторів, які можуть вплинути на те, що модель не працює так, як очікувалося або відповідально. Більшість традиційних метрик продуктивності моделі є кількісними агрегатами продуктивності моделі, які недостатні для аналізу того, як модель порушує принципи відповідального AI. Крім того, модель машинного навчання є "чорною скринькою", що ускладнює розуміння того, що впливає на її результати, або пояснення, коли вона робить
Дивіться цей воркшоп, щоб глибше зануритися в теми:
У цьому уроці ви ознайомилися з основами концепцій справедливості та несправедливості в машинному навчанні.
Перегляньте цей семінар, щоб поглибити знання з цих тем:
- У пошуках відповідального ШІ: Втілення принципів у практику від Бесміри Нуші, Мехрнуш Самекі та Аміта Шарми
- У прагненні до відповідального ШІ: впровадження принципів у практику від Бесміри Нуші, Мехрнуш Самекі та Аміта Шарми
[![Responsible AI Toolbox: Відкрита платформа для створення відповідального ШІ](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Відкрита платформа для створення відповідального ШІ")
[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
> 🎥 Натисніть на зображення вище, щоб переглянути відео: RAI Toolbox: Відкрита платформа для створення відповідального ШІ від Бесміри Нуші, Мехрнуш Самекі та Аміта Шарми
> 🎥 Натисніть на зображення вище, щоб переглянути відео: RAI Toolbox: An open-source framework for building responsible AI від Бесміри Нуші, Мехрнуш Самекі та Аміта Шарми
Також прочитайте:
Також читайте:
- Центр ресурсів Microsoft з відповідального ШІ: [Responsible AI Resources 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: Справедливість, підзвітність, прозорість та етика в ШІ - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Дослідницька група FATE від Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in 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)
Дізнайтеся про інструменти Azure Machine Learning для забезпечення справедливості:
Читайте про інструменти Azure Machine Learning для забезпечення справедливості:
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Завдання
[Дослідіть RAI Toolbox](assignment.md)
[Вивчіть RAI Toolbox](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). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,120 +1,121 @@
# Початок роботи з Python та Scikit-learn для регресійних моделей
![Резюме регресій у вигляді скетчноту](../../../../sketchnotes/ml-regression.png)
![Підсумок регресій у скетчноті](../../../../translated_images/uk/ml-regression.4e4f70e3b3ed446e.webp)
> Скетчнот від [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
## [Квіз перед лекцією](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 Notebook.
- Використовувати Scikit-learn, включаючи встановлення.
- Досліджувати лінійну регресію через практичну вправу.
- Використовувати Scikit-learn, у тому числі встановлення.
- Вивчати лінійну регресію на практичному прикладі.
## Встановлення та налаштування
[![ML для початківців - Налаштуйте свої інструменти для створення моделей машинного навчання](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML для початківців - Налаштуйте свої інструменти для створення моделей машинного навчання")
> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про налаштування комп'ютера для 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 Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), щоб полегшити налаштування для деяких користувачів.
Деякі завдання з використанням Python вимагають однієї версії програмного забезпечення, тоді як інші іншої. Тому корисно працювати у [віртуальному середовищі](https://docs.python.org/3/library/venv.html).
Однак деякі випадки використання Python вимагають однієї версії програмного забезпечення, тоді як інші іншої. Тому корисно працювати у [віртуальному середовищі](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, пройшовши цей набір [навчальних модулів](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [![Налаштування Python у Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Налаштування Python у Visual Studio Code")
> [![Налаштування Python з Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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, рекомендується використовувати віртуальне середовище. Зверніть увагу, якщо ви встановлюєте цю бібліотеку на Mac з процесором M1, на сторінці за посиланням вище є спеціальні інструкції.
3. **Встановіть Scikit-learn**, дотримуючись [інструкцій](https://scikit-learn.org/stable/install.html). Оскільки потрібно переконатися, що використовується Python 3, рекомендується використовувати віртуальне середовище. Зверніть увагу, що якщо ви встановлюєте цю бібліотеку на M1 Mac, на сторінці за посиланням є особливі інструкції.
4. **Встановіть Jupyter Notebook**. Вам потрібно [встановити пакет Jupyter](https://pypi.org/project/jupyter/).
1. **Встановіть Jupyter Notebook**. Вам потрібно буде [встановити пакет Jupyter](https://pypi.org/project/jupyter/).
## Ваше середовище для створення ML
## Ваше середовище для розробки ML
Ви будете використовувати **ноутбуки** для розробки коду на Python і створення моделей машинного навчання. Цей тип файлу є поширеним інструментом для науковців, які працюють з даними, і його можна ідентифікувати за суфіксом або розширенням `.ipynb`.
Ви будете використовувати **ноутбуки** для розробки коду на Python і створення моделей машинного навчання. Цей тип файлів є популярним інструментом для науковців-дослідників даних, їх можна впізнати за розширенням `.ipynb`.
Ноутбуки — це інтерактивне середовище, яке дозволяє розробнику як писати код, так і додавати нотатки та документацію навколо коду, що дуже корисно для експериментальних або дослідницьких проектів.
Ноутбуки являють собою інтерактивне середовище, яке дозволяє розробнику і кодувати, і додавати нотатки, писати документацію навколо коду — це дуже корисно для експериментальних або дослідницьких проектів.
[![ML для початківців - Налаштуйте Jupyter Notebook для створення регресійних моделей](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML для початківців - Налаштуйте Jupyter Notebook для створення регресійних моделей")
[![ML для початківців - Налаштуйте Jupyter Notebook для початку побудови регресійних моделей](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML для початківців - Налаштуйте Jupyter Notebook для початку побудови регресійних моделей")
> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про виконання цієї вправи.
> 🎥 Натисніть зображення вище, щоб переглянути коротке відео з цього вправи.
### Вправа - робота з ноутбуком
### Вправа робота з ноутбуком
У цій папці ви знайдете файл _notebook.ipynb_.
1. Відкрийте _notebook.ipynb_ у Visual Studio Code.
Jupyter сервер запуститься з Python 3+. Ви знайдете області ноутбука, які можна `запустити`, тобто блоки коду. Ви можете запустити блок коду, вибравши значок, який виглядає як кнопка відтворення.
Запуститься сервер Jupyter з Python 3+. Ви побачите частини ноутбука, які можна `запустити`, це блоки коду. Ви можете запустити блок коду, вибравши значок, що нагадує кнопку «play».
2. Виберіть значок `md` і додайте трохи markdown, а також наступний текст **# Ласкаво просимо до вашого ноутбука**.
1. Виберіть значок `md` і додайте трохи markdown із наступним текстом **# Welcome to your notebook**.
Далі додайте трохи коду на Python.
3. Введіть **print('hello notebook')** у блоці коду.
4. Виберіть стрілку, щоб запустити код.
1. Введіть **print('hello notebook')** у блоці коду.
1. Виберіть стрілку, щоб виконати код.
Ви повинні побачити надруковане повідомлення:
Ви маєте побачити надрукований рядок:
```output
hello notebook
```
![VS Code з відкритим ноутбуком](../../../../2-Regression/1-Tools/images/notebook.jpg)
![VS Code з відкритим ноутбуком](../../../../translated_images/uk/notebook.4a3ee31f396b8832.webp)
Ви можете чергувати свій код із коментарями, щоб самодокументувати ноутбук.
Ви можете переплітати свій код з коментарями для самодокументування ноутбука.
✅ Подумайте хвилину, наскільки відрізняється робоче середовище веб-розробника від середовища науковця, який працює з даними.
✅ Подумайте на хвилину, наскільки відрізняється робоче середовище веб-розробника від середовища дослідника даних.
## Початок роботи з Scikit-learn
## Запуск Scikit-learn
Тепер, коли Python налаштований у вашому локальному середовищі, і ви комфортно працюєте з Jupyter Notebook, давайте так само комфортно освоїмо Scikit-learn (вимовляється як `sci`, як у `science`). Scikit-learn надає [широкий API](https://scikit-learn.org/stable/modules/classes.html#api-ref), який допоможе вам виконувати завдання машинного навчання.
Тепер, коли Python налаштований у вашому локальному середовищі, і ви почуваєтеся комфортно з Jupyter Notebook, давайте так само освоїмо Scikit-learn (вимовляється `sci`, як у слові `science`). Scikit-learn надає [розгорнутий API](https://scikit-learn.org/stable/modules/classes.html#api-ref), який допомагає виконувати завдання ML.
Згідно з їх [вебсайтом](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 робить створення моделей та їх оцінку простим і зручним. Вона зосереджена на використанні числових даних і містить кілька готових наборів даних для використання як навчальні інструменти. Вона також включає попередньо створені моделі для студентів. Давайте дослідимо процес завантаження готових даних і використання вбудованого оцінювача для першої моделі машинного навчання з Scikit-learn на основі базових даних.
Scikit-learn робить побудову моделей і їх оцінку досить простою. Вона орієнтована насамперед на числові дані і містить кілька готових наборів даних для навчання. Також у ній є вбудовані моделі для студентів. Давайте спершу розглянемо процес завантаження попередньо упакованих даних і використання вбудованого оцінювача — першої ML-моделі у 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.
[![ML для початківців - Ваш перший проект лінійної регресії на Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML для початківців - Ваш перший проект лінійної регресії на Python")
> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про виконання цієї вправи.
[![ML для початківців — Ваш перший проект лінійної регресії на Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML для початківців — Ваш перший проект лінійної регресії на Python")
У файлі _notebook.ipynb_, пов'язаному з цим уроком, очистіть усі комірки, натиснувши значок "сміттєвий бак".
> 🎥 Натисніть зображення вище, щоб переглянути коротке відео з цієї вправи.
У цьому розділі ви будете працювати з невеликим набором даних про діабет, який вбудований у Scikit-learn для навчальних цілей. Уявіть, що ви хочете протестувати лікування для пацієнтів із діабетом. Моделі машинного навчання можуть допомогти вам визначити, які пацієнти краще реагуватимуть на лікування, виходячи з комбінацій змінних. Навіть дуже базова регресійна модель, коли її візуалізувати, може показати інформацію про змінні, які допоможуть вам організувати ваші теоретичні клінічні випробування.
У файлі _notebook.ipynb_, що пов’язаний із цим уроком, очистіть усі клітинки, натиснувши значок «сміттєве відро».
✅ Існує багато типів методів регресії, і який із них ви оберете, залежить від питання, на яке ви хочете отримати відповідь. Якщо ви хочете передбачити ймовірний зріст людини певного віку, вам слід використовувати лінійну регресію, оскільки ви шукаєте **числове значення**. Якщо вас цікавить визначення, чи слід вважати певну кухню веганською чи ні, ви шукаєте **категоріальне призначення**, тому вам слід використовувати логістичну регресію. Ви дізнаєтеся більше про логістичну регресію пізніше. Подумайте трохи про питання, які ви можете поставити даним, і який із цих методів буде більш доречним.
У цьому розділі ви працюватимете з невеликим набором даних про діабет, який вбудований у Scikit-learn для навчальних цілей. Уявіть, що ви хочете перевірити лікування для пацієнтів з діабетом. Моделі машинного навчання можуть допомогти визначити, які пацієнти кращі кандидати для цього лікування, на основі комбінацій змінних. Навіть дуже базова регресійна модель, коли її візуалізувати, може показати інформацію про змінні, яка допоможе організувати ваші теоретичні клінічні випробування.
Давайте розпочнемо виконання цього завдання.
✅ Існує багато видів методів регресії, і який з них ви оберете, залежить від того, яке питання шукаєте. Якщо ви хочете передбачити ймовірний зріст людини певного віку, використовуйте лінійну регресію, тому що шукаєте **числове значення**. Якщо вам цікаво визначити, чи тип кухні слід вважати веганським чи ні, то вам потрібне **категорійне призначення**, тому використовуйте логістичну регресію. Ви дізнаєтесь більше про логістичну регресію пізніше. Подумайте, які запитання ви можете поставити до даних і які з методів будуть доцільнішими.
Давайте почнемо це завдання.
### Імпорт бібліотек
Для цього завдання ми імпортуємо деякі бібліотеки:
Для цього завдання імпортуємо такі бібліотеки:
- **matplotlib**. Це корисний [інструмент для побудови графіків](https://matplotlib.org/), і ми будемо використовувати його для створення лінійного графіка.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) — це корисна бібліотека для роботи з числовими даними в Python.
- **sklearn**. Це [бібліотека Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
- **matplotlib**. Це корисний [інструмент для графіків](https://matplotlib.org/), ми використаємо його для створення лінійного графіка.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) — корисна бібліотека для роботи з числовими даними в Python.
- **sklearn**. Це бібліотека [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
Імпортуйте деякі бібліотеки для виконання завдань.
Імпортуйте потрібні бібліотеки для ваших завдань.
1. Додайте імпорти, ввівши наступний код:
1. Додайте імпорти, набравши наступний код:
```python
import matplotlib.pyplot as plt
@ -122,26 +123,26 @@ 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: вік у роках
- bmi: індекс маси тіла
- bp: середній артеріальний тиск
- s1 tc: Т-клітини (тип білих кров'яних клітин)
- bp: середній кров’яний тиск
- s1 tc: Т-клітини (тип білих кровяних клітин)
✅ Цей набір даних включає концепцію "статі" як змінної, важливої для досліджень діабету. Багато медичних наборів даних включають цей тип бінарної класифікації. Подумайте трохи про те, як такі категоризації можуть виключати певні частини населення з лікування.
✅ Цей набір даних включає поняття 'стать' як важливу змінну-признак у дослідженнях діабету. Багато медичних наборів даних мають такого роду бінарну класифікацію. Подумайте, як такі категорії можуть виключати певні частини населення з лікувальних процедур.
Тепер завантажте дані X та y.
> 🎓 Пам'ятайте, це навчання з учителем, і нам потрібна цільова змінна 'y'.
> 🎓 Пам’ятайте, що це навчання з учителем, і нам потрібна цільова змінна з ім'ям 'y'.
У новій комірці коду завантажте набір даних про діабет, викликавши `load_diabetes()`. Вхідний параметр `return_X_y=True` сигналізує, що `X` буде матрицею даних, а `y` буде цільовою змінною регресії.
У новій клітинці коду завантажте набір даних про діабет, викликавши `load_diabetes()`. Параметр `return_X_y=True` означає, що `X` буде матрицею даних, а `y` цільовою змінною регресії.
1. Додайте кілька команд print, щоб показати форму матриці даних та її перший елемент:
1. Додайте команди print, щоб показати форму матриці даних і її перший елемент:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@ -149,9 +150,9 @@ Scikit-learn робить створення моделей та їх оцінк
print(X[0])
```
Те, що ви отримуєте у відповідь, — це кортеж. Ви призначаєте два перші значення кортежу відповідно до `X` та `y`. Дізнайтеся більше [про кортежі](https://wikipedia.org/wiki/Tuple).
Що ви отримуєте у відповідь — це кортеж. Ви присвоюєте перші два значення кортежу змінним `X` і `y` відповідно. Дізнайтеся більше [про кортежі](https://wikipedia.org/wiki/Tuple).
Ви можете побачити, що ці дані мають 442 елементи, організовані у масиви з 10 елементів:
Ви бачите, що дані містять 442 елементи, організовані в масиви по 10 елементів:
```text
(442, 10)
@ -159,39 +160,39 @@ Scikit-learn робить створення моделей та їх оцінк
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
✅ Подумайте трохи про взаємозв'язок між даними та цільовою змінною регресії. Лінійна регресія прогнозує взаємозв'язки між змінною 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. Далі виберіть частину цього набору даних для побудови графіка, вибравши 3-й стовпець набору даних. Ви можете зробити це, використовуючи оператор `:`, щоб вибрати всі рядки, а потім вибрати 3-й стовпець за допомогою індексу (2). Ви також можете змінити форму даних на 2D-масив — як це потрібно для побудови графіка — використовуючи `reshape(n_rows, n_columns)`. Якщо один із параметрів дорівнює -1, відповідний розмір обчислюється автоматично.
2. Наступним кроком оберіть частину цього набору даних для побудови графіка, вибравши 3-й стовпець набору даних. Це можна зробити за допомогою оператора `:`, щоб вибрати всі рядки, а потім вибрати 3-й стовпець за індексом (2). Ви також можете змінити форму даних на 2D-масив — що потрібно для побудови графіків — за допомогою `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. Тепер ви готові навчити модель! Завантажте модель лінійної регресії та навчіть її на тренувальних наборах даних X і y, використовуючи `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
`model.fit()` — це функція, яку ви побачите в багатьох бібліотеках ML, таких як TensorFlow.
`model.fit()` — це функція, яку ви побачите у багатьох бібліотеках ML на кшталт TensorFlow
5. Потім створіть прогноз, використовуючи тестові дані, за допомогою функції `predict()`. Це буде використано для побудови лінії між групами даних.
5. Потім створіть передбачення, використовуючи тестові дані, через функцію `predict()`. Це буде використано для побудови лінії між групами даних.
```python
y_pred = model.predict(X_test)
```
6. Тепер настав час показати дані на графіку. Matplotlib — дуже корисний інструмент для цього завдання. Створіть діаграму розсіювання для всіх тестових даних X та y, і використовуйте прогноз для побудови лінії в найбільш відповідному місці між групами даних моделі.
6. Тепер настав час показати дані на графіку. Matplotlib — дуже корисний інструмент для цього. Створіть розсіяний графік усіх тестових даних X і y, і використайте передбачення, щоб намалювати лінію в найбільш відповідному місці між групами даних моделі.
```python
plt.scatter(X_test, y_test, color='black')
@ -202,22 +203,24 @@ Scikit-learn робить створення моделей та їх оцінк
plt.show()
```
![діаграма розсіювання, що показує точки даних про діабет](../../../../2-Regression/1-Tools/images/scatterplot.png)
✅ Подумайте трохи над тим, що тут відбувається. Пряма лінія проходить через багато маленьких точок даних, але що саме вона робить? Чи можете ви побачити, як ця лінія може допомогти передбачити, де нова, невидима точка даних повинна розташуватися відносно осі y графіка? Спробуйте сформулювати практичне застосування цієї моделі.
![розсіяний графік, що показує точки даних про діабет](../../../../translated_images/uk/scatterplot.ad8b356bcbb33be6.webp)
✅ Трохи подумайте про те, що тут відбувається. Пряма лінія проходить через багато маленьких точок даних, але що саме вона робить? Чи бачите ви, як можна використовувати цю лінію, щоб передбачити, де має розташовуватися нова, невідома точка даних відносно осі y графіка? Спробуйте висловити словами практичне застосування цієї моделі.
Вітаємо, ви створили свою першу модель лінійної регресії, зробили прогноз за її допомогою та відобразили його на графіку!
Вітаємо, ви побудували свою першу модель лінійної регресії, створили з її допомогою прогноз і відобразили це на графіку!
---
## 🚀Завдання
## 🚀Виклик
Побудуйте графік для іншої змінної з цього набору даних. Підказка: змініть цей рядок: `X = X[:,2]`. Враховуючи ціль цього набору даних, що ви можете дізнатися про прогресування діабету як хвороби?
## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/)
Відобразіть іншу змінну з цього набору даних. Підказка: відредагуйте цей рядок: `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).
У цьому підручнику ви працювали з простою лінійною регресією, а не з уніваріантною чи множинною лінійною регресією. Прочитайте трохи про відмінності між цими методами або перегляньте [це відео](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), щоб поглибити свої знання.
## Завдання
@ -225,5 +228,7 @@ Scikit-learn робить створення моделей та їх оцінк
---
**Відмова від відповідальності**:
Цей документ було перекладено за допомогою сервісу автоматичного перекладу [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). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,62 +1,62 @@
# Побудова регресійної моделі за допомогою Scikit-learn: підготовка та візуалізація даних
![Інфографіка візуалізації даних](../../../../2-Regression/2-Data/images/data-visualization.png)
![Інфографіка візуалізації даних](../../../../translated_images/uk/data-visualization.54e56dded7c1a804.webp)
Інфографіка від [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
## [Попередній квіз до лекції](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, ви готові почати ставити запитання до своїх даних. Працюючи з даними та застосовуючи рішення ML, дуже важливо вміти правильно формулювати запитання, щоб максимально розкрити потенціал вашого набору даних.
Тепер, коли у вас є інструменти, необхідні для початку побудови моделей машинного навчання за допомогою Scikit-learn, ви готові почати ставити запитання до своїх даних. Працюючи з даними та застосовуючи рішення ML, дуже важливо розуміти, як поставити правильне запитання, щоб належним чином розкрити потенціал вашого набору даних.
У цьому уроці ви дізнаєтесь:
- Як підготувати дані для створення моделі.
- Як підготувати дані до побудови моделі.
- Як використовувати Matplotlib для візуалізації даних.
- Як використовувати Seaborn для більш виразної візуалізації даних.
## Як правильно ставити запитання до даних
## Поставити правильне запитання до даних
Запитання, на яке ви хочете отримати відповідь, визначить, який тип алгоритмів ML ви будете використовувати. А якість отриманої відповіді значною мірою залежатиме від характеру ваших даних.
Запитання, на яке ви хочете отримати відповідь, визначить, які типи алгоритмів машинного навчання ви будете використовувати. А якість отриманої відповіді значною мірою залежить від природи ваших даних.
Ознайомтеся з [даними](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', де дані є сумішшю 'сумок', 'ящиків' та інших значень. Дані, певно, трохи заплутані.
[![ML для початківців - Як аналізувати та очищати набір даних](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML для початківців - Як аналізувати та очищати набір даних")
[![ML для початківців - Як аналізувати і чистити набір даних](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML для початківців - Як аналізувати і чистити набір даних")
> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про підготовку даних для цього уроку.
> 🎥 Натисніть на зображення вище для короткого відео про підготовку даних для цього уроку.
Насправді, рідко трапляється, щоб набір даних був повністю готовий для створення моделі ML "з коробки". У цьому уроці ви дізнаєтесь, як підготувати сирий набір даних за допомогою стандартних бібліотек Python. Ви також ознайомитеся з різними техніками візуалізації даних.
Насправді не дуже часто вам дають набір даних, який повністю готовий для побудови моделі ML прямо з коробки. У цьому уроці ви навчитеся готувати необроблений набір даних за допомогою стандартних бібліотек Python. Ви також дізнаєтесь різні техніки для візуалізації даних.
## Кейс: "ринок гарбузів"
## Кейс: «ринок гарбузів»
У цій папці ви знайдете файл .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), які розповсюджуються Міністерством сільського господарства США.
У цій папці ви знайдете файл .csv у кореневій папці `data` під назвою [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), який містить 1757 рядків даних про ринок гарбузів, згрупованих за містами. Це необроблені дані, отримані з [Standard Reports Specialty Crops Terminal Markets](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`).
1. Перетворіть дати у формат місяця (це дати США, формат `MM/DD/YYYY`).
2. Витягніть місяць у новий стовпець.
Відкрийте файл _notebook.ipynb_ у Visual Studio Code і імпортуйте таблицю в новий датафрейм Pandas.
Відкрийте файл _notebook.ipynb_ у Visual Studio Code і імпортуйте електронну таблицю у новий dataframe Pandas.
1. Використайте функцію `head()`, щоб переглянути перші п'ять рядків.
1. Використайте функцію `head()` для перегляду перших п’яти рядків.
```python
import pandas as pd
@ -64,30 +64,30 @@
pumpkins.head()
```
✅ Яку функцію ви б використали, щоб переглянути останні п'ять рядків?
✅ Яку функцію використати для перегляду останніх п’яти рядків?
1. Перевірте, чи є пропущені дані в поточному датафреймі:
1. Перевірте, чи є відсутні дані у поточному dataframe:
```python
pumpkins.isnull().sum()
```
Є пропущені дані, але, можливо, це не матиме значення для виконання завдання.
Є відсутні дані, але можливо це не має значення для поточного завдання.
1. Щоб зробити ваш датафрейм зручнішим для роботи, виберіть лише потрібні стовпці, використовуючи функцію `loc`, яка витягує з оригінального датафрейму групу рядків (передається як перший параметр) і стовпців (передається як другий параметр). Вираз `:` у наведеному нижче прикладі означає "усі рядки".
1. Щоб працювати з dataframe було легше, виберіть лише потрібні стовпці за допомогою функції `loc`, яка вилучає з оригінального dataframe групу рядків (переданих першим параметром) і стовпців (переданих другим параметром). Вираз `:` в даному випадку означає «усі рядки».
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
### Далі визначте середню ціну гарбуза
### По-друге, визначте середню ціну гарбуза
Подумайте, як визначити середню ціну гарбуза в певному місяці. Які стовпці ви б обрали для цього завдання? Підказка: вам знадобляться 3 стовпці.
Подумайте, як визначити середню ціну гарбуза за певний місяць. Які стовпці вибрати для цього завдання? Підказка: вам потрібні 3 стовпці.
Рішення: візьміть середнє значення стовпців `Low Price` і `High Price`, щоб заповнити новий стовпець Price, і перетворіть стовпець Date так, щоб він показував лише місяць. На щастя, згідно з перевіркою вище, немає пропущених даних для дат або цін.
Розв’язок: візьміть середнє арифметичне від `Low Price` та `High Price`, щоб заповнити новий стовпець Price, а стовпець Date конвертуйте, щоб показувати лише місяць. На щастя, як показала перевірка, відсутніх даних за датами чи цінами немає.
1. Щоб обчислити середнє значення, додайте наступний код:
1. Для обчислення середнього додайте такий код:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@ -96,23 +96,23 @@
```
Ви можете вивести будь-які дані для перевірки, використовуючи `print(month)`.
За бажанням, можна вывести будь-які дані через `print(month)`.
2. Тепер скопіюйте ваші перетворені дані в новий датафрейм Pandas:
2. Тепер скопіюйте конвертовані дані у новий Pandas dataframe:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
Виведення вашого датафрейму покаже вам чистий, впорядкований набір даних, на основі якого ви зможете створити нову регресійну модель.
Вивід вашого 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` "на дюйм", "на ящик" або 'кожен'. Гарбузи здаються дуже складними для послідовного зважування, тож давайте відфільтруємо їх, вибравши лише ті, у яких в стовпці `Package` є рядок 'bushel'.
1. Додайте фільтр на початку файлу, під початковим імпортом .csv:
@ -120,13 +120,13 @@
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
Якщо ви виведете дані зараз, ви побачите, що отримуєте лише близько 415 рядків даних, які містять гарбузи за бушель.
Якщо ви зараз виведете дані, побачите приблизно 415 рядків лише з гарбузами, проданими у бушелях.
### Але зачекайте! Є ще одна річ, яку потрібно зробити
### Але почекайте! Є ще одна справа
Чи помітили ви, що кількість бушелів варіюється в кожному рядку? Вам потрібно нормалізувати ціни, щоб показати ціни за бушель, тому виконайте деякі обчислення для стандартизації.
Ви помітили, що кількість бушелів варіюється по рядках? Потрібно нормалізувати цінування, щоб показувати ціну за один бушель, тож зробіть відповідні розрахунки для стандартизації.
1. Додайте ці рядки після блоку, що створює датафрейм new_pumpkins:
1. Додайте такі рядки після блоку створення нового dataframe new_pumpkins:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@ -134,29 +134,29 @@
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
Згідно з [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 фунтів.» Це досить складно! Тож давайте не перейматимемось конвертацією бушель-фунт, а цінуватимемо за бушель. Вивчення бушелів гарбузів показує, наскільки важливо розуміти природу ваших даних!
Тепер ви можете аналізувати ціни за одиницю на основі їхнього вимірювання в бушелях. Якщо ви ще раз виведете дані, ви побачите, як вони стандартизовані.
Тепер ви можете аналізувати ціну за одиницю на основі їхнього значення у бушелях. Якщо вивести дані ще раз, побачите, як вони стандартизовані.
Чи помітили ви, що гарбузи, які продаються за півбушеля, дуже дорогі? Чи можете ви зрозуміти, чому? Підказка: маленькі гарбузи набагато дорожчі за великі, ймовірно, тому що їх набагато більше в одному бушелі, враховуючи невикористаний простір, який займає один великий порожнистий гарбуз для пирога.
Помітили, що гарбузи, що продаються по півбушеля, дуже дорогі? Чи можете зрозуміти чому? Підказка: маленькі гарбузи значно дорожчі за великі, ймовірно тому, що їх набагато більше на бушель, через невикористаний простір, зайнятий одним великим порожнистим гарбузом для пирога.
## Стратегії візуалізації
Частина роботи дата-сайєнтиста полягає в демонстрації якості та характеру даних, з якими він працює. Для цього часто створюють цікаві візуалізації, такі як графіки, діаграми та схеми, які показують різні аспекти даних. Таким чином, вони можуть візуально показати взаємозв'язки та прогалини, які інакше важко виявити.
Частина ролі дата-сайентіста полягає у демонстрації якості та природи даних, з якими вони працюють. Для цього вони часто створюють цікаві візуалізації — діаграми, графіки, графіки, що демонструють різні аспекти даних. Таким чином вони можуть візуально показати взаємозв’язки та прогалини, які іншим чином важко виявити.
[![ML для початківців - Як візуалізувати дані за допомогою Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML для початківців - Як візуалізувати дані за допомогою Matplotlib")
> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про візуалізацію даних для цього уроку.
> 🎥 Натисніть на зображення вище для короткого відео про візуалізацію даних для цього уроку.
Візуалізації також можуть допомогти визначити техніку машинного навчання, яка найбільше підходить для даних. Наприклад, діаграма розсіювання, яка здається лінійною, вказує на те, що дані є хорошим кандидатом для вправи з лінійної регресії.
Візуалізації також допомагають визначити найвдалішу техніку машинного навчання для даних. Наприклад, діаграма розсіювання, яка здається лінійною, вказує, що дані є хорошим кандидатом для лінійної регресії.
Одна з бібліотек для візуалізації даних, яка добре працює в Jupyter notebooks, — це [Matplotlib](https://matplotlib.org/) (яку ви також бачили в попередньому уроці).
Однією з бібліотек для візуалізації даних, яка добре працює у Jupyter notebooks, є [Matplotlib](https://matplotlib.org/) (яку ви також бачили в попередньому уроці).
> Отримайте більше досвіду з візуалізації даних у [цих навчальних посібниках](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
> Отримайте більше досвіду з візуалізації даних у [цих навчальних матеріалах](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Вправа - експериментуйте з Matplotlib
## Вправа експериментуйте з Matplotlib
Спробуйте створити базові графіки для відображення нового датафрейму, який ви щойно створили. Що покаже базовий лінійний графік?
Спробуйте створити прості графіки, щоб відобразити новий dataframe, який ви щойно створили. Що покаже базовий лінійний графік?
1. Імпортуйте Matplotlib на початку файлу, під імпортом Pandas:
@ -164,8 +164,8 @@
import matplotlib.pyplot as plt
```
1. Перезапустіть весь ноутбук, щоб оновити.
1. У нижній частині ноутбука додайте комірку для побудови графіка у вигляді коробки:
1. Запустіть знову весь notebook, щоб оновити.
1. Додайте у кінці notebook клітинку для побудови графіка типу box:
```python
price = new_pumpkins.Price
@ -174,38 +174,113 @@
plt.show()
```
![Діаграма розсіювання, що показує зв'язок між ціною та місяцем](../../../../2-Regression/2-Data/images/scatterplot.png)
![Діаграма розсіювання, що показує зв’язок ціни з місяцем](../../../../translated_images/uk/scatterplot.b6868f44cbd2051c.webp)
Чи є цей графік корисним? Чи щось у ньому вас здивувало?
Він не особливо корисний, оскільки лише відображає ваші дані як розкид точок у певному місяці.
Він не надто корисний, бо лише відображає ваші дані як розкидані точки у певному місяці.
### Зробіть це корисним
### Зробіть його корисним
Щоб графіки відображали корисні дані, зазвичай потрібно якось згрупувати дані. Спробуймо створити графік, де вісь y показує місяці, а дані демонструють розподіл.
Щоб графіки показували корисні дані, зазвичай потрібно згрупувати їх якимось чином. Спробуємо створити графік, де вісь y показує місяці, а дані демонструють розподіл.
1. Додайте комірку для створення згрупованої стовпчастої діаграми:
1. Додайте клітинку для створення групованої стовпчикової діаграми:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
![Стовпчаста діаграма, що показує зв'язок між ціною та місяцем](../../../../2-Regression/2-Data/images/barchart.png)
![Стовпчикова діаграма, що показує зв’язок ціни з місяцем](../../../../translated_images/uk/barchart.a833ea9194346d76.webp)
Це більш корисна візуалізація даних! Вона здається свідченням того, що найвища ціна на гарбузи припадає на вересень та жовтень. Чи відповідає це вашим очікуванням? Чому так або ні?
## Вправа експериментуйте з Seaborn
Matplotlib є потужним, але для створення відполірованих графіків може знадобитися багато коду. [Seaborn](https://seaborn.pydata.org/) — це бібліотека, побудована а основі_ Matplotlib, розроблена для статистичної візуалізації даних. Вона працює напряму з dataframe Pandas, застосовує привабливі стилі за замовчуванням і дозволяє створювати інформативні графіки з набагато меншим кодом. Оскільки Seaborn повертає об'єкти Matplotlib, ви все одно можете використовувати все, що вже знаєте про Matplotlib, для тонкого налаштування результату.
> Якщо у вас ще немає Seaborn, встановіть її за допомогою `pip install seaborn`.
1. Імпортуйте Seaborn на початку ноутбуку під іншими імпортами. Зазвичай її імпортують як `sns`:
```python
import seaborn as sns
```
### Діаграми розсіювання для показу взаємозв’язків
Велика частина дослідження даних перед побудовою моделі полягає у пошуку _взаємозвязків_ між змінними. [Діаграма розсіювання](https://en.wikipedia.org/wiki/Scatter_plot) — один із найкращих інструментів для цього: якщо точки здаються розташованими вздовж прямої, дві змінні можуть бути пов’язані, що є хорошим знаком, що лінійна регресія може працювати.
1. Відтворіть діаграму розсіювання ціна-протягом місяця, цього разу використавши Seaborn [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (реляційний графік), який безпосередньо працює зі стовпцями вашого dataframe:
```python
sns.relplot(x="Price", y="Month", data=new_pumpkins)
```
![Діаграма розсіювання Seaborn, що показує зв’язок ціни з місяцем](../../../../translated_images/uk/relplot.a03837d8f0329cec.webp)
Зверніть увагу, що ви передаєте _імена стовпців_ та dataframe, а Seaborn сам опрацьовує підписи осей.
2. Ви можете переключитись на лінійний графік, передавши `kind="line"`. Seaborn також малює затінений діапазон, що показує довірчий інтервал навколо лінії:
```python
sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
```
![Лінійний графік Seaborn, що показує зв’язок ціни з місяцем](../../../../translated_images/uk/lineplot.f9034ba47b1e30ee.webp)
Ці дані доволі шумні, тому лінійний графік тут не найчіткіший вибір — але він ілюструє, наскільки легко можна змінювати тип графіка в Seaborn.
### Стовпчикові діаграми для показу розподілів
Раніше ви вручну групували дані, щоб створити стовпчикову діаграму за допомогою Matplotlib. Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (категоріальний графік) може виконати групування та агрегацію за вас. За замовчуванням `kind="bar"` показує середнє значення кожної категорії разом з чорною лінією, що позначає інтервал довіри.
1. Створіть стовпчикову діаграму середньої ціни за місяць:
```python
sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
```
![Стовпчикова діаграма Seaborn, що показує розподіл цін за місяцями](../../../../translated_images/uk/catplot.e73fc35fdf96242b.webp)
Це підтверджує те, що ви бачили з Matplotlib — ціни досягають піку приблизно у вересні та жовтні — але Seaborn також візуалізує, наскільки аріюється_ ціна в кожному місяці.
### Теплові карти для показу кореляцій
Точкові діаграми порівнюють дві змінні одночасно. Коли у вас є декілька числових стовпців, [теплова карта](https://en.wikipedia.org/wiki/Heat_map) дозволяє побачити силу взаємозв’язку між ожною_ парою стовпців одночасно. Це поширений спосіб визначити, які ознаки найкорельованіші перед вибором того, що вводити в модель (такий же вид діаграми пізніше використовується для відображення матриць плутанини в класифікації).
1. Побудуйте матрицю кореляцій за допомогою Pandas, а потім намалюйте її за допомогою Seaborn's [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Опція `annot=True` виводить значення кореляції в кожній комірці:
```python
correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
sns.heatmap(correlations, annot=True, cmap="coolwarm")
```
![Теплова карта Seaborn, що показує кореляції між числовими стовпцями](../../../../translated_images/uk/heatmap.bd98dce43b404c57.webp)
Значення, близькі до `1` (або `-1`), означають, що стовпці сильно інійно_ корельовані. Зверніть увагу, як `Low Price` та `High Price` майже ідеально корельовані. `Month`, натомість, показує лише слабку лінійну кореляцію з ціною — хоча стовпчикова діаграма вище виявила чіткий сезонний пік у вересні та жовтні. Це важливий урок: коефіцієнт кореляції вимірює лише інійні_ залежності, тож він може пропускати сезонні або інші нелінійні закономірності. ✅ Чому корисно дивитись і на теплову карту, *і* на діаграми на кшталт стовпчикової перед тим, як вирішувати, які стовпці використовувати?
### Matplotlib чи Seaborn?
Обидві бібліотеки варто знати:
- **Matplotlib** надає тонкий контроль над кожним елементом графіка і є основою, на якій побудовано майже всі інші бібліотеки для побудови графіків у Python.
- **Seaborn** надає функції вищого рівня і привабливі налаштування за замовчуванням для статистичних графіків, працює безпосередньо з датафреймами і часто швидший для дослідницького аналізу даних.
Це більш корисна візуалізація даних! Здається, вона вказує на те, що найвища ціна на гарбузи припадає на вересень і жовтень. Чи відповідає це вашим очікуванням? Чому або чому ні?
Поширений робочий процес — спочатку звертатись до Seaborn, щоб швидко дослідити дані, а потім переходити до Matplotlib для налаштування деталей.
---
## 🚀Виклик
Дослідіть різні типи візуалізацій, які пропонує Matplotlib. Які типи найбільше підходять для задач регресії?
Дослідіть різні типи візуалізації, які пропонують Matplotlib і Seaborn. Які типи найбільше підходять для задач регресії?
## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/)
## [Післялекційний тест](https://ff-quizzes.netlify.app/en/ml/)
## Огляд і самостійне навчання
## Огляд і самоосвіта
Ознайомтеся з багатьма способами візуалізації даних. Складіть список різних бібліотек, доступних для цього, і зазначте, які з них найкраще підходять для певних типів завдань, наприклад, для 2D-візуалізацій проти 3D-візуалізацій. Що ви виявите?
Ознайомтеся з численними способами візуалізації даних. Складіть перелік різних бібліотек і відмітьте, які найкраще підходять для певних типів завдань, наприклад 2D візуалізації проти 3D-візуалізації. Що ви виявите?
## Завдання
@ -213,5 +288,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). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"## Лінійна регресія для гарбузів - Урок 2\n"
]
},
{
"cell_type": "code",
@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Візуалізація з Seaborn\n",
"\n",
"[Seaborn](https://seaborn.pydata.org/) побудований на основі Matplotlib і працює безпосередньо з dataframe, що дозволяє швидко створювати привабливі статистичні графіки з мінімумом коду.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Діаграми розсіювання для показу взаємозв’язків\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Стовпчикові діаграми для відображення розподілів\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
"source": [
"sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Відмова від відповідальності**: \nЦей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.\n"
"### Теплові карти для показу кореляцій\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
"sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\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"
]
}
],
@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
"orig_nbformat": 2,
"coopTranslator": {
"original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
"translation_date": "2025-09-04T07:11:46+00:00",
"source_file": "2-Regression/2-Data/solution/notebook.ipynb",
"language_code": "uk"
}
"orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2

@ -1,47 +1,47 @@
# Вступ до навчання з підкріпленням та Q-Learning
# Вступ до навчання з підкріпленням і Q-навчання
![Резюме навчання з підкріпленням у машинному навчанні у вигляді скетчноту](../../../../sketchnotes/ml-reinforcement.png)
> Скетчнот від [Tomomi Imura](https://www.twitter.com/girlie_mac)
![Підсумок підкріплення в машинному навчанні у вигляді скетчноуту](../../../../translated_images/uk/ml-reinforcement.94024374d63348db.webp)
> Скетчноут від [Tomomi Imura](https://www.twitter.com/girlie_mac)
Навчання з підкріпленням включає три важливі концепції: агент, деякі стани та набір дій для кожного стану. Виконуючи дію в заданому стані, агент отримує винагороду. Уявіть комп'ютерну гру Super Mario. Ви — Маріо, знаходитеся на рівні гри, стоїте поруч із краєм обриву. Над вами монета. Ви, як Маріо, на рівні гри, у певній позиції — це ваш стан. Переміщення на один крок вправо (дія) призведе до падіння з обриву, і це дасть вам низький числовий бал. Однак натискання кнопки стрибка дозволить вам отримати очко і залишитися живим. Це позитивний результат, і він повинен нагородити вас позитивним числовим балом.
Навчання з підкріпленням включає три важливі поняття: агент, деякі стани та набір дій для кожного стану. Виконуючи дію в певному стані, агент отримує винагороду. Знову уявіть комп’ютерну гру Super Mario. Ви — Маріо, ви знаходитеся на рівні гри, стоїте біля краю обриву. Над вами висить монета. Ви, як Маріо, на рівні гри, в конкретній позиції ... це і є ваш стан. Рух на один крок вправо (дія) призведе до падіння з обриву, що дасть вам низький числовий бал. Однак натискання кнопки стрибка дозволить вам набрати очко і залишитися в живих. Це позитивний результат, і він має дати позитивний числовий бал.
Використовуючи навчання з підкріпленням і симулятор (гру), ви можете навчитися грати в гру, щоб максимізувати винагороду, тобто залишатися живим і набирати якомога більше очок.
Використовуючи навчання з підкріпленням і симулятор (гру), ви можете навчитися грати так, щоб максимізувати винагороду — виживання і набір якомога більшої кількості очок.
[![Вступ до навчання з підкріпленням](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 Натисніть на зображення вище, щоб почути Дмитра, який розповідає про навчання з підкріпленням
> 🎥 Натисніть на зображення вище, щоб послухати Дмитра про навчання з підкріпленням
## [Квіз перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
## [Попередній тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
## Передумови та налаштування
## Вимоги та налаштування
У цьому уроці ми будемо експериментувати з кодом на Python. Ви повинні мати можливість виконувати код Jupyter Notebook з цього уроку, або на вашому комп'ютері, або десь у хмарі.
У цьому уроці ми експериментуватимемо з деяким кодом на Python. Ви повинні мати змогу запускати код Jupyter Notebook з цього уроку або на вашому комп’ютері, або десь у хмарі.
Ви можете відкрити [ноутбук уроку](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://uk.wikipedia.org/wiki/%D0%9F%D0%B5%D1%82%D1%80%D0%B8%D0%BA_%D1%82%D0%B0_%D0%B2%D0%BE%D0%B2%D0%BA)**, натхненний музичною казкою російського композитора [Сергія Прокоф’єва](https://uk.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B3%D1%96%D0%B9_%D0%9F%D1%80%D0%BE%D0%BA%D0%BE%D1%84%E2%80%99%D1%94%D0%B2). Ми використовуватимемо **Навчання з підкріпленням**, щоб дозволити Петрику досліджувати своє оточення, збирати смачні яблука й уникати зустрічі з вовком.
**Навчання з підкріпленням** (RL) — це техніка навчання, яка дозволяє нам навчитися оптимальній поведінці **агента** в певному **середовищі**, проводячи багато експериментів. Агент у цьому середовищі повинен мати **мету**, визначену **функцією винагороди**.
**Навчання з підкріпленням** (RL) — це метод навчання, який дозволяє нам навчатися оптимальній поведінці **агента** в певному **оточенні** шляхом проведення численних експериментів. Агент у цьому оточенні повинен мати якусь **мету**, визначену за допомогою **функції винагороди**.
## Середовище
## Оточення
Для простоти уявімо світ Петрика як квадратну дошку розміром `width` x `height`, як на цьому зображенні:
Для спрощення розглянемо світ Петрика як квадратну дошку розміром `width` x `height`, як от так:
![Середовище Петрика](../../../../8-Reinforcement/1-QLearning/images/environment.png)
![Оточення Петрика](../../../../translated_images/uk/environment.40ba3cb66256c93f.webp)
Кожна клітинка на цій дошці може бути:
Кожна клітинка цієї дошки може бути:
* **землею**, по якій Петрик та інші створіння можуть ходити.
* **водою**, по якій, очевидно, ходити не можна.
* **деревом** або **травою**, місцем, де можна відпочити.
* **яблуком**, яке Петрик буде радий знайти, щоб нагодувати себе.
* **вовком**, який небезпечний і якого слід уникати.
* **ґрунтом**, по якому можуть ходити Петрик та інші істоти.
* **водою**, по якій, звичайно, ходити не можна.
* **деревом** або **травою**, місцем для відпочинку.
* **яблуком**, яке символізує щось, що Петрик із задоволенням знайшов би, щоб поїсти.
* **вовком**, який є небезпечним і якого слід уникати.
Існує окремий модуль Python, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), який містить код для роботи з цим середовищем. Оскільки цей код не важливий для розуміння наших концепцій, ми імпортуємо модуль і використовуємо його для створення зразкової дошки (блок коду 1):
Є окремий модуль Python, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), який містить код для роботи з цим оточенням. Оскільки цей код не є важливим для розуміння наших концепцій, ми імпортуємо модуль і використаємо його для створення прикладної дошки (код блок 1):
```python
from rlboard import *
@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
Цей код повинен надрукувати зображення середовища, схоже на наведене вище.
Цей код має вивести зображення оточення, подібне до наведеного вище.
## Дії та політика
## Дії та стратегія
У нашому прикладі мета Петрика — знайти яблуко, уникаючи вовка та інших перешкод. Для цього він може просто ходити, поки не знайде яблуко.
У нашому прикладі метою Петрика буде знайти яблуко, уникаючи вовка та інших перешкод. Для цього він може ходити по світу, доки не знайде яблуко.
Таким чином, у будь-якій позиції він може вибрати одну з наступних дій: вгору, вниз, вліво і вправо.
Тому в будь-якій позиції він може вибрати одну з наступних дій: вгору, вниз, вліво або вправо.
Ми визначимо ці дії як словник і зіставимо їх із парами відповідних змін координат. Наприклад, рух вправо (`R`) буде відповідати парі `(1,0)`. (блок коду 2):
Ми визначимо ці дії у вигляді словника, зіставляючи їх із відповідними змінами координат. Наприклад, рух вправо (`R`) відповідатиме парі `(1,0)`. (код блок 2):
```python
actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) }
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 кроків.
Ви також можете побачити, як виглядає рух Петрика під час випадкової прогулянки:
Також ви можете побачити, як виглядає рух Петрика під час випадкового кроку:
![Випадкова прогулянка Петрика](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif)
![Випадковий крок Петрика](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif)
## Функція винагороди
Щоб зробити нашу політику більш розумною, нам потрібно зрозуміти, які кроки є "кращими" за інші. Для цього нам потрібно визначити нашу мету.
Щоб зробити нашу політику розумнішою, потрібно зрозуміти, які ходи "кращі" за інші. Для цього слід визначити нашу мету.
Мета може бути визначена у вигляді **функції винагороди**, яка повертає певне значення оцінки для кожного стану. Чим більше число, тим краща функція винагороди. (блок коду 5)
Мету можна визначити за допомогою **функції винагороди**, яка повертатиме значення балу для кожного стану. Чим більше число, тим краща функція винагороди. (код блок 5)
```python
move_reward = -0.1
@ -154,41 +154,115 @@ def reward(m,pos=None):
return move_reward
```
Цікаво, що у більшості випадків *ми отримуємо значну винагороду лише наприкінці гри*. Це означає, що наш алгоритм повинен якось запамятовувати "хороші" кроки, які призводять до позитивної винагороди в кінці, і збільшувати їх важливість. Аналогічно, всі кроки, які призводять до поганих результатів, слід знеохочувати.
Цікаво, що у більшості випадків *значуща винагорода з’являється лише в кінці гри*. Це означає, що наш алгоритм повинен якось запам'ятовувати "хороші" кроки, які призводять до позитивної винагороди в кінці, і збільшувати їх вагу. Аналогічно, усі ходи, що ведуть до поганих результатів, слід уникати.
## Q-Learning
## Q-навчання
Алгоритм, який ми тут обговоримо, називається **Q-Learning**. У цьому алгоритмі політика визначається функцією (або структурою даних), яка називається **Q-таблиця**. Вона записує "корисність" кожної дії в даному стані.
Алгоритм, який ми розглянемо, називається **Q-навчанням**. У цьому алгоритмі політика визначається функцією (або структурую даних), яка називається **Q-таблицею**. Вона фіксує "корисність" кожної дії в певному стані.
Вона називається Q-таблицею, тому що її часто зручно представляти у вигляді таблиці або багатовимірного масиву. Оскільки наша дошка має розміри `width` x `height`, ми можемо представити Q-таблицю за допомогою масиву numpy з формою `width` x `height` x `len(actions)`: (блок коду 6)
Його назвали Q-таблицею, бо зазвичай її зручно представляти у вигляді таблиці або багатовимірного масиву. Оскільки наша дошка має розмір `width` x `height`, ми можемо представити Q-таблицю як numpy масив форми `width` x `height` x `len(actions)`: (код блок 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
Зверніть увагу, що ми ініціалізуємо всі значення Q-таблиці однаковим значенням, у нашому випадку — 0.25. Це відповідає політиці "випадкової прогулянки", оскільки всі кроки в кожному стані однаково хороші. Ми можемо передати Q-таблицю до функції `plot`, щоб візуалізувати таблицю на дошці: `m.plot(Q)`.
Зауважте, що ми ініціалізуємо всі значення Q-таблиці однаковим значенняму нашому випадку 0.25. Це відповідає політиці "випадкового кроку", тому що всі ходи в кожному стані рівноцінні. Ми можемо передати Q-таблицю функції `plot`, щоб візуалізувати таблицю на дошці: `m.plot(Q)`.
![Середовище Петрика](../../../../8-Reinforcement/1-QLearning/images/env_init.png)
![Оточення Петрика](../../../../translated_images/uk/env_init.04e8f26d2d60089e.webp)
У центрі кожної клітинки є "стрілка", яка вказує на бажаний напрямок руху. Оскільки всі напрямки рівні, відображається точка.
У центрі кожної клітинки є "стрілка", яка вказує бажаний напрямок руху. Оскільки всі напрямки рівні, відображається крапка.
Тепер нам потрібно запустити симуляцію, дослідити наше середовище та навчитися кращому розподілу значень Q-таблиці, що дозволить нам набагато швидше знайти шлях до яблука.
Тепер нам потрібно запустити симуляцію, дослідити наше оточення і навчитися кращому розподілу значень Q-таблиці, що дозволить швидше знаходити шлях до яблука.
## Суть Q-Learning: рівняння Беллмана
## Суть Q-навчання: рівняння Беллмана
Як тільки ми починаємо рухатися, кожна дія матиме відповідну винагороду, тобто теоретично ми можемо вибрати наступну дію на основі найвищої миттєвої винагороди. Однак у більшості станів цей крок не досягне нашої мети — досягти яблука, і тому ми не можемо одразу вирішити, який напрямок кращий.
Щойно ми почнемо рух, кожна дія матиме відповідну винагороду, тобто ми теоретично можемо обирати наступну дію за максимальною негайною винагородою. Проте в більшості станів хід не приведе до нашої мети — досягнення яблука, і ми не можемо одразу визначити, який напрямок кращий.
> Пам’ятайте, що важливий не миттєвий результат, а кінцевий результат, який ми отримаємо наприкінці симуляції.
> Пам’ятайте, важливий не негайний результат, а фінальний, який ми отримаємо в кінці симуляції.
Щоб врахувати цю відкладену винагороду, нам потрібно використовувати принципи **[динамічного програмування](https://en.wikipedia.org/wiki/Dynamic_programming)**, які дозволяють мислити про нашу проблему рекурсивно.
Щоб врахувати цю відкладену винагороду, потрібно застосувати принципи **[динамічного програмування](https://uk.wikipedia.org/wiki/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D1%96%D1%87%D0%BD%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)**, які дозволяють рекурсивно мислити над задачею.
Припустимо, що зараз ми знаходимося в стані *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*:
<img src="../../../../translated_images/uk/bellman-equation.7c0c4c722e5a6b7c.webp"/>
Тут γ — так званий **коефіцієнт дисконтування**, який визначає, наскільки ви повинні віддавати перевагу поточній винагороді над майбутньою і навпаки.
## Алгоритм навчання
Враховуючи наведене рівняння, тепер можемо написати псевдокод для нашого алгоритму навчання:
* Ініціалізувати 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. Оновити загальну винагороду та зменшити α.
## Використання vs дослідження
У наведеному алгоритмі ми не вказали, як саме обирати дію на кроці 2.1. Якщо обирати дію випадково, ми будемо випадково **досліджувати** оточення, і, ймовірно, часто вмирати, а також досліджувати області, куди зазвичай не ходимо. Альтернативою є **використання** значень Q-таблиці, які ми вже знаємо, й обирати найкращу дію (з вищим значенням Q-таблиці) для стану *s*. Однак це завадить нам дослідити інші стани, і ми можемо не знайти оптимальне рішення.
Тож найкраще — знайти баланс між дослідженням і використанням. Це можна зробити, вибираючи дію в стані *s* з імовірностями, пропорційними значенням у Q-таблиці. На початку, коли значення Q-таблиці однакові, це відповідатиме випадковому вибору, але з набуттям досвіду ми частіше обиратимемо оптимальний маршрут, дозволяючи агенту іноді обирати ще не досліджений шлях.
## Реалізація на Python
Тепер ми готові реалізувати алгоритм навчання. Перед цим нам потрібна функція, яка перетворюватиме довільні числа у 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) # ми дозволяємо гравцю виходити за межі дошки, що припиняє епізод
r = reward(m)
cum_reward += r
if r==end_reward or cum_reward < -1000:
lpath.append(n)
break
alpha = np.exp(-n / 10e5)
gamma = 0.5
ai = action_idx[a]
Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
n+=1
```
Після виконання цього алгоритму Q-таблиця має оновитися значеннями, які визначають привабливість різних дій на кожному кроці. Ми можемо спробувати візуалізувати Q-таблицю, намалювавши вектор у кожній клітинці, який показуватиме бажаний напрямок руху. Для простоти замість стрілки малюємо маленьке коло.
<img src="../../../../translated_images/uk/learned.ed28bcd8484b5287.webp"/>
## Перевірка політики
Оскільки Q-Table містить "привабливість" кожної дії в кожному стані, її досить легко використовувати для визначення ефективної навігації у нашому світі. У найпростішому випадку ми можемо вибрати дію, що відповідає найвищому значенню в Q-Table: (блок коду 9)
Оскільки Q-таблиця містить "привабливість" кожної дії для кожного стану, за її допомогою досить легко визначити ефективну навігацію нашим світом. У найпростішому випадку ми можемо вибрати дію з максимальним значенням Q-таблиці: (код блок 9)
```python
def qpolicy_strict(m):
@ -200,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
> Якщо ви спробуєте код вище кілька разів, то можете помітити, що іноді він "зависає", і вам потрібно натиснути кнопку STOP у ноутбуці, щоб перервати виконання. Це відбувається через те, що можуть виникати ситуації, коли два стани "вказують" один на одного з точки зору оптимального Q-Value, у результаті чого агент безкінечно переміщується між цими станами.
> Якщо ви кілька разів спробуєте код вище, ви можете помітити, що іноді він "зависає", і вам потрібно натиснути кнопку СТОП у записнику, щоб перервати його. Це відбувається тому, що можуть бути ситуації, коли два стани "вказують" один на одного з точки зору оптимального Q-значення, у якому випадку агент зрештою рухається між цими станами безкінечно.
## 🚀Виклик
> **Завдання 1:** Змініть функцію `walk`, щоб обмежити максимальну довжину шляху певною кількістю кроків (наприклад, 100), і подивіться, як код вище час від часу повертає це значення.
> **Завдання 1:** Змініть функцію `walk`, щоб обмежити максимальну довжину шляху певною кількістю кроків (скажімо, 100), і спостерігайте, як код вище час від часу повертає це значення.
> **Завдання 2:** Змініть функцію `walk` так, щоб вона не поверталася до місць, де вже була раніше. Це запобігатиме зацикленню `walk`, однак агент все одно може опинитися "заблокованим" у місці, з якого не може вибратися.
> **Завдання 2:** Змініть функцію `walk` так, щоб вона не поверталась у ті місця, де вже була раніше. Це запобігатиме зацикленню `walk`, але агент все ще може опинитись "зачиненим" у локації, з якої не зможе вибратись.
## Навігація
Кращою політикою навігації буде та, яку ми використовували під час навчання, що поєднує експлуатацію та дослідження. У цій політиці ми будемо вибирати кожну дію з певною ймовірністю, пропорційною значенням у Q-Table. Ця стратегія все ще може призводити до того, що агент повертається до вже досліджених позицій, але, як видно з коду нижче, вона забезпечує дуже короткий середній шлях до бажаного місця (пам'ятайте, що `print_statistics` запускає симуляцію 100 разів): (блок коду 10)
Кращою навігаційною політикою буде та, яку ми використовували під час навчання, що поєднує експлуатацію і дослідження. У цій політиці ми вибиратимемо кожну дію з певною ймовірністю, пропорційною значенням у Q-таблиці. Ця стратегія все ще може призводити до того, що агент повертається у позицію, яку він вже дослідив, але, як ви бачите з коду нижче, це призводить до дуже короткого середнього шляху до бажаного місця (пам’ятайте, що `print_statistics` запускає симуляцію 100 разів): (код блоку 10)
```python
def qpolicy(m):
@ -226,24 +301,28 @@ print_statistics(qpolicy)
## Дослідження процесу навчання
Як ми вже згадували, процес навчання — це баланс між дослідженням і використанням отриманих знань про структуру простору задачі. Ми побачили, що результати навчання (здатність допомогти агенту знайти короткий шлях до мети) покращилися, але також цікаво спостерігати, як середня довжина шляху змінюється під час процесу навчання:
Як ми вже згадували, процес навчання — це баланс між дослідженням і використанням набутого знання про структуру простору задачі. Ми бачили, що результати навчання (здатність допомогти агенту знайти короткий шлях до мети) покращились, але також цікаво спостерігати, як поведінка середньої довжини шляху змінюється під час навчання:
<img src="../../../../translated_images/uk/lpathlen1.0534784add58d4eb.webp"/>
Висновки з навчання можна підсумувати так:
Навчання можна підсумувати так:
- **Середня довжина шляху збільшується**. На початку середня довжина шляху зростає. Це, ймовірно, пов'язано з тим, що коли ми нічого не знаємо про середовище, ми, швидше за все, потрапляємо в погані стани, наприклад, у воду або до вовка. Коли ми дізнаємося більше і починаємо використовувати ці знання, ми можемо довше досліджувати середовище, але все ще не дуже добре знаємо, де знаходяться яблука.
- **Середня довжина шляху зростає**. Ми бачимо, що спочатку середня довжина шляху зростає. Це, ймовірно, повязано з тим, що коли ми нічого не знаємо про середовище, ми, найімовірніше, потрапляємо у погані стани, воду або вовка. Коли ми вчимося більше і починаємо використовувати це знання, ми можемо довше досліджувати середовище, але все ще не дуже добре знаємо, де знаходяться яблука.
- **Довжина шляху зменшується, коли ми дізнаємося більше**. Як тільки ми дізнаємося достатньо, агенту стає легше досягати мети, і довжина шляху починає зменшуватися. Однак ми все ще відкриті до досліджень, тому часто відхиляємося від найкращого шляху і досліджуємо нові варіанти, що робить шлях довшим за оптимальний.
- **Довжина шляху зменшується, коли ми вчимося більше**. Як тільки ми вчимося достатньо, агенту стає легше досягти мети, і довжина шляху починає зменшуватись. Однак ми все ще відкриті для досліджень, тому часто відходимо від найкращого шляху й досліджуємо нові варіанти, що робить шлях довшим за оптимальний.
- **Довжина різко збільшується**. На графіку також видно, що в певний момент довжина різко збільшується. Це вказує на стохастичну природу процесу і на те, що ми можемо в якийсь момент "зіпсувати" коефіцієнти Q-Table, перезаписавши їх новими значеннями. Це ідеально слід мінімізувати, зменшуючи швидкість навчання (наприклад, ближче до кінця навчання ми лише трохи коригуємо значення Q-Table).
- **Раптове збільшення довжини**. Також на цьому графіку спостерігається раптове збільшення довжини. Це свідчить про стохастичний характер процесу і той факт, що ми в якийсь момент можемо "погіршити" коефіцієнти Q-таблиці, перезаписуючи їх новими значеннями. Це бажано мінімізувати, зменшуючи швидкість навчання (наприклад, до кінця навчання ми коригуємо значення Q-таблиці лише на невелике значення).
Загалом, важливо пам'ятати, що успіх і якість процесу навчання значною мірою залежать від параметрів, таких як швидкість навчання, зменшення швидкості навчання та коефіцієнт дисконтування. Їх часто називають **гіперпараметрами**, щоб відрізнити їх від **параметрів**, які ми оптимізуємо під час навчання (наприклад, коефіцієнти Q-Table). Процес пошуку найкращих значень гіперпараметрів називається **оптимізацією гіперпараметрів**, і це заслуговує окремої теми.
В цілому важливо пам’ятати, що успіх і якість процесу навчання значною мірою залежать від параметрів, таких як швидкість навчання, зменшення швидкості навчання та коефіцієнт дисконтування. Їх часто називають **гіперпараметрами**, щоб відрізнити від **параметрів**, які ми оптимізуємо під час навчання (наприклад, коефіцієнти 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). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,155 +1,179 @@
# Постскриптум: Налагодження моделей машинного навчання за допомогою компонентів панелі відповідального AI
## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
# Постскриптум: відладка моделей машинного навчання за допомогою компонентів інформаційної панелі Responsible AI
## [Попередній тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
## Вступ
Машинне навчання впливає на наше повсякденне життя. Штучний інтелект проникає в найважливіші системи, які впливають на нас як особистостей і на суспільство загалом — від охорони здоров’я, фінансів, освіти до працевлаштування. Наприклад, системи та моделі залучені до щоденних процесів прийняття рішень, таких як діагностика в медицині або виявлення шахрайства. У результаті, розвиток штучного інтелекту та його швидке впровадження супроводжуються зростаючими суспільними очікуваннями та регулюванням. Ми постійно бачимо випадки, коли системи штучного інтелекту не відповідають очікуванням, створюють нові виклики, а уряди починають регулювати AI-рішення. Тому важливо аналізувати ці моделі, щоб забезпечити справедливі, надійні, інклюзивні, прозорі та відповідальні результати для всіх.
Машинне навчання впливає на наше повсякденне життя. ШІ знаходить застосування в одних із найважливіших систем, що впливають на нас як на окремих людей, так і на суспільство в цілому, від охорони здоров’я, фінансів, освіти до працевлаштування. Наприклад, системи та моделі залучені до щоденних завдань прийняття рішень, таких як діагностика здоров’я або виявлення шахрайства. Відповідно, досягнення в галузі ШІ разом із прискореним впровадженням супроводжуються зміною суспільних очікувань і зростаючим регулюванням. Ми постійно бачимо сфери, де системи ШІ не відповідають очікуванням; вони викривають нові виклики; і уряди починають регулювати рішення ШІ. Тож важливо, щоб ці моделі аналізувалися задля забезпечення справедливих, надійних, інклюзивних, прозорих і відповідальних результатів для всіх.
У цьому курсі ми розглянемо практичні інструменти, які можна використовувати для оцінки наявності проблем відповідального AI у моделі. Традиційні методи налагодження машинного навчання зазвичай базуються на кількісних розрахунках, таких як загальна точність або середня втрата помилки. Уявіть, що може статися, якщо дані, які ви використовуєте для створення моделей, не містять певних демографічних груп, таких як раса, стать, політичні погляди, релігія, або непропорційно представляють ці групи. Або якщо результати моделі інтерпретуються так, що вони надають перевагу одній демографічній групі над іншою. Це може призвести до надмірного або недостатнього представлення чутливих груп ознак, що викликає проблеми справедливості, інклюзивності або надійності моделі. Ще один фактор — моделі машинного навчання часто вважаються "чорними ящиками", що ускладнює розуміння та пояснення того, що впливає на їхні прогнози. Усі ці виклики постають перед дата-сайєнтистами та розробниками AI, коли вони не мають достатніх інструментів для налагодження та оцінки справедливості чи надійності моделі.
У цьому навчальному курсі ми розглянемо практичні інструменти, які можна використовувати для оцінки моделі на предмет проблем відповідального ШІ. Традиційні методи відладки моделей машинного навчання зазвичай базуються на кількісних обчисленнях, таких як агрегована точність або середня втрата помилки. Уявіть, що може статися, коли дані, які ви використовуєте для побудови цих моделей, не враховують певні демографічні групи, такі як раса, стать, політичні погляди, релігія, або ж істотно представляють їх непропорційно. А що, якщо інтерпретація результатів моделі віддає перевагу одній демографічній групі? Це може призвести до надто високого або недостатнього представлення цих чутливих груп ознак, викликаючи проблеми зі справедливістю, інклюзивністю або надійністю моделі. Іншим фактором є те, що моделі машинного навчання вважаються «чорними скриньками», що ускладнює розуміння і пояснення причин прогнозу моделі. Усі ці виклики виникають у дата-сайєнтистів та розробників ШІ тоді, коли у них немає достатніх інструментів для відладки та оцінки справедливості або надійності моделі.
У цьому уроці ви дізнаєтеся, як налагоджувати свої моделі за допомогою:
У цьому уроці ви дізнаєтеся про відладку моделей за допомогою:
- **Аналізу помилок**: визначення областей у розподілі даних, де модель має високі показники помилок.
- **Огляд моделі**: порівняльний аналіз різних когорт даних для виявлення розбіжностей у метриках продуктивності моделі.
- **Аналізу даних**: дослідження областей, де може бути надмірне або недостатнє представлення даних, що може вплинути на упередженість моделі.
- **Важливості ознак**: розуміння, які ознаки впливають на прогнози моделі на глобальному або локальному рівні.
- **Аналізу помилок**: визначення ділянок у вашому розподілі даних, де модель має високий рівень помилок.
- **Огляду моделі**: виконання порівняльного аналізу між різними когортами даних для виявлення розбіжностей у показниках продуктивності моделі.
- **Аналізу даних**: дослідження можливого над- або недопредставлення у ваших даних, що може спотворювати модель на користь однієї демографічної групи порівняно з іншою.
- **Важливості ознак**: розуміння, які ознаки впливають на прогнозування моделі на глобальному або локальному рівні.
## Передумови
## Попередні знання
Як передумову, перегляньте [Інструменти відповідального AI для розробників](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
Перед початком рекомендовано ознайомитися з матеріалом [Інструменти відповідального ШІ для розробників](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
> ![Gif про інструменти відповідального AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif)
> ![Gif on Responsible AI Tools](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif)
## Аналіз помилок
Традиційні метрики продуктивності моделі, які використовуються для вимірювання точності, здебільшого базуються на розрахунках правильних і неправильних прогнозів. Наприклад, визначення того, що модель є точною на 89% із втратою помилки 0.001, може вважатися хорошим результатом. Однак помилки часто не розподіляються рівномірно в базовому наборі даних. Ви можете отримати оцінку точності моделі 89%, але виявити, що в різних областях даних модель помиляється 42% часу. Наслідки таких шаблонів помилок для певних груп даних можуть призвести до проблем справедливості або надійності. Важливо розуміти області, де модель працює добре або погано. Області даних, де є велика кількість неточностей моделі, можуть виявитися важливими демографічними даними.
Традиційні метрики продуктивності моделі для вимірювання точності, як правило, базуються на обчисленнях правильних і неправильних прогнозів. Наприклад, визнати модель такою, що має точність 89% із втратою помилки 0,001, можна за добре працюючу. Проте помилки часто не розподілені рівномірно у підлягаючому наборі даних. Ви можете мати оцінку точності моделі 89%, але виявити, що в окремих регіонах ваших даних модель помиляється 42% часу. Наслідки таких зразків помилок у певних групах даних можуть призводити до проблем із справедливістю або надійністю. Важливо зрозуміти області, де модель працює добре, або ні. Регіони даних із великою кількістю неточностей у вашій моделі можуть виявитися важливою демографічною групою.
![Аналіз і налагодження помилок моделі](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png)
![Analyze and debug model errors](../../../../translated_images/uk/ea-error-distribution.117452e1177c1dd8.webp)
Компонент "Аналіз помилок" на панелі RAI показує, як помилки моделі розподіляються серед різних когорт за допомогою візуалізації дерева. Це корисно для визначення ознак або областей, де є високий рівень помилок у вашому наборі даних. Побачивши, звідки походить більшість неточностей моделі, ви можете почати досліджувати причину. Ви також можете створювати когорти даних для аналізу. Ці когорти даних допомагають у процесі налагодження, щоб визначити, чому продуктивність моделі хороша в одній когорті, але помилкова в іншій.
Компонент Аналізу помилок на інформаційній панелі RAI відображає, як неуспішність моделі розподіляється між різними когортами за допомогою візуалізації у вигляді дерева. Це корисно для визначення ознак або ділянок із високим рівнем помилок у вашому наборі даних. Спостерігаючи, звідки надходить більшість неточностей моделі, ви можете почати досліджувати корінь проблеми. Ви також можете створювати когорти даних для виконання аналізу. Ці когорти допомагають у процесі відладки визначити, чому модель показує кращі результати у одній когорті, але робить помилки в іншій.
![Аналіз помилок](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png)
![Error Analysis](../../../../translated_images/uk/ea-error-cohort.6886209ea5d438c4.webp)
Візуальні індикатори на карті дерева допомагають швидше знаходити проблемні області. Наприклад, чим темніший червоний колір вузла дерева, тим вищий рівень помилок.
Візуальні індикатори на карті дерева допомагають швидше знайти проблемні ділянки. Наприклад, чим темніший відтінок червоного кольору у вузлі дерева, тим вищий рівень помилок.
Теплова карта — це ще одна функція візуалізації, яку користувачі можуть використовувати для дослідження рівня помилок за допомогою однієї або двох ознак, щоб знайти фактори, що сприяють помилкам моделі в усьому наборі даних або когорті.
Теплова карта — ще один інструмент візуалізації, який можуть використовувати користувачі для дослідження рівня помилок за однією чи двома ознаками, щоб знайти причину помилок моделі по всьому набору даних або когортам.
![Теплова карта аналізу помилок](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png)
![Error Analysis Heatmap](../../../../translated_images/uk/ea-heatmap.8d27185e28cee383.webp)
Використовуйте аналіз помилок, коли вам потрібно:
Використовуйте аналіз помилок, коли потрібно:
* Глибоко зрозуміти, як помилки моделі розподіляються в наборі даних і серед кількох вхідних і ознакових вимірів.
* Розбити агреговані метрики продуктивності, щоб автоматично виявити помилкові когорти для інформування про ваші цільові кроки з пом’якшення.
* Отримати глибоке розуміння того, як розподіляються помилки моделей у наборі даних та за різними вхідними й ознаковими вимірами.
* Розкласти агреговані показники продуктивності, щоб автоматично виявляти когортні помилки та визначати цільові кроки усунення.
## Огляд моделі
Оцінка продуктивності моделі машинного навчання вимагає отримання цілісного розуміння її поведінки. Це можна досягти, переглянувши більше ніж одну метрику, таку як рівень помилок, точність, відгук, точність або MAE (середня абсолютна помилка), щоб знайти розбіжності серед метрик продуктивності. Одна метрика продуктивності може виглядати чудово, але неточності можуть бути виявлені в іншій метриці. Крім того, порівняння метрик для розбіжностей у всьому наборі даних або когорті допомагає пролити світло на те, де модель працює добре або погано. Це особливо важливо для оцінки продуктивності моделі серед чутливих і нечутливих ознак (наприклад, раса пацієнта, стать або вік), щоб виявити потенційну несправедливість моделі. Наприклад, виявлення того, що модель є більш помилковою в когорті з чутливими ознаками, може виявити потенційну несправедливість моделі.
Оцінка продуктивності моделі машинного навчання потребує цілісного розуміння її поведінки. Це можна досягти, переглянувши більше ніж один показник, як-от рівень помилок, точність, відзив, точність класифікації чи MAE (середня абсолютна помилка), щоб виявити розбіжності у показниках продуктивності. Один показник може виглядати добре, але інший може виявити неточності. Крім того, порівняння показників по всьому набору даних або когортам допомагає зрозуміти, де модель показує хороші результати, а де ні. Особливо це важливо для оцінки продуктивності моделі серед чутливих і нечутливих ознак (наприклад, раса, стать чи вік пацієнта), щоб виявити потенційну несправедливість моделі. Наприклад, якщо модель є більш помилковою у когорті із чутливими ознаками, це може свідчити про несправедливість моделі.
Компонент "Огляд моделі" на панелі RAI допомагає не лише аналізувати метрики продуктивності представлення даних у когорті, але й дає користувачам можливість порівнювати поведінку моделі серед різних когорт.
Компонент Огляду моделі на інформаційній панелі RAI допомагає не лише аналізувати показники продуктивності для групи даних у когорті, а й дає користувачам можливість порівнювати поведінку моделі між різними когортами.
![Когорти набору даних — огляд моделі на панелі RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png)
![Dataset cohorts - model overview in RAI dashboard](../../../../translated_images/uk/model-overview-dataset-cohorts.dfa463fb527a35a0.webp)
Функціональність аналізу на основі ознак компонента дозволяє користувачам звужувати підгрупи даних у межах певної ознаки, щоб виявляти аномалії на детальному рівні. Наприклад, панель має вбудований інтелект для автоматичного створення когорт для ознаки, вибраної користувачем (наприклад, *"time_in_hospital < 3"* або *"time_in_hospital >= 7"*). Це дозволяє користувачеві ізолювати певну ознаку з більшої групи даних, щоб побачити, чи є вона ключовим фактором помилкових результатів моделі.
Функціонал аналізу за ознаками дозволяє користувачам звужувати підгрупи даних у межах конкретної ознаки для виявлення аномалій на детальному рівні. Наприклад, інформаційна панель має вбудований інтелект для автоматичного створення когорт за обраною користувачем ознакою (наприклад, *"time_in_hospital < 3"* або *"time_in_hospital >= 7"*). Це дозволяє користувачу виділити певну ознаку з більшої групи даних і зрозуміти, чи є вона ключовим фактором помилкових результатів моделі.
![Когорти ознак — огляд моделі на панелі RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png)
![Feature cohorts - model overview in RAI dashboard](../../../../translated_images/uk/model-overview-feature-cohorts.c5104d575ffd0c80.webp)
Компонент "Огляд моделі" підтримує два класи метрик розбіжностей:
Компонент Огляду моделі підтримує два класи метрик диспропорцій:
**Розбіжність у продуктивності моделі**: Ці набори метрик обчислюють розбіжність (різницю) у значеннях вибраної метрики продуктивності серед підгруп даних. Ось кілька прикладів:
**Різниця у продуктивності моделі**: цей набір метрик обчислює різницю (диспропорцію) у значеннях вибраного показника продуктивності між підгрупами даних. Ось кілька прикладів:
* Розбіжність у рівні точності
* Розбіжність у рівні помилок
* Розбіжність у точності
* Розбіжність у відгуку
* Розбіжність у середній абсолютній помилці (MAE)
* Різниця у рівні точності
* Різниця у рівні помилок
* Різниця у точності класифікації
* Різниця у відзиві
* Різниця у середній абсолютній помилці (MAE)
**Розбіжність у рівні вибору**: Ця метрика містить різницю в рівні вибору (сприятливий прогноз) серед підгруп. Наприклад, розбіжність у рівнях схвалення кредитів. Рівень вибору означає частку точок даних у кожному класі, класифікованих як 1 (у бінарній класифікації) або розподіл значень прогнозу (у регресії).
**Різниця в рівні вибору**: ця метрика містить різницю у рівні вибору (сприятливого прогнозу) серед підгруп. Прикладом є різниця у рівнях схвалення кредитів. Рівень вибору — це частка даних у кожному класі, які класифіковані як 1 (у бінарній класифікації) або розподіл прогнозованих значень (у регресії).
## Аналіз даних
> "Якщо достатньо довго катувати дані, вони зізнаються у всьому" — Рональд Коуз
> "Якщо довго мучити дані, вони зізнаються у чому завгодно" Рональд Коуз
Це твердження звучить радикально, але правда в тому, що дані можна маніпулювати для підтримки будь-якого висновку. Така маніпуляція іноді може відбуватися ненавмисно. Як люди, ми всі маємо упередження, і часто важко свідомо усвідомлювати, коли ви вводите упередження в дані. Гарантування справедливості в AI і машинному навчанні залишається складним завданням.
Це твердження звучить радикально, але воно правдиве: дані можна маніпулювати, щоб підтвердити будь-який висновок. Такі маніпуляції іноді відбуваються ненавмисно. Як люди, усі ми маємо упередження, і часто складно усвідомлено визначити, коли ви вводите упередження в дані. Забезпечення справедливості в ШІ та машинному навчанні залишається складним викликом.
Дані є великою "сліпою зоною" для традиційних метрик продуктивності моделі. Ви можете мати високі показники точності, але це не завжди відображає базове упередження даних, яке може бути у вашому наборі даних. Наприклад, якщо набір даних співробітників містить 27% жінок на керівних посадах у компанії та 73% чоловіків на тому ж рівні, модель AI для реклами вакансій, навчена на цих даних, може орієнтуватися переважно на чоловічу аудиторію для вакансій високого рівня. Ця диспропорція в даних вплинула на прогноз моделі, надаючи перевагу одній статі. Це виявляє проблему справедливості, де є гендерне упередження в моделі AI.
Дані є великою сліпою зоною для традиційних метрик продуктивності моделі. Ви можете мати високі показники точності, але це не завжди відображає приховану упередженість у вашому наборі даних. Наприклад, якщо у наборі даних працівників жінки складають 27% на керівних посадах у компанії, а чоловіки — 73% на тому ж рівні, модель AI, навчена на цих даних для рекламування вакансій, може переважно орієнтуватися на чоловічу аудиторію для старших посад. Такий дисбаланс у даних збиває прогнози моделі, надаючи перевагу одній статі. Це виявляє проблему справедливості, пов’язану з гендерною упередженістю в моделі ШІ.
Компонент "Аналіз даних" на панелі RAI допомагає визначити області, де є надмірне або недостатнє представлення в наборі даних. Він допомагає користувачам діагностувати причину помилок і проблем справедливості, спричинених дисбалансом даних або відсутністю представлення певної групи даних. Це дає користувачам можливість візуалізувати набори даних на основі прогнозованих і фактичних результатів, груп помилок і конкретних ознак. Іноді виявлення недостатньо представленої групи даних також може показати, що модель не навчається належним чином, що призводить до високих неточностей. Модель із упередженістю даних — це не лише проблема справедливості, але й показник того, що модель не є інклюзивною чи надійною.
Компонент Аналізу даних на інформаційній панелі RAI допомагає виявити ділянки з надмірним або недостатнім представленням у наборі даних. Він допомагає користувачам діагностувати корінь помилок і проблем справедливості через дисбаланс даних або відсутність представлення окремої групи даних. Це дає змогу візуалізувати набори даних на основі прогнозованих і фактичних результатів, груп помилок і конкретних ознак. Іноді виявлення недостатньо представленої групи даних також дозволяє побачити, що модель погано навчається, тому має багато неточностей. Наявність упередження в даних моделі — це не лише проблема справедливості, а й доказ того, що модель не є інклюзивною або надійною.
![Компонент "Аналіз даних" на панелі RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png)
![Data Analysis component on RAI Dashboard](../../../../translated_images/uk/dataanalysis-cover.8d6d0683a70a5c1e.webp)
Використовуйте аналіз даних, коли вам потрібно:
* Досліджувати статистику вашого набору даних, вибираючи різні фільтри для розбиття даних на різні виміри (також відомі як когорти).
* Зрозуміти розподіл вашого набору даних серед різних когорт і груп ознак.
* Визначити, чи є ваші висновки, пов’язані зі справедливістю, аналізом помилок і причинністю (отримані з інших компонентів панелі), результатом розподілу вашого набору даних.
* Вирішити, в яких областях потрібно зібрати більше даних, щоб зменшити помилки, спричинені проблемами представлення, шумом міток, шумом ознак, упередженням міток та іншими факторами.
Використовуйте аналіз даних, коли потрібно:
## Інтерпретація моделі
* Досліджувати статистику вашого набору даних, вибираючи різні фільтри для поділу даних на різні виміри (так звані когорти).
* Розуміти розподіл набору даних між різними когортами та групами ознак.
* Визначати, чи є ваші висновки щодо справедливості, аналізу помилок і причинності (отримані з інших компонентів панелі) результатом розподілу вашого набору даних.
* Приймати рішення, у яких галузях збирати більше даних, щоб усунути помилки, що виникають через проблеми представлення, шум у мітках, шум ознак, упередження міток та подібні фактори.
Моделі машинного навчання часто вважаються "чорними ящиками". Розуміння того, які ключові ознаки даних впливають на прогноз моделі, може бути складним завданням. Важливо забезпечити прозорість того, чому модель робить певний прогноз. Наприклад, якщо система AI прогнозує, що пацієнт із діабетом має ризик повторної госпіталізації протягом менше ніж 30 днів, вона повинна надати підтверджуючі дані, які привели до цього прогнозу. Наявність підтверджуючих даних забезпечує прозорість, допомагаючи лікарям або лікарням приймати обґрунтовані рішення. Крім того, можливість пояснити, чому модель зробила прогноз для окремого пацієнта, забезпечує відповідність медичним регуляціям. Коли ви використовуєте моделі машинного навчання в способах, які впливають на життя людей, важливо розуміти та пояснювати, що впливає на поведінку моделі. Інтерпретація та пояснення моделі допомагають відповісти на запитання в таких сценаріях:
## Інтерпретованість моделі
* Налагодження моделі: Чому моя модель зробила цю помилку? Як я можу покращити свою модель?
* Співпраця людини та AI: Як я можу зрозуміти та довіряти рішенням моделі?
* Відповідність регуляціям: Чи відповідає моя модель юридичним вимогам?
Моделі машинного навчання, як правило, є «чорними скриньками». Зрозуміти, які ключові ознаки даних впливають на прогноз моделі, може бути складно. Важливо забезпечити прозорість у тому, чому модель робить певний прогноз. Наприклад, якщо система ШІ прогнозує, що діабетичний пацієнт має ризик бути повторно госпіталізованим менш ніж за 30 днів, вона повинна надати підтримуючі дані, що привели до такого прогнозу. Наявність індикаторів підтримки даних підвищує прозорість і допомагає клініцистам або лікарням приймати обґрунтовані рішення. Крім того, здатність пояснювати, чому модель дала прогноз для окремого пацієнта, забезпечує підзвітність відповідно до нормативних вимог охорони здоров’я. Коли ви використовуєте моделі машинного навчання у сферах, що впливають на життя людей, критично важливо розуміти та пояснювати, що впливає на поведінку моделі. Пояснюваність і інтерпретованість моделі допомагає відповісти на питання в таких сценаріях, як:
Компонент "Важливість ознак" на панелі RAI допомагає налагоджувати та отримувати всебічне розуміння того, як модель робить прогнози. Це також корисний інструмент для професіоналів машинного навчання та осіб, які приймають рішення, щоб пояснити та показати докази впливу ознак на поведінку моделі для відповідності регуляціям. Далі користувачі можуть досліджувати як глобальні, так і локальні пояснення, щоб перевірити, які ознаки впливають на прогнози моделі. Глобальні пояснення показують основні ознаки, які вплинули на загальний прогноз моделі. Локальні пояснення показують, які ознаки привели до прогнозу моделі для окремого випадку. Можливість оцінювати локальні пояснення також корисна для налагодження або аудиту конкретного випадку, щоб краще зрозуміти та інтерпретувати, чому модель зробила точний або неточний прогноз.
* Відладка моделі: Чому моя модель зробила цю помилку? Як я можу покращити модель?
* Співпраця людина-ШІ: Як мені розуміти і довіряти рішенням моделі?
* Відповідність регуляторним вимогам: Чи відповідає моя модель юридичним нормам?
![Компонент "Важливість ознак" на панелі RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png)
Компонент Важливості ознак на панелі RAI допомагає відлагоджувати і отримувати комплексне розуміння того, як модель робить прогнози. Це також корисний інструмент для фахівців з машинного навчання та приймаючих рішення, щоб пояснювати і демонструвати докази впливу ознак на поведінку моделі для відповідності регуляторним вимогам. Далі користувачі можуть досліджувати як глобальні, так і локальні пояснення, щоб перевірити, які ознаки впливають на прогноз моделі. Глобальні пояснення перераховують головні ознаки, які вплинули на загальний прогноз моделі. Локальні пояснення показують, які ознаки вплинули на прогноз моделі для окремого випадку. Можливість оцінювати локальні пояснення також корисна для відладки або аудиту конкретного випадку, щоб краще зрозуміти і пояснити, чому модель зробила точний або неточний прогноз.
* Глобальні пояснення: Наприклад, які ознаки впливають на загальну поведінку моделі повторної госпіталізації пацієнтів із діабетом?
* Локальні пояснення: Наприклад, чому пацієнт із діабетом старше 60 років із попередніми госпіталізаціями був прогнозований як повторно госпіталізований або не госпіталізований протягом 30 днів?
![Feature Importance component of the RAI dashboard](../../../../translated_images/uk/9-feature-importance.cd3193b4bba3fd4b.webp)
У процесі налагодження продуктивності моделі серед різних когорт "Важливість ознак" показує, який рівень впливу має ознака серед когорт. Це допомагає виявляти аномалії при порівнянні рівня впливу ознаки на помилкові прогнози моделі. Компонент "Важливість ознак" може показати, які значення в ознаці позитивно або негативно вплинули на результат моделі. Наприклад, якщо модель зробила неточний прогноз, компонент дає змогу деталізувати та визначити, які ознаки або значення ознак вплинули на прогноз. Такий рівень деталізації допомагає не лише в налагодженні, але й забезпечує прозорість і
- **Надмірне або недостатнє представлення**. Ідея полягає в тому, що певна група не представлена в певній професії, і будь-яка послуга чи функція, яка продовжує це підтримувати, сприяє завданню шкоди.
* Глобальні пояснення: наприклад, які ознаки впливають на загальну поведінку моделі прогнозування повторної госпіталізації діабетичних пацієнтів?
* Локальні пояснення: наприклад, чому діабетичний пацієнт віком понад 60 років із попередніми госпіталізаціями був чи не був прогнозований на повторну госпіталізацію протягом 30 днів?
### Панель інструментів Azure RAI
У процесі відладки, аналізуючи продуктивність моделі в різних когортах, Важливість ознак показує рівень впливу ознаки у цих когорт. Це допомагає виявляти аномалії при порівнянні ступеня впливу ознаки на помилкові прогнози моделі. Компонент Важливості ознак може показати, які значення в ознаці позитивно чи негативно впливали на результат моделі. Наприклад, якщо модель зробила неточний прогноз, цей компонент дає змогу детально дослідити і встановити, які саме ознаки чи значення ознак вплинули на прогноз. Такий рівень деталізації допомагає не лише у відладці, але й забезпечує прозорість і підзвітність під час аудитів. Нарешті, компонент допомагає виявляти проблеми зі справедливістю. Наприклад, якщо чутлива ознака, як-от етнічність або стать, має великий вплив на прогноз моделі, це може свідчити про упередженість за расовою або гендерною ознакою в моделі.
[Панель інструментів Azure RAI](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) побудована на основі інструментів з відкритим кодом, розроблених провідними академічними установами та організаціями, включаючи Microsoft. Вона є важливим інструментом для науковців з даних та розробників штучного інтелекту, щоб краще розуміти поведінку моделей, виявляти та усувати небажані проблеми в моделях штучного інтелекту.
![Feature importance](../../../../translated_images/uk/9-features-influence.3ead3d3f68a84029.webp)
- Дізнайтеся, як використовувати різні компоненти, переглянувши [документацію панелі інструментів RAI.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
Використовуйте інтерпретованість, коли потрібно:
- Ознайомтеся з [зразковими блокнотами панелі інструментів RAI](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) для налагодження більш відповідальних сценаріїв штучного інтелекту в Azure Machine Learning.
* Визначати, наскільки надійними є прогнози вашої системи ШІ, розуміючи, які ознаки є найважливішими для прогнозів.
* Розпочати відладку моделі, спочатку розуміючи її та визначаючи, чи використовує модель здорові ознаки чи лише хибні кореляції.
* Виявляти потенційні джерела несправедливості, розуміючи, чи базує модель прогнози на чутливих ознаках або на ознаках, тісно з ними пов’язаних.
* Формувати довіру користувачів до рішень моделі, створюючи локальні пояснення для ілюстрації їхніх результатів.
* Провести регуляторний аудит системи ШІ для валідації моделей та моніторингу впливу рішень моделі на людей.
---
## 🚀 Виклик
## Висновок
Усі компоненти інформаційної панелі RAI є практичними інструментами, що допомагають будувати моделі машинного навчання, які є менш шкідливими та більш надійними для суспільства. Це покращує запобігання порушенням прав людини; дискримінації чи виключенню певних груп із життєвих можливостей; а також ризик фізичних або психологічних ушкоджень. Компоненти також допомагають формувати довіру до рішень вашої моделі, створюючи локальні пояснення для ілюстрації їхніх результатів. Деякі потенційні шкоди можна класифікувати як:
Щоб запобігти введенню статистичних або даних упереджень, ми повинні:
- **Розподіл**, якщо, наприклад, надається перевага певній статі або етнічній групі над іншою.
- **Якість обслуговування**. Якщо ви тренуєте модель для одного конкретного сценарію, але реальність набагато складніша, це призводить до поганої якості послуг.
- **Стереотипізація**. Прив’язка певної групи до заздалегідь заданих атрибутів.
- забезпечити різноманітність досвіду та перспектив серед людей, які працюють над системами
- інвестувати в набори даних, які відображають різноманітність нашого суспільства
- розробляти кращі методи для виявлення та виправлення упереджень, коли вони виникають
- **Обзивання**. Несправедливо критикувати та позначати щось або когось.
- **Пере- або недопредставлення**. Ідея полягає в тому, що певна група не представлена в певній професії, і будь-яка служба чи функція, що постійно це підтримує, приносить шкоду.
Подумайте про реальні сценарії, де несправедливість очевидна у створенні та використанні моделей. Що ще ми повинні врахувати?
### Приладова панель Azure RAI
[Приладова панель Azure RAI](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) побудована на основі інструментів з відкритим кодом, розроблених провідними академічними установами та організаціями, включаючи Microsoft, які є незамінними для дата-сайентистів і розробників ШІ для кращого розуміння поведінки моделей, виявлення та усунення небажаних проблем у моделях штучного інтелекту.
- Дізнайтеся, як користуватися різними компонентами, переглянувши документацію до приладової панелі RAI [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
- Перегляньте кілька прикладів [записних книжок](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) до приладової панелі RAI для налагодження більш відповідальних сценаріїв ШІ у Azure Machine Learning.
---
## 🚀 Виклик
Щоб запобігти внесенню статистичних чи даних упереджень з самого початку, ми повинні:
## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/)
## Огляд і самостійне навчання
- мати різноманітні бекграунди та погляди серед людей, які працюють над системами
- інвестувати у набори даних, що відображають різноманітність нашого суспільства
- розробляти кращі методи для виявлення й виправлення упереджень у разі їх появи
У цьому уроці ви дізналися про деякі практичні інструменти для впровадження відповідального штучного інтелекту в машинне навчання.
Подумайте про реальні сценарії, де несправедливість очевидна при створенні моделей і їх використанні. Що ще слід врахувати?
Перегляньте цей семінар, щоб глибше зануритися в тему:
## [Вікторина після лекції](https://ff-quizzes.netlify.app/en/ml/)
## Підсумок і самонавчання
У цьому уроці ви дізналися про деякі практичні інструменти впровадження відповідального ШІ у машинне навчання.
- Панель інструментів відповідального штучного інтелекту: універсальне рішення для впровадження RAI на практиці від Бесміри Нуші та Мехрнуш Самекі
Перегляньте цей воркшоп, щоб поглибити знання з теми:
[![Панель інструментів відповідального штучного інтелекту: універсальне рішення для впровадження RAI на практиці](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Панель інструментів відповідального штучного інтелекту: універсальне рішення для впровадження RAI на практиці")
- Приладова панель Responsible AI: універсальне рішення для впровадження RAI на практиці від Бесміри Нуші та Мехрнуш Самекі
> 🎥 Натисніть на зображення вище, щоб переглянути відео: Панель інструментів відповідального штучного інтелекту: універсальне рішення для впровадження RAI на практиці від Бесміри Нуші та Мехрнуш Самекі
[![Приладова панель Responsible AI: універсальне рішення для впровадження RAI на практиці](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice")
Ознайомтеся з наступними матеріалами, щоб дізнатися більше про відповідальний штучний інтелект і як створювати більш надійні моделі:
> 🎥 Клікніть на зображення вище, щоб подивитись відео: Приладова панель Responsible AI: універсальне рішення для впровадження RAI на практиці від Бесміри Нуші та Мехрнуш Самекі
Ознайомтеся з наступними матеріалами, щоб більше дізнатися про відповідальний ШІ та як будувати більш надійні моделі:
- Інструменти панелі інструментів Microsoft RAI для налагодження моделей машинного навчання: [Ресурси інструментів відповідального штучного інтелекту](https://aka.ms/rai-dashboard)
- Інструменти панелі RAI від Microsoft для налагодження моделей машинного навчання: [Відповідальні інструменти ШІ](https://aka.ms/rai-dashboard)
- Досліджуйте набір інструментів відповідального штучного інтелекту: [Github](https://github.com/microsoft/responsible-ai-toolbox)
- Вивчайте набір інструментів Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox)
- Центр ресурсів Microsoft RAI: [Ресурси відповідального штучного інтелекту Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Центр ресурсів Responsible AI від Microsoft: [Відповідальні ресурси ШІ Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Дослідницька група Microsoft FATE: [FATE: Справедливість, підзвітність, прозорість та етика в штучному інтелекті - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Дослідницька група FATE від Microsoft: [FATE: Справедливість, Відповідальність, Прозорість та Етика в ШІ - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
## Завдання
[Ознайомтеся з панеллю інструментів RAI](assignment.md)
[Дослідити приладову панель RAI](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). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save