diff --git a/translated_images/cs/.co-op-translator.json b/translated_images/cs/.co-op-translator.json index 68e3f2519..20ec67d8b 100644 --- a/translated_images/cs/.co-op-translator.json +++ b/translated_images/cs/.co-op-translator.json @@ -101,6 +101,12 @@ "source_file": "8-Reinforcement/2-Gym/images/cartpole.png", "language_code": "cs" }, + "catplot.e73fc35fdf96242b.webp": { + "original_hash": "90cd4782a2f9b40dec8218b224b29c1c", + "translation_date": "2026-07-14T04:36:02+00:00", + "source_file": "2-Regression/2-Data/images/catplot.png", + "language_code": "cs" + }, "centroid.097fde836cf6c918.webp": { "original_hash": "c8f866ed446563d8e59087f1bca1f97d", "translation_date": "2026-01-16T15:07:52+00:00", @@ -383,6 +389,12 @@ "source_file": "2-Regression/3-Linear/images/heatmap.png", "language_code": "cs" }, + "heatmap.bd98dce43b404c57.webp": { + "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e", + "translation_date": "2026-07-14T04:36:20+00:00", + "source_file": "2-Regression/2-Data/images/heatmap.png", + "language_code": "cs" + }, "hierarchical.bf59403aa43c8c47.webp": { "original_hash": "50b9bc3298659c463ae76564ca645b12", "translation_date": "2026-01-16T15:07:33+00:00", @@ -473,6 +485,12 @@ "source_file": "2-Regression/3-Linear/images/linear.png", "language_code": "cs" }, + "lineplot.f9034ba47b1e30ee.webp": { + "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb", + "translation_date": "2026-07-14T04:36:28+00:00", + "source_file": "2-Regression/2-Data/images/lineplot.png", + "language_code": "cs" + }, "lobe.2fa0806408ef9923.webp": { "original_hash": "e6ec71dbe350aef39135dbf88bc89163", "translation_date": "2026-01-16T15:04:54+00:00", @@ -743,6 +761,12 @@ "source_file": "2-Regression/3-Linear/images/recipes.png", "language_code": "cs" }, + "relplot.a03837d8f0329cec.webp": { + "original_hash": "4733544cb1c2e58e987087283e66b4a5", + "translation_date": "2026-07-14T04:36:10+00:00", + "source_file": "2-Regression/2-Data/images/relplot.png", + "language_code": "cs" + }, "scaled.91897dfbaa26ca4a.webp": { "original_hash": "789c70fafe6f6dd6e377a90b66e7d740", "translation_date": "2026-01-16T15:18:46+00:00", diff --git a/translated_images/cs/catplot.e73fc35fdf96242b.webp b/translated_images/cs/catplot.e73fc35fdf96242b.webp new file mode 100644 index 000000000..b7db9f9fe Binary files /dev/null and b/translated_images/cs/catplot.e73fc35fdf96242b.webp differ diff --git a/translated_images/cs/heatmap.bd98dce43b404c57.webp b/translated_images/cs/heatmap.bd98dce43b404c57.webp new file mode 100644 index 000000000..fe5239a3a Binary files /dev/null and b/translated_images/cs/heatmap.bd98dce43b404c57.webp differ diff --git a/translated_images/cs/lineplot.f9034ba47b1e30ee.webp b/translated_images/cs/lineplot.f9034ba47b1e30ee.webp new file mode 100644 index 000000000..096affe58 Binary files /dev/null and b/translated_images/cs/lineplot.f9034ba47b1e30ee.webp differ diff --git a/translated_images/cs/relplot.a03837d8f0329cec.webp b/translated_images/cs/relplot.a03837d8f0329cec.webp new file mode 100644 index 000000000..e58dc771e Binary files /dev/null and b/translated_images/cs/relplot.a03837d8f0329cec.webp differ diff --git a/translated_images/hu/.co-op-translator.json b/translated_images/hu/.co-op-translator.json index 38187d435..dcb544bf7 100644 --- a/translated_images/hu/.co-op-translator.json +++ b/translated_images/hu/.co-op-translator.json @@ -101,6 +101,12 @@ "source_file": "8-Reinforcement/2-Gym/images/cartpole.png", "language_code": "hu" }, + "catplot.e73fc35fdf96242b.webp": { + "original_hash": "90cd4782a2f9b40dec8218b224b29c1c", + "translation_date": "2026-07-14T04:36:00+00:00", + "source_file": "2-Regression/2-Data/images/catplot.png", + "language_code": "hu" + }, "centroid.097fde836cf6c918.webp": { "original_hash": "c8f866ed446563d8e59087f1bca1f97d", "translation_date": "2026-01-16T15:07:48+00:00", @@ -383,6 +389,12 @@ "source_file": "2-Regression/3-Linear/images/heatmap.png", "language_code": "hu" }, + "heatmap.bd98dce43b404c57.webp": { + "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e", + "translation_date": "2026-07-14T04:36:16+00:00", + "source_file": "2-Regression/2-Data/images/heatmap.png", + "language_code": "hu" + }, "hierarchical.bf59403aa43c8c47.webp": { "original_hash": "50b9bc3298659c463ae76564ca645b12", "translation_date": "2026-01-16T15:07:28+00:00", @@ -473,6 +485,12 @@ "source_file": "2-Regression/3-Linear/images/linear.png", "language_code": "hu" }, + "lineplot.f9034ba47b1e30ee.webp": { + "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb", + "translation_date": "2026-07-14T04:36:25+00:00", + "source_file": "2-Regression/2-Data/images/lineplot.png", + "language_code": "hu" + }, "lobe.2fa0806408ef9923.webp": { "original_hash": "e6ec71dbe350aef39135dbf88bc89163", "translation_date": "2026-01-16T15:04:47+00:00", @@ -743,6 +761,12 @@ "source_file": "2-Regression/3-Linear/images/recipes.png", "language_code": "hu" }, + "relplot.a03837d8f0329cec.webp": { + "original_hash": "4733544cb1c2e58e987087283e66b4a5", + "translation_date": "2026-07-14T04:36:08+00:00", + "source_file": "2-Regression/2-Data/images/relplot.png", + "language_code": "hu" + }, "scaled.91897dfbaa26ca4a.webp": { "original_hash": "789c70fafe6f6dd6e377a90b66e7d740", "translation_date": "2026-01-16T15:18:45+00:00", diff --git a/translated_images/hu/catplot.e73fc35fdf96242b.webp b/translated_images/hu/catplot.e73fc35fdf96242b.webp new file mode 100644 index 000000000..e57989b08 Binary files /dev/null and b/translated_images/hu/catplot.e73fc35fdf96242b.webp differ diff --git a/translated_images/hu/heatmap.bd98dce43b404c57.webp b/translated_images/hu/heatmap.bd98dce43b404c57.webp new file mode 100644 index 000000000..f9113960a Binary files /dev/null and b/translated_images/hu/heatmap.bd98dce43b404c57.webp differ diff --git a/translated_images/hu/lineplot.f9034ba47b1e30ee.webp b/translated_images/hu/lineplot.f9034ba47b1e30ee.webp new file mode 100644 index 000000000..7b567a266 Binary files /dev/null and b/translated_images/hu/lineplot.f9034ba47b1e30ee.webp differ diff --git a/translated_images/hu/relplot.a03837d8f0329cec.webp b/translated_images/hu/relplot.a03837d8f0329cec.webp new file mode 100644 index 000000000..21b985712 Binary files /dev/null and b/translated_images/hu/relplot.a03837d8f0329cec.webp differ diff --git a/translated_images/sw/.co-op-translator.json b/translated_images/sw/.co-op-translator.json index dee07a8ee..79025ea0e 100644 --- a/translated_images/sw/.co-op-translator.json +++ b/translated_images/sw/.co-op-translator.json @@ -101,6 +101,12 @@ "source_file": "8-Reinforcement/2-Gym/images/cartpole.png", "language_code": "sw" }, + "catplot.e73fc35fdf96242b.webp": { + "original_hash": "90cd4782a2f9b40dec8218b224b29c1c", + "translation_date": "2026-07-14T04:35:59+00:00", + "source_file": "2-Regression/2-Data/images/catplot.png", + "language_code": "sw" + }, "centroid.097fde836cf6c918.webp": { "original_hash": "c8f866ed446563d8e59087f1bca1f97d", "translation_date": "2026-01-16T15:07:44+00:00", @@ -383,6 +389,12 @@ "source_file": "2-Regression/3-Linear/images/heatmap.png", "language_code": "sw" }, + "heatmap.bd98dce43b404c57.webp": { + "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e", + "translation_date": "2026-07-14T04:36:13+00:00", + "source_file": "2-Regression/2-Data/images/heatmap.png", + "language_code": "sw" + }, "hierarchical.bf59403aa43c8c47.webp": { "original_hash": "50b9bc3298659c463ae76564ca645b12", "translation_date": "2026-01-16T15:07:23+00:00", @@ -473,6 +485,12 @@ "source_file": "2-Regression/3-Linear/images/linear.png", "language_code": "sw" }, + "lineplot.f9034ba47b1e30ee.webp": { + "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb", + "translation_date": "2026-07-14T04:36:22+00:00", + "source_file": "2-Regression/2-Data/images/lineplot.png", + "language_code": "sw" + }, "lobe.2fa0806408ef9923.webp": { "original_hash": "e6ec71dbe350aef39135dbf88bc89163", "translation_date": "2026-01-16T15:04:39+00:00", @@ -743,6 +761,12 @@ "source_file": "2-Regression/3-Linear/images/recipes.png", "language_code": "sw" }, + "relplot.a03837d8f0329cec.webp": { + "original_hash": "4733544cb1c2e58e987087283e66b4a5", + "translation_date": "2026-07-14T04:36:05+00:00", + "source_file": "2-Regression/2-Data/images/relplot.png", + "language_code": "sw" + }, "scaled.91897dfbaa26ca4a.webp": { "original_hash": "789c70fafe6f6dd6e377a90b66e7d740", "translation_date": "2026-01-16T15:18:44+00:00", diff --git a/translated_images/sw/catplot.e73fc35fdf96242b.webp b/translated_images/sw/catplot.e73fc35fdf96242b.webp new file mode 100644 index 000000000..f9126160a Binary files /dev/null and b/translated_images/sw/catplot.e73fc35fdf96242b.webp differ diff --git a/translated_images/sw/heatmap.bd98dce43b404c57.webp b/translated_images/sw/heatmap.bd98dce43b404c57.webp new file mode 100644 index 000000000..b25ef6092 Binary files /dev/null and b/translated_images/sw/heatmap.bd98dce43b404c57.webp differ diff --git a/translated_images/sw/lineplot.f9034ba47b1e30ee.webp b/translated_images/sw/lineplot.f9034ba47b1e30ee.webp new file mode 100644 index 000000000..096070967 Binary files /dev/null and b/translated_images/sw/lineplot.f9034ba47b1e30ee.webp differ diff --git a/translated_images/sw/relplot.a03837d8f0329cec.webp b/translated_images/sw/relplot.a03837d8f0329cec.webp new file mode 100644 index 000000000..fb458bc79 Binary files /dev/null and b/translated_images/sw/relplot.a03837d8f0329cec.webp differ diff --git a/translations/cs/.co-op-translator.json b/translations/cs/.co-op-translator.json index 31813f583..4f8050b23 100644 --- a/translations/cs/.co-op-translator.json +++ b/translations/cs/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "cs" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T00:21:33+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T04:34:48+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "cs" }, @@ -54,8 +54,8 @@ "language_code": "cs" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-04T23:35:46+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T04:31:46+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "cs" }, @@ -72,8 +72,8 @@ "language_code": "cs" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-04T23:41:01+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T04:32:46+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "cs" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "cs" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T04:08:06+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "cs" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:03:47+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T01:06:51+00:00", + "translation_date": "2026-07-14T04:33:52+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "cs" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-05T00:15:11+00:00", + "translation_date": "2026-07-14T04:35:50+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "cs" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "cs" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "cs", + "failure_date": "2026-07-14T04:30:52+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-05T00:08:07+00:00", diff --git a/translations/cs/1-Introduction/3-fairness/README.md b/translations/cs/1-Introduction/3-fairness/README.md index ab7ac8471..acc2c9691 100644 --- a/translations/cs/1-Introduction/3-fairness/README.md +++ b/translations/cs/1-Introduction/3-fairness/README.md @@ -1,30 +1,30 @@ -# Budování řešení strojového učení s odpovědnou AI - -![Shrnutí odpovědné AI ve strojovém učení ve sketchnote](../../../../sketchnotes/ml-fairness.png) -> Sketchnote od [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ml/) +# Tvorba řešení strojového učení s odpovědnou umělou inteligencí + +![Shrnutí odpovědné AI ve strojovém učení v náčrtu](../../../../translated_images/cs/ml-fairness.ef296ebec6afc98a.webp) +> Náčrt od [Tomomi Imura](https://www.twitter.com/girlie_mac) +## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) + ## Úvod -V tomto kurzu začnete objevovat, jak strojové učení ovlivňuje a může ovlivňovat náš každodenní život. Již nyní jsou systémy a modely zapojeny do každodenních rozhodovacích úkolů, jako jsou diagnózy ve zdravotnictví, schvalování půjček nebo odhalování podvodů. Je tedy důležité, aby tyto modely fungovaly dobře a poskytovaly důvěryhodné výsledky. Stejně jako u jakékoli softwarové aplikace, i systémy AI mohou selhat nebo mít nežádoucí výsledek. Proto je zásadní být schopen porozumět a vysvětlit chování modelu AI. +V tomto kurzu začnete objevovat, jak strojové učení ovlivňuje náš každodenní život. Již nyní jsou systémy a modely zapojeny do každodenních rozhodovacích úloh, jako jsou zdravotnické diagnózy, schvalování půjček nebo detekce podvodů. Je proto důležité, aby tyto modely fungovaly dobře a poskytovaly výsledky, kterým lze důvěřovat. Stejně jako jakýkoli software, i AI systémy mohou nesplnit očekávání nebo mít nežádoucí výsledek. Proto je zásadní být schopen pochopit a vysvětlit chování AI modelu. -Představte si, co se může stát, když data, která používáte k vytváření těchto modelů, postrádají určité demografické údaje, jako je rasa, pohlaví, politický názor, náboženství, nebo naopak nepřiměřeně zastupují určité demografické skupiny. Co když je výstup modelu interpretován tak, že upřednostňuje určitou demografickou skupinu? Jaké to má důsledky pro aplikaci? A co se stane, když model má nepříznivý výsledek a je škodlivý pro lidi? Kdo je odpovědný za chování systému AI? To jsou některé otázky, které budeme v tomto kurzu zkoumat. +Představte si, co se stane, když data, která používáte k vytvoření těchto modelů, postrádají určité demografické skupiny, jako je rasa, pohlaví, politický názor, náboženství, nebo tyto skupiny nepoměrně reprezentují. Co když je výstup modelu interpretován tak, že preferuje nějakou demografickou skupinu? Jaký má to důsledek pro aplikaci? Navíc, co když má model nežádoucí výsledek a ubližuje lidem? Kdo je odpovědný za chování AI systému? To jsou některé otázky, které v tomto kurzu prozkoumáme. -V této lekci se naučíte: +V této lekci si: -- Zvýšit povědomí o důležitosti spravedlnosti ve strojovém učení a o škodách spojených s nespravedlností. -- Seznámit se s praxí zkoumání odlehlých hodnot a neobvyklých scénářů pro zajištění spolehlivosti a bezpečnosti. -- Porozumět potřebě posilovat všechny tím, že navrhujete inkluzivní systémy. -- Prozkoumat, jak je důležité chránit soukromí a bezpečnost dat a lidí. -- Uvědomit si význam přístupu „skleněné krabice“ pro vysvětlení chování modelů AI. -- Být si vědomi toho, jak je odpovědnost klíčová pro budování důvěry v systémy AI. +- Zvýšíte povědomí o důležitosti spravedlnosti ve strojovém učení a škodách souvisejících se spravedlností. +- Se seznámíte s praxí zkoumání odlehlých případů a neobvyklých scénářů pro zajištění spolehlivosti a bezpečnosti +- Získáte pochopení potřeby posílit každého navrhováním inkluzivních systémů +- Prozkoumáte, jak je zásadní chránit soukromí a bezpečnost dat a lidí +- Uvidíte důležitost přístupu s otevřenou schránkou ke vysvětlení chování AI modelů +- Budete si vědomi, jak je odpovědnost nezbytná pro budování důvěry v AI systémy ## Předpoklady -Jako předpoklad si projděte „Principy odpovědné AI“ na Learn Path a podívejte se na níže uvedené video na toto téma: +Jako předpoklad prosím absolvujte "Principy odpovědné AI" v Learning Path a podívejte se na video níže na toto téma: -Zjistěte více o odpovědné AI prostřednictvím tohoto [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Dozvíte se více o odpovědné AI tím, že budete sledovat tento [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) [![Přístup Microsoftu k odpovědné AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Přístup Microsoftu k odpovědné AI") @@ -32,107 +32,128 @@ Zjistěte více o odpovědné AI prostřednictvím tohoto [Learning Path](https: ## Spravedlnost -Systémy AI by měly zacházet se všemi spravedlivě a vyhnout se tomu, aby ovlivňovaly podobné skupiny lidí různými způsoby. Například když systémy AI poskytují doporučení ohledně lékařské péče, žádostí o půjčky nebo zaměstnání, měly by dávat stejná doporučení všem s podobnými symptomy, finančními podmínkami nebo profesními kvalifikacemi. Každý z nás jako člověk má vrozené předsudky, které ovlivňují naše rozhodnutí a jednání. Tyto předsudky se mohou projevit v datech, která používáme k trénování systémů AI. Taková manipulace může někdy nastat neúmyslně. Často je obtížné vědomě rozpoznat, kdy do dat zavádíte předsudky. +AI systémy by měly zacházet se všemi spravedlivě a vyhnout se tomu, aby ovlivňovaly podobné skupiny lidí různými způsoby. Například, když AI systémy poskytují doporučení ohledně lékařské léčby, žádostí o půjčku nebo zaměstnání, měly by všem s podobnými příznaky, finanční situací nebo profesní kvalifikací doporučit to samé. Každý z nás jako lidé nosí s sebou zděděné předsudky, které ovlivňují naše rozhodnutí a činy. Tyto předsudky mohou být patrné v datech, která používáme k tréninku AI systémů. Taková manipulace se někdy děje neúmyslně. Často je obtížné si vědomě uvědomit, kdy data zkreslujete. -**„Nespravedlnost“** zahrnuje negativní dopady, nebo „škody“, na skupinu lidí, například definovanou podle rasy, pohlaví, věku nebo zdravotního postižení. Hlavní škody spojené se spravedlností lze klasifikovat jako: +**„Nespravedlnost“** zahrnuje negativní dopady, nebo „škody“ pro skupinu lidí, například definovanou podle rasy, pohlaví, věku nebo zdravotního postižení. Hlavní škody související se spravedlností lze klasifikovat jako: -- **Alokace**, pokud je například upřednostňováno jedno pohlaví nebo etnická skupina před jinou. -- **Kvalita služby**. Pokud trénujete data pro jeden konkrétní scénář, ale realita je mnohem složitější, vede to k špatně fungující službě. Například dávkovač mýdla, který nedokázal rozpoznat lidi s tmavou pletí. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Očernění**. Nespravedlivé kritizování a označování něčeho nebo někoho. Například technologie označování obrázků nesprávně označila obrázky lidí s tmavou pletí jako gorily. -- **Nad- nebo podreprezentace**. Myšlenka, že určitá skupina není vidět v určité profesi, a jakákoli služba nebo funkce, která to nadále podporuje, přispívá ke škodě. -- **Stereotypizace**. Spojování určité skupiny s předem přiřazenými atributy. Například systém překladu mezi angličtinou a turečtinou může mít nepřesnosti kvůli slovům se stereotypními asociacemi k pohlaví. +- **Přidělení**, pokud je například preferováno nějaké pohlaví nebo etnikum. +- **Kvalita služby**. Pokud trénujete data pro jeden specifický scénář, ale realita je mnohem složitější, vede to k špatně fungující službě. Například dávkovač tekutého mýdla, který nedokázal rozpoznat lidi s tmavou pokožkou. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Ošklivé označování**. Nespravedlivé kritizování a označování něčeho nebo někoho. Například technologie značkování obrázků neslavně označila obrázky tmavé pleti lidí jako gorily. +- **Nadměrné nebo nedostatečné zastoupení**. Myšlenka, že určitá skupina není vidět v určité profesi, a každá služba nebo funkce, která toto podporuje, přispívá ke škodě. +- **Stereotypizace**. Přiřazování dané skupině předem určených atributů. Například jazykový překladový systém mezi angličtinou a turečtinou může mít nepřesnosti kvůli slovům s genderově stereotypními asociacemi. -![překlad do turečtiny](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![překlad do turečtiny](../../../../translated_images/cs/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > překlad do turečtiny -![překlad zpět do angličtiny](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![překlad zpět do angličtiny](../../../../translated_images/cs/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > překlad zpět do angličtiny -Při navrhování a testování systémů AI musíme zajistit, že AI je spravedlivá a není naprogramována tak, aby činila zaujatá nebo diskriminační rozhodnutí, která jsou zakázána i lidem. Zajištění spravedlnosti v AI a strojovém učení zůstává složitou sociotechnickou výzvou. +Při návrhu a testování AI systémů musíme zajistit, aby AI byla spravedlivá a nebyla naprogramována k rozhodnutím s předsudky nebo diskriminačním rozhodnutím, která jsou lidským bytostem také zakázána. Zajištění spravedlnosti v AI a strojovém učení je stále složitou sociotechnickou výzvou. ### Spolehlivost a bezpečnost -Pro budování důvěry musí být systémy AI spolehlivé, bezpečné a konzistentní za normálních i neočekávaných podmínek. Je důležité vědět, jak se systémy AI budou chovat v různých situacích, zejména když se jedná o odlehlé hodnoty. Při budování řešení AI je třeba věnovat značnou pozornost tomu, jak zvládnout širokou škálu okolností, se kterými se řešení AI může setkat. Například samořídící auto musí klást bezpečnost lidí na první místo. Výsledkem je, že AI pohánějící auto musí zohlednit všechny možné scénáře, se kterými se auto může setkat, jako je noc, bouřky nebo sněhové bouře, děti běžící přes ulici, domácí mazlíčci, silniční stavby atd. Jak dobře systém AI dokáže spolehlivě a bezpečně zvládnout širokou škálu podmínek, odráží úroveň předvídavosti, kterou datový vědec nebo vývojář AI zohlednil při návrhu nebo testování systému. +Aby AI systémy vyvolaly důvěru, musí být spolehlivé, bezpečné a konzistentní za normálních i neočekávaných podmínek. Je důležité vědět, jak se AI systémy budou chovat v různých situacích, zejména pokud jde o odlehlé případy. Při vytváření AI řešení je třeba věnovat značnou pozornost tomu, jak zvládat širokou škálu okolností, se kterými se AI řešení mohou setkat. Například samořiditelné auto musí klást bezpečnost lidí na první místo. Výsledkem je, že AI, která auto pohání, musí zvážit všechny možné scénáře, jako je noc, bouřky nebo sněhové vánice, děti přebíhající přes ulici, domácí mazlíčci, silniční práce atd. Jak dobře může AI systém spolehlivě a bezpečně zvládnout širokou škálu podmínek odráží míru předvídavosti, kterou vědec zabývající se daty nebo vývojář AI při návrhu či testování systému zohlednil. > [🎥 Klikněte zde pro video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Inkluzivita -Systémy AI by měly být navrženy tak, aby zapojily a posílily všechny. Při navrhování a implementaci systémů AI datoví vědci a vývojáři AI identifikují a řeší potenciální bariéry v systému, které by mohly neúmyslně vyloučit lidi. Například na světě je 1 miliarda lidí s postižením. Díky pokroku v AI mohou snadněji přistupovat k široké škále informací a příležitostí ve svém každodenním životě. Řešením bariér vznikají příležitosti k inovacím a vývoji produktů AI s lepšími zkušenostmi, které přinášejí užitek všem. +AI systémy by měly být navrženy tak, aby zapojily a posílily každého. Při návrhu a implementaci AI systémů identifikují datoví vědci a vývojáři AI případné bariéry v systému, které by mohly neúmyslně vyloučit lidi. Například na světě je 1 miliarda lidí s postižením. Díky pokroku AI mají oni snadnější přístup k širokému spektru informací a příležitostí ve svém každodenním životě. Odstraňováním bariér se vytvářejí příležitosti k inovacím a vývoji AI produktů s lepšími zkušenostmi, které prospívají všem. > [🎥 Klikněte zde pro video: inkluzivita v AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) ### Bezpečnost a soukromí -Systémy AI by měly být bezpečné a respektovat soukromí lidí. Lidé mají menší důvěru v systémy, které ohrožují jejich soukromí, informace nebo životy. Při trénování modelů strojového učení se spoléháme na data, abychom dosáhli co nejlepších výsledků. Při tom je třeba zohlednit původ dat a jejich integritu. Například byla data poskytnuta uživateli nebo byla veřejně dostupná? Dále je při práci s daty zásadní vyvíjet systémy AI, které dokážou chránit důvěrné informace a odolávat útokům. Jak se AI stává rozšířenější, ochrana soukromí a zabezpečení důležitých osobních a obchodních informací se stává stále důležitější a složitější. Otázky soukromí a bezpečnosti dat vyžadují zvláštní pozornost u AI, protože přístup k datům je nezbytný pro to, aby systémy AI mohly činit přesné a informované předpovědi a rozhodnutí o lidech. +AI systémy by měly být bezpečné a respektovat soukromí lidí. Lidé mají menší důvěru ve systémy, které ohrožují jejich soukromí, informace nebo životy. Při tréninku strojových učících se modelů spoléháme na data, abychom dosáhli co nejlepších výsledků. Při tom je třeba zvažovat původ dat a jejich integritu. Například zda data uživatel zadal, nebo zda jsou veřejně dostupná. Dále je během práce s daty klíčové vyvíjet AI systémy, které mohou chránit důvěrné informace a odolávat útokům. Jak AI získává na významu, ochrana soukromí a zabezpečení důležitých osobních a obchodních informací se stává stále kritičtější a složitější. Otázky soukromí a zabezpečení dat vyžadují zvláštní pozornost u AI, protože přístup k datům je nezbytný pro AI systémy, aby mohly přesně a informovaně předpovídat a rozhodovat o lidech. > [🎥 Klikněte zde pro video: bezpečnost v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Jako průmysl jsme dosáhli významného pokroku v oblasti soukromí a bezpečnosti, výrazně podpořeného regulacemi, jako je GDPR (Obecné nařízení o ochraně osobních údajů). -- Přesto u systémů AI musíme uznat napětí mezi potřebou více osobních dat pro zlepšení personalizace a efektivity systémů – a ochranou soukromí. -- Stejně jako při vzniku propojených počítačů s internetem, vidíme také obrovský nárůst počtu bezpečnostních problémů souvisejících s AI. -- Zároveň jsme viděli, že AI je využívána ke zlepšení bezpečnosti. Například většina moderních antivirových skenerů je dnes poháněna heuristikou AI. -- Musíme zajistit, aby naše procesy datové vědy harmonicky zapadaly do nejnovějších postupů v oblasti soukromí a bezpečnosti. +- Jako odvětví jsme dosáhli významných pokroků v oblasti soukromí a bezpečnosti, významně podpořených regulacemi jako GDPR (Obecné nařízení o ochraně osobních údajů). +- Přesto u AI systémů musíme uznat napětí mezi potřebou více osobních dat, aby systémy byly osobnější a efektivnější – a ochranou soukromí. +- Stejně jako při vzniku připojených počítačů s internetem sledujeme výrazný nárůst bezpečnostních problémů souvisejících s AI. +- Současně jsme také viděli, že AI se používá ke zlepšení bezpečnosti. Například většina moderních antivirových skenerů je dnes řízena AI heuristikami. +- Musíme zajistit, aby naše procesy datové vědy harmonicky splývaly s nejnovějšími praktikami ochrany soukromí a bezpečnosti. -### Transparentnost -Systémy AI by měly být srozumitelné. Klíčovou součástí transparentnosti je vysvětlení chování systémů AI a jejich komponent. Zlepšení porozumění systémům AI vyžaduje, aby zainteresované strany pochopily, jak a proč fungují, aby mohly identifikovat potenciální problémy s výkonem, obavy o bezpečnost a soukromí, předsudky, vylučující praktiky nebo nechtěné výsledky. Věříme také, že ti, kdo používají systémy AI, by měli být upřímní a otevření ohledně toho, kdy, proč a jak se rozhodnou je nasadit. Stejně tak o omezeních systémů, které používají. Například pokud banka používá systém AI k podpoře svých rozhodnutí o spotřebitelských půjčkách, je důležité zkoumat výsledky a pochopit, která data ovlivňují doporučení systému. Vlády začínají regulovat AI napříč odvětvími, takže datoví vědci a organizace musí vysvětlit, zda systém AI splňuje regulační požadavky, zejména když dojde k nežádoucímu výsledku. +### Transparentnost +AI systémy by měly být pochopitelné. Klíčovou součástí transparentnosti je vysvětlování chování AI systémů a jejich komponent. Zlepšení porozumění AI systémům vyžaduje, aby zainteresované strany rozuměly jak a proč fungují, aby mohly identifikovat možné problémy s výkonem, bezpečnostní a soukromí rizika, předsudky, výlučné praktiky nebo nežádoucí výsledky. Také věříme, že ti, kdo AI systémy používají, by měli být upřímní a otevření ohledně toho, kdy, proč a jak se rozhodli je nasadit. A také o omezeních systémů, které používají. Například pokud banka používá AI systém na podporu svých rozhodnutí o půjčkách pro spotřebitele, je důležité zkoumat výsledky a pochopit, která data ovlivňují doporučení systému. Vlády začínají regulovat AI napříč odvětvími, a proto musí datoví vědci a organizace vysvětlit, zda AI systém splňuje regulatorní požadavky, zejména pokud dojde k nežádoucímu výsledku. > [🎥 Klikněte zde pro video: transparentnost v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Protože systémy AI jsou tak složité, je těžké pochopit, jak fungují a interpretovat výsledky. -- Tento nedostatek porozumění ovlivňuje způsob, jakým jsou tyto systémy spravovány, provozovány a dokumentovány. -- Tento nedostatek porozumění především ovlivňuje rozhodnutí učiněná na základě výsledků, které tyto systémy produkují. +- Protože AI systémy jsou tak složité, je obtížné pochopit, jak fungují, a interpretovat výsledky. +- Tento nedostatek porozumění ovlivňuje způsob, jakým jsou tyto systémy spravovány, zaváděny a dokumentovány. +- Tento nedostatek porozumění ovlivňuje nade vše rozhodnutí učiněná na základě výsledků, které tyto systémy produkují. ### Odpovědnost + +Lidé, kteří navrhují a zavádějí AI systémy, musí být odpovědní za to, jak jejich systémy fungují. Potřeba odpovědnosti je zvlášť důležitá u citlivých technologií, jako je rozpoznávání obličejů. Nedávno vzrostla poptávka po technologii rozpoznávání obličejů, zejména ze strany orgánů činných v trestním řízení, které vidí potenciál této technologie pro použití, například při hledání pohřešovaných dětí. Nicméně tyto technologie by mohly být potenciálně použity vládou k ohrožení základních svobod občanů například umožněním trvalého sledování konkrétních jednotlivců. Proto je třeba, aby datoví vědci a organizace nesli odpovědnost za to, jak jejich AI systém ovlivňuje jednotlivce nebo společnost. -Lidé, kteří navrhují a nasazují systémy AI, musí být odpovědní za to, jak jejich systémy fungují. Potřeba odpovědnosti je obzvláště důležitá u technologií citlivého použití, jako je rozpoznávání obličeje. V poslední době roste poptávka po technologii rozpoznávání obličeje, zejména ze strany orgánů činných v trestním řízení, které vidí potenciál této technologie například při hledání pohřešovaných dětí. Tyto technologie však mohou být potenciálně využívány vládou k ohrožení základních svobod občanů, například umožněním nepřetržitého sledování konkrétních jednotlivců. Proto musí být datoví vědci a organizace odpovědní za to, jak jejich systém AI ovlivňuje jednotlivce nebo společnost. +[![Přední výzkumník AI varuje před masovým sledováním pomocí rozpoznávání obličejů](../../../../translated_images/cs/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Přístup Microsoftu k odpovědné AI") -[![Přední výzkumník AI varuje před masovým sledováním prostřednictvím rozpoznávání obličeje](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Přístup Microsoftu k odpovědné AI") +> 🎥 Klikněte na obrázek výše pro video: Varování před masovým sledováním pomocí rozpoznávání obličejů -> 🎥 Klikněte na obrázek výše pro video: Varování před masovým sledováním prostřednictvím rozpoznávání obličeje +Nakonec jedna z největších otázek pro naši generaci, jako první generaci, která přináší AI do společnosti, je, jak zajistit, aby počítače zůstaly odpovědné vůči lidem a jak zajistit, aby lidé, kteří počítače navrhují, zůstali odpovědní vůči všem ostatním. -Nakonec jednou z největších otázek pro naši generaci, jako první generaci, která přináší AI do společnosti, je, jak zajistit, aby počítače zůstaly odpovědné vůči lidem a jak zajistit, aby lidé, kteří počítače navrhují, zůstali odpovědní vůči všem ostatním. +## Hodnocení dopadů -## Posouzení dopadu +Před tréninkem strojového učícího modelu je důležité provést hodnocení dopadů, aby se pochopil účel AI systému; jaké je jeho zamýšlené použití; kde bude nasazen; a kdo s ním bude interagovat. Tyto informace jsou užitečné pro hodnotitele nebo testery systému, kteří potřebují vědět, jaké faktory zvážit při identifikaci potenciálních rizik a očekávaných důsledků. -Před trénováním modelu strojového učení je důležité provést posouzení dopadu, abyste pochopili účel systému AI; jaké je zamýšlené použití; kde bude nasazen; a kdo bude se systémem interagovat. Tyto informace jsou užitečné pro recenzenty nebo testery, kteří hodnotí systém, aby věděli, jaké faktory je třeba vzít v úvahu při identifikaci potenciálních rizik a očekávaných důsledků. +Následují oblasti zaměření při provádění hodnocení dopadů: -Následující oblasti jsou klíčové při provádění posouzení dopadu: +* **Nepříznivý dopad na jednotlivce**. Být si vědom jakýchkoli omezení nebo požadavků, nepodporovaného použití nebo jakýchkoli známých omezení, která brání výkonu systému, je nezbytné, aby se zajistilo, že systém nebude používán způsobem, který by mohl způsobit škody jednotlivcům. +* **Požadavky na data**. Pochopení toho, jak a kde systém bude data používat, umožňuje hodnotitelům prozkoumat požadavky na data, na které je třeba dbát (např. regulace GDPR nebo HIPAA). Dále je třeba zkontrolovat, zda je zdroj nebo množství dat dostačující pro trénink. +* **Shrnutí dopadů**. Shromáždit seznam potenciálních škod, které by mohly vzniknout použitím systému. Během životního cyklu ML pravidelně kontrolovat, zda jsou zjištěné problémy zmírněny nebo řešeny. +* **Platné cíle** pro každý ze šesti základních principů. Zhodnotit, zda jsou cíle z každého z principů splněny a zda jsou nějaké mezery. -* **Nepříznivý dopad na jednotlivce**. Být si vědom jakýchkoli omezení nebo požadavků, nepodporovaného použití nebo známých omezení, která brání výkonu systému, je zásadní pro zajištění toho, že systém nebude používán způsobem, který by mohl způsobit škodu jednotlivcům. -* **Požadavky na data**. Získání porozumění tomu, jak a kde systém bude používat data, umožňuje recenzentům prozkoumat jakékoli požadavky na data, na které byste měli být ohleduplní (např. GDPR nebo HIPPA regulace dat). Dále je třeba zkoumat, zda je zdroj nebo množství dat dostatečné pro trénování. -* **Shrnutí dopadu**. Sestavte seznam potenciálních škod, které by mohly vzniknout při používání systému. Během životního cyklu ML zkontrolujte, zda byly identifikované problémy zmírněny nebo vyřešeny. -* **Platné cíle** pro každou ze šesti základních zásad. Posuďte, zda byly cíle z každé zásady splněny a zda existují nějaké mezery. ## Ladění s odpovědnou AI -Podobně jako ladění softwarové aplikace je ladění systému AI nezbytným procesem identifikace a řešení problémů v systému. Existuje mnoho faktorů, které mohou ovlivnit, že model nefunguje podle očekávání nebo odpovědně. Většina tradičních metrik výkonu modelu jsou kvantitativní agregáty výkonu modelu, které nejsou dostatečné k analýze, jak model porušuje zásady odpovědné AI. Navíc je model strojového učení černou skříňkou, což ztěžuje pochopení, co ovlivňuje jeho výstup, nebo poskytování vysvětlení, když udělá chybu. Později v tomto kurzu se naučíme, jak používat dashboard odpovědné AI k ladění systémů AI. Dashboard poskytuje komplexní nástroj pro datové vědce a vývojáře AI k provádění: +Podobně jako ladění softwarové aplikace je ladění AI systému nezbytným postupem identifikace a řešení problémů v systému. Existuje mnoho faktorů, které by mohly způsobit, že model nebude fungovat podle očekávání nebo odpovědně. Většina tradičních metrik výkonnosti modelu jsou kvantitativní agregáty výkonu modelu, které však nejsou dostačující k analýze toho, jak model porušuje principy odpovědné AI. Navíc je model strojového učení černá skříňka, která ztěžuje pochopení toho, co ovlivňuje jeho výsledek, nebo poskytnutí vysvětlení, když udělá chybu. Později v tomto kurzu se naučíme používat řídicí panel Responsible AI k ladění AI systémů. Tento řídicí panel poskytuje komplexní nástroj pro datové vědce a vývojáře AI k provádění: + +* **Analýza chyb**. Identifikovat rozložení chyb modelu, které mohou ovlivnit spravedlnost nebo spolehlivost systému. +* **Přehled modelu**. Objevit, kde existují rozdíly ve výkonu modelu napříč datovými kohortami. +* **Analýza dat**. Pochopit rozložení dat a identifikovat možné předsudky v datech, které by mohly vést k problémům se spravedlností, inkluzivitou a spolehlivostí. +* **Interpretovatelnost modelu**. Porozumět tomu, co ovlivňuje nebo určuje předpovědi modelu. To pomáhá při vysvětlování chování modelu, což je důležité pro transparentnost a odpovědnost. + + +## 🚀 Výzva + +Abychom zabránili vzniku škod již v zárodku, měli bychom: + +- mít rozmanitost zázemí a názorů mezi lidmi pracujícími na systémech +- investovat do datových sad, které odrážejí rozmanitost naší společnosti +- vyvíjet lepší metody během celého životního cyklu strojového učení pro detekci a opravu odpovědné AI, když k ní dojde + +Zamyslete se nad reálnými scénáři, kde je nedůvěryhodnost modelu evidentní při tvorbě a používání modelu. Co dalšího bychom měli zvážit? + +## [Povídkový kvíz](https://ff-quizzes.netlify.app/en/ml/) + +## Recenze a samostudium + -* **Analýzy chyb**. Identifikace rozložení chyb modelu, které mohou ovlivnit spravedlnost nebo spolehlivost systému. -* **Přehledu modelu**. Objevování, kde jsou rozdíly ve výkonu modelu napříč datovými kohortami. -* **Analýzy dat**. Porozumění rozložení dat a identifikace jakéhokoli potenciálního předsudku v datech, který by mohl vést k problémům se spravedlností -Podívejte se na tento workshop, abyste se ponořili hlouběji do témat: +V této lekci jste se naučili základy konceptů spravedlnosti a nespravedlnosti v oblasti strojového učení. + +Podívejte se na tento workshop, ve kterém se do těchto témat ponoříte hlouběji: -- V hledání odpovědné AI: Přenesení principů do praxe od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharmy +- V úsilí o odpovědnou AI: Převádění principů do praxe od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharma -[![Responsible AI Toolbox: Open-source rámec pro budování odpovědné AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Open-source rámec pro budování odpovědné AI") +[![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") -> 🎥 Klikněte na obrázek výše pro video: RAI Toolbox: Open-source rámec pro budování odpovědné AI od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharmy +> 🎥 Klikněte na obrázek výše pro video: RAI Toolbox: Open source rámec pro vytváření odpovědné AI od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharma -Také si přečtěte: +Také si přečtěte: -- Microsoftův RAI zdrojový centrum: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Centrum zdrojů pro odpovědnou AI Microsoftu: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoftova výzkumná skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Výzkumná skupina FATE Microsoftu: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Toolbox: - [GitHub repozitář Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) Přečtěte si o nástrojích Azure Machine Learning pro zajištění spravedlnosti: -- [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) ## Úkol @@ -140,5 +161,7 @@ Přečtěte si o nástrojích Azure Machine Learning pro zajištění spravedlno --- -**Prohlášení**: -Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file + +**Prohlášení o omezení odpovědnosti**: +Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu. + \ No newline at end of file diff --git a/translations/cs/2-Regression/1-Tools/README.md b/translations/cs/2-Regression/1-Tools/README.md index 63e02081a..7b234991a 100644 --- a/translations/cs/2-Regression/1-Tools/README.md +++ b/translations/cs/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# Začínáme s Pythonem a Scikit-learn pro regresní modely +# Začněte s Pythonem a Scikit-learn pro regresní modely -![Shrnutí regresí ve sketchnote](../../../../sketchnotes/ml-regression.png) +![Shrnutí regresí ve sketchnote](../../../../translated_images/cs/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote od [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ml/) +## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) > ### [Tato lekce je dostupná v R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Úvod -V těchto čtyřech lekcích se naučíte, jak vytvářet regresní modely. Brzy si vysvětlíme, k čemu slouží. Ale než začnete, ujistěte se, že máte správné nástroje pro zahájení procesu! +V těchto čtyřech lekcích objevíte, jak vytvářet regresní modely. Brzy si vysvětlíme, k čemu slouží. Než však začnete, ujistěte se, že máte správné nástroje připravené ke startu! -V této lekci se naučíte: +V této lekci se naučíte, jak: -- Nastavit váš počítač pro úlohy strojového učení. -- Pracovat s Jupyter notebooky. +- Nakonfigurovat váš počítač pro místní úlohy strojového učení. +- Pracovat s Jupyter Notebooky. - Používat Scikit-learn, včetně instalace. -- Prozkoumat lineární regresi prostřednictvím praktického cvičení. +- Prozkoumat lineární regresi pomocí praktického cvičení. ## Instalace a konfigurace -[![ML pro začátečníky - Nastavte si nástroje pro vytváření modelů strojového učení](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pro začátečníky - Nastavte si nástroje pro vytváření modelů strojového učení") +[![ML pro začátečníky - Připravte své nástroje pro tvorbu modelů strojového učení](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pro začátečníky - Připravte své nástroje pro tvorbu modelů strojového učení") -> 🎥 Klikněte na obrázek výše pro krátké video o konfiguraci vašeho počítače pro ML. +> 🎥 Klikněte na obrázek výše pro krátké video, ve kterém se naučíte, jak konfigurovat váš počítač pro ML. -1. **Nainstalujte Python**. Ujistěte se, že máte na svém počítači nainstalovaný [Python](https://www.python.org/downloads/). Python budete používat pro mnoho úloh v oblasti datové vědy a strojového učení. Většina počítačových systémů již obsahuje instalaci Pythonu. K dispozici jsou také užitečné [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), které usnadní nastavení pro některé uživatele. +1. **Nainstalujte Python**. Ujistěte se, že máte na počítači nainstalovaný [Python](https://www.python.org/downloads/). Python budete používat pro mnoho úloh datové vědy a strojového učení. Většina počítačových systémů již obsahuje instalaci Pythonu. Existují i užitečné [balíčky pro kódování v Pythonu](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), které některým uživatelům usnadní nastavení. - Některé použití Pythonu však vyžaduje jednu verzi softwaru, zatímco jiné vyžaduje jinou verzi. Z tohoto důvodu je užitečné pracovat v [virtuálním prostředí](https://docs.python.org/3/library/venv.html). + Některé použití Pythonu však vyžadují jednu verzi softwaru, zatímco jiné vyžadují verzi jinou. Proto je užitečné pracovat uvnitř [virtuálního prostředí](https://docs.python.org/3/library/venv.html). -2. **Nainstalujte Visual Studio Code**. Ujistěte se, že máte na svém počítači nainstalovaný Visual Studio Code. Postupujte podle těchto pokynů pro [instalaci Visual Studio Code](https://code.visualstudio.com/) pro základní instalaci. V tomto kurzu budete používat Python ve Visual Studio Code, takže byste si mohli osvěžit, jak [konfigurovat Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pro vývoj v Pythonu. +2. **Nainstalujte Visual Studio Code**. Ujistěte se, že máte na počítači nainstalovaný Visual Studio Code. Postupujte podle těchto instrukcí k [instalaci Visual Studio Code](https://code.visualstudio.com/) pro základní instalaci. V tomto kurzu budete používat Python ve Visual Studio Code, takže možná budete chtít osvěžit, jak [nastavit Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pro vývoj v Pythonu. - > Získejte jistotu v Pythonu prostřednictvím této sbírky [modulů Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Získejte jistotu v Pythonu tím, že projdete tuto sbírku [učebních modulů](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > > [![Nastavení Pythonu ve Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Nastavení Pythonu ve Visual Studio Code") > > 🎥 Klikněte na obrázek výše pro video: používání Pythonu ve VS Code. -3. **Nainstalujte Scikit-learn** podle [těchto pokynů](https://scikit-learn.org/stable/install.html). Protože je potřeba zajistit, že používáte Python 3, doporučuje se použít virtuální prostředí. Pokud instalujete tuto knihovnu na Mac s procesorem M1, na stránce výše jsou speciální pokyny. +3. **Nainstalujte Scikit-learn** podle [těchto instrukcí](https://scikit-learn.org/stable/install.html). Protože je potřeba používat Python 3, doporučuje se použít virtuální prostředí. Vezměte na vědomí, že pokud knihovnu instalujete na M1 Macu, jsou na výše uvedené stránce speciální instrukce. -4. **Nainstalujte Jupyter Notebook**. Budete potřebovat [nainstalovat balíček Jupyter](https://pypi.org/project/jupyter/). +1. **Nainstalujte Jupyter Notebook**. Budete potřebovat [nainstalovat balíček Jupyter](https://pypi.org/project/jupyter/). ## Vaše prostředí pro tvorbu ML -Budete používat **notebooky** k vývoji vašeho Python kódu a vytváření modelů strojového učení. Tento typ souboru je běžným nástrojem pro datové vědce a lze jej identifikovat podle přípony `.ipynb`. +Budete používat **notebooky** k vývoji vašeho Python kódu a tvorbě modelů strojového učení. Tento typ souboru je běžným nástrojem datových vědců a poznáte je podle přípony `.ipynb`. -Notebooky jsou interaktivní prostředí, které umožňuje vývojáři nejen kódovat, ale také přidávat poznámky a psát dokumentaci kolem kódu, což je velmi užitečné pro experimentální nebo výzkumné projekty. +Notebooky jsou interaktivní prostředí, která umožňují vývojáři jak kódovat, tak přidávat poznámky a psát dokumentaci kolem kódu, což je velmi užitečné pro experimentální nebo výzkumné projekty. -[![ML pro začátečníky - Nastavení Jupyter Notebooků pro začátek práce s regresními modely](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pro začátečníky - Nastavení Jupyter Notebooků pro začátek práce s regresními modely") +[![ML pro začátečníky - Nastavte Jupyter Notebooky pro začátek tvorby regresních modelů](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pro začátečníky - Nastavte Jupyter Notebooky pro začátek tvorby regresních modelů") -> 🎥 Klikněte na obrázek výše pro krátké video o tomto cvičení. +> 🎥 Klikněte na obrázek výše pro krátké video pracovní cvičení. ### Cvičení - práce s notebookem -V této složce najdete soubor _notebook.ipynb_. +V této složce naleznete soubor _notebook.ipynb_. 1. Otevřete _notebook.ipynb_ ve Visual Studio Code. - Spustí se Jupyter server s Pythonem 3+. Najdete oblasti notebooku, které lze `spustit`, tedy části kódu. Můžete spustit blok kódu výběrem ikony, která vypadá jako tlačítko přehrávání. + Spustí se Jupyter server s Pythonem 3+. V notebooku najdete části, které mohou být `spuštěny`, kusy kódu. Blok kódu můžete spustit výběrem ikony vypadající jako tlačítko přehrávání (play). -2. Vyberte ikonu `md` a přidejte trochu markdownu, například následující text **# Vítejte ve vašem notebooku**. +1. Vyberte ikonu `md` a přidejte trochu markdownu s následujícím textem **# Vítejte ve vašem notebooku**. Poté přidejte nějaký Python kód. -3. Napište **print('hello notebook')** do bloku kódu. -4. Vyberte šipku pro spuštění kódu. +1. Napište **print('hello notebook')** ve bloku kódu. +1. Klikněte na šipku pro spuštění kódu. - Měli byste vidět vytištěný výstup: + Měli byste vidět vytištěné prohlášení: ```output hello notebook ``` -![VS Code s otevřeným notebookem](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code s otevřeným notebookem](../../../../translated_images/cs/notebook.4a3ee31f396b8832.webp) -Můžete prokládat váš kód komentáři, abyste si sami dokumentovali notebook. +Můžete prokládat svůj kód komentáři, aby si notebook sám dokumentoval. -✅ Zamyslete se na chvíli nad tím, jak se pracovní prostředí webového vývojáře liší od prostředí datového vědce. +✅ Zamyslete se na chvíli, jak odlišné je pracovní prostředí webového vývojáře oproti datovému vědci. -## Práce se Scikit-learn +## Spuštění se Scikit-learn -Nyní, když máte Python nastavený ve vašem lokálním prostředí a jste si jisti prací s Jupyter notebooky, pojďme se stejně tak seznámit se Scikit-learn (vyslovujte `sci` jako `science`). Scikit-learn poskytuje [rozsáhlé API](https://scikit-learn.org/stable/modules/classes.html#api-ref), které vám pomůže provádět úlohy strojového učení. +Nyní když máte Python nastavený ve vašem lokálním prostředí a jste si jistí v Jupyter Notebookech, pojďme si přivyknout i na Scikit-learn (vyslovujte `sci` jako `science`). Scikit-learn poskytuje [rozsáhlé API](https://scikit-learn.org/stable/modules/classes.html#api-ref), které vám pomůže provádět úlohy ML. -Podle jejich [webové stránky](https://scikit-learn.org/stable/getting_started.html) je "Scikit-learn open source knihovna strojového učení, která podporuje řízené a neřízené učení. Poskytuje také různé nástroje pro přizpůsobení modelů, předzpracování dat, výběr modelů a jejich hodnocení, a mnoho dalších užitečných funkcí." +Podle jejich [webu](https://scikit-learn.org/stable/getting_started.html) "Scikit-learn je open source knihovna strojového učení, která podporuje učení s učitelem i bez učitele. Poskytuje také různé nástroje pro fitování modelů, předzpracování dat, výběr modelů a hodnocení, a mnoho dalších utilit." -V tomto kurzu budete používat Scikit-learn a další nástroje k vytváření modelů strojového učení pro provádění úloh, které nazýváme 'tradiční strojové učení'. Záměrně jsme se vyhnuli neuronovým sítím a hlubokému učení, protože ty jsou lépe pokryty v našem připravovaném kurzu 'AI pro začátečníky'. +V tomto kurzu budete používat Scikit-learn a další nástroje k vytváření modelů strojového učení, které budou plnit tzv. 'tradiční úlohy strojového učení'. Záměrně jsme vynechali neuronové sítě a hluboké učení, které budou pokryty v našem nadcházejícím kurzu 'AI pro začátečníky'. -Scikit-learn usnadňuje vytváření modelů a jejich hodnocení pro použití. Primárně se zaměřuje na práci s číselnými daty a obsahuje několik připravených datasetů pro použití jako učební nástroje. Obsahuje také předem připravené modely, které si studenti mohou vyzkoušet. Pojďme prozkoumat proces načítání předbalených dat a použití vestavěného odhadu pro první ML model se Scikit-learn s některými základními daty. +Scikit-learn výrazně zjednodušuje vytváření modelů a jejich hodnocení pro použití. Zaměřuje se především na práci s číselnými daty a obsahuje několik připravených datasetů, které můžete užít jako učební pomůcky. Zahrnuje také předem vytvořené modely pro studenty k vyzkoušení. Nejprve si pojďme prohlédnout proces načtení předpřipravených dat a použití vestavěného odhadce — prvního ML modelu se Scikit-learn s některými základními daty. ## Cvičení - váš první notebook se Scikit-learn > Tento tutoriál byl inspirován [příkladem lineární regrese](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na webu Scikit-learn. + [![ML pro začátečníky - Váš první projekt lineární regrese v Pythonu](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML pro začátečníky - Váš první projekt lineární regrese v Pythonu") -> 🎥 Klikněte na obrázek výše pro krátké video o tomto cvičení. +> 🎥 Klikněte na obrázek výše pro krátké video s průchodem tímto cvičením. -V souboru _notebook.ipynb_ přidruženém k této lekci vymažte všechny buňky stisknutím ikony 'koše'. +V souboru _notebook.ipynb_ přidruženém k této lekci vymažte všechny buňky stisknutím ikony „koš“. -V této části budete pracovat s malým datasetem o diabetu, který je vestavěný ve Scikit-learn pro učební účely. Představte si, že chcete otestovat léčbu pro diabetické pacienty. Modely strojového učení vám mohou pomoci určit, kteří pacienti by na léčbu reagovali lépe, na základě kombinací proměnných. I velmi základní regresní model, pokud je vizualizován, může ukázat informace o proměnných, které by vám pomohly organizovat vaše teoretické klinické studie. +V této části budete pracovat s malým datasetem o diabetu, který je součástí Scikit-learn pro účely výuky. Představte si, že chcete testovat léčbu pro pacienty s diabetem. Modely strojového učení vám mohou pomoci určit, kteří pacienti by na léčbu reagovali lépe na základě kombinací proměnných. Dokonce i velmi základní regresní model, pokud ho vizualizujete, může ukázat informace o proměnných, které vám pomohou uspořádat vaše teoretické klinické studie. -✅ Existuje mnoho typů regresních metod a výběr závisí na otázce, kterou chcete zodpovědět. Pokud chcete předpovědět pravděpodobnou výšku osoby určitého věku, použili byste lineární regresi, protože hledáte **číselnou hodnotu**. Pokud vás zajímá, zda by určitý typ kuchyně měl být považován za veganský nebo ne, hledáte **kategorické přiřazení**, takže byste použili logistickou regresi. Později se dozvíte více o logistické regresi. Zamyslete se nad některými otázkami, které můžete klást datům, a která z těchto metod by byla vhodnější. +✅ Existuje mnoho typů regresních metod a kterou zvolíte, závisí na odpovědi, kterou hledáte. Pokud chcete předpovědět pravděpodobnou výšku osoby určitého věku, použijete lineární regresi, protože hledáte **číselnou hodnotu**. Pokud vás zajímá, zda by určitý typ kuchyně měl být považován za veganský nebo ne, hledáte **přiřazení do kategorie**, takže byste použili logistickou regresi. O logistické regresi se naučíte později. Zamyslete se trochu nad otázkami, které můžete datům položit, a která z těchto metod by byla vhodnější. -Pojďme začít s tímto úkolem. +Pojďme na to. ### Import knihoven -Pro tento úkol importujeme některé knihovny: +Pro tento úkol naimportujeme některé knihovny: -- **matplotlib**. Je to užitečný [nástroj pro grafy](https://matplotlib.org/) a použijeme ho k vytvoření čárového grafu. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je užitečná knihovna pro práci s číselnými daty v Pythonu. -- **sklearn**. Toto je [knihovna Scikit-learn](https://scikit-learn.org/stable/user_guide.html). +- **matplotlib**. Je to užitečný [nástroj pro grafy](https://matplotlib.org/) a použijeme jej k vytvoření čárového grafu. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je užitečná knihovna pro práci s numerickými daty v Pythonu. +- **sklearn**. To je [knihovna Scikit-learn](https://scikit-learn.org/stable/user_guide.html). -Importujte některé knihovny, které vám pomohou s úkoly. +Naimportujte knihovny pro podporu vašich úloh. -1. Přidejte importy zadáním následujícího kódu: +1. Přidejte importy tím, že napíšete následující kód: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Importujte některé knihovny, které vám pomohou s úkoly. from sklearn import datasets, linear_model, model_selection ``` - Výše importujete `matplotlib`, `numpy` a importujete `datasets`, `linear_model` a `model_selection` z `sklearn`. `model_selection` se používá pro rozdělení dat na trénovací a testovací sady. + Výše importujete `matplotlib`, `numpy` a načítáte `datasets`, `linear_model` a `model_selection` ze `sklearn`. `model_selection` se používá pro rozdělení dat na tréninková a testovací data. -### Dataset o diabetu +### Dataset diabetu -Vestavěný [dataset o diabetu](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) obsahuje 442 vzorků dat o diabetu s 10 proměnnými, mezi které patří: +V vestavěném [diabetickém datasetu](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) je 442 vzorků dat o diabetu, s 10 proměnnými vlastností, z nichž některé zahrnují: -- age: věk v letech +- věk: věk v letech - bmi: index tělesné hmotnosti - bp: průměrný krevní tlak -- s1 tc: T-lymfocyty (typ bílých krvinek) +- s1 tc: T-buňky (typ bílých krvinek) -✅ Tento dataset zahrnuje koncept 'pohlaví' jako důležitou proměnnou pro výzkum diabetu. Mnoho lékařských datasetů zahrnuje tento typ binární klasifikace. Zamyslete se nad tím, jak takové kategorizace mohou vyloučit určité části populace z léčby. +✅ Tento dataset zahrnuje pojem 'pohlaví' jako důležitou proměnnou vlastnost pro výzkum diabetu. Mnoho lékařských datasetů obsahuje tento typ binární klasifikace. Zamyslete se nad tím, jak takové kategorizace mohou vyloučit určité části populace z léčby. -Nyní načtěte data X a y. +Teď načtěte data X a y. -> 🎓 Pamatujte, že se jedná o řízené učení, a potřebujeme pojmenovaný cíl 'y'. +> 🎓 Pamatujte, toto je učení s učitelem a potřebujeme pojmenovaný cíl 'y'. -V nové buňce kódu načtěte dataset o diabetu pomocí `load_diabetes()`. Vstup `return_X_y=True` signalizuje, že `X` bude datová matice a `y` bude regresní cíl. +V nové buňce kódu načtěte dataset diabetu zavoláním `load_diabetes()`. Vstup `return_X_y=True` signalizuje, že `X` bude datová matice a `y` bude cílem regrese. -1. Přidejte příkazy pro zobrazení tvaru datové matice a jejího prvního prvku: +1. Přidejte několik příkazů print pro zobrazení tvaru datové matice a jejího prvního prvku: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ V nové buňce kódu načtěte dataset o diabetu pomocí `load_diabetes()`. Vstu print(X[0]) ``` - To, co dostáváte jako odpověď, je tuple. To, co děláte, je přiřazení dvou prvních hodnot tuple k `X` a `y`. Více se dozvíte [o tuple](https://wikipedia.org/wiki/Tuple). + To, co dostáváte zpět jako odpověď, je n-tice. To, co děláte, je přiřazení dvou prvních hodnot n-tice do `X` a `y`. Více se dozvíte [o n-ticích](https://wikipedia.org/wiki/Tuple). - Můžete vidět, že tato data mají 442 položek uspořádaných v polích o 10 prvcích: + Vidíte, že tato data mají 442 položek uspořádaných v polích o 10 prvcích: ```text (442, 10) @@ -159,39 +160,39 @@ V nové buňce kódu načtěte dataset o diabetu pomocí `load_diabetes()`. Vstu -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Zamyslete se nad vztahem mezi daty a regresním cílem. Lineární regrese předpovídá vztahy mezi proměnnou X a cílovou proměnnou y. Můžete najít [cíl](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pro dataset o diabetu v dokumentaci? Co tento dataset demonstruje, vzhledem k cíli? + ✅ Zamyslete se nad vztahem mezi daty a cílem regrese. Lineární regrese předpovídá vztahy mezi vlastností X a cílovou proměnnou y. Dokážete najít [cíl](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pro dataset diabetu v dokumentaci? Co tento dataset demonstruje vzhledem k tomuto cíli? -2. Dále vyberte část tohoto datasetu pro vykreslení výběrem 3. sloupce datasetu. Můžete to udělat pomocí operátoru `:` pro výběr všech řádků a poté výběrem 3. sloupce pomocí indexu (2). Data můžete také přetvořit na 2D pole - jak je požadováno pro vykreslení - pomocí `reshape(n_rows, n_columns)`. Pokud je jeden z parametrů -1, odpovídající rozměr se vypočítá automaticky. +2. Dále vyberte část tohoto datasetu k vykreslení tím, že vyberete třetí sloupec datasetu. Můžete to udělat použitím operátoru `:` pro výběr všech řádků a pak výběrem třetího sloupce pomocí indexu (2). Data můžete také přetvarovat na 2D pole - jak je potřeba pro vykreslování - použitím `reshape(n_rows, n_columns)`. Pokud je jeden z parametrů -1, odpovídající rozměr se dopočítá automaticky. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ Kdykoli si data vytiskněte, abyste zkontrolovali jejich tvar. + ✅ Kdykoliv vytiskněte data, abyste zkontrolovali jejich tvar. -3. Nyní, když máte data připravená k vykreslení, můžete zjistit, zda stroj dokáže určit logické rozdělení mezi čísly v tomto datasetu. K tomu je potřeba rozdělit data (X) i cíl (y) na testovací a trénovací sady. Scikit-learn má jednoduchý způsob, jak to udělat; můžete rozdělit vaše testovací data na daném bodě. +3. Nyní když máte data připravená k vykreslení, můžete zjistit, zda vám stroj pomůže určit logický rozdělení mezi čísly v tomto datasetu. K tomu je potřeba rozdělit data (X) i cíl (y) na testovací a tréninkové sady. Scikit-learn má snadný způsob, jak toho dosáhnout; můžete rozdělit svá testovací data v daném bodě. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Nyní jste připraveni trénovat váš model! Načtěte model lineární regrese a trénujte ho s vašimi trénovacími sadami X a y pomocí `model.fit()`: +4. Nyní jste připraveni trénovat svůj model! Načtěte lineární regresní model a trénujte ho s vašimi tréninkovými sadami X a y pomocí `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` je funkce, kterou uvidíte v mnoha knihovnách ML, jako je TensorFlow. + ✅ `model.fit()` je funkce, kterou uvidíte v mnoha ML knihovnách jako TensorFlow -5. Poté vytvořte predikci pomocí testovacích dat pomocí funkce `predict()`. To bude použito k nakreslení čáry mezi skupinami dat. +5. Poté vytvořte predikci pomocí testovacích dat funkcí `predict()`. To použijete k vykreslení čáry mezi skupinami dat ```python y_pred = model.predict(X_test) ``` -6. Nyní je čas zobrazit data v grafu. Matplotlib je velmi užitečný nástroj pro tento úkol. Vytvořte scatterplot všech testovacích dat X a y a použijte predikci k nakreslení čáry na nejvhodnějším místě mezi skupinami dat modelu. +6. Teď je čas zobrazit data v grafu. Matplotlib je pro tento úkol velmi užitečný nástroj. Vytvořte rozptylový graf všech testovacích dat X a y a použijte predikci k vykreslení čáry na nejvhodnějším místě mezi skupinami dat modelu. ```python plt.scatter(X_test, y_test, color='black') @@ -202,28 +203,32 @@ V nové buňce kódu načtěte dataset o diabetu pomocí `load_diabetes()`. Vstu plt.show() ``` - ![scatterplot zobrazující datové body kolem diabetu](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Zamyslete se nad tím, co se zde děje. Přímka prochází mnoha malými body dat, ale co přesně dělá? Vidíte, jak byste měli být schopni použít tuto přímku k předpovědi, kde by měl nový, dosud neviděný datový bod zapadnout ve vztahu k ose y grafu? Zkuste slovy popsat praktické využití tohoto modelu. + ![rozptylový graf ukazující datové body o diabetu](../../../../translated_images/cs/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ Zamyslete se trochu nad tím, co se zde odehrává. Přímka prochází mnoha malými datovými body, ale co přesně dělá? Vidíte, jak byste měli být schopni tuto přímku použít k předpovědi, kde by se nový, neviděný datový bod měl ve vztahu k ose y grafu umístit? Zkuste slovy vyjádřit praktické využití tohoto modelu. -Gratulujeme, vytvořili jste svůj první model lineární regrese, provedli předpověď a zobrazili ji v grafu! +Gratulujeme, vytvořili jste svůj první model lineární regrese, vytvořili s ním předpověď a zobrazili ji v grafu! --- ## 🚀Výzva -Vykreslete jinou proměnnou z této datové sady. Tip: upravte tento řádek: `X = X[:,2]`. S ohledem na cíl této datové sady, co můžete zjistit o progresi diabetu jako nemoci? +Vykreslete jinou proměnnou z této datové sady. Tip: upravte tento řádek: `X = X[:,2]`. Vzhledem k cíli této sady dat, co dokážete zjistit o průběhu diabetu jako nemoci? ## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/) -## Přehled & Samostudium +## Přehled a samostudium -V tomto tutoriálu jste pracovali s jednoduchou lineární regresí, nikoli s univariační nebo vícenásobnou lineární regresí. Přečtěte si něco o rozdílech mezi těmito metodami nebo se podívejte na [toto video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +V tomto tutoriálu jste pracovali s jednoduchou lineární regresí, nikoli s univariátní nebo multivariátní lineární regresí. Přečtěte si něco o rozdílech mezi těmito metodami, nebo se podívejte na [toto video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Přečtěte si více o konceptu regrese a zamyslete se nad tím, jaké typy otázek lze touto technikou zodpovědět. Absolvujte [tento tutoriál](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), abyste si prohloubili své znalosti. +Přečtěte si více o konceptu regrese a zamyslete se nad tím, na jaké otázky může tato technika odpovědět. Absolvujte tento [návod](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), aby jste prohloubili své porozumění. ## Zadání -[Odlišná datová sada](assignment.md) +[Jiná datová sada](assignment.md) --- -**Prohlášení**: -Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file + +**Prohlášení o omezení odpovědnosti**: +Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu. + \ No newline at end of file diff --git a/translations/cs/2-Regression/2-Data/README.md b/translations/cs/2-Regression/2-Data/README.md index 6b3b692d4..e22a49656 100644 --- a/translations/cs/2-Regression/2-Data/README.md +++ b/translations/cs/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ # Vytvoření regresního modelu pomocí Scikit-learn: příprava a vizualizace dat -![Infografika vizualizace dat](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografika vizualizace dat](../../../../translated_images/cs/data-visualization.54e56dded7c1a804.webp) Infografika od [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ml/) -> ### [Tato lekce je dostupná v R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [Tato lekce je dostupná i v R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Úvod -Nyní, když máte k dispozici nástroje potřebné k zahájení práce na vytváření modelů strojového učení pomocí Scikit-learn, jste připraveni začít klást otázky svým datům. Při práci s daty a aplikaci řešení ML je velmi důležité vědět, jak položit správnou otázku, abyste mohli plně využít potenciál svého datasetu. +Nyní, když máte připravené nástroje potřebné k začátku tvorby strojového učení s Scikit-learn, jste připraveni začít pokládat otázky svým datům. Při práci s daty a aplikaci ML řešení je velmi důležité vědět, jak správně otázky klást, aby bylo možné správně odemknout potenciály vaší datové sady. V této lekci se naučíte: -- Jak připravit data pro vytváření modelů. +- Jak připravit svá data pro tvorbu modelu. - Jak používat Matplotlib pro vizualizaci dat. +- Jak používat Seaborn pro expresivnější vizualizaci dat. -## Kladení správných otázek svým datům +## Klást správné otázky svým datům -Otázka, na kterou potřebujete odpověď, určí, jaký typ algoritmů ML budete používat. Kvalita odpovědi, kterou získáte, bude silně záviset na povaze vašich dat. +Otázka, na kterou potřebujete znát odpověď, určí, jaký typ ML algoritmů budete využívat. A kvalita odpovědi, kterou obdržíte, bude silně záviset na povaze vašich dat. -Podívejte se na [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) poskytnutá pro tuto lekci. Tento soubor .csv můžete otevřít ve VS Code. Rychlý pohled okamžitě ukáže, že jsou zde prázdné hodnoty a směs textových a číselných dat. Je zde také zvláštní sloupec nazvaný 'Package', kde jsou data směsí hodnot jako 'sacks', 'bins' a dalších. Data jsou vlastně trochu chaotická. +Podívejte se na [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) poskytnutá pro tuto lekci. Tento .csv soubor si můžete otevřít ve VS Code. Rychlý pohled okamžitě ukáže, že tam jsou prázdná místa a mix textových a číselných dat. Také je tam zvláštní sloupec s názvem 'Package', kde jsou data smíšená mezi 'sacky', 'koše' a další hodnoty. Data jsou vlastně trochu nepořádek. -[![ML pro začátečníky - Jak analyzovat a čistit dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pro začátečníky - Jak analyzovat a čistit dataset") +[![ML pro začátečníky - Jak analyzovat a čistit datovou sadu](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pro začátečníky - Jak analyzovat a čistit datovou sadu") > 🎥 Klikněte na obrázek výše pro krátké video o přípravě dat pro tuto lekci. -Ve skutečnosti není příliš běžné dostat dataset, který je zcela připraven k použití pro vytvoření modelu ML bez jakýchkoli úprav. V této lekci se naučíte, jak připravit surový dataset pomocí standardních knihoven Pythonu. Naučíte se také různé techniky vizualizace dat. +Ve skutečnosti není moc běžné dostat datovou sadu, která je zcela připravená k okamžitému použití pro vytvoření ML modelu. V této lekci se naučíte, jak připravit surová data pomocí standardních knihoven Pythonu. Také poznáte různé techniky vizualizace dat. ## Případová studie: 'trh s dýněmi' -V této složce najdete soubor .csv v kořenové složce `data` nazvaný [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), který obsahuje 1757 řádků dat o trhu s dýněmi, rozdělených do skupin podle měst. Jedná se o surová data získaná z [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), která distribuuje Ministerstvo zemědělství Spojených států. +V této složce najdete .csv soubor v hlavní složce `data` nazvaný [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), který obsahuje 1757 řádků dat o trhu s dýněmi, rozdělených do skupin podle měst. Jedná se o surová data extrahovaná z [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), distribuovaná Ministerstvem zemědělství USA. ### Příprava dat -Tato data jsou veřejně dostupná. Mohou být stažena v mnoha samostatných souborech, podle města, z webu USDA. Abychom se vyhnuli příliš mnoha samostatným souborům, spojili jsme všechna data měst do jedné tabulky, takže jsme data již _částečně připravili_. Nyní se podívejme na data podrobněji. +Tato data jsou veřejně dostupná. Lze je stáhnout v mnoha oddělených souborech podle jednotlivých měst ze stránek USDA. Abychom se vyhnuli příliš mnoha samostatným souborům, spojili jsme všechna data ze měst do jedné tabulky, takže jsme data už trochu _připravili_. Nyní se podívejme podrobněji na data. ### Data o dýních - první závěry -Co si všimnete na těchto datech? Už jste viděli, že je zde směs textů, čísel, prázdných hodnot a zvláštních hodnot, které je třeba pochopit. +Co si o těchto datech všimnete? Už jste viděli, že tam jsou smíšené texty, čísla, prázdná místa a zvláštní hodnoty, které je potřeba pochopit. -Jakou otázku můžete položit těmto datům pomocí regresní techniky? Co třeba "Předpovědět cenu dýně na prodej během daného měsíce". Při pohledu na data je třeba provést určité změny, aby se vytvořila datová struktura potřebná pro tento úkol. +Jakou otázku můžete položit těmto datům využitím regresní techniky? Co třeba "Předpovědět cenu dýně na prodej během určitého měsíce". Když se znovu podíváte na data, je potřeba provést některé změny, abyste vytvořili datovou strukturu potřebnou pro tento úkol. +## Cvičení - analyzujte data o dýních -## Cvičení - analýza dat o dýních - -Použijme [Pandas](https://pandas.pydata.org/) (název znamená `Python Data Analysis`), nástroj velmi užitečný pro tvarování dat, k analýze a přípravě těchto dat o dýních. +Použijme [Pandas](https://pandas.pydata.org/), (název znamená `Python Data Analysis`) nástroj velmi užitečný pro tvarování dat, pro analýzu a přípravu těchto dat o dýních. ### Nejprve zkontrolujte chybějící data -Nejprve budete muset podniknout kroky k ověření chybějících dat: +Nejprve bude potřeba prověřit případná chybějící data: -1. Převést data na formát měsíce (jedná se o americká data, takže formát je `MM/DD/YYYY`). -2. Extrahovat měsíc do nového sloupce. +1. Převeďte data na formát měsíce (jedná se o americká data, takže formát je `MM/DD/YYYY`). +2. Extrahujte měsíc do nového sloupce. -Otevřete soubor _notebook.ipynb_ ve Visual Studio Code a importujte tabulku do nového dataframe Pandas. +Otevřete soubor _notebook.ipynb_ ve Visual Studio Code a naimportujte tabulku do nového Pandas dataframe. -1. Použijte funkci `head()`, abyste zobrazili prvních pět řádků. +1. Použijte funkci `head()` k zobrazení prvních pěti řádků. ```python import pandas as pd @@ -64,28 +64,28 @@ Otevřete soubor _notebook.ipynb_ ve Visual Studio Code a importujte tabulku do pumpkins.head() ``` - ✅ Jakou funkci byste použili k zobrazení posledních pěti řádků? + ✅ Jakou funkci použijete pro zobrazení posledních pěti řádků? -1. Zkontrolujte, zda v aktuálním dataframe chybí data: +1. Zkontrolujte, zda v aktuálním dataframe nejsou chybějící data: ```python pumpkins.isnull().sum() ``` - Chybí data, ale možná to nebude mít vliv na daný úkol. + Nějaká chybějící data jsou, ale možná to pro daný úkol nebude vadit. -1. Aby byl váš dataframe snazší na práci, vyberte pouze sloupce, které potřebujete, pomocí funkce `loc`, která extrahuje z původního dataframe skupinu řádků (předaná jako první parametr) a sloupců (předaná jako druhý parametr). Výraz `:` v níže uvedeném případě znamená "všechny řádky". +1. Aby bylo snazší s dataframe pracovat, vyberte si jen sloupce, které potřebujete, použitím funkce `loc`, která z původního dataframe vybere skupinu řádků (jako první parametr) a sloupců (jako druhý parametr). Výraz `:` znamená "všechny řádky". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### Dále určete průměrnou cenu dýně +### Druhé, určete průměrnou cenu dýně -Přemýšlejte o tom, jak určit průměrnou cenu dýně v daném měsíci. Jaké sloupce byste si vybrali pro tento úkol? Nápověda: budete potřebovat 3 sloupce. +Přemýšlejte, jak zjistit průměrnou cenu dýně za daný měsíc. Jaké sloupce byste pro tento úkol vybrali? Tip: potřebujete tři sloupce. -Řešení: vezměte průměr sloupců `Low Price` a `High Price`, abyste naplnili nový sloupec Price, a převeďte sloupec Date tak, aby zobrazoval pouze měsíc. Naštěstí podle výše uvedené kontroly nechybí žádná data pro datumy nebo ceny. +Řešení: vezměte průměr sloupců `Low Price` a `High Price` pro vyplnění nového sloupce Cena, a převeďte sloupec Date tak, aby ukazoval jen měsíc. Naštěstí podle předchozí kontroly chybí data pro datum nebo ceny. 1. Pro výpočet průměru přidejte následující kód: @@ -96,37 +96,37 @@ Přemýšlejte o tom, jak určit průměrnou cenu dýně v daném měsíci. Jak ``` - ✅ Neváhejte si vytisknout jakákoli data, která chcete zkontrolovat, pomocí `print(month)`. + ✅ Klidně si vytiskněte jakákoliv data pomocí `print(month)`, chcete-li je zkontrolovat. -2. Nyní zkopírujte převedená data do nového dataframe Pandas: +2. Nyní zkopírujte převedená data do nového Pandas dataframe: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Pokud si vytisknete svůj dataframe, uvidíte čistý, upravený dataset, na kterém můžete vytvořit nový regresní model. + Vytištěný dataframe vám ukáže čistou a přehlednou datovou sadu, na které můžete stavět svůj nový regresní model. -### Ale počkejte! Něco je tu zvláštní +### Ale počkejte! Něco tu není v pořádku -Pokud se podíváte na sloupec `Package`, dýně se prodávají v mnoha různých konfiguracích. Některé se prodávají v mírách '1 1/9 bushel', některé v '1/2 bushel', některé na kus, některé na libru a některé ve velkých krabicích s různými šířkami. +Pokud se podíváte na sloupec `Package`, dýně jsou prodávány v mnoha různých konfiguracích. Některé jsou prodávány v měrách '1 1/9 koše', jiné v '1/2 koše', některé po kusech, jiné za libru, a některé ve velkých krabicích různé šířky. -> Dýně se zdají být velmi těžké vážit konzistentně +> Dýně se zdá být velmi obtížné vážit konzistentně -Při zkoumání původních dat je zajímavé, že vše, co má `Unit of Sale` rovné 'EACH' nebo 'PER BIN', má také typ `Package` na palec, na bin nebo 'each'. Dýně se zdají být velmi těžké vážit konzistentně, takže je filtrujme výběrem pouze dýní s řetězcem 'bushel' ve sloupci `Package`. +Při zkoumání původních dat je zajímavé, že cokoli, kde je `Unit of Sale` rovno 'EACH' nebo 'PER BIN', má také typ `Package` ve znacích palec, koš nebo 'each'. Dýně se zdá být velmi obtížné vážit konzistentně, proto je vyfiltrujme tak, že vybereme jen dýně se stringem 'bushel' ve sloupci `Package`. -1. Přidejte filtr na začátek souboru, pod počáteční import .csv: +1. Přidejte filtr na začátek souboru, pod inicializační import .csv: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Pokud nyní vytisknete data, uvidíte, že získáváte pouze asi 415 řádků dat obsahujících dýně podle bushelu. + Pokud nyní vytisknete data, můžete vidět, že se zobrazují jen asi 415 řádků obsahujících dýně podle košů. -### Ale počkejte! Je tu ještě jedna věc, kterou je třeba udělat +### Ale počkejte! Ještě je potřeba něco udělat -Všimli jste si, že množství bushelu se liší podle řádku? Musíte normalizovat ceny tak, aby ukazovaly ceny za bushel, takže proveďte nějaké výpočty pro standardizaci. +Všimli jste si, že množství koše se liší podle řádku? Je potřeba normalizovat ceny tak, aby ukazovaly cenu za koš, takže proveďte matematické úpravy pro standardizaci. -1. Přidejte tyto řádky po bloku vytvářejícím dataframe new_pumpkins: +1. Přidejte následující řádky po bloku vytvářejícím nový `new_pumpkins` dataframe: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ Všimli jste si, že množství bushelu se liší podle řádku? Musíte normali new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Podle [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) váha bushelu závisí na typu produktu, protože se jedná o objemové měření. "Bushel rajčat, například, by měl vážit 56 liber... Listy a zelenina zabírají více prostoru s menší váhou, takže bushel špenátu váží pouze 20 liber." Je to všechno docela komplikované! Nebudeme se zabývat konverzí bushelu na libry, místo toho budeme určovat cenu podle bushelu. Všechny tyto studie bushelů dýní však ukazují, jak velmi důležité je pochopit povahu vašich dat! +✅ Podle [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) závisí váha koše na typu produktu, protože jde o měření objemu. "Koš rajčat například váží přibližně 56 liber... Listy a zelenina zabírají více místa a váží méně, takže koš špenátu váží pouze 20 liber." Je to poměrně komplikované! Raději nebudeme provádět převod koše na libry, a místo toho budeme ceny uvádět za koš. Toto studium objemu košů dýní však ukazuje, jak je důležité rozumět povaze svých dat! -Nyní můžete analyzovat ceny za jednotku na základě jejich měření bushelu. Pokud si data vytisknete ještě jednou, uvidíte, jak jsou standardizována. +Nyní můžete analyzovat ceny za jednotku podle jejich měření košem. Pokud data vytisknete znovu, uvidíte, jak jsou standardizovaná. -✅ Všimli jste si, že dýně prodávané na půl bushelu jsou velmi drahé? Dokážete zjistit proč? Nápověda: malé dýně jsou mnohem dražší než velké, pravděpodobně proto, že jich je mnohem více na bushel, vzhledem k nevyužitému prostoru, který zabírá jedna velká dutá dýně na koláč. +✅ Všimli jste si, že dýně prodávané po polovině koše jsou velmi drahé? Dokážete přijít na důvod? Tip: malé dýně jsou mnohem dražší než velké, pravděpodobně proto, že jich je v koši mnohem více, vzhledem k nevyužitému prostoru zabranému jednou velkou dutou dýní na koláč. ## Strategie vizualizace -Součástí role datového vědce je demonstrovat kvalitu a povahu dat, se kterými pracuje. K tomu často vytvářejí zajímavé vizualizace, jako jsou grafy, diagramy a tabulky, které ukazují různé aspekty dat. Tímto způsobem mohou vizuálně ukázat vztahy a mezery, které by jinak bylo těžké odhalit. +Částí práce datového vědce je ukázat kvalitu a povahu dat, se kterými pracuje. Často vytváří zajímavé vizualizace, tedy grafy, diagramy a schémata, ukazující různé aspekty dat. Tímto způsobem mohou vizuálně ukázat vztahy a mezery, které by jinak byly těžko odhalitelné. -[![ML pro začátečníky - Jak vizualizovat data pomocí Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML pro začátečníky - Jak vizualizovat data pomocí Matplotlib") +[![ML pro začátečníky - Jak vizualizovat data s Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML pro začátečníky - Jak vizualizovat data s Matplotlib") -> 🎥 Klikněte na obrázek výše pro krátké video o vizualizaci dat pro tuto lekci. +> 🎥 Klikněte na obrázek výše pro krátké video o tom, jak vizualizovat data pro tuto lekci. -Vizualizace mohou také pomoci určit techniku strojového učení, která je pro data nejvhodnější. Například scatterplot, který se zdá sledovat linii, naznačuje, že data jsou dobrým kandidátem pro cvičení lineární regrese. +Vizualizace také mohou pomoci určit nejvhodnější techniku strojového učení pro daná data. Například rozptylový graf, který následuje přímku, naznačuje, že data jsou dobrým kandidátem pro úlohu lineární regrese. -Jedna knihovna pro vizualizaci dat, která dobře funguje v Jupyter notebooku, je [Matplotlib](https://matplotlib.org/) (kterou jste viděli i v předchozí lekci). +Jedna knihovna pro vizualizaci dat, která dobře funguje v Jupyter noteboocích, je [Matplotlib](https://matplotlib.org/) (kterou jste také viděli v předchozí lekci). -> Získejte více zkušeností s vizualizací dat v [těchto tutoriálech](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Získejte více zkušeností s vizualizací dat v [těchto návodech](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). ## Cvičení - experimentujte s Matplotlib -Zkuste vytvořit základní grafy pro zobrazení nového dataframe, který jste právě vytvořili. Co by ukázal základní čárový graf? +Zkuste vytvořit základní grafy pro zobrazení nového dataframe, který jste právě vytvořili. Co by základní čárový graf ukázal? -1. Importujte Matplotlib na začátek souboru, pod import Pandas: +1. Naimportujte Matplotlib na začátku souboru, pod import Pandas: ```python import matplotlib.pyplot as plt ``` -1. Znovu spusťte celý notebook, aby se aktualizoval. -1. Na konec notebooku přidejte buňku pro vykreslení dat jako box: +1. Znovu spusťte celý notebook pro jeho obnovení. +1. Na konci notebooku přidejte buňku pro vykreslení dat jako box: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Zkuste vytvořit základní grafy pro zobrazení nového dataframe, který jste plt.show() ``` - ![Scatterplot ukazující vztah mezi cenou a měsícem](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Rozptylový graf zobrazující vztah ceny k měsíci](../../../../translated_images/cs/scatterplot.b6868f44cbd2051c.webp) - Je tento graf užitečný? Překvapilo vás na něm něco? + Je to užitečný graf? Překvapí vás na něm něco? - Není příliš užitečný, protože pouze zobrazuje vaše data jako rozptyl bodů v daném měsíci. + Není příliš užitečný, protože pouze zobrazuje vaše data jako rozptyl bodů pro daný měsíc. -### Udělejte to užitečné +### Aby byl užitečný -Aby grafy zobrazovaly užitečná data, obvykle je třeba data nějak seskupit. Zkusme vytvořit graf, kde osa y ukazuje měsíce a data demonstrují rozložení dat. +Pro zobrazení užitečných dat obvykle potřebujete data nějak seskupit. Zkuste vytvořit graf, kde osa y bude zobrazovat měsíce a graf ukáže rozložení dat. -1. Přidejte buňku pro vytvoření seskupeného sloupcového grafu: +1. Přidejte buňku, která vytvoří seskupený sloupcový graf: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Sloupcový graf ukazující vztah mezi cenou a měsícem](../../../../2-Regression/2-Data/images/barchart.png) + ![Sloupcový graf zobrazující vztah ceny k měsíci](../../../../translated_images/cs/barchart.a833ea9194346d76.webp) + + Toto je užitečnější vizualizace dat! Zdá se, že nejvyšší cena dýní nastává v září a říjnu. Odpovídá to vašim očekáváním? Proč ano, nebo proč ne? + +## Cvičení - experimentujte se Seaborn + +Matplotlib je mocný, ale tvorba dokonale vypadajícího grafu může vyžadovat hodně kódu. [Seaborn](https://seaborn.pydata.org/) je knihovna postavená _nad_ Matplotlib navržená pro statistickou vizualizaci dat. Pracuje přímo s Pandas dataframe, aplikuje příjemné výchozí styly a umožňuje vytvářet informativní grafy s mnohem menším množstvím kódu. Protože Seaborn vrací objekty Matplotlib, můžete stále používat vše, co už o Matplotlib víte, k doladění výsledku. + +> Pokud ještě nemáte Seaborn nainstalovaný, nainstalujte jej pomocí `pip install seaborn`. + +1. Naimportujte Seaborn na začátku notebooku, pod ostatní importy. Obvykle se importuje jako `sns`: + + ```python + import seaborn as sns + ``` + +### Rozptylové grafy pro ukázku vztahů + +Velká část prozkoumávání dat před tvorbou modelu spočívá ve hledání _vztahů_ mezi proměnnými. [Rozptylový graf](https://cs.wikipedia.org/wiki/XY_graf) je jedním z nejlepších nástrojů pro toto: pokud body vypadají, že následují přímku, tyto dvě proměnné mohou být korelované, což je dobré znamení, že model lineární regrese by mohl fungovat. + +1. Znovu vytvořte scatterplot ceny vůči měsíci, tentokrát pomocí Seaborn funkce [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relační graf), která pracuje přímo s vašimi databázovými sloupci: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Rozptylový graf Seaborn zobrazující vztah ceny k měsíci](../../../../translated_images/cs/relplot.a03837d8f0329cec.webp) + + Všimněte si, jak předáváte _názvy sloupců_ a dataframe a Seaborn pak za vás přidá popisky os. + +2. Můžete změnit graf na čárový pomocí `kind="line"`. Seaborn dokonce vykreslí stinný pruh ukazující interval spolehlivosti kolem čáry: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Čárový graf Seaborn zobrazující vztah ceny k měsíci](../../../../translated_images/cs/lineplot.f9034ba47b1e30ee.webp) + + Tato konkrétní data jsou poměrně hlučná, takže čárový graf zde není nejjasnější volbou — ale ukazuje, jak snadno lze v Seaborn měnit typ grafu. + +### Sloupcové grafy pro zobrazení rozložení + + +Dříve jste data ručně seskupili, abyste vytvořili pruhový graf pomocí Matplotlib. Seabornova funkce [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorický graf) může seskupování a agregaci udělat za vás. Ve výchozím nastavení `kind="bar"` zobrazuje průměr každé kategorie spolu s černou čarou označující interval spolehlivosti. + +1. Vytvořte pruhový graf průměrné ceny za měsíc: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Sloupcový graf v Seabornu zobrazující rozložení cen podle měsíců](../../../../translated_images/cs/catplot.e73fc35fdf96242b.webp) + + To potvrzuje to, co jste viděli v Matplotlibu — ceny vrcholí kolem září a října — ale Seaborn také vizualizuje, jak moc se cena _liší_ v rámci jednotlivých měsíců. + +### Tepelné mapy pro zobrazení korelací + +Bodové grafy porovnávají vždy dva proměnné najednou. Když máte několik číselných sloupců, [tepelná mapa](https://en.wikipedia.org/wiki/Heat_map) vám umožňuje zobrazit sílu vztahu mezi _každým_ párem sloupců najednou. Toto je běžný způsob, jak zjistit, které prvky jsou nejvíce korelované před výběrem toho, co použít do modelu (a stejný typ grafu se později používá k zobrazení matic záměny v klasifikaci). + +1. Vytvořte korelační matici pomocí Pandas a pak ji nakreslete pomocí Seabornovy funkce [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Možnost `annot=True` vytiskne hodnoty korelace do každé buňky: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![Tepelná mapa v Seabornu zobrazující korelace mezi číselnými sloupci](../../../../translated_images/cs/heatmap.bd98dce43b404c57.webp) + + Hodnoty blízké `1` (nebo `-1`) znamenají, že sloupce jsou silně _lineárně_ korelované. Všimněte si, že `Low Price` a `High Price` jsou téměř dokonale korelované. `Month` naopak vykazuje pouze slabou lineární korelaci s cenou — ačkoli pruhový graf výše ukázal zřetelný sezonní vrchol v září a říjnu. To je důležitá lekce: korelační koeficient měří pouze _přímočaré_ vztahy, takže může přehlédnout sezónní či jiné nelineární vzory. ✅ Proč je užitečné podívat se před rozhodnutím, které sloupce použít, jak na tepelnou mapu, *tak* na grafy jako pruhový graf? + +### Matplotlib nebo Seaborn? + +Obě knihovny stojí za to znát: + +- **Matplotlib** vám dává detailní kontrolu nad každým prvkem grafu a je základem, na kterém staví téměř všechny ostatní Python knihovny pro grafiku. +- **Seaborn** poskytuje vyšší úroveň funkcí a atraktivní výchozí nastavení pro statistické grafy, pracuje přímo s datovými rámci a často je rychlejší pro průzkumnou analýzu dat. - Toto je užitečnější vizualizace dat! Zdá se, že naznačuje, že nejvyšší cena za dýně se vyskytuje v září a říjnu. Odpovídá to vašemu očekávání? Proč ano nebo ne? +Běžný pracovní postup je začít Seabornem pro rychlý průzkum dat a poté přejít do Matplotlibu, když chcete přizpůsobit detaily. --- ## 🚀Výzva -Prozkoumejte různé typy vizualizací, které Matplotlib nabízí. Které typy jsou nejvhodnější pro regresní problémy? +Prozkoumejte různé typy vizualizací, které Matplotlib a Seaborn nabízejí. Které typy jsou nejvhodnější pro regresní problémy? -## [Kvíz po lekci](https://ff-quizzes.netlify.app/en/ml/) +## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/) -## Přehled & Samostudium +## Přehled a samostudium -Podívejte se na různé způsoby vizualizace dat. Udělejte si seznam různých dostupných knihoven a poznamenejte si, které jsou nejlepší pro dané typy úkolů, například 2D vizualizace vs. 3D vizualizace. Co objevíte? +Podívejte se na mnoho způsobů, jak vizualizovat data. Vytvořte seznam dostupných knihoven a poznamenejte, které jsou nejlepší pro různé typy úkolů, například 2D vizualizace vs. 3D vizualizace. Co objevíte? -## Úkol +## Zadání [Prozkoumání vizualizace](assignment.md) --- -**Prohlášení**: -Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file + +**Prohlášení o omezení odpovědnosti**: +Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu. + \ No newline at end of file diff --git a/translations/cs/2-Regression/2-Data/solution/notebook.ipynb b/translations/cs/2-Regression/2-Data/solution/notebook.ipynb index e05c9aa53..d33cb4738 100644 --- a/translations/cs/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/cs/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Lineární regrese pro dýně - Lekce 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": [ + "## Vizualizace pomocí Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) je postavený na Matplotlibu a pracuje přímo s datovými rámci, což umožňuje rychle vytvářet atraktivní statistické grafy s minimem kódu.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Bodové grafy pro zobrazení vztahů\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": [ + "### Sloupcové grafy pro zobrazení rozdělení\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**Upozornění**: \nTento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). I když se snažíme o co největší přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za závazný zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné výklady vyplývající z použití tohoto překladu.\n" + "### Heatmapy pro zobrazení korelací\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\n**Prohlášení o omezení odpovědnosti**:\nTento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-04T07:11:18+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "cs" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/cs/8-Reinforcement/1-QLearning/README.md b/translations/cs/8-Reinforcement/1-QLearning/README.md index 431aaec9a..2976ae3d3 100644 --- a/translations/cs/8-Reinforcement/1-QLearning/README.md +++ b/translations/cs/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Úvod do posilovaného učení a Q-Learningu +# Úvod do posilovaného učení a Q-učení -![Shrnutí posilovaného učení v oblasti strojového učení ve sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Shrnutí posilování v strojovém učení ve sketchnote](../../../../translated_images/cs/ml-reinforcement.94024374d63348db.webp) > Sketchnote od [Tomomi Imura](https://www.twitter.com/girlie_mac) -Posilované učení zahrnuje tři důležité koncepty: agenta, stavy a sadu akcí pro každý stav. Prováděním akce ve specifickém stavu získává agent odměnu. Představte si opět počítačovou hru Super Mario. Vy jste Mario, nacházíte se v úrovni hry, stojíte vedle okraje útesu. Nad vámi je mince. Vy jako Mario, v herní úrovni, na konkrétní pozici... to je váš stav. Posun o krok doprava (akce) vás přivede přes okraj, což by vám přineslo nízké číselné skóre. Stisknutí tlačítka skoku by vám však umožnilo získat bod a zůstat naživu. To je pozitivní výsledek, který by vám měl přinést pozitivní číselné skóre. +Posilované učení zahrnuje tři důležité koncepty: agenta, nějaké stavy a sadu akcí pro každý stav. Provedením akce ve specifikovaném stavu agent obdrží odměnu. Opět si představte počítačovou hru Super Mario. Jste Mario, jste v úrovni hry, stojíte vedle okraje útesu. Nad vámi je mince. Vy jako Mario, v úrovni hry, na konkrétní pozici ... to je váš stav. Posun o krok doprava (akce) by vás přivedl přes hranu, což by vám přineslo nízké číselné skóre. Nicméně stisknutí tlačítka skoku by vám dovolilo získat bod a zůstat naživu. To je pozitivní výsledek a měl by být oceněn kladným číselným skóre. -Pomocí posilovaného učení a simulátoru (hry) se můžete naučit, jak hru hrát, abyste maximalizovali odměnu, což znamená zůstat naživu a získat co nejvíce bodů. +Použitím posilovaného učení a simulátoru (hry) se můžete naučit, jak hrát hru tak, aby bylo dosaženo maximální odměny, což je přežití a získání co nejvíce bodů. [![Úvod do posilovaného učení](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Klikněte na obrázek výše a poslechněte si Dmitryho, jak diskutuje o posilovaném učení. +> 🎥 Klikněte na obrázek výše a poslechněte si Dmitryho, jak diskutuje o posilovaném učení -## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ml/) +## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) -## Předpoklady a nastavení +## Požadavky a nastavení -V této lekci budeme experimentovat s kódem v Pythonu. Měli byste být schopni spustit kód v Jupyter Notebooku z této lekce, buď na svém počítači, nebo někde v cloudu. +V této lekci budeme experimentovat s kódem v Pythonu. Měli byste být schopni spustit kód Jupyter Notebooku z této lekce, buď na svém počítači nebo někde v cloudu. Můžete otevřít [notebook lekce](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) a projít si tuto lekci krok za krokem. -> **Poznámka:** Pokud otevíráte tento kód z cloudu, musíte také stáhnout soubor [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), který se používá v kódu notebooku. Přidejte jej do stejného adresáře jako notebook. +> **Poznámka:** Pokud otevíráte tento kód z cloudu, je také potřeba stáhnout soubor [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), který se používá v kódu notebooku. Přidejte jej do stejného adresáře jako notebook. ## Úvod -V této lekci prozkoumáme svět **[Petr a vlk](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirovaný hudební pohádkou ruského skladatele [Sergeje Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Použijeme **posilované učení**, aby Petr mohl prozkoumat své prostředí, sbírat chutná jablka a vyhnout se setkání s vlkem. +V této lekci prozkoumáme svět **[Petra a vlka](https://cs.wikipedia.org/wiki/Petr_a_vlk)**, inspirovaný hudební pohádkou od ruského skladatele, [Sergeje Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Použijeme **posilované učení**, aby Petr prozkoumal své prostředí, sbíral chutná jablka a vyhnul se setkání s vlkem. -**Posilované učení** (RL) je technika učení, která nám umožňuje naučit se optimální chování **agenta** v nějakém **prostředí** prostřednictvím mnoha experimentů. Agent v tomto prostředí by měl mít nějaký **cíl**, definovaný pomocí **funkce odměny**. +**Posilované učení** (RL) je učební technika, která nám umožňuje naučit se optimální chování **agenta** v nějakém **prostředí** pomocí mnoha experimentů. Agent v tomto prostředí by měl mít nějaký **cíl**, definovaný **funkcí odměny**. ## Prostředí -Pro jednoduchost si představme Petrov svět jako čtvercovou desku o velikosti `šířka` x `výška`, jako je tato: +Pro jednoduchost si představme Petrův svět jako čtvercovou desku o rozměrech `width` x `height`, takto: -![Petrovo prostředí](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Petrovo prostředí](../../../../translated_images/cs/environment.40ba3cb66256c93f.webp) -Každá buňka na této desce může být: +Každá buňka v této desce může být: -* **zem**, po které Petr a další bytosti mohou chodit. -* **voda**, po které samozřejmě nemůžete chodit. +* **země**, po které mohou Petr a další tvory chodit. +* **voda**, po které samozřejmě chodit nelze. * **strom** nebo **tráva**, místo, kde si můžete odpočinout. -* **jablko**, což představuje něco, co by Petr rád našel, aby se nakrmil. +* **jablko**, které představuje něco, co by Petr rád našel, aby se nasytit. * **vlk**, který je nebezpečný a měl by být vyhnut. -Existuje samostatný modul v Pythonu, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), který obsahuje kód pro práci s tímto prostředím. Protože tento kód není důležitý pro pochopení našich konceptů, importujeme modul a použijeme jej k vytvoření vzorové desky (blok kódu 1): +Existuje samostatný Python modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), který obsahuje kód pro práci s tímto prostředím. Jelikož tento kód není důležitý pro pochopení našich konceptů, naimportujeme modul a použijeme jej k vytvoření pracovní desky (blok kódu 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -Tento kód by měl vytisknout obrázek prostředí podobný tomu výše. +Tento kód by měl vypsat obrázek prostředí podobný tomuto výše. ## Akce a politika -V našem příkladu by Petrovým cílem bylo najít jablko, zatímco se vyhýbá vlkovi a dalším překážkám. K tomu může v podstatě chodit, dokud nenajde jablko. +V našem příkladu by Petrův cíl byl najít jablko a zároveň se vyhnout vlkovi a jiným překážkám. Aby toho dosáhl, může v podstatě chodit dokola, dokud nenajde jablko. -Proto může na jakékoli pozici zvolit jednu z následujících akcí: nahoru, dolů, doleva a doprava. +Proto může na jakékoli pozici vybírat jednu z následujících akcí: nahoru, dolů, vlevo a vpravo. -Tyto akce definujeme jako slovník a mapujeme je na dvojice odpovídajících změn souřadnic. Například pohyb doprava (`R`) by odpovídal dvojici `(1,0)`. (blok kódu 2): +Tyto akce definujeme jako slovník a namapujeme je na dvojice odpovídajících změn souřadnic. Například pohyb vpravo (`R`) odpovídá dvojici `(1,0)`. (blok kódu 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()) } ``` -Shrneme-li, strategie a cíl tohoto scénáře jsou následující: +Na závěr je strategie a cíl tohoto scénáře následující: -- **Strategie** našeho agenta (Petra) je definována tzv. **politikou**. Politika je funkce, která vrací akci v daném stavu. V našem případě je stav problému reprezentován deskou, včetně aktuální pozice hráče. +- **Strategie**, našeho agenta (Petra) je definována tzv. **politikou**. Politika je funkce, která vrací akci pro daný stav. V našem případě je stav problému reprezentován deskou včetně aktuální pozice hráče. -- **Cíl** posilovaného učení je nakonec naučit se dobrou politiku, která nám umožní problém efektivně vyřešit. Jako základ však zvažme nejjednodušší politiku nazvanou **náhodná chůze**. +- **Cíl**, posilovaného učení je nakonec naučit se dobrou politiku, která nám umožní problém efektivně vyřešit. Nicméně jako základní přístup vezměme nejjednodušší politiku nazvanou **náhodná chůze**. ## Náhodná chůze -Nejprve vyřešíme náš problém implementací strategie náhodné chůze. Při náhodné chůzi budeme náhodně vybírat další akci z povolených akcí, dokud nedosáhneme jablka (blok kódu 3). +Nejdříve vyřešíme náš problém implementací strategie náhodné chůze. Při náhodné chůzi náhodně vybereme další akci ze povolených akcí, dokud nedosáhneme jablka (blok kódu 3). -1. Implementujte náhodnou chůzi pomocí níže uvedeného kódu: +1. Implementujte náhodnou chůzi pomocí kódu níže: ```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 # počet kroků + # nastav počáteční pozici if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # úspěch! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # snězen vlkem nebo utonut 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) # proveď skutečný pohyb break n+=1 walk(m,random_policy) ``` - Volání `walk` by mělo vrátit délku odpovídající cesty, která se může lišit od jednoho spuštění k druhému. + Volání `walk` by mělo vrátit délku odpovídající cesty, která se může při různých bězích lišit. -1. Spusťte experiment chůze několikrát (řekněme 100krát) a vytiskněte výsledné statistiky (blok kódu 4): +1. Proveďte experiment chůze několikrát (např. 100x) a vytiskněte získanou statistiku (blok kódu 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Nejprve vyřešíme náš problém implementací strategie náhodné chůze. Př print_statistics(random_policy) ``` - Všimněte si, že průměrná délka cesty je kolem 30-40 kroků, což je poměrně hodně, vzhledem k tomu, že průměrná vzdálenost k nejbližšímu jablku je kolem 5-6 kroků. + Všimněte si, že průměrná délka cesty je kolem 30-40 kroků, což je dost, vzhledem k tomu, že průměrná vzdálenost k nejbližšímu jablku je kolem 5-6 kroků. - Můžete také vidět, jak vypadá Petrov pohyb během náhodné chůze: + Můžete také vidět, jak vypadají Petrovy pohyby během náhodné chůze: ![Petrova náhodná chůze](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Funkce odměny -Aby byla naše politika inteligentnější, musíme pochopit, které kroky jsou "lepší" než jiné. K tomu musíme definovat náš cíl. +Abychom naši politiku učinili inteligentnější, musíme pochopit, které kroky jsou „lepší“ než jiné. K tomu je potřeba definovat náš cíl. -Cíl může být definován pomocí **funkce odměny**, která vrátí nějakou hodnotu skóre pro každý stav. Čím vyšší číslo, tím lepší funkce odměny. (blok kódu 5) +Cíl můžeme definovat pomocí **funkce odměny**, která vrací určitou hodnotu skóre pro každý stav. Čím vyšší číslo, tím lepší odměna. (blok kódu 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Zajímavé na funkcích odměny je, že ve většině případů *dostáváme podstatnou odměnu až na konci hry*. To znamená, že náš algoritmus by měl nějakým způsobem zapamatovat "dobré" kroky, které vedou k pozitivní odměně na konci, a zvýšit jejich důležitost. Podobně by měly být odrazeny všechny kroky, které vedou k špatným výsledkům. +Zajímavé na funkcích odměny je to, že většinou *dostáváme podstatnou odměnu až na konci hry*. To znamená, že algoritmus by měl nějak pamatovat „dobré“ kroky vedoucí k pozitivní odměně na konci a zvyšovat jejich váhu. Podobně by měly být odrazovány kroky vedoucí k špatným výsledkům. -## Q-Learning +## Q-učení -Algoritmus, který zde budeme diskutovat, se nazývá **Q-Learning**. V tomto algoritmu je politika definována funkcí (nebo datovou strukturou) nazvanou **Q-Tabulka**. Ta zaznamenává "kvalitu" každé akce v daném stavu. +Algoritmus, který zde diskutujeme, se nazývá **Q-učení**. V tomto algoritmu je politika definována funkcí (nebo datovou strukturou) nazývanou **Q-tabulka**. Ta zaznamenává „dobrý“ nebo „špatný“ vliv každé akce v daném stavu. -Nazývá se Q-Tabulka, protože je často výhodné ji reprezentovat jako tabulku nebo vícerozměrné pole. Protože naše deska má rozměry `šířka` x `výška`, můžeme Q-Tabulku reprezentovat pomocí numpy pole s tvarem `šířka` x `výška` x `len(actions)`: (blok kódu 6) +Nazývá se Q-tabulka, protože je často pohodlné ji představit jako tabulku nebo vícerozměrné pole. Protože má naše deska rozměry `width` x `height`, můžeme Q-tabulku reprezentovat pomocí numpy pole tvaru `width` x `height` x `len(actions)`: (blok kódu 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Všimněte si, že inicializujeme všechny hodnoty Q-Tabulky stejnou hodnotou, v našem případě - 0.25. To odpovídá politice "náhodné chůze", protože všechny kroky v každém stavu jsou stejně dobré. Q-Tabulku můžeme předat funkci `plot`, abychom ji vizualizovali na desce: `m.plot(Q)`. +Všimněte si, že všechny hodnoty Q-tabulky inicializujeme na stejnou hodnotu, v našem případě 0,25. To odpovídá politice „náhodné chůze“, protože všechny akce v každém stavu jsou stejně dobré. Můžeme předat Q-tabulku funkci `plot` pro vizualizaci tabulky na desce: `m.plot(Q)`. -![Petrovo prostředí](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Petrovo prostředí](../../../../translated_images/cs/env_init.04e8f26d2d60089e.webp) -Uprostřed každé buňky je "šipka", která označuje preferovaný směr pohybu. Protože všechny směry jsou stejné, je zobrazen bod. +Ve středu každé buňky je „šípka“, která ukazuje preferovaný směr pohybu. Protože jsou všechny směry stejné, zobrazuje se tečka. -Nyní musíme spustit simulaci, prozkoumat naše prostředí a naučit se lepší rozložení hodnot Q-Tabulky, které nám umožní najít cestu k jablku mnohem rychleji. +Nyní potřebujeme spustit simulaci, prozkoumat naše prostředí a naučit se lepší rozdělení hodnot v Q-tabulce, které nám umožní najít cestu k jablku mnohem rychleji. -## Podstata Q-Learningu: Bellmanova rovnice +## Podstata Q-učení: Bellmanova rovnice -Jakmile se začneme pohybovat, každá akce bude mít odpovídající odměnu, tj. teoreticky můžeme vybrat další akci na základě nejvyšší okamžité odměny. Ve většině stavů však krok nedosáhne našeho cíle dosáhnout jablka, a proto nemůžeme okamžitě rozhodnout, který směr je lepší. +Jakmile začneme pohybovat, každá akce bude mít odpovídající odměnu, tedy teoreticky můžeme zvolit další akci na základě nejvyšší okamžité odměny. Nicméně v většině stavů tah nepřinese cíl dosáhnout jablko, a proto nemůžeme ihned rozhodnout, který směr je lepší. -> Pamatujte, že nezáleží na okamžitém výsledku, ale spíše na konečném výsledku, který získáme na konci simulace. +> Pamatujte, že ne okamžitý výsledek je důležitý, ale konečný výsledek, kterého dosáhneme na konci simulace. -Abychom zohlednili tuto zpožděnou odměnu, musíme použít principy **[dynamického programování](https://en.wikipedia.org/wiki/Dynamic_programming)**, které nám umožňují přemýšlet o našem problému rekurzivně. +Abychom mohli zohlednit tuto odloženou odměnu, musíme použít principy **[dynamického programování](https://cs.wikipedia.org/wiki/Dynamick%C3%A9_programov%C3%A1n%C3%AD)**, které nám umožňují uvažovat o našem problému rekurzivně. -Předpokládejme, že se nyní nacházíme ve stavu *s* a chceme se přesunout do dalšího stavu *s'*. Tím získáme okamžitou odměnu *r(s,a)*, definovanou funkcí odměny, plus nějakou budoucí odměnu. Pokud předpokládáme, že naše Q-Tabulka správně odráží "atraktivitu" každé akce, pak ve stavu *s'* zvolíme akci *a*, která odpovídá maximální hodnotě *Q(s',a')*. Tím pádem nejlepší možná budoucí odměna, kterou bychom mohli získat ve stavu *s*, bude definována jako `max` +Předpokládejme, že jsme nyní ve stavu *s* a chceme přejít do dalšího stavu *s'*. Tímto dostaneme okamžitou odměnu *r(s,a)*, definovanou funkcí odměny, plus nějakou budoucí odměnu. Pokud předpokládáme, že naše Q-tabulka správně odráží „atraktivitu“ každé akce, pak ve stavu *s'* zvolíme akci *a*, která odpovídá maximální hodnotě *Q(s',a')*. Nejlepší možná budoucí odměna ve stavu *s* bude tedy definována jako `max`a'*Q(s',a')* (maximum je počítáno přes všechny možné akce *a'* ve stavu *s'*). + +To nám dává **Bellmanův vzorec** pro výpočet hodnoty Q-tabule ve stavu *s*, vzhledem k akci *a*: + + + +Zde γ je tzv. **diskontní faktor**, který určuje, do jaké míry byste měli preferovat současnou odměnu před budoucí odměnou a naopak. + +## Učební algoritmus + +Na základě výše uvedené rovnice nyní můžeme napsat pseudokód našeho učebního algoritmu: + +* Inicializujte Q-tabulku Q stejnými čísly pro všechny stavy a akce +* Nastavte rychlost učení α ← 1 +* Opakujte simulaci mnohokrát + 1. Začněte na náhodné pozici + 1. Opakujte + 1. Vyberte akci *a* ve stavu *s* + 2. Proveďte akci přesunem do nového stavu *s'* + 3. Pokud narazíme na konec hry, nebo je celková odměna příliš malá - ukončete simulaci + 4. Spočítejte odměnu *r* v novém stavu + 5. Aktualizujte Q-funkci podle Bellmanovy rovnice: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Aktualizujte celkovou odměnu a snižte α. + +## Využití vs. průzkum + +V výše uvedeném algoritmu jsme nespecifikovali, jak přesně vybrat akci v kroku 2.1. Pokud vybíráme akci náhodně, budeme náhodně **průzkoumávat** prostředí a je pravděpodobné, že často zemřeme a budeme prozkoumávat oblasti, kam bychom normálně nešli. Alternativní přístup je **využívat** hodnoty Q-tabulky, které už známe, a zvolit nejlepší akci (s vyšší hodnotou Q) ve stavu *s*. To nás však připraví o průzkum jiných stavů a pravděpodobně nenajdeme optimální řešení. + +Nejlepší tedy je najít rovnováhu mezi průzkumem a využíváním. To lze udělat tak, že akci ve stavu *s* zvolíme s pravděpodobností úměrnou hodnotám v Q-tabulce. Na začátku, když jsou všechny hodnoty Q-tabulek stejné, to odpovídá náhodnému výběru, ale jak se učíme více o prostředí, pravděpodobněji půjdeme optimální cestou, přičemž agent si občas zvolí neprozkoumanou cestu. + +## Implementace v Pythonu + +Jsme nyní připraveni implementovat učební algoritmus. Než to uděláme, potřebujeme také funkci, která převede libovolná čísla v Q-tabulce na vektor pravděpodobností pro odpovídající akce. + +1. Vytvořte funkci `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Přidáváme několik `eps` k původnímu vektoru, abychom se vyhnuli dělení nulou v počátečním případě, kdy jsou všechny složky vektoru stejné. + +Proveďte učební algoritmus přes 5000 experimentů, nazývaných také **epochy**: (blok kódu 8) +```python + for epoch in range(5000): + + # Vyberte počáteční bod + m.random_start() + + # Začněte cestovat + 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) # dovolujeme hráči pohybovat se mimo plán, což ukončuje epizodu + 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 provedení tohoto algoritmu by měla být Q-tabulka aktualizována hodnotami definujícími atraktivitu různých akcí v každém kroku. Můžeme zkusit vizualizovat Q-tabulku vykreslením vektoru v každé buňce, který bude ukazovat požadovaný směr pohybu. Pro jednoduchost kreslíme malý kruh místo šipky. + + ## Kontrola politiky -Protože Q-Tabulka uvádí "atraktivitu" každé akce v každém stavu, je poměrně snadné ji použít k definování efektivní navigace v našem světě. V nejjednodušším případě můžeme vybrat akci odpovídající nejvyšší hodnotě v Q-Tabulce: (kódový blok 9) +Protože Q-tabulka uvádí „atraktivitu“ každé akce v každém stavu, je poměrně jednoduché ji použít k definování efektivní navigace v našem světě. V nejjednodušším případě můžeme vybrat akci odpovídající nejvyšší hodnotě v Q-tabulce: (blok kódu 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Pokud výše uvedený kód vyzkoušíte několikrát, můžete si všimnout, že se někdy "zasekne" a je třeba stisknout tlačítko STOP v notebooku, abyste ho přerušili. K tomu dochází, protože mohou nastat situace, kdy si dva stavy "ukazují" na sebe z hlediska optimální hodnoty Q, což vede k tomu, že agent se mezi těmito stavy pohybuje nekonečně. + +> Pokud vyzkoušíte výše uvedený kód několikrát, můžete si všimnout, že se někdy "zasekne" a je potřeba v notebooku stisknout tlačítko STOP k jeho přerušení. To se děje proto, že mohou nastat situace, kdy dva stavy „ukazují“ na sebe z hlediska optimální hodnoty Q (Q-Value), v takovém případě agent skončí pohybováním se mezi těmito stavy donekonečna. ## 🚀Výzva -> **Úkol 1:** Upravte funkci `walk` tak, aby omezila maximální délku cesty na určitý počet kroků (například 100), a sledujte, jak výše uvedený kód tuto hodnotu čas od času vrací. +> **Úkol 1:** Upravte funkci `walk` tak, aby omezila maximální délku cesty na určitý počet kroků (například 100), a sledujte, jak výše uvedený kód tuto hodnotu občas vrací. -> **Úkol 2:** Upravte funkci `walk` tak, aby se nevracela na místa, kde již byla. Tím se zabrání tomu, aby se `walk` opakovala, nicméně agent může stále skončit "uvězněný" na místě, odkud se nemůže dostat. +> **Úkol 2:** Upravte funkci `walk` tak, aby se nevracela na místa, kde již dříve byla. Tím se zabrání zasekávání funkce `walk`, ovšem agent se může i tak ocitnout „uvězněn“ na místě, ze kterého není schopen uniknout. ## Navigace -Lepší navigační politika by byla ta, kterou jsme použili během tréninku, která kombinuje využívání a zkoumání. V této politice budeme vybírat každou akci s určitou pravděpodobností, úměrnou hodnotám v Q-Tabulce. Tato strategie může stále vést k tomu, že se agent vrátí na pozici, kterou již prozkoumal, ale jak můžete vidět z níže uvedeného kódu, vede k velmi krátké průměrné cestě k požadovanému místu (pamatujte, že `print_statistics` spouští simulaci 100krát): (kódový blok 10) +Lepší navigační politikou bude ta, kterou jsme používali během tréninku, kombinující využití poznatků a průzkum. V této politice vybereme každou akci s určitou pravděpodobností, úměrnou hodnotám v Q-tabuli. Tato strategie může stále způsobit, že se agent vrátí na místo, které již prozkoumal, ale jak je vidět z níže uvedeného kódu, vede to k velmi krátké průměrné délce cesty k požadovanému cíli (pamatujte, že `print_statistics` spouští simulaci 100x): (kódový blok 10) ```python def qpolicy(m): @@ -220,21 +297,23 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Po spuštění tohoto kódu byste měli získat mnohem kratší průměrnou délku cesty než dříve, v rozmezí 3-6. +Po spuštění tohoto kódu byste měli dostat mnohem menší průměrnou délku cesty než dříve, v rozsahu 3–6. ## Zkoumání procesu učení -Jak jsme zmínili, proces učení je rovnováhou mezi zkoumáním a využíváním získaných znalostí o struktuře prostoru problému. Viděli jsme, že výsledky učení (schopnost pomoci agentovi najít krátkou cestu k cíli) se zlepšily, ale je také zajímavé sledovat, jak se průměrná délka cesty chová během procesu učení: +Jak jsme zmínili, proces učení je rovnováha mezi průzkumem a využíváním získaných znalostí o struktuře problémového prostoru. Viděli jsme, že výsledky učení (schopnost pomoci agentovi najít krátkou cestu k cíli) se zlepšily, ale je také zajímavé sledovat, jak se průměrná délka cesty chová během procesu učení: + + -## Shrnutí poznatků: +Učení lze shrnout takto: -- **Průměrná délka cesty se zvyšuje**. Na začátku vidíme, že průměrná délka cesty roste. Pravděpodobně je to způsobeno tím, že když o prostředí nic nevíme, máme tendenci uvíznout ve špatných stavech, jako je voda nebo vlk. Jak se dozvídáme více a začneme tyto znalosti využívat, můžeme prostředí prozkoumávat déle, ale stále nevíme, kde přesně jsou jablka. +- **Průměrná délka cesty roste**. Vidíme zde, že ze začátku průměrná délka cesty roste. Pravděpodobně je to způsobeno tím, že když o prostředí nic nevíme, je pravděpodobné, že uvízneme ve špatných stavech, vodě nebo vlkovi. Jak se učíme a začneme tyto znalosti používat, můžeme prostředí prozkoumávat déle, ale stále ještě nevíme, kde jsou jablka. -- **Délka cesty se s učením zkracuje**. Jakmile se naučíme dostatečně, je pro agenta snazší dosáhnout cíle a délka cesty se začne zkracovat. Stále však zůstáváme otevření zkoumání, takže často odbočíme od nejlepší cesty a zkoumáme nové možnosti, což cestu prodlužuje nad optimální délku. +- **Délka cesty klesá, jak se učíme více**. Jakmile se naučíme dost, agentovi se snáz podaří dosáhnout cíle a délka cesty začne klesat. Přesto máme stále otevřený průzkum, takže se často odchylujeme od nejlepší cesty a snažíme se prozkoumat nové možnosti, což dělá cestu delší než optimální. -- **Délka se náhle zvýší**. Na grafu také pozorujeme, že v určitém bodě se délka náhle zvýší. To ukazuje na stochastickou povahu procesu a na to, že můžeme v určitém okamžiku "zkazit" koeficienty Q-Tabulky jejich přepsáním novými hodnotami. Ideálně by se tomu mělo zabránit snížením rychlosti učení (například ke konci tréninku upravujeme hodnoty Q-Tabulky pouze o malou hodnotu). +- **Délka náhle stoupne**. Na tomto grafu také pozorujeme, že v určitém bodě délka náhle vzrostla. To ukazuje na stochastickou povahu procesu a že můžeme v nějakém okamžiku „pokazit“ koeficienty Q-tabule přepsáním novými hodnotami. Toto by mělo být ideálně minimalizováno snížením rychlosti učení (například ke konci tréninku upravujeme hodnoty Q-tabule jen o malou hodnotu). -Celkově je důležité si uvědomit, že úspěch a kvalita procesu učení významně závisí na parametrech, jako je rychlost učení, pokles rychlosti učení a diskontní faktor. Tyto parametry se často nazývají **hyperparametry**, aby se odlišily od **parametrů**, které optimalizujeme během tréninku (například koeficienty Q-Tabulky). Proces hledání nejlepších hodnot hyperparametrů se nazývá **optimalizace hyperparametrů** a zaslouží si samostatné téma. +Celkově je důležité si uvědomit, že úspěch a kvalita procesu učení výrazně závisí na parametrech, jako je rychlost učení, pokles rychlosti učení a diskontní faktor. Tyto hodnoty se často nazývají **hyperparametry**, aby se odlišily od **parametrů**, které optimalizujeme během tréninku (například koeficienty Q-tabule). Proces hledání nejlepších hodnot hyperparametrů nazýváme **optimalizace hyperparametrů** a zaslouží si samostatné téma. ## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/) @@ -243,5 +322,7 @@ Celkově je důležité si uvědomit, že úspěch a kvalita procesu učení vý --- -**Prohlášení**: -Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file + +**Prohlášení o omezení odpovědnosti**: +Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu. + \ No newline at end of file diff --git a/translations/cs/9-Real-World/2-Debugging-ML-Models/README.md b/translations/cs/9-Real-World/2-Debugging-ML-Models/README.md index 6a34a2813..dea2bfc4d 100644 --- a/translations/cs/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/cs/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,155 +1,179 @@ -# Postscript: Ladění modelů strojového učení pomocí komponent Responsible AI dashboardu - -## [Kvíz před přednáškou](https://ff-quizzes.netlify.app/en/ml/) +# Postscript: Ladění modelů v strojovém učení pomocí komponent panelu Responsible AI + +## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) + ## Úvod -Strojové učení ovlivňuje náš každodenní život. AI se dostává do některých z nejdůležitějších systémů, které ovlivňují nás jako jednotlivce i naši společnost, od zdravotnictví, financí, vzdělávání až po zaměstnanost. Například systémy a modely se podílejí na každodenních rozhodovacích úlohách, jako jsou diagnózy ve zdravotnictví nebo odhalování podvodů. V důsledku toho jsou pokroky v AI spolu s rychlou adopcí doprovázeny měnícími se společenskými očekáváními a rostoucí regulací. Neustále vidíme oblasti, kde systémy AI nesplňují očekávání, odhalují nové výzvy a vlády začínají regulovat AI řešení. Je tedy důležité, aby tyto modely byly analyzovány tak, aby poskytovaly spravedlivé, spolehlivé, inkluzivní, transparentní a odpovědné výsledky pro všechny. +Strojové učení ovlivňuje naše každodenní životy. Umělá inteligence nachází uplatnění v některých z nejdůležitějších systémů, které ovlivňují nás jako jednotlivce i naši společnost – od zdravotnictví, financí, vzdělávání až po zaměstnanost. Například systémy a modely jsou zapojeny do každodenního rozhodování, jako jsou zdravotní diagnózy nebo detekce podvodů. V důsledku toho jsou pokroky v AI spolu s urychleným zaváděním vystaveny rostoucím očekáváním společnosti a větší regulaci jako odpovědi na ně. Neustále vidíme oblasti, kde AI systémy nesplňují očekávání; odhalují nové výzvy; a vlády začínají regulovat AI řešení. Proto je důležité tyto modely analyzovat, aby poskytly spravedlivé, spolehlivé, inkluzivní, transparentní a zodpovědné výsledky pro všechny. -V tomto kurzu se podíváme na praktické nástroje, které lze použít k posouzení, zda má model problémy s odpovědnou AI. Tradiční techniky ladění strojového učení bývají založeny na kvantitativních výpočtech, jako je agregovaná přesnost nebo průměrná ztráta chyb. Představte si, co se může stát, když data, která používáte k vytváření těchto modelů, postrádají určité demografické skupiny, jako je rasa, pohlaví, politický názor, náboženství, nebo naopak nepřiměřeně zastupují tyto demografické skupiny. Co když je výstup modelu interpretován tak, že upřednostňuje určitou demografickou skupinu? To může vést k nadměrnému nebo nedostatečnému zastoupení těchto citlivých skupin, což způsobí problémy se spravedlností, inkluzivitou nebo spolehlivostí modelu. Dalším faktorem je, že modely strojového učení jsou považovány za "černé skříňky", což ztěžuje pochopení a vysvětlení toho, co ovlivňuje predikce modelu. Všechny tyto výzvy čelí datoví vědci a vývojáři AI, pokud nemají dostatečné nástroje k ladění a posouzení spravedlnosti nebo důvěryhodnosti modelu. +V tomto kurzu si ukážeme praktické nástroje, které lze použít k posouzení, zda model má problémy s odpovědnou AI. Tradiční techniky ladění modelů strojového učení bývají založeny na kvantitativních výpočtech, jako je agregovaná přesnost nebo průměrná ztráta chyby. Představte si, co se může stát, když data, která používáte k tvorbě těchto modelů, postrádají určité demografické skupiny, například rasu, pohlaví, politický názor, náboženství, nebo tyto skupiny nepřiměřeně zastupují. Co když se výstup modelu interpretuje tak, že preferuje některou demografickou skupinu? To může zavést nad- nebo podreprezentaci těchto citlivých skupin funkcí, což vede k problémům se spravedlností, inkluzivitou nebo spolehlivostí modelu. Dalším faktorem je, že modely strojového učení jsou považovány za černé skříňky, což ztěžuje pochopit a vysvětlit, co ovlivňuje předpověď modelu. Všechny tyto problémy čelí datoví vědci a vývojáři AI, pokud nemají adekvátní nástroje na ladění a hodnocení spravedlnosti nebo důvěryhodnosti modelu. V této lekci se naučíte ladit své modely pomocí: -- **Analýzy chyb**: identifikace oblastí v distribuci dat, kde má model vysokou míru chyb. -- **Přehledu modelu**: provádění srovnávací analýzy mezi různými datovými kohortami k odhalení rozdílů ve výkonnostních metrikách modelu. -- **Analýzy dat**: zkoumání, kde může docházet k nadměrnému nebo nedostatečnému zastoupení dat, což může zkreslit model ve prospěch jedné demografické skupiny oproti jiné. -- **Důležitosti vlastností**: pochopení, které vlastnosti ovlivňují predikce modelu na globální nebo lokální úrovni. +- **Analýza chyb**: identifikovat, ve kterých částech datového rozdělení má model vysoké míry chyb. +- **Přehled modelu**: provést komparativní analýzu napříč různými datovými kohortami k odhalení rozdílů ve výkonových metrikách modelu. +- **Analýza dat**: zkoumat, kde může být v datech nad- nebo podreprezentace, která může naklonit model k preferování jedné demografické skupiny před jinou. +- **Důležitost funkcí**: pochopit, které funkce ovlivňují předpovědi modelu na globální nebo lokální úrovni. -## Předpoklady +## Požadavky -Jako předpoklad si prosím projděte [Nástroje odpovědné AI pro vývojáře](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) +Jako předpoklad prosím projděte recenzi [Responsible AI nástrojů pro vývojáře](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) -> ![Gif o nástrojích odpovědné AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif o nástrojích Responsible AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## Analýza chyb -Tradiční metriky výkonnosti modelu používané k měření přesnosti jsou většinou výpočty založené na správných vs nesprávných predikcích. Například určení, že model je přesný z 89 % s chybovou ztrátou 0,001, může být považováno za dobrý výkon. Chyby však nejsou v základním datovém souboru rozloženy rovnoměrně. Můžete získat skóre přesnosti modelu 89 %, ale zjistit, že existují různé oblasti vašich dat, kde model selhává ve 42 % případů. Důsledky těchto vzorců selhání u určitých datových skupin mohou vést k problémům se spravedlností nebo spolehlivostí. Je zásadní pochopit oblasti, kde model funguje dobře nebo ne. Datové oblasti, kde má váš model vysoký počet nepřesností, se mohou ukázat jako důležitá demografická data. +Tradiční metriky výkonnosti modelu používané k měření přesnosti jsou většinou výpočty založené na správných versus nesprávných předpovědích. Například zjištění, že model je přesný 89 % času s chybovou ztrátou 0,001, lze považovat za dobrý výkon. Chyby však často nejsou rovnoměrně rozděleny ve vašem základním datasetu. Můžete mít skóre přesnosti modelu 89 %, ale objevit, že v různých oblastech dat model selhává 42 % času. Důsledky těchto vzorců selhání v určitých datových skupinách mohou vést k problémům s férovostí nebo spolehlivostí. Je nezbytné pochopit oblasti, kde model funguje dobře nebo ne. Datové oblasti, kde je vysoký počet nepřesností v modelu, se mohou ukázat jako důležitá datová demografie. -![Analyzujte a laděte chyby modelu](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![Analýza a ladění modelových chyb](../../../../translated_images/cs/ea-error-distribution.117452e1177c1dd8.webp) -Komponenta Analýza chyb na RAI dashboardu ukazuje, jak jsou selhání modelu rozložena napříč různými kohortami pomocí vizualizace stromu. To je užitečné při identifikaci vlastností nebo oblastí, kde je vysoká míra chyb ve vašem datovém souboru. Díky tomu, že vidíte, odkud pochází většina nepřesností modelu, můžete začít zkoumat jejich příčinu. Můžete také vytvořit datové kohorty pro provádění analýzy. Tyto datové kohorty pomáhají v procesu ladění určit, proč je výkon modelu dobrý v jedné kohortě, ale chybný v jiné. +Komponenta Analýza chyb v panelu RAI znázorňuje, jak je selhání modelu rozloženo napříč různými kohortami pomocí vizualizace ve formě stromu. To je užitečné pro identifikaci funkcí nebo oblastí, kde je vysoká míra chyb v datasetu. Viděním, odkud pochází většina nepřesností modelu, můžete začít zkoumat jejich příčinu. Můžete také vytvářet datové kohorty pro provedení analýzy. Tyto datové kohorty pomáhají při ladění zjistit, proč je výkon modelu dobrý v jedné kohortě, ale chybný v jiné. -![Analýza chyb](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Analýza chyb](../../../../translated_images/cs/ea-error-cohort.6886209ea5d438c4.webp) -Vizualizační indikátory na mapě stromu pomáhají rychleji lokalizovat problémové oblasti. Například čím tmavší odstín červené barvy má uzel stromu, tím vyšší je míra chyb. +Vizualní indikátory na stromové mapě pomáhají rychleji lokalizovat problémové oblasti. Například čím tmavší odstín červené barvy stromový uzel má, tím vyšší je míra chyb. -Heatmapa je další vizualizační funkce, kterou mohou uživatelé použít k vyšetřování míry chyb pomocí jedné nebo dvou vlastností, aby našli přispěvatele k chybám modelu napříč celým datovým souborem nebo kohortami. +Tepelná mapa je další funkcionalitou vizualizace, kterou mohou uživatelé využít k prozkoumání míry chyb pomocí jedné nebo dvou funkcí a najít příčinu modelových chyb v celém datasetu nebo kohortách. -![Heatmapa analýzy chyb](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Tepelná mapa analýzy chyb](../../../../translated_images/cs/ea-heatmap.8d27185e28cee383.webp) Použijte analýzu chyb, když potřebujete: -* Získat hluboké pochopení toho, jak jsou selhání modelu rozložena napříč datovým souborem a několika vstupními a vlastnostními dimenzemi. -* Rozložit agregované metriky výkonu a automaticky objevit chybné kohorty, které informují o vašich cílených krocích k nápravě. +* Získat hluboké pochopení, jak jsou selhání modelu rozložena v datasetu a přes několik vstupních a funkčních dimenzí. +* Rozložit agregované výkonové metriky k automatickému objevení chybných kohort pro informování cílených nápravných kroků. ## Přehled modelu -Hodnocení výkonu modelu strojového učení vyžaduje získání komplexního pochopení jeho chování. Toho lze dosáhnout přezkoumáním více než jedné metriky, jako je míra chyb, přesnost, recall, precision nebo MAE (Mean Absolute Error), aby se odhalily rozdíly mezi výkonnostními metrikami. Jedna metrika výkonu může vypadat skvěle, ale nepřesnosti mohou být odhaleny v jiné metrice. Navíc porovnání metrik pro rozdíly napříč celým datovým souborem nebo kohortami pomáhá osvětlit, kde model funguje dobře nebo ne. To je obzvláště důležité při sledování výkonu modelu mezi citlivými vs necitlivými vlastnostmi (např. rasa pacienta, pohlaví nebo věk), aby se odhalila potenciální nespravedlnost modelu. Například zjištění, že model je více chybný v kohortě, která má citlivé vlastnosti, může odhalit potenciální nespravedlnost modelu. +Hodnocení výkonnosti modelu strojového učení vyžaduje získat celkové pochopení jeho chování. To lze dosáhnout přezkoumáním více než jedné metriky, jako je míra chyb, přesnost, vybavování, preciznost nebo MAE (střední absolutní chyba), k nalezení rozdílů mezi výkonovými metrikami. Jedna metrika výkonu může vypadat skvěle, ale jiné metriky mohou odhalit nepřesnosti. Navíc porovnání metrik kvůli rozdílům v celém datasetu nebo kohortách pomáhá osvětlit, kde model funguje dobře a kde ne. To je obzvlášť důležité při sledování výkonu modelu mezi citlivými a necitlivými funkcemi (např. rasa, pohlaví nebo věk pacienta) k odhalení potenciální nespravedlnosti modelu. Například zjištění, že model je chybnější v kohortě s citlivými funkcemi, může odhalit možnou nespravedlnost modelu. -Komponenta Přehled modelu na RAI dashboardu pomáhá nejen při analýze výkonnostních metrik reprezentace dat v kohortě, ale dává uživatelům možnost porovnávat chování modelu napříč různými kohortami. +Komponenta Přehled modelu v panelu RAI pomáhá nejen analyzovat výkonové metriky datové reprezentace v kohortě, ale také dává uživatelům možnost porovnat chování modelu napříč různými kohortami. -![Datové kohorty - přehled modelu na RAI dashboardu](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Datové kohorty - přehled modelu v panelu RAI](../../../../translated_images/cs/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -Funkce analýzy založené na vlastnostech komponenty umožňuje uživatelům zúžit podskupiny dat v rámci konkrétní vlastnosti, aby identifikovali anomálie na granulární úrovni. Například dashboard má vestavěnou inteligenci, která automaticky generuje kohorty pro uživatelem vybranou vlastnost (např. *"time_in_hospital < 3"* nebo *"time_in_hospital >= 7"*). To umožňuje uživateli izolovat konkrétní vlastnost z větší skupiny dat, aby zjistil, zda je klíčovým ovlivňovatelem chybných výsledků modelu. +Funkce analýzy podle funkcí komponenty umožňuje uživatelům zúžit podskupiny dat v konkrétní funkci k identifikaci anomálií na detailní úrovni. Například panel má vestavěnou inteligenci, která automaticky generuje kohorty pro uživatelem vybranou funkci (např. *"time_in_hospital < 3"* nebo *"time_in_hospital >= 7"*). To umožňuje uživateli izolovat konkrétní funkci z větší datové skupiny a zjistit, jestli je klíčovým faktorem pro chybné výsledky modelu. -![Kohorty vlastností - přehled modelu na RAI dashboardu](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Funkční kohorty - přehled modelu v panelu RAI](../../../../translated_images/cs/model-overview-feature-cohorts.c5104d575ffd0c80.webp) Komponenta Přehled modelu podporuje dvě třídy metrik rozdílů: -**Rozdíly ve výkonnosti modelu**: Tyto sady metrik vypočítávají rozdíly (disparity) ve hodnotách vybrané výkonnostní metriky napříč podskupinami dat. Zde je několik příkladů: +**Rozdíly ve výkonu modelu**: Tyto metriky vypočítávají rozdíl (disparitu) v hodnotách vybrané výkonové metriky mezi podskupinami dat. Několik příkladů: -* Rozdíly v míře přesnosti -* Rozdíly v míře chyb -* Rozdíly v precision -* Rozdíly v recall -* Rozdíly v průměrné absolutní chybě (MAE) +* Rozdíl v míře přesnosti +* Rozdíl v míře chyb +* Rozdíl v preciznosti +* Rozdíl v vybavování +* Rozdíl ve střední absolutní chybě (MAE) -**Rozdíly v míře výběru**: Tato metrika obsahuje rozdíly v míře výběru (příznivá predikce) mezi podskupinami. Příkladem je rozdíl v míře schvalování půjček. Míra výběru znamená podíl datových bodů v každé třídě klasifikovaných jako 1 (v binární klasifikaci) nebo rozložení hodnot predikce (v regresi). +**Rozdíl v míře výběru**: Tato metrika obsahuje rozdíl v míře výběru (příznivé předpovědi) mezi podskupinami. Příkladem je rozdíl v míře schvalování půjček. Míra výběru znamená podíl datových bodů v každé třídě klasifikovaných jako 1 (v binární klasifikaci) nebo rozdělení hodnot předpovědí (v regresi). ## Analýza dat -> "Pokud budete data mučit dostatečně dlouho, přiznají cokoliv" - Ronald Coase +> "Pokud data dlouho mučíte, přiznají cokoliv" - Ronald Coase + +Tento výrok zní extrémně, ale je pravda, že data lze manipulovat tak, aby podporovala jakýkoliv závěr. Taková manipulace může někdy nastat nevědomky. Jako lidé všichni máme své předsudky a často je těžké si uvědomit, kdy do dat zavádíme zaujatost. Zaručit spravedlnost v AI a strojovém učení zůstává složitou výzvou. -Toto tvrzení zní extrémně, ale je pravda, že data mohou být manipulována tak, aby podporovala jakýkoliv závěr. Taková manipulace se někdy může stát neúmyslně. Jako lidé máme všichni předsudky a často je obtížné vědomě vědět, kdy do dat zavádíme předsudky. Zajištění spravedlnosti v AI a strojovém učení zůstává složitou výzvou. +Data jsou velkou slepou skvrnou pro tradiční výkonové metriky modelů. Můžete mít vysoké skóre přesnosti, ale to ne vždy odráží základní datové zaujatosti, které mohou být ve vašem datasetu. Například, pokud má dataset zaměstnanců 27 % žen na vedoucích pozicích a 73 % mužů na stejných pozicích, model AI pro inzerci pracovních míst trénovaný na těchto datech může cílit převážně na mužské publikum pro pozice vyšší úrovně. Tato nerovnováha v datech zkreslila předpověď modelu tak, že preferuje jedno pohlaví. To odhaluje problém spravedlnosti, kde je pohlaví preferováno v AI modelu. -Data jsou velkým slepým místem pro tradiční metriky výkonnosti modelu. Můžete mít vysoké skóre přesnosti, ale to ne vždy odráží základní předsudky v datech, které mohou být ve vašem datovém souboru. Například pokud datový soubor zaměstnanců obsahuje 27 % žen na výkonných pozicích ve firmě a 73 % mužů na stejné úrovni, model AI pro inzerci pracovních míst vyškolený na těchto datech může cílit převážně na mužské publikum pro seniorní pracovní pozice. Tato nerovnováha v datech zkreslila predikci modelu ve prospěch jednoho pohlaví. To odhaluje problém spravedlnosti, kde je v modelu AI přítomna genderová předpojatost. +Komponenta Analýza dat v panelu RAI pomáhá identifikovat oblasti, kde je v datasetu nad- nebo podreprezentace. Pomáhá uživatelům diagnostikovat příčiny chyb a problémů se spravedlností způsobených nerovnováhou dat nebo nedostatečnou reprezentací konkrétní datové skupiny. Umožňuje vizualizovat dataset na základě předpovězených a skutečných výsledků, skupin s chybami a specifických funkcí. Někdy odhalení nedostatečně zastoupené datové skupiny může také odhalit, že model se neučí dobře, a proto má vysoký počet nepřesností. Model, který má datovou zaujatost, není jen problém spravedlnosti, ale ukazuje, že model není inkluzivní ani spolehlivý. -Komponenta Analýza dat na RAI dashboardu pomáhá identifikovat oblasti, kde je v datovém souboru nadměrné nebo nedostatečné zastoupení. Pomáhá uživatelům diagnostikovat příčinu chyb a problémů se spravedlností, které jsou způsobeny nerovnováhou dat nebo nedostatečným zastoupením určité datové skupiny. To dává uživatelům možnost vizualizovat datové soubory na základě predikovaných a skutečných výsledků, skupin chyb a konkrétních vlastností. Někdy objevení nedostatečně zastoupené datové skupiny může také odhalit, že model se dobře neučí, což vede k vysokým nepřesnostem. Model, který má předsudky v datech, není jen problémem spravedlnosti, ale ukazuje, že model není inkluzivní nebo spolehlivý. +![Komponenta Analýza dat na panelu RAI](../../../../translated_images/cs/dataanalysis-cover.8d6d0683a70a5c1e.webp) -![Komponenta Analýza dat na RAI dashboardu](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) Použijte analýzu dat, když potřebujete: -* Prozkoumat statistiky svého datového souboru výběrem různých filtrů pro rozdělení dat do různých dimenzí (známých jako kohorty). -* Pochopit rozložení svého datového souboru napříč různými kohortami a skupinami vlastností. -* Určit, zda vaše zjištění týkající se spravedlnosti, analýzy chyb a kauzality (odvozené z jiných komponent dashboardu) jsou výsledkem rozložení vašeho datového souboru. -* Rozhodnout, v jakých oblastech sbírat více dat, aby se zmírnily chyby způsobené problémy s reprezentací, šumem v označení, šumem ve vlastnostech, předsudky v označení a podobnými faktory. +* Prozkoumat statistiky svého datasetu výběrem různých filtrů pro rozdělení dat do různých dimenzí (také známých jako kohorty). +* Pochopit rozložení svého datasetu napříč různými kohortami a skupinami funkcí. +* Určit, zda vaše nálezy týkající se spravedlnosti, analýzy chyb a kauzality (odvozené z jiných komponent panelu) jsou výsledkem rozložení vašeho datasetu. +* Rozhodnout, v kterých oblastech je potřeba shromáždit více dat ke zmírnění chyb vyplývajících z problémů s reprezentací, šumu štítků, šumu funkcí, zaujatosti štítků a podobných faktorů. -## Interpretace modelu +## Interpretabilita modelu -Modely strojového učení mají tendenci být "černými skříňkami". Pochopení, které klíčové vlastnosti dat ovlivňují predikci modelu, může být náročné. Je důležité poskytnout transparentnost ohledně toho, proč model dělá určitou predikci. Například pokud systém AI předpovídá, že diabetický pacient je ohrožen opětovným přijetím do nemocnice během méně než 30 dnů, měl by být schopen poskytnout podpůrná data, která vedla k jeho predikci. Mít podpůrné datové indikátory přináší transparentnost, která pomáhá lékařům nebo nemocnicím činit dobře informovaná rozhodnutí. Navíc schopnost vysvětlit, proč model učinil predikci pro konkrétního pacienta, umožňuje odpovědnost vůči zdravotním regulacím. Když používáte modely strojového učení způsoby, které ovlivňují životy lidí, je zásadní pochopit a vysvětlit, co ovlivňuje chování modelu. Vysvětlitelnost a interpretace modelu pomáhá odpovědět na otázky v situacích, jako jsou: +Modely strojového učení bývají černými skříňkami. Pochopit, které klíčové datové funkce ovlivňují předpověď modelu, může být náročné. Je důležité poskytnout transparentnost, proč model dělá určitý předpověď. Například pokud systém AI předpovídá, že diabetický pacient je ohrožen opětovným přijetím do nemocnice během méně než 30 dnů, měl by být schopen poskytnout podpůrná data, která vedla k této předpovědi. Mít podpůrné indikátory dat přináší transparentnost a pomáhá klinikům nebo nemocnicím činit dobře informovaná rozhodnutí. Navíc schopnost vysvětlit, proč model učinil předpověď u jednotlivého pacienta, umožňuje zodpovědnost vzhledem ke zdravotnickým předpisům. Když používáte modely strojového učení způsoby, které ovlivňují životy lidí, je klíčové pochopit a vysvětlit, co ovlivňuje chování modelu. Vysvětlitelnost a interpretabilita modelu pomáhá odpovídat na otázky v situacích jako jsou: * Ladění modelu: Proč můj model udělal tuto chybu? Jak mohu svůj model zlepšit? * Spolupráce člověk-AI: Jak mohu pochopit a důvěřovat rozhodnutím modelu? -* Regulativní shoda: Splňuje můj model právní požadavky? +* Dodržování předpisů: Splňuje můj model právní požadavky? -Komponenta Důležitost vlastností na RAI dashboardu vám pomáhá ladit a získat komplexní pochopení toho, jak model dělá predikce. Je to také užitečný nástroj pro profesionály v oblasti strojového učení a rozhodovací činitele, kteří potřebují vysvětlit a ukázat důkazy o vlastnostech ovlivňujících chování modelu pro regulativní shodu. Uživatelé mohou dále zkoumat globální i lokální vysvětlení, aby ověřili, které vlastnosti ovlivňují predikce modelu. Globální vysvětlení uvádí hlavní vlastnosti, které ovlivnily celkovou predikci modelu. Lokální vysvětlení ukazuje, které vlastnosti vedly k predikci modelu pro konkrétní případ. Schopnost hodnotit lokální vysvětlení je také užitečná při ladění nebo auditu konkrétního případu, aby bylo možné lépe pochopit a interpretovat, proč model učinil přesnou nebo nepřesnou predikci. +Komponenta Důležitost funkcí na panelu RAI vám pomáhá ladit a získat komplexní pochopení, jak model vytváří předpovědi. Je to také užitečný nástroj pro profesionály ve strojovém učení a rozhodovatele k vysvětlování a prokazování vlivu funkcí na chování modelu v rámci dodržování předpisů. Dále mohou uživatelé prozkoumat jak globální, tak lokální vysvětlení, aby ověřili, které funkce ovlivňují předpověď modelu. Globální vysvětlení uvádějí hlavní funkce, které ovlivnily celkovou předpověď modelu. Lokální vysvětlení ukazují, které funkce vedly k předpovědi modelu pro jednotlivý případ. Schopnost hodnotit lokální vysvětlení je také užitečná při ladění nebo auditu konkrétního případu, aby lépe pochopili a interpretovali, proč model udělal přesnou nebo nepřesnou předpověď. -![Komponenta Důležitost vlastností na RAI dashboardu](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +![Komponenta Důležitost funkcí panelu RAI](../../../../translated_images/cs/9-feature-importance.cd3193b4bba3fd4b.webp) -* Globální vysvětlení: Například, které vlastnosti ovlivňují celkové chování modelu pro opětovné přijetí diabetických pacientů do nemocnice? -* Lokální vysvětlení: Například, proč byl diabetický pacient starší 60 let s předchozími hospitalizacemi předpovězen jako opětovně přijatý nebo nepřijatý do nemocnice během 30 dnů? +* Globální vysvětlení: Například, jaké funkce ovlivňují celkové chování modelu předpovědi opětovného přijetí diabetického pacienta do nemocnice? +* Lokální vysvětlení: Například, proč byl diabetický pacient starší 60 let s předchozími hospitalizacemi předpovězen k opětovnému přijetí nebo ne do 30 dnů? -V procesu ladění výkonu modelu napříč různými kohortami Důležitost vlastností ukazuje, jakou úroveň vlivu má vlastnost napříč kohortami. Pomáhá odhalit anomálie při porovnávání úrovně vlivu vlastnosti na chybné predikce modelu. Komponenta Důležitost vlastností může ukázat, které hodnoty ve vlastnosti pozitivně nebo negativně ovlivnily výsledek modelu. Například pokud model učinil nepřesnou predikci, komponenta vám umožňuje podrobněji prozkoumat a určit, které vlastnosti nebo hodnoty vlastností ovlivnily predikci. Tato úroveň detailu pomáhá nejen při ladění, ale poskytuje transparentnost a odpovědnost v auditních situacích. Nakonec komponenta může pomoci identifikovat problémy se spravedlností. Například pokud citlivá vlastnost, jako je etnicita nebo pohlaví, má vysoký vliv na predikci modelu, může to být známka rasové nebo -- **Nad- nebo pod-reprezentace**. Myšlenka spočívá v tom, že určitá skupina není zastoupena v určité profesi, a jakákoli služba nebo funkce, která toto nadále podporuje, přispívá k poškození. +Při ladění modelu a zkoumání jeho výkonu napříč různými kohortami ukazuje Důležitost funkcí míru dopadu, kterou má funkce napříč kohortami. Pomáhá odhalit anomálie při srovnávání úrovně vlivu funkce na chybná předpovědní modelu. Komponenta Důležitost funkcí může ukázat, které hodnoty v funkci pozitivně nebo negativně ovlivnily výsledek modelu. Například pokud model udělal nepřesnou předpověď, komponenta vám umožní detailně rozklíčovat, které funkce nebo hodnoty funkcí vedly k předpovědi. Tato úroveň detailu pomáhá nejen při ladění, ale poskytuje transparentnost a zodpovědnost v auditorských situacích. Nakonec komponenta vám může pomoci identifikovat problém spravedlnosti. Například, pokud citlivá funkce, jako je etnicita nebo pohlaví, je velmi vlivná v řízení předpovědi modelu, může to být znak rasové nebo pohlavní zaujatosti modelu. -### Azure RAI dashboard +![Důležitost funkcí](../../../../translated_images/cs/9-features-influence.3ead3d3f68a84029.webp) -[Azure RAI dashboard](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) je postaven na open-source nástrojích vyvinutých předními akademickými institucemi a organizacemi, včetně Microsoftu. Tyto nástroje jsou klíčové pro datové vědce a vývojáře AI, aby lépe porozuměli chování modelů, objevovali a zmírňovali nežádoucí problémy v modelech AI. +Použijte interpretabilitu, když potřebujete: -- Naučte se, jak používat různé komponenty, přečtením dokumentace k RAI dashboardu [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) +* Určit, jak důvěryhodné jsou předpovědi vašeho AI systému pochopením, které funkce jsou pro předpovědi nejdůležitější. +* Přistoupit k ladění modelu nejprve jeho pochopením a zjistit, zda model používá zdravé funkce nebo jen falešné korelace. +* Odhalit potenciální zdroje nespravedlnosti tím, že pochopíte, zda model staví předpovědi na citlivých funkcích nebo těch, které jsou s nimi silně korelovány. +* Budovat důvěru uživatelů v rozhodnutí modelu generováním lokálních vysvětlení, která ilustrují jejich výsledky. +* Dokončit regulační audit AI systému k validaci modelů a sledování dopadů rozhodnutí modelu na lidi. -- Podívejte se na některé ukázkové [notebooky RAI dashboardu](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) pro ladění odpovědnějších scénářů AI v Azure Machine Learning. +## Závěr ---- -## 🚀 Výzva +Všechny komponenty panelu RAI jsou praktické nástroje, které vám pomohou vytvářet modely strojového učení, které jsou méně škodlivé a důvěryhodnější pro společnost. Zlepšují prevenci ohrožení lidských práv; diskriminace nebo vylučování určitých skupin z životních příležitostí; a riziko fyzického nebo psychického poškození. Také pomáhají budovat důvěru v rozhodnutí vašeho modelu generováním lokálních vysvětlení, která ilustrují výsledky. Některé potenciální škody lze klasifikovat jako: + +- **Přidělování**, pokud je například jedno pohlaví nebo etnicita upřednostňována před jiným. +- **Kvalita služby**. Pokud data trénujete pro jeden konkrétní scénář, ale realita je mnohem složitější, vede to k špatně fungující službě. +- **Stereotypizace**. Přisuzování dané skupině předem přiřazených charakteristik. -Abychom zabránili zavádění statistických nebo datových předsudků, měli bychom: +- **Diskreditace**. Nespravedlivě kritizovat a označovat něco nebo někoho. +- **Nadměrné nebo nedostatečné zastoupení**. Představa je, že určitá skupina není vidět v určité profesi, a jakákoli služba nebo funkce, která to nadále podporuje, přispívá ke škodě. -- zajistit rozmanitost zázemí a perspektiv mezi lidmi pracujícími na systémech -- investovat do datových sad, které odrážejí rozmanitost naší společnosti -- vyvíjet lepší metody pro detekci a nápravu předsudků, když k nim dojde +### Azure RAI dashboard + +[Azure RAI dashboard](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) je postaven na open-source nástrojích vyvinutých předními akademickými institucemi a organizacemi včetně Microsoftu, které jsou zásadní pro datové vědce a vývojáře AI, aby lépe porozuměli chování modelů, objevovali a zmírňovali nežádoucí problémy u AI modelů. -Přemýšlejte o reálných situacích, kde je nespravedlnost zřejmá při vytváření a používání modelů. Co dalšího bychom měli zvážit? +- Naučte se používat různé komponenty tím, že si prohlédnete dokumentaci pro RAI dashboard. [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) -## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/) -## Přehled a samostudium +- Podívejte se na některé ukázkové notebooky pro RAI dashboard [sample notebooks](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) pro ladění scénářů odpovědné AI v Azure Machine Learning. + +--- +## 🚀 Výzva + +Abychom zabránili vzniku statistických nebo datových zkreslení od samého začátku, měli bychom: -V této lekci jste se naučili některé praktické nástroje pro začlenění odpovědné AI do strojového učení. +- mít mezi lidmi pracujícími na systémech různorodé zázemí a pohledy +- investovat do datových sad, které odrážejí rozmanitost naší společnosti +- vyvíjet lepší metody pro detekci a korekci zkreslení, když k němu dojde -Podívejte se na tento workshop, abyste se ponořili hlouběji do témat: +Zamyslete se nad reálnými scénáři, kde je nespravedlnost evidentní při tvorbě a používání modelů. Co dalšího bychom měli zvážit? + +## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/) +## Revize & Samostudium + +V této lekci jste se naučili některé praktické nástroje pro začleňování odpovědné AI v strojovém učení. -- Responsible AI Dashboard: Jednotné místo pro operacionalizaci RAI v praxi od Besmiry Nushi a Mehrnoosh Sameki +Podívejte se na tento workshop, abyste se podrobněji ponořili do témat: -[![Responsible AI Dashboard: Jednotné místo pro operacionalizaci RAI v praxi](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: Jednotné místo pro operacionalizaci RAI v praxi") +- Responsible AI Dashboard: Komplexní řešení pro praktickou implementaci odpovědné AI od Besmira Nushi a Mehrnoosh Sameki -> 🎥 Klikněte na obrázek výše pro video: Responsible AI Dashboard: Jednotné místo pro operacionalizaci RAI v praxi od Besmiry Nushi a Mehrnoosh Sameki +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](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") -Odkazujte na následující materiály, abyste se dozvěděli více o odpovědné AI a jak vytvářet důvěryhodnější modely: +> 🎥 Klikněte na obrázek nahoře pro video: Responsible AI Dashboard: Komplexní řešení pro praktickou implementaci odpovědné AI od Besmira Nushi a Mehrnoosh Sameki + +Pro další poznatky o odpovědné AI a jak budovat důvěryhodnější modely použijte následující materiály: -- Microsoftovy nástroje RAI dashboardu pro ladění modelů ML: [Responsible AI tools resources](https://aka.ms/rai-dashboard) +- Microsoft nástroje RAI dashboard pro ladění ML modelů: [Responsible AI tools resources](https://aka.ms/rai-dashboard) -- Prozkoumejte sadu nástrojů Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox) +- Prozkoumejte soupravu nástrojů Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox) -- Microsoftovo centrum zdrojů RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Microsoft RAI resource center: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoftova výzkumná skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Výzkumná skupina Microsoftu FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -## Úkol +## Zadání [Prozkoumejte RAI dashboard](assignment.md) --- -**Prohlášení**: -Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file + +**Prohlášení o omezení odpovědnosti**: +Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu. + \ No newline at end of file diff --git a/translations/hu/.co-op-translator.json b/translations/hu/.co-op-translator.json index fac84676b..76823e35e 100644 --- a/translations/hu/.co-op-translator.json +++ b/translations/hu/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "hu" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T15:59:53+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T04:26:34+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "hu" }, @@ -54,8 +54,8 @@ "language_code": "hu" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T15:21:00+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T04:23:00+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "hu" }, @@ -72,8 +72,8 @@ "language_code": "hu" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T15:24:45+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T04:24:13+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "hu" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "hu" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T04:07:56+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "hu" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:02:03+00:00", @@ -355,7 +361,7 @@ }, "6-NLP/5-Hotel-Reviews-2/README.md": { "original_hash": "2c742993fe95d5bcbb2846eda3d442a1", - "translation_date": "2025-09-05T17:07:14+00:00", + "translation_date": "2026-07-14T04:22:01+00:00", "source_file": "6-NLP/5-Hotel-Reviews-2/README.md", "language_code": "hu" }, @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T16:38:33+00:00", + "translation_date": "2026-07-14T04:25:27+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "hu" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-05T15:54:19+00:00", + "translation_date": "2026-07-14T04:27:49+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "hu" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "hu" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "hu", + "failure_date": "2026-07-14T04:20:21+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-05T15:48:22+00:00", diff --git a/translations/hu/1-Introduction/3-fairness/README.md b/translations/hu/1-Introduction/3-fairness/README.md index 434f554bb..634e62920 100644 --- a/translations/hu/1-Introduction/3-fairness/README.md +++ b/translations/hu/1-Introduction/3-fairness/README.md @@ -1,134 +1,167 @@ -# Gépi tanulási megoldások építése felelős AI-val - -![A felelős AI összefoglalása a gépi tanulásban egy sketchnote-ban](../../../../sketchnotes/ml-fairness.png) -> Sketchnote készítette: [Tomomi Imura](https://www.twitter.com/girlie_mac) +# Felelős MI alapú gépi tanulási megoldások építése + +![Összefoglaló a felelős MI-ről a gépi tanulásban egy vázlatrajzon](../../../../translated_images/hu/ml-fairness.ef296ebec6afc98a.webp) +> Vázlatrajz: [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/) - + ## Bevezetés -Ebben a tananyagban elkezdjük felfedezni, hogyan hat a gépi tanulás a mindennapi életünkre. Már most is rendszerek és modellek vesznek részt napi döntéshozatali feladatokban, például egészségügyi diagnózisokban, hitelkérelmek jóváhagyásában vagy csalások észlelésében. Ezért fontos, hogy ezek a modellek megbízható eredményeket nyújtsanak. Ahogy bármely szoftveralkalmazás, az AI rendszerek is elmaradhatnak az elvárásoktól, vagy nemkívánatos eredményt hozhatnak. Ezért elengedhetetlen, hogy megértsük és magyarázni tudjuk egy AI modell viselkedését. +Ebben a tananyagban elkezded felfedezni, hogyan befolyásolja a gépi tanulás a mindennapi életünket. Már most is rendszerek és modellek vesznek részt napi döntéshozatali folyamatokban, például egészségügyi diagnózisokban, kölcsönkérelmek elbírálásában vagy csalás felismerésében. Ezért fontos, hogy ezek a modellek jól működjenek, és megbízható eredményeket nyújtsanak. Ahogyan bármely szoftveralkalmazás, az MI rendszerek is elvárásokat nem teljesíthetnek vagy nem kívánt kimenetet produkálhatnak. Ezért elengedhetetlen megérteni és megmagyarázni egy MI modell viselkedését. -Képzeljük el, mi történik, ha az adatok, amelyeket ezeknek a modelleknek az építéséhez használunk, bizonyos demográfiai csoportokat nem tartalmaznak, például faji, nemi, politikai nézetek, vallás, vagy aránytalanul képviselik ezeket. Mi történik, ha a modell kimenete egyes demográfiai csoportokat előnyben részesít? Mi a következmény az alkalmazásra nézve? Továbbá, mi történik, ha a modell káros hatást gyakorol, és árt az embereknek? Ki felelős az AI rendszerek viselkedéséért? Ezeket a kérdéseket fogjuk megvizsgálni ebben a tananyagban. +Képzeld el, mi történhet, ha az általad használt adatok egyes demográfiai csoportokat, például fajt, nemeket, politikai nézeteket, vallást hiányosan vagy aránytalanul képviselnek a modellek építése során. Mi történik, ha a modell kimenetét úgy értelmezik, hogy egyes demográfiai csoportok javára torzít? Mi ennek a következménye az alkalmazásra nézve? Ráadásul mi történik, ha a modell káros végkimenetelt produkál és árt az embereknek? Ki felel az MI rendszer viselkedéséért? Ezek néhány kérdés, amelyeket ebben a tananyagban fogunk megvizsgálni. -Ebben a leckében: +Ebben az órában: -- Felhívjuk a figyelmet a gépi tanulásban való méltányosság fontosságára és a méltányossággal kapcsolatos károkra. -- Megismerkedünk azzal a gyakorlattal, hogy a szélsőséges eseteket és szokatlan forgatókönyveket vizsgáljuk a megbízhatóság és biztonság érdekében. -- Megértjük, miért fontos mindenkit felhatalmazni inkluzív rendszerek tervezésével. -- Felfedezzük, milyen létfontosságú a személyes adatok és az emberek biztonságának védelme. -- Megértjük, miért fontos az "üvegdoboz" megközelítés az AI modellek viselkedésének magyarázatában. -- Tudatosítjuk, hogy az elszámoltathatóság elengedhetetlen az AI rendszerekbe vetett bizalom kiépítéséhez. +- Növelni fogod az igazságosság fontosságával kapcsolatos tudatosságodat a gépi tanulásban, valamint az igazságossággal kapcsolatos ártalmak terén. +- Megismerkedsz a szokatlan esetek és kiugró értékek feltárásának gyakorlatával a megbízhatóság és biztonság érdekében. +- Megérted, hogy miért fontos mindenkit képessé tenni a befogadó rendszerek megtervezésével. +- Feltárjuk, milyen létfontosságú az adatok és emberek magánéletének és biztonságának védelme. +- Meglátod, hogy miért fontos átlátható („üveg doboz”) megközelítés az MI modellek viselkedésének magyarázatához. +- Tudatos leszel arról, hogy a felelősségvállalás mennyire elengedhetetlen a bizalom megteremtéséhez az MI rendszerekben. ## Előfeltétel -Előfeltételként kérjük, végezze el a "Felelős AI alapelvei" tanulási útvonalat, és nézze meg az alábbi videót a témáról: +Előfeltételként kérjük, vedd fel a "Felelős MI elvei" tanulási útvonalat, és nézd meg az alábbi videót a témában: -Tudjon meg többet a felelős AI-ról ezen a [tanulási útvonalon](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Tudj meg többet a Felelős MI-ről ezen a [Tanulási Útvonalon](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Microsoft megközelítése a felelős AI-hoz](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft megközelítése a felelős AI-hoz") +[![Microsoft megközelítése a Felelős MI-hez](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft megközelítése a Felelős MI-hez") -> 🎥 Kattintson a fenti képre a videóért: Microsoft megközelítése a felelős AI-hoz +> 🎥 Kattints a képre a videóért: Microsoft megközelítése a Felelős MI-hez -## Méltányosság +## Igazságosság -Az AI rendszereknek mindenkit méltányosan kell kezelniük, és el kell kerülniük, hogy hasonló csoportokat különböző módon érintsenek. Például, amikor az AI rendszerek orvosi kezelési tanácsokat, hitelkérelmeket vagy foglalkoztatási ajánlásokat nyújtanak, ugyanazokat az ajánlásokat kell tenniük mindenki számára, akik hasonló tünetekkel, pénzügyi helyzettel vagy szakmai képesítéssel rendelkeznek. Mindannyian örökölt előítéleteket hordozunk magunkban, amelyek befolyásolják döntéseinket és cselekedeteinket. Ezek az előítéletek megjelenhetnek az adatokban, amelyeket az AI rendszerek képzéséhez használunk. Az ilyen manipuláció néha akaratlanul történik. Gyakran nehéz tudatosan felismerni, mikor vezetünk be előítéletet az adatokba. +Az MI rendszereknek mindenkit igazságosan kell kezelniük, és kerülnie kell, hogy hasonló csoportokat eltérően érintsenek. Például amikor MI rendszerek orvosi kezelésben, kölcsönkérelmek elbírálásában vagy foglalkoztatásban adnak útmutatást, akkor hasonló tünetekkel, anyagi háttérrel vagy szakmai képesítéssel rendelkező embereknek ugyanazokat a javaslatokat kell adniuk. Mindannyiunkban öröklött elfogultságok vannak, amelyek döntéseinket és cselekedeteinket befolyásolják. Ezek az elfogultságok a gépi tanulási modellek képzéséhez használt adatokban is megjelenhetnek. Az ilyen torzítás néha akaratlanul is előfordulhat. Sokszor tudatosan nehéz megállapítani, mikor vezetünk be elfogultságot az adatba. -**„Méltánytalanság”** olyan negatív hatásokat vagy „károkat” foglal magában, amelyek egy csoportot érintenek, például faji, nemi, életkori vagy fogyatékossági státusz alapján. A méltányossággal kapcsolatos főbb károk a következők: +**„Igazságtalanság”** negatív hatásokat vagy „károkat” jelent egy adott csoport számára, például faji, nemi, életkori vagy fogyatékossági státusz alapján definiált embereket. Az igazságossággal kapcsolatos legfőbb károk az alábbi kategóriákba sorolhatók: -- **Elosztás**, ha például egy nem vagy etnikum előnyben részesül egy másikkal szemben. -- **Szolgáltatás minősége**. Ha az adatokat egy konkrét forgatókönyvre képezzük, de a valóság sokkal összetettebb, az gyenge teljesítményű szolgáltatáshoz vezet. Például egy kézmosó adagoló, amely nem érzékeli a sötét bőrű embereket. [Referencia](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Becsmérlés**. Valami vagy valaki igazságtalan kritizálása és címkézése. Például egy képfelismerő technológia hírhedten gorillának címkézte a sötét bőrű emberek képeit. -- **Túl- vagy alulreprezentáció**. Az a gondolat, hogy egy bizonyos csoportot nem látunk egy bizonyos szakmában, és minden szolgáltatás vagy funkció, amely ezt tovább erősíti, hozzájárul a kárhoz. -- **Sztereotipizálás**. Egy adott csoportot előre meghatározott attribútumokkal társítani. Például egy angol és török közötti nyelvi fordítórendszer pontatlanságokat mutathat a nemekhez kapcsolódó sztereotip asszociációk miatt. +- **Elosztás**, ha például egy nem vagy etnikum előnyben részesül a másikkal szemben. +- **Szolgáltatás minősége**. Ha egy specifikus szcenárióra tanítasz adatot, de a valóság sokkal összetettebb, az gyenge teljesítményű szolgáltatáshoz vezet. Például egy kézmosószappan adagoló látszólag nem érzékeli a sötét bőrű embereket. [Forrás](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Megvetés**. Valami vagy valaki igazságtalan kritikája és bántó címkézése. Például egy képosztályozó technológia hírhedten sötét bőrű emberek képeit majmokként címkézte. +- **Túl- vagy alulreprezentálás**. Az az elképzelés, hogy egy adott csoport nem látható egy bizonyos szakmában, és minden olyan szolgáltatás vagy funkció, amely ezt fenntartja, káros hatással van. +- **Sztenderdizálás**. Egy adott csoportot előre meghatározott tulajdonságokkal társítanak. Például egy angol és török nyelv közötti fordító rendszer pontatlanságokkal küzdhet a nemi sztereotípiák miatt. -![Fordítás törökre](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> Fordítás törökre +![fordítás törökre](../../../../translated_images/hu/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> fordítás törökre -![Fordítás vissza angolra](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> Fordítás vissza angolra +![fordítás vissza angolra](../../../../translated_images/hu/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> fordítás vissza angolra -Az AI rendszerek tervezése és tesztelése során biztosítanunk kell, hogy az AI méltányos legyen, és ne legyen programozva előítéletes vagy diszkriminatív döntések meghozatalára, amelyeket az emberek számára is tiltanak. Az AI és gépi tanulás méltányosságának garantálása továbbra is összetett társadalmi-technikai kihívás. +MI rendszerek tervezése és tesztelése során biztosítani kell, hogy az MI igazságos legyen, és ne programozzanak be elfogult vagy diszkriminatív döntéseket, amit az embereknek is tilos tenni. Az igazságosság garantálása MI-ben és gépi tanulásban összetett szociotechnikai kihívás marad. ### Megbízhatóság és biztonság -Az AI rendszereknek megbízhatónak, biztonságosnak és következetesnek kell lenniük normál és váratlan körülmények között. Fontos tudni, hogyan viselkednek az AI rendszerek különböző helyzetekben, különösen szélsőséges esetekben. Az AI megoldások építésekor jelentős figyelmet kell fordítani arra, hogyan kezeljük az AI megoldások által tapasztalt különféle körülményeket. Például egy önvezető autónak az emberek biztonságát kell elsődleges prioritásként kezelnie. Ennek eredményeként az autót működtető AI-nak figyelembe kell vennie az összes lehetséges forgatókönyvet, amelyet az autó találhat, például éjszaka, viharok vagy hóviharok, gyerekek, akik átszaladnak az úton, háziállatok, útépítések stb. Az AI rendszer megbízható és biztonságos kezelése széles körülmények között tükrözi az adatkutató vagy AI fejlesztő által a rendszer tervezése vagy tesztelése során figyelembe vett előrelátás szintjét. +A bizalom kiépítéséhez az MI rendszereknek megbízhatónak, biztonságosnak és következetesnek kell lenniük normál és váratlan körülmények között egyaránt. Fontos tudni, hogyan viselkednek az MI rendszerek különféle helyzetekben, különösen, ha kiugró esetekről van szó. MI megoldások építésekor nagy figyelmet kell fordítani arra, hogyan kezeljük azokat a sokféle helyzetet, amivel az MI találkozhat. Például az önvezető autónak mindenekelőtt az emberek biztonságát kell előtérbe helyeznie. Ezért az autót működtető MI-nek minden lehetséges helyzetet figyelembe kell vennie, például éjszaka, viharban vagy hóviharban, gyerekek átfutása az úton, háziállatok, útlezárások stb. Az, hogy egy MI rendszer mennyire képes megbízhatóan és biztonságosan kezelni szélsőséges helyzeteket, azt tükrözi, mennyire előrelátó volt az adatkutató vagy MI fejlesztő a rendszer tervezése vagy tesztelése során. + +> [🎥 Kattints ide a videóért: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) -> [🎥 Kattintson ide a videóért: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +### Befogadás -### Inkluzivitás +Az MI rendszereket úgy kell tervezni, hogy mindenkit bevonjanak és képessé tegyenek. MI rendszerek tervezése és megvalósítása során az adatkutatók és MI fejlesztők azonosítják és kezelik az esetleges akadályokat, amelyek véletlenül kizárhatnak embereket. Például a világon 1 milliárd fogyatékkal élő ember él. Az MI előrehaladtával ezek az emberek könnyebben férhetnek hozzá széles körű információkhoz és lehetőségekhez mindennapi életük során. Az akadályok kezelése lehetőséget teremt innovációra és olyan MI termékek fejlesztésére, amelyek jobb élményt nyújtanak mindenki számára. -Az AI rendszereket úgy kell megtervezni, hogy mindenkit bevonjanak és felhatalmazzanak. Az AI rendszerek tervezése és megvalósítása során az adatkutatók és AI fejlesztők azonosítják és kezelik a rendszerben lévő potenciális akadályokat, amelyek akaratlanul kizárhatnak embereket. Például világszerte 1 milliárd ember él fogyatékossággal. Az AI fejlődésével könnyebben hozzáférhetnek információkhoz és lehetőségekhez a mindennapi életükben. Az akadályok kezelésével lehetőséget teremtünk az innovációra és az AI termékek fejlesztésére, amelyek jobb élményeket nyújtanak mindenki számára. +> [🎥 Kattints ide a videóért: befogadás az MI-ben](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -> [🎥 Kattintson ide a videóért: inkluzivitás az AI-ban](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +### Biztonság és adatvédelem -### Biztonság és adatvédelem +Az MI rendszereknek biztonságosnak kell lenniük, és tiszteletben kell tartaniuk az emberek magánéletét. Az emberek kevésbé bíznak meg olyan rendszerekben, amelyek veszélyeztetik magánéletüket, adataikat vagy életüket. Gépi tanulási modellek képzésekor jó eredmények eléréséhez adatokra támaszkodunk. Ennek során figyelembe kell venni az adatok származását és sértetlenségét. Például az adatokat a felhasználó szolgáltatta vagy nyilvánosan hozzáférhetőek? Ezután az adatfeldolgozás során létfontosságú olyan MI rendszereket fejleszteni, amelyek képesek védelmezni az érzékeny információkat és ellenállni a támadásoknak. Mivel az MI egyre elterjedtebb, a magánélet védelme és fontos személyes vagy üzleti információk védelme egyre kritikusabbá és összetettebbé válik. A magánélet és adatbiztonság különösen nagy figyelmet igényel az MI-nél, mert az adatokhoz való hozzáférés elengedhetetlen az MI rendszerek számára, hogy pontos és megalapozott előrejelzéseket és döntéseket hozzanak az emberekről. -Az AI rendszereknek biztonságosnak kell lenniük, és tiszteletben kell tartaniuk az emberek magánéletét. Az emberek kevésbé bíznak azokban a rendszerekben, amelyek veszélyeztetik a magánéletüket, információikat vagy életüket. A gépi tanulási modellek képzésekor az adatokra támaszkodunk a legjobb eredmények elérése érdekében. Ennek során figyelembe kell venni az adatok eredetét és integritását. Például, az adatok felhasználói beküldésűek vagy nyilvánosan elérhetők voltak? Továbbá, az adatokkal való munka során elengedhetetlen olyan AI rendszerek fejlesztése, amelyek képesek megvédeni a bizalmas információkat és ellenállni a támadásoknak. Ahogy az AI egyre elterjedtebbé válik, a magánélet védelme és a fontos személyes és üzleti információk biztonságának megőrzése egyre kritikusabbá és összetettebbé válik. Az adatvédelem és adatbiztonság kérdései különösen nagy figyelmet igényelnek az AI esetében, mivel az adatokhoz való hozzáférés elengedhetetlen az AI rendszerek számára, hogy pontos és megalapozott előrejelzéseket és döntéseket hozzanak az emberekről. +> [🎥 Kattints ide a videóért: biztonság az MI-ben](https://www.microsoft.com/videoplayer/embed/RE4voJF) -> [🎥 Kattintson ide a videóért: biztonság az AI-ban](https://www.microsoft.com/videoplayer/embed/RE4voJF) +- Iparágként jelentős előrelépéseket értünk el az adatvédelem és biztonság terén, amit nagymértékben a GDPR (Általános Adatvédelmi Rendelet) szabályozásai ösztönöznek. +- Azonban az MI rendszereknél el kell ismernünk a feszültséget a személyes adatok növekvő szükséglete és a magánélet védelme között. +- Ahogy az internet megjelenésekor a hálózatba kötött számítógépek révén, úgy napjainkban is nagymértékben megnőtt az MI-hez kapcsolódó biztonsági problémák száma. +- Ugyanakkor azt is láttuk, hogy az MI-t a biztonság javítására is használják. Például a legtöbb modern vírusirtó szoftvert ma MI heurisztikák vezérlik. +- Biztosítani kell, hogy az adatkutatási folyamataink harmonikusan illeszkedjenek a legújabb adatvédelmi és biztonsági gyakorlatokhoz. -- Az iparág jelentős előrelépéseket tett az adatvédelem és biztonság terén, amelyet jelentősen ösztönöztek olyan szabályozások, mint a GDPR (Általános Adatvédelmi Rendelet). -- Az AI rendszerekkel azonban el kell ismernünk a feszültséget a személyes adatok szükségessége és a magánélet védelme között. -- Ahogy az internethez kapcsolt számítógépek születésével, az AI-val kapcsolatos biztonsági problémák száma is jelentősen megnőtt. -- Ugyanakkor az AI-t a biztonság javítására is használjuk. Például a legtöbb modern víruskereső szkennert AI-alapú heurisztikák vezérlik. -- Biztosítanunk kell, hogy az adatkutatási folyamataink harmonikusan illeszkedjenek a legújabb adatvédelmi és biztonsági gyakorlatokhoz. ### Átláthatóság +Az MI rendszereknek érthetőknek kell lenniük. Az átláthatóság fontos része az MI rendszerek és azok elemeinek viselkedésének magyarázata. Az MI rendszerek jobb megértése megköveteli, hogy az érintettek megértsék, hogyan és miért működnek, hogy felismerjék a potenciális teljesítményproblémákat, biztonsági és adatvédelmi aggályokat, elfogultságokat, kizáró gyakorlatokat vagy nem kívánt következményeket. Úgy véljük, hogy azoknak, akik MI rendszereket használnak, őszintén és nyíltan kell beszámolniuk arról, mikor, miért és hogyan döntöttek a bevetésükről, valamint a rendszerek korlátairól is. Például, ha egy bank egy MI rendszert használ fogyasztói hitel döntések támogatására, fontos megvizsgálni az eredményeket és megérteni, mely adatok befolyásolják a rendszer javaslatait. A kormányok elkezdték szabályozni az MI-t az iparágakban, ezért az adatkutatóknak és szervezeteknek meg kell tudniuk magyarázni, hogy egy MI rendszer megfelel-e a szabályozási előírásoknak, különösen, ha nem kívánt eredmény született. + +> [🎥 Kattints ide a videóért: átláthatóság az MI-ben](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- Mivel az MI rendszerek annyira összetettek, nehéz megérteni működésüket és értelmezni az eredményeket. +- Ez a megértés hiánya befolyásolja, hogy hogyan kezelik, működtetik és dokumentálják ezeket a rendszereket. +- Ennél is fontosabb, hogy ez a megértés hiánya befolyásolja az ezeket a rendszereket használó döntéseket. + +### Felelősségre vonhatóság + +Azoknak, akik MI rendszereket terveznek és alkalmaznak, felelősséget kell vállalniuk a rendszerek működéséért. A felelősség különösen fontos érzékeny technológiák, mint az arcfelismerés esetén. Az utóbbi időben nőtt az érdeklődés az arcfelismerő technológia iránt, különösen a rendvédelmi szervezetek részéről, akik ezt a technológiát olyan célokra látják hasznosnak, mint eltűnt gyermekek felkutatása. Ugyanakkor ezek a technológiák potenciálisan felhasználhatók a kormányok által az állampolgárok alapvető szabadságainak veszélyeztetésére, például az adott személyek folyamatos megfigyelésének engedélyezésére. Ezért az adatkutatóknak és szervezeteknek felelősséget kell vállalniuk az MI rendszerük hatásaiért az egyedekre vagy a társadalomra nézve. + +[![Vezető MI kutató figyelmeztet az arcfelismerés által okozott tömeges megfigyelésre](../../../../translated_images/hu/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft megközelítése a Felelős MI-hez") + +> 🎥 Kattints a képre a videóért: Figyelmeztetések az arcfelismerés által okozott tömeges megfigyelésre + +Végső soron egyik legnagyobb kérdés a mi generációnknak, az elsőnek, amely az MI-t bevezeti a társadalomba, az, hogyan biztosítsuk, hogy a számítógépek felelősséggel tartozzanak az emberek felé, és hogyan biztosítsuk, hogy a számítógépeket tervező emberek mindenkihez felelősséggel tartozzanak. + +## Hatásértékelés + +Mielőtt gépi tanulási modellt képeznénk, fontos hatásértékelést végezni az MI rendszer céljának megértéséhez; annak tervezett használatához; hogy hol fogják alkalmazni; és kik fognak interakcióba lépni a rendszerrel. Ezek a jelöltek vagy tesztelők számára hasznosak a rendszer értékelésekor, hogy tudják, milyen tényezőket vegyenek figyelembe a potenciális kockázatok és várható következmények azonosításakor. + +Az alábbi területekre kell fókuszálni a hatásértékelés során: -Az AI rendszereknek érthetőnek kell lenniük. Az átláthatóság kulcsfontosságú része az AI rendszerek és azok összetevőinek viselkedésének magyarázata. Az AI rendszerek megértésének javítása megköveteli, hogy az érintettek megértsék, hogyan és miért működnek, hogy azonosítani tudják a lehetséges teljesítményproblémákat, biztonsági és adatvédelmi aggályokat, előítéleteket, kizáró gyakorlatokat vagy nem szándékos eredményeket. Úgy gondoljuk, hogy azoknak, akik AI rendszereket használnak, őszintének és nyíltnak kell lenniük arról, hogy mikor, miért és hogyan döntenek azok alkalmazása mellett. Valamint a rendszerek korlátairól. Például, ha egy bank AI rendszert használ a fogyasztói hiteldöntések támogatására, fontos megvizsgálni az eredményeket, és megérteni, hogy mely adatok befolyásolják a rendszer ajánlásait. A kormányok elkezdték szabályozni az AI-t az iparágakban, így az adatkutatóknak és szervezeteknek magyarázatot kell adniuk arra, hogy az AI rendszer megfelel-e a szabályozási követelményeknek, különösen, ha nem kívánatos eredmény születik. +* **Káros hatás az egyénekre**. Fontos tisztában lenni minden korlátozással vagy előírással, a támogatott használaton kívüli alkalmazással vagy ismert korlátozásokkal, amelyek akadályozhatják a rendszer működését annak érdekében, hogy ne használják olyan módon, amely ártalmat okozhat az egyéneknek. +* **Adatigények**. Az, hogy megértsük, hogyan és hol használja a rendszer az adatokat, lehetővé teszi a felülvizsgálók számára, hogy felmérjék az esetleges adatvédelmi szabályozásokat, például GDPR vagy HIPAA előírásokat. Emellett vizsgálják meg, van-e elegendő adatforrás és mennyiség a képzéshez. +* **Hatás összefoglalása**. Gyűjtsünk listát a potenciális károkról, amelyek a rendszer használatából eredhetnek. A gépi tanulás életciklusa során vizsgáljuk felül, hogy a felmerült problémákat kezelik vagy mérséklik-e. +* **Alkalmazható célok** a hat fő elv mindegyikére. Értékeljük, hogy az egyes elvek céljai teljesülnek-e, és hogy vannak-e hiányosságok. -> [🎥 Kattintson ide a videóért: átláthatóság az AI-ban](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Mivel az AI rendszerek nagyon összetettek, nehéz megérteni, hogyan működnek és értelmezni az eredményeket. -- Ez a megértés hiánya befolyásolja, hogyan kezelik, üzemeltetik és dokumentálják ezeket a rendszereket. -- Ez a megértés hiánya még fontosabb módon befolyásolja azokat a döntéseket, amelyeket ezeknek a rendszereknek az eredményei alapján hoznak. +## Hibakeresés felelős MI-vel -### Elszámoltathatóság +Hasonlóan a szoftveralkalmazások hibakereséséhez, az MI rendszer hibakeresése is szükséges a rendszerben lévő problémák azonosításához és megoldásához. Számos tényező befolyásolhatja, hogy egy modell nem teljesít elvárások szerint vagy nem felel meg a felelős MI elveknek. A hagyományos modell teljesítménymutatók többsége egy modell teljesítményének mennyiségi összegzése, amely nem elegendő annak elemzésére, hogyan sérti a modell a felelős MI elveit. Továbbá, a gépi tanulási modell egy fekete doboz, amely megnehezíti megérteni, mi befolyásolja a kimenetét, vagy magyarázatot adni, ha hibázik. A tanfolyam későbbi részében megmutatjuk, hogyan használható a Felelős MI műszerfal az MI rendszerek hibakeresésére. A műszerfal átfogó eszközt nyújt adatkutatóknak és MI fejlesztőknek az alábbiak elvégzéséhez: -Azoknak, akik AI rendszereket terveznek és telepítenek, felelősséget kell vállalniuk rendszereik működéséért. Az elszámoltathatóság szükségessége különösen fontos az érzékeny technológiák, például az arcfelismerés esetében. Az utóbbi időben egyre nagyobb igény mutatkozik az arcfelismerő technológia iránt, különösen a bűnüldöző szervezetek részéről, akik látják a technológia lehetőségeit például eltűnt gyermekek megtalálásában. Azonban ezek a technológiák potenciálisan veszélyeztethetik az állampolgárok alapvető szabadságjogait, például az egyének folyamatos megfigyelésének lehetővé tételével. Ezért az adatkutatóknak és szervezeteknek felelősséget kell vállalniuk AI rendszerük egyénekre vagy társadalomra gyakorolt hatásáért. +* **Hibaanalízis**. A modell hibák eloszlásának azonosítása, ami befolyásolhatja a rendszer igazságosságát vagy megbízhatóságát. +* **Modelláttekintés**. Az eltérések felfedezése a modell teljesítményében az adatcsoportok között. +* **Adatok elemzése**. Az adateloszlás megértése és bármilyen potenciális elfogultság azonosítása az adatokban, amely igazságossági, befogadási és megbízhatósági problémákat okozhat. +* **Modell értelmezhetősége**. Megérteni, mi befolyásolja a modell előrejelzéseit, ami fontos az átláthatóság és felelősség szempontjából. -[![Vezető AI kutató figyelmeztet a tömeges megfigyelés veszélyeire arcfelismeréssel](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft megközelítése a felelős AI-hoz") -> 🎥 Kattintson a fenti képre a videóért: Figyelmeztetés a tömeges megfigyelés veszélyeire arcfelismeréssel +## 🚀 Kihívás + +Az ártalmak kialakulásának megakadályozása érdekében: -Végső soron az egyik legnagyobb kérdés generációnk számára, mint az első generáció, amely AI-t hoz a társadalomba, az, hogyan biztosíthatjuk, hogy a számítógépek továbbra is elszámoltathatók maradjanak az emberek számára, és hogyan biztosíthatjuk, hogy a számítógépeket tervező emberek elszámoltathatók maradjanak mindenki más számára. +- változatos háttérrel és nézőpontokkal rendelkező emberek dolgozzanak a rendszereken +- olyan adatállományokba fektessünk be, amelyek tükrözik társadalmunk sokszínűségét +- jobb módszereket dolgozzunk ki a gépi tanulás életciklusa során a felelős MI hibák felismerésére és javítására -## Hatásvizsgálat +Gondolkodj el valós életbeli helyzeteken, ahol egy modell megbízhatatlansága egyértelműen megjelenik a modellépítés és felhasználás során. Mit kell még figyelembe vennünk? -Mielőtt gépi tanulási modellt képeznénk, fontos hatásvizsgálatot végezni, hogy megértsük az AI rendszer célját; mi a tervezett felhasználás; hol lesz telepítve; és kik fognak interakcióba lépni a rendszerrel. Ezek segítenek a rendszer értékelését végzőknek vagy tesztelőknek, hogy tudják, milyen tényezőket kell figyelembe venniük a lehetséges kockázatok és várható következmények azonosításakor. +## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/) -A hatásvizsgálat során az alábbi területekre kell összpontosítani: +## Összefoglaló & Önálló tanulás + -* **Kedvezőtlen hatás az egyénekre**. Fontos tudatában lenni minden korlátozásnak vagy követelménynek, nem támogatott használatnak vagy ismert korlátozásnak, amelyek akadályozhatják a rendszer teljesítményét, hogy biztosítsuk, hogy a rendszer ne okozzon kárt az egyéneknek. -* **Adatigények**. Az adatok felhasználásának módj -Nézd meg ezt a workshopot, hogy mélyebben elmerülj a témákban: +Ebben a leckében megismerted a gépi tanulásban a méltányosság és igazságtalanság alapfogalmait. + +Nézd meg ezt a workshopot, hogy mélyebben elmerülj a témakörökben: -- A felelős mesterséges intelligencia nyomában: Elvek gyakorlati alkalmazása Besmira Nushi, Mehrnoosh Sameki és Amit Sharma előadásában +- Felelős MI nyomában: Elvek a gyakorlatban Besmira Nushi, Mehrnoosh Sameki és Amit Sharma előadásában -[![Responsible AI Toolbox: Nyílt forráskódú keretrendszer a felelős mesterséges intelligencia építéséhez](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Nyílt forráskódú keretrendszer a felelős mesterséges intelligencia építéséhez") +[![Felelős MI Eszköztár: Nyílt forráskódú keretrendszer felelős MI építéséhez](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") -> 🎥 Kattints a fenti képre a videóért: RAI Toolbox: Nyílt forráskódú keretrendszer a felelős mesterséges intelligencia építéséhez Besmira Nushi, Mehrnoosh Sameki és Amit Sharma előadásában +> 🎥 Kattints a fenti képre a videóhoz: RAI Toolbox: Nyílt forráskódú keretrendszer felelős MI építéséhez Besmira Nushi, Mehrnoosh Sameki és Amit Sharma előadásában -Olvasd el továbbá: +Olvasd el még: -- Microsoft RAI erőforrásközpontja: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- A Microsoft RAI forrásközpontja: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoft FATE kutatócsoportja: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- A Microsoft FATE kutatócsoportja: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Eszköztár: -- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox) +- [Responsible AI Toolbox GitHub tárhely](https://github.com/microsoft/responsible-ai-toolbox) -Olvass az Azure Machine Learning eszközeiről, amelyek a méltányosság biztosítását szolgálják: +Ismerd meg az Azure Machine Learning eszközeit a méltányosság biztosításához: -- [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) ## Feladat -[Ismerd meg a RAI Toolboxot](assignment.md) +[Böngéssz a RAI Eszköztárban](assignment.md) --- -**Felelősség kizárása**: -Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file + +**Jogi nyilatkozat**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered. + \ No newline at end of file diff --git a/translations/hu/2-Regression/1-Tools/README.md b/translations/hu/2-Regression/1-Tools/README.md index 9fbccba09..7ad840047 100644 --- a/translations/hu/2-Regression/1-Tools/README.md +++ b/translations/hu/2-Regression/1-Tools/README.md @@ -1,55 +1,55 @@ -# Kezdjük el a Python és a Scikit-learn használatát regressziós modellekhez +# Kezdjünk neki a Python és a Scikit-learn használatának regressziós modellekhez -![Vázlat a regressziókról](../../../../sketchnotes/ml-regression.png) +![Összegzés a regressziókról egy sketchnote-ban](../../../../translated_images/hu/ml-regression.4e4f70e3b3ed446e.webp) -> Vázlatrajz: [Tomomi Imura](https://www.twitter.com/girlie_mac) +> Sketchnote készítette [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ez a lecke R nyelven is elérhető!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [Ez az óra elérhető R-ben is!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Bevezetés -Ebben a négy leckében megtanulhatod, hogyan építs regressziós modelleket. Rövidesen megbeszéljük, hogy mire használhatók ezek. De mielőtt bármibe belekezdenél, győződj meg róla, hogy a megfelelő eszközök rendelkezésre állnak a folyamat elindításához! +Ezekben a négy leckében megismered, hogyan kell regressziós modelleket építeni. Hamarosan megbeszéljük, mire valók ezek. De mielőtt bármit is tennél, győződj meg róla, hogy a megfelelő eszközök telepítve vannak a folyamat elindításához! -Ebben a leckében megtanulod: +Ebben a leckében megtanulod, hogyan kell: -- Hogyan konfiguráld a számítógéped helyi gépi tanulási feladatokhoz. -- Hogyan dolgozz Jupyter notebookokkal. -- Hogyan használd a Scikit-learn könyvtárat, beleértve annak telepítését. -- Hogyan fedezd fel a lineáris regressziót egy gyakorlati feladaton keresztül. +- Konfigurálni a számítógépedet helyi gépi tanulási feladatokhoz. +- Jupyter Notebookokkal dolgozni. +- Használni a Scikit-learn könyvtárat, beleértve annak telepítését is. +- Felfedezni a lineáris regressziót egy gyakorlati feladaton keresztül. -## Telepítések és konfigurációk +## Telepítések és beállítások -[![ML kezdőknek - Eszközök beállítása gépi tanulási modellek építéséhez](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML kezdőknek - Eszközök beállítása gépi tanulási modellek építéséhez") +[![Gépi tanulás kezdőknek - Állítsd be az eszközeidet a gépi tanulási modellek építéséhez](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "Gépi tanulás kezdőknek - Állítsd be az eszközeidet a gépi tanulási modellek építéséhez") -> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja, hogyan konfiguráld a számítógéped a gépi tanuláshoz. +> 🎥 Kattints a fenti képre egy rövid videó megtekintéséhez, amely végigvezet a számítógép gépi tanuláshoz való beállításán. -1. **Telepítsd a Python-t**. Győződj meg róla, hogy a [Python](https://www.python.org/downloads/) telepítve van a számítógépeden. A Python-t számos adatfeldolgozási és gépi tanulási feladathoz fogod használni. A legtöbb számítógépes rendszer már tartalmaz Python telepítést. Hasznosak lehetnek a [Python Coding Pack-ek](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) is, amelyek megkönnyítik a beállítást néhány felhasználó számára. +1. **Telepítsd a Pythont**. Ellenőrizd, hogy [Python](https://www.python.org/downloads/) telepítve van-e a számítógépeden. A Python sok adat tudományi és gépi tanulási feladathoz szükséges. A legtöbb rendszer már tartalmaz Python telepítést. Elérhetők hasznos [Python fejlesztőkészletek](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) is, melyek megkönnyítik a beállítást egyes felhasználók számára. - A Python bizonyos használati módjai azonban eltérő verziókat igényelhetnek. Ezért hasznos lehet egy [virtuális környezetben](https://docs.python.org/3/library/venv.html) dolgozni. + A Python egyes felhasználási módjai egy adott verziót igényelnek, míg mások mást. Emiatt hasznos egy [virtuális környezetben](https://docs.python.org/3/library/venv.html) dolgozni. -2. **Telepítsd a Visual Studio Code-ot**. Győződj meg róla, hogy a Visual Studio Code telepítve van a számítógépedre. Kövesd ezeket az utasításokat a [Visual Studio Code telepítéséhez](https://code.visualstudio.com/). Ebben a kurzusban a Python-t a Visual Studio Code-ban fogod használni, ezért érdemes lehet felfrissíteni a tudásodat arról, hogyan [konfiguráld a Visual Studio Code-ot](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) Python fejlesztéshez. +2. **Telepítsd a Visual Studio Code-ot**. Győződj meg róla, hogy telepítve van a Visual Studio Code a számítógépeden. Kövesd az [Visual Studio Code telepítési útmutatóját](https://code.visualstudio.com/) az alap telepítéshez. A tanfolyamban Python kódot a Visual Studio Code-ban fogsz írni, ezért érdemes átnézni, hogyan kell [Visual Studio Code-ot beállítani Python fejlesztéshez](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott). - > Ismerkedj meg a Python-nal ezeknek a [Learn moduloknak](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) a segítségével. + > Ismerkedj meg alaposan a Python használatával az alábbi [tanulási modulok](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) segítségével. > - > [![Python beállítása a Visual Studio Code-ban](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Python beállítása a Visual Studio Code-ban") + > [![Python beállítása Visual Studio Code-ban](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Python beállítása Visual Studio Code-ban") > - > 🎥 Kattints a fenti képre egy videóért: Python használata a VS Code-ban. + > 🎥 Kattints a fenti képre egy videó megtekintéséhez: Python használata VS Code-ban. -3. **Telepítsd a Scikit-learn-t**, a [következő utasítások](https://scikit-learn.org/stable/install.html) alapján. Mivel Python 3-at kell használnod, ajánlott egy virtuális környezet használata. Ha M1 Mac-en telepíted ezt a könyvtárat, különleges utasításokat találsz a fenti oldalon. +3. **Telepítsd a Scikit-learn könyvtárat**, az [itt található utasítások](https://scikit-learn.org/stable/install.html) alapján. Mivel Python 3-at kell használnod, ajánlott virtuális környezetet használni. Megjegyzés: ha M1 Mac-en telepíted ezt a könyvtárat, külön utasítások vannak a fenti linken. -4. **Telepítsd a Jupyter Notebook-ot**. Telepítsd a [Jupyter csomagot](https://pypi.org/project/jupyter/). +1. **Telepítsd a Jupyter Notebookot**. Szükséged lesz a [Jupyter csomag telepítésére](https://pypi.org/project/jupyter/). -## A gépi tanulási fejlesztési környezeted +## A gépi tanulási fejlesztőkörnyezeted -A Python kód fejlesztéséhez és gépi tanulási modellek létrehozásához **notebookokat** fogsz használni. Ez a fájltípus az adatkutatók körében gyakori eszköz, és `.ipynb` kiterjesztéssel azonosítható. +A Python kód fejlesztéséhez és gépi tanulási modellek létrehozásához **notebookokat** fogsz használni. Ez a fájltípus gyakori eszköz az adattudósok között, jelölése a `.ipynb` kiterjesztés. -A notebookok interaktív környezetet biztosítanak, amely lehetővé teszi a fejlesztő számára, hogy kódot írjon, jegyzeteket készítsen, és dokumentációt írjon a kód köré, ami különösen hasznos kísérleti vagy kutatási projektek esetén. +A notebookok interaktív környezetet biztosítanak, ahol a fejlesztő egyszerre tud kódolni és jegyzeteket, dokumentációt írni a kód köré, ami különösen hasznos kísérleti vagy kutatási projektekben. -[![ML kezdőknek - Jupyter Notebookok beállítása regressziós modellek építéséhez](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML kezdőknek - Jupyter Notebookok beállítása regressziós modellek építéséhez") +[![Gépi tanulás kezdőknek - Jupyter Notebookok beállítása regressziós modellekhez](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "Gépi tanulás kezdőknek - Jupyter Notebookok beállítása regressziós modellekhez") -> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja ezt a gyakorlatot. +> 🎥 Kattints a fenti képre egy rövid videó megtekintéséhez, amely végigvezet ezen a gyakorlaton. ### Gyakorlat - dolgozz egy notebookkal @@ -57,64 +57,65 @@ Ebben a mappában megtalálod a _notebook.ipynb_ fájlt. 1. Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban. - Egy Jupyter szerver indul el Python 3+ környezettel. A notebookban olyan részeket találsz, amelyek `futtathatók`, azaz kódrészletek. Egy kódrészletet a lejátszás gombra hasonlító ikon kiválasztásával futtathatsz. + Egy Jupyter szerver elindul Python 3+ környezetben. Láthatsz majd notebook cellákat, amelyek kódblokkok, ezeket lehet `futtatni`. Egy kódblokk futtatásához válaszd a lejátszás gomb ikont. -2. Válaszd ki az `md` ikont, és adj hozzá egy kis markdown szöveget, például a következőt: **# Üdvözöllek a notebookodban**. +1. Válaszd ki az `md` ikont és adj hozzá egy kis markdown szöveget, például a következőt: **# Üdvözöl a notebookod**. Ezután adj hozzá egy kis Python kódot. -3. Írd be a következő kódot: **print('hello notebook')**. -4. Kattints a nyílra a kód futtatásához. +1. Gépeld be a **print('hello notebook')** parancsot a kódblokkba. +1. Kattints a nyílra a kód futtatásához. - A következő kimenetet kell látnod: + Látnod kell a kinyomtatott üzenetet: ```output hello notebook ``` -![VS Code egy megnyitott notebookkal](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code egy megnyitott notebookkal](../../../../translated_images/hu/notebook.4a3ee31f396b8832.webp) -A kódot megjegyzésekkel egészítheted ki, hogy önmagad számára dokumentáld a notebookot. +Kódod kommentekkel gazdagíthatod, hogy a notebook dokumentált legyen. -✅ Gondolkodj el egy percre azon, hogy mennyire különbözik egy webfejlesztő munkakörnyezete egy adatkutatóétól. +✅ Gondolkodj el egy percre, mennyire más a webfejlesztő és az adattudós munkakörnyezete. -## Scikit-learn használatának elsajátítása +## Kész a Scikit-learn használatra -Most, hogy a Python be van állítva a helyi környezetedben, és kényelmesen használod a Jupyter notebookokat, ismerkedj meg a Scikit-learn-nel (ejtsd: `száj` mint a `science`). A Scikit-learn egy [kiterjedt API-t](https://scikit-learn.org/stable/modules/classes.html#api-ref) biztosít, amely segít a gépi tanulási feladatok elvégzésében. +Most, hogy a Python helyileg be van állítva és kényelmesen használod a Jupyter Notebookokat, ismerkedjünk meg a Scikit-learn könyvtárral is (kiejtve: "szájkit", mint a "science"). A Scikit-learn egy [kiterjedt API-t](https://scikit-learn.org/stable/modules/classes.html#api-ref) biztosít a gépi tanulási feladatok elvégzéséhez. -A [weboldaluk](https://scikit-learn.org/stable/getting_started.html) szerint: "A Scikit-learn egy nyílt forráskódú gépi tanulási könyvtár, amely támogatja a felügyelt és felügyelet nélküli tanulást. Emellett különféle eszközöket biztosít a modellillesztéshez, adat-előfeldolgozáshoz, modellkiválasztáshoz és értékeléshez, valamint számos egyéb segédprogramhoz." +A [honlapjuk](https://scikit-learn.org/stable/getting_started.html) szerint: "A Scikit-learn egy nyílt forráskódú gépi tanulási könyvtár, amely támogatja a felügyelt és felügyelet nélküli tanulást. Emellett különböző eszközöket kínál modellillesztéshez, adat-előkészítéshez, modellválasztáshoz és kiértékeléshez, valamint sok más hasznos funkciót." -Ebben a kurzusban a Scikit-learn-t és más eszközöket fogsz használni gépi tanulási modellek építéséhez, hogy úgynevezett 'hagyományos gépi tanulási' feladatokat végezz. Szándékosan kerültük a neurális hálózatokat és a mélytanulást, mivel ezek jobban lefedhetők a hamarosan megjelenő 'AI kezdőknek' tananyagunkban. +Ebben a tanfolyamban a Scikit-learn és egyéb eszközök segítségével gépi tanulási modelleket építünk, elsősorban a hagyományos gépi tanulásra fókuszálva. Szándékosan kerüljük a neurális hálózatokat és mélytanulást, mivel ezek egy külön 'Mesterséges intelligencia kezdőknek' tananyagban lesznek részletesebben tárgyalva. -A Scikit-learn egyszerűvé teszi a modellek építését és értékelését. Elsősorban numerikus adatok használatára összpontosít, és számos előre elkészített adathalmazt tartalmaz tanulási célokra. Emellett előre elkészített modelleket is tartalmaz, amelyeket a diákok kipróbálhatnak. Fedezzük fel a folyamatot, amely során előre csomagolt adatokat töltünk be, és egy beépített becslőt használunk az első ML modellünkhöz a Scikit-learn segítségével. +A Scikit-learn segítségével egyszerű modelleket építhetsz és kiértékelhetsz használatra. Elsősorban numerikus adatokat kezel és több beépített mintaadatot tartalmaz tanulási eszközként. Emellett van előre elkészített modellje is, amit a diákok kipróbálhatnak. Először nézzük meg, hogyan tölthetünk be beépített adatokat és használhatjuk beépített eldöntő modellt egy egyszerű gépi tanulási feladathoz. ## Gyakorlat - az első Scikit-learn notebookod -> Ez az oktatóanyag a Scikit-learn weboldalán található [lineáris regressziós példa](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) alapján készült. +> Ez az oktatóanyag a [lineáris regresszió példájából](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) származik a Scikit-learn honlapjáról. -[![ML kezdőknek - Az első lineáris regressziós projekted Python-ban](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML kezdőknek - Az első lineáris regressziós projekted Python-ban") -> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja ezt a gyakorlatot. +[![Gépi tanulás kezdőknek - Az első lineáris regressziós projekted Pythonban](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "Gépi tanulás kezdőknek - Az első lineáris regressziós projekted Pythonban") -A leckéhez tartozó _notebook.ipynb_ fájlban töröld ki az összes cellát a 'szemetes' ikonra kattintva. +> 🎥 Kattints a fenti képre az ehhez a feladathoz készült rövid videóért. -Ebben a részben egy kis, a Scikit-learn-be beépített diabétesz adathalmazzal fogsz dolgozni tanulási célokra. Képzeld el, hogy egy kezelést szeretnél tesztelni cukorbetegek számára. A gépi tanulási modellek segíthetnek meghatározni, hogy mely betegek reagálnának jobban a kezelésre, a változók kombinációi alapján. Még egy nagyon alapvető regressziós modell is, ha vizualizáljuk, információt nyújthat a változókról, amelyek segíthetnek a klinikai vizsgálatok megszervezésében. +A _notebook.ipynb_ fájlban, amely ehhez az órához tartozik, törölj minden cellát a 'kuka' ikon használatával. -✅ Számos regressziós módszer létezik, és hogy melyiket választod, az attól függ, milyen kérdésre keresel választ. Ha például egy adott korú személy várható magasságát szeretnéd megjósolni, lineáris regressziót használnál, mivel egy **numerikus értéket** keresel. Ha viszont azt szeretnéd megtudni, hogy egy konyha típusa vegánnak tekinthető-e vagy sem, akkor egy **kategória-hozzárendelést** keresel, így logisztikus regressziót használnál. Később többet megtudhatsz a logisztikus regresszióról. Gondolkodj el azon, hogy milyen kérdéseket tehetsz fel az adatokkal kapcsolatban, és melyik módszer lenne megfelelőbb. +Ebben a részben egy kis, a cukorbetegséggel kapcsolatos mintaadattal dolgozol majd, amely a Scikit-learnbe be van építve tanulási célokra. Képzeld el, hogy egy kezelési módszert szeretnél tesztelni cukorbetegeknél. A gépi tanulási modellek segíthetnek meghatározni, mely páciensek reagálnak jobban a kezelésre, az egyes változók kombinációi alapján. Egy nagyon egyszerű regressziós modell, ha vizualizálod, információt nyújthat azokról a változókról, amik segíthetnek a klinikai kísérletek elméleti tervezésében. -Kezdjünk neki ennek a feladatnak. +✅ Sokféle regressziós módszer létezik, és hogy melyiket választod, attól függ, milyen választ keresel. Ha például előre akarod jelezni egy adott korú személy várható magasságát, lineáris regressziót használsz, mert **numerikus értéket** keresel. Ha viszont azt akarod megtudni, hogy egy konyha vegan kategóriába esik-e vagy sem, **kategória-besorolásra** van szükséged, ezért logisztikus regressziót alkalmaznád. A logisztikus regressziót később részletesebben megismered. Gondolkodj el azon, milyen kérdéseket tehetsz fel az adatoknak, és melyik módszer lenne megfelelőbb. + +Kezdjünk neki a feladatnak. ### Könyvtárak importálása -Ehhez a feladathoz néhány könyvtárat fogunk importálni: +Ehhez a feladathoz néhány könyvtárat importálunk: -- **matplotlib**. Ez egy hasznos [grafikonkészítő eszköz](https://matplotlib.org/), amelyet vonaldiagramok készítésére fogunk használni. -- **numpy**. A [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) egy hasznos könyvtár numerikus adatok kezelésére Python-ban. +- **matplotlib**. Egy hasznos [grafikus eszköz](https://matplotlib.org/), amit vonaldiagram készítéséhez fogunk használni. +- **numpy**. A [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) egy hasznos könyvtár számadatok kezeléséhez Pythonban. - **sklearn**. Ez a [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) könyvtár. -Importálj néhány könyvtárat a feladatok elvégzéséhez. +Importálj néhány könyvtárat a feladat elvégzéséhez. -1. Add hozzá az importokat az alábbi kód beírásával: +1. Add hozzá az importokat a következő kód beírásával: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Importálj néhány könyvtárat a feladatok elvégzéséhez. from sklearn import datasets, linear_model, model_selection ``` - A fenti kódban importálod a `matplotlib`-et, a `numpy`-t, valamint a `datasets`, `linear_model` és `model_selection` modulokat a `sklearn`-ből. A `model_selection` a teszt- és tanulóhalmazok szétválasztására szolgál. + Fent a `matplotlib`, `numpy` könyvtárakat importálod, továbbá a `datasets`, `linear_model` és `model_selection` modulokat a `sklearn`-ből. A `model_selection` a tanító és teszt adathalmazok szétválasztására szolgál. -### A diabétesz adathalmaz +### A cukorbetegség adatállomány -A beépített [diabétesz adathalmaz](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 diabéteszhez kapcsolódó mintát tartalmaz, 10 jellemző változóval, amelyek közül néhány: +A beépített [cukorbetegség adatállomány](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 mintából áll, 10 jellemző változóval, amelyek közül néhány: -- age: életkor években -- bmi: testtömegindex +- kor: életkor években +- bmi: testtömeg-index - bp: átlagos vérnyomás -- s1 tc: T-sejtek (egy típusú fehérvérsejtek) +- s1 tc: T-sejtek (egyféle fehérvérsejt) -✅ Ez az adathalmaz tartalmazza a 'nem' fogalmát, mint a diabétesz kutatás szempontjából fontos jellemző változót. Számos orvosi adathalmaz tartalmaz ilyen típusú bináris osztályozást. Gondolkodj el azon, hogy az ilyen kategorizálások hogyan zárhatnak ki bizonyos népességcsoportokat a kezelésekből. +✅ Ez az adathalmaz tartalmazza a 'nem' fogalmát is, mint fontos jellemzőt a cukorbetegséggel kapcsolatos kutatásokban. Sok orvosi adathalmaz tartalmaz ilyen bináris besorolásokat. Gondolkodj el, hogyan zárhatnak ki bizonyos kategóriák ilyen osztályozások miatt népességcsoportokat a kezelésekből. -Most töltsd be az X és y adatokat. +Most töltsd be az X és y adathalmazokat. -> 🎓 Ne feledd, hogy ez felügyelt tanulás, és szükségünk van egy megnevezett 'y' célváltozóra. +> 🎓 Ne feledd, ez felügyelt tanulás, nekünk egy nevesített, 'y' célváltozóra van szükségünk. -Egy új kódcellában töltsd be a diabétesz adathalmazt a `load_diabetes()` hívásával. A `return_X_y=True` bemenet jelzi, hogy az `X` egy adatmátrix lesz, az `y` pedig a regressziós cél. +Egy új kódcella segítségével töltsd be a cukorbetegség adatállományt `load_diabetes()` hívásával. A `return_X_y=True` paraméter jelzi, hogy `X` adatmátrix lesz, míg az `y` a regressziós célérték. -1. Adj hozzá néhány print parancsot, hogy megjelenítsd az adatmátrix alakját és az első elemét: +1. Adj néhány print parancsot az adatmátrix alakjának és első elemének megjelenítésére: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Egy új kódcellában töltsd be a diabétesz adathalmazt a `load_diabetes()` h print(X[0]) ``` - Amit válaszként kapsz, az egy tuple. Amit csinálsz, az az, hogy a tuple első két értékét hozzárendeled az `X`-hez és az `y`-hoz. Tudj meg többet a [tuple-ökről](https://wikipedia.org/wiki/Tuple). + Amit visszakapsz válaszként, az egy tuple. Amit csinálsz, hogy a tuple első két elemét az `X` és `y` változókhoz rendeld. Tudj meg többet a [tuple-ökről](https://wikipedia.org/wiki/Tuple). - Láthatod, hogy ezek az adatok 442 elemet tartalmaznak, amelyek 10 elemből álló tömbökbe vannak rendezve: + Láthatod, hogy ez az adatállomány 442 elemből áll, melyek 10 elemes tömbökbe vannak rendezve: ```text (442, 10) @@ -159,60 +160,75 @@ Egy új kódcellában töltsd be a diabétesz adathalmazt a `load_diabetes()` h -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Gondolkodj el az adatok és a regressziós cél közötti kapcsolaton. A lineáris regresszió az X jellemző és az y célváltozó közötti kapcsolatot jósolja meg. Megtalálod a [célváltozót](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) a diabétesz adathalmaz dokumentációjában? Mit mutat ez az adathalmaz a célváltozó alapján? + ✅ Gondolkodj el az adatok és a regressziós célérték kapcsolatán. A lineáris regresszió az X jellemző és y célváltozó közötti kapcsolatokat becsüli meg. Meg tudod találni a [célt](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) a cukorbetegség adatállomány dokumentációjában? Mit mutat be ez az adatállomány a cél alapján? -2. Ezután válassz ki egy részt ebből az adathalmazból, hogy ábrázolhasd, például az adathalmaz 3. oszlopát. Ezt a `:` operátorral teheted meg, hogy kiválaszd az összes sort, majd az index (2) segítségével kiválaszd a 3. oszlopot. Az adatokat 2D tömbbé is átalakíthatod - ahogy az ábrázoláshoz szükséges - a `reshape(n_rows, n_columns)` használatával. Ha az egyik paraméter -1, a megfelelő dimenzió automatikusan kiszámításra kerül. +2. Ezután válassz ki egy részt az adatállományból a 3. oszlop kiválasztásával. Ezt úgy teheted meg, hogy az összes sort kiválasztod a `:` operátorral, majd az index (2) segítségével a 3. oszlopot. Az adatot átalakíthatod 2D tömbbé, amire szükség van a megjelenítéshez, a `reshape(n_rows, n_columns)` függvénnyel. Ha egy paraméter értéke -1, annak megfelelő dimenziót automatikusan kiszámítja a rendszer. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ Bármikor nyomtasd ki az adatokat, hogy ellenőrizd az alakjukat. + ✅ Bármikor nyomtasd ki az adatot, hogy ellenőrizd az alakját. -3. Most, hogy az adatok készen állnak az ábrázolásra, megnézheted, hogy egy gép segíthet-e logikus határvonalat húzni az adathalmaz számai között. Ehhez szét kell választanod az adatokat (X) és a célváltozót (y) teszt- és tanulóhalmazokra. A Scikit-learn egyszerű módot kínál erre; az adataidat egy adott ponton oszthatod szét. +3. Most, hogy készen áll az adat a megjelenítésre, nézd meg, segíthet-e egy gép logikus elválasztást találni az adatok között. Ehhez mind az X adatokat, mind az y célértékeket fel kell osztani teszt és tanító adathalmazokra. A Scikit-learn egyszerű megoldást kínál erre: a tesztadatokat egy adott pontnál szeletelheted. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Most készen állsz a modell betanítására! Töltsd be a lineáris regressziós modellt, és tanítsd be az X és y tanulóhalmazokkal a `model.fit()` használatával: +4. Most már készen állsz a modell edzésére! Töltsd be a lineáris regressziós modellt és edzd az X és y tanító adatokkal a `model.fit()` segítségével: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ A `model.fit()` egy olyan függvény, amelyet sok ML könyvtárban, például a TensorFlow-ban is láthatsz. + ✅ A `model.fit()` olyan függvény, amely sok ML könyvtárban, például a TensorFlow-ban is megtalálható. -5. Ezután hozz létre egy előrejelzést a tesztadatok alapján a `predict()` függvény használatával. Ezt fogod használni a vonal meghúzásához az adathalmaz csoportjai között. +5. Ezután készíts előrejelzést a tesztadatok alapján a `predict()` függvénnyel. Ezt a modellt felhasználhatod, hogy a modell által képzett adatcsoportok közé a legmegfelelőbb helyre vonalat rajzolj. ```python y_pred = model.predict(X_test) ``` -6. Most itt az ideje, hogy megjelenítsd az adatokat egy diagramon. A Matplotlib -✅ Gondolkodj el egy kicsit azon, mi történik itt. Egy egyenes vonal halad át sok apró adatponton, de pontosan mit csinál? Látod, hogyan tudnád ezt a vonalat felhasználni arra, hogy megjósold, hol helyezkedne el egy új, még nem látott adatpont a grafikon y tengelyéhez viszonyítva? Próbáld meg szavakba önteni ennek a modellnek a gyakorlati hasznát. +6. Most jelenítsd meg az adatokat egy ábrán. A Matplotlib nagyon hasznos eszköz erre. Készíts szórásdiagramot az összes X és y tesztadatról, és a predikció segítségével húzz vonalat a modell adatcsoportjai közé, ahol az a leglogikusabb. + + ```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() + ``` + + ![szórásdiagram cukorbetegség adatpontokról](../../../../translated_images/hu/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ Gondolkodj egy kicsit azon, mi is történik itt. Egy egyenes vonal halad keresztül sok kis adatponton, de pontosan mit is csinál? Látod, hogyan használhatod ezt a vonalat annak előrejelzésére, hogy egy új, még nem látott adatpont hol illeszkedjen az ábra y tengelyéhez képest? Próbáld meg szavakba önteni ennek a modellnek a gyakorlati hasznát. -Gratulálok, elkészítetted az első lineáris regressziós modelledet, készítettél vele egy előrejelzést, és megjelenítetted egy grafikonon! +Gratulálunk, elkészítetted az első lineáris regressziós modelledet, készítettél vele előrejelzést, és meg is jelenítettél egy ábrán! --- ## 🚀Kihívás -Ábrázolj egy másik változót ebből az adatállományból. Tipp: szerkeszd ezt a sort: `X = X[:,2]`. Ennek az adatállománynak a célértéke alapján mit tudsz felfedezni a cukorbetegség betegségként való előrehaladásáról? -## [Utólagos kvíz](https://ff-quizzes.netlify.app/en/ml/) +Ábrázolj egy másik változót ebből az adathalmazból. Tipp: szerkeszd ezt a sort: `X = X[:,2]`. Tekintettel az adathalmaz célváltozójára, mit tudsz felfedezni a cukorbetegség betegségként való lefolyásáról? +## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/) ## Áttekintés és önálló tanulás -Ebben a bemutatóban egyszerű lineáris regresszióval dolgoztál, nem pedig univariáns vagy többszörös lineáris regresszióval. Olvass egy kicsit ezeknek a módszereknek a különbségeiről, vagy nézd meg [ezt a videót](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +Ebben a bemutatóban egyszerű lineáris regresszióval dolgoztál, nem egyszereplős vagy többváltozós lineáris regresszióval. Olvass kicsit ezeknek a módszereknek a különbségeiről, vagy nézd meg ezt a [videót](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Olvass többet a regresszió fogalmáról, és gondolkodj el azon, milyen típusú kérdésekre lehet választ adni ezzel a technikával. Vegyél részt [ebben a bemutatóban](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), hogy elmélyítsd a tudásodat. +Olvass többet a regresszió fogalmáról, és gondolkodj el rajta, hogy milyen kérdésekre tud választ adni ez a technika. Végezd el ezt a [gyakorlati útmutatót](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), hogy mélyebb ismeretekre tegyél szert. ## Feladat -[Egy másik adatállomány](assignment.md) +[Egy másik adathalmaz](assignment.md) --- -**Felelősség kizárása**: -Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file + +**Jogi nyilatkozat**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered. + \ No newline at end of file diff --git a/translations/hu/2-Regression/2-Data/README.md b/translations/hu/2-Regression/2-Data/README.md index 1e43be1ba..d848b63aa 100644 --- a/translations/hu/2-Regression/2-Data/README.md +++ b/translations/hu/2-Regression/2-Data/README.md @@ -1,8 +1,8 @@ -# Készítsünk regressziós modellt Scikit-learn segítségével: adatok előkészítése és vizualizálása +# Regressziós modell építése Scikit-learn segítségével: adatok előkészítése és vizualizálása -![Adatvizualizációs infografika](../../../../2-Regression/2-Data/images/data-visualization.png) +![Adatvizualizációs infografika](../../../../translated_images/hu/data-visualization.54e56dded7c1a804.webp) -Infografika: [Dasani Madipalli](https://twitter.com/dasani_decoded) +Infografika készítője: [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/) @@ -10,51 +10,51 @@ Infografika: [Dasani Madipalli](https://twitter.com/dasani_decoded) ## Bevezetés -Most, hogy rendelkezésedre állnak azok az eszközök, amelyekkel elkezdheted a gépi tanulási modellek építését Scikit-learn segítségével, készen állsz arra, hogy kérdéseket tegyél fel az adataiddal kapcsolatban. Amikor adatokkal dolgozol és gépi tanulási megoldásokat alkalmazol, nagyon fontos, hogy megtanuld, hogyan tegyél fel megfelelő kérdéseket, hogy kiaknázhasd az adathalmazodban rejlő lehetőségeket. +Most, hogy készen állsz a szükséges eszközökkel a gépi tanulási modellek építésének elkezdéséhez Scikit-learn segítségével, ideje elkezdeni kérdéseket feltenni az adataidnak. Amint dolgozol az adatokkal és alkalmazod az ML megoldásokat, nagyon fontos megérteni, hogyan kell megfelelő kérdést feltenni az adatbázisod potenciáljának felszabadításához. Ebben a leckében megtanulod: - Hogyan készítsd elő az adataidat a modellépítéshez. -- Hogyan használd a Matplotlibet adatvizualizációhoz. +- Hogyan használd a Matplotlib-et az adatok vizualizációjához. +- Hogyan használd a Seaborn-t kifejezőbb adatvizualizációhoz. -## Hogyan tegyél fel megfelelő kérdést az adataiddal kapcsolatban? +## A helyes kérdés feltevése az adataiddal kapcsolatban -Az a kérdés, amelyre választ szeretnél kapni, meghatározza, hogy milyen típusú gépi tanulási algoritmusokat fogsz használni. A kapott válasz minősége pedig nagymértékben függ az adataid természetétől. +A megválaszolandó kérdés meghatározza, hogy milyen típusú ML algoritmusokat fogsz használni. És a válasz minősége jelentősen függ az adatok természetétől. -Nézd meg a [leckéhez biztosított adatokat](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv). Ezt a .csv fájlt megnyithatod VS Code-ban. Egy gyors átnézés azonnal megmutatja, hogy vannak hiányzó értékek, valamint szöveges és numerikus adatok keveréke. Van egy furcsa oszlop is, amelyet "Package"-nek hívnak, ahol az adatok között szerepelnek például "sacks", "bins" és más értékek. Az adatok valójában elég zűrösek. +Nézd meg a [leckéhez adott adatokat](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv). Megnyithatod ezt a .csv fájlt VS Code-ban. Egy gyors átfutás azonnal mutatja, hogy vannak üres mezők, és vegyesen szerepelnek sztring és numerikus adatok. Van egy furcsa oszlop is 'Package' néven, ahol az adatok között 'zsákok', 'ládák' és más értékek is szerepelnek. Az adatok valójában eléggé rendezetlenek. -[![ML kezdőknek - Hogyan elemezzünk és tisztítsunk egy adathalmazt](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML kezdőknek - Hogyan elemezzünk és tisztítsunk egy adathalmazt") +[![ML kezdőknek - Hogyan elemezz és tisztíts egy adatbázist](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML kezdőknek - Hogyan elemezz és tisztíts egy adatbázist") -> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja az adatok előkészítését ehhez a leckéhez. +> 🎥 Kattints a fenti képre egy rövid videóért, amely végigvezet az adatok előkészítésén ehhez a leckéhez. -Valójában nem túl gyakori, hogy egy adathalmaz teljesen készen áll arra, hogy gépi tanulási modellt készítsünk belőle. Ebben a leckében megtanulod, hogyan készíts elő egy nyers adathalmazt standard Python könyvtárak segítségével. Emellett különböző technikákat is megismerhetsz az adatok vizualizálására. +Valójában nem gyakori, hogy egy teljesen kész, azonnal használható adatbázist kapjunk egy ML modell létrehozásához. Ebben a leckében megtanulod, hogyan készíts elő egy nyers adatbázist szabványos Python könyvtárak használatával. Megtanulsz különféle technikákat is az adatok vizualizálására. -## Esettanulmány: "a tökpiac" +## Esettanulmány: 'a tökpiac' -Ebben a mappában találsz egy .csv fájlt a gyökér `data` mappában, amelynek neve [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv). Ez a fájl 1757 sor adatot tartalmaz a tökpiacról, városok szerint csoportosítva. Ez nyers adat, amelyet az [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) oldalról származtatott az Egyesült Államok Mezőgazdasági Minisztériuma. +Ebben a mappában található egy .csv fájl a gyökér `data` mappában, amelynek neve [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), és tartalmaz 1757 sort a tökpiac adatairól, városonként csoportosítva. Ez nyers adat az Egyesült Államok Mezőgazdasági Minisztériuma által közzétett [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) adatforrásból. -### Adatok előkészítése +### Az adatok előkészítése -Ezek az adatok közkincsnek számítanak. Az USDA weboldaláról külön fájlokban, városonként letölthetők. Az adatok túlzott szétaprózódásának elkerülése érdekében az összes városi adatot egy táblázatba fűztük össze, így már egy kicsit _előkészítettük_ az adatokat. Most nézzük meg közelebbről az adatokat. +Ezek az adatok közkinccsé váltak. Sok különálló fájlban tölthetők le, városonként az USDA weboldaláról. Azért, hogy ne legyen túl sok külön fájl, az összes városi adatot egy táblázatba fűztük össze, tehát már részben _előkészítettük_ az adatokat. Ezután nézzük meg közelebbről az adatokat. -### A tökadatok - korai következtetések +### A tökadatok – első következtetések -Mit veszel észre ezekkel az adatokkal kapcsolatban? Már láttad, hogy van szövegek, számok, hiányzó értékek és furcsa értékek keveréke, amelyeket értelmezni kell. +Mit veszel észre ezekről az adatokról? Már láttad, hogy vegyesen vannak benne szöveges értékek, számok, üres cellák és furcsa értékek, amelyeket értelmezni kell. -Milyen kérdést tehetsz fel ezekkel az adatokkal kapcsolatban regressziós technikát alkalmazva? Például: "Előrejelezni egy tök árát egy adott hónapban." Ha újra megnézed az adatokat, láthatod, hogy néhány változtatást kell végrehajtanod, hogy létrehozd a feladathoz szükséges adatstruktúrát. +Milyen kérdést tehetnél fel ezeknek az adatoknak regressziós módszerrel? Például: "Milyen az adott hónapra vonatkozó tök ára?". Ha újra megnézed az adatokat, van néhány módosítás, amelyet el kell végezni, hogy létrehozd a feladathoz szükséges adatszerkezetet. +## Gyakorlat – elemezd a tök adatokat -## Gyakorlat - elemezd a tökadatokat +Használjuk a [Pandas](https://pandas.pydata.org/)-t (a neve a `Python Data Analysis` szavakból ered), amely nagyon hasznos eszköz az adatok alakítására, hogy elemezzük és előkészítsük ezt a tök adatbázist. -Használjuk a [Pandas](https://pandas.pydata.org/) könyvtárat (a név a `Python Data Analysis` rövidítése), amely nagyon hasznos az adatok formázásához, hogy elemezzük és előkészítsük a tökadatokat. +### Először, ellenőrizd a hiányzó dátumokat -### Először ellenőrizd a hiányzó dátumokat +Először meg kell tenned a hiányzó dátumok ellenőrzésének lépéseit: -Először lépéseket kell tenned a hiányzó dátumok ellenőrzésére: +1. Alakítsd át a dátumokat hónap formátumra (az adatok amerikai dátumformátumúak, vagyis `HH/NN/ÉÉÉÉ`). +2. Válogasd ki a hónapokat egy új oszlopba. -1. Konvertáld a dátumokat hónap formátumba (ezek amerikai dátumok, tehát a formátum `MM/DD/YYYY`). -2. Hozz létre egy új oszlopot, amely csak a hónapot tartalmazza. - -Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban, és importáld a táblázatot egy új Pandas dataframe-be. +Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban, és importáld az adatokat egy új Pandas dataframe-be. 1. Használd a `head()` függvényt az első öt sor megtekintéséhez. @@ -66,15 +66,15 @@ Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban, és importáld a t ✅ Milyen függvényt használnál az utolsó öt sor megtekintéséhez? -1. Ellenőrizd, hogy van-e hiányzó adat az aktuális dataframe-ben: +1. Ellenőrizd, hogy van-e hiányzó adat a jelenlegi dataframe-ben: ```python pumpkins.isnull().sum() ``` - Van hiányzó adat, de lehet, hogy ez nem számít a feladat szempontjából. + Van hiányzó adat, de lehet, hogy nem számít a feladat szempontjából. -1. Hogy könnyebben dolgozhass a dataframe-mel, válaszd ki csak azokat az oszlopokat, amelyekre szükséged van, a `loc` függvény segítségével, amely az eredeti dataframe-ből egy sorokból (első paraméter) és oszlopokból (második paraméter) álló csoportot von ki. Az alábbi esetben a `:` kifejezés azt jelenti, hogy "minden sor". +1. Hogy könnyebb legyen a munkád a dataframe-vel, válaszd ki csak azokat az oszlopokat, amikre szükséged van, a `loc` függvény segítségével, amely az eredeti dataframe-ből kiválaszt egy csoport sort (az első paraméterként átadott) és oszlopot (a második paraméter). Az alábbi `:` kifejezés minden sort jelent. ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] @@ -83,9 +83,9 @@ Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban, és importáld a t ### Másodszor, határozd meg a tök átlagárát -Gondold át, hogyan határozhatod meg egy tök átlagárát egy adott hónapban. Mely oszlopokat választanád ehhez a feladathoz? Tipp: három oszlopra lesz szükséged. +Gondold át, hogyan lehet meghatározni a tök átlagárát adott hónapban. Milyen oszlopokat választanál ehhez? Tipp: 3 oszlopra lesz szükséged. -Megoldás: vedd az `Low Price` és `High Price` oszlopok átlagát, hogy kitöltsd az új Price oszlopot, és konvertáld a Date oszlopot úgy, hogy csak a hónapot mutassa. Szerencsére az előző ellenőrzés szerint nincs hiányzó adat a dátumok vagy árak esetében. +Megoldás: számítsd ki a `Low Price` és `High Price` oszlopok átlagát az új Price oszlop feltöltéséhez, és alakítsd a Date oszlopot úgy, hogy csak a hónapot mutassa. Szerencsére, az előbbi ellenőrzés szerint nincs hiányzó adat a dátumok vagy az árak esetében. 1. Az átlag kiszámításához add hozzá a következő kódot: @@ -96,37 +96,37 @@ Megoldás: vedd az `Low Price` és `High Price` oszlopok átlagát, hogy kitölt ``` - ✅ Nyugodtan nyomtass ki bármilyen adatot, amit ellenőrizni szeretnél a `print(month)` segítségével. + ✅ Nyugodtan használd a `print(month)` parancsot, ha szeretnéd az adatokat ellenőrizni. -2. Most másold át az átalakított adatokat egy új Pandas dataframe-be: +2. Most másold át az átalakított adatot egy új Pandas dataframe-be: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Ha kinyomtatod a dataframe-et, egy tiszta, rendezett adathalmazt fogsz látni, amelyre építheted az új regressziós modelledet. + Ha kinyomtatod a dataframe-ed, egy tiszta, rendezett adatbázist fogsz látni, amely alapján építheted a regressziós modelledet. ### De várj! Valami furcsa van itt -Ha megnézed a `Package` oszlopot, a tökök sokféle konfigurációban kerülnek értékesítésre. Néhányat "1 1/9 bushel" mértékegységben, néhányat "1/2 bushel" mértékegységben, néhányat darabonként, néhányat fontonként, és néhányat nagy dobozokban, amelyek szélessége változó. +Ha megnézed a `Package` oszlopot, a tökök sokféle formációban vannak eladva. Egyeseket '1 1/9 bushel' mértékben árulják, másokat '1/2 bushel' egységekben, egyeseket darabonként, másokat fontonként, és vannak nagy dobozok is különféle szélességekkel. -> Úgy tűnik, hogy a tökök súlyának következetes mérése nagyon nehéz +> A tökök súlyának következetes mérése elég nehéznek tűnik -Ha beleásod magad az eredeti adatokba, érdekes, hogy bármi, aminek `Unit of Sale` értéke 'EACH' vagy 'PER BIN', szintén a `Package` típus szerint van megadva, például hüvelykben, binben vagy darabonként. Úgy tűnik, hogy a tökök súlyának következetes mérése nagyon nehéz, ezért szűrjük őket úgy, hogy csak azokat a tököket válasszuk ki, amelyek `Package` oszlopában szerepel a 'bushel' szó. +Az eredeti adatokat vizsgálva érdekes, hogy ahol a `Unit of Sale` 'EACH' vagy 'PER BIN', ott a `Package` típus inch-ben, ládában vagy darabonként van megadva. Egyértelmű, hogy a tökök súlyának következetes mérése nehéz, ezért szűrjük az adatokat úgy, hogy csak azok a tökök legyenek benne, amelyek `Package` oszlopában szerepel a 'bushel'. -1. Adj hozzá egy szűrőt a fájl tetejére, az eredeti .csv importálása alá: +1. Adj hozzá egy szűrőt a fájl tetején, a kezdeti .csv import után: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Ha most kinyomtatod az adatokat, láthatod, hogy csak azokat a körülbelül 415 sort kapod, amelyek bushelben mért tököket tartalmaznak. + Ha most kinyomtatod az adatokat, láthatod, hogy csak körülbelül 415 sort kapsz, amelyek bushel-ben mért tököket tartalmaznak. -### De várj! Még egy dolgot meg kell tenni +### De várj még! Van még egy teendő -Észrevetted, hogy a bushel mennyisége soronként változik? Normalizálnod kell az árképzést, hogy bushelre vetítve mutasd az árakat, tehát végezz némi matematikát az árak standardizálásához. +Észrevetted, hogy a bushel mértéke soronként változik? Normalizálnod kell az árakat, hogy bushelre vonatkozó árat mutassanak, ezért végezz néhány számítást az egységesítéshez. -1. Add hozzá ezeket a sorokat a new_pumpkins dataframe létrehozó blokk után: +1. Add hozzá ezeket a sorokat az új_pumpkins dataframe létrehozása utáni blokkhoz: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ Ha beleásod magad az eredeti adatokba, érdekes, hogy bármi, aminek `Unit of S new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ A [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) szerint a bushel súlya a termék típusától függ, mivel ez egy térfogatmérés. "Egy bushel paradicsom például 56 fontot kell, hogy nyomjon... A levelek és zöldek több helyet foglalnak kevesebb súllyal, így egy bushel spenót csak 20 font." Ez mind elég bonyolult! Ne foglalkozzunk a bushel-font átváltással, hanem inkább bushelre vetítve árazzunk. Mindez a bushel tökök tanulmányozása azonban megmutatja, mennyire fontos megérteni az adatok természetét! +✅ A [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) szerint egy bushel súlya a termény típusától függ, mivel ez térfogati mértékegység. "Egy bushel paradicsom például 56 fontot kell, hogy nyomjon... A levelek és zöldek nagyobb helyet foglalnak el, kevesebb súly mellett, így a spenót bushel-je csak 20 font." Mindez elég bonyolult! Ne foglalkozzunk bushel-ről fontra való átváltással, az árazást tegyük bushel alapján. Mindenesetre ez a tök bushel-ek vizsgálata is rámutat arra, mennyire fontos megérteni az adataid természetét! -Most már elemezheted az árképzést egységenként a bushel mértékegység alapján. Ha még egyszer kinyomtatod az adatokat, láthatod, hogyan lett standardizálva. +Most elemezheted az egységárakat a bushel mérték alapján. Ha még egyszer kiírod az adatokat, láthatod, hogyan szabványosítottuk őket. -✅ Észrevetted, hogy a fél bushelben árult tökök nagyon drágák? Ki tudod találni, miért? Tipp: a kis tökök sokkal drágábbak, mint a nagyok, valószínűleg azért, mert sokkal több van belőlük bushelben, tekintve az egy nagy üreges tök által elfoglalt kihasználatlan helyet. +✅ Észrevetted, hogy a fél bushel-ben árult tökök nagyon drágák? Meg tudod fejteni, miért? Tipp: a kicsi tökök sokkal drágábbak, valószínűleg azért, mert egy bushelben sokkal több van belőlük, szemben azzal, hogy egy nagy üreges sütőtök sok helyet foglal. ## Vizualizációs stratégiák -Az adatelemzők egyik feladata, hogy bemutassák az adatok minőségét és természetét, amelyekkel dolgoznak. Ehhez gyakran készítenek érdekes vizualizációkat, például diagramokat, grafikonokat és táblázatokat, amelyek az adatok különböző aspektusait mutatják be. Ily módon vizuálisan képesek megmutatni az összefüggéseket és hiányosságokat, amelyeket egyébként nehéz lenne feltárni. +Az adatkutatók szerepének része, hogy bemutassák a kezelt adatok minőségét és természetét. Ennek érdekében gyakran készítenek érdekes vizualizációkat, mint például diagramokat, grafikonokat vagy táblázatokat, amelyek különböző adat aspektusokat ábrázolnak. Ezzel vizuálisan mutathatnak be kapcsolatokat és hiányosságokat, amelyek egyébként nehezen lennének feltárhatók. -[![ML kezdőknek - Hogyan vizualizáljuk az adatokat Matplotlib segítségével](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML kezdőknek - Hogyan vizualizáljuk az adatokat Matplotlib segítségével") +[![ML kezdőknek - Hogyan vizualizálj adatokat Matplotlib-pel](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML kezdőknek - Hogyan vizualizálj adatokat Matplotlib-pel") -> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja az adatok vizualizálását ehhez a leckéhez. +> 🎥 Kattints a fenti képre egy rövid videóért, amely az adatok vizualizálását mutatja be ehhez a leckéhez. -A vizualizációk segíthetnek meghatározni, hogy mely gépi tanulási technika a legmegfelelőbb az adatokhoz. Például egy olyan szórásdiagram, amely látszólag egy vonalat követ, azt jelzi, hogy az adatok jó jelöltek lehetnek egy lineáris regressziós feladathoz. +A vizualizációk segíthetnek meghatározni azt a gépi tanulási módszert is, amely a leginkább megfelelő az adatokhoz. Például egy pontfelhő, amely úgy tűnik, hogy egy egyenes vonalat követ, jelzi, hogy az adatok alkalmasak lineáris regressziós gyakorlatra. -Egy adatvizualizációs könyvtár, amely jól működik Jupyter notebookokban, a [Matplotlib](https://matplotlib.org/) (amelyet az előző leckében is láttál). +Egy adatvizualizációs könyvtár, ami jól működik Jupyter notebookokban, a [Matplotlib](https://matplotlib.org/) (amit az előző leckében is láthattál). -> Szerezz több tapasztalatot az adatvizualizációval [ezekben az oktatóanyagokban](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Szerezz több tapasztalatot adatvizualizációban [ezeken az oktatóanyagokon keresztül](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Gyakorlat - kísérletezz a Matplotlibgel +## Gyakorlat – kísérletezz a Matplotlib-pel -Próbálj meg néhány alapvető diagramot készíteni, hogy megjelenítsd az új dataframe-et, amelyet éppen létrehoztál. Mit mutatna egy alapvető vonaldiagram? +Próbálj meg néhány alap diagramot készíteni az újonnan létrehozott dataframe megjelenítésére. Mit mutatna egy egyszerű vonaldiagram? -1. Importáld a Matplotlibet a fájl tetején, a Pandas importálása alatt: +1. Importáld a Matplotlib-et a fájl tetején, a Pandas import alatt: ```python import matplotlib.pyplot as plt ``` 1. Futtasd újra az egész notebookot a frissítéshez. -1. A notebook alján adj hozzá egy cellát, hogy dobozdiagramot készíts: +1. A notebook alján adj hozzá egy cellát, hogy dobozdiaagramot (boxplot) készíts az adatokból: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Próbálj meg néhány alapvető diagramot készíteni, hogy megjelenítsd az ú plt.show() ``` - ![Egy szórásdiagram, amely az ár és hónap közötti kapcsolatot mutatja](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Hatásmutató pontfelhő a hónap és az ár kapcsolatáról](../../../../translated_images/hu/scatterplot.b6868f44cbd2051c.webp) - Hasznos ez a diagram? Meglepett valami vele kapcsolatban? + Hasznos ez a diagram? Meglep valami benne? - Ez nem különösebben hasznos, mivel csak az adataidat mutatja pontok szórásaként egy adott hónapban. + Nem igazán hasznos, mivel mindössze azt mutatja meg, hogy az adatok pontjai egy adott hónapban hogyan oszlanak el. ### Tedd hasznossá -Ahhoz, hogy a diagramok hasznos adatokat mutassanak, általában valahogyan csoportosítani kell az adatokat. Próbáljunk meg létrehozni egy diagramot, ahol az y tengely a hónapokat mutatja, és az adatok az eloszlást szemléltetik. +Ahhoz, hogy a diagramok hasznos adatokat jelenítsenek meg, általában csoportosítanod kell az adatokat. Próbáljunk meg olyan diagramot készíteni, ahol az y tengely a hónapokat mutatja, az adat pedig a megoszlást szemlélteti. -1. Adj hozzá egy cellát, hogy csoportosított oszlopdiagramot készíts: +1. Adj hozzá egy cellát, hogy csoportosított oszlopdiagramot hozz létre: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Egy oszlopdiagram, amely az ár és hónap közötti kapcsolatot mutatja](../../../../2-Regression/2-Data/images/barchart.png) + ![Oszlopdiagram az árak és a hónapok kapcsolatáról](../../../../translated_images/hu/barchart.a833ea9194346d76.webp) + + Ez már egy sokkal hasznosabb adatvizualizáció! Úgy tűnik, hogy a legmagasabb tökár szeptemberben és októberben van. Találkozik ez az elvárásoddal? Miért igen vagy miért nem? + +## Gyakorlat – kísérletezz a Seaborn-nal + +A Matplotlib hatékony, de sok kód kell a jól kidolgozott diagram elkészítéséhez. A [Seaborn](https://seaborn.pydata.org/) egy, a Matplotlib-re épülő könyvtár, amely statisztikai adatvizualizációra készült. Közvetlenül Pandas dataframe-ekkel dolgozik, vonzó alapstílusokat alkalmaz, és kevesebb kóddal lehet vele informatív diagramokat készíteni. Mivel a Seaborn Matplotlib objektumokat ad vissza, továbbra is használhatod mindazt, amit a Matplotlib-ről tudsz az eredmény finomhangolásához. + +> Ha nincs még telepítve a Seaborn, telepítsd a `pip install seaborn` paranccsal. + +1. Importáld a Seaborn-t a notebook tetején, más importok alatt. Szokásosan `sns` néven importáljuk: + + ```python + import seaborn as sns + ``` + +### Pontdiagramok a kapcsolatok bemutatására + +Az adatok előzetes feltárásának nagy része az _összefüggések_ kereséséről szól a változók között. Egy [pontdiagram](https://en.wikipedia.org/wiki/Scatter_plot) a legjobb eszközök egyike erre: ha a pontok vonalat követnek, akkor a két változó korrelálhat, ami jó jel arra, hogy a lineáris regressziós modell működhet. + +1. Készítsd újra a korábbi ár-hónap pontdiagramot, ezúttal a Seaborn [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relációs diagram) függvényével, amely közvetlenül a dataframe oszlopokkal működik: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Seaborn pontdiagram az ár-hónap kapcsolatról](../../../../translated_images/hu/relplot.a03837d8f0329cec.webp) + + Figyeld meg, hogyan adod át az _oszlopneveket_ és a dataframe-et, a Seaborn pedig automatikusan kezeli az tengelycímkéket. + +2. Átválthatsz vonaldiagramra azzal, hogy `kind="line"` paramétert adsz. A Seaborn még egy árnyékolt sávot is rajzol, amely a vonal körüli konfidencia-intervallumot mutatja: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn vonaldiagram az ár-hónap kapcsolatról](../../../../translated_images/hu/lineplot.f9034ba47b1e30ee.webp) + + Ez a konkrét adat elég zajos, így a vonaldiagram nem a legjobb választás – de jól mutatja, milyen könnyen lehet típusokat váltani a Seaborn-ban. + +### Oszlopdiagramok az eloszlások bemutatására + + +Korábban kézzel csoportosítottad az adatokat, hogy létrehozz egy oszlopdiagramot Matplotlib segítségével. A Seaborn [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategóriák szerinti ábrázolás) képes elvégezni helyetted a csoportosítást és az aggregálást. Alapértelmezés szerint a `kind="bar"` a kategóriák átlagát mutatja fekete vonallal jelzett konfidencia intervallummal együtt. + +1. Készíts egy oszlopdiagramot a havi átlagárakról: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Egy Seaborn oszlopdiagram, amely a havi árak eloszlását mutatja](../../../../translated_images/hu/catplot.e73fc35fdf96242b.webp) + + Ez megerősíti, amit Matplotlib-el láttál — az árak szeptember és október körül tetőznek — de a Seaborn azt is vizualizálja, mennyire _változnak_ az árak az egyes hónapokon belül. + +### Korrelációk megjelenítése hőtérképpel + +A szórásdiagramok két változót hasonlítanak össze egyszerre. Ha több numerikus oszlopod van, egy [hőtérkép](https://en.wikipedia.org/wiki/Heat_map) lehetővé teszi, hogy az _összes_ oszloppár közötti kapcsolat erősségét egyszerre lásd. Ez gyakori módszer arra, hogy felismerd, mely jellemzők vannak erősen korrelálva, mielőtt eldöntenéd, mit használj fel egy modell bemeneteként (és ugyanilyen típusú ábrázolást használnak később osztályozási zavarási mátrixok megjelenítéséhez). + +1. Készítsd el a korrelációs mátrixot Pandas segítségével, majd rajzold meg Seaborn [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) függvényével. Az `annot=True` opció kiírja a korrelációs értékeket minden cellában: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![Egy Seaborn hőtérkép, amely a numerikus oszlopok közötti korrelációkat mutatja](../../../../translated_images/hu/heatmap.bd98dce43b404c57.webp) + + Az `1`-hez (vagy `-1`-hez) közeli értékek azt jelentik, hogy az oszlopok erősen _lineárisan_ korrelálnak. Figyeld meg, hogy a `Low Price` és `High Price` szinte tökéletesen korrelálnak. A `Month` viszont csak gyenge lineáris korrelációt mutat az árral — bár az oszlopdiagram egyértelmű szezonális csúcsot mutat szeptember és október körül. Ez egy fontos tanulság: a korrelációs együttható csak a _egyenes vonalú_ kapcsolatokat méri, így figyelmen kívül hagyhat szezonális vagy más nemlineáris mintákat. ✅ Miért hasznos mind a hőtérképet, mind az olyan diagramokat, mint az oszlopdiagram, megnézni mielőtt eldöntöd, mely oszlopokat használd? + +### Matplotlib vagy Seaborn? + +Mindkét könyvtár ismerete hasznos: + +- **Matplotlib** részletes kontrollt ad az ábra minden elemére, és szinte minden más Python-rajzoló könyvtár alapja. +- **Seaborn** magasabb szintű függvényeket és vonzó alapbeállításokat nyújt statisztikai diagramokhoz, közvetlenül dolgozik dataframe-ekkel, és gyakran gyorsabb az adatelemzés felfedező fázisában. - Ez egy hasznosabb adatvizualizáció! Úgy tűnik, hogy a tökök legmagasabb ára szeptemberben és októberben van. Ez megfelel az elvárásaidnak? Miért vagy miért nem? +Egy gyakori munkafolyamat, hogy először Seaborn-t használsz az adatok gyors felfedezésére, majd Matplotlib-hez nyúlsz, ha a részleteket testreszabnád. --- ## 🚀Kihívás -Fedezd fel a Matplotlib által kínált különböző vizualizációs típusokat. Mely típusok a legmegfelelőbbek regressziós problémákhoz? +Fedezd fel a Matplotlib és a Seaborn által kínált különféle ábrázolási típusokat. Mely típusok a legmegfelelőbbek regressziós problémákhoz? ## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/) -## Áttekintés és önálló tanulás +## Áttekintés & Önálló tanulás -Nézd meg az adatvizualizáció különböző módjait. Készíts listát a rendelkezésre álló könyvtárakról, és jegyezd fel, hogy melyek a legjobbak adott típusú feladatokhoz, például 2D vizualizációkhoz vagy 3D vizualizációkhoz. Mit fedezel fel? +Nézd meg az adatvizualizálás számos módját. Készíts listát az elérhető különböző könyvtárakról és jegyezd fel, melyek a legjobbak adott feladattípusokhoz, például 2D vagy 3D ábrázoláshoz. Mit találsz? ## Feladat -[Adatvizualizáció felfedezése](assignment.md) +[Felfedező vizualizáció](assignment.md) --- -**Felelősség kizárása**: -Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file + +**Jogi nyilatkozat**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered. + \ No newline at end of file diff --git a/translations/hu/2-Regression/2-Data/solution/notebook.ipynb b/translations/hu/2-Regression/2-Data/solution/notebook.ipynb index 630932625..c9ee45a54 100644 --- a/translations/hu/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/hu/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Lineáris regresszió tökök számára - 2. lecke\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": [ + "## Vizualizálás Seaborn-nal\n", + "\n", + "A [Seaborn](https://seaborn.pydata.org/) a Matplotlibre épül, és közvetlenül az adattáblákkal dolgozik, így nagyon kevés kóddal gyorsan készíthetők vonzó statisztikai ábrák.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Szórásdiagramok a kapcsolatok megjelenítésére\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": [ + "### Oszlopdiagrammok az eloszlások bemutatásához\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**Felelősségkizárás**: \nEz a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével készült. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt a professzionális, emberi fordítás igénybevétele. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért.\n" + "### Hőtérképek korrelációk megjelenítéséhez\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\n**Jogi nyilatkozat**:\nEz a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-04T07:11:39+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "hu" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/hu/6-NLP/5-Hotel-Reviews-2/README.md b/translations/hu/6-NLP/5-Hotel-Reviews-2/README.md index 0f603ad09..e0facb5ce 100644 --- a/translations/hu/6-NLP/5-Hotel-Reviews-2/README.md +++ b/translations/hu/6-NLP/5-Hotel-Reviews-2/README.md @@ -1,24 +1,24 @@ -# Érzelemfelismerés szállodai vélemények alapján +# Érzelemelemzés szállodai értékelésekkel -Most, hogy részletesen megvizsgáltad az adatállományt, itt az ideje, hogy szűrd az oszlopokat, majd NLP technikákat alkalmazz az adatállományon, hogy új betekintést nyerj a szállodákról. +Miután részletesen megvizsgáltad az adatkészletet, itt az ideje, hogy kiszűrd a megfelelő oszlopokat, majd NLP technikákat alkalmazz az adatkészleten, hogy új betekintést nyerhess a szállodákról. ## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/) -### Szűrési és érzelemfelismerési műveletek +### Szűrés és érzelemelemzési műveletek -Ahogy valószínűleg észrevetted, az adatállományban van néhány probléma. Néhány oszlop haszontalan információval van tele, mások hibásnak tűnnek. Ha helyesek is, nem világos, hogyan számították ki őket, és az eredmények nem ellenőrizhetők független számításokkal. +Valószínűleg észrevetted, hogy az adatkészletnek vannak problémái. Egyes oszlopok haszontalan információkat tartalmaznak, mások hibásnak tűnnek. Ha helyesek, akkor sem világos, hogyan számították ki őket, és az eredményeket nem lehet saját számításokkal függetlenül ellenőrizni. -## Gyakorlat: további adatfeldolgozás +## Gyakorlat: egy kicsit több adatfeldolgozás -Tisztítsd meg az adatokat egy kicsit jobban. Adj hozzá oszlopokat, amelyek később hasznosak lesznek, módosítsd más oszlopok értékeit, és teljesen törölj bizonyos oszlopokat. +Tiszítsd meg az adatokat még egy kicsit. Adj hozzá hasznos oszlopokat, módosítsd más oszlopok értékeit, és bizonyos oszlopokat teljesen távolíts el. 1. Kezdeti oszlopfeldolgozás - 1. Töröld a `lat` és `lng` oszlopokat. + 1. Távolítsd el a `lat` és `lng` oszlopokat - 2. Cseréld ki a `Hotel_Address` értékeit az alábbi értékekre (ha a cím tartalmazza a város és az ország nevét, változtasd meg csak a városra és az országra). + 2. Cseréld ki a `Hotel_Address` értékeket az alábbiakra (ha a cím tartalmazza a város és az ország nevét is, csak a várost és az országot hagyd meg). - Ezek az adatállományban szereplő egyetlen városok és országok: + Ezek a városok és országok találhatók az adatkészletben: Amszterdam, Hollandia @@ -30,7 +30,7 @@ Tisztítsd meg az adatokat egy kicsit jobban. Adj hozzá oszlopokat, amelyek ké Párizs, Franciaország - Bécs, Ausztria + Bécs, Ausztria ```python def replace_address(row): @@ -47,171 +47,171 @@ Tisztítsd meg az adatokat egy kicsit jobban. Adj hozzá oszlopokat, amelyek ké elif "Vienna" in row["Hotel_Address"]: return "Vienna, Austria" - # Replace all the addresses with a shortened, more useful form + # Cserélje le az összes címet egy rövidebb, hasznosabb formára df["Hotel_Address"] = df.apply(replace_address, axis = 1) - # The sum of the value_counts() should add up to the total number of reviews + # A value_counts() összege meg kell, hogy egyezzen a teljes értékelésszámmal print(df["Hotel_Address"].value_counts()) ``` - Most már lekérdezheted az ország szintű adatokat: + Most már lekérdezheted az adatokat ország szinten is: ```python display(df.groupby("Hotel_Address").agg({"Hotel_Name": "nunique"})) ``` - | Hotel_Address | Hotel_Name | - | :--------------------- | :--------: | - | Amsterdam, Netherlands | 105 | - | Barcelona, Spain | 211 | - | London, United Kingdom | 400 | - | Milan, Italy | 162 | - | Paris, France | 458 | - | Vienna, Austria | 158 | + | Hotel_Cím | Szálloda_Neve | + | :--------------------- | :--------: | + | Amszterdam, Hollandia | 105 | + | Barcelona, Spanyolország | 211 | + | London, Egyesült Királyság | 400 | + | Milánó, Olaszország | 162 | + | Párizs, Franciaország | 458 | + | Bécs, Ausztria | 158 | -2. Szállodai meta-vélemény oszlopok feldolgozása +2. Szállodai meta-értékelési oszlopok feldolgozása - 1. Töröld az `Additional_Number_of_Scoring` oszlopot. + 1. Távolítsd el az `Additional_Number_of_Scoring` oszlopot - 1. Cseréld ki a `Total_Number_of_Reviews` értékét az adott szállodához tartozó vélemények tényleges számával az adatállományban. + 1. Cseréld le a `Total_Number_of_Reviews` értékét a valós, az adatkészletben szereplő értékre - 1. Cseréld ki az `Average_Score` értékét a saját számított átlagos pontszámunkkal. + 1. Cseréld le az `Average_Score` értékét a saját, kiszámított pontra ```python - # Drop `Additional_Number_of_Scoring` + # Töröld az `Additional_Number_of_Scoring` értéket df.drop(["Additional_Number_of_Scoring"], axis = 1, inplace=True) - # Replace `Total_Number_of_Reviews` and `Average_Score` with our own calculated values + # Cseréld le a `Total_Number_of_Reviews` és az `Average_Score` értékeket a saját számított értékeinkre df.Total_Number_of_Reviews = df.groupby('Hotel_Name').transform('count') df.Average_Score = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1) ``` -3. Vélemény oszlopok feldolgozása +3. Értékelési oszlopok feldolgozása - 1. Töröld a `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` és `days_since_review` oszlopokat. + 1. Távolítsd el a `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` és `days_since_review` oszlopokat - 2. Hagyd meg a `Reviewer_Score`, `Negative_Review` és `Positive_Review` oszlopokat változatlanul. + 2. Hagyd meg változatlanul a `Reviewer_Score`, `Negative_Review` és `Positive_Review` oszlopokat, - 3. Egyelőre hagyd meg a `Tags` oszlopot. + 3. Hagyd meg most a `Tags` oszlopot is - - A következő szakaszban további szűrési műveleteket végzünk a címkéken, majd a címkék törlésre kerülnek. + - A következő szakaszban további szűrőműveleteket végzünk a címkéken, majd a címkék eltávolításra kerülnek -4. Véleményező oszlopok feldolgozása +4. Értékelői oszlopok feldolgozása - 1. Töröld a `Total_Number_of_Reviews_Reviewer_Has_Given` oszlopot. + 1. Távolítsd el a `Total_Number_of_Reviews_Reviewer_Has_Given` oszlopot - 2. Hagyd meg a `Reviewer_Nationality` oszlopot. + 2. Hagyd meg a `Reviewer_Nationality` oszlopot ### Címke oszlopok -A `Tag` oszlop problémás, mivel egy lista (szöveg formájában) van tárolva az oszlopban. Sajnos az alrészek sorrendje és száma nem mindig ugyanaz. Nehéz az ember számára azonosítani a releváns kifejezéseket, mivel 515,000 sor és 1427 szálloda van, és mindegyiknek kissé eltérő lehetőségei vannak, amelyeket a véleményező választhatott. Itt jön képbe az NLP. A szöveget átvizsgálva megtalálhatod a leggyakoribb kifejezéseket, és megszámolhatod őket. +A `Tag` oszlop problémás, mivel egy felsorolás (szöveges formában) van benne tárolva. Sajnos az alcímek száma és sorrendje nem mindig egyezik meg. Nehéz az embernek azonosítani a fontos kifejezéseket, mert 515 000 sor, és 1427 szálloda van, mindegyik egy kicsit eltérő lehetőségekkel, amiből a véleményező választhatott. Itt jön jól az NLP. Átvizsgálhatod a szöveget, megtalálhatod a leggyakoribb kifejezéseket, és megszámolhatod őket. -Sajnos nem az egyes szavak érdekelnek minket, hanem több szóból álló kifejezések (pl. *Üzleti út*). Egy több szóból álló gyakorisági eloszlás algoritmus futtatása ekkora adatmennyiségen (6762646 szó) rendkívül sok időt vehet igénybe, de anélkül, hogy megnéznénk az adatokat, úgy tűnik, hogy ez szükséges költség. Itt jön jól az exploratív adatvizsgálat, mivel láttál egy mintát a címkékből, például `[' Üzleti út ', ' Egyedül utazó ', ' Egyágyas szoba ', ' 5 éjszakát maradt ', ' Mobil eszközről küldve ']`, elkezdheted megkérdezni, hogy lehetséges-e jelentősen csökkenteni a feldolgozást. Szerencsére lehetséges - de először néhány lépést kell követned, hogy meghatározd az érdekes címkéket. +Sajnos nem egyszavas kifejezések érdekelnek, hanem több szóból álló kifejezések (pl. *Üzleti út*). Egy több szavas gyakorisági eloszlás végrehajtása ekkora adatmennyiségen (6 762 646 szó) rendkívül hosszú időt venne igénybe, de az adatok ismerete nélkül ez szükségesnek tűnik. Itt jön jól a felderítő adat elemzés, mert láttál már címkemintát, mint például `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']`, így elkezdheted keresni a módját, hogyan csökkentsd jelentősen a feldolgozandó adatot. Szerencsére lehet – de először néhány lépést kell követni a fontos címkék meghatározásához. ### Címkék szűrése -Ne feledd, hogy az adatállomány célja az érzelmek és oszlopok hozzáadása, amelyek segítenek kiválasztani a legjobb szállodát (számodra vagy esetleg egy ügyfél számára, aki szállodai ajánló botot szeretne készíteni). Fel kell tenned magadnak a kérdést, hogy a címkék hasznosak-e vagy sem a végső adatállományban. Íme egy értelmezés (ha más célból lenne szükséged az adatállományra, különböző címkék maradhatnak benne/kieshetnek): +Ne feledd, hogy az adatkészlet célja érzelem hozzáadása és olyan oszlopok létrehozása, amelyek segítenek a legjobb szálloda kiválasztásában (saját magad vagy egy ügyfél számára, aki szállodai ajánló bot fejlesztését kéri). El kell döntened, hogy a címkék hasznosak-e vagy sem a végső adatkészletben. Íme egy értelmezés (más célra más címkék maradhatnak bent vagy kerülhetnek ki): -1. Az utazás típusa releváns, ezt meg kell tartani. -2. A vendégcsoport típusa fontos, ezt meg kell tartani. -3. Az a szoba, lakosztály vagy stúdió típusa, amelyben a vendég tartózkodott, irreleváns (minden szállodában alapvetően ugyanazok a szobák vannak). -4. Az eszköz, amelyről a véleményt beküldték, irreleváns. -5. Az éjszakák száma, amelyet a véleményező ott töltött, *lehet*, hogy releváns, ha hosszabb tartózkodást a szálloda kedvelésével társítasz, de ez erőltetett, és valószínűleg irreleváns. +1. Az utazás típusa releváns, ennek meg kell maradnia +2. A vendégcsoport típusa fontos, ennek meg kell maradnia +3. A vendég által használt szoba, lakosztály vagy stúdió típusa nem releváns (minden szállodában lényegében ugyanazok a szobák vannak) +4. Az eszköz, amin az értékelést benyújtották, nem releváns +5. Az eltöltött éjszakák száma *lehet* releváns, ha azt feltételezed, hogy a hosszabb tartózkodás a szálloda jobban tetszésével jár, de ez megkérdőjelezhető és valószínűleg nem számít -Összefoglalva, **tarts meg 2 fajta címkét, és távolítsd el a többit**. +Összefoglalva, **2 fajta címkét tarts meg, a többit távolítsd el**. -Először nem akarod megszámolni a címkéket, amíg nem kerülnek jobb formátumba, tehát ez azt jelenti, hogy el kell távolítani a szögletes zárójeleket és az idézőjeleket. Ezt többféleképpen megteheted, de a leggyorsabbat szeretnéd, mivel sok adat feldolgozása hosszú időt vehet igénybe. Szerencsére a pandas egyszerű módot kínál mindegyik lépés elvégzésére. +Először nem akarod megszámolni a címkéket, amíg nincsenek megfelelő formátumban, ezért el kell távolítani a szögletes zárójeleket és a idézőjeleket. Többféleképpen lehet ezt megtenni, de a leggyorsabbat érdemes választani, mert sok adat feldolgozása hosszú időt vehet igénybe. Szerencsére a pandas egyszerű eszközöket kínál ezekhez a lépésekhez. ```Python -# Remove opening and closing brackets +# Távolítsa el a nyitó és záró zárójeleket df.Tags = df.Tags.str.strip("[']") -# remove all quotes too +# távolítsa el az összes idézőjelet is df.Tags = df.Tags.str.replace(" ', '", ",", regex = False) ``` -Minden címke valami ilyesmivé válik: `Üzleti út, Egyedül utazó, Egyágyas szoba, 5 éjszakát maradt, Mobil eszközről küldve`. - -Ezután találunk egy problémát. Néhány vélemény vagy sor 5 oszlopot tartalmaz, néhány 3-at, néhány 6-ot. Ez az adatállomány létrehozásának eredménye, és nehéz javítani. Szeretnéd megszámolni az egyes kifejezések gyakoriságát, de ezek különböző sorrendben vannak minden véleményben, így a számolás hibás lehet, és egy szálloda nem kapja meg azt a címkét, amelyet megérdemelt volna. - -Ehelyett a különböző sorrendet az előnyünkre fordítjuk, mivel minden címke több szóból áll, de vesszővel is el van választva! A legegyszerűbb módja ennek az, hogy létrehozunk 6 ideiglenes oszlopot, amelyekbe minden címkét beillesztünk a címke sorrendjének megfelelő oszlopba. Ezután egyesítheted a 6 oszlopot egy nagy oszlopba, és futtathatod a `value_counts()` metódust az eredményoszlopon. Ha ezt kinyomtatod, látni fogod, hogy 2428 egyedi címke volt. Íme egy kis minta: - -| Címke | Szám | -| ------------------------------ | ------ | -| Szabadidős utazás | 417778 | -| Mobil eszközről küldve | 307640 | -| Pár | 252294 | -| 1 éjszakát maradt | 193645 | -| 2 éjszakát maradt | 133937 | -| Egyedül utazó | 108545 | -| 3 éjszakát maradt | 95821 | -| Üzleti út | 82939 | -| Csoport | 65392 | -| Fiatal gyermekes család | 61015 | -| 4 éjszakát maradt | 47817 | -| Kétszemélyes szoba | 35207 | -| Standard kétszemélyes szoba | 32248 | -| Superior kétszemélyes szoba | 31393 | -| Idősebb gyermekes család | 26349 | -| Deluxe kétszemélyes szoba | 24823 | -| Kétszemélyes vagy ikerszoba | 22393 | -| 5 éjszakát maradt | 20845 | -| Standard kétszemélyes vagy ikerszoba | 17483 | -| Klasszikus kétszemélyes szoba | 16989 | -| Superior kétszemélyes vagy ikerszoba | 13570 | -| 2 szoba | 12393 | - -Néhány gyakori címke, mint például `Mobil eszközről küldve`, nem hasznos számunkra, így okos dolog lehet eltávolítani őket, mielőtt megszámolnánk a kifejezések előfordulását, de ez olyan gyors művelet, hogy benne hagyhatod őket, és figyelmen kívül hagyhatod. - -### Az éjszakák számát jelző címkék eltávolítása - -Ezeknek a címkéknek az eltávolítása az első lépés, amely kissé csökkenti a figyelembe veendő címkék számát. Ne feledd, hogy nem távolítod el őket az adatállományból, csak úgy döntesz, hogy nem veszed figyelembe őket értékként a vélemények adatállományában. - -| Tartózkodás hossza | Szám | -| ------------------ | ------ | -| 1 éjszakát maradt | 193645 | -| 2 éjszakát maradt | 133937 | -| 3 éjszakát maradt | 95821 | -| 4 éjszakát maradt | 47817 | -| 5 éjszakát maradt | 20845 | -| 6 éjszakát maradt | 9776 | -| 7 éjszakát maradt | 7399 | -| 8 éjszakát maradt | 2502 | -| 9 éjszakát maradt | 1293 | -| ... | ... | - -Számos különféle szoba, lakosztály, stúdió, apartman stb. van. Mindegyik nagyjából ugyanazt jelenti, és nem releváns számodra, így távolítsd el őket a figyelembe vételből. - -| Szobatípus | Szám | -| --------------------------- | ------ | -| Kétszemélyes szoba | 35207 | -| Standard kétszemélyes szoba | 32248 | -| Superior kétszemélyes szoba | 31393 | -| Deluxe kétszemélyes szoba | 24823 | -| Kétszemélyes vagy ikerszoba | 22393 | -| Standard kétszemélyes vagy ikerszoba | 17483 | -| Klasszikus kétszemélyes szoba | 16989 | -| Superior kétszemélyes vagy ikerszoba | 13570 | - -Végül, és ez örömteli (mivel nem igényelt sok feldolgozást), a következő *hasznos* címkék maradnak: - -| Címke | Szám | -| --------------------------------------------- | ------ | -| Szabadidős utazás | 417778 | -| Pár | 252294 | -| Egyedül utazó | 108545 | -| Üzleti út | 82939 | -| Csoport (összevonva Barátokkal utazók címkével) | 67535 | -| Fiatal gyermekes család | 61015 | -| Idősebb gyermekes család | 26349 | -| Háziállattal | 1405 | - -Érvelhetsz azzal, hogy a `Barátokkal utazók` nagyjából ugyanaz, mint a `Csoport`, és ez igaz lenne, ha összevonnád őket, ahogy fentebb. A helyes címkék azonosításához szükséges kód megtalálható itt: [Tags notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb). - -Az utolsó lépés az, hogy új oszlopokat hozz létre ezekhez a címkékhez. Ezután minden véleménysor esetében, ha a `Tag` oszlop megegyezik az egyik új oszloppal, adj hozzá egy 1-est, ha nem, adj hozzá egy 0-t. Az eredmény egy összesítés lesz arról, hogy hány véleményező választotta ezt a szállodát (összesítve) például üzleti vagy szabadidős célra, vagy hogy háziállattal érkezett-e, és ez hasznos információ lehet szálloda ajánlásakor. +Minden címke olyanná válik, mint: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`. + +Ezután egy problémát találunk. Néhány értékelés vagy sor 5 oszlopból áll, néhány 3-ból, mások 6-ból. Ez az adatkészlet létrehozásának módjából ered, és nehéz orvosolni. Meg akarod számolni az egyes kifejezéseket, de azok különböző sorrendben vannak az értékelésekben, így a megszámlálás hibázhat, és lehet, hogy egy szálloda nem kap megérdemelt címkét. + +Ehelyett a sorrendet a javunkra fordítjuk, mert mindegyik címke több szóból áll, de vesszővel van elválasztva! A legegyszerűbb megoldás 6 ideiglenes oszlop létrehozása, mindegyikbe a címke a maga sorrendjében kerül. Ezeket azután egy nagy oszlopba egyesítjük, és ráfuttatjuk a `value_counts()` metódust. Az eredmény 2428 egyedi címke volt. Íme egy kis minta: + +| Címke | Darabszám | +| ------------------------------ | --------- | +| Szabadidős utazás | 417778 | +| Mobil eszközről benyújtva | 307640 | +| Pár | 252294 | +| 1 éjszakát eltöltött | 193645 | +| 2 éjszakát eltöltött | 133937 | +| Egyedül utazó | 108545 | +| 3 éjszakát eltöltött | 95821 | +| Üzleti út | 82939 | +| Csoport | 65392 | +| Fiatal gyerekes család | 61015 | +| 4 éjszakát eltöltött | 47817 | +| Kétszemélyes szoba | 35207 | +| Standard kétszemélyes szoba | 32248 | +| Superior kétszemélyes szoba | 31393 | +| Nagyobb gyerekes család | 26349 | +| Deluxe kétszemélyes szoba | 24823 | +| Kétszemélyes vagy iker szoba| 22393 | +| 5 éjszakát eltöltött | 20845 | +| Standard kétszemélyes vagy iker szoba | 17483 | +| Klasszikus kétszemélyes szoba | 16989 | +| Superior kétszemélyes vagy iker szoba | 13570 | +| 2 szoba | 12393 | + +Néhány gyakori címke, mint a `Mobil eszközről benyújtva` haszontalan számunkra, ezért okos dolog lehet eltávolítani őket a címke előfordulás megszámlálása előtt, de a művelet olyan gyors, hogy bent is hagyhatod és figyelmen kívül hagyhatod. + +### Az eltöltött éjszakák címkék eltávolítása + +Ezek eltávolítása az első lépés, enyhén csökkenti a figyelembe vett címkék számát. Megjegyzendő, hogy nem az adatkészletből távolítod el őket, csak a számlálás/megőrzés céljára nem veszed figyelembe. + +| Tartózkodás hossza | Darabszám | +| ------------------ | --------- | +| 1 éjszakát eltöltött | 193645 | +| 2 éjszakát eltöltött | 133937 | +| 3 éjszakát eltöltött | 95821 | +| 4 éjszakát eltöltött | 47817 | +| 5 éjszakát eltöltött | 20845 | +| 6 éjszakát eltöltött | 9776 | +| 7 éjszakát eltöltött | 7399 | +| 8 éjszakát eltöltött | 2502 | +| 9 éjszakát eltöltött | 1293 | +| ... | ... | + +Rengeteg különböző szoba, lakosztály, stúdió, apartman stb. van. Ezek nagyjából ugyanazt jelentik és nem relevánsak számodra, ezért távolítsd el őket a figyelembevételből. + +| Szoba típusa | Darabszám | +| ------------------------------- | --------- | +| Kétszemélyes szoba | 35207 | +| Standard kétszemélyes szoba | 32248 | +| Superior kétszemélyes szoba | 31393 | +| Deluxe kétszemélyes szoba | 24823 | +| Kétszemélyes vagy iker szoba | 22393 | +| Standard kétszemélyes vagy iker szoba | 17483 | +| Klasszikus kétszemélyes szoba | 16989 | +| Superior kétszemélyes vagy iker szoba | 13570 | + +Végül, és ez örömteli (mert alig volt feldolgozás), a következő *hasznos* címke marad meg: + +| Címke | Darabszám | +| --------------------------------------------- | --------- | +| Szabadidős utazás | 417778 | +| Pár | 252294 | +| Egyedül utazó | 108545 | +| Üzleti út | 82939 | +| Csoport (egybevonva a baráti utazókkal) | 67535 | +| Fiatal gyerekes család | 61015 | +| Nagyobb gyerekes család | 26349 | +| Háziállattal | 1405 | + +Az is vitatható, hogy a `Travellers with friends` többé-kevésbé ugyanaz, mint a `Group`, és jogos őket összevonni a fentiek szerint. A helyes címkék azonosításának kódja a [Tags notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb). + +Az utolsó lépés, hogy új oszlopokat hozz létre ezeknek a címkéknek. Minden értékelői sorban, ha a `Tag` oszlop megegyezik az új oszlop egyikével, akkor 1-et adj hozzá, ha nem, akkor 0-t. Az eredményként megkapod, hogy összesen hány értékelő választotta adott szállodát, például üzleti útra vagy szabadidős utazásra, vagy háziállat hozatalára, és ez hasznos információ a szállodai ajánláshoz. ```python -# Process the Tags into new columns -# The file Hotel_Reviews_Tags.py, identifies the most important tags -# Leisure trip, Couple, Solo traveler, Business trip, Group combined with Travelers with friends, -# Family with young children, Family with older children, With a pet +# A címkék feldolgozása új oszlopokká +# A Hotel_Reviews_Tags.py fájl azonosítja a legfontosabb címkéket +# Szabadidős utazás, Pár, Egyéni utazó, Üzleti út, Csoport kombinálva Baráti utazókkal, +# Család kisgyermekkel, Család nagyobb gyerekkel, Háziállattal df["Leisure_trip"] = df.Tags.apply(lambda tag: 1 if "Leisure trip" in tag else 0) df["Couple"] = df.Tags.apply(lambda tag: 1 if "Couple" in tag else 0) df["Solo_traveler"] = df.Tags.apply(lambda tag: 1 if "Solo traveler" in tag else 0) @@ -223,25 +223,25 @@ df["With_a_pet"] = df.Tags.apply(lambda tag: 1 if "With a pet" in tag else 0) ``` -### Az adatállomány mentése +### Mentés -Végül mentsd el az adatállományt az aktuális állapotában egy új néven. +Végül mentsd az adatkészletet az aktuális állapotában egy új néven. ```python df.drop(["Review_Total_Negative_Word_Counts", "Review_Total_Positive_Word_Counts", "days_since_review", "Total_Number_of_Reviews_Reviewer_Has_Given"], axis = 1, inplace=True) -# Saving new data file with calculated columns +# Új adatfájl mentése kiszámított oszlopokkal print("Saving results to Hotel_Reviews_Filtered.csv") df.to_csv(r'../data/Hotel_Reviews_Filtered.csv', index = False) ``` -## Érzelemfelismerési műveletek +## Érzelemelemzés műveletek -Ebben az utolsó szakaszban érzelemfelismerést alkalmazol a vélemény oszlopokra, és az eredményeket elmented egy adatállományban. +Ebben a végső szakaszban végezd el az érzelemelemzést az értékelői oszlopokon, és mentsd az eredményt egy új adatkészletbe. ## Gyakorlat: a szűrt adatok betöltése és mentése -Ne feledd, hogy most a korábban mentett szűrt adatállományt töltöd be, **nem** az eredeti adatállományt. +Jegyezd meg, hogy most a szűrt adatkészletet töltöd be, amelyet a korábbi szakaszban mentettél, **nem** az eredetit. ```python import time @@ -251,53 +251,77 @@ from nltk.corpus import stopwords from nltk.sentiment.vader import SentimentIntensityAnalyzer nltk.download('vader_lexicon') -# Load the filtered hotel reviews from CSV +# Töltse be a szűrt szállodai véleményeket CSV-ből df = pd.read_csv('../../data/Hotel_Reviews_Filtered.csv') -# You code will be added here +# Az Ön kódja ide kerül hozzáadásra -# Finally remember to save the hotel reviews with new NLP data added +# Végül ne felejtse el elmenteni a szállodai véleményeket az új NLP adatokkal együtt print("Saving results to Hotel_Reviews_NLP.csv") df.to_csv(r'../data/Hotel_Reviews_NLP.csv', index = False) ``` ### Stop szavak eltávolítása -Ha érzelemfelismerést futtatnál a negatív és pozitív vélemény oszlopokon, az hosszú időt vehet igénybe. Egy erős teszt laptopon, gyors CPU-val tesztelve 12-14 percet vett igénybe, attól függően, hogy melyik érzelemfelismerési könyvtárat használták. Ez viszonylag hosszú idő, így érdemes megvizsgálni, hogy lehet-e gyorsítani. +Ha az érzelemelemzést futtatnád a negatív és pozitív értékelői oszlopokon, az hosszú időt venne igénybe. Egy erős tesztlaptopon, gyors CPU-val 12-14 percig tartott, attól függően mely érzelemelemző könyvtárat használták. Ez viszonylag hosszú idő, ezért érdemes megvizsgálni a gyorsítás lehetőségét. -A stop szavak, vagyis olyan gyakori angol szavak eltávolítása, amelyek nem változtatják meg egy mondat érzelmi töltetét, az első lépés. Ezek eltávolításával az érzelemfelismerés gyorsabban fut, de nem lesz kevésbé pontos (mivel a stop szavak nem befolyásolják az érzelmi töltetet, de lassítják az elemzést). +A stop szavak, azaz gyakori angol szavak, amelyek nem befolyásolják a mondat érzelmi töltetét, eltávolítása az első lépés. Eltávolításukkal gyorsabb lehet az érzelemelemzés, de nem lesz kevésbé pontos (mivel a stop szavak nem befolyásolják az érzelmet, csak lassítják az elemzést). -A leghosszabb negatív vélemény 395 szóból állt, de a stop szavak eltávolítása után 195 szóból. +A leghosszabb negatív értékelés 395 szóból állt, de a stop szavak eltávolítása után már csak 195 szóból. -A stop szavak eltávolítása szintén gyors művelet, 515,000 sorból álló 2 vélemény oszlopból a stop szavak eltávolítása 3,3 másodpercet vett igénybe a teszt eszközön. Ez kissé több vagy kevesebb időt vehet igénybe nálad, attól függően, hogy milyen gyors a CPU-d, mennyi RAM-od van, van-e SSD-d, és néhány más tényezőtől. A művelet relatív rövidsége azt jelenti, hogy ha javítja az érzelemfelismerés idejét, akkor érdemes elvégezni. +A stop szavak eltávolítása szintén gyors művelet volt: két értékelési oszlopból több mint 515 000 sorból 3,3 másodperc alatt megtörtént teszt környezetben. A tényleges idő kissé eltérhet a készülék CPU sebességétől, RAM-tól, SSD meglététől és egyéb tényezőktől függően. Az elég rövid végrehajtás miatt, ha ezzel csökkenthető az érzelemelemzés ideje, akkor megéri megtenni. -@@CODE_BLOCK_ -Az NLTK különböző érzelemelemzőket kínál, amelyekkel tanulhatsz, és helyettesítheted őket, hogy megnézd, az érzelem mennyire pontos vagy kevésbé pontos. Itt a VADER érzelemelemzést használjuk. +```python +from nltk.corpus import stopwords + +# Töltse be a szállodai értékeléseket CSV-ből +df = pd.read_csv("../../data/Hotel_Reviews_Filtered.csv") + +# Távolítsa el a stop szavakat - sok szöveg esetén lassú lehet! +# Ryan Han (ryanxjhan a Kaggle-en) nagyszerű bejegyzést írt a különböző stop szavak eltávolítási módszerek teljesítményének méréséről +# https://www.kaggle.com/ryanxjhan/fast-stop-words-removal # Ryan által ajánlott módszer használata +start = time.time() +cache = set(stopwords.words("english")) +def remove_stopwords(review): + text = " ".join([word for word in review.split() if word not in cache]) + return text + +# Távolítsa el a stop szavakat mindkét oszlopból +df.Negative_Review = df.Negative_Review.apply(remove_stopwords) +df.Positive_Review = df.Positive_Review.apply(remove_stopwords) +``` -> Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, 2014. június. +### Érzelemelemzés végrehajtása + +Most kiszámolod az érzelemelemzést mind a negatív, mind a pozitív értékelésekhez, és az eredményt két új oszlopban tárolod. Az érzelem pontosságát az fogja mutatni, hogy összehasonlítod a véleményező pontszámával ugyanarra az értékelésre. Például, ha a negatív értékelés érzelmi töltete 1 (rendkívül pozitív), és a pozitív értékelés is 1, de a véleményező a legalacsonyabb pontszámot adta a szállodának, akkor vagy az értékelő szövege nem felel meg a pontszámnak, vagy az érzelemelemző nem ismerte fel helyesen az érzelmet. Várható, hogy az érzelem pontszámok néha teljesen hibásak lesznek, és ezt gyakran meg lehet magyarázni, pl. az értékelés lehet nagyon szarkasztikus: "Persze, nagyon élveztem, hogy fűtés nélküli szobában aludtam", és az érzelemelemző pozitívnak gondolja, míg egy ember tudja, hogy szarkazmus. + +Az NLTK többféle érzelemelemzőt is kínál, amiket kipróbálhatsz, hogy lássad, melyik mennyire pontos. Itt a VADER érzelemelemzést használjuk. + + +> Hutto, C.J. & Gilbert, E.E. (2014). VADER: Egy takarékos, szabályalapú modell a közösségi média szövegeinek érzelemelemzésére. Nyolcadik Nemzetközi Konferencia a Webblogokról és a Közösségi Médiumokról (ICWSM-14). Ann Arbor, MI, 2014. június. ```python from nltk.sentiment.vader import SentimentIntensityAnalyzer -# Create the vader sentiment analyser (there are others in NLTK you can try too) +# Hozd létre a vader érzelemelemzőt (az NLTK-ban vannak más lehetőségek is, amelyeket kipróbálhatsz) vader_sentiment = SentimentIntensityAnalyzer() -# Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014. +# Hutto, C.J. & Gilbert, E.E. (2014). VADER: Egy takarékos, szabályalapú modell a közösségi média szövegének érzelemelemzéséhez. Nyolcadik Nemzetközi Weblogok és Közösségi Média Konferencia (ICWSM-14). Ann Arbor, MI, 2014 június. -# There are 3 possibilities of input for a review: -# It could be "No Negative", in which case, return 0 -# It could be "No Positive", in which case, return 0 -# It could be a review, in which case calculate the sentiment +# Egy véleményhez 3 bemeneti lehetőség van: +# Lehet "Nincs negatív", ekkor térj vissza 0-val +# Lehet "Nincs pozitív", ekkor térj vissza 0-val +# Lehet egy vélemény, ekkor számold ki az érzelmet def calc_sentiment(review): if review == "No Negative" or review == "No Positive": return 0 return vader_sentiment.polarity_scores(review)["compound"] ``` -Később, amikor a programodban készen állsz az érzelem kiszámítására, alkalmazhatod azt minden egyes értékelésre az alábbi módon: +Később a programban, amikor készen állsz az érzelem kiszámítására, ezt alkalmazhatod minden értékelésre a következő módon: ```python -# Add a negative sentiment and positive sentiment column +# Adj hozzá egy negatív érzelmi töltetű és egy pozitív érzelmi töltetű oszlopot print("Calculating sentiment columns for both positive and negative reviews") start = time.time() df["Negative_Sentiment"] = df.Negative_Review.apply(calc_sentiment) @@ -306,7 +330,7 @@ end = time.time() print("Calculating sentiment took " + str(round(end - start, 2)) + " seconds") ``` -Ez körülbelül 120 másodpercet vesz igénybe a számítógépemen, de ez minden gépen eltérő lehet. Ha ki szeretnéd nyomtatni az eredményeket, és megnézni, hogy az érzelem megfelel-e az értékelésnek: +Ez körülbelül 120 másodpercet vesz igénybe a számítógépemen, de gépenként eltérő lehet. Ha ki akarod nyomtatni az eredményeket és megnézni, hogy az érzelem egyezik-e az értékeléssel: ```python df = df.sort_values(by=["Negative_Sentiment"], ascending=True) @@ -315,44 +339,45 @@ df = df.sort_values(by=["Positive_Sentiment"], ascending=True) print(df[["Positive_Review", "Positive_Sentiment"]]) ``` -Az utolsó dolog, amit a fájllal meg kell tenni, mielőtt a kihívásban használnád, az az, hogy elmented! Érdemes átrendezni az összes új oszlopot is, hogy könnyebb legyen velük dolgozni (emberi szempontból ez csak egy kozmetikai változtatás). +A legutolsó teendő a fájllal a kihívás előtt, hogy elmentsd! Érdemes megfontolnod az új oszlopok átrendezését is, hogy könnyebben kezelhetők legyenek (egy ember számára ez csak esztétikai változtatás). ```python -# Reorder the columns (This is cosmetic, but to make it easier to explore the data later) +# Átrendezni az oszlopokat (Ez csak kozmetikai, de megkönnyíti a későbbi adatfelfedezést) df = df.reindex(["Hotel_Name", "Hotel_Address", "Total_Number_of_Reviews", "Average_Score", "Reviewer_Score", "Negative_Sentiment", "Positive_Sentiment", "Reviewer_Nationality", "Leisure_trip", "Couple", "Solo_traveler", "Business_trip", "Group", "Family_with_young_children", "Family_with_older_children", "With_a_pet", "Negative_Review", "Positive_Review"], axis=1) print("Saving results to Hotel_Reviews_NLP.csv") df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False) ``` -Az egész kódot futtatnod kell [az elemző jegyzetfüzethez](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) (miután futtattad [a szűrő jegyzetfüzetet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb), hogy létrehozd a Hotel_Reviews_Filtered.csv fájlt). +Futtasd le az egész kódot a [elemzési jegyzetfüzethez](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) (miután lefuttattad a [szűrő jegyzetfüzetet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) a Hotel_Reviews_Filtered.csv fájl előállításához). -Összefoglalva, a lépések: +Ismétlésképpen, a lépések a következők: -1. Az eredeti adatállomány **Hotel_Reviews.csv** a korábbi leckében került feltárásra [az explorer jegyzetfüzettel](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb) -2. A Hotel_Reviews.csv fájlt [a szűrő jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) szűri, amelynek eredménye **Hotel_Reviews_Filtered.csv** -3. A Hotel_Reviews_Filtered.csv fájlt [az érzelemelemző jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) dolgozza fel, amelynek eredménye **Hotel_Reviews_NLP.csv** -4. Használd a Hotel_Reviews_NLP.csv fájlt az alábbi NLP kihívásban +1. Az eredeti adathalmaz fájl, a **Hotel_Reviews.csv** az előző leckében került feltérképezésre a [feltérképező jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb) segítségével +2. A Hotel_Reviews.csv a [szűrő jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) által szűrésre kerül, ami **Hotel_Reviews_Filtered.csv** fájlt eredményez +3. A Hotel_Reviews_Filtered.csv a [érzelemelemző jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) által feldolgozásra kerül, amely **Hotel_Reviews_NLP.csv** fájlt eredményez +4. Használd a Hotel_Reviews_NLP.csv-t az alábbi NLP kihívásban ### Következtetés -Amikor elkezdted, volt egy adatállományod oszlopokkal és adatokkal, de nem mindegyik volt ellenőrizhető vagy használható. Feltártad az adatokat, kiszűrted, amire nincs szükséged, átalakítottad a címkéket valami hasznosabbá, kiszámítottad a saját átlagokat, hozzáadtál néhány érzelem oszlopot, és remélhetőleg érdekes dolgokat tanultál a természetes szöveg feldolgozásáról. +Amikor elkezdted, volt egy adathalmazod oszlopokkal és adatokkal, de nem mindegyiket lehetett ellenőrizni vagy használni. Feltérképezted az adatokat, kiszűrted, amire nincs szükséged, címkéket hasznos információvá alakítottad, kiszámoltad a saját átlagaidat, hozzáadtál néhány érzelem oszlopot, és remélhetőleg érdekes dolgokat tanultál a természetes szöveg feldolgozásáról. -## [Utólagos kvíz](https://ff-quizzes.netlify.app/en/ml/) +## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/) ## Kihívás -Most, hogy elemezted az adatállományt érzelem szempontjából, próbáld meg alkalmazni azokat a stratégiákat, amelyeket ebben a tananyagban tanultál (például klaszterezést), hogy mintákat találj az érzelmek körül. +Most, hogy az adathalmazod elemzésre került érzelem szempontjából, nézd meg, hogy a tanult stratégiákat (pl. klaszterezés) alkalmazva meg tudod-e találni az érzelem körüli mintázatokat. ## Áttekintés és önálló tanulás -Vedd fel [ezt a Learn modult](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott), hogy többet tanulj, és különböző eszközöket használj az érzelmek feltárására a szövegben. - -## Feladat +Vedd [ezt a Learn modult](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott) hogy többet tanulj és különböző eszközöket használj a szöveg érzelemének feltérképezésére. +## Feladat -[Próbálj ki egy másik adatállományt](assignment.md) +[Próbálj ki egy másik adathalmazt](assignment.md) --- -**Felelősség kizárása**: -Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file + +**Jogi nyilatkozat**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered. + \ No newline at end of file diff --git a/translations/hu/8-Reinforcement/1-QLearning/README.md b/translations/hu/8-Reinforcement/1-QLearning/README.md index 3c62ffae1..685729eb8 100644 --- a/translations/hu/8-Reinforcement/1-QLearning/README.md +++ b/translations/hu/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ # Bevezetés a megerősítéses tanulásba és a Q-tanulásba -![A gépi tanulás megerősítésének összefoglalása egy sketchnote-ban](../../../../sketchnotes/ml-reinforcement.png) -> Sketchnote: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Összegzés a megerősítéses tanulásról gépi tanulásban egy vázlatjegyzetben](../../../../translated_images/hu/ml-reinforcement.94024374d63348db.webp) +> Vázlatjegyzet készítette: [Tomomi Imura](https://www.twitter.com/girlie_mac) -A megerősítéses tanulás három fontos fogalmat foglal magában: az ügynököt, az állapotokat és az állapotonkénti cselekvések halmazát. Egy adott állapotban végrehajtott cselekvésért az ügynök jutalmat kap. Képzeljük el újra a Super Mario számítógépes játékot. Te vagy Mario, egy pályán állsz egy szakadék szélén. Fölötted egy érme van. Az, hogy te Mario vagy, egy adott pályán, egy adott pozícióban... ez az állapotod. Ha egy lépést jobbra lépsz (egy cselekvés), leesel a szakadékba, és alacsony pontszámot kapsz. Ha viszont megnyomod az ugrás gombot, pontot szerzel, és életben maradsz. Ez egy pozitív kimenetel, amiért pozitív pontszámot kell kapnod. +A megerősítéses tanulás három fontos fogalmat foglal magában: az ágentet, néhány állapotot és állapotonként egy cselekvési halmazt. Egy adott állapotban végrehajtott cselekedetért az ágens jutalmat kap. Gondoljunk újra a Super Mario számítógépes játékra. Te vagy Mario, egy játék szinten, egy szikla szélén állsz. Fent feletted egy érme van. Te, mint Mario, egy játékszinten, egy adott pozícióban... ez az állapotod. Egy lépés jobbra (cselekvés) átesne a sziklaperemen, és ez alacsony numerikus pontszámot eredményezne. Azonban a ugrás gomb megnyomásával pontot szerezhetnél, és életben maradnál. Ez egy pozitív eredmény, ami pozitív numerikus pontszámot kell, hogy adjon. -A megerősítéses tanulás és egy szimulátor (a játék) segítségével megtanulhatod, hogyan játszd a játékot úgy, hogy maximalizáld a jutalmat, vagyis életben maradj, és minél több pontot szerezz. +Megerősítéses tanulás és egy szimulátor (a játék) használatával megtanulhatod, hogyan játszd a játékot úgy, hogy maximalizáld a jutalmat, ami az életben maradás és minél több pont szerzése. [![Bevezetés a megerősítéses tanulásba](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Kattints a fenti képre, hogy meghallgasd Dmitry előadását a megerősítéses tanulásról. +> 🎥 Kattints a fent látható képre, hogy meghallgasd Dmitry előadását a megerősítéses tanulásról ## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/) ## Előfeltételek és beállítás -Ebben a leckében Pythonban fogunk kódot kipróbálni. Képesnek kell lenned futtatni a Jupyter Notebook kódját, akár a saját számítógépeden, akár a felhőben. +Ebben az órában kódokat fogunk kipróbálni Pythonban. Képesnek kell lenned futtatni a Jupyter Notebook kódját ennek a leckének, akár a számítógépeden, akár a felhőben. -Megnyithatod [a lecke notebookját](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb), és végigmehetsz a leckén, hogy felépítsd a példát. +Megnyithatod [a lecke jegyzetfüzetét](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb), és végigkövetheted a leckét a felépítéshez. -> **Megjegyzés:** Ha a kódot a felhőből nyitod meg, le kell töltened az [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) fájlt is, amelyet a notebook kód használ. Helyezd el ugyanabban a könyvtárban, ahol a notebook található. +> **Megjegyzés:** Ha a kódot a felhőből nyitod meg, akkor le kell töltened a [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) fájlt is, amely a notebook kódban használatos. Tedd ezt a jegyzetfüzet könyvtárába. ## Bevezetés -Ebben a leckében **[Péter és a farkas](https://hu.wikipedia.org/wiki/P%C3%A9ter_%C3%A9s_a_farkas)** világát fogjuk felfedezni, amelyet egy orosz zeneszerző, [Szergej Prokofjev](https://hu.wikipedia.org/wiki/Szergej_Prokofjev) zenés meséje ihletett. A **megerősítéses tanulás** segítségével Pétert irányítjuk, hogy felfedezze a környezetét, ízletes almákat gyűjtsön, és elkerülje a farkassal való találkozást. +Ebben a leckében felfedezzük a **[Péter és a farkas](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** világát, melyet egy orosz zeneszerző, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) zenés meséje ihletett. Megerősítéses tanulást fogunk alkalmazni, hogy Péter felfedezhesse a környezetét, gyűjtheesse az ízletes almákat, és elkerülhesse a farkast. -A **megerősítéses tanulás** (RL) egy olyan tanulási technika, amely lehetővé teszi számunkra, hogy egy **ügynök** optimális viselkedését tanuljuk meg egy adott **környezetben**, számos kísérlet lefuttatásával. Az ügynöknek ebben a környezetben van egy **célja**, amelyet egy **jutalomfüggvény** határoz meg. +A **Megerősítéses tanulás** (RL) egy olyan tanulási technika, amely lehetővé teszi számunkra, hogy egy **ágens** optimális viselkedését megtanuljuk egy adott **környezetben** sok kísérlet segítségével. Az ágensnek ebben a környezetben van egy **célja**, amelyet egy **jutalomfüggvény** határoz meg. ## A környezet -Egyszerűség kedvéért tekintsük Péter világát egy `szélesség` x `magasság` méretű négyzet alakú táblának, például így: +Az egyszerűség kedvéért tekintsük Péter világát egy `szélesség` x `magasság` méretű négyzetes táblának, így: -![Péter környezete](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Péter környezete](../../../../translated_images/hu/environment.40ba3cb66256c93f.webp) -A tábla minden cellája lehet: +A táblán minden cella lehet: -* **talaj**, amin Péter és más lények járhatnak. -* **víz**, amin nyilvánvalóan nem lehet járni. -* **fa** vagy **fű**, ahol pihenni lehet. -* egy **alma**, amit Péter örömmel találna meg, hogy táplálkozzon. -* egy **farkas**, ami veszélyes, és el kell kerülni. +* **föld**, amelyen Péter és más lények járhatnak. +* **víz**, amelyen természetesen nem lehet járni. +* egy **fa** vagy **fű**, ahol meg lehet pihenni. +* egy **alma**, ami valami olyasmit jelent, amit Péter örömmel találna meg, hogy táplálkozhasson. +* egy **farkas**, amely veszélyes és kerülendő. -Van egy külön Python modul, az [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), amely tartalmazza a kódot a környezettel való munkához. Mivel ez a kód nem fontos a fogalmak megértéséhez, importáljuk a modult, és használjuk a minta tábla létrehozásához (kódblokk 1): +Van egy külön Python modul, a [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), amely tartalmazza a kódot a környezettel való munkához. Mivel ez a kód nem fontos a fogalmak megértéséhez, importáljuk a modult, és használjuk a minta tábla létrehozásához (kódblokk 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -Ez a kód egy, a fentiekhez hasonló környezetet fog megjeleníteni. +Ez a kód ki kell, hogy írjon egy képet a környezetről, amely hasonló a fentiekhez. -## Cselekvések és stratégia +## Cselekvések és szabályzat -Példánkban Péter célja az alma megtalálása, miközben elkerüli a farkast és más akadályokat. Ehhez lényegében addig sétálhat, amíg meg nem találja az almát. +Péter célja példánkban az volna, hogy megtaláljon egy almát, miközben elkerüli a farkast és egyéb akadályokat. Ehhez lényegében körbejárhat, amíg talál egy almát. Ezért bármely pozícióban választhat a következő cselekvések közül: fel, le, balra és jobbra. -Ezeket a cselekvéseket egy szótárként definiáljuk, és a megfelelő koordinátaváltozásokhoz rendeljük. Például a jobbra mozgás (`R`) egy `(1,0)` párnak felel meg. (kódblokk 2): +Ezeket a cselekvéseket egy szótárként definiáljuk, és hozzárendeljük az adott koordinátaváltozásokat. Például a jobbra való mozgás (`R`) egy `(1,0)` párnak felel meg (kódblokk 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()) } ``` -Összefoglalva, a forgatókönyv stratégiája és célja a következő: +Összefoglalva, a stratégia és a cél az alábbiak: -- **A stratégia**, az ügynökünk (Péter) stratégiáját egy úgynevezett **politika** határozza meg. A politika egy olyan függvény, amely bármely adott állapotban visszaadja a cselekvést. Esetünkben a probléma állapotát a tábla és a játékos aktuális pozíciója képviseli. +- **A stratégia** az ágensemnek (Péter) egy ún. **szabályzat** által van megadva. Egy szabályzat egy függvény, ami visszaadja az adott állapotban végrehajtandó cselekvést. A mi esetünkben a probléma állapota a tábla, beleértve a játékos pillanatnyi pozícióját. -- **A cél**, a megerősítéses tanulás célja egy jó politika megtanulása, amely lehetővé teszi a probléma hatékony megoldását. Az alapként vegyük figyelembe a legegyszerűbb politikát, az úgynevezett **véletlenszerű sétát**. +- **A cél**, a megerősítéses tanulásban, hogy végül megtanuljunk egy jó szabályzatot, amely hatékonyan megoldja a problémát. Mégis, kiindulásként vegyük a legegyszerűbb szabályzatot, az ún. **véletlenszerű sétát**. ## Véletlenszerű séta -Először oldjuk meg a problémát egy véletlenszerű séta stratégiával. A véletlenszerű séta során véletlenszerűen választjuk ki a következő cselekvést az engedélyezett cselekvések közül, amíg el nem érjük az almát (kódblokk 3). +Először oldjuk meg problémánkat a véletlenszerű séta stratégiával. Véletlenszerű sétával véletlenszerűen választjuk ki a következő cselekvést az engedélyezett cselekvések közül, amíg el nem érjük az almát (kódblokk 3). -1. Valósítsd meg a véletlenszerű sétát az alábbi kóddal: +1. Valósítsuk meg a véletlenszerű sétát az alábbi kóddal: ```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 # lépések száma + # állítsa be a kezdő pozíciót if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # siker! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # farkas elnyelte vagy vízbe fulladt 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) # hajtsa végre a tényleges lépést break n+=1 walk(m,random_policy) ``` - A `walk` hívás visszaadja a megfelelő útvonal hosszát, amely futtatásonként változhat. + A `walk` hívás vissza kell, hogy adja az adott út hosszát, amely egyik futásról a másikra változhat. -1. Futtasd le a séta kísérletet többször (például 100-szor), és nyomtasd ki az eredményeket (kódblokk 4): +1. Futtasd a séta kísérletet több alkalommal (például 100), és írd ki az eredménystatisztikát (kódblokk 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Először oldjuk meg a problémát egy véletlenszerű séta stratégiával. A v print_statistics(random_policy) ``` - Figyeld meg, hogy az útvonal átlagos hossza körülbelül 30-40 lépés, ami elég sok, tekintve, hogy az átlagos távolság a legközelebbi almáig körülbelül 5-6 lépés. + Megjegyzés: az átlagos út hossza kb. 30-40 lépés, ami elég sok, figyelembe véve, hogy az átlagos távolság a legközelebbi almához kb. 5-6 lépés. - Azt is láthatod, hogyan mozog Péter a véletlenszerű séta során: + Megnézheted, hogyan néz ki Péter mozgása a véletlenszerű séta során: ![Péter véletlenszerű sétája](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Jutalomfüggvény -Ahhoz, hogy a politikánk intelligensebb legyen, meg kell értenünk, mely lépések "jobbak", mint mások. Ehhez meg kell határoznunk a célunkat. +Ahhoz, hogy szabályzatunk okosabb legyen, meg kell értenünk, mely lépések "jobbak", mint mások. Ehhez definiálnunk kell a célunkat. -A cél egy **jutalomfüggvény** segítségével határozható meg, amely minden állapothoz visszaad egy pontszámot. Minél magasabb a szám, annál jobb a jutalomfüggvény. (kódblokk 5) +A célt egy **jutalomfüggvénnyel** határozhatjuk meg, amely minden állapothoz pontszámot rendel. Minél nagyobb a szám, annál jobb a jutalomfüggvény. (kódblokk 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -A jutalomfüggvények érdekessége, hogy a legtöbb esetben *csak a játék végén kapunk jelentős jutalmat*. Ez azt jelenti, hogy az algoritmusunknak valahogy emlékeznie kell a "jó" lépésekre, amelyek pozitív jutalomhoz vezettek a végén, és növelnie kell azok fontosságát. Hasonlóképpen, minden olyan lépést, amely rossz eredményhez vezet, el kell kerülni. +Érdekes, hogy a jutalomfüggvények többségében *a jelentős jutalmat csak a játék végén kapjuk meg*. Ez azt jelenti, hogy algoritmusunknak valahogy meg kell jegyeznie azokat a "jó" lépéseket, amelyek pozitív jutalomhoz vezetnek a végén, és azok fontosságát növelnie kell. Hasonlóképpen, minden rossz eredményhez vezető lépést ösztönözni kell, hogy elkerülje az algoritmus. ## Q-tanulás -Az algoritmus, amelyet itt tárgyalunk, a **Q-tanulás**. Ebben az algoritmusban a politika egy **Q-tábla** nevű függvénnyel (vagy adatszerkezettel) van meghatározva. Ez rögzíti az egyes cselekvések "jóságát" egy adott állapotban. +Egy algoritmus, amelyet itt megvitatunk, a **Q-tanulás**. Ebben az algoritmusban a szabályzat egy függvénnyel (vagy adatszerkezettel) van definiálva, amit **Q-táblának** nevezünk. Ez rögzíti az egyes állapotokban elérhető cselekvések "jósságát". -Q-táblának hívják, mert gyakran kényelmes táblázatként vagy többdimenziós tömbként ábrázolni. Mivel a táblánk mérete `szélesség` x `magasság`, a Q-táblát egy numpy tömbként ábrázolhatjuk, amelynek alakja `szélesség` x `magasság` x `len(cselekvések)`: (kódblokk 6) +Q-táblának hívjuk, mert gyakran kényelmes táblázatként vagy többdimenziós tömbként ábrázolni. Mivel a táblánk mérete `szélesség` x `magasság`, a Q-táblát egy numpy tömbbel ábrázolhatjuk, amelynek alakja `szélesség` x `magasság` x `len(cselekvések)`: (kódblokk 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Figyeld meg, hogy a Q-tábla összes értékét egyenlő értékkel inicializáljuk, esetünkben 0,25-tel. Ez megfelel a "véletlenszerű séta" politikának, mert minden lépés minden állapotban egyformán jó. A Q-táblát átadhatjuk a `plot` függvénynek, hogy vizualizáljuk a táblát a táblán: `m.plot(Q)`. +Vegyük észre, hogy a Q-tábla összes értékét egyenlőre inicializáljuk, nálunk ez 0.25. Ez megfelel a "véletlenszerű séta" szabályzatnak, mert minden lépés minden állapotban egyformán jó. A Q-táblát átadhatjuk a `plot` függvénynek, hogy megjelenítsük azt a táblán: `m.plot(Q)`. -![Péter környezete](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Péter környezete](../../../../translated_images/hu/env_init.04e8f26d2d60089e.webp) -A cellák közepén egy "nyíl" látható, amely a mozgás preferált irányát jelzi. Mivel minden irány egyenlő, egy pont jelenik meg. +Minden cella közepén egy "nyíl" jelzi az előnyben részesített mozgásirányt. Mivel minden irány egyenlő, egy pont van megjelenítve helyette. -Most el kell indítanunk a szimulációt, felfedeznünk a környezetet, és meg kell tanulnunk a Q-tábla értékeinek jobb eloszlását, amely lehetővé teszi számunkra, hogy sokkal gyorsabban megtaláljuk az utat az almához. +Most futtatnunk kell a szimulációt, felfedezni környezetünket, és megtanulni egy jobb Q-tábla értékeloszlást, amely gyorsabban megtalálja az almához vezető utat. -## A Q-tanulás lényege: Bellman-egyenlet +## Q-tanulás lényege: Bellman-egyenlet -Amint elkezdünk mozogni, minden cselekvéshez tartozik egy megfelelő jutalom, azaz elméletileg kiválaszthatjuk a következő cselekvést a legmagasabb azonnali jutalom alapján. Azonban a legtöbb állapotban a lépés nem éri el a célunkat, hogy elérjük az almát, így nem tudjuk azonnal eldönteni, melyik irány a jobb. +Amikor elindulunk, minden cselekvéshez tartozik egy jutalom, vagyis elméletileg kiválaszthatnánk a következő cselekvést a legmagasabb azonnali jutalom alapján. Azonban a legtöbb állapotban a lépés nem teljesíti célunkat, vagyis nem jutunk az almához, így nem dönthetünk azonnal, melyik irány a jobb. -> Ne feledd, hogy nem az azonnali eredmény számít, hanem a végső eredmény, amelyet a szimuláció végén kapunk. +> Ne feledd, hogy nem az azonnali eredmény számít, hanem a végső eredmény, amit a szimuláció végén kapunk meg. -Ahhoz, hogy figyelembe vegyük ezt a késleltetett jutalmat, a **[dinamikus programozás](https://hu.wikipedia.org/wiki/Dinamikus_programoz%C3%A1s)** elveit kell alkalmaznunk, amelyek lehetővé teszik, hogy rekurzívan gondolkodjunk a problémánkról. +A késleltetett jutalom figyelembe vételéhez a **[dinamikus programozás](https://en.wikipedia.org/wiki/Dynamic_programming)** elveit kell alkalmaznunk, amelyek lehetővé teszik a probléma rekurzív megfontolását. -Tegyük fel, hogy most az *s* állapotban vagyunk, és a következő állapotba, *s'*-be akarunk lépni. Ezzel megkapjuk az azonnali jutalmat, *r(s,a)*, amelyet a jutalomfüggvény határoz meg, plusz némi jövőbeli jutalmat. Ha feltételezzük, hogy a Q-táblánk helyesen tükrözi az egyes cselekvések "vonzerejét", akkor az *s'* állapotban egy olyan *a* cselekvést választunk, amely a *Q(s',a')* maximális értékének felel meg. Így az *s* állapotban elérhető legjobb jövőbeli jutalom a következőképpen lesz meghatározva: `max` +Tegyük fel, hogy most az *s* állapotban vagyunk, és a következő *s'* állapotba akarunk lépni. Ezzel kapjuk az azonnali jutalmat *r(s,a)* a jutalomfüggvényből, plusz egy jövőbeni jutalmat. Ha feltételezzük, hogy a Q-tábla helyesen tükrözi a cselekvések "vonzerejét", akkor az *s'* állapotban kiválasztjuk az *a* cselekvést, amely a *Q(s',a')* legmagasabb értékéhez tartozik. Így a legjobb jövőbeni jutalom az *s* állapotban legyen a `max`a'*Q(s',a')* (a maximum az összes lehetséges *a'* cselekvésen számított). -## A szabály ellenőrzése +Ez adja a **Bellman formula**-t a Q-tábla értékének kiszámításához az *s* állapotban, adott *a* cselekvésnél: -Mivel a Q-tábla felsorolja az egyes állapotokban végrehajtható cselekvések "vonzerejét", könnyen használható hatékony navigáció meghatározására a világunkban. A legegyszerűbb esetben kiválaszthatjuk azt a cselekvést, amely a legmagasabb Q-tábla értékhez tartozik: (kód blokk 9) + + +Itt γ az ún. **diszkont faktor**, amely meghatározza, milyen mértékben preferáljuk a jelenlegi jutalmat a jövőbelivel szemben és fordítva. + +## Tanulási algoritmus + +A fenti egyenlet alapján most megírhatjuk pszeudokódban a tanulási algoritmust: + +* Inicializáljuk a Q-táblát Q azonos számokkal minden állapothoz és cselekvéshez +* Beállítjuk a tanulási rátát α ← 1 +* Ismételjük meg a szimulációt sokszor + 1. Induljunk véletlenszerű pozícióból + 1. Ismételjük + 1. Válasszuk ki a cselekvést *a* az állapot *s*-ben + 2. Hajtsuk végre a cselekvést, lépjünk az új *s'* állapotba + 3. Ha vége a játéknak, vagy a teljes jutalom túl kicsi - lépjünk ki a szimulációból + 4. Számítsuk ki a jutalmat *r* az új állapotban + 5. Frissítsük a Q-függvényt a Bellman-egyenlet szerint: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Frissítsük a teljes jutalmat és csökkentsük az α-t. + +## Kiaknázás vs. felfedezés + +A fenti algoritmusban nem részleteztük, pontosan hogyan válasszuk ki a cselekvést a 2.1 lépésben. Ha véletlenszerűen választunk, akkor véletlenszerűen felfedezzük a környezetet, és gyakran meghalhatunk, valamint bejárhatunk olyan területeket is, ahová egyébként nem mennénk. Alternatív megoldás, hogy kiaknázod a Q-tábla ismert értékeit, és így a legjobb cselekvést választod az adott állapotban (magasabb Q-értékű). Ez azonban megakadályozza a többi állapot felfedezését, és valószínűleg nem találjuk meg az optimális megoldást. + +Ezért a legjobb megközelítés egyensúlyt teremteni a felfedezés és a kiaknázás között. Ezt úgy érhetjük el, ha az állapotban lévő cselekvéseket a Q-tábla értékeinek arányában választjuk ki valószínűséggel. Eleinte, amikor minden Q-érték azonos, ez véletlenszerű választásnak felel meg, de ahogy többet tanulunk a környezetünkről, egyre valószínűbb, hogy követjük az optimális útvonalat, miközben az ágnes néha felfedező útra is mehet. + +## Python megvalósítás + +Most készen állunk a tanulási algoritmus megvalósítására. Mielőtt ezt megtennénk, szükségünk van egy függvényre, amely a Q-tábla tetszőleges számait átalakítja a megfelelő cselekvések valószínűségi vektorává. + +1. Hozd létre a `probs()` függvényt: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Egy kis `eps` értéket adunk hozzá az eredeti vektorhoz, hogy elkerüljük a 0-val való osztást az induló esetben, amikor a vektor összetevői azonosak. + +Futtasd az algoritmust 5000 kísérlet, ún. **epocha** során: (kódblokk 8) +```python + for epoch in range(5000): + + # Válassz kezdeti pontot + m.random_start() + + # Kezdd el az utazást + 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) # Megengedjük, hogy a játékos a táblán kívülre lépjen, ami az epizód végét jelenti + 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 +``` + +Az algoritmus futása után a Q-táblát frissíteni kell azzal az értékkel, amely meghatározza a különböző cselekvések vonzerejét minden lépésnél. Megpróbálhatjuk vizualizálni a Q-táblát azáltal, hogy minden cellában megjelenítünk egy vektort, ami a kívánt mozgás irányába mutat. Egyszerűség kedvéért egy kis kört rajzolunk nyílhegy helyett. + + + +## A szabályzat ellenőrzése + +Mivel a Q-tábla felsorolja az egyes cselekvések "vonzerősségét" minden állapotban, könnyű vele hatékony navigációt definiálni a világunkban. A legegyszerűbb esetben a legmagasabb Q-táblabeli értékhez tartozó cselekvést választjuk: (kódblokk 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Ha többször kipróbálod a fenti kódot, észreveheted, hogy néha "elakad", és a jegyzetfüzetben a STOP gombot kell megnyomnod a megszakításhoz. Ez azért történik, mert előfordulhatnak olyan helyzetek, amikor két állapot "mutat" egymásra az optimális Q-értékek alapján, ilyenkor az ügynök végtelenül mozoghat ezek között az állapotok között. + +> Ha többször is lefuttatod a fenti kódot, észreveheted, hogy néha "lefagy", és a megszakításhoz meg kell nyomnod a STOP gombot a jegyzetfüzetben. Ez azért fordul elő, mert előfordulhat olyan helyzet, amikor két állapot "mutat egymásra" az optimális Q-érték tekintetében, ilyenkor az ágensek végtelenül mozognak ezek között az állapotok között. ## 🚀Kihívás -> **Feladat 1:** Módosítsd a `walk` függvényt úgy, hogy korlátozza az út maximális hosszát egy bizonyos lépésszámra (például 100), és figyeld meg, hogy a fenti kód időnként visszaadja ezt az értéket. +> **1. feladat:** Módosítsd a `walk` függvényt, hogy korlátozd a maximális út hosszát egy bizonyos lépésszámra (például 100 lépés), és figyeld, hogy a fenti kód időről időre visszaadja ezt az értéket. -> **Feladat 2:** Módosítsd a `walk` függvényt úgy, hogy ne térjen vissza olyan helyekre, ahol korábban már járt. Ez megakadályozza, hogy a `walk` ciklusba kerüljön, azonban az ügynök még mindig "csapdába" eshet egy olyan helyen, ahonnan nem tud kijutni. +> **2. feladat:** Módosítsd a `walk` függvényt úgy, hogy ne térjen vissza azokhoz a helyekhez, ahol már járt korábban. Ez megakadályozza, hogy a `walk` ciklikusan mozogjon, azonban az ágensek még így is csapdába eshetnek egy olyan helyen, ahonnan nem tudnak elmenekülni. ## Navigáció -Egy jobb navigációs szabály az lenne, amit a tanulás során használtunk, amely kombinálja a kihasználást és a felfedezést. Ebben a szabályban minden cselekvést egy bizonyos valószínűséggel választunk ki, amely arányos a Q-tábla értékeivel. Ez a stratégia még mindig eredményezheti, hogy az ügynök visszatér egy már felfedezett helyre, de ahogy az alábbi kódból látható, ez nagyon rövid átlagos útvonalat eredményez a kívánt helyre (ne feledd, hogy a `print_statistics` 100-szor futtatja a szimulációt): (kód blokk 10) +Egy jobb navigációs politika az, amit a tanulás során használtunk, amely kombinálja a kihasználást és a felfedezést. Ebben a politikában minden egyes akciót bizonyos valószínűséggel választunk ki, arányosan a Q-tábla értékeivel. Ez a stratégia még mindig eredményezheti, hogy az ágensek visszatérjenek egy már felfedezett helyre, de, ahogy a lenti kódból látható, nagyon rövid átlagos utat eredményez a kívánt helyhez (emlékezz rá, hogy a `print_statistics` százszor futtatja a szimulációt): (kódblokk 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -A kód futtatása után sokkal rövidebb átlagos útvonalhosszt kell kapnod, 3-6 lépés körül. +Ennek a kódnak a lefuttatása után sokkal kisebb átlagos út hosszt kell kapni, mint korábban, körülbelül 3-6 között. ## A tanulási folyamat vizsgálata -Ahogy említettük, a tanulási folyamat egyensúlyozás a felfedezés és a problématér szerkezetéről szerzett tudás kihasználása között. Láttuk, hogy a tanulás eredményei (az ügynök képessége, hogy rövid utat találjon a célhoz) javultak, de az is érdekes, hogy megfigyeljük, hogyan viselkedik az átlagos útvonalhossz a tanulási folyamat során: +Ahogy említettük, a tanulási folyamat az új ismeretek felfedezése és hasznosítása közötti egyensúly. Láttuk, hogy a tanulás eredménye (az ágensek segítségével a célhoz vezető rövid út megtalálásának képessége) javult, de érdekes megfigyelni, hogyan viselkedik az átlagos út hossz a tanulási folyamat során: + + -## A tanulságok összefoglalása: +A tanulságok összefoglalva: -- **Az átlagos útvonalhossz növekszik**. Amit itt látunk, az az, hogy eleinte az átlagos útvonalhossz növekszik. Ez valószínűleg azért van, mert amikor semmit sem tudunk a környezetről, hajlamosak vagyunk rossz állapotokba, vízbe vagy farkasok közé kerülni. Ahogy többet tanulunk és elkezdjük használni ezt a tudást, hosszabb ideig tudjuk felfedezni a környezetet, de még mindig nem tudjuk pontosan, hol vannak az almák. +- **Az átlagos út hossz nő**. Amit itt látunk, az az, hogy kezdetben az átlagos út hossz nő. Valószínűleg azért, mert amikor semmit sem tudunk a környezetről, akkor könnyen csapdába eshetünk rossz állapotokban, például vízben vagy a farkasnál. Ahogy többet tanulunk és használjuk ezt a tudást, hosszabb ideig tudjuk felfedezni a környezetet, de még mindig nem ismerjük jól, hol vannak az almák. -- **Az útvonalhossz csökken, ahogy többet tanulunk**. Miután eleget tanultunk, az ügynök számára könnyebbé válik a cél elérése, és az útvonalhossz csökkenni kezd. Azonban még mindig nyitottak vagyunk a felfedezésre, így gyakran eltérünk az optimális úttól, és új lehetőségeket fedezünk fel, ami hosszabb utat eredményez. +- **Az út hossz csökken, ahogy többet tanulunk**. Miután elég sokat megtanultunk, az ügynök számára könnyebb elérni a célt, és az út hossza elkezd csökkeni. Azonban még mindig nyitottak vagyunk a felfedezésre, így gyakran eltérünk a legjobb úttól, és új lehetőségeket fedezünk fel, ami az út hosszát az optimálisnál hosszabbá teszi. -- **A hossz hirtelen megnő**. Amit ezen a grafikonon még megfigyelhetünk, az az, hogy egy ponton az útvonalhossz hirtelen megnőtt. Ez a folyamat sztochasztikus természetét jelzi, és azt, hogy bizonyos pontokon "elronthatjuk" a Q-tábla együtthatóit azzal, hogy új értékekkel felülírjuk őket. Ezt ideálisan minimalizálni kellene a tanulási ráta csökkentésével (például a tanulás végéhez közeledve csak kis értékkel módosítjuk a Q-tábla értékeit). +- **A hossz hirtelen megnő**. A grafikonon azt is megfigyelhetjük, hogy egy ponton a hossz hirtelen megnőtt. Ez a folyamat sztochasztikus jellegére utal, és arra, hogy egy ponton "tönkretehetjük" a Q-tábla együtthatóit, ha új értékekkel felülírjuk azokat. Ezt ideális esetben csökkenteni kell a tanulási ráta visszaesésével (például a tanulás végén csak kis mértékben módosítjuk a Q-tábla értékeit). -Összességében fontos megjegyezni, hogy a tanulási folyamat sikere és minősége jelentősen függ a paraméterektől, mint például a tanulási ráta, a tanulási ráta csökkenése és a diszkontfaktor. Ezeket gyakran **hiperparamétereknek** nevezik, hogy megkülönböztessék őket a **paraméterektől**, amelyeket a tanulás során optimalizálunk (például a Q-tábla együtthatói). A legjobb hiperparaméter értékek megtalálásának folyamatát **hiperparaméter optimalizációnak** nevezzük, és ez egy külön témát érdemel. +Összességében fontos megjegyezni, hogy a tanulási folyamat sikere és minősége jelentősen függ a paraméterektől, mint például a tanulási ráta, a tanulási ráta csökkenése és a diszkont faktor. Ezeket gyakran **hiperparamétereknek** nevezzük, hogy elkülönítsük őket a **paraméterektől**, amelyeket a tanulás során optimalizálunk (például a Q-tábla együtthatóit). A legjobb hiperparaméter értékek megtalálásának folyamatát **hiperparaméter optimalizációnak** nevezzük, ami egy külön téma. -## [Utó-előadás kvíz](https://ff-quizzes.netlify.app/en/ml/) +## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/) -## Feladat -[Egy reálisabb világ](assignment.md) +## Feladat +[Egy valósághűbb világ](assignment.md) --- -**Felelősség kizárása**: -Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file + +**Jogi nyilatkozat**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered. + \ No newline at end of file diff --git a/translations/hu/9-Real-World/2-Debugging-ML-Models/README.md b/translations/hu/9-Real-World/2-Debugging-ML-Models/README.md index 5ceec6d39..8f49de57c 100644 --- a/translations/hu/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/hu/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,150 +1,179 @@ -# Utószó: Modellhibakeresés gépi tanulásban a Responsible AI dashboard komponenseivel +# Utószó: Modellhibakeresés gépi tanulásban a Felelős MI irányítópult elemeinek használatával + ## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/) - + ## Bevezetés -A gépi tanulás hatással van mindennapi életünkre. Az AI egyre inkább megjelenik olyan rendszerekben, amelyek alapvetően befolyásolják az egyéneket és a társadalmat, például az egészségügyben, pénzügyekben, oktatásban és foglalkoztatásban. Például rendszerek és modellek vesznek részt napi döntéshozatali feladatokban, mint például egészségügyi diagnózisok vagy csalások észlelése. Az AI fejlődése és gyors elterjedése azonban új társadalmi elvárásokkal és növekvő szabályozással találkozik. Gyakran látjuk, hogy az AI rendszerek nem felelnek meg az elvárásoknak, új kihívásokat vetnek fel, és a kormányok elkezdik szabályozni az AI megoldásokat. Ezért fontos, hogy ezeket a modelleket elemezzük, hogy mindenki számára igazságos, megbízható, befogadó, átlátható és felelősségteljes eredményeket biztosítsanak. +A gépi tanulás hatással van mindennapi életünkre. A mesterséges intelligencia utat tör magának a legfontosabb rendszerekben, amelyek minket, egyéneket, valamint társadalmunkat érintenek, az egészségügytől, a pénzügyeken és az oktatáson át a foglalkoztatásig. Például rendszerek és modellek vesznek részt a napi döntéshozatali feladatokban, mint az egészségügyi diagnózisok vagy a csalás felismerése. Következésképpen az MI fejlődésével és az ütemezett elterjedéssel párhuzamosan folyamatosan változó társadalmi elvárásokkal és növekvő szabályozásokkal találkozunk válaszként. Állandóan tapasztaljuk, hogy az MI-rendszerek nem felelnek meg az elvárásoknak; új kihívásokat tárnak fel; és a kormányok elkezdik szabályozni az MI-megoldásokat. Ezért fontos, hogy ezeket a modelleket elemezzük annak érdekében, hogy mindenki számára igazságos, megbízható, befogadó, átlátható és elszámoltatható eredményeket szolgáltassanak. -Ebben a tananyagban gyakorlati eszközöket mutatunk be, amelyekkel megvizsgálható, hogy egy modell rendelkezik-e felelősségteljes AI problémákkal. A hagyományos gépi tanulási hibakeresési technikák általában kvantitatív számításokon alapulnak, mint például az összesített pontosság vagy az átlagos hibaveszteség. Gondoljunk bele, mi történik, ha az adatok, amelyeket a modellek építéséhez használunk, bizonyos demográfiai csoportokat nem tartalmaznak, például faji, nemi, politikai nézetek vagy vallási csoportokat, vagy aránytalanul képviselik ezeket. Mi történik akkor, ha a modell kimenete egyes demográfiai csoportokat előnyben részesít? Ez túl- vagy alulképviseletet eredményezhet az érzékeny jellemzőcsoportokban, ami igazságossági, befogadási vagy megbízhatósági problémákat okozhat. Továbbá, a gépi tanulási modelleket gyakran "fekete dobozként" kezelik, ami megnehezíti annak megértését és magyarázatát, hogy mi vezérli a modell előrejelzéseit. Ezek mind olyan kihívások, amelyekkel az adatkutatók és AI fejlesztők szembesülnek, ha nincsenek megfelelő eszközeik a modellek igazságosságának vagy megbízhatóságának hibakeresésére és értékelésére. +Ebben a tananyagban gyakorlati eszközöket vizsgálunk, amelyekkel felmérhető, ha egy modell felelős MI-problémákkal küzd. A hagyományos gépi tanulási hibakeresési technikák jellemzően kvantitatív számításokon alapulnak, például összesített pontosság vagy átlagos hibaveszteség. Képzeljük el, mi történik, ha az adat, amelyből a modelleket építjük, hiányos bizonyos demográfiai jellemzők tekintetében, például faj, nem, politikai nézet, vallás, vagy aránytalanul képviseli ezeket a csoportokat. Mi van akkor, ha a modell kimenetét úgy értelmezik, hogy egyes demográfiai csoportokat előnyben részesítsen? Ez felül- vagy alulreprezentáltságot okozhat ezekben az érzékeny jellemzőcsoportokban, ami igazságossági, befogadási vagy megbízhatósági problémákat eredményezhet a modellnél. Egy másik tényező, hogy a gépi tanulási modelleket fekete dobozoknak tekintjük, ami megnehezíti megérteni és magyarázni, mi befolyásolja egy modell előrejelzését. Ezek mind olyan kihívások, amelyekkel az adattudósok és MI-fejlesztők szembesülnek, amikor nem rendelkeznek megfelelő eszközökkel a modell igazságosságának vagy megbízhatóságának hibakeresésére és értékelésére. -Ebben a leckében megtanulhatod, hogyan végezz hibakeresést a modelleken az alábbiak segítségével: +Ebben a leckében a modellek hibakeresését tanulhatod meg az alábbi eszközök segítségével: -- **Hibaelemzés**: azonosítsd, hogy az adateloszlás mely részeinél magas a modell hibaaránya. -- **Modelláttekintés**: végezz összehasonlító elemzést különböző adatcsoportok között, hogy felfedezd a modell teljesítménymutatóiban lévő eltéréseket. -- **Adatelemzés**: vizsgáld meg, hol lehet túl- vagy alulképviselet az adataidban, ami a modellt egy demográfiai csoport előnyben részesítésére késztetheti egy másikkal szemben. -- **Jellemzők fontossága**: értsd meg, mely jellemzők befolyásolják a modell előrejelzéseit globális vagy lokális szinten. +- **Hibaanalízis**: azonosítani, hogy az adateloszlás mely részein magas a modell hibaaránya. +- **Modelláttekintés**: összehasonlító elemzés végzése különböző adatkohorszok között, hogy felfedezhessük a teljesítménymutatók eltéréseit. +- **Adat elemzés**: vizsgálni, hol lehet túl- vagy alulreprezentált az adat, ami a modell torzulásához vezethet egyes demográfiai csoportok javára vagy hátrányára. +- **Jellemző fontosság**: megérteni, hogy mely jellemzők befolyásolják globális vagy lokális szinten a modell előrejelzéseit. ## Előfeltétel -Előfeltételként kérjük, tekintsd át a [Felelősségteljes AI eszközök fejlesztőknek](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) című anyagot. +Előfeltételként kérjük, tekintsd át a [Fejlődőknek szánt felelős MI eszközök](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) anyagot -> ![Gif a felelősségteljes AI eszközökről](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif a felelős MI eszközökről](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) -## Hibaelemzés +## Hibaanalízis -A hagyományos modellteljesítmény-mutatók, amelyeket a pontosság mérésére használnak, többnyire helyes és helytelen előrejelzések alapján végzett számítások. Például egy modell, amely 89%-ban pontos, és 0,001 hibaveszteséggel rendelkezik, jó teljesítményűnek tekinthető. Azonban a hibák gyakran nem oszlanak el egyenletesen az alapul szolgáló adathalmazban. Lehet, hogy 89%-os pontossági eredményt kapsz, de felfedezed, hogy az adatok bizonyos régióiban a modell 42%-ban hibázik. Az ilyen hibaminták következményei bizonyos adatcsoportokkal igazságossági vagy megbízhatósági problémákhoz vezethetnek. Fontos megérteni, hogy a modell hol teljesít jól vagy rosszul. Azok az adatrégiók, ahol a modell pontatlanságai magasak, fontos demográfiai csoportok lehetnek. +A hagyományos modell teljesítménymutatók, amelyek pontosságot mérnek, általában arra alapoznak, hogy az előrejelzés helyes vagy helytelen volt-e. Például egy modellről megállapítani, hogy 89%-ban pontos, 0,001 hibaveszteség mellett, jó teljesítménynek számíthat. A hibák sokszor nem egyenletesen oszlanak el az alapadat-készletben. Lehet, hogy egy 89%-os pontosságot mérsz, de észreveszed, hogy az adataid különböző régióiban a modell 42%-ban hibázik. Ezek a hibamintázatok bizonyos csoportoknál igazságossági vagy megbízhatósági problémákhoz vezethetnek. Lényeges megérteni, mely területeken teljesít jól vagy rosszul a modell. Az adatterületek, ahol sok pontatlanság jelenik meg, fontos demográfiai csoportot jelenthetnek. -![Modellek hibáinak elemzése és hibakeresése](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![A modell hibáinak elemzése és hibakeresése](../../../../translated_images/hu/ea-error-distribution.117452e1177c1dd8.webp) -A RAI dashboard Hibaelemzés komponense megmutatja, hogyan oszlanak el a modellhibák különböző csoportok között egy fa vizualizáció segítségével. Ez hasznos annak azonosításában, hogy mely jellemzők vagy területek okoznak magas hibaarányt az adathalmazban. Azáltal, hogy látod, honnan származnak a modell pontatlanságai, elkezdheted vizsgálni a gyökérokokat. Adatcsoportokat is létrehozhatsz az elemzéshez. Ezek az adatcsoportok segítenek a hibakeresési folyamatban annak meghatározásában, hogy miért teljesít jól a modell az egyik csoportban, de hibázik a másikban. +A Hibaanalízis komponens az RAI irányítópulton azt mutatja meg, hogyan oszlik el a modell hibája különböző kohorszok között egy fa vizualizáción keresztül. Ez segít azonosítani azokat a jellemzőket vagy területeket, ahol magas hibaarány van az adatbázisban. Ha látod, honnan származik a legtöbb pontatlanság, elkezdheted vizsgálni a gyökérokot. Létrehozhatsz adatkohorszokat is elemzés céljából. Ezek a kohorszok segítik a hibakeresést, hogy megértsd, miért teljesít jól egy kohorszban a modell, de hibázik egy másikban. -![Hibaelemzés](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Hibaanalízis](../../../../translated_images/hu/ea-error-cohort.6886209ea5d438c4.webp) -A fa térkép vizuális jelzői segítenek gyorsabban megtalálni a problémás területeket. Például minél sötétebb piros színű egy fa csomópont, annál magasabb a hibaarány. +A fa diagram vizuális jelzései gyorsabban segítenek megtalálni a problémás területeket. Például minél sötétebb piros színű egy fa csomópont, annál magasabb a hibaarány. -A hőtérkép egy másik vizualizációs funkció, amelyet a felhasználók használhatnak a hibaarány vizsgálatára egy vagy két jellemző alapján, hogy megtalálják a modellhibák hozzájáruló tényezőit az egész adathalmazban vagy csoportokban. +A hőtérképes megjelenítés egy másik vizualizációs funkció, amellyel egy vagy két jellemző alapján vizsgálhatók a hibaarányok, és az adatkészlet vagy kohorszok mentén is kereshetők a hiba hozzájárulói. -![Hibaelemzés hőtérkép](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Hibaanalízis hőtérkép](../../../../translated_images/hu/ea-heatmap.8d27185e28cee383.webp) -Használj hibaelemzést, ha: +Használd a hibaanalízist, amikor szükséged van: -* Mélyebb megértést szeretnél szerezni arról, hogyan oszlanak el a modellhibák az adathalmazon és több bemeneti és jellemző dimenzión keresztül. -* Fel szeretnéd bontani az összesített teljesítménymutatókat, hogy automatikusan felfedezd a hibás csoportokat, és célzott enyhítési lépéseket tegyél. +* Mélyreható megértésre arról, hogyan oszlanak meg a modellhibák az adatokon és jellemző dimenziókon keresztül. +* Az összesített teljesítménymutatók lebontására, hogy automatikusan felfedezd a hibás kohorszokat, és ennek alapján célzott javítási lépéseket tegyél. ## Modelláttekintés -Egy gépi tanulási modell teljesítményének értékelése átfogó megértést igényel a viselkedéséről. Ez több mutató, például hibaarány, pontosság, visszahívás, precizitás vagy MAE (átlagos abszolút hiba) áttekintésével érhető el, hogy feltárjuk a teljesítménymutatók közötti eltéréseket. Egy mutató lehet, hogy kiválóan néz ki, de egy másik mutatóban pontatlanságok derülhetnek ki. Ezenkívül a mutatók összehasonlítása az egész adathalmazon vagy csoportokon belül segít rávilágítani arra, hogy a modell hol teljesít jól vagy rosszul. Ez különösen fontos annak megértésében, hogy a modell hogyan teljesít érzékeny és nem érzékeny jellemzők között (pl. beteg faja, neme vagy életkora), hogy feltárjuk a modell esetleges igazságtalanságait. Például, ha felfedezzük, hogy a modell hibásabb egy érzékeny jellemzőket tartalmazó csoportban, az igazságtalanságot jelezhet. +Egy gépi tanulási modell értékeléséhez átfogó megértést kell szereznünk a viselkedéséről. Ezt különböző mutatók, például hibaarány, pontosság, visszahívás, precizitás vagy MAE (átlagos abszolút hiba) összevetésével lehet elérni, hogy eltéréseket fedezzünk fel a teljesítményben. Egy mutató kiemelkedő lehet, de más mutatóban pontatlanságok jelennek meg. Továbbá az egész adatkészleten vagy kohorszokon végzett összehasonlítás fényt derít arra, hol teljesít jól vagy nem a modell. Ez különösen fontos érzékeny és nem érzékeny jellemzők (például beteg bőrszíne, neme vagy kora) között, hogy felfedjük az esetleges igazságtalanságokat, amelyek a modellben lehetnek. Például ha egy érzékeny jellemzőkkel rendelkező kohorszban magasabb a hibaarány, az potenciális igazságtalanságot jelezhet. -A RAI dashboard Modelláttekintés komponense nemcsak az adatreprezentáció teljesítménymutatóinak elemzésében segít egy csoportban, hanem lehetőséget ad a modell viselkedésének összehasonlítására különböző csoportok között. +Az RAI irányítópult Modelláttekintő komponense nemcsak az adott kohorsz adatainak teljesítménymutatóit elemzi, hanem lehetőséget ad a modell viselkedésének összehasonlítására különböző kohorszok között. -![Adathalmaz csoportok - modelláttekintés a RAI dashboardon](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Adatkohorszok - modelláttekintés az RAI irányítópulton](../../../../translated_images/hu/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -A komponens jellemző-alapú elemzési funkciója lehetővé teszi a felhasználók számára, hogy szűkítsék az adatcsoportokat egy adott jellemzőn belül, hogy anomáliákat azonosítsanak részletes szinten. Például a dashboard beépített intelligenciával automatikusan generál csoportokat egy felhasználó által kiválasztott jellemző alapján (pl. *"time_in_hospital < 3"* vagy *"time_in_hospital >= 7"*). Ez lehetővé teszi a felhasználó számára, hogy egy adott jellemzőt elkülönítsen egy nagyobb adatcsoportból, hogy lássa, ez-e a kulcsfontosságú tényező a modell hibás eredményeiben. +A komponens jellemző-alapú elemző funkciója lehetővé teszi a felhasználók számára, hogy egy adott jellemzőn belül adat-alcsoportokra szűkítsenek, hogy finom szinten azonosítsák az anomáliákat. Például az irányítópult intelligenciája automatikusan létrehozza a kohorszokat a felhasználó által kiválasztott jellemző alapján (pl. *"time_in_hospital < 3"* vagy *"time_in_hospital >= 7"*). Ez lehetővé teszi az egyes jellemzők elkülönítését egy nagyobb adatcsoportból annak megállapítására, hogy kulcsfontosságú tényező-e a modell hibás eredményeiben. -![Jellemző csoportok - modelláttekintés a RAI dashboardon](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Jellemző kohorszok - modelláttekintés az RAI irányítópulton](../../../../translated_images/hu/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -A Modelláttekintés komponens két osztályú eltérési mutatót támogat: +A Modelláttekintés komponens két típusú különbségmérőt támogat: -**Eltérés a modell teljesítményében**: Ezek a mutatók kiszámítják az eltérést (különbséget) a kiválasztott teljesítménymutató értékei között az adatcsoportokban. Néhány példa: +**Teljesítménybeli különbség**: Ezek a mutatók a kiválasztott teljesítménymutató értékének különbségét számolják ki az adat alkohorszai között. Néhány példa: -* Pontossági arány eltérése -* Hibaarány eltérése -* Precizitás eltérése -* Visszahívás eltérése -* Átlagos abszolút hiba (MAE) eltérése +* Pontosságbeli különbség +* Hibaaránybeli különbség +* Precizitásbeli különbség +* Visszahívásbeli különbség +* Átlagos abszolút hiba (MAE) különbség -**Eltérés a kiválasztási arányban**: Ez a mutató tartalmazza a kiválasztási arány (kedvező előrejelzés) különbségét az adatcsoportok között. Példa erre a hiteljóváhagyási arány eltérése. A kiválasztási arány azt jelenti, hogy az egyes osztályok adatpontjainak hány százalékát osztályozzák 1-nek (bináris osztályozásban) vagy az előrejelzési értékek eloszlását (regresszióban). +**Kiválasztási aránybeli különbség**: Ez a mutató a kiválasztási arány (kedvező előrejelzés) különbségét tartalmazza az alkohorszok között. Példa erre a kölcsönjóváhagyási arány különbsége. A kiválasztási arány az egyes kategóriákban 1-nek osztályozott adatpontok aránya (bináris osztályozásban), vagy az előrejelzési értékek eloszlása (regresszióban). -## Adatelemzés +## Adat elemzés -> "Ha elég sokáig kínozod az adatokat, bármit bevallanak" - Ronald Coase +> „Ha elég sokáig kínozod az adatokat, bármit beismernek.” – Ronald Coase -Ez az állítás szélsőségesen hangzik, de igaz, hogy az adatok manipulálhatók bármilyen következtetés támogatására. Az ilyen manipuláció néha akaratlanul történik. Emberek vagyunk, és mindannyian rendelkezünk előítéletekkel, amelyeket gyakran nehéz tudatosan felismerni, amikor adatokat torzítunk. Az igazságosság biztosítása az AI-ban és a gépi tanulásban továbbra is összetett kihívás. +Ez a kijelentés talán túlzónak hangzik, de igaz, hogy az adatokat manipulálni lehet bármilyen következtetés támogatására. Néha ez akaratlan is megtörténhet. Emberként mindannyian hordozunk elfogultságot, és gyakran nehéz tudatosan észrevenni, mikor vezetünk be elfogultságot az adatokba. Az igazságosság garantálása az MI-ben és a gépi tanulásban összetett kihívás. -Az adatok nagy vakfoltot jelentenek a hagyományos modellteljesítmény-mutatók számára. Lehet, hogy magas pontossági eredményeket kapsz, de ez nem mindig tükrözi az adathalmazban lévő alapvető adatelfogultságot. Például, ha egy vállalat alkalmazottainak adathalmazában az ügyvezető pozíciókban 27% nő és 73% férfi van, egy álláshirdetési AI modell, amelyet ezen adatok alapján képeztek, valószínűleg főként férfi közönséget céloz meg vezetői pozíciókra. Az adatokban lévő egyensúlyhiány a modell előrejelzését egy nem előnyben részesítésére késztette. Ez igazságossági problémát tár fel, ahol nemi elfogultság van az AI modellben. +Az adat hatalmas vakfolt a hagyományos modell teljesítménymutatókban. Lehet, hogy magas pontosságod van, de ez nem tükrözi mindig az adatokban rejlő torzításokat. Például, ha egy cég alkalmazotti adatállományában 27% női és 73% férfi felsővezető van, akkor az ezen az adaton tanított álláshirdető MI valószínűleg férfi közönséget céloz meg felső szintű pozíciókra. Az adatok aránytalansága torzítja a modell előrejelzését, egy nemi előítéletet hoz létre az MI-ben. -A RAI dashboard Adatelemzés komponense segít azonosítani azokat a területeket, ahol túl- vagy alulképviselet van az adathalmazban. Segít a felhasználóknak diagnosztizálni azokat a hibák és igazságossági problémák gyökérokait, amelyeket az adatok egyensúlyhiánya vagy egy adott adatcsoport hiánya okoz. Ez lehetőséget ad a felhasználóknak arra, hogy vizualizálják az adathalmazokat előrejelzett és valós eredmények, hibacsoportok és konkrét jellemzők alapján. Néha egy alulképviselt adatcsoport felfedezése azt is feltárhatja, hogy a modell nem tanul jól, ezért magas a pontatlanság. Egy adatelfogultsággal rendelkező modell nemcsak igazságossági problémát jelent, hanem azt is mutatja, hogy a modell nem befogadó vagy megbízható. +Az Adat elemzés komponens az RAI irányítópulton segít azonosítani a túl- vagy alulreprezentált területeket az adattömegben. Segít feltárni a hibák és igazságossági problémák gyökerező okát, amelyeket az adatok kiegyensúlyozatlansága vagy egy adott csoport hiánya okoz. A felhasználók vizualizálhatják az adatokat valódi és előrejelzett eredmények, hibacsoportok és jellemzők szerint. Néha egy alulreprezentált csoport felfedezése kiderítheti, hogy a modell nem tanul jól, ezért magas az pontatlanság. Az adatokban meglévő torzítás nem csak igazságossági probléma, hanem azt is jelzi, hogy a modell nem befogadó vagy megbízható. -![Adatelemzés komponens a RAI dashboardon](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) +![Adat elemzés komponens az RAI irányítópulton](../../../../translated_images/hu/dataanalysis-cover.8d6d0683a70a5c1e.webp) -Használj adatelemzést, ha: -* Felfedezni szeretnéd az adathalmaz statisztikáit különböző szűrők kiválasztásával, hogy az adatokat különböző dimenziókra (más néven csoportokra) bontsd. -* Megérteni szeretnéd az adathalmaz eloszlását különböző csoportok és jellemzőcsoportok között. -* Meghatározni szeretnéd, hogy az igazságossággal, hibaelemzéssel és ok-okozati összefüggésekkel kapcsolatos megállapításaid (amelyeket más dashboard komponensekből származtattál) az adathalmaz eloszlásának eredményei-e. -* Eldönteni, hogy mely területeken gyűjts több adatot, hogy enyhítsd azokat a hibákat, amelyek reprezentációs problémákból, címkezajból, jellemzőzajból, címkeelfogultságból és hasonló tényezőkből származnak. +Használd az adat elemzést, amikor szükséged van: -## Modellérthetőség +* Az adatkészlet statisztikáinak felfedezésére különböző szűrők segítségével, hogy az adatokat különböző dimenziókra (kohorszokra) bontsd. +* Megérteni az adatkészlet eloszlását különböző kohorszok és jellemzőcsoportok között. +* Megállapítani, hogy az igazságossággal, hibaanalízissel és okozatisággal kapcsolatos megállapításaid (amelyek más irányítópult komponensekből származnak) az adateloszlás következményei-e. +* Eldönteni, mely területeken kell több adatot gyűjteni a reprezentációs problémákból, osztálycímke zajból, jellemző zajból, címke torzításból és hasonló tényezőkből eredő hibák enyhítésére. -A gépi tanulási modellek gyakran "fekete dobozként" működnek. Nehéz megérteni, hogy mely kulcsfontosságú adatjellemzők vezérlik a modell előrejelzéseit. Fontos, hogy átláthatóságot biztosítsunk arra vonatkozóan, hogy miért hoz egy modell bizonyos előrejelzést. Például, ha egy AI rendszer azt jósolja, hogy egy cukorbeteg páciensnél fennáll a kockázata annak, hogy 30 napon belül visszakerül a kórházba, akkor képesnek kell lennie arra, hogy támogató adatokat nyújtson, amelyek az előrejelzéséhez vezettek. A támogató adatjelzők átláthatóságot biztosítanak, hogy segítsenek az orvosoknak vagy kórházaknak jól informált döntéseket hozni. Ezenkívül az, hogy megmagyarázható, miért hozott egy modell előrejelzést egy adott páciens esetében, lehetővé teszi az egészségügyi szabályozásokkal való megfelelést. Amikor gépi tanulási modelleket használsz olyan módon, amely hatással van az emberek életére, elengedhetetlen megérteni és megmagyarázni, mi befolyásolja a modell viselkedését. A modell magyarázhatósága és érthetősége segít választ adni az alábbi helyzetekben: +## Modell értelmezhetőség -* Modellhibakeresés: Miért követte el a modell ezt a hibát? Hogyan javíthatom a modellemet? -* Ember-AI együttműködés: Hogyan érthetem meg és bízhatok a modell döntéseiben? -* Szabályozási megfelelés: Megfelel-e a modellem a jogi követelményeknek? +A gépi tanulási modellek általában fekete dobozok. Nehéz megérteni, hogy mely kulcsfontosságú adatjellemzők befolyásolják egy modell előrejelzését. Fontos átláthatóságot biztosítani arról, miért adja a modell az adott előrejelzést. Például, ha egy MI-rendszer előrejelzi, hogy egy cukorbeteg beteg 30 napon belül kórházba kerül újra, akkor támogatást adó adatokat is kell szolgáltatnia, amelyek az előrejelzést vezérelték. A támogató adatindikátorok átláthatóságot hoznak, hogy az orvosok vagy kórházak megalapozott döntéseket hozhassanak. Emellett a modell előrejelzésének magyarázata az egyéni beteg esetében elszámoltathatóságot és egészségügyi szabályozási megfelelést tesz lehetővé. Amikor gépi tanulási modelleket használsz emberek életére kiható módon, alapvető, hogy megértsd és megmagyarázd, mi befolyásolja a modell viselkedését. A modellmagyarázhatóság és értelmezhetőség olyan kérdésekre ad választ, mint: -A RAI dashboard Jellemzők fontossága komponense segít hibakeresésben és átfogó megértést nyújt arról, hogyan hoz egy modell előrejelzéseket. Ez egy hasznos eszköz gépi tanulási szakemberek és döntéshozók számára, hogy megmagyarázzák és bizonyítékot mutassanak arra, hogy mely jellemzők befolyásolják a modell viselkedését a szabályozási megfelelés érdekében. A felhasználók globális és lokális magyarázatokat is felfedezhetnek, hogy érvényesítsék, mely jellemzők vezérlik a modell előrejelzéseit. A globális magyarázatok felsorolják azokat a legfontosabb j -- **Túl- vagy alulreprezentáció**. Az elképzelés az, hogy egy bizonyos csoport nem jelenik meg egy adott szakmában, és bármely szolgáltatás vagy funkció, amely ezt tovább erősíti, káros hatást gyakorol. +* Modellhibakeresés: Miért hibázott a modellem? Hogyan javíthatom a modellem? +* Ember-MI együttműködés: Hogyan érthetem meg, és bízhatok a modell döntéseiben? +* Szabályozói megfelelés: Megfelel a modellem a jogi követelményeknek? -### Azure RAI dashboard +Az RAI irányítópult Jellemző fontosság komponense segít a modell hibakeresésében és átfogó megértésében, hogy miként készít előrejelzéseket. Ez egy hasznos eszköz a gépi tanulási szakemberek és döntéshozók számára is, hogy bizonyítékokat mutassanak be arra vonatkozóan, mely jellemzők befolyásolják a modell viselkedését a szabályozói megfelelés érdekében. A felhasználók felfedezhetik a globális és lokális magyarázatokat, amelyek megerősítik, hogy mely jellemzők befolyásolják egy modell előrejelzését. A globális magyarázatok a modell egész előrejelzésére ható legfontosabb jellemzőket sorolják fel. A helyi magyarázatok megmutatják, hogy egy konkrét esetben mely jellemzők vezettek az előrejelzéshez. A helyi magyarázatok értékelése segíthet egy adott eset hibakeresésében vagy auditálásában, hogy jobban megértsük, miért volt a modell előrejelzése helyes vagy helytelen. -Az [Azure RAI dashboard](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) nyílt forráskódú eszközökre épül, amelyeket vezető akadémiai intézmények és szervezetek, köztük a Microsoft fejlesztettek ki. Ezek az eszközök segítik az adatkutatókat és AI fejlesztőket abban, hogy jobban megértsék a modellek viselkedését, és hogy felfedezzék és enyhítsék az AI modellek nem kívánt problémáit. +![RAI irányítópult Jellemző fontosság komponense](../../../../translated_images/hu/9-feature-importance.cd3193b4bba3fd4b.webp) -- Ismerd meg, hogyan használhatod a különböző komponenseket az RAI dashboard [dokumentációjának](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) átnézésével. +* Globális magyarázatok: például mely jellemzők befolyásolják egy cukorbetegség újra-kórházi felvétel modell egész viselkedését? +* Lokális magyarázatok: például miért jósolta a modell, hogy egy 60 évnél idősebb, korábbi kórházi felvételekkel rendelkező cukorbeteg beteg újrafelvételre kerül vagy nem kerül 30 napon belül? -- Nézd meg néhány RAI dashboard [példa notebookot](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks), amelyek segítenek felelősségteljesebb AI forgatókönyvek hibakeresésében az Azure Machine Learning-ben. +A modell teljesítményének vizsgálata során különböző kohorszokban a Jellemző fontosság megmutatja, hogy egy jellemző milyen hatással van az egyes kohorszokra. Segít felfedni anomáliákat, amikor egy jellemző befolyásának szintjét hasonlítjuk össze az egyes kohorszokon belül a modell hibás előrejelzéseiben. A komponens megmutatja, hogy egy jellemző mely értékei befolyásolták pozitívan vagy negatívan a modell eredményét. Például, ha a modell téves előrejelzést adott, a komponens segítségével mélyebben megnézheted, hogy mely jellemzők vagy jellemző értékek vezettek ehhez az előrejelzéshez. Ez a részletezettség nemcsak a hibakeresést segíti, hanem átláthatóságot és elszámoltathatóságot is biztosít auditálási helyzetekben. Végül a komponens segíthet az igazságossági problémák azonosításában is. Ha például egy érzékeny jellemző, mint az etnikum vagy a nem jelentős befolyással bír a modell előrejelzésére, az a modell rassz vagy nemi torzítását jelezheti. ---- +![Jellemzők befolyása](../../../../translated_images/hu/9-features-influence.3ead3d3f68a84029.webp) -## 🚀 Kihívás +Használd az értelmezhetőséget, amikor szükséged van: -Annak érdekében, hogy statisztikai vagy adatbeli torzítások már eleve ne kerüljenek bevezetésre, a következőket kell tennünk: +* Megítélni az MI rendszered előrejelzéseinek megbízhatóságát azáltal, hogy megérted, mely jellemzők a legfontosabbak az előrejelzésekhez. +* Hibakeresési folyamatot megalapozni a modell megértésével, annak megállapítására, hogy egészséges jellemzők alapján működik-e vagy csak hamis korrelációkat használ. +* Feltárni a potenciális igazságtalansági forrásokat azáltal, hogy megvizsgálod, vannak-e érzékeny jellemzők vagy azokkal erősen korreláló jellemzők az előrejelzés alapjaként. +* Felhasználói bizalom építése a modell döntéseibe helyi magyarázatok generálásával a döntések bemutatásához. +* Szabályozói audit elvégzése az MI rendszered modelljeinek ellenőrzésére és a hatás figyelésére az emberekre. -- biztosítsuk, hogy a rendszereken dolgozó emberek különböző háttérrel és nézőpontokkal rendelkezzenek -- fektessünk be olyan adathalmazokba, amelyek tükrözik társadalmunk sokszínűségét -- fejlesszünk jobb módszereket a torzítások észlelésére és kijavítására, amikor azok előfordulnak +## Összefoglalás -Gondolj valós életbeli helyzetekre, ahol az igazságtalanság nyilvánvaló a modellek építése és használata során. Mit kellene még figyelembe vennünk? +Az összes RAI irányítópult komponens gyakorlati eszköz a gépi tanulási modellek fejlesztéséhez, amelyek kevésbé károsak és megbízhatóbbak a társadalom számára. Javítja az emberi jogok védelmét, csökkenti a bizonyos csoportok igazságtalan megkülönböztetését vagy életlehetőségektől való kizárását; valamint a fizikai vagy lelki sérülések kockázatát. Segít emellett a modell döntéseibe vetett bizalom építésében helyi magyarázatok generálásával az eredmények szemléltetésére. Néhány potenciális kártípus a következőképpen sorolható be: -## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/) +- **Elosztás**, ha például egy nem vagy etnikum előnyben részesül a másikkal szemben. +- **Szolgáltatás minősége**: Ha az adatokat egy adott helyzetre tanítják, de a valóság ennél jóval összetettebb, az gyenge szolgáltatási teljesítményhez vezet. +- **Stereotipizálás**: Egy adott csoporthoz előre meghatározott tulajdonságok társítása. -## Áttekintés és önálló tanulás +- **Lerontás**. Valami vagy valaki igazságtalan bírálata és megbélyegzése. +- **Túl- vagy alulreprezentáltság**. Az az ötlet, hogy egy bizonyos csoport nem jelenik meg egy adott szakmában, és bármely olyan szolgáltatás vagy funkció, amely ezt tovább erősíti, káros hatású. -Ebben a leckében megismerkedtél néhány gyakorlati eszközzel, amelyek segítenek a felelősségteljes AI beépítésében a gépi tanulásba. +### Azure RAI műszerfal + +Az [Azure RAI műszerfal](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) nyílt forráskódú eszközökön alapul, amelyeket vezető akadémiai intézmények és szervezetek, köztük a Microsoft fejlesztettek ki, és amelyek kulcsfontosságúak az adattudósok és az MI fejlesztők számára, hogy jobban megértsék a modell viselkedését, felfedezzék és enyhítsék az MI modellek nemkívánatos problémáit. -Nézd meg ezt a workshopot, hogy mélyebben elmerülj a témákban: +- Ismerd meg a különböző összetevők használatát a RAI műszerfal [dokumentációjában.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) + +- Nézd meg néhány RAI műszerfal [mintanaplóját](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) felelősebb MI forgatókönyvek hibakereséséhez az Azure Machine Learning-ben. + +--- +## 🚀 Kihívás + +Annak érdekében, hogy statisztikai vagy adatbeli elfogultság ne alakuljon ki az elején, a következőket kell tennünk: + +- különböző hátterű és nézőpontú emberek dolgozzanak a rendszereken +- befektetni olyan adatkészletekbe, amelyek társadalmunk sokszínűségét tükrözik +- jobb módszereket fejleszteni az elfogultság felismerésére és korrekciójára, amikor előfordul + +Gondolj olyan valós helyzetekre, ahol a méltánytalanság nyilvánvaló a modellépítés és -használat során. Mit kellene még figyelembe vennünk? + +## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/) +## Áttekintés és önálló tanulás + +Ebben a leckében megismerted a felelős MI beépítésének néhány gyakorlati eszközét a gépi tanulásban. -- Responsible AI Dashboard: Egyablakos megoldás a felelősségteljes AI gyakorlati alkalmazásához, előadók: Besmira Nushi és Mehrnoosh Sameki +Nézd meg ezt a műhelyt, hogy mélyebben belemerülj a témákba: -[![Responsible AI Dashboard: Egyablakos megoldás a felelősségteljes AI gyakorlati alkalmazásához](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: Egyablakos megoldás a felelősségteljes AI gyakorlati alkalmazásához") +- Responsible AI Dashboard: Egyablakos megoldás a RAI gyakorlati működtetésére Besmira Nushi és Mehrnoosh Sameki előadásában -> 🎥 Kattints a fenti képre a videóért: Responsible AI Dashboard: Egyablakos megoldás a felelősségteljes AI gyakorlati alkalmazásához, előadók: Besmira Nushi és Mehrnoosh Sameki +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](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") -Használd az alábbi anyagokat, hogy többet megtudj a felelősségteljes AI-ról és arról, hogyan építhetsz megbízhatóbb modelleket: +> 🎥 Kattints a fenti képre a videó megtekintéséhez: Responsible AI Dashboard: Egyablakos megoldás a RAI gyakorlati működtetésére Besmira Nushi és Mehrnoosh Sameki előadásában + +Tekintsd át a következő anyagokat, hogy többet megtudj a felelős MI-ről és hogy hogyan lehet megbízhatóbb modelleket építeni: -- Microsoft RAI dashboard eszközei ML modellek hibakereséséhez: [Responsible AI tools resources](https://aka.ms/rai-dashboard) +- A Microsoft RAI műszerfal eszközei az ML modellek hibakereséséhez: [Responsible AI tools resources](https://aka.ms/rai-dashboard) - Fedezd fel a Responsible AI eszköztárat: [Github](https://github.com/microsoft/responsible-ai-toolbox) -- Microsoft RAI erőforrásközpontja: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- A Microsoft RAI erőforrásközpontja: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoft FATE kutatócsoportja: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- A Microsoft FATE kutatócsoportja: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) ## Feladat -[Ismerd meg az RAI dashboardot](assignment.md) +[Fedezd fel a RAI műszerfalat](assignment.md) --- -**Felelősség kizárása**: -Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file + +**Jogi nyilatkozat**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered. + \ No newline at end of file diff --git a/translations/sw/.co-op-translator.json b/translations/sw/.co-op-translator.json index b478b5fcc..7f6293930 100644 --- a/translations/sw/.co-op-translator.json +++ b/translations/sw/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "sw" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T15:58:17+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T04:16:35+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "sw" }, @@ -54,8 +54,8 @@ "language_code": "sw" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T15:20:12+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T04:12:21+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "sw" }, @@ -72,8 +72,8 @@ "language_code": "sw" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T15:24:10+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T04:13:26+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "sw" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "sw" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T04:07:44+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "sw" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:00:30+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T16:37:04+00:00", + "translation_date": "2026-07-14T04:14:32+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "sw" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-05T16:44:35+00:00", + "translation_date": "2026-07-14T04:15:34+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "sw" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "sw" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "sw", + "failure_date": "2026-07-14T04:11:26+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-05T15:48:10+00:00", diff --git a/translations/sw/1-Introduction/3-fairness/README.md b/translations/sw/1-Introduction/3-fairness/README.md index c2f8808b2..d8668e72e 100644 --- a/translations/sw/1-Introduction/3-fairness/README.md +++ b/translations/sw/1-Introduction/3-fairness/README.md @@ -1,159 +1,167 @@ -# Kujenga Suluhisho za Kujifunza kwa Mashine kwa AI Inayowajibika - -![Muhtasari wa AI inayowajibika katika Kujifunza kwa Mashine kwenye sketchnote](../../../../sketchnotes/ml-fairness.png) +# Kujenga suluhisho za Machine Learning kwa AI yenye uwajibikaji + +![Muhtasari wa AI yenye uwajibikaji katika Machine Learning katika sketchnote](../../../../translated_images/sw/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote na [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Maswali ya awali ya somo](https://ff-quizzes.netlify.app/en/ml/) - +## [Mtihani kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) + ## Utangulizi -Katika mtaala huu, utaanza kugundua jinsi kujifunza kwa mashine kunavyoathiri maisha yetu ya kila siku. Hata sasa, mifumo na modeli zinahusika katika kazi za maamuzi ya kila siku, kama vile utambuzi wa afya, idhini ya mikopo, au kugundua udanganyifu. Kwa hivyo, ni muhimu kwamba modeli hizi zifanye kazi vizuri ili kutoa matokeo yanayoweza kuaminika. Kama programu yoyote, mifumo ya AI inaweza kukosa matarajio au kuwa na matokeo yasiyofaa. Ndiyo maana ni muhimu kuelewa na kuelezea tabia ya modeli ya AI. +Katika mtaala huu, utaanza kugundua jinsi machine learning inavyoweza na inavyokuwa na athari katika maisha yetu ya kila siku. Hata sasa, mifumo na modeli zinahusiana na kazi za uamuzi wa kila siku, kama vile uchunguzi wa matibabu, idhini za mikopo au kugundua udanganyifu. Kwa hivyo, ni muhimu kwamba modeli hizi zifanye kazi vizuri ili kutoa matokeo yanayoaminika. Kama yoyote programu ya kompyuta, mifumo ya AI itakosa matarajio au kuwa na matokeo yasiyotarajiwa. Ndiyo maana ni muhimu kuelewa na kueleza tabia ya modeli ya AI. -Fikiria kinachoweza kutokea wakati data unayotumia kujenga modeli hizi inakosa baadhi ya demografia, kama vile rangi, jinsia, mtazamo wa kisiasa, dini, au inawakilisha demografia hizo kwa uwiano usio sawa. Je, kuhusu pale ambapo matokeo ya modeli yanatafsiriwa kupendelea demografia fulani? Matokeo yake ni nini kwa programu? Zaidi ya hayo, nini kinatokea pale ambapo modeli ina matokeo mabaya na inadhuru watu? Nani anawajibika kwa tabia ya mifumo ya AI? Haya ni baadhi ya maswali tutakayochunguza katika mtaala huu. +Fikiria kinachoweza kutokea wakati data unayotumia kujenga modeli hizi haijumuishi baadhi ya makundi ya watu, kama vile rangi, jinsia, mtazamo wa kisiasa, dini, au kuwakilisha kwa njia isiyo sawa makundi hayo. Nini kuhusu wakati matokeo ya modeli yanatafsiriwa kupendelea baadhi ya makundi? Ni matokeo gani kwa programu hiyo? Zaidi ya hayo, nini kinatokea wakati modeli inatoa matokeo mabaya na yenye madhara kwa watu? Nani anawajibika kwa tabia ya mifumo ya AI? Hivyo ni baadhi ya maswali tutakayachunguza katika mtaala huu. -Katika somo hili, utaweza: +Katika somo hili, utajifunza: -- Kuongeza ufahamu wako kuhusu umuhimu wa haki katika kujifunza kwa mashine na madhara yanayohusiana na haki. -- Kujifunza kuhusu mazoezi ya kuchunguza hali zisizo za kawaida ili kuhakikisha uaminifu na usalama. -- Kupata uelewa wa hitaji la kuwawezesha watu wote kwa kubuni mifumo jumuishi. +- Kuongeza uelewa wako kuhusu umuhimu wa usawa katika machine learning na madhara yanayohusiana na usawa. +- Kufahamiana na mazoezi ya kuchunguza matukio ya kipekee na yasiyo ya kawaida ili kuhakikisha uaminifu na usalama. +- Kupata uelewa juu ya hitaji la kuwawezesha wote kwa kubuni mifumo jumuishi. - Kuchunguza umuhimu wa kulinda faragha na usalama wa data na watu. -- Kuelewa umuhimu wa mbinu ya "sanduku la kioo" kuelezea tabia ya modeli za AI. -- Kuwa makini kuhusu jinsi uwajibikaji ni muhimu katika kujenga uaminifu kwa mifumo ya AI. +- Kuona umuhimu wa kuwa na njia ya uwazi kueleza tabia za modeli za AI. +- Kuwa makini na jinsi uwajibikaji unavyohitajika kujenga imani katika mifumo ya AI. -## Mahitaji ya awali +## Sharti la awali -Kama mahitaji ya awali, tafadhali chukua Njia ya Kujifunza ya "Kanuni za AI Inayowajibika" na tazama video hapa chini kuhusu mada hii: +Kama sharti la awali, tafadhali chukua Njia ya Kujifunza "Kanuni za AI yenye Uwajibikaji" na tazama video hii hapa chini kuhusu mada hii: -Jifunze zaidi kuhusu AI Inayowajibika kwa kufuata [Njia ya Kujifunza](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Jifunze zaidi kuhusu AI yenye uwajibikaji kwa kufuata [Njia ya Kujifunza](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Mbinu ya Microsoft kwa AI Inayowajibika](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Mbinu ya Microsoft kwa AI Inayowajibika") +[![Njia ya Microsoft kwa AI yenye Uwajibikaji](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 Bofya picha hapo juu kwa video: Mbinu ya Microsoft kwa AI Inayowajibika +> 🎥 Bonyeza picha hapo juu kwa video: Njia ya Microsoft kwa AI yenye Uwajibikaji -## Haki +## Usawa -Mifumo ya AI inapaswa kuwachukulia watu wote kwa usawa na kuepuka kuathiri makundi yanayofanana kwa njia tofauti. Kwa mfano, mifumo ya AI inapotoa mwongozo kuhusu matibabu ya afya, maombi ya mikopo, au ajira, inapaswa kutoa mapendekezo sawa kwa kila mtu mwenye dalili, hali ya kifedha, au sifa za kitaaluma zinazofanana. Kila mmoja wetu kama binadamu hubeba upendeleo wa kurithi ambao huathiri maamuzi na vitendo vyetu. Upendeleo huu unaweza kuonekana katika data tunayotumia kufundisha mifumo ya AI. Mara nyingine, mabadiliko haya hutokea bila kukusudia. Mara nyingi ni vigumu kujua kwa makusudi wakati unaleta upendeleo katika data. +Mifumo ya AI inapaswa kuwatendea watu wote kwa usawa na kuepuka kuathiri makundi sawa ya watu kwa njia tofauti. Kwa mfano, wakati mifumo ya AI inatoa mwongozo kuhusu matibabu ya afya, maombi ya mkopo, au ajira, inapaswa kutoa mapendekezo sawa kwa wote wenye dalili zinazofanana, hali za kifedha, au sifa za kitaalamu. Kila mmoja wetu kama wanadamu tunabeba upendeleo uliozalishwa ambao huathiri maamuzi na vitendo vyetu. Upendeleo huu unaweza kuonekana katika data tunayotumia kufundisha mifumo ya AI. Udanganyifu kama huo unaweza kutokea bila kusudi. Mara nyingi ni vigumu kwa makusudi kujua unapoweka upendeleo katika data. -**“Kutokuwa na haki”** kunajumuisha athari mbaya, au “madhara”, kwa kundi la watu, kama vile wale wanaofafanuliwa kwa misingi ya rangi, jinsia, umri, au hali ya ulemavu. Madhara makuu yanayohusiana na haki yanaweza kuainishwa kama: +**“Kutokuwa na usawa”** kunajumuisha athari mbaya, au “madhara”, kwa kundi la watu, kama vile zile zinazotamkwa kwa mujibu wa rangi, jinsia, umri, au hali ya ulemavu. Madhara makuu yanayohusiana na usawa yanaweza kugawanywa kama: -- **Ugawaji**, ikiwa jinsia au kabila fulani linapendelewa zaidi ya jingine. -- **Ubora wa huduma**. Ikiwa unafundisha data kwa hali moja maalum lakini hali halisi ni ngumu zaidi, husababisha huduma isiyofanya kazi vizuri. Kwa mfano, kifaa cha kutambua sabuni ya mkono ambacho hakikuweza kutambua watu wenye ngozi nyeusi. [Rejea](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Kudhalilisha**. Kukosoa na kuweka lebo isiyo ya haki kwa kitu au mtu. Kwa mfano, teknolojia ya kuweka lebo ya picha iliwahi kuweka lebo isiyo sahihi kwa picha za watu wenye ngozi nyeusi kama sokwe. -- **Uwiano wa juu au wa chini**. Wazo ni kwamba kundi fulani halionekani katika taaluma fulani, na huduma yoyote inayozidi kukuza hali hiyo inachangia madhara. -- **Kuweka mazoea ya kijinsia**. Kuunganisha kundi fulani na sifa zilizowekwa awali. Kwa mfano, mfumo wa kutafsiri lugha kati ya Kiingereza na Kituruki unaweza kuwa na makosa kutokana na maneno yenye uhusiano wa kijinsia. +- **Ugawaji**, kama jinsia au kabila fulani linapendelewa zaidi ya lingine. +- **Ubora wa huduma**. Ikiwa unafundisha data kwa hali moja maalum lakini hali halisi ni ngumu zaidi, inasababisha huduma duni. Kwa mfano, kipakia sabuni cha mkono ambacho hakikuweza kugundua watu wenye ngozi nyeusi. [Rejea](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Kudhalilisha**. Kukosoa vibaya na kumtaja mtu au kitu vibaya. Kwa mfano, teknolojia ya kutamka picha ilikosea kutaja picha za watu wenye ngozi nyeusi kama gorila. +- **Uwawakilishi kupita kiasi au kupungukiwa**. Wazo ni kwamba kundi fulani halionekani katika taaluma fulani, na huduma au kazi yoyote inayojiendeleza hivyo inaongeza madhara. +- **Kuweka alama za kijadi**. Kuhusisha kundi fulani na sifa zilizowekwa kabla. Kwa mfano, mfumo wa tafsiri ya lugha kati ya Kiingereza na Kituruki unaweza kuwa na makosa kutokana na maneno yenye muktadha wa kijinsia. -![Tafsiri kwa Kituruki](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> Tafsiri kwa Kituruki +![tafiti kwa Kituruki](../../../../translated_images/sw/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> tafsiri kwa Kituruki -![Tafsiri kurudi kwa Kiingereza](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> Tafsiri kurudi kwa Kiingereza +![tafiti kurudi Kiingereza](../../../../translated_images/sw/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> tafsiri kurudi Kiingereza -Wakati wa kubuni na kujaribu mifumo ya AI, tunahitaji kuhakikisha kwamba AI ni ya haki na haijapangiliwa kufanya maamuzi yenye upendeleo au ubaguzi, ambayo binadamu pia wamezuiwa kufanya. Kuhakikisha haki katika AI na kujifunza kwa mashine bado ni changamoto ngumu ya kijamii na kiteknolojia. +Wakati wa kubuni na kujaribu mifumo ya AI, tunahitaji kuhakikisha kwamba AI ni ya haki na haijapangwa kufanya maamuzi ya upendeleo au ubaguzi, ambayo watu pia wanakamatwa kutofanya. Kuhakikisha usawa katika AI na machine learning bado ni changamoto tata ya kijamii na kiteknolojia. -### Uaminifu na Usalama +### Uaminifu na usalama -Ili kujenga uaminifu, mifumo ya AI inahitaji kuwa ya kuaminika, salama, na thabiti katika hali za kawaida na zisizotarajiwa. Ni muhimu kujua jinsi mifumo ya AI itakavyotenda katika hali mbalimbali, hasa pale ambapo kuna hali zisizo za kawaida. Wakati wa kujenga suluhisho za AI, kunapaswa kuwa na umakini mkubwa juu ya jinsi ya kushughulikia hali mbalimbali ambazo suluhisho za AI zitakutana nazo. Kwa mfano, gari linalojiendesha lenyewe linahitaji kuweka usalama wa watu kama kipaumbele cha juu. Kwa hivyo, AI inayotumia gari inahitaji kuzingatia hali zote zinazowezekana ambazo gari linaweza kukutana nazo kama usiku, dhoruba za radi au theluji, watoto wakikimbia barabarani, wanyama wa kipenzi, ujenzi wa barabara, n.k. Jinsi mfumo wa AI unavyoweza kushughulikia hali mbalimbali kwa uaminifu na usalama inaonyesha kiwango cha matarajio ambacho mwanasayansi wa data au msanidi wa AI alizingatia wakati wa kubuni au kujaribu mfumo. +Ili kujenga imani, mifumo ya AI inahitaji kuwa ya kuaminika, salama, na thabiti chini ya hali za kawaida na zisizotarajiwa. Ni muhimu kujua jinsi mifumo ya AI itakavyoitikia katika hali tofauti, hasa wanapokuwa wa kipekee. Wakati wa kujenga suluhisho za AI, kuna haja ya kuelekeza sana jinsi ya kushughulikia hali mbalimbali ambazo suluhisho za AI zitakutana nazo. Kwa mfano, gari linalojiendesha lenyewe linahitaji kuweka usalama wa watu kipaumbele cha juu. Kwa hivyo, AI inayoendesha gari hilo inahitaji kuzingatia hali zote zinazowezekana kama usiku, radi au mvua kali, watoto wakikimbia barabarani, wanyama wa kipenzi, ujenzi wa barabara n.k. Jinsi mfumo wa AI unavyoweza kushughulikia hali mbalimbali kwa uaminifu na usalama unaonesha kiwango cha matarajio ambayo mwanasayansi wa data au mtaalamu wa AI alichukulia wakati wa kubuni au kujaribu mfumo. -> [🎥 Bofya hapa kwa video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 Bonyeza hapa kwa video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) -### Ujumuishi +### Ushirikiano -Mifumo ya AI inapaswa kubuniwa ili kushirikisha na kuwawezesha kila mtu. Wakati wa kubuni na kutekeleza mifumo ya AI, wanasayansi wa data na wasanidi wa AI hutambua na kushughulikia vizuizi vinavyoweza kuwapo katika mfumo ambavyo vinaweza kuwazuia watu bila kukusudia. Kwa mfano, kuna watu bilioni 1 wenye ulemavu duniani kote. Kwa maendeleo ya AI, wanaweza kufikia aina mbalimbali za taarifa na fursa kwa urahisi zaidi katika maisha yao ya kila siku. Kwa kushughulikia vizuizi, inatoa fursa za kuleta ubunifu na kuendeleza bidhaa za AI zenye uzoefu bora ambao unawanufaisha kila mtu. +Mifumo ya AI inapaswa kubuniwa kuwashirikisha na kuwawezesha wote. Wakati wa kubuni na kutekeleza mifumo ya AI, wanasayansi wa data na watengenezaji wa AI hutambua na kushughulikia vizingiti vinavyoweza kutojumuisha watu bila kusudi. Kwa mfano, kuna watu bilioni 1 wenye ulemavu duniani kote. Pamoja na maendeleo ya AI, wanaweza kupata taarifa na fursa mbalimbali kwa urahisi zaidi katika maisha yao ya kila siku. Kwa kushughulikia vizingiti hivi, kunaunda fursa za kubuni na kuendeleza bidhaa za AI zenye uzoefu bora zinazowafaidia wote. -> [🎥 Bofya hapa kwa video: ujumuishi katika AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 Bonyeza hapa kwa video: ushirikishaji katika AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### Usalama na Faragha +### Usalama na faragha -Mifumo ya AI inapaswa kuwa salama na kuheshimu faragha ya watu. Watu wana imani ndogo katika mifumo inayoweka faragha yao, taarifa zao, au maisha yao hatarini. Wakati wa kufundisha modeli za kujifunza kwa mashine, tunategemea data ili kutoa matokeo bora. Katika kufanya hivyo, asili ya data na uadilifu wake lazima uzingatiwe. Kwa mfano, je, data ilitolewa na mtumiaji au ilipatikana hadharani? Kisha, wakati wa kufanya kazi na data, ni muhimu kuendeleza mifumo ya AI inayoweza kulinda taarifa za siri na kupinga mashambulizi. Kadri AI inavyozidi kuenea, kulinda faragha na kuhakikisha usalama wa taarifa muhimu za kibinafsi na za kibiashara kunazidi kuwa muhimu na changamoto. Masuala ya faragha na usalama wa data yanahitaji umakini wa karibu hasa kwa AI kwa sababu upatikanaji wa data ni muhimu kwa mifumo ya AI kufanya utabiri sahihi na maamuzi yanayojulishwa kuhusu watu. +Mifumo ya AI inapaswa kuwa salama na kuheshimu faragha ya watu. Watu hawana imani na mifumo inayoweka faragha yao, taarifa au maisha hatarini. Wakati wa kufundisha modeli za machine learning, tunategemea data kutoa matokeo bora. Kwa kufanya hivyo, asili ya data na uadilifu lazima uzingatiwe. Kwa mfano, je data ilitolewa na mtumiaji au ilikuwa inapatikana hadharani? Kisha, wakati wa kutumia data, ni muhimu kuendeleza mifumo ya AI inayoweza kulinda taarifa za siri na kuhimili mashambulio. Kadiri AI inavyozidi kutumika, kulinda faragha na kuhakikisha usalama wa taarifa muhimu za watu na biashara kunakuwa muhimu zaidi na changamoto kubwa. Masuala ya faragha na usalama wa data yanahitaji umakini wa karibu kwa AI kwa sababu upatikanaji wa data ni muhimu kwa mifumo ya AI kutoa utabiri sahihi na maamuzi ya taarifa kuhusu watu. -> [🎥 Bofya hapa kwa video: usalama katika AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Bonyeza hapa kwa video: usalama katika AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Kama sekta, tumepiga hatua kubwa katika Faragha na Usalama, ikichochewa sana na kanuni kama GDPR (Kanuni ya Jumla ya Ulinzi wa Data). -- Hata hivyo, na mifumo ya AI tunapaswa kutambua mvutano kati ya hitaji la data zaidi ya kibinafsi ili kufanya mifumo kuwa ya kibinafsi na yenye ufanisi – na faragha. -- Kama ilivyokuwa na kuzaliwa kwa kompyuta zilizounganishwa na mtandao, tunaona pia ongezeko kubwa la idadi ya masuala ya usalama yanayohusiana na AI. -- Wakati huo huo, tumeona AI ikitumika kuboresha usalama. Kwa mfano, skana nyingi za kisasa za antivirus zinatumia AI heuristics leo. -- Tunahitaji kuhakikisha kwamba michakato yetu ya Sayansi ya Data inachanganyika kwa usawa na mazoea ya faragha na usalama ya hivi karibuni. +- Kama sekta tumefanya maendeleo makubwa katika Faragha na usalama, hasa kwa sheria kama GDPR (Regulation ya Ulinzi wa Data za Kawaida). +- Hata hivyo, kwa mifumo ya AI lazima tukiri mvutano kati ya hitaji la data binafsi zaidi kufanya mifumo kuwa za kibinafsi na zenye ufanisi – na faragha. +- Kama ilivyokuwa wakati wa kuzuka kwa kompyuta zilizo na mtandao, tunashuhudia ongezeko kubwa la masuala ya usalama yanayohusiana na AI. +- Wakati huo huo, tumeona AI ikitumiwa kuboresha usalama. Kwa mfano, wengi wa skana za kisasa za virusi vinaendeshwa na heuristics za AI leo. +- Tunahitaji kuhakikisha kuwa michakato yetu ya Sayansi ya Data inaendana vyema na mbinu mpya za faragha na usalama. -### Uwazi -Mifumo ya AI inapaswa kueleweka. Sehemu muhimu ya uwazi ni kuelezea tabia ya mifumo ya AI na vipengele vyake. Kuboresha uelewa wa mifumo ya AI kunahitaji wadau kuelewa jinsi na kwa nini mifumo hiyo inavyofanya kazi ili waweze kutambua masuala ya utendaji, wasiwasi wa usalama na faragha, upendeleo, mazoea ya kutengwa, au matokeo yasiyotarajiwa. Tunaamini pia kwamba wale wanaotumia mifumo ya AI wanapaswa kuwa waaminifu na wazi kuhusu wakati, kwa nini, na jinsi wanavyochagua kuitumia. Pamoja na mapungufu ya mifumo wanayotumia. Kwa mfano, ikiwa benki inatumia mfumo wa AI kusaidia maamuzi ya mikopo ya watumiaji, ni muhimu kuchunguza matokeo na kuelewa ni data gani inayoshawishi mapendekezo ya mfumo. Serikali zinaanza kudhibiti AI katika sekta mbalimbali, kwa hivyo wanasayansi wa data na mashirika lazima waeleze ikiwa mfumo wa AI unakidhi mahitaji ya udhibiti, hasa pale ambapo kuna matokeo yasiyofaa. +### Uwazi +Mifumo ya AI inapaswa kueleweka. Sehemu muhimu ya uwazi ni kueleza tabia za mifumo ya AI na viunganishi vyake. Kuboresha uelewa wa mifumo ya AI kunahitaji wadau kuelewa jinsi na kwa nini inafanya kazi ili waweze kubaini matatizo ya utendaji, masuala ya usalama na faragha, upendeleo, mbinu za kuwatenga, au matokeo yasiyotakikana. Pia tunaamini kwamba wale wanaotumia mifumo ya AI wanapaswa kuwa waaminifu na waeleze wazi wakati, kwa nini, na jinsi wanavyotaka kuitumia. Kama vile vikwazo vya mifumo wanazotumia. Kwa mfano, ikiwa benki inatumia mfumo wa AI kusaidia maamuzi ya mikopo kwa wateja, ni muhimu kuchunguza matokeo na kuelewa data gani inayoathiri mapendekezo ya mfumo. Serikali zinaanza kuweka sheria za AI katika sekta mbalimbali, hivyo wanasayansi wa data na taasisi wanapaswa kueleza kama mfumo wa AI unakidhi masharti ya kisheria, hasa wakati kuna matokeo mabaya. -> [🎥 Bofya hapa kwa video: uwazi katika AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Bonyeza hapa kwa video: uwazi katika AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) - Kwa sababu mifumo ya AI ni ngumu sana, ni vigumu kuelewa jinsi inavyofanya kazi na kutafsiri matokeo. - Ukosefu huu wa uelewa huathiri jinsi mifumo hii inavyosimamiwa, kuendeshwa, na kuandikwa. -- Ukosefu huu wa uelewa zaidi huathiri maamuzi yanayofanywa kwa kutumia matokeo ambayo mifumo hii inazalisha. +- Ukosefu huu wa uelewa hasa huathiri maamuzi yanayofanywa kwa kutumia matokeo yanayotolewa na mifumo hii. ### Uwajibikaji + +Watu wanaobuni na kuanzisha mifumo ya AI lazima wawe na uwajibikaji kwa jinsi mifumo yao inavyofanya kazi. Hitaji la uwajibikaji ni muhimu hasa kwa teknolojia nyeti kama utambuzi wa uso. Hivi karibuni, kumekuwa na ongezeko la mahitaji ya teknolojia ya utambuzi wa uso, hasa kutoka kwa mashirika ya utekelezaji wa sheria yanayoona uwezo wa teknolojia hiyo katika matumizi kama vile kutafuta watoto waliopotea. Hata hivyo, teknolojia hizi zinaweza kutumiwa na serikali kuweka hatarini uhuru wa msingi wa raia kwa mfano, kwa kuruhusu ufuatiliaji wa watu binafsi kwa muda mrefu. Hivyo, wanasayansi wa data na taasisi wanahitaji kuwajibika kwa jinsi mfumo wao wa AI unavyoathiri watu binafsi au jamii. -Watu wanaobuni na kupeleka mifumo ya AI lazima wawajibike kwa jinsi mifumo yao inavyofanya kazi. Hitaji la uwajibikaji ni muhimu hasa kwa teknolojia nyeti kama utambuzi wa uso. Hivi karibuni, kumekuwa na mahitaji yanayoongezeka ya teknolojia ya utambuzi wa uso, hasa kutoka kwa mashirika ya utekelezaji wa sheria yanayoona uwezo wa teknolojia hiyo katika matumizi kama vile kutafuta watoto waliopotea. Hata hivyo, teknolojia hizi zinaweza kutumiwa na serikali kuweka uhuru wa msingi wa raia wao hatarini kwa, kwa mfano, kuwezesha ufuatiliaji wa mara kwa mara wa watu fulani. Kwa hivyo, wanasayansi wa data na mashirika yanahitaji kuwajibika kwa jinsi mfumo wao wa AI unavyoathiri watu binafsi au jamii. +[![Mtafiti Mkuu wa AI Anwambia Kuhusu Ufuatiliaji Mkubwa Kupitia Utambuzi wa Uso](../../../../translated_images/sw/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -[![Mtafiti Mkuu wa AI Anaonya kuhusu Ufuatiliaji wa Misa Kupitia Utambuzi wa Uso](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Mbinu ya Microsoft kwa AI Inayowajibika") +> 🎥 Bonyeza picha hapo juu kwa video: Onyo Kuhusu Ufuatiliaji Mkubwa Kupitia Utambuzi wa Uso -> 🎥 Bofya picha hapo juu kwa video: Onyo kuhusu Ufuatiliaji wa Misa Kupitia Utambuzi wa Uso +Mwisho, moja ya maswali makubwa kwa kizazi chetu, kama kizazi cha kwanza kinachowaleta AI kwa jamii, ni jinsi ya kuhakikisha kuwa kompyuta zitabaki kuwa na uwajibikaji kwa watu na jinsi ya kuhakikisha watu wanaobuni kompyuta wataendelea kuwa na uwajibikaji kwa kila mtu mwingine. -Hatimaye, moja ya maswali makubwa kwa kizazi chetu, kama kizazi cha kwanza kinacholeta AI kwa jamii, ni jinsi ya kuhakikisha kwamba kompyuta zitabaki kuwajibika kwa watu na jinsi ya kuhakikisha kwamba watu wanaobuni kompyuta wanabaki kuwajibika kwa kila mtu mwingine. +## Tathmini ya athari -## Tathmini ya Athari +Kabla ya kufundisha modeli ya machine learning, ni muhimu kufanya tathmini ya athari ili kuelewa madhumuni ya mfumo wa AI; matumizi yaliyokusudiwa; mahali utakapowekwa; na nani atakayeshirikiana na mfumo. Hizi ni msaada kwa mkaguzi au mtathmini wa mfumo kujua mambo ya kuzingatia wakati wa kubaini hatari zinazowezekana na matokeo yanayotarajiwa. -Kabla ya kufundisha modeli ya kujifunza kwa mashine, ni muhimu kufanya tathmini ya athari ili kuelewa madhumuni ya mfumo wa AI; matumizi yaliyokusudiwa; mahali itakapotumika; na nani atakayeingiliana na mfumo. Hizi ni muhimu kwa mthibitishaji au mjaribu wa mfumo kujua ni mambo gani ya kuzingatia wakati wa kutambua hatari zinazowezekana na matokeo yanayotarajiwa. +Hapa kuna maeneo ya kuzingatia wakati wa kufanya tathmini ya athari: -Sehemu zifuatazo ni za kuzingatia wakati wa kufanya tathmini ya athari: +* **Athari mbaya kwa watu binafsi**. Kuwa na ufahamu wa vikwazo au mahitaji, matumizi yasiyoidhinishwa au vikwazo vinavyoathiri utendaji wa mfumo ni muhimu kuhakikisha mfumo hautumiki kwa njia inayoweza kuua watu binafsi. +* **Mahitaji ya data**. Kupata uelewa wa jinsi na wapi mfumo utatumia data husaidia wakaguzi kuchunguza mahitaji yoyote ya data ambayo unapaswa kuzingatia (mfano, kanuni za GDPR au HIPAA). Zaidi ya hayo, angalia kama chanzo au kiasi cha data ni cha kutosha kwa mafunzo. +* **Muhtasari wa athari**. Kusanya orodha ya madhara yanayoweza kutokea kutokana na matumizi ya mfumo. Katika mzunguko wa ML, rudi kuona kama masuala yaliyobainishwa yamepunguzwa au kushughulikiwa. +* **Malengo yanayohusika** kwa kila kanuni kuu sita. Tathmini kama malengo ya kila kanuni yametimizwa na kama kuna mapengo. -* **Athari mbaya kwa watu binafsi**. Kuwa na ufahamu wa vizuizi au mahitaji yoyote, matumizi yasiyoungwa mkono au mapungufu yoyote yanayojulikana yanayozuia utendaji wa mfumo ni muhimu ili kuhakikisha kwamba mfumo hautumiki kwa njia inayoweza kudhuru watu binafsi. -* **Mahitaji ya data**. Kupata uelewa wa jinsi na wapi mfumo utatumia data husaidia wathibitishaji kuchunguza mahitaji yoyote ya data unayohitaji kuzingatia (mfano, kanuni za GDPR au HIPPA). Zaidi ya hayo, chunguza ikiwa chanzo au wingi wa data ni muhimu kwa mafunzo. -* **Muhtasari wa athari**. Kusanya orodha ya madhara yanayoweza kutokea kutokana na matumizi ya mfumo. Katika mzunguko wa maisha wa ML, hakiki ikiwa masuala yaliyotambuliwa yamepunguzwa au kushughulikiwa. -* **Malengo yanayofaa** kwa kila moja ya kanuni sita za msingi. Tathmini ikiwa malengo kutoka kwa kila kanuni yametimizwa na ikiwa kuna mapungufu yoyote. -## Kutatua Hitilafu kwa AI Inayowajibika +## Kutengeneza makosa na AI yenye uwajibikaji -Kama vile kutatua hitilafu katika programu, kutatua hitilafu katika mfumo wa AI ni mchakato muhimu wa kutambua na kutatua masuala katika mfumo. Kuna mambo mengi yanayoweza kuathiri modeli kutofanya kazi kama inavyotarajiwa au kwa uwajibikaji. Vipimo vingi vya utendaji wa modeli vya jadi ni jumla za kiasi za utendaji wa modeli, ambazo hazitoshi kuchambua jinsi modeli inavyokiuka kanuni za AI inayowajibika. Zaidi ya hayo, modeli ya kujifunza kwa mashine ni "sanduku jeusi" ambalo hufanya iwe vigumu kuelewa kinachosababisha matokeo yake au kutoa maelezo pale inapokosea. Baadaye katika kozi hii, tutajifunza jinsi ya kutumia dashibodi ya AI Inayowajibika kusaidia kutatua hitilafu katika mifumo ya AI. Dashibodi hutoa zana ya jumla kwa wanasayansi wa data na wasanidi wa AI kufanya: +Kama vile kutengeneza makosa katika programu ya kompyuta, kutengeneza makosa katika mfumo wa AI ni mchakato unaohitajika wa kubaini na kutatua matatizo katika mfumo. Kuna sababu nyingi zinazoweza kufanya modeli isifanye kazi kama inavyotarajiwa au kwa uwajibikaji. Viwango vya utendaji vya modeli vya kawaida ni jumla za kiasi cha utendaji wa modeli, ambazo hazitoshi kuchambua jinsi modeli inavyoenda kinyume na kanuni za AI yenye uwajibikaji. Zaidi ya hayo, modeli ya machine learning ni boksi jeusi ambalo linafanya iwe vigumu kuelewa kinachosababisha matokeo yake au kutoa maelezo anapokosea. Baadaye katika kozi hii, tutaelewa jinsi ya kutumia dashibodi ya AI yenye Uwajibikaji kusaidia kutengeneza makosa katika mifumo ya AI. Dashibodi hutoa zana ya jumla kwa wanasayansi wa data na watengenezaji wa AI kufanya: -* **Uchambuzi wa makosa**. Kutambua usambazaji wa makosa ya modeli ambayo yanaweza kuathiri haki au uaminifu wa mfumo. -* **Muhtasari wa modeli**. Kugundua mahali kuna tofauti katika utendaji wa modeli katika vikundi vya data. -* **Uchambuzi wa data**. Kuelewa usambazaji wa data na kutambua upendeleo wowote unaoweza kuwapo katika data ambao unaweza kusababisha masuala ya haki, ujumuishi, na uaminifu. -* **Ufafanuzi wa modeli**. Kuelewa kinachoshawishi au kuathiri utabiri wa modeli. Hii husaidia kuelezea tabia ya modeli, ambayo ni muhimu kwa uwazi na uwajibikaji. +* **Uchambuzi wa makosa**. Kubaini mgawanyiko wa makosa wa modeli ambao unaweza kuathiri usawa au uaminifu wa mfumo. +* **Muhtasari wa modeli**. Kugundua ambapo kuna tofauti katika utendaji wa modeli kati ya makundi ya data. +* **Uchambuzi wa data**. Kuelewa mgawanyiko wa data na kubaini upendeleo wowote unaoweza kusababisha matatizo ya usawa, ushirikishaji, na uaminifu. +* **Ufafanuzi wa modeli**. Kuelewa kinacho athiri au kuathiri utabiri wa modeli. Hii husaidia kueleza tabia ya modeli, ambayo ni muhimu kwa uwazi na uwajibikaji. -## 🚀 Changamoto -Ili kuzuia madhara yasiletwe mwanzoni, tunapaswa: +## 🚀 Changamoto + +Ili kuzuia madhara kutokea, tunapaswa: - kuwa na utofauti wa asili na mitazamo miongoni mwa watu wanaofanya kazi kwenye mifumo - kuwekeza katika seti za data zinazowakilisha utofauti wa jamii yetu -- kuendeleza mbinu bora katika mzunguko wa maisha wa kujifunza kwa mashine kwa kugundua na kurekebisha AI inayowajibika pale inapojitokeza +- kuendeleza mbinu bora katika mzunguko wa machine learning za kugundua na kurekebisha AI yenye uwajibikaji inapojitokeza + +Fikiria hali halisi ambapo kutokuwa na uaminifu kwa modeli kunadhihirika katika ujenzi na matumizi ya modeli. Ni nini kingine tunapaswa kuzingatia? -Fikiria hali halisi ambapo kutokuwa na uaminifu wa modeli kunadhihirika katika ujenzi na matumizi ya modeli. Nini kingine tunapaswa kuzingatia? +## [Mtihani baada ya somo](https://ff-quizzes.netlify.app/en/ml/) -## [Maswali ya baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +## Mapitio & Kujifunza binafsi + -## Mapit -Tazama warsha hii ili kuchunguza kwa undani mada hizi: +Katika somo hili, umejifunza baadhi ya mambo ya msingi kuhusu dhana za haki na kutohaki katika kujifunza kwa mashine. + +Tazama warsha hii ili kuzama zaidi kwenye mada: -- Katika harakati za AI yenye uwajibikaji: Kuweka kanuni katika vitendo na Besmira Nushi, Mehrnoosh Sameki, na Amit Sharma +- Katika kujitahidi kwa AI yenye uwajibikaji: Kuleta kanuni katika vitendo na Besmira Nushi, Mehrnoosh Sameki na Amit Sharma -[![Responsible AI Toolbox: Mfumo wa chanzo huria kwa ajili ya kujenga AI yenye uwajibikaji](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Mfumo wa chanzo huria kwa ajili ya kujenga AI yenye uwajibikaji") +[![Sanduku la Zana la AI Yenye Uwajibikaji: Mwongozo wa chanzo huru wa kujenga AI yenye uwajibikaji](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "Sanduku la Zana la RAI: Mwongozo wa chanzo huru wa kujenga AI yenye uwajibikaji") -> 🎥 Bonyeza picha hapo juu kwa video: RAI Toolbox: Mfumo wa chanzo huria kwa ajili ya kujenga AI yenye uwajibikaji na Besmira Nushi, Mehrnoosh Sameki, na Amit Sharma +> 🎥 Bonyeza picha hapo juu kwa video: Sanduku la Zana la RAI: Mwongozo wa chanzo huru wa kujenga AI yenye uwajibikaji na Besmira Nushi, Mehrnoosh Sameki, na Amit Sharma -Pia, soma: +Pia, soma: -- Kituo cha rasilimali cha RAI cha Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Kituo cha rasilimali cha RAI cha Microsoft: [Rasilimali za AI Yenye Uwajibikaji – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Kikundi cha utafiti cha FATE cha Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Kundi la utafiti la FATE la Microsoft: [FATE: Haki, Uwajibikaji, Uwazi, na Maadili katika AI - Utafiti wa Microsoft](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +Sanduku la Zana la RAI: -- [Hifadhi ya GitHub ya Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) +- [Hifadhidata ya GitHub ya Sanduku la Zana la AI Yenye Uwajibikaji](https://github.com/microsoft/responsible-ai-toolbox) -Soma kuhusu zana za Azure Machine Learning kuhakikisha usawa: +Soma kuhusu zana za Azure Machine Learning kuhakikisha haki: -- [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) -## Kazi +## Kazi ya nyumbani -[Chunguza RAI Toolbox](assignment.md) +[Chunguza Sanduku la Zana la RAI](assignment.md) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/2-Regression/1-Tools/README.md b/translations/sw/2-Regression/1-Tools/README.md index b7a893651..d8000629a 100644 --- a/translations/sw/2-Regression/1-Tools/README.md +++ b/translations/sw/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# Anza na Python na Scikit-learn kwa mifano ya regression +# Anza na Python na Scikit-learn kwa mifano ya urekebishaji -![Muhtasari wa regressions katika sketchnote](../../../../sketchnotes/ml-regression.png) +![Muhtasari wa urekebishaji katika sketchnote](../../../../translated_images/sw/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote na [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Jaribio la awali la somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani wa kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) > ### [Somo hili linapatikana kwa R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Utangulizi -Katika masomo haya manne, utajifunza jinsi ya kujenga mifano ya regression. Tutajadili matumizi yake hivi karibuni. Lakini kabla ya kuanza, hakikisha una zana sahihi za kuanza mchakato! +Katika masomo manne haya, utagundua jinsi ya kujenga mifano ya urekebishaji. Tutajadili kwa nini hizi ni muhimu hivi karibuni. Lakini kabla hujafanya kitu chochote, hakikisha una vifaa sahihi tayari kuanza mchakato! Katika somo hili, utajifunza jinsi ya: -- Kuseti kompyuta yako kwa kazi za kujifunza mashine za ndani. -- Kufanya kazi na Jupyter notebooks. -- Kutumia Scikit-learn, ikiwa ni pamoja na usakinishaji. -- Kuchunguza regression ya mstari kupitia zoezi la vitendo. +- Kusanidi kompyuta yako kwa kazi za kujifunza kwa mashine za ndani. +- Kufanya kazi na Jupyter Notebooks. +- Kutumia Scikit-learn, ikijumuisha usakinishaji. +- Kuchunguza urekebishaji wa mstari kwa zoezi la vitendo. ## Usakinishaji na usanidi -[![ML kwa wanaoanza - Sanidi zana zako tayari kujenga mifano ya Kujifunza Mashine](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML kwa wanaoanza - Sanidi zana zako tayari kujenga mifano ya Kujifunza Mashine") +[![ML kwa wanaoanzisha - Weka vifaa vyako tayari kujenga modeli za Kujifunza kwa Mashine](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML kwa wanaoanzisha -Weka vifaa vyako tayari kujenga modeli za Kujifunza kwa Mashine") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya jinsi ya kusanidi kompyuta yako kwa ML. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayofundisha jinsi ya kusanidi kompyuta yako kwa ML. -1. **Sakinisha Python**. Hakikisha kuwa [Python](https://www.python.org/downloads/) imewekwa kwenye kompyuta yako. Utatumia Python kwa kazi nyingi za sayansi ya data na kujifunza mashine. Mfumo mwingi wa kompyuta tayari una usakinishaji wa Python. Kuna [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) zinazopatikana pia, ili kurahisisha usanidi kwa watumiaji wengine. +1. **Sakinisha Python**. Hakikisha kwamba [Python](https://www.python.org/downloads/) imewekwa kwenye kompyuta yako. Utaweza kutumia Python kwa kazi nyingi za sayansi ya data na kujifunza kwa mashine. Mifumo mingi ya kompyuta tayari ina usakinishaji wa Python. Pia kuna [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) muhimu zinazopatikana kusaidia baadhi ya watumiaji kwa urahisi wa usanidi. - Baadhi ya matumizi ya Python yanahitaji toleo moja la programu, wakati mengine yanahitaji toleo tofauti. Kwa sababu hii, ni muhimu kufanya kazi ndani ya [mazingira ya kawaida](https://docs.python.org/3/library/venv.html). + Matumizi kadhaa ya Python, hata hivyo, yanahitaji toleo moja la programu, wakati mengine yanahitaji toleo tofauti. Kwa sababu hii, ni muhimu kufanya kazi ndani ya [mazingira ya virtual](https://docs.python.org/3/library/venv.html). -2. **Sakinisha Visual Studio Code**. Hakikisha kuwa Visual Studio Code imewekwa kwenye kompyuta yako. Fuata maelekezo haya ili [kusakinisha Visual Studio Code](https://code.visualstudio.com/) kwa usakinishaji wa msingi. Utatumia Python ndani ya Visual Studio Code katika kozi hii, kwa hivyo unaweza kutaka kujifunza jinsi ya [kusanidi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) kwa maendeleo ya Python. +2. **Sakinisha Visual Studio Code**. Hakikisha una Visual Studio Code imewekwa kwenye kompyuta yako. Fuata maelekezo haya ya [kusakinisha Visual Studio Code](https://code.visualstudio.com/) kwa usakinishaji wa msingi. Utatumia Python katika Visual Studio Code katika kozi hii, hivyo huenda utataka kujifunza jinsi ya [kusanidi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) kwa maendeleo ya Python. - > Jifunze Python kwa kupitia mkusanyiko huu wa [moduli za kujifunza](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Jifunze vizuri Python kwa kufanya kazi kupitia mkusanyiko wa [moduli za Kujifunza](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > - > [![Sanidi Python na Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Sanidi Python na Visual Studio Code") + > [![Weka Python na Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Weka Python na Visual Studio Code") > > 🎥 Bonyeza picha hapo juu kwa video: kutumia Python ndani ya VS Code. -3. **Sakinisha Scikit-learn**, kwa kufuata [maelekezo haya](https://scikit-learn.org/stable/install.html). Kwa kuwa unahitaji kuhakikisha unatumia Python 3, inashauriwa utumie mazingira ya kawaida. Kumbuka, ikiwa unasakinisha maktaba hii kwenye Mac ya M1, kuna maelekezo maalum kwenye ukurasa uliohusishwa hapo juu. +3. **Sakinisha Scikit-learn**, kwa kufuata [maelekezo haya](https://scikit-learn.org/stable/install.html). Kwa sababu unahitaji kuhakikisha unatumia Python 3, inashauriwa kutumia mazingira ya virtual. Kumbuka, kama unasakinisha maktaba hii kwenye M1 Mac, kuna maelekezo maalum kwenye ukurasa uliounganishwa hapo juu. -4. **Sakinisha Jupyter Notebook**. Utahitaji [kusakinisha kifurushi cha Jupyter](https://pypi.org/project/jupyter/). +1. **Sakinisha Jupyter Notebook**. Utahitaji [kusakinisha kifurushi cha Jupyter](https://pypi.org/project/jupyter/). ## Mazingira yako ya kuandika ML -Utatumia **notebooks** kuendeleza msimbo wako wa Python na kuunda mifano ya kujifunza mashine. Aina hii ya faili ni zana ya kawaida kwa wanasayansi wa data, na zinaweza kutambulika kwa kiambishi au kiendelezi `.ipynb`. +Utatumia **notebooks** kuendeleza msimbo wako wa Python na kuunda mifano ya kujifunza kwa mashine. Aina hii ya faili ni chombo cha kawaida kwa wanasayansi wa data, na zinaweza kutambuliwa kwa kiambishi kibadilisha `.ipynb`. -Notebooks ni mazingira ya maingiliano yanayomruhusu msanidi programu kuandika msimbo na kuongeza maelezo na kuandika nyaraka kuzunguka msimbo, jambo ambalo ni muhimu sana kwa miradi ya majaribio au utafiti. +Notebooks ni mazingira ya mwingiliano yanayomruhusu mendelezaji kufanya msimbo na kuongeza maelezo na kuandika nyaraka kuhusu msimbo ambayo ni msaada mkubwa kwa miradi ya majaribio au utafiti. -[![ML kwa wanaoanza - Sanidi Jupyter Notebooks kuanza kujenga mifano ya regression](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML kwa wanaoanza - Sanidi Jupyter Notebooks kuanza kujenga mifano ya regression") +[![ML kwa wanaoanzisha - Weka Jupyter Notebooks kuanza kujenga mifano ya urekebishaji](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML kwa wanaoanzisha - Weka Jupyter Notebooks kuanza kujenga mifano ya urekebishaji") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya kufanya zoezi hili. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayofundisha zoezi hili. -### Zoezi - kufanya kazi na notebook +### Zoezi - fanya kazi na daftari Katika folda hii, utapata faili _notebook.ipynb_. -1. Fungua _notebook.ipynb_ ndani ya Visual Studio Code. +1. Fungua _notebook.ipynb_ katika Visual Studio Code. - Seva ya Jupyter itaanza na Python 3+ imeanzishwa. Utapata maeneo ya notebook ambayo yanaweza `kuendeshwa`, vipande vya msimbo. Unaweza kuendesha kipande cha msimbo kwa kuchagua ikoni inayofanana na kitufe cha kucheza. + Seva ya Jupyter itaanza na Python 3+ imeanzishwa. Utapata maeneo ya daftari inayoweza `kuwaendeshwa`, sehemu za msimbo. Unaweza kuendesha kipande cha msimbo, kwa kuchagua ikoni inayofanana na kitufe cha kucheza. -2. Chagua ikoni ya `md` na ongeza kidogo cha markdown, na maandishi yafuatayo **# Karibu kwenye notebook yako**. +1. Chagua ikoni `md` na ongeza kidogo markdown, na maandishi yafuatayo **# Karibu kwenye daftari lako**. Kisha, ongeza msimbo wa Python. -3. Andika **print('hello notebook')** kwenye kipande cha msimbo. -4. Chagua mshale ili kuendesha msimbo. +1. Andika **print('hello notebook')** katika kipande cha msimbo. +1. Chagua mshale kuendesha msimbo. - Unapaswa kuona taarifa iliyochapishwa: + Utapaswa kuona tamko lililo chapishwa: ```output hello notebook ``` -![VS Code na notebook imefunguliwa](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code na daftari wazi](../../../../translated_images/sw/notebook.4a3ee31f396b8832.webp) -Unaweza kuchanganya msimbo wako na maoni ili kujidokumentisha notebook. +Unaweza kuingiza maelezo katika msimbo wako ili kujirekebisha wega kwenye daftari. -✅ Fikiria kwa dakika moja jinsi mazingira ya kazi ya msanidi programu wa wavuti yanavyotofautiana na yale ya mwanasayansi wa data. +✅ Fikiria kwa muda mfupi jinsi mazingira ya kazi ya mtengenezaji wavuti yanavyotofautiana na ya mtaalamu wa sayansi ya data. -## Kuanzisha na Scikit-learn +## Kuanzisha na kutumia Scikit-learn -Sasa kwa kuwa Python imewekwa katika mazingira yako ya ndani, na unajisikia vizuri na Jupyter notebooks, hebu tujifunze vizuri na Scikit-learn (tamka `sci` kama `science`). Scikit-learn inatoa [API ya kina](https://scikit-learn.org/stable/modules/classes.html#api-ref) kusaidia kufanya kazi za ML. +Sasa Python imewekwa kwenye mazingira yako ya mkoa, na umezoea Jupyter Notebooks, hebu pia tujifunze vizuri Scikit-learn (taja kama `sci` kama katika `science`). Scikit-learn hutoa [API pana](https://scikit-learn.org/stable/modules/classes.html#api-ref) kusaidia kufanya kazi za ML. -Kulingana na [tovuti yao](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn ni maktaba ya kujifunza mashine ya chanzo huria inayounga mkono kujifunza kwa usimamizi na bila usimamizi. Pia inatoa zana mbalimbali za kufaa mifano, usindikaji wa data, uteuzi wa mifano na tathmini, na huduma nyingine nyingi." +Kulingana na [tovuti yao](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn ni maktaba ya chanzo huria ya kujifunza kwa mashine inayounga mkono kujifunza kwa usimamizi na usiokuwa na usimamizi. Pia hutumia zana mbalimbali za kufitisha modeli, usindikaji wa data, uchaguzi wa modeli na tathmini, na huduma nyingine nyingi." -Katika kozi hii, utatumia Scikit-learn na zana nyingine kujenga mifano ya kujifunza mashine kufanya kile tunachokiita 'kazi za kujifunza mashine za jadi'. Tumeepuka makusudi mitandao ya neva na kujifunza kwa kina, kwani zinashughulikiwa vyema katika mtaala wetu ujao wa 'AI kwa Wanaoanza'. +Katika kozi hii, utatumia Scikit-learn na zana nyingine kujenga mifano ya kujifunza kwa mashine kufanya kile tunachokiita 'kazi za jadi za kujifunza kwa mashine.' Tumewaepuka makusudi mitandao ya neva na ujifunzaji wa kina, kwani yanashughulikiwa vizuri zaidi katika mtaala wetu unaokuja wa 'AI kwa Wanaoanzisha.' -Scikit-learn inafanya iwe rahisi kujenga mifano na kuipima kwa matumizi. Inalenga hasa kutumia data ya nambari na ina datasets kadhaa zilizotayarishwa tayari kwa matumizi kama zana za kujifunza. Pia inajumuisha mifano iliyojengwa tayari kwa wanafunzi kujaribu. Hebu tuchunguze mchakato wa kupakia data iliyopakiwa awali na kutumia estimator iliyojengwa kwa mfano wa kwanza wa ML na Scikit-learn na data ya msingi. +Scikit-learn hufanya iwe rahisi kujenga mifano na kuipima kwa matumizi. Inazingatia hasa kutumia data ya nambari na ina seti kadhaa za data zilizotayarishwa tayari kwa zana za kujifunza. Pia inajumuisha mifano iliyojengwa tayari kwa wanafunzi kujaribu. Hebu tuchunguze mchakato wa kupakia data zilizoandaliwa na kutumia kipima kilichojengwa kwa mfano wa kwanza wa ML na Scikit-learn na data rahisi. -## Zoezi - notebook yako ya kwanza ya Scikit-learn +## Zoezi - daftari lako la kwanza la Scikit-learn -> Mafunzo haya yamechochewa na [mfano wa regression ya mstari](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) kwenye tovuti ya Scikit-learn. +> Mafunzo haya yamechukuliwa kutoka kwa [mfano wa urekebishaji wa mstari](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) kwenye tovuti ya Scikit-learn. -[![ML kwa wanaoanza - Mradi wako wa Kwanza wa Regression ya Mstari katika Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML kwa wanaoanza - Mradi wako wa Kwanza wa Regression ya Mstari katika Python") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya kufanya zoezi hili. +[![ML kwa wanaoanzisha - Mradi wako wa Kwanza wa Urekebishaji wa Mstari katika Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML kwa wanaoanzisha - Mradi wako wa Kwanza wa Urekebishaji wa Mstari katika Python") -Katika faili _notebook.ipynb_ lililohusishwa na somo hili, futa seli zote kwa kubonyeza ikoni ya 'takataka'. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayofundisha zoezi hili. -Katika sehemu hii, utatumia dataset ndogo kuhusu ugonjwa wa kisukari ambayo imejengwa ndani ya Scikit-learn kwa madhumuni ya kujifunza. Fikiria kwamba unataka kujaribu matibabu kwa wagonjwa wa kisukari. Mifano ya Kujifunza Mashine inaweza kusaidia kuamua ni wagonjwa gani watakaoitikia matibabu vizuri zaidi, kulingana na mchanganyiko wa vigezo. Hata mfano wa regression ya msingi, unapowekwa kwenye grafu, unaweza kuonyesha taarifa kuhusu vigezo ambavyo vinaweza kusaidia kupanga majaribio yako ya kliniki ya kinadharia. +Katika faili la _notebook.ipynb_ linalohusiana na somo hili, safisha seli zote kwa kubonyeza ikoni ya 'mkaa taka'. -✅ Kuna aina nyingi za mbinu za regression, na ni ipi unayochagua inategemea jibu unalotafuta. Ikiwa unataka kutabiri urefu unaowezekana wa mtu wa umri fulani, ungetumia regression ya mstari, kwani unatafuta **thamani ya nambari**. Ikiwa unavutiwa na kugundua kama aina ya chakula inapaswa kuzingatiwa kuwa ya mboga au la, unatafuta **ugawaji wa kategoria** kwa hivyo ungetumia regression ya logistic. Utajifunza zaidi kuhusu regression ya logistic baadaye. Fikiria kidogo kuhusu maswali unayoweza kuuliza data, na ni mbinu ipi kati ya hizi itakuwa sahihi zaidi. +Katika sehemu hii, utafanya kazi na seti ndogo ya data kuhusu kisukari ambayo imejengwa ndani ya Scikit-learn kwa madhumuni ya kujifunza. Fikiria kama ungetaka kujaribu tiba kwa wagonjwa wa kisukari. Mifano ya Kujifunza kwa Mashine inaweza kusaidia kuamua ni wagonjwa gani wangejibu vyema tiba hiyo, kwa msingi wa mchanganyiko wa vigezo. Hata mfano rahisi wa urekebishaji, ukionyeshwa picha, unaweza kuonyesha taarifa kuhusu vigezo ambavyo vitakusaidia kupanga majaribio ya nadharia ya kliniki. -Hebu tuanze kazi hii. +✅ Kuna aina nyingi za mbinu za urekebishaji, na ipi utakayochagua inategemea jibu unalotafuta. Ikiwa unataka kutabiri urefu unaowezekana kwa mtu wa umri fulani, utatumia urekebishaji wa mstari, kwa sababu unatafuta **thamani ya nambari**. Ikiwa unavutiwa kugundua kama aina fulani ya chakula inapaswa kuzingatiwa kuwa vegan au la, unatafuta **ugawaji wa aina** kwa hivyo utatumia urekebishaji wa logistic. Utajifunza zaidi kuhusu urekebishaji wa logistic baadaye. Fikiria kidogo kuhusu maswali unayoweza kuuliza data, na ni mbinu gani kati ya hizi zingekuwa sahihi zaidi. + +Hebu tuanze kwenye kazi hii. ### Ingiza maktaba -Kwa kazi hii tutaleta maktaba kadhaa: +Kwa kazi hii tutatangaza baadhi ya maktaba: -- **matplotlib**. Ni [chombo cha kuchora grafu](https://matplotlib.org/) na tutakitumia kuunda grafu ya mstari. +- **matplotlib**. Ni [chombo cha kuchora michoro](https://matplotlib.org/) kinachotumika kuunda mchoro wa mistari. - **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) ni maktaba muhimu kwa kushughulikia data ya nambari katika Python. - **sklearn**. Hii ni maktaba ya [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). -Ingiza maktaba kadhaa kusaidia kazi zako. +Ingiza maktaba kusaidia kazi zako. -1. Ongeza imports kwa kuandika msimbo ufuatao: +1. Ongeza maingizo kwa kuandika msimbo ufuatao: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Ingiza maktaba kadhaa kusaidia kazi zako. from sklearn import datasets, linear_model, model_selection ``` - Hapo juu unaleta `matplotlib`, `numpy` na unaleta `datasets`, `linear_model` na `model_selection` kutoka `sklearn`. `model_selection` hutumika kugawanya data katika seti za mafunzo na majaribio. + Juu hapa unainua `matplotlib`, `numpy` na unainua `datasets`, `linear_model` na `model_selection` kutoka `sklearn`. `model_selection` hutumika kugawanya data katika makundi ya mafunzo na majaribio. -### Dataset ya kisukari +### Seti ya data ya kisukari -Dataset ya [kisukari](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) iliyojengwa ndani ina sampuli 442 za data kuhusu kisukari, na vigezo 10 vya sifa, baadhi ya ambazo ni pamoja na: +Seti ya data [ya kisukari](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) iliyojengwa ina sampuli 442 za data kuhusu kisukari, na vigezo 10, baadhi yao ni: -- umri: umri kwa miaka +- umri: umri katika miaka - bmi: index ya uzito wa mwili -- bp: shinikizo la damu la wastani +- bp: wastani wa shinikizo la damu - s1 tc: T-Cells (aina ya seli nyeupe za damu) -✅ Dataset hii inajumuisha dhana ya 'jinsia' kama kigezo cha sifa muhimu kwa utafiti kuhusu kisukari. Dataset nyingi za matibabu zinajumuisha aina hii ya uainishaji wa binary. Fikiria kidogo kuhusu jinsi uainishaji kama huu unaweza kuwatenga sehemu fulani za idadi ya watu kutoka kwa matibabu. +✅ Seti hii ya data ina dhana ya 'jinsia' kama kigezo muhimu katika utafiti wa kisukari. Seti nyingi za data za matibabu zina aina hii ya mgawanyo wa binary. Fikiria kidogo jinsi malezo kama haya yanavyoweza kuondoa sehemu fulani za watu kutoka kwa matibabu. -Sasa, pakia data ya X na y. +Sasa, pakia data X na y. -> 🎓 Kumbuka, hii ni kujifunza kwa usimamizi, na tunahitaji lengo lililopewa jina 'y'. +> 🎓 Kumbuka, hii ni kujifunza kwa usimamizi, na tunahitaji 'y' linaloitwa lengo. -Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes()`. Ingizo `return_X_y=True` linaashiria kwamba `X` itakuwa matrix ya data, na `y` itakuwa lengo la regression. +Katika seli mpya ya msimbo, pakia seti ya data ya kisukari kwa kuitwa `load_diabetes()`. Kuingiza `return_X_y=True` kunaashiria kuwa `X` itakuwa matriki ya data, na `y` itakuwa lengo la urekebishaji. -1. Ongeza amri za kuchapisha ili kuonyesha umbo la matrix ya data na kipengele chake cha kwanza: +1. Ongeza baadhi ya amri za print ili kuonyesha umbo la matriki ya data na kipengele chake cha kwanza: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes() print(X[0]) ``` - Unachopata kama jibu ni tuple. Unachofanya ni kugawa thamani mbili za kwanza za tuple kwa `X` na `y` mtawalia. Jifunze zaidi [kuhusu tuples](https://wikipedia.org/wiki/Tuple). + Kile unachopata kama jibu ni tuple. Unachofanya ni kugawa vitu viwili vya kwanza vya tuple kwa `X` na `y` mtawalia. Jifunze zaidi [kuhusu tuple](https://wikipedia.org/wiki/Tuple). - Unaweza kuona kwamba data hii ina vitu 442 vilivyopangwa katika arrays za vipengele 10: + Unaweza kuona kuwa data hii ina vitu 442 vilivyoumbwa katika safu za vitu 10: ```text (442, 10) @@ -159,9 +160,9 @@ Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes() -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Fikiria kidogo kuhusu uhusiano kati ya data na lengo la regression. Regression ya mstari inatabiri uhusiano kati ya kipengele X na kigezo cha lengo y. Je, unaweza kupata [lengo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) kwa dataset ya kisukari katika nyaraka? Dataset hii inaonyesha nini, ikizingatiwa lengo? + ✅ Fikiria kidogo kuhusu uhusiano kati ya data na lengo la urekebishaji. Urekebishaji wa mstari unasema mahusiano kati ya kipengele X na kigezo cha lengo y. Je, unaweza kupata [lengo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) la seti ya data ya kisukari katika nyaraka? Seti hii ya data inaonyesha nini ukizingatia lengo hilo? -2. Kisha, chagua sehemu ya dataset hii ili kuweka grafu kwa kuchagua safu ya 3 ya dataset. Unaweza kufanya hivi kwa kutumia operator `:` kuchagua safu zote, na kisha kuchagua safu ya 3 kwa kutumia index (2). Unaweza pia kupanga upya data kuwa array ya 2D - kama inavyohitajika kwa kuweka grafu - kwa kutumia `reshape(n_rows, n_columns)`. Ikiwa moja ya parameter ni -1, kipimo kinacholingana kinahesabiwa kiotomatiki. +2. Ifuatayo, chagua sehemu ya seti hii ya data kwa kuchagua safu ya tatu ya dataset. Unaweza kufanya hivi kwa kutumia kiharusi cha `:` kuchagua mistari yote, kisha kuchagua safu ya 3 kutumia kiashiria (2). Pia unaweza kurekebisha data kuwa array ya 2D - kama inavyotakiwa kwa kuchora - kwa kutumia `reshape(n_rows, n_columns)`. Ikiwa parameta moja ni -1, kipimo kinacholingana kinakokotolewa kiotomatiki. ```python X = X[:, 2] @@ -170,28 +171,28 @@ Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes() ✅ Wakati wowote, chapisha data ili kuangalia umbo lake. -3. Sasa kwa kuwa una data tayari kuwekwa kwenye grafu, unaweza kuona kama mashine inaweza kusaidia kuamua mgawanyiko wa kimantiki kati ya nambari katika dataset hii. Ili kufanya hivyo, unahitaji kugawanya data (X) na lengo (y) katika seti za majaribio na mafunzo. Scikit-learn ina njia rahisi ya kufanya hivi; unaweza kugawanya data yako ya majaribio katika sehemu fulani. +3. Sasa una data tayari kuchorwa, unaweza kuona kama mashine inaweza kusaidia kuamua mgawanyiko wa maana kati ya nambari katika seti hii ya data. Kufanya hivyo, unahitaji kugawanya data zote (X) na lengo (y) katika seti za majaribio na mafunzo. Scikit-learn ina njia rahisi ya kufanya hili; unaweza kugawanya data zako za majaribio mahali fulani. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Sasa uko tayari kufundisha mfano wako! Pakia mfano wa regression ya mstari na uufundishe na seti zako za mafunzo za X na y kwa kutumia `model.fit()`: +4. Sasa uko tayari kufundisha mfano wako! Pakia mfano wa urekebishaji wa mstari na uufundishe kwa seti zako za mafunzo za X na y kwa kutumia `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` ni kazi utakayoiona katika maktaba nyingi za ML kama TensorFlow. + ✅ `model.fit()` ni kazi utakayoiwona katika maktaba nyingi za ML kama TensorFlow -5. Kisha, tengeneza utabiri kwa kutumia data ya majaribio, kwa kutumia kazi `predict()`. Hii itatumika kuchora mstari kati ya vikundi vya data. +5. Kisha, tengeneza utabiri kwa kutumia data ya majaribio, kwa kutumia kazi `predict()`. Hii itatumika kuchora mstari kati ya makundi ya data ```python y_pred = model.predict(X_test) ``` -6. Sasa ni wakati wa kuonyesha data kwenye grafu. Matplotlib ni chombo muhimu sana kwa kazi hii. Tengeneza grafu ya alama za X na y za majaribio, na tumia utabiri kuchora mstari mahali panapofaa zaidi, kati ya vikundi vya data vya mfano. +6. Sasa ni wakati wa kuonyesha data kwenye mchoro. Matplotlib ni chombo muhimu sana kwa kazi hii. Tengeneza mchoro wa pointi zote za data za majaribio X na y, na tumia utabiri kuchora mstari mahali pazuri zaidi, kati ya makundi ya data ya mfano. ```python plt.scatter(X_test, y_test, color='black') @@ -202,29 +203,32 @@ Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes() plt.show() ``` - ![grafu ya alama za data kuhusu kisukari](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Fikiria kidogo kuhusu kinachoendelea hapa. Mstari wa moja kwa moja unapita katikati ya nukta nyingi ndogo za data, lakini unafanya nini hasa? Je, unaweza kuona jinsi unavyoweza kutumia mstari huu kutabiri mahali ambapo data mpya, ambayo haijawahi kuonekana, inapaswa kutoshea kuhusiana na mhimili wa y wa mchoro? Jaribu kuelezea kwa maneno matumizi ya vitendo ya mfano huu. + ![mchoro wa pointi unaoonyesha data kuhusu kisukari](../../../../translated_images/sw/scatterplot.ad8b356bcbb33be6.webp) + -Hongera, umeunda mfano wako wa kwanza wa regression ya mstari, umetengeneza utabiri kwa kutumia, na kuonyesha katika mchoro! + ✅ Fikiria kidogo kuhusu kinachoendelea hapa. Mstari wa moja kwa moja unapitisha kwenye nukta nyingi ndogo za data, lakini unafanya nini hasa? Unaona jinsi unavyopaswa kutumia mstari huu kutabiri wapi nukta mpya ya data ambayo haijaonekana inapaswa kuwekwa kulingana na mhimili wa y wa mchoro? Jaribu kuweka kwa maneno matumizi halisi ya modeli hii. + +Hongera, umejenga modeli yako ya kwanza ya usawa wa mstari, umeunda utabiri nayo, na kuionesha kwenye mchoro! --- ## 🚀Changamoto -Chora variable tofauti kutoka kwa dataset hii. Kidokezo: hariri mstari huu: `X = X[:,2]`. Ukiangalia lengo la dataset hii, unaweza kugundua nini kuhusu maendeleo ya ugonjwa wa kisukari? - -## [Jaribio baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +Choroga kigezo kingine kutoka kwenye dataset hii. Wazo: rekebisha mstari huu: `X = X[:,2]`. Kulingana na lengo la dataset hii, unaweza kugundua nini kuhusu maendeleo ya ugonjwa wa kisukari? +## [Mtihani baada ya somo](https://ff-quizzes.netlify.app/en/ml/) -## Mapitio na Kujisomea +## Mapitio & Kujifunza Binafsi -Katika mafunzo haya, ulifanya kazi na regression rahisi ya mstari, badala ya regression ya univariate au multiple. Soma kidogo kuhusu tofauti kati ya mbinu hizi, au angalia [video hii](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +Katika mafunzo haya, ulifanya kazi na usawa wa mstari rahisi, badala ya usawa wa mstari wa kipengele kimoja au mwingi. Soma kidogo kuhusu tofauti kati ya mbinu hizi, au tazama [video hii](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Soma zaidi kuhusu dhana ya regression na fikiria ni aina gani za maswali yanayoweza kujibiwa kwa mbinu hii. Chukua [mafunzo haya](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ili kuongeza uelewa wako. +Soma zaidi kuhusu dhana ya usawa wa mstari na fikiria ni aina gani za maswali yanaweza kujibiwa kwa mbinu hii. Fanya mafunzo haya [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) kuongeza uelewa wako. -## Kazi +## Wajibu [Dataset tofauti](assignment.md) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/2-Regression/2-Data/README.md b/translations/sw/2-Regression/2-Data/README.md index b1c303b89..4f0dd4b98 100644 --- a/translations/sw/2-Regression/2-Data/README.md +++ b/translations/sw/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Jenga mfano wa regression kwa kutumia Scikit-learn: andaa na onyesha data +# Jenga mfano wa regresheni kwa kutumia Scikit-learn: andaa na onyesha data -![Picha ya infographic ya uonyeshaji wa data](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infographia ya uoneshaji data](../../../../translated_images/sw/data-visualization.54e56dded7c1a804.webp) -Infographic na [Dasani Madipalli](https://twitter.com/dasani_decoded) +Infographia na [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Jaribio la kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani kabla ya mihadhara](https://ff-quizzes.netlify.app/en/ml/) -> ### [Somo hili linapatikana kwa R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [Mafunzo haya yanapatikana katika R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Utangulizi -Sasa kwa kuwa umejiandaa na zana unazohitaji kuanza kujenga mifano ya kujifunza kwa mashine kwa kutumia Scikit-learn, uko tayari kuanza kuuliza maswali kuhusu data yako. Unapofanya kazi na data na kutumia suluhisho za ML, ni muhimu sana kuelewa jinsi ya kuuliza swali sahihi ili kufungua uwezo wa dataset yako ipasavyo. +Sasa umejiandaa na zana unazohitaji kuanza kujifunza ujenzi wa modeli ya kujifunza mashine kwa kutumia Scikit-learn, uko tayari kuanza kuuliza maswali kuhusu data yako. Unapofanya kazi na data na kutumia suluhisho za ML, ni muhimu sana kuelewa jinsi ya kuuliza swali sahihi ili kufungua vizuri uwezo wa dataset yako. Katika somo hili, utajifunza: -- Jinsi ya kuandaa data yako kwa ajili ya kujenga mifano. -- Jinsi ya kutumia Matplotlib kwa uonyeshaji wa data. +- Jinsi ya kuandaa data yako kwa ajili ya ujenzi wa modeli. +- Jinsi ya kutumia Matplotlib kwa ajili ya uoneshaji data. +- Jinsi ya kutumia Seaborn kwa uoneshaji data wa kuelezea zaidi. -## Kuuliza swali sahihi kuhusu data yako +## Kuuliza swali sahihi la data yako -Swali unalotaka kujibiwa litaamua ni aina gani ya algorithimu za ML utatumia. Na ubora wa jibu unalopata utategemea sana asili ya data yako. +Swali unalohitaji kupata jibu litabainisha aina gani ya algoriti ya ML utakayotumia. Na ubora wa jibu utakayopata utategemea sana asili ya data yako. -Angalia [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) iliyotolewa kwa somo hili. Unaweza kufungua faili hili la .csv katika VS Code. Ukilitazama haraka utaona kuwa kuna nafasi tupu na mchanganyiko wa maandishi na data ya nambari. Pia kuna safu ya ajabu inayoitwa 'Package' ambapo data ni mchanganyiko wa 'sacks', 'bins' na maadili mengine. Kwa kweli, data ni ya fujo kidogo. +Tazama [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) iliyotolewa kwa somo hili. Unaweza kufungua faili hii ya .csv katika VS Code. Kuangalia kwa haraka kunaonyesha mara moja kuwa kuna maeneo yaliyo wazi na mchanganyiko wa mistari na data za nambari. Pia kuna safu ya ajabu iitwayo 'Package' ambapo data ni mchanganyiko kati ya 'sacks', 'bins' na thamani nyingine. Data, kwa kweli, ni machafuko kidogo. -[![ML kwa wanaoanza - Jinsi ya Kuchambua na Kusafisha Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML kwa wanaoanza - Jinsi ya Kuchambua na Kusafisha Dataset") +[![ML kwa wakijifunza - Jinsi ya Kuchambua na Kusafisha Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML kwa wakijifunza - Jinsi ya Kuchambua na Kusafisha Dataset") -> 🎥 Bofya picha hapo juu kwa video fupi inayofanya kazi ya kuandaa data kwa somo hili. +> 🎥 Bonyeza picha hapo juu kwa video fupi ya kuonyesha jinsi ya kuandaa data kwa somo hili. -Kwa kweli, si kawaida kupewa dataset ambayo iko tayari kabisa kutumika kuunda mfano wa ML moja kwa moja. Katika somo hili, utajifunza jinsi ya kuandaa dataset mbichi kwa kutumia maktaba za kawaida za Python. Pia utajifunza mbinu mbalimbali za kuonyesha data. +Kwa kweli, si kawaida kupewa dataset ambayo tayari iko tayari kabisa kwa kutumia kuunda modeli ya ML moja kwa moja. Katika somo hili, utajifunza jinsi ya kuandaa dataset ghafi kwa kutumia maktaba za kawaida za Python. Pia utajifunza mbinu mbalimbali za kuonesha data. -## Uchunguzi wa kesi: 'soko la malenge' +## Utafiti wa kesi: 'soko la malenge' -Katika folda hii utapata faili la .csv katika folda ya mizizi `data` inayoitwa [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ambalo lina mistari 1757 ya data kuhusu soko la malenge, limepangwa katika vikundi kulingana na mji. Hii ni data mbichi iliyotolewa kutoka kwa [Ripoti za Kawaida za Masoko ya Mazao Maalum](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) zinazotolewa na Idara ya Kilimo ya Marekani. +Katika folda hii utapata faili la .csv katika folda ya mizizi `data` iitwayo [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) linalojumuisha mistari 1757 ya data kuhusu soko la malenge, limepangwa kwa makundi kwa miji. Hii ni data ghafi iliyochukuliwa kutoka kwa [Ripoti za Viwango vya Masoko ya Mazao Maalum](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) zinazotolewa na Idara ya Kilimo ya Marekani. ### Kuandaa data -Data hii iko katika uwanja wa umma. Inaweza kupakuliwa katika faili nyingi tofauti, kwa kila mji, kutoka tovuti ya USDA. Ili kuepuka faili nyingi tofauti, tumeunganisha data yote ya miji katika lahajedwali moja, kwa hivyo tayari tume _andaa_ data kidogo. Sasa, hebu tuangalie kwa karibu data hiyo. +Data hii iko katika umma. Inaweza kupakuliwa katika faili nyingi tofauti, kwa kila jiji, kutoka kwa tovuti ya USDA. Kuepuka faili nyingi tofauti, tumeshanika data zote za miji kwenye spreadsheet moja, hivyo tumeshakuwa tume_anda_ data kidogo. Sasa, tuchunguze data kwa karibu zaidi. ### Data ya malenge - hitimisho la awali -Unaona nini kuhusu data hii? Tayari umeona kuwa kuna mchanganyiko wa maandishi, nambari, nafasi tupu na maadili ya ajabu ambayo unahitaji kuelewa. +Unaona nini kuhusu data hii? Tayari umeona kwamba kuna mchanganyiko wa mistari, nambari, sehemu zilizokotwa na thamani za ajabu unazohitaji kuelewa. -Ni swali gani unaweza kuuliza kuhusu data hii, kwa kutumia mbinu ya Regression? Vipi kuhusu "Tabiri bei ya malenge yanayouzwa katika mwezi fulani". Ukiangalia tena data, kuna mabadiliko unayohitaji kufanya ili kuunda muundo wa data unaohitajika kwa kazi hiyo. +Swali gani unaweza kuuliza kuhusu data hii, ukitumia mbinu ya Regresheni? Vipi kuhusu "Tabiri bei ya malenge yanayouzwa wakati wa mwezi mmoja"? Kuangalia tena data, kuna mabadiliko unayohitaji kufanya ili kuunda muundo wa data unaohitajika kwa kazi hii. +## Zoefaa - chambua data ya malenge -## Zoezi - chunguza data ya malenge - -Tutumie [Pandas](https://pandas.pydata.org/), (jina linamaanisha `Python Data Analysis`) chombo chenye manufaa sana kwa kuunda data, kuchambua na kuandaa data hii ya malenge. +Tumia [Pandas](https://pandas.pydata.org/), (jina linamaanisha `Python Data Analysis`) zana muhimu sana kwa kuunda data, kuchambua na kuandaa data hii ya malenge. ### Kwanza, angalia tarehe zinazokosekana -Utahitaji kuchukua hatua za kuangalia tarehe zinazokosekana: +Kwanza utahitaji kuchukua hatua za kuangalia tarehe zilizokosekana: -1. Badilisha tarehe kuwa muundo wa mwezi (hizi ni tarehe za Marekani, kwa hivyo muundo ni `MM/DD/YYYY`). -2. Toa mwezi kwenye safu mpya. +1. Badilisha tarehe kuwa muundo wa mwezi (hizi ni tarehe za Marekani, hivyo muundo ni `MM/DD/YYYY`). +2. Chukua mwezi na weka kwenye safu mpya. -Fungua faili _notebook.ipynb_ katika Visual Studio Code na uingize lahajedwali katika dataframe mpya ya Pandas. +Fungua faili _notebook.ipynb_ katika Visual Studio Code na ingiza spreadsheet kwenye dataframe mpya ya Pandas. -1. Tumia kazi ya `head()` kuona mistari mitano ya kwanza. +1. Tumia kazi ya `head()` kuangalia mistari mitano ya kwanza. ```python import pandas as pd @@ -64,28 +64,28 @@ Fungua faili _notebook.ipynb_ katika Visual Studio Code na uingize lahajedwali k pumpkins.head() ``` - ✅ Ni kazi gani ungetumia kuona mistari mitano ya mwisho? + ✅ Ni kazi gani utakayotumia kuona mistari mitano ya mwisho? -1. Angalia kama kuna data inayokosekana katika dataframe ya sasa: +1. Angalia ikiwa kuna data iliyokosekana katika dataframe ya sasa: ```python pumpkins.isnull().sum() ``` - Kuna data inayokosekana, lakini labda haitakuwa muhimu kwa kazi inayofanyika. + Kuna data iliyokosekana, lakini labda haitakuwa na matokeo kwa kazi hii. -1. Ili kufanya dataframe yako iwe rahisi kufanya kazi nayo, chagua tu safu unazohitaji, kwa kutumia kazi ya `loc` ambayo huchukua kutoka dataframe ya awali kikundi cha mistari (kinachopitishwa kama parameter ya kwanza) na safu (zinazopitishwa kama parameter ya pili). Usemi `:` katika kesi hapa chini unamaanisha "mistari yote". +1. Ili kufanya dataframe yako iwe rahisi kufanya kazi nayo, chagua safu tu unazohitaji, ukitumia kazi ya `loc` ambayo huchukua kutoka kwa dataframe ya awali kundi la mistari (kama parameter ya kwanza) na safu (kama parameter ya pili). Kielelezo `:` katika mfano huu lina maana "mistari yote". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### Pili, amua bei ya wastani ya malenge +### Pili, tambua bei ya wastani ya malenge -Fikiria jinsi ya kuamua bei ya wastani ya malenge katika mwezi fulani. Ni safu gani ungezichagua kwa kazi hii? Kidokezo: utahitaji safu 3. +Fikiria jinsi ya kupata bei ya wastani ya malenge kwa mwezi fulani. Ni safu gani utachagua kwa kazi hii? Kuanza: utahitaji safu 3. -Suluhisho: chukua wastani wa safu za `Low Price` na `High Price` kujaza safu mpya ya Price, na ubadilishe safu ya Date kuonyesha tu mwezi. Kwa bahati nzuri, kulingana na ukaguzi hapo juu, hakuna data inayokosekana kwa tarehe au bei. +Suluhisho: chukua wastani wa safu za `Low Price` na `High Price` kujaza safu mpya ya Bei, na badilisha safu ya Tarehe kuonyesha tu mwezi. Kwa heri, kulingana na ukaguzi uliopita, hakuna data iliyokosekana kwa tarehe au bei. 1. Ili kuhesabu wastani, ongeza msimbo ufuatao: @@ -96,37 +96,37 @@ Suluhisho: chukua wastani wa safu za `Low Price` na `High Price` kujaza safu mpy ``` - ✅ Jisikie huru kuchapisha data yoyote unayotaka kuangalia kwa kutumia `print(month)`. + ✅ Huwezi kuchapisha data yoyote unayotaka kuangalia kwa kutumia `print(month)`. -2. Sasa, nakili data yako iliyobadilishwa katika dataframe mpya ya Pandas: +2. Sasa, nakili data uliyoibadilisha ndani ya dataframe mpya ya Pandas: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Kuchapisha dataframe yako kutakuonyesha dataset safi na nadhifu ambayo unaweza kujenga mfano wako mpya wa regression. + Kuchapisha dataframe yako kutaonyesha dataset safi na nadhifu ambayo unaweza kutumia kujenga mfano wako mpya wa regresheni. -### Lakini subiri! Kuna kitu cha ajabu hapa +### Lakini subiri! Kuna jambo la kushangaza hapa -Ukiangalia safu ya `Package`, malenge yanauzwa katika mipangilio mingi tofauti. Baadhi yanauzwa kwa kipimo cha '1 1/9 bushel', na mengine kwa '1/2 bushel', mengine kwa kila malenge, mengine kwa paundi, na mengine katika masanduku makubwa yenye upana tofauti. +Ukitazama safu ya `Package`, malenge huuzwa kwa mipangilio tofauti. Baadhi huuzwa kwa vipimo vya '1 1/9 bushel', na baadhi kwa '1/2 bushel', baadhi kwa malenge moja moja, baadhi kwa pauni, na wengine katika masanduku makubwa ya upana tofauti. -> Malenge yanaonekana kuwa magumu sana kupimwa kwa usawa +> Malenge yanaonekana kuwa magumu kuyapima kwa usahihi -Ukiangalia data ya awali, ni ya kuvutia kwamba chochote kilicho na `Unit of Sale` sawa na 'EACH' au 'PER BIN' pia kina aina ya `Package` kwa inchi, kwa bin, au 'each'. Malenge yanaonekana kuwa magumu sana kupimwa kwa usawa, kwa hivyo hebu tuyachuje kwa kuchagua tu malenge yenye neno 'bushel' katika safu yao ya `Package`. +Ukichunguza data ya awali, ni ya kuvutia kuwa kitu chochote chenye `Unit of Sale` kinapokuwa sawa na 'EACH' au 'PER BIN' pia kina aina ya `Package` kwa inchi, kwa bin, au 'kila moja'. Malenge yanaonekana kuwa magumu kuyapima kwa usahihi, hivyo tuchujie kwa kuchagua malenge tu yenye maneno 'bushel' kwenye safu yao ya `Package`. -1. Ongeza kichujio juu ya faili, chini ya uingizaji wa awali wa .csv: +1. Ongeza kichujio juu ya faili, chini ya uingizaji wa .csv wa awali: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Ukichapisha data sasa, utaona kuwa unapata tu mistari 415 au zaidi ya data inayojumuisha malenge kwa bushel. + Ikiwa uchapisha sasa data, utaona kuwa unapata mistari takriban 415 tu ya data ya malenge kwa bushel. -### Lakini subiri! Kuna jambo lingine la kufanya +### Lakini subiri! Kuna jambo moja zaidi la kufanya -Je, uliona kuwa kiasi cha bushel kinatofautiana kwa kila mstari? Unahitaji kuweka bei sawa ili uonyeshe bei kwa bushel, kwa hivyo fanya hesabu ili kuisawazisha. +Umeona ikiwa kiasi cha bushel kinatofautiana kwa kila mstari? Unahitaji kurekebisha bei ili kuonyesha bei kwa bushel, basi fanya hesabu zozote za kuipanga sawa. -1. Ongeza mistari hii baada ya block inayounda dataframe mpya ya malenge: +1. Ongeza mistari hii baada ya block ya kuunda dataframe ya new_pumpkins: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,29 +134,29 @@ Je, uliona kuwa kiasi cha bushel kinatofautiana kwa kila mstari? Unahitaji kuwek new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Kulingana na [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), uzito wa bushel unategemea aina ya mazao, kwani ni kipimo cha ujazo. "Bushel ya nyanya, kwa mfano, inapaswa kuwa na uzito wa paundi 56... Majani na mboga huchukua nafasi zaidi na uzito mdogo, kwa hivyo bushel ya spinachi ni paundi 20 tu." Ni ngumu sana! Hebu tusijisumbue na kufanya ubadilishaji wa bushel hadi paundi, na badala yake tuweke bei kwa bushel. Utafiti huu wote wa bushel za malenge, hata hivyo, unaonyesha jinsi ilivyo muhimu sana kuelewa asili ya data yako! +✅ Kulingana na [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), uzito wa bushel unategemea aina ya mmea, kwa kuwa ni kipimo cha wingi. "Bushel ya nyanya, kwa mfano, inapaswa kuwa na uzito wa pauni 56... Majani na mboga huchukua nafasi zaidi kwa uzito mdogo, hivyo bushel ya spinachi ni pauni 20 tu." Ni jambo tata! Tusiweke juhudi za kubadilisha bushel kuwa pauni, badala yake tuchukulie bei kwa bushel. Utafiti huu wote wa bushel za malenge unaonyesha jinsi gani ni muhimu kuelewa asili ya data yako! -Sasa, unaweza kuchambua bei kwa kipimo kulingana na bushel yao. Ukichapisha data mara moja zaidi, utaona jinsi ilivyowekwa sawa. +Sasa, unaweza kuchambua bei kwa kitengo kwa msingi wa kipimo chao cha bushel. Ikiwa uchapisha data mara moja zaidi, utaona jinsi ilivyo pangiliwa. -✅ Je, uliona kuwa malenge yanayouzwa kwa nusu bushel ni ghali sana? Je, unaweza kuelewa kwa nini? Kidokezo: malenge madogo ni ghali sana kuliko makubwa, labda kwa sababu kuna mengi zaidi yao kwa bushel, ikizingatiwa nafasi isiyotumika inayochukuliwa na malenge moja kubwa la pie. +✅ Umeona malenge yanayouzwa kwa nusu-bushel ni ghali sana? Je, unaweza kupata sababu? Vidokezo: malenge madogo ni ghali zaidi kuliko makubwa, labda kwa sababu kuna mengi zaidi ndani ya bushel, ikizingatiwa nafasi isiyotumika na malenge makubwa ya aina ya pai. -## Mikakati ya Uonyeshaji +## Mikakati ya Uoneshaji Data -Sehemu ya jukumu la mwanasayansi wa data ni kuonyesha ubora na asili ya data wanayofanya kazi nayo. Ili kufanya hivyo, mara nyingi huunda uonyeshaji wa kuvutia, au grafu, chati, na michoro, inayoonyesha vipengele tofauti vya data. Kwa njia hii, wanaweza kuonyesha kwa macho uhusiano na mapungufu ambayo vinginevyo ni vigumu kugundua. +Sehemu ya kazi ya mtaalamu wa data ni kuonyesha ubora na asili ya data wanayofanya kazi nayo. Kufanya hivi, mara nyingi huunda uoneshaji wa kuvutia, au michoro, grafu, na chati, zikionyesha nyanja tofauti za data. Kwa njia hii, wanaweza kuonyesha kwa macho uhusiano na mapengo ambayo vinginevyo ni vigumu kugundua. -[![ML kwa wanaoanza - Jinsi ya Kuonyesha Data kwa Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML kwa wanaoanza - Jinsi ya Kuonyesha Data kwa Matplotlib") +[![ML kwa wakijifunza - Jinsi ya Kuonesha Data kwa Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML kwa wakijifunza - Jinsi ya Kuonesha Data kwa Matplotlib") -> 🎥 Bofya picha hapo juu kwa video fupi inayofanya kazi ya kuonyesha data kwa somo hili. +> 🎥 Bonyeza picha hapo juu kwa video fupi ya kuonyesha jinsi ya kuonesha data kwa somo hili. -Uonyeshaji pia unaweza kusaidia kuamua mbinu ya kujifunza kwa mashine inayofaa zaidi kwa data. Scatterplot inayofuata mstari, kwa mfano, inaonyesha kuwa data ni mgombea mzuri kwa zoezi la regression ya mstari. +Uoneshaji pia unaweza kusaidia kubainisha mbinu ya kujifunza mashine inayofaa zaidi kwa ajili ya data. Grosari ya pointi inayoonekana kufuata mstari, kwa mfano, inaonyesha kuwa data ni mzuri kwa mtihani wa regresheni ya mistari. -Maktaba moja ya uonyeshaji wa data inayofanya kazi vizuri katika daftari za Jupyter ni [Matplotlib](https://matplotlib.org/) (ambayo pia uliiona katika somo la awali). +Maktaba moja ya uoneshaji data ambayo inafanya kazi vizuri katika vitabu vya Jupyter ni [Matplotlib](https://matplotlib.org/) (ambayo pia uliiona katika somo lililopita). -> Pata uzoefu zaidi na uonyeshaji wa data katika [mafunzo haya](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Pata uzoefu zaidi wa uoneshaji data katika [mafunzo haya](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Zoezi - jaribu Matplotlib +## Zoefaa - jaribu Matplotlib -Jaribu kuunda grafu za msingi kuonyesha dataframe mpya uliyoijenga. Grafu ya mstari wa msingi ingeonyesha nini? +Jaribu kuunda michoro ya msingi kuonyesha dataframe mpya uliyounda. Mchoro wa mstari wa msingi utaonyesha nini? 1. Ingiza Matplotlib juu ya faili, chini ya uingizaji wa Pandas: @@ -164,8 +164,8 @@ Jaribu kuunda grafu za msingi kuonyesha dataframe mpya uliyoijenga. Grafu ya mst import matplotlib.pyplot as plt ``` -1. Rerun daftari lote ili kusasisha. -1. Mwisho wa daftari, ongeza seli kuonyesha data kama sanduku: +1. Runia tena kitabu chote kwa ajili ya kufufua. +1. Chini ya kitabu, ongeza seli kuonyesha data kama sanduku: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Jaribu kuunda grafu za msingi kuonyesha dataframe mpya uliyoijenga. Grafu ya mst plt.show() ``` - ![Scatterplot inayoonyesha uhusiano wa bei na mwezi](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Grosari ya pointi inaonyesha uhusiano wa bei kwa mwezi](../../../../translated_images/sw/scatterplot.b6868f44cbd2051c.webp) - Je, grafu hii ni ya manufaa? Je, kuna kitu kinachokushangaza kuhusu grafu hii? + Je, ni mchoro wenye maana? Kuna kitu chochote kinachokushangaza kuhusu? - Haifai sana kwani inachofanya ni kuonyesha data yako kama mchanganyiko wa pointi katika mwezi fulani. + Haufaidiki sana kwa kuwa huchapisha data yako kama pointi zilizotawanyika katika mwezi fulani. -### Ifanye iwe ya manufaa +### Ifanye iwe na maana -Ili grafu zionyeshe data ya manufaa, kwa kawaida unahitaji kuunda vikundi vya data kwa namna fulani. Hebu jaribu kuunda grafu ambapo mhimili wa y unaonyesha miezi na data inaonyesha usambazaji wa data. +Ili kupata chati zinazoshughulikia data muhimu, kawaida unahitaji kuunganya data kwa namna fulani. Tujaribu kuunda mchoro ambapo mhimili wa y unaonyesha miezi na data inaonesha usambazaji wa data. -1. Ongeza seli kuunda grafu ya vikundi vya bar: +1. Ongeza seli kuunda chati ya bawa iliyounganishwa: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Grafu ya bar inayoonyesha uhusiano wa bei na mwezi](../../../../2-Regression/2-Data/images/barchart.png) + ![Chati ya bawa inaonyesha uhusiano wa bei kwa mwezi](../../../../translated_images/sw/barchart.a833ea9194346d76.webp) + + Hii ni uoneshaji wa data wenye maana zaidi! Inaonekana kuonyesha kuwa bei ya juu ya malenge hutokea Septemba na Oktoba. Je, hii inakidhi matarajio yako? Sababu ni gani au la? + +## Zoefaa - jaribu Seaborn + +Matplotlib ni yenye nguvu, lakini inaweza kuhitaji msimbo mwingi kufanya chati nzuri. [Seaborn](https://seaborn.pydata.org/) ni maktaba iliyojengwa _juu ya_ Matplotlib iliyoundwa kwa uoneshaji wa takwimu za data. Inafanya kazi moja kwa moja na dataframes za Pandas, inatumia mitindo ya kupendeza ya chaguo, na inakuwezesha kuunda michoro ya taarifa kwa msimbo mdogo zaidi. Kwa sababu Seaborn hurudisha vitu vya Matplotlib, bado unaweza kutumia kila kitu unachojua kuhusu Matplotlib kuboresha matokeo. + +> Ikiwa bado huna Seaborn imewekwa, voila na `pip install seaborn`. + +1. Ingiza Seaborn juu ya kitabu, chini ya uingizaji mwingine. Kwa kawaida huingizwa kama `sns`: + + ```python + import seaborn as sns + ``` + +### Michoro ya pointi kuonyesha uhusiano + +Sehemu kubwa ya kuchunguza data kabla ya kujenga mfano ni kutafuta _uhusiano_ kati ya vigezo. [mchoro wa mkusanyiko wa pointi](https://en.wikipedia.org/wiki/Scatter_plot) ni chombo mojawapo bora kwa hili: kama pointi zinaonekana kufuata mstari, vigezo viwili vinaweza kuwa na uhusiano, jambo zuri la kuonyesha kuwa mfano wa regresheni ya mstari unaweza kufanya kazi. + +1. Tengeneza upya mchoro wa bei kwa mwezi wa pointi uliofanya awali, huku kwa kutumia [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) ya Seaborn (mchoro wa uhusiano), ambayo hufanya kazi moja kwa moja na safu za dataframe yako: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Mchoro wa mkusanyiko wa pointi wa Seaborn unaonyesha uhusiano wa bei kwa mwezi](../../../../translated_images/sw/relplot.a03837d8f0329cec.webp) + + Unaona jinsi unavyopitisha _majina ya safu_ na dataframe, na Seaborn hutunza lebo za mhimili kwa niaba yako. + +2. Unaweza kubadili kuwa mchoro wa mstari kwa kupitisha `kind="line"`. Seaborn pia huteka bendi yenye kivuli kuonyesha kiwango cha kujiamini karibu na mstari huo: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Mchoro wa mstari wa Seaborn unaonyesha uhusiano wa bei kwa mwezi](../../../../translated_images/sw/lineplot.f9034ba47b1e30ee.webp) + + Hili data ni zenye kelele nyingi, hivyo mchoro wa mstari si chaguo bora hapa — lakini linaonyesha urahisi wa kubadilisha aina za chati katika Seaborn. + +### Chati za bawa kuonyesha usambazaji + + +Hapo awali ulipanga data kwa mkono kuunda chati ya mawimbi kwa kutumia Matplotlib. Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kina chati cha makundi) inaweza kufanya upangaji na muhtasari kwa niaba yako. Kwa kawaida `kind="bar"` inaonyesha wastani wa kila kundi pamoja na mstari mweusi unaoashiria kikomo cha kujiamini. + +1. Tengeneza chati ya mawimbi ya wastani wa bei kwa kila mwezi: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Chati ya mabawaba ya Seaborn inaonyesha usambazaji wa bei kwa kila mwezi](../../../../translated_images/sw/catplot.e73fc35fdf96242b.webp) + + Hii inathibitisha kile ulichoona na Matplotlib — bei huongezeka karibu na Septemba na Oktoba — lakini Seaborn pia inaonyesha jinsi bei _inavyotofautiana_ ndani ya kila mwezi. + +### Ramani za joto kuonyesha uhusiano + +Chati za alama hulinganisha vigezo viwili kwa wakati mmoja. Unapokuwa na safu kadhaa za nambari, [ramani ya joto](https://en.wikipedia.org/wiki/Heat_map) hukuwezesha kuona nguvu ya uhusiano kati ya jozi _kila_ la safu kwa wakati mmoja. Hii ni njia ya kawaida ya kugundua vipengele vilivyohusiana zaidi kabla ya kuchagua ni ipi yaingizwe kwenye modeli (na aina hiyo hiyo ya chati hutumika baadaye kuonyesha matrisi za mchanganyiko katika aina). + +1. Tengeneza matriki ya uhusiano kwa kutumia Pandas, kisha chora kwa kutumia Seaborn's [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Chaguo la `annot=True` linaandika thamani za uhusiano kila seli: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![Ramani ya joto ya Seaborn inaonyesha uhusiano kati ya safu za nambari](../../../../translated_images/sw/heatmap.bd98dce43b404c57.webp) + + Thamani karibu na `1` (au `-1`) zinamaanisha safu za nambari zina uhusiano _mwenye mstari_ mkali. Angalia jinsi `Bei ya Chini` na `Bei ya Juu` zinavyohusiana karibu kabisa. `Mwezi`, kwa upande mwingine, unaonyesha uhusiano wa mstari dhaifu na bei — ingawa chati ya mabawaba hapo juu ilionyesha kilele cha msimu wazi Septemba na Oktoba. Hiyo ni somo muhimu: mlinganyo wa uhusiano hupima tu uhusiano wa mstari mwelekeo moja, hivyo unaweza kupoteza mifumo ya msimu au mingine isiyo ya mstari. ✅ Ni kwa nini ni muhimu kuangalia ramani ya joto *na* chati kama chati ya mabawaba kabla ya kuamua ni safu gani zitumike? + +### Matplotlib au Seaborn? + +Maktaba zote mbili zinapaswa kujulikana: + +- **Matplotlib** inakupa udhibiti wa kina juu ya kila kipengele cha chati na ni msingi wa karibu kila maktaba nyingine za kuchora Python. +- **Seaborn** hutoa kazi za ngazi ya juu na mipangilio ya kuvutia kwa chati za takwimu, hufanya kazi moja kwa moja na dataframes, na mara nyingi ni haraka zaidi kwa uchambuzi wa data wa uchunguzi. - Hii ni uonyeshaji wa data wa manufaa zaidi! Inaonekana kuonyesha kuwa bei ya juu zaidi ya malenge hutokea Septemba na Oktoba. Je, hilo linakubaliana na matarajio yako? Kwa nini au kwa nini siyo? +Njia ya kawaida ni kutumia Seaborn kuchunguza data kwa haraka, kisha kurudi kwa Matplotlib unapohitaji kubinafsisha maelezo. --- ## 🚀Changamoto -Chunguza aina tofauti za uonyeshaji ambazo Matplotlib inatoa. Ni aina gani zinazofaa zaidi kwa matatizo ya regression? +Chunguza aina tofauti za uonyeshaji ambazo Matplotlib na Seaborn hutoa. Ni aina gani zinafaa zaidi kwa matatizo ya mregesho? -## [Jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani baada ya mihadhara](https://ff-quizzes.netlify.app/en/ml/) -## Mapitio na Kujisomea +## Mapitio na Kujifunza Binafsi -Angalia njia nyingi za kuonyesha data. Tengeneza orodha ya maktaba mbalimbali zinazopatikana na eleza ni zipi bora kwa aina fulani za kazi, kwa mfano uonyeshaji wa 2D dhidi ya uonyeshaji wa 3D. Unagundua nini? +Angalia njia nyingi za kuonyesha data. Tengeneza orodha ya maktaba mbalimbali zilizopo na angazia ni zipi zinafaa kwa aina za kazi mbalimbali, kwa mfano uonyeshaji wa 2D dhidi ya uonyeshaji wa 3D. Je, unagundua nini? -## Kazi +## Kazi ya Nyumbani [Kuchunguza uonyeshaji](assignment.md) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/2-Regression/2-Data/solution/notebook.ipynb b/translations/sw/2-Regression/2-Data/solution/notebook.ipynb index 36f1d0a54..7128dd4e5 100644 --- a/translations/sw/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/sw/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Mrejesho wa Mstari kwa Maboga ya Zombo - Somo la 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": [ + "## Kuonyesha Picha kwa Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) imejengwa juu ya Matplotlib na hufanya kazi moja kwa moja na dataframes, na kufanya iwe haraka kuunda michoro ya takwimu ya kuvutia kwa msimbo kidogo sana.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Michoro za kuzagaza kuonyesha mahusiano\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": [ + "### Michoro ya nguzo kuonyesha mgawanyo\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**Kanusho**: \nHati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, inashauriwa kutumia huduma ya tafsiri ya kitaalamu ya binadamu. Hatutawajibika kwa maelewano mabaya au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.\n" + "### Ramani za joto kuonyesha uhusiano\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\n**Kionyozo**:\nHati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-06T13:46:25+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "sw" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sw/8-Reinforcement/1-QLearning/README.md b/translations/sw/8-Reinforcement/1-QLearning/README.md index 5bb9d4f9d..921d9d442 100644 --- a/translations/sw/8-Reinforcement/1-QLearning/README.md +++ b/translations/sw/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Utangulizi wa Kujifunza kwa Kuimarisha na Q-Learning +# Utangulizi wa Kujifunza kwa Uimarishaji na Q-Learning -![Muhtasari wa kujifunza kwa kuimarisha katika mashine ya kujifunza kwenye sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Muhtasari wa uimarishaji katika ujifunzaji wa mashine kwa sketchnote](../../../../translated_images/sw/ml-reinforcement.94024374d63348db.webp) > Sketchnote na [Tomomi Imura](https://www.twitter.com/girlie_mac) -Kujifunza kwa kuimarisha kunahusisha dhana tatu muhimu: wakala, hali fulani, na seti ya vitendo kwa kila hali. Kwa kutekeleza kitendo katika hali maalum, wakala hupewa tuzo. Fikiria tena mchezo wa kompyuta wa Super Mario. Wewe ni Mario, uko katika kiwango cha mchezo, umesimama karibu na ukingo wa mwamba. Juu yako kuna sarafu. Wewe ukiwa Mario, katika kiwango cha mchezo, katika nafasi maalum ... hiyo ndiyo hali yako. Kusonga hatua moja kulia (kitendo) kutakupeleka kwenye ukingo, na hiyo itakupa alama ya chini ya nambari. Hata hivyo, kubonyeza kitufe cha kuruka kutakufanya upate alama na utaendelea kuishi. Hilo ni jambo chanya na linapaswa kukupa alama chanya ya nambari. +Kujifunza kwa uimarishaji kunahusisha dhana muhimu tatu: wakala, baadhi ya hali, na seti ya vitendo kwa kila hali. Kwa kutekeleza kitendo katika hali iliyotajwa, wakala hupata zawadi. Tena fikiria mchezo wa kompyuta Super Mario. Wewe ni Mario, uko kwenye kiwango cha mchezo, unasimama karibu na kingo ya mto. Juu yako kuna sarafu. Wewe ukiwa Mario, katika kiwango cha mchezo, katika nafasi maalum ... hiyo ni hali yako. Kusonga hatua moja kulia (kitendo) kutakupeleka juu ya kingo, na hiyo itakupatia alama ya chini ya nambari. Hata hivyo, kubonyeza kitufe cha kuruka kungekupa alama na ungebaki hai. Hiyo ni matokeo mazuri na inapaswa kukupatia alama nzuri za nambari. -Kwa kutumia kujifunza kwa kuimarisha na simulator (mchezo), unaweza kujifunza jinsi ya kucheza mchezo ili kuongeza tuzo ambayo ni kuishi na kupata alama nyingi iwezekanavyo. +Kwa kutumia kujifunza kwa uimarishaji na kielelezo (mchezo), unaweza kujifunza jinsi ya kucheza mchezo ili kuongeza zawadi ambayo ni kubaki hai na kupata alama nyingi iwezekanavyo. -[![Utangulizi wa Kujifunza kwa Kuimarisha](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Utangulizi wa Kujifunza kwa Uimarishaji](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Bonyeza picha hapo juu kusikiliza Dmitry akijadili Kujifunza kwa Kuimarisha +> 🎥 Bofya picha hapo juu kusikiliza Dmitry akijadili Kujifunza kwa Uimarishaji -## [Jaribio la awali la somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani wa kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) -## Mahitaji na Usanidi +## Masharti ya awali na Usanidi -Katika somo hili, tutajaribu baadhi ya msimbo kwa kutumia Python. Unapaswa kuwa na uwezo wa kuendesha msimbo wa Jupyter Notebook kutoka somo hili, ama kwenye kompyuta yako au mahali fulani mtandaoni. +Katika somo hili, tutajaribu baadhi ya msimbo wa Python. Unapaswa kuwa na uwezo wa kuendesha msimbo wa Jupyter Notebook kutoka somo hili, iwe kwenye kompyuta yako au mahali fulani kwenye wingu. -Unaweza kufungua [notebook ya somo](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) na kupitia somo hili ili kujifunza. +Unaweza kufungua [daftari la somo](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) na kupitia somo hili kujifunza. -> **Note:** Ikiwa unafungua msimbo huu kutoka mtandaoni, unahitaji pia kupata faili [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ambayo inatumika katika msimbo wa notebook. Ongeza faili hiyo kwenye saraka sawa na notebook. +> **Kumbuka:** Ikiwa unafungua msimbo huu kutoka kwenye wingu, pia unahitaji kupakua faili la [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ambalo linatumika kwenye msimbo wa daftari. Liaweke kwenye saraka ile ile kama daftari. ## Utangulizi -Katika somo hili, tutachunguza ulimwengu wa **[Peter na Mbwa Mwitu](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, uliochochewa na hadithi ya muziki ya mtunzi wa Kirusi, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Tutatumia **Kujifunza kwa Kuimarisha** kumruhusu Peter kuchunguza mazingira yake, kukusanya matufaha matamu na kuepuka kukutana na mbwa mwitu. +Katika somo hili, tutachunguza dunia ya **[Peter na Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, iliyohamasishwa na hadithi ya muziki na mtunzi kutoka Urusi, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Tutatumia **Kujifunza kwa Uimarishaji** kumruhusu Peter kuchunguza mazingira yake, kukusanya tufaha tamu na kuepuka kukutana na mbwa mwitu. -**Kujifunza kwa Kuimarisha** (RL) ni mbinu ya kujifunza inayoturuhusu kujifunza tabia bora ya **wakala** katika **mazingira** fulani kwa kufanya majaribio mengi. Wakala katika mazingira haya anapaswa kuwa na **lengo**, lililofafanuliwa na **kazi ya tuzo**. +**Kujifunza kwa Uimarishaji** (RL) ni mbinu ya kujifunza inayoturuhusu kujifunza tabia bora ya **wakala** katika **mazingira** fulani kwa kufanya majaribio mengi. Wakala katika mazingira haya anapaswa kuwa na **lengo**, linaloelezwa na **kazi ya zawadi**. ## Mazingira -Kwa urahisi, hebu tuchukulie ulimwengu wa Peter kuwa ubao wa mraba wa ukubwa `width` x `height`, kama hivi: +Kwa urahisi, tuchukulie dunia ya Peter kuwa safu ya mstatili yenye ukubwa wa `width` x `height`, kama hii: -![Mazingira ya Peter](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Mazingiari ya Peter](../../../../translated_images/sw/environment.40ba3cb66256c93f.webp) -Kila seli katika ubao huu inaweza kuwa: +Kila kisanduku kwenye bamba hili linaweza kuwa: -* **ardhi**, ambapo Peter na viumbe wengine wanaweza kutembea. -* **maji**, ambapo huwezi kutembea. -* **mti** au **nyasi**, mahali ambapo unaweza kupumzika. -* **tufaha**, ambalo linawakilisha kitu ambacho Peter angefurahia kukipata ili kujilisha. +* **ardhi**, ambayo Peter na viumbe wengine wanaweza kutembea juu yake. +* **maji**, ambayo wazi hutaweza kutembea juu yake. +* **mti** au **nyasi**, mahali pa kupumzika. +* **tufaha**, kinachowakilisha kitu ambacho Peter atafurahia kupata ili kujilisha. * **mbwa mwitu**, ambaye ni hatari na anapaswa kuepukwa. -Kuna moduli ya Python tofauti, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ambayo ina msimbo wa kufanya kazi na mazingira haya. Kwa sababu msimbo huu si muhimu kwa kuelewa dhana zetu, tutaleta moduli hiyo na kuitumia kuunda ubao wa mfano (msimbo wa block 1): +Kuna moduli tofauti ya Python, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ambayo ina msimbo wa kufanya kazi na mazingira haya. Kwa kuwa msimbo huu hauhitaji kueleweka kwa dhana zetu, tutaleta moduli hii na kuitumia kutengeneza bamba la mfano (kifungu cha msimbo 1): ```python from rlboard import * @@ -56,59 +56,59 @@ Msimbo huu unapaswa kuchapisha picha ya mazingira yanayofanana na ile hapo juu. ## Vitendo na sera -Katika mfano wetu, lengo la Peter litakuwa kupata tufaha, huku akiepuka mbwa mwitu na vikwazo vingine. Ili kufanya hivyo, anaweza kimsingi kutembea hadi apate tufaha. +Katika mfano wetu, lengo la Peter litakuwa kupata tufaha, huku akiiepuka mbwa mwitu na vikwazo vingine. Kwa kufanya hivyo, anaweza kutembea hadi apate tufaha. -Kwa hivyo, katika nafasi yoyote, anaweza kuchagua kati ya mojawapo ya vitendo vifuatavyo: juu, chini, kushoto na kulia. +Kwa hivyo, katika nafasi yoyote, anaweza kuchagua moja ya vitendo vifuatavyo: juu, chini, kushoto na kulia. -Tutafafanua vitendo hivyo kama kamusi, na kuviunganisha na jozi za mabadiliko ya kuratibu yanayolingana. Kwa mfano, kusonga kulia (`R`) kungefanana na jozi `(1,0)`. (msimbo wa block 2): +Tutafafanua vitendo hivyo kama kamusi, na kuviweka kwenye mabadiliko ya viwango vinavyohusiana. Kwa mfano, kusogea kulia (`R`) kutafanana na jozi `(1,0)`. (kifungu cha msimbo 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()) } ``` -Kwa muhtasari, mkakati na lengo la hali hii ni kama ifuatavyo: +Kuhitimisha, mkakati na lengo la sinia hii ni kama ifuatavyo: -- **Mkakati**, wa wakala wetu (Peter) unafafanuliwa na kinachoitwa **sera**. Sera ni kazi inayorejesha kitendo katika hali yoyote iliyotolewa. Katika kesi yetu, hali ya tatizo inawakilishwa na ubao, ikiwa ni pamoja na nafasi ya sasa ya mchezaji. +- **Mkakati**, wa wakala wetu (Peter) unafafanuliwa na kinachoitwa **sera**. Sera ni kazi inayorejesha kitendo katika hali yoyote iliyotolewa. Katika kesi yetu, hali ya tatizo inaonyeshwa na bamba, ikiwa ni pamoja na nafasi ya sasa ya mchezaji. -- **Lengo**, la kujifunza kwa kuimarisha ni hatimaye kujifunza sera nzuri ambayo itaturuhusu kutatua tatizo kwa ufanisi. Hata hivyo, kama msingi, hebu tuchukulie sera rahisi inayoitwa **kutembea bila mpangilio**. +- **Lengo**, la kujifunza kwa uimarishaji ni hatimaye kujifunza sera nzuri itakayoruhusu kutatua tatizo kwa ufanisi. Hata hivyo, kama msingi, tuchukulie sera rahisi kabisa inayoitwa **kutembea kwa nasibu**. -## Kutembea bila mpangilio +## Kutembea kwa nasibu -Hebu kwanza tutatue tatizo letu kwa kutekeleza mkakati wa kutembea bila mpangilio. Kwa kutembea bila mpangilio, tutachagua kitendo kinachofuata bila mpangilio kutoka kwa vitendo vinavyoruhusiwa, hadi tufikie tufaha (msimbo wa block 3). +Hebu kwanza tatua tatizo letu kwa kutekeleza mkakati wa kutembea kwa nasibu. Kwa kutembea kwa nasibu, tutachagua kitendo kijacho kwa bahati kutoka vitendo vinavyoruhusiwa, hadi tufikie tufaha (kifungu cha msimbo 3). -1. Tekeleza kutembea bila mpangilio kwa msimbo ulio hapa chini: +1. Tekeleza kutembea kwa nasibu kwa msimbo unaofuata: ```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 # idadi ya hatua + # weka nafasi ya mwanzo if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # mafanikio! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # kuliwa na mbwa mwitu au kuzama 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) # fanya mwelekeo halisi break n+=1 walk(m,random_policy) ``` - Simu ya `walk` inapaswa kurejesha urefu wa njia inayolingana, ambayo inaweza kutofautiana kutoka kwa mzunguko mmoja hadi mwingine. + Wito kwa `walk` unapaswa kurejesha urefu wa njia inayohusiana, ambayo inaweza kutofautiana kutoka mara moja hadi nyingine. -1. Endesha jaribio la kutembea mara kadhaa (sema, 100), na uchapishe takwimu zinazotokana (msimbo wa block 4): +1. Endesha jaribio la kutembea mara kadhaa (tuseme, 100), na chapisha takwimu zinazotokana (kifungu cha msimbo 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Hebu kwanza tutatue tatizo letu kwa kutekeleza mkakati wa kutembea bila mpangili print_statistics(random_policy) ``` - Kumbuka kuwa urefu wa wastani wa njia ni karibu hatua 30-40, ambayo ni nyingi, ikizingatiwa kwamba umbali wa wastani hadi tufaha lililo karibu ni karibu hatua 5-6. + Kumbuka kuwa urefu wa wastani wa njia ni hatua 30-40, ambayo ni mengi, ikizingatiwa kwamba umbali wa wastani hadi tufaha ulio karibu ni hatua 5-6. - Unaweza pia kuona jinsi Peter anavyosonga wakati wa kutembea bila mpangilio: + Pia unaweza kuona muonekano wa mwendo wa Peter wakati wa kutembea kwa nasibu: - ![Kutembea bila mpangilio kwa Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Kutembea kwa Nasibu kwa Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## Kazi ya tuzo +## Kazi ya zawadi -Ili kufanya sera yetu iwe na akili zaidi, tunahitaji kuelewa ni hatua zipi ni "bora" kuliko nyingine. Ili kufanya hivyo, tunahitaji kufafanua lengo letu. +Ili kufanya sera yetu kuwa na akili zaidi, tunahitaji kuelewa ni ngapi hatua ni "bora" kuliko nyingine. Kufanya hivyo, tunahitaji kufafanua lengo letu. -Lengo linaweza kufafanuliwa kwa maneno ya **kazi ya tuzo**, ambayo itarejesha thamani fulani ya alama kwa kila hali. Kadri nambari inavyokuwa juu, ndivyo kazi ya tuzo inavyokuwa bora. (msimbo wa block 5) +Lengo linaweza kufafanuliwa kwa matumizi ya **kazi ya zawadi**, ambayo itarejesha baadhi ya alama kwa kila hali. Idadi kubwa ya nambari, ni kazi bora ya zawadi. (kifungu cha msimbo 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Jambo la kuvutia kuhusu kazi za tuzo ni kwamba katika hali nyingi, *tunapewa tuzo kubwa mwishoni mwa mchezo tu*. Hii inamaanisha kuwa algoriti yetu inapaswa kwa namna fulani kukumbuka hatua "nzuri" zinazopelekea tuzo chanya mwishoni, na kuongeza umuhimu wake. Vivyo hivyo, hatua zote zinazopelekea matokeo mabaya zinapaswa kupunguzwa. +Jambo la kuvutia kuhusu kazi za zawadi ni kwamba katika kesi nyingi, *tunapewa tu zawadi kubwa mwishoni mwa mchezo*. Hii inamaanisha kuwa algoriti yetu inapaswa kukumbuka "hatua nzuri" zinazosababisha zawadi nzuri mwishoni, na kuongeza umuhimu wake. Vivyo hivyo, hatua zote zinazotuletea matokeo mabaya zinapaswa kuzuiwa. ## Q-Learning -Algoriti ambayo tutajadili hapa inaitwa **Q-Learning**. Katika algoriti hii, sera inafafanuliwa na kazi (au muundo wa data) inayoitwa **Q-Table**. Inarekodi "ubora" wa kila kitendo katika hali fulani. +Algoriti tutakayojadili hapa inaitwa **Q-Learning**. Katika algoriti hii, sera inafafanuliwa na kazi (au muundo wa data) unaoitwa **Meza ya Q**. Inarekodi "ubora" wa kila kitendo katika hali fulani. -Inaitwa Q-Table kwa sababu mara nyingi ni rahisi kuiwakilisha kama jedwali, au safu ya vipimo vingi. Kwa kuwa ubao wetu una vipimo `width` x `height`, tunaweza kuwakilisha Q-Table kwa kutumia safu ya numpy yenye umbo `width` x `height` x `len(actions)`: (msimbo wa block 6) +Inaitwa Meza ya Q kwa sababu mara nyingi ni rahisi kuionyesha kama meza, au safu nyingi za vipimo. Tukiwa na bamba lenye vipimo `width` x `height`, tunaweza kuwakilisha Meza ya Q kwa kutumia numpy array yenye sura `width` x `height` x `len(actions)`: (kifungu cha msimbo 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Kumbuka kuwa tunaanzisha maadili yote ya Q-Table na thamani sawa, katika kesi yetu - 0.25. Hii inafanana na sera ya "kutembea bila mpangilio", kwa sababu hatua zote katika kila hali ni sawa. Tunaweza kupitisha Q-Table kwa kazi ya `plot` ili kuonyesha jedwali kwenye ubao: `m.plot(Q)`. +Tazama kuwa tunaanzisha thamani zote za Meza ya Q kwa thamani sawa, katika kesi yetu - 0.25. Hii inahusiana na sera ya "kutembea kwa nasibu", kwa sababu hatua zote katika kila hali ni sawa. Tunaweza kuipasa Meza ya Q kwa kazi ya `plot` ili kukuonyesha meza kwenye bamba: `m.plot(Q)`. -![Mazingira ya Peter](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Mazingira ya Peter](../../../../translated_images/sw/env_init.04e8f26d2d60089e.webp) -Katikati ya kila seli kuna "mshale" unaoonyesha mwelekeo unaopendelewa wa harakati. Kwa kuwa mwelekeo wote ni sawa, nukta inaonyeshwa. +Katikati ya kila kisanduku kuna "mshale" unaoashiria mwelekeo unaopendelea wa mwendo. Kwa kuwa mwelekeo yote ni sawa, alama ya doa inaonyeshwa. -Sasa tunahitaji kuendesha simulizi, kuchunguza mazingira yetu, na kujifunza usambazaji bora wa maadili ya Q-Table, ambayo yataturuhusu kupata njia ya kufikia tufaha haraka zaidi. +Sasa tunahitaji kuendesha maonyesho, kuchunguza mazingira yetu, na kujifunza sehemu bora ya thamani za Meza ya Q, ambazo zitaturuhusu kupata njia hadi tufaha haraka zaidi. -## Kiini cha Q-Learning: Mlinganyo wa Bellman +## Muhtasari wa Q-Learning: Mlinganyo wa Bellman -Mara tu tunapoanza kusonga, kila kitendo kitakuwa na tuzo inayolingana, yaani tunaweza kinadharia kuchagua kitendo kinachofuata kulingana na tuzo ya haraka zaidi. Hata hivyo, katika hali nyingi, hatua hiyo haitafanikisha lengo letu la kufikia tufaha, na hivyo hatuwezi kuamua mara moja ni mwelekeo gani ni bora. +Mara tu tunapoanza kusonga, kila kitendo kitaambatana na zawadi inayojitokeza mara moja, yaani tunaweza kuchagua kitendo kijacho kulingana na zawadi ya haraka zaidi. Hata hivyo, katika hali nyingi, hatua itashindwa kufanikisha lengo letu la kufikia tufaha, hivyo hatuwezi kuamua mara moja mwelekeo gani ni bora. -> Kumbuka kuwa si matokeo ya haraka yanayojalisha, bali ni matokeo ya mwisho, ambayo tutapata mwishoni mwa simulizi. +> Kumbuka kuwa si matokeo ya mara moja yanayohesabiwa, bali matokeo ya mwisho, ambayo tutayapata mwishoni mwa maonyesho. -Ili kuzingatia tuzo hii ya kuchelewa, tunahitaji kutumia kanuni za **[programu ya nguvu](https://en.wikipedia.org/wiki/Dynamic_programming)**, ambayo inaturuhusu kufikiria tatizo letu kwa njia ya kurudia. +Ili kuzingatia zawadi hii ya kuchelewa, tunahitaji kutumia kanuni za **[programu ya mabadiliko](https://en.wikipedia.org/wiki/Dynamic_programming)**, ambazo zinatuwezesha kufikiria tatizo letu kwa mzunguko. -Tuseme sasa tuko katika hali *s*, na tunataka kusonga hadi hali inayofuata *s'*. Kwa kufanya hivyo, tutapokea tuzo ya haraka *r(s,a)*, iliyofafanuliwa na kazi ya tuzo, pamoja na tuzo fulani ya baadaye. Ikiwa tunadhani kwamba Q-Table yetu inaonyesha kwa usahihi "uvutaji" wa kila kitendo, basi katika hali *s'* tutachagua kitendo *a* kinacholingana na thamani ya juu zaidi ya *Q(s',a')*. Kwa hivyo, tuzo bora zaidi ya baadaye ambayo tunaweza kupata katika hali *s* itafafanuliwa kama `max` +Fikiria kuwa sasa tuko katika hali *s*, na tunataka kusonga hadi hali inayofuata *s'*. Kwa kufanya hivyo, tutapokea zawadi ya mara moja *r(s,a)*, inayofafanuliwa na kazi ya zawadi, pamoja na zawadi ya baadaye. Ikiwa tunadhani kuwa Meza yetu ya Q inaonyesha vyema "mvuto" wa kitendo chochote, basi katika hali *s'* tutachagua kitendo *a* kinacholingana na thamani kubwa zaidi ya *Q(s',a')*. hivyo, zawadi bora zaidi ya baadaye ambayo tunaweza kupata katika hali *s* itafafanuliwa kama `max`a'*Q(s',a')* (kinachotumiwa hapa ni thamani kubwa zaidi kati ya vitendo vyote vinavyowezekana *a'* katika hali *s'*). + +Huu ndio **mlinganyo wa Bellman** kwa kuhesabu thamani ya Meza ya Q katika hali *s*, ikizingatiwa kitendo *a*: + + + +Hapa γ ni kinachoitwa **kipimo cha punguzo** kinachobainisha kiwango ambacho unapaswa kupendelea zawadi ya sasa kuliko zawadi ya baadaye na kinyume chake. + +## Algoriti ya Kujifunza + +Kutokana na mlinganyo hapo juu, sasa tunaweza kuandika pseudokodi kwa algoriti yetu ya kujifunza: + +* Anzisha Meza ya Q na nambari sawa kwa kila hali na kitendo +* Weka kiwango cha kujifunza α ← 1 +* Rudia maonyesho mara nyingi + 1. Anza katika nafasi ya nasibu + 1. Rudia + 1. Chagua kitendo *a* katika hali *s* + 2. Tekeleza kitendo kwa kusonga hadi hali mpya *s'* + 3. Ikiwa tukutana na hali ya mwisho wa mchezo, au jumla ya zawadi ni ndogo sana - toka maonyeshoni + 4. Hesabu zawadi *r* katika hali mpya + 5. Sasisha Kazi ya Q kulingana na mlinganyo wa Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Sasisha jumla ya zawadi na punguza α. + +## Kutumia vs. kuchunguza + +Katika algoriti hapo juu, hatukufafanua jinsi ilivyo kamili unapaswa kuchagua kitendo katika hatua 2.1. Ikiwa tunachagua kitendo kwa bahati, tutachunguza mazingira kwa bahati, na pia kuna uwezekano mkubwa wa kufa mara nyingi na kuchunguza maeneo ambayo kawaida hatutapita. Njia mbadala itakuwa kutumia thamani za Meza ya Q ambazo tayari tunazijua, na hivyo kuchagua kitendo bora (chenye thamani kubwa ya Meza ya Q) katika hali *s*. Hata hivyo, hii itakuzuia kuchunguza hali nyingine, na kuna uwezekano usipate suluhisho bora kabisa. + +Hivyo, njia bora ni kupata usawa kati ya kuchunguza na kutumia. Hii inaweza kufanyika kwa kuchagua kitendo katika hali *s* kwa uwezekano unaolingana na thamani zilizoko katika Meza ya Q. Mwanzo, thamani za Meza ya Q zikiwa sawa zote, itakuwa sawa na uchaguzi wa nasibu, lakini tunapojifunza zaidi kuhusu mazingira yetu, tuna uwezekano mkubwa zaidi wa kufuata njia bora huku tukiruhusu wakala kuchagua njia ambayo haijachunguzwa mara kwa mara. + +## Utekelezaji wa Python + +Sasa tuko tayari kutekeleza algoriti ya kujifunza. Kabla ya kufanya hivyo, tunahitaji pia kazi inayobadilisha nambari zozote katika Meza ya Q kuwa sehemu za uwezekano kwa vitendo vinavyolingana. + +1. Tengeneza kazi `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Tunaongeza `eps` chache kwenye vector ya awali ili kuepuka kugawanya kwa 0 katika kesi ya awali, wakati vipengele vyote vya vector ni sawa. + +Endesha algoriti ya kujifunza kupitia majaribio 5000, pia yanayoitwa **epocha**: (kifungu cha msimbo 8) +```python + for epoch in range(5000): + + # Chagua sehemu ya awali + m.random_start() + + # Anza kusafiri + 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) # tunaruhusu mchezaji kusogea nje ya ubao, ambayo huumaliza kipindi + 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 +``` + +Baada ya kutekeleza algoriti hii, Meza ya Q inapaswa kusasishwa na thamani zinazofafanua mvuto wa vitendo tofauti katika kila hatua. Tunaweza kujaribu kuonyesha Meza ya Q kwa kuchora vector katika kila kisanduku inayoelekeza mwelekeo unaotakiwa wa mwendo. Kwa urahisi, tunachora duara ndogo badala ya kichwa cha mshale. + + ## Kukagua sera -Kwa kuwa Q-Table inaorodhesha "mvuto" wa kila kitendo katika kila hali, ni rahisi kuitumia kufafanua urambazaji bora katika ulimwengu wetu. Katika hali rahisi, tunaweza kuchagua kitendo kinacholingana na thamani ya juu zaidi ya Q-Table: (code block 9) +Kwa kuwa Meza ya Q inaorodhesha "mvuto" wa kitendo chochote katika kila hali, ni rahisi kuitumia kufafanua njia bora ya kuvinjari katika dunia yetu. Katika kesi rahisi, tunaweza kuchagua kitendo kinacholingana na thamani kubwa zaidi ya Meza ya Q: (kifungu cha msimbo 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Ukijaribu msimbo hapo juu mara kadhaa, unaweza kugundua kuwa wakati mwingine "inakwamia", na unahitaji kubonyeza kitufe cha STOP kwenye daftari ili kuisimamisha. Hii hutokea kwa sababu kunaweza kuwa na hali ambapo hali mbili "zinaelekeza" kwa kila moja kwa mujibu wa thamani bora ya Q-Value, ambapo wakala huishia kusonga kati ya hali hizo bila kikomo. + +> Ikiwa uta jaribu nambari hapo juu mara kadhaa, unaweza kugundua kwamba mara nyingine "inakwama", na unahitaji kubonyeza kitufe cha STOP kwenye daftari kuizuia. Hii hutokea kwa sababu kunaweza kuwa na hali ambazo hali mbili "zinatumia ishara" kati yao kulingana na thamani bora ya Q-Value, ambapo wakala hukaa akiendelea kusogea kati ya hali hizo wasio na kikomo. ## 🚀Changamoto -> **Kazi ya 1:** Badilisha kazi ya `walk` ili kupunguza urefu wa njia kwa idadi fulani ya hatua (sema, 100), na angalia msimbo hapo juu ukirudisha thamani hii mara kwa mara. +> **Kazi 1:** Badilisha kazi ya `walk` ili kuzuia urefu wa njia hadi hatua fulani (semka, 100), na angalia nambari hapo juu kurudisha thamani hii mara kwa mara. -> **Kazi ya 2:** Badilisha kazi ya `walk` ili isirudi kwenye maeneo ambayo tayari imekuwa hapo awali. Hii itazuia `walk` kurudia, hata hivyo, wakala bado anaweza kujikuta "amekwama" mahali ambapo hawezi kutoroka. +> **Kazi 2:** Badilisha kazi ya `walk` ili isirudi kwenye maeneo ambayo tayari imeshawahi kwenda hapo awali. Hii itazuia `walk` kuzunguka zunguka, lakini, wakala bado anaweza kuishia "kukamatwa" mahali ambapo hawezi kutoka. -## Urambazaji +## Uongozaji -Sera bora ya urambazaji itakuwa ile tuliyotumia wakati wa mafunzo, ambayo inachanganya unyonyaji na uchunguzi. Katika sera hii, tutachagua kila kitendo kwa uwezekano fulani, kulingana na thamani katika Q-Table. Mkakati huu bado unaweza kusababisha wakala kurudi kwenye nafasi ambayo tayari imechunguza, lakini, kama unavyoona kutoka kwa msimbo hapa chini, husababisha njia fupi sana kwa wastani kuelekea eneo linalotakiwa (kumbuka kuwa `print_statistics` inaendesha simulizi mara 100): (code block 10) +Sera bora ya uongozaji itakuwa ile tuliyotumia wakati wa mafunzo, inayochanganya matumizi na utafutaji. Katika sera hii, tutachagua kila kitendo kwa uwezekano fulani, kulingana na thamani kwenye Jedwali la Q. Mkakati huu bado unaweza kusababisha wakala kurudi kwenye nafasi ambayo tayari ameisafiri, lakini, kama unavyoweza kuona kutoka kwa nambari hapo chini, hutoa njia fupi sana kwa wastani kuelekea eneo linalotakiwa (kumbuka kwamba `print_statistics` inaendesha majaribio 100): (kifungu cha nambari 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Baada ya kuendesha msimbo huu, unapaswa kupata urefu wa njia ya wastani ndogo zaidi kuliko hapo awali, katika kiwango cha 3-6. +Baada ya kuendesha nambari hii, unapaswa kupata urefu wa njia wa wastani mdogo sana kuliko awali, katika kiwango cha 3-6. ## Kuchunguza mchakato wa kujifunza -Kama tulivyotaja, mchakato wa kujifunza ni usawa kati ya uchunguzi na unyonyaji wa maarifa yaliyopatikana kuhusu muundo wa nafasi ya tatizo. Tumeona kuwa matokeo ya kujifunza (uwezo wa kusaidia wakala kupata njia fupi kuelekea lengo) yameboreshwa, lakini pia ni ya kuvutia kuangalia jinsi urefu wa njia ya wastani unavyobadilika wakati wa mchakato wa kujifunza: +Kama tulivyosema, mchakato wa kujifunza ni usawa kati ya utafutaji na matumizi ya maarifa yaliyopatikana kuhusu muundo wa eneo la tatizo. Tumeona kwamba matokeo ya kujifunza (uwezo wa kusaidia wakala kupata njia fupi kuelekea lengo) yameboreshwa, lakini pia ni muhimu kuangalia jinsi urefu wa njia wa wastani unavyojibadilisha wakati wa mchakato wa kujifunza: + + -## Muhtasari wa mafunzo: +Mafunzo yanaweza kufupishwa kama: -- **Urefu wa njia ya wastani huongezeka**. Tunachokiona hapa ni kwamba mwanzoni, urefu wa njia ya wastani huongezeka. Hii labda ni kwa sababu tunapokuwa hatujui chochote kuhusu mazingira, tuna uwezekano wa kukwama katika hali mbaya, maji au mbwa mwitu. Tunapojifunza zaidi na kuanza kutumia maarifa haya, tunaweza kuchunguza mazingira kwa muda mrefu, lakini bado hatujui vizuri mahali ambapo matunda yapo. +- **Urefu wa njia wa wastani unaongezeka**. Tunachoona hapa ni kuwa mwanzoni, urefu wa njia wa wastani unaongezeka. Hii labda ni kwa sababu wakati hatujui chochote kuhusu mazingira, tuna uwezekano wa kukamata katika hali mbaya, kama maji au mbwa mwitu. Tunapoendelea kujifunza na kuanza kutumia maarifa haya, tunaweza kuchunguza mazingira kwa muda mrefu zaidi, lakini bado hatujui vizuri ambapo tufaha ziko. -- **Urefu wa njia hupungua, tunapojifunza zaidi**. Mara tu tunapojifunza vya kutosha, inakuwa rahisi kwa wakala kufikia lengo, na urefu wa njia huanza kupungua. Hata hivyo, bado tunafungua uchunguzi, kwa hivyo mara nyingi tunatoka kwenye njia bora, na kuchunguza chaguo mpya, na kufanya njia kuwa ndefu zaidi kuliko ilivyo bora. +- **Urefu wa njia unashuka, tunapoendelea kujifunza**. Mara tunapojifunza vya kutosha, inakuwa rahisi kwa wakala kufikia lengo, na urefu wa njia unaanza kushuka. Hata hivyo, bado tuko wazi kwa utafutaji, hivyo mara nyingi tunatoka kwenye njia bora, na kuchunguza chaguzi mpya, na kufanya njia kuwa ndefu zaidi kuliko ilivyopaswa. -- **Urefu huongezeka ghafla**. Tunachokiona pia kwenye grafu hii ni kwamba wakati fulani, urefu uliongezeka ghafla. Hii inaonyesha asili ya mchakato wa nasibu, na kwamba tunaweza wakati fulani "kuharibu" coefficients za Q-Table kwa kuandika upya na thamani mpya. Hii inapaswa kupunguzwa kwa kupunguza kiwango cha kujifunza (kwa mfano, kuelekea mwisho wa mafunzo, tunarekebisha thamani za Q-Table kwa kiasi kidogo). +- **Urefu unaongezeka ghafla**. Pia tunavyoona kwenye mchoro huu ni kwamba wakati fulani, urefu uliongezeka ghafla. Hii inaonyesha tabia isiyotabirika ya mchakato, na kwamba tunaweza wakati fulani "kuharibu" viwango vya Jedwali la Q kwa kuvitumia thamani mpya. Hii kwa kawaida inapaswa kupunguzwa kwa kupunguza kiwango cha kujifunza (kwa mfano, mwishoni mwa mafunzo, tunarekebisha thamani za Jedwali la Q kidogo tu). -Kwa ujumla, ni muhimu kukumbuka kuwa mafanikio na ubora wa mchakato wa kujifunza hutegemea sana vigezo, kama kiwango cha kujifunza, kupungua kwa kiwango cha kujifunza, na sababu ya punguzo. Hizi mara nyingi huitwa **vigezo vya juu**, ili kuzitofautisha na **vigezo**, ambavyo tunaboresha wakati wa mafunzo (kwa mfano, coefficients za Q-Table). Mchakato wa kutafuta thamani bora za vigezo vya juu huitwa **ubunifu wa vigezo vya juu**, na unastahili mada tofauti. +Kwa ujumla, ni muhimu kukumbuka kwamba mafanikio na ubora wa mchakato wa kujifunza hutegemea sana vigezo, kama kiwango cha kujifunza, kupungua kwa kiwango cha kujifunza, na kigezo cha punguzo. Hivi mara nyingi huitwa **vigezo vikuu**, kutofautisha na **vigezo**, ambavyo tunairekebisha wakati wa mafunzo (kwa mfano, viwango vya Jedwali la Q). Mchakato wa kutafuta thamani bora za vigezo vikuu huitwa **urekebishaji wa vigezo vikuu**, na ni mada tofauti kabisa. -## [Jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +## [Jaribio baada ya mihadhara](https://ff-quizzes.netlify.app/en/ml/) -## Kazi -[Dunia Halisi Zaidi](assignment.md) +## Kazi ya Nyumbani +[Dunia Yenye Maishazidi Hale Halisi](assignment.md) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/8-Reinforcement/2-Gym/README.md b/translations/sw/8-Reinforcement/2-Gym/README.md index 42707d534..8b21559d1 100644 --- a/translations/sw/8-Reinforcement/2-Gym/README.md +++ b/translations/sw/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ -## Mahitaji ya Awali +# Kuteleza kwa CartPole -Katika somo hili, tutatumia maktaba inayoitwa **OpenAI Gym** kuiga mazingira tofauti. Unaweza kuendesha msimbo wa somo hili kwenye kompyuta yako (mfano, kutoka Visual Studio Code), ambapo simulizi itafunguka kwenye dirisha jipya. Unapokimbia msimbo mtandaoni, huenda ukahitaji kufanya marekebisho fulani kwenye msimbo, kama ilivyoelezwa [hapa](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). +Tatizo ambalo tumekuwa tukitatua katika somo lililopita linaweza kuonekana kama tatizo la mchezo, halitumiki sana kwa hali halisi za maisha. Hii siyo kesi, kwa sababu matatizo mengi halisi pia yanashirikiana hali hii - ikiwa ni pamoja na kucheza Chess au Go. Yanafanana, kwa sababu pia tuna bodi yenye sheria zilizowekwa na **hali ya diskrete**. + +## [Jaribio kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) + +## Utangulizi + +Katika somo hili tutatumia kanuni zile zile za Q-Learning kwa tatizo lenye **hali ya kuendelea**, yaani hali inayotolewa na nambari moja au zaidi halisi. Tutashughulikia tatizo lifuatalo: + +> **Tatizo**: Ikiwa Peter anataka kutoroka mbwa mwitu, anahitaji kuweza kusogea kwa kasi zaidi. Tutaona jinsi Peter anavyoweza kujifunza kuteleza, hasa, kudumisha usawa, kwa kutumia Q-Learning. + +![Kimbilio kubwa!](../../../../translated_images/sw/escape.18862db9930337e3.webp) + +> Peter na marafiki zake wanatumia ubunifu kutoroka mbwa mwitu! Picha na [Jen Looper](https://twitter.com/jenlooper) + +Tutatumia toleo lililorahisishwa la kusawazisha linalojulikana kama tatizo la **CartPole**. Katika dunia ya cartpole, tuna slide ya usawa inayoweza kusogea kushoto au kulia, na lengo ni kusawazisha nguzo wima juu ya slide. + +a cartpole + +## Mahitaji ya awali + +Katika somo hili, tutatumia maktaba inayoitwa **OpenAI Gym** kuiga **mazingira** tofauti. Unaweza kuendesha msimbo wa somo hili ndani ya kompyuta (mfano kutoka Visual Studio Code), ambapo mizunguko itaonekana kwenye dirisha jipya. Unapochukua msimbo mtandaoni, unaweza kuhitaji kufanya marekebisho kidogo kwenye msimbo, kama ilivyoelezwa [hapa](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). ## OpenAI Gym -Katika somo lililopita, sheria za mchezo na hali zilikuwa zimetolewa na darasa la `Board` ambalo tulilifafanua sisi wenyewe. Hapa tutatumia mazingira maalum ya **simulizi**, ambayo yataiga fizikia ya fimbo inayosawazishwa. Mojawapo ya mazingira maarufu ya simulizi kwa mafunzo ya algoriti za kujifunza kwa kuimarisha inaitwa [Gym](https://gym.openai.com/), ambayo inadumishwa na [OpenAI](https://openai.com/). Kwa kutumia Gym hii tunaweza kuunda mazingira tofauti kutoka simulizi ya CartPole hadi michezo ya Atari. +Katika somo lililopita, sheria za mchezo na hali zilielezwa na darasa la `Board` tulilolifafanua wenyewe. Hapa tutatumia **mazingira ya kuiga** maalum, ambayo itaiga fizikia nyuma ya nguzo inayobadilika. Moja ya mazingira maarufu kwa mafunzo ya algoriti za kujifunza kwa nguvu inayoitwa [Gym](https://gym.openai.com/), inayoendeshwa na [OpenAI](https://openai.com/). Kwa kutumia gym hii tunaweza kuunda **mazingira** tofauti kutoka kwa kuiga cartpole hadi michezo ya Atari. -> **Note**: Unaweza kuona mazingira mengine yanayopatikana kutoka OpenAI Gym [hapa](https://gym.openai.com/envs/#classic_control). +> **Kumbuka**: Unaweza kuona mazingira mengine yanayopatikana kutoka OpenAI Gym [hapa](https://gym.openai.com/envs/#classic_control). -Kwanza, wacha tusakinishe Gym na kuingiza maktaba zinazohitajika (msimbo wa block 1): +Kwanza, wacha tufunge gym na tulete maktaba zinazohitajika (kifungu cha msimbo 1): ```python import sys @@ -20,13 +40,13 @@ import numpy as np import random ``` -## Zoezi - kuanzisha mazingira ya CartPole +## Zoefu - anzisha mazingira ya cartpole -Ili kufanya kazi na tatizo la kusawazisha CartPole, tunahitaji kuanzisha mazingira yanayohusiana. Kila mazingira yanahusishwa na: +Ili kufanya kazi na tatizo la kusawazisha cartpole, tunahitaji kuanzisha mazingira yanayohusiana. Kila mazingira yanahusishwa na: -- **Observation space** inayofafanua muundo wa taarifa tunazopokea kutoka kwa mazingira. Kwa tatizo la CartPole, tunapokea nafasi ya fimbo, kasi, na thamani nyingine. +- **Eneo la uchunguzi** linalofafanua muundo wa taarifa tunazopokea kutoka kwa mazingira. Kwa tatizo la cartpole, tunapokea nafasi ya nguzo, kasi, na baadhi ya thamani nyingine. -- **Action space** inayofafanua hatua zinazowezekana. Katika kesi yetu, action space ni ya kidhahiri, na ina hatua mbili - **kushoto** na **kulia**. (msimbo wa block 2) +- **Eneo la hatua** linalofafanua hatua zinazowezekana. Katika kesi yetu, eneo la hatua ni diskrete, na linajumuisha hatua mbili - **kushoto** na **kulia**. (kifungu cha msimbo 2) 1. Ili kuanzisha, andika msimbo ufuatao: @@ -37,11 +57,11 @@ Ili kufanya kazi na tatizo la kusawazisha CartPole, tunahitaji kuanzisha mazingi print(env.action_space.sample()) ``` -Ili kuona jinsi mazingira yanavyofanya kazi, wacha tuendeshe simulizi fupi kwa hatua 100. Katika kila hatua, tunatoa moja ya hatua za kuchukuliwa - katika simulizi hii tunachagua hatua kwa nasibu kutoka `action_space`. +Ili kuona jinsi mazingira yanavyofanya kazi, tuchukue mizunguko mifupi ya majaribio kwa hatua 100. Kila hatua tunatoa moja ya hatua zinazopaswa kuchukuliwa - katika mizunguko hii tunachagua hatua kwa bahati nasibu kutoka `action_space`. -1. Kimbia msimbo hapa chini na uone matokeo yake. +1. Endesha msimbo hapa chini na uone kinacho tufikia. - ✅ Kumbuka kuwa inapendekezwa kuendesha msimbo huu kwenye usakinishaji wa Python wa ndani! (msimbo wa block 3) +✅ Kumbuka ni bora kuendesha msimbo huu kwenye usanikishaji wa Python wa ndani! (kifungu cha msimbo 3) ```python env.reset() @@ -52,11 +72,11 @@ Ili kuona jinsi mazingira yanavyofanya kazi, wacha tuendeshe simulizi fupi kwa h env.close() ``` - Unapaswa kuona kitu kinachofanana na picha hii: +Unapaswa kuona kitu kinachofanana na picha hii: - ![CartPole isiyosawazishwa](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) +![cartpole isiyosawazishwa](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. Wakati wa simulizi, tunahitaji kupata uchunguzi ili kuamua jinsi ya kutenda. Kwa kweli, kazi ya hatua inarudisha uchunguzi wa sasa, kazi ya malipo, na bendera ya kumaliza inayonyesha kama ina maana kuendelea na simulizi au la: (msimbo wa block 4) +1. Wakati wa mizunguko, tunahitaji kupata uchunguzi ili kuamua jinsi ya kuchukua hatua. Kazi ya hatua hurudisha uchunguzi wa sasa, thamani ya zawadi, na bendera ya kumaliza inayoonyesha kama kuna maana kuendelea na mzunguko au la: (kifungu cha msimbo 4) ```python env.reset() @@ -69,7 +89,7 @@ Ili kuona jinsi mazingira yanavyofanya kazi, wacha tuendeshe simulizi fupi kwa h env.close() ``` - Mwisho wake utakuwa kitu kama hiki kwenye matokeo ya daftari: +Utamaliza kuona kitu kama hiki katika matokeo ya daftari: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -82,43 +102,43 @@ Ili kuona jinsi mazingira yanavyofanya kazi, wacha tuendeshe simulizi fupi kwa h [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 ``` - Vector ya uchunguzi inayorudishwa katika kila hatua ya simulizi ina thamani zifuatazo: - - Nafasi ya gari - - Kasi ya gari - - Pembe ya fimbo - - Kiwango cha mzunguko wa fimbo +Vector ya uchunguzi inayorudishwa kila hatua ya mizunguko ina thamani zifuatazo: +- Nafasi ya gari +- Kasi ya gari +- Mwelekeo wa nguzo +- Kasi ya mzunguko wa nguzo -1. Pata thamani ya chini na ya juu ya namba hizo: (msimbo wa block 5) +1. Pata thamani ndogo na kubwa kati ya nambari hizo: (kifungu cha msimbo 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - Unaweza pia kugundua kuwa thamani ya malipo katika kila hatua ya simulizi daima ni 1. Hii ni kwa sababu lengo letu ni kuishi kwa muda mrefu iwezekanavyo, yaani, kuweka fimbo katika nafasi ya wima kwa muda mrefu zaidi. +Unaweza pia kugundua kwamba thamani ya zawadi katika kila hatua ya mizunguko siku zote ni 1. Hii ni kwa sababu lengo letu ni kuishi kwa muda mrefu iwezekanavyo, yaani kudumisha nguzo katika mwelekeo wa wima kwa muda mrefu zaidi. - ✅ Kwa kweli, simulizi ya CartPole inachukuliwa kuwa imetatuliwa ikiwa tunafanikiwa kupata wastani wa malipo ya 195 katika majaribio 100 mfululizo. +✅ Kwa kweli, kuiga CartPole kunachukuliwa kutatuliwa ikiwa tunaweza kupata wastani wa zawadi wa 195 kwa majaribio 100 mfululizo. -## Ubadilishaji wa Hali +## Diskuretisha hali -Katika Q-Learning, tunahitaji kujenga Q-Table inayofafanua nini cha kufanya katika kila hali. Ili kufanya hivyo, tunahitaji hali iwe **kidhahiri**, haswa, inapaswa kuwa na idadi finyu ya thamani za kidhahiri. Kwa hivyo, tunahitaji kwa namna fulani **kubadilisha** uchunguzi wetu, kuupangilia kwenye seti finyu ya hali. +Katika Q-Learning, tunahitaji kujenga Jedwali la Q linaloelezea nini cha kufanya kila hali. Ili kufanya hivyo, hali lazima iwe **diskrete**, hasa iwe na idadi ya kiwango cha thamani chenye kikomo. Hivyo, tunahitaji kwa namna fulani **kugawanya** maoni yetu, tukiyalinganisha na seti chache za hali. -Kuna njia kadhaa tunaweza kufanya hivi: +Kuna njia chache tunaweza kufanya hivi: -- **Gawanya katika bins**. Ikiwa tunajua kipindi cha thamani fulani, tunaweza kugawanya kipindi hiki katika idadi ya **bins**, kisha kubadilisha thamani kwa namba ya bin ambayo inahusiana nayo. Hii inaweza kufanywa kwa kutumia njia ya numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Katika kesi hii, tutajua kwa usahihi ukubwa wa hali, kwa sababu itategemea idadi ya bins tunazochagua kwa digitalization. +- **Gawanya katika kontena**. Ikiwa tunajua awamu ya thamani fulani, tunaweza kugawa awamu hii katika kontena kadhaa, kisha kubadilisha thamani kwa nambari ya kontena inayohusiana. Hii inaweza kufanywa kwa kutumia njia ya numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Katika kesi hii, tutajua kwa usahihi ukubwa wa hali, kwa sababu utategemea idadi ya kontena tulizochagua kwa diditalization. -✅ Tunaweza kutumia uingiliano wa mstari kuleta thamani kwenye kipindi finyu (sema, kutoka -20 hadi 20), kisha kubadilisha namba kuwa namba za kidhahiri kwa kuzirudisha. Hii inatupa udhibiti mdogo juu ya ukubwa wa hali, hasa ikiwa hatujui mipaka halisi ya thamani za pembejeo. Kwa mfano, katika kesi yetu 2 kati ya 4 za thamani hazina mipaka ya juu/chini, ambayo inaweza kusababisha idadi isiyo na mwisho ya hali. +✅ Tunaweza pia kutumia interpoleshini ya mstari kuleta thamani katika awamu ndogo (mfano, kutoka -20 hadi 20), kisha kubadilisha nambari kwa integers kwa kuziround. Hii hutupa udhibiti mdogo juu ya ukubwa wa hali, hasa ikiwa hatujui safu sahihi ya thamani za ingizo. Kwa mfano, katika kesi yetu 2 kati ya thamani 4 haina mipaka ya juu/chini, ambayo inaweza kusababisha idadi isiyo na kikomo ya hali. -Katika mfano wetu, tutatumia njia ya pili. Kama utakavyogundua baadaye, licha ya mipaka isiyofafanuliwa ya juu/chini, thamani hizo mara chache huchukua thamani nje ya vipindi finyu, kwa hivyo hali hizo zenye thamani za juu zitakuwa nadra sana. +Katika mfano wetu, tutatumia mbinu ya pili. Kama utaona baadaye, licha ya mipaka isiyoelezwa, thamani hizi mara chache hupita katika awamu fulani za kikomo, hivyo hali hizo zenye thamani kubwa zitakuwa nadra sana. -1. Hapa kuna kazi itakayochukua uchunguzi kutoka kwa mfano wetu na kutoa tuple ya thamani 4 za kidhahiri: (msimbo wa block 6) +1. Hapa ni kazi itakayochukua maoni kutoka kwa mfano wetu na kutoa tuple yenye thamani 4 za integer: (kifungu cha msimbo 6) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. Wacha pia tuchunguze njia nyingine ya ubadilishaji kwa kutumia bins: (msimbo wa block 7) +1. Pia tuchunguze njia nyingine ya diskuretisha kwa kutumia kontena: (kifungu cha msimbo 7) ```python def create_bins(i,num): @@ -126,39 +146,39 @@ Katika mfano wetu, tutatumia njia ya pili. Kama utakavyogundua baadaye, licha ya print("Sample bins for interval (-5,5) with 10 bins\n",create_bins((-5,5),10)) - ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervals of values for each parameter - nbins = [20,20,10,10] # number of bins for each parameter + ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # vipindi vya thamani kwa kila parameta + nbins = [20,20,10,10] # idadi ya masanduku kwa kila parameta bins = [create_bins(ints[i],nbins[i]) for i in range(4)] def discretize_bins(x): return tuple(np.digitize(x[i],bins[i]) for i in range(4)) ``` -1. Sasa wacha tuendeshe simulizi fupi na kuchunguza thamani za mazingira ya kidhahiri. Jisikie huru kujaribu `discretize` na `discretize_bins` na uone kama kuna tofauti. +1. Sasa tutaendesha mizunguko mfupi na kuangalia thamani hizo za mazingira ya diskrete. Jaribu `discretize` na `discretize_bins` na uone kama kuna tofauti. - ✅ discretize_bins inarudisha namba ya bin, ambayo ni 0-based. Kwa hivyo kwa thamani za pembejeo karibu na 0 inarudisha namba kutoka katikati ya kipindi (10). Katika discretize, hatukujali kuhusu kipimo cha thamani za matokeo, tukiruhusu ziwe hasi, kwa hivyo thamani za hali hazijabadilishwa, na 0 inahusiana na 0. (msimbo wa block 8) +✅ discretize_bins hurudisha nambari ya kontena, ambayo huanzia 0. Hivyo kwa thamani za variable za ingizo karibu na 0 hurudisha nambari ya katikati ya awamu (10). Katika discretize, hatukujali juu ya safu ya thamani za output, tukiruhusu kuwa hasi, hivyo thamani za hali hazijasogezwa, na 0 ni sawa na 0. (kifungu cha msimbo 8) ```python env.reset() done = False while not done: - #env.render() + #env.onyeshaji() obs, rew, done, info = env.step(env.action_space.sample()) - #print(discretize_bins(obs)) + #chapisha(discretize_bins(obs)) print(discretize(obs)) env.close() ``` - ✅ Ondoa mstari unaoanza na env.render ikiwa unataka kuona jinsi mazingira yanavyotekelezwa. Vinginevyo unaweza kuyatekeleza kwa siri, ambayo ni haraka zaidi. Tutatumia utekelezaji huu "usioonekana" wakati wa mchakato wetu wa Q-Learning. +✅ Fungua mstari unaoanza na env.render ikiwa unataka kuona mazingira yanavyotekeleza. Vinginevyo unaweza kuyatekeleza nyuma, ambayo ni haraka zaidi. Tutatumia utekelezaji huu "usioonekana" wakati wa mchakato wa Q-Learning. -## Muundo wa Q-Table +## Muundo wa Jedwali la Q -Katika somo letu lililopita, hali ilikuwa jozi rahisi ya namba kutoka 0 hadi 8, na kwa hivyo ilikuwa rahisi kuwakilisha Q-Table kwa tensor ya numpy yenye umbo la 8x8x2. Ikiwa tunatumia bins discretization, ukubwa wa vector ya hali yetu pia unajulikana, kwa hivyo tunaweza kutumia mbinu sawa na kuwakilisha hali kwa safu yenye umbo la 20x20x10x10x2 (hapa 2 ni kipimo cha action space, na vipimo vya kwanza vinahusiana na idadi ya bins tulizochagua kutumia kwa kila parameter katika observation space). +Katika somo letu lililopita, hali ilikuwa jozi rahisi ya nambari kutoka 0 hadi 8, hivyo ilikuwa rahisi kuwakilisha Jedwali la Q kwa tensor ya numpy yenye umbo 8x8x2. Ikiwa tutatumia diskuretisha kwa kontena, ukubwa wa vector ya hali pia unajulikana, hivyo tunaweza kutumia mbinu ile ile na kuwakilisha hali kwa safu yenye umbo 20x20x10x10x2 (hapa 2 ni urefu wa eneo la hatua, na vipimo vya kwanza ni idadi ya kontena tulizochagua kwa kila parameter katika eneo la uchunguzi). -Hata hivyo, wakati mwingine vipimo halisi vya observation space havijulikani. Katika kesi ya kazi ya `discretize`, hatuwezi kamwe kuwa na uhakika kwamba hali yetu inabaki ndani ya mipaka fulani, kwa sababu baadhi ya thamani za awali hazina mipaka. Kwa hivyo, tutatumia mbinu tofauti kidogo na kuwakilisha Q-Table kwa kamusi. +Hata hivyo, mara nyingine vipimo kamili vya eneo la uchunguzi havijulikani. Katika kesi ya `discretize`, hatuwezi kamwe kuwa na uhakika kuwa hali yetu itabaki ndani ya mipaka fulani, kwa sababu baadhi ya thamani za asili hazina mipaka. Kwa hivyo, tutatumia mbinu tofauti kidogo na kuwakilisha Jedwali la Q kwa kamusi. -1. Tumia jozi *(state,action)* kama ufunguo wa kamusi, na thamani itahusiana na thamani ya Q-Table. (msimbo wa block 9) +1. Tumia jozi *(state,action)* kama ufunguo wa kamusi, na thamani itawakilisha thamani ya entry ya Jedwali la Q. (kifungu cha msimbo 9) ```python Q = {} @@ -168,38 +188,38 @@ Hata hivyo, wakati mwingine vipimo halisi vya observation space havijulikani. Ka return [Q.get((state,a),0) for a in actions] ``` - Hapa pia tunafafanua kazi `qvalues()`, ambayo inarudisha orodha ya thamani za Q-Table kwa hali fulani inayohusiana na hatua zote zinazowezekana. Ikiwa kiingilio hakipo katika Q-Table, tutarudisha 0 kama chaguo-msingi. +Hapa pia tunafafanua kazi `qvalues()`, inayorudisha orodha ya thamani za Jedwali la Q kwa hali fulani kuhusiana na hatua zote zinazowezekana. Ikiwa entry haina katika Jedwali la Q, tutarudisha 0 kama chaguo la msingi. ## Wacha tuanze Q-Learning Sasa tuko tayari kumfundisha Peter kusawazisha! -1. Kwanza, wacha tuweke baadhi ya hyperparameters: (msimbo wa block 10) +1. Kwanza, wacha tuiweke mipangilio ya hyperparameters: (kifungu cha msimbo 10) ```python - # hyperparameters + # vigezo vya juu alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - Hapa, `alpha` ni **learning rate** inayofafanua kiwango ambacho tunapaswa kurekebisha thamani za sasa za Q-Table katika kila hatua. Katika somo lililopita tulianza na 1, kisha tukapunguza `alpha` hadi thamani za chini wakati wa mafunzo. Katika mfano huu tutaiweka kuwa ya kudumu kwa urahisi, na unaweza kujaribu kurekebisha thamani za `alpha` baadaye. +Hapa, `alpha` ni **kasi ya kujifunza** inayofafanua hatua gani tunapaswa kurekebisha thamani za sasa za Jedwali la Q kila hatua. Katika somo lililopita tulianza na 1, kisha tuliipunguza `alpha` hadi thamani ndogo wakati wa mafunzo. Katika mfano huu tutaiweka thabiti kwa urahisi, na unaweza kujaribu kurekebisha thamani za `alpha` baadaye. - `gamma` ni **discount factor** inayonyesha kiwango ambacho tunapaswa kuzingatia malipo ya baadaye zaidi ya malipo ya sasa. +`gamma` ni **kigezo cha punguzo** kinachoonyesha kiasi gani tunapaswa kuweka kipaumbele zawadi za baadaye kuliko zawadi za sasa. - `epsilon` ni **exploration/exploitation factor** inayodhamiria kama tunapaswa kupendelea uchunguzi au matumizi. Katika algoriti yetu, tutachagua hatua inayofuata kulingana na thamani za Q-Table kwa asilimia ya `epsilon`, na katika idadi iliyobaki ya kesi tutatekeleza hatua ya nasibu. Hii itaturuhusu kuchunguza maeneo ya nafasi ya utafutaji ambayo hatujawahi kuona hapo awali. +`epsilon` ni **kigezo cha uchunguzi/kutumia** kinachoamua kama tunapaswa kupendelea uchunguzi kuliko matumizi au kinyume chake. Katika algoriti yetu, katika asilimia ya `epsilon` tutachagua hatua ifuatayo kulingana na thamani za Jedwali la Q, na katika idadi iliyobaki tutatekeleza hatua ya bahati nasibu. Hii itaturuhusu kuchunguza maeneo ya utafutaji ambayo hatujawahi kuona. - ✅ Kwa suala la kusawazisha - kuchagua hatua ya nasibu (uchunguzi) itakuwa kama pigo la nasibu katika mwelekeo usio sahihi, na fimbo italazimika kujifunza jinsi ya kurejesha usawa kutoka kwa "makosa" hayo. +✅ Kuhusu kusawazisha - kuchagua hatua ya bahati nasibu (uchunguzi) itakuwa kama pigo la bahati nasibu kwenda upande usiofaa, na nguzo itahitaji kujifunza jinsi ya kurejesha usawa kutokana na "makosa" hayo -### Boresha Algoriti +### Boresha algoriti -Tunaweza pia kufanya maboresho mawili kwenye algoriti yetu kutoka somo lililopita: +Tunaweza pia kufanya maboresho mawili kwa algoriti yetu kutoka somo lililopita: -- **Hesabu wastani wa malipo ya jumla**, katika idadi ya simulizi. Tutachapisha maendeleo kila majaribio 5000, na tutapunguza wastani wa malipo yetu ya jumla katika kipindi hicho cha muda. Inamaanisha kwamba ikiwa tutapata zaidi ya pointi 195 - tunaweza kuzingatia tatizo limetatuliwa, kwa ubora wa juu zaidi kuliko inavyohitajika. +- **Hesabu wastani wa zawadi kwa pamoja**, kwa mzunguko kadhaa. Tutaweka maendeleo kila mizunguko 5000, na tutapima wastani wa zawadi kwa pamoja kwa kipindi hicho. Inamaanisha ikiwa tunaweza kupata zaidi ya alama 195 - tunaweza kuchukulia tatizo limetatuliwa, kwa ubora hata zaidi kuliko uliohitajika. -- **Hesabu matokeo ya juu ya wastani wa jumla**, `Qmax`, na tutahifadhi Q-Table inayohusiana na matokeo hayo. Unapokimbia mafunzo utagundua kwamba wakati mwingine matokeo ya wastani ya jumla yanaanza kushuka, na tunataka kuhifadhi thamani za Q-Table zinazohusiana na mfano bora uliotazamwa wakati wa mafunzo. +- **Hesabu matokeo makubwa ya wastani wa pamoja**, `Qmax`, na tutahifadhi Jedwali la Q linalohusiana na matokeo hayo. Utapoganda mafunzo utagundua mara nyingine matokeo ya wastani ya pamoja huanza kupungua, na tunataka kuhifadhi thamani za Jedwali la Q zinazolingana na mfano bora ulioonekana wakati wa mafunzo. -1. Kusanya malipo yote ya jumla katika kila simulizi kwenye vector ya `rewards` kwa ajili ya kuchora baadaye. (msimbo wa block 11) +1. Kusanya zawadi zote kwa pamoja kila mzunguko katika vector `rewards` kwa ajili ya ploti ya baadaye. (kifungu cha msimbo 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Tunaweza pia kufanya maboresho mawili kwenye algoriti yetu kutoka somo lililopit obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == fanya upigaji wa majaribio == while not done: s = discretize(obs) if random.random() Qmax: @@ -242,23 +262,23 @@ Tunaweza pia kufanya maboresho mawili kwenye algoriti yetu kutoka somo lililopit Unachoweza kugundua kutoka kwa matokeo hayo: -- **Karibu na lengo letu**. Tuko karibu sana kufanikisha lengo la kupata malipo ya jumla ya 195 katika majaribio 100+ mfululizo ya simulizi, au tunaweza kuwa tumelifanikisha! Hata kama tunapata namba ndogo, bado hatujui, kwa sababu tunapunguza wastani wa majaribio 5000, na majaribio 100 tu yanahitajika katika vigezo rasmi. +- **Karibu na lengo letu**. Tuko karibu sana kufanikisha lengo la kupata 195 za zawadi kwa mizunguko 100 mfululizo ya majaribio ya kuiga, au labda tumefanikisha! Hata tukipata nambari ndogo zaidi, bado hatujui, kwa sababu tunapima wastani kwa mizunguko 5000, na mizunguko 100 ndio inahitajika katika vigezo rasmi. -- **Malipo yanaanza kushuka**. Wakati mwingine malipo yanaanza kushuka, ambayo inamaanisha kwamba tunaweza "kuharibu" thamani zilizojifunza tayari katika Q-Table na zile zinazofanya hali kuwa mbaya zaidi. +- **Zawadi inaanza kupungua**. Wakati mwingine zawadi huanza kupungua, maana yake tunaweza "kuharibu" thamani zilizojifunza katika Jedwali la Q na zile zinazofanya hali kuwa mbaya. -Uchunguzi huu unaonekana wazi zaidi ikiwa tunachora maendeleo ya mafunzo. +Uchunguzi huu unaonekana wazi zaidi ikiwa tuliweka maendeleo ya mafunzo kwenye mchoro. ## Kuchora Maendeleo ya Mafunzo -Wakati wa mafunzo, tumekusanya thamani ya malipo ya jumla katika kila mojawapo ya majaribio kwenye vector ya `rewards`. Hivi ndivyo inavyoonekana tunapochora dhidi ya namba ya majaribio: +Wakati wa mafunzo, tuliokusanya thamani ya zawadi kwa pamoja kila mara katika vector ya `rewards`. Huu ndio muonekano wake tunapochora dhidi ya nambari ya mzunguko: ```python plt.plot(rewards) ``` -![Maendeleo ya awali](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![maendeleo ghafi](../../../../translated_images/sw/train_progress_raw.2adfdf2daea09c59.webp) -Kutoka kwenye grafu hii, haiwezekani kusema chochote, kwa sababu kutokana na asili ya mchakato wa mafunzo wa nasibu urefu wa vipindi vya mafunzo hutofautiana sana. Ili kufanya grafu hii iwe na maana zaidi, tunaweza kuhesabu **wastani wa kukimbia** katika mfululizo wa majaribio, tuseme 100. Hii inaweza kufanywa kwa urahisi kwa kutumia `np.convolve`: (msimbo wa block 12) +Kutoka kwenye grafu hii, si rahisi kuelewa chochote kwa sababu kutokana na asili ya mchakato wa mafunzo wa kishtochasti urefu wa vikao vya mafunzo hutofautiana sana. Ili kufanya grafu hii iwe na maana zaidi, tunaweza kuhesabu **wastani unaoendelea** kwa mfululizo wa majaribio, tuseme 100. Hii inaweza kufanyika kwa urahisi kwa kutumia `np.convolve`: (kifungu cha msimbo 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![Maendeleo ya mafunzo](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![maendeleo ya mafunzo](../../../../translated_images/sw/train_progress_runav.c71694a8fa9ab359.webp) + +## Kubadilisha hyperparameters + +Ili kufanya kujifunza kuwa thabiti zaidi, ni busara kurekebisha baadhi ya hyperparameters zetu wakati wa mafunzo. Hasa: + +- **Kwa kasi ya kujifunza**, `alpha`, tunaweza kuanza na thamani karibu na 1, kisha tukae tukipunguza kidogo kidogo. Hivi ndivyo tutakuwa na thamani nzuri za uwezekano za Jedwali la Q, hivyo tunapaswa kuzipanga kidogo badala ya kuzibadilisha kabisa na thamani mpya. -## Kubadilisha Hyperparameters +- **Ongeza epsilon**. Tunaweza kuonekana kuongeza `epsilon` polepole, ili tukuelekeze kidogo kwenye uchunguzi na zaidi kwenye matumizi. Inaonekana busara kuanza na thamani ndogo ya `epsilon`, kisha kwenda hadi karibu 1. -Ili kufanya mafunzo kuwa thabiti zaidi, ina maana kurekebisha baadhi ya hyperparameters zetu wakati wa mafunzo. Haswa: +> **Kazi 1**: Jiunge na thamani za hyperparameter na uone kama unaweza kupata zawadi ya juu zaidi kwa pamoja. Je, unapiga zaidi ya 195? -- **Kwa learning rate**, `alpha`, tunaweza kuanza na thamani karibu na 1, kisha kuendelea kupunguza parameter. Kwa muda, tutakuwa tunapata thamani nzuri za uwezekano katika Q-Table, na kwa hivyo tunapaswa kuzirekebisha kidogo, na si kuandika upya kabisa na thamani mpya. -- **Ongeza epsilon**. Tunaweza kutaka kuongeza `epsilon` polepole, ili kuchunguza kidogo na kutumia zaidi. Inawezekana ina maana kuanza na thamani ya chini ya `epsilon`, na kuendelea hadi karibu na 1. -> **Kazi ya 1**: Cheza na thamani za hyperparameter na uone kama unaweza kufikia zawadi ya juu zaidi ya jumla. Je, unapata zaidi ya 195? -> **Kazi ya 2**: Ili kutatua tatizo rasmi, unahitaji kupata wastani wa zawadi ya 195 katika mizunguko 100 mfululizo. Pima hilo wakati wa mafunzo na hakikisha kuwa umetatua tatizo rasmi! +> **Kazi 2**: Ili kutatua tatizo rasmi, unahitaji kupata zawadi ya wastani ya 195 katika mizunguko 100 mfululizo. Pima hilo wakati wa mafunzo na hakikisha kuwa umetatua tatizo rasmi! ## Kuona matokeo kwa vitendo -Itakuwa ya kuvutia kuona jinsi mfano uliopata mafunzo unavyofanya kazi. Hebu tuendeshe simulizi na kufuata mkakati wa kuchagua hatua kama wakati wa mafunzo, tukichagua kulingana na mgawanyo wa uwezekano katika Q-Table: (sehemu ya msimbo 13) +Itakuwa ya kuvutia kuona jinsi mfano uliopita mafunzo unavyotenda. Hebu endesha simulizi na ufuate mkakati ule ule wa kuchagua vitendo kama wakati wa mafunzo, ukichagua kulingana na usambazaji wa uwezekano katika Jedwali la Q: (block ya nambari 13) ```python obs = env.reset() @@ -297,28 +320,30 @@ env.close() Unapaswa kuona kitu kama hiki: -![gari la kusawazisha pole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Changamoto -> **Kazi ya 3**: Hapa, tulikuwa tunatumia nakala ya mwisho ya Q-Table, ambayo huenda isiwe bora zaidi. Kumbuka kuwa tumetunza Q-Table inayofanya vizuri zaidi katika `Qbest`! Jaribu mfano huo huo ukitumia Q-Table inayofanya vizuri zaidi kwa kunakili `Qbest` kwenda `Q` na uone kama unagundua tofauti. +> **Kazi 3**: Hapa, tulikuwa tunatumia nakala ya mwisho ya Jedwali la Q, ambayo huenda si ile bora zaidi. Kumbuka kuwa tumehifadhi Jedwali la Q linayofanya vizuri zaidi kwenye kigeuzi `Qbest`! Jaribu mfano ule ule ukitumia Jedwali la Q linayofanya vizuri zaidi kwa kunakili `Qbest` kwenda `Q` na angalia kama utaona tofauti. -> **Kazi ya 4**: Hapa hatukuchagua hatua bora katika kila hatua, bali tulichagua kulingana na mgawanyo wa uwezekano unaolingana. Je, ingekuwa na maana zaidi kuchagua hatua bora kila wakati, yenye thamani ya juu zaidi katika Q-Table? Hili linaweza kufanyika kwa kutumia kazi ya `np.argmax` ili kupata namba ya hatua inayolingana na thamani ya juu zaidi ya Q-Table. Tekeleza mkakati huu na uone kama unaboreshwa usawazishaji. +> **Kazi 4**: Hapa hatukuchagua tendo bora kila hatua, bali tulikuwa tunachagua kulingana na usambazaji wa uwezekano unaolingana. Je, wangekuwa na maana zaidi kila wakati kuchagua tendo bora zaidi, lenye thamani kubwa zaidi katika Jedwali la Q? Hii inaweza kufanywa kwa kutumia kazi ya `np.argmax` kugundua nambari ya tendo linalolingana na thamani kubwa zaidi ya Jedwali la Q. Tekeleza mkakati huu na uone kama unaboresha usawa. -## [Jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani baada ya mihadhara](https://ff-quizzes.netlify.app/en/ml/) -## Kazi ya Nyumbani -[Fundisha Gari la Mlima](assignment.md) +## Kazi ya nyumbani +[Funza Gari la Mlima](assignment.md) ## Hitimisho -Sasa tumejifunza jinsi ya kufundisha mawakala kufanikisha matokeo mazuri kwa kuwapa tu kazi ya zawadi inayofafanua hali inayotakiwa ya mchezo, na kwa kuwapa fursa ya kuchunguza kwa akili nafasi ya utafutaji. Tumetumia kwa mafanikio algoriti ya Q-Learning katika hali za mazingira ya kidijitali na endelevu, lakini kwa hatua za kidijitali. +Sasa tumefundishwa jinsi ya kufunza mawakala kufikia matokeo mazuri kwa kuwapa tu kazi ya zawadi inayobainisha hali inayotakiwa ya mchezo, na kwa kuwapa nafasi ya kuchunguza kwa akili nafasi ya utaftaji. Tumetumia kwa mafanikio algorithm ya Q-Learning katika mazingira ya tarakimu na yanayoendelea, lakini kwa vitendo vya tarakimu. -Ni muhimu pia kusoma hali ambapo hali ya hatua ni endelevu, na wakati nafasi ya uchunguzi ni ngumu zaidi, kama picha kutoka skrini ya mchezo wa Atari. Katika matatizo hayo mara nyingi tunahitaji kutumia mbinu za kujifunza mashine zenye nguvu zaidi, kama mitandao ya neva, ili kufanikisha matokeo mazuri. Mada hizo za juu zaidi ni somo la kozi yetu ya AI ya juu inayokuja. +Ni muhimu pia kusomea hali ambapo hali ya tendo pia ni endelevu, na wakati nafasi ya uchunguzi ni tata zaidi, kama vile picha kutoka kwenye skrini ya mchezo wa Atari. Katika matatizo hayo mara nyingi tunahitaji kutumia mbinu zilizo na nguvu zaidi za ujifunzaji wa mashine, kama vile mitandao ya neva, ili kufikia matokeo mazuri. Mada hizo za juu zaidi ni somo la kozi yetu ya juu zaidi ya AI inayokuja. --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file