Uczenie maszynowe w Pythonie dla każdego - ebook
Uczenie maszynowe w Pythonie dla każdego - ebook
Sztuczna inteligencja i uczenie maszynowe rozwijają się z niezwykłą dynamiką i znajdują coraz więcej różnorodnych zastosowań w niemal wszystkich branżach. Ten spektakularny postęp jest silnie związany z osiągnięciami w świecie sprzętu i oprogramowania. Obecnie do uczenia maszynowego używa się wielu języków programowania, takich jak R, C, C++, Fortran i Go, jednak najpopularniejszym wyborem okazał się Python wraz z jego specjalistycznymi bibliotekami. Znajomość tych bibliotek i narzędzi umożliwia tworzenie systemów uczących się nawet tym osobom, które nie dysponują głęboką wiedzą z dziedziny matematyki.
Ta książka jest przeznaczona dla każdego, kto choć trochę zna Pythona i chce nauczyć się uczenia maszynowego. Zagadnienia matematyczne zostały tu zaprezentowane w minimalnym stopniu, za to więcej uwagi poświęcono koncepcjom, na których oparto najważniejsze i najczęściej używane narzędzia oraz techniki uczenia maszynowego. Następnie pokazano praktyczne zasady implementacji uczenia maszynowego z wykorzystaniem najdoskonalszych bibliotek i narzędzi Pythona. Opisano używane dziś komponenty systemów uczących się, w tym techniki klasyfikacji i regresji, a także inżynierię cech, która pozwala przekształcać dane na użyteczną postać. Przeanalizowano liczne algorytmy i najczęściej stosowane techniki uczenia maszynowego. Pokrótce przedstawiono modele grafowe i sieci neuronowe, w tym sieci głębokie, jak również połączenie tych technik z bardziej zaawansowanymi metodami, przydatnymi choćby w pracy na danych graficznych i tekstowych.
W książce między innymi:
- algorytmy i modele uczenia maszynowego
- zasady oceny skuteczności systemów uczących
- techniki przekształcania danych
- techniki uczenia maszynowego do obrazu i tekstu
- sieci neuronowe i modele grafowe
- biblioteka scikit-learn i inne narzędzia Pythona
Uczenie maszynowe z Pythonem: od dziś dla każdego!
Spis treści
Przedmowa 15
Wprowadzenie 17
O autorze 23
CZĘŚĆ I. PIERWSZE KROKI 25
Rozdział 1. Podyskutujmy o uczeniu się 27
- 1.1. Witaj 27
- 1.2. Zakres, terminologia, predykcja i dane 28
- 1.2.1. Cechy 28
- 1.2.2. Wartości docelowe i predykcje 31
- 1.3. Rola maszyny w uczeniu maszynowym 31
- 1.4. Przykład systemów uczących się 33
- 1.4.1. Predykcja kategorii: przykłady klasyfikacji 33
- 1.4.2. Predykcja wartości - przykłady regresorów 35
- 1.5. Ocena systemów uczących się 35
- 1.5.1. Poprawność 36
- 1.5.2. Wykorzystanie zasobów 37
- 1.6. Proces budowania systemów uczących się 38
- 1.7. Założenia i realia uczenia się 40
- 1.8. Zakończenie rozdziału 42
- 1.8.1. Droga przed nami 42
- 1.8.2. Uwagi 43
Rozdział 2. Kontekst techniczny 45
- 2.1. O naszej konfiguracji 45
- 2.2. Potrzeba posiadania języka matematycznego 45
- 2.3. Nasze oprogramowanie do zmierzenia się z uczeniem maszynowym 46
- 2.4. Prawdopodobieństwo 47
- 2.4.1. Zdarzenia elementarne 48
- 2.4.2. Niezależność zdarzeń 50
- 2.4.3. Prawdopodobieństwo warunkowe 50
- 2.4.4. Rozkłady 52
- 2.5. Kombinacje liniowe, sumy ważone i iloczyny skalarne 54
- 2.5.1. Średnia ważona 57
- 2.5.2. Suma kwadratów 59
- 2.5.3. Suma kwadratów błędów 59
- 2.6. Perspektywa geometryczna: punkty w przestrzeni 60
- 2.6.1. Linie 61
- 2.6.2. Coś więcej niż linie 65
- 2.7. Notacja sztuczki plus jeden 69
- 2.8. Odjazd, zrywanie kaftana bezpieczeństwa i nieliniowość 71
- 2.9. NumPy kontra "cała matematyka" 73
- 2.9.1. Wracamy do 1D i 2D 75
- 2.10. Problemy z wartościami zmiennoprzecinkowymi 78
- 2.11. Zakończenie rozdziału 79
- 2.11.1. Podsumowanie 79
- 2.11.2. Uwagi 79
Rozdział 3. Predykcja kategorii - początki klasyfikacji 81
- 3.1. Zadania klasyfikacji 81
- 3.2. Prosty zestaw danych do klasyfikacji 82
- 3.3. Trenowanie i testowanie: nie ucz się do testu 84
- 3.4. Ocena - wystawienie stopni 87
- 3.5. Prosty klasyfikator nr 1: najbliżsi sąsiedzi, związki na odległość i założenia 88
- 3.5.1. Definiowanie podobieństwa 88
- 3.5.2. k w k-NN 90
- 3.5.3. Kombinacja odpowiedzi 90
- 3.5.4. k-NN, parametry i metody bezparametrowe 90
- 3.5.5. Budowa modelu klasyfikacji k-NN 91
- 3.6. Prosty klasyfikator nr 2: naiwny klasyfikator bayesowski, prawdopodobieństwo i złamane obietnice 93
- 3.7. Uproszczona ocena klasyfikatorów 96
- 3.7.1. Wydajność uczenia się 96
- 3.7.2. Wykorzystanie zasobów w klasyfikacji 97
- 3.7.3. Szacowanie zasobów w aplikacjach samodzielnych 103
- 3.8. Koniec rozdziału 106
- 3.8.1. Ostrzeżenie: ograniczenia i otwarte kwestie 106
- 3.8.2. Podsumowanie 107
- 3.8.3. Uwagi 107
- 3.8.4. Ćwiczenia 109
Rozdział 4. Predykcja wartości numerycznych: początki regresji 111
- 4.1. Prosty zbiór danych dla regresji 111
- 4.2. Regresja z najbliższymi sąsiadami i statystyki sumaryczne 113
- 4.2.1. Miary środka: mediana i średnia 114
- 4.2.2. Budowa modelu regresji k-NN 116
- 4.3. Błędy regresji liniowej 117
- 4.3.1. Ziemia nie jest płaska, czyli dlaczego potrzebujemy pochyłości 118
- 4.3.2. Przekrzywienie pola 120
- 4.3.3. Wykonanie regresji liniowej 122
- 4.4. Optymalizacja - wybór najlepszej odpowiedzi 123
- 4.4.1. Zgadywanie losowe 124
- 4.4.2. Losowe kroki 124
- 4.4.3. Sprytne kroki 125
- 4.4.4. Obliczony skrót 125
- 4.4.5. Wykorzystanie w regresji liniowej 126
- 4.5. Prosta ocena i porównanie regresorów 126
- 4.5.1. Pierwiastek średniego błędu kwadratowego 126
- 4.5.2. Wydajność uczenia się 127
- 4.5.3. Wykorzystanie zasobów w regresji 127
- 4.6. Zakończenie rozdziału 129
- 4.6.1. Ograniczenia i kwestie otwarte 129
- 4.6.2. Podsumowanie 130
- 4.6.3. Uwagi 130
- 4.6.4. Ćwiczenia 130
CZĘŚĆ II. OCENA 131
Rozdział 5. Ocena i porównywanie metod uczenia się 133
- 5.1. Ocena i dlaczego mniej znaczy więcej 133
- 5.2. Terminologia dla faz uczenia się 134
- 5.2.1. Powrót do maszyn 135
- 5.2.2. Mówiąc bardziej technicznie... 137
- 5.3. Majorze Tom, coś jest nie tak - nadmierne dopasowanie i niedopasowanie 141
- 5.3.1. Dane syntetyczne i regresja liniowa 141
- 5.3.2. Ręczna modyfikacja złożoności modelu 143
- 5.3.3. Złotowłosa - wizualizacja nadmiernego dopasowania, niedopasowania oraz "w sam raz" 145
- 5.3.4. Prostota 148
- 5.3.5. Uwagi na temat nadmiernego dopasowania 148
- 5.4. Od błędów do kosztów 149
- 5.4.1. Strata 149
- 5.4.2. Koszt 150
- 5.4.3. Punktacja 151
- 5.5. (Powtórne) próbkowanie - zamienić mniej w więcej 152
- 5.5.1. Walidacja krzyżowa 152
- 5.5.2. Rozwarstwienie 156
- 5.5.3. Powtarzany podział na dane treningowe i testowe 158
- 5.5.4. Lepszy sposób i tasowanie 161
- 5.5.5. Walidacja krzyżowa z odłożeniem jednego 164
- 5.6. Rozbicie: dekonstrukcja błędu na błąd systematyczny i wariancję 166
- 5.6.1. Wariancja danych 167
- 5.6.2. Wariancja modelu 167
- 5.6.3. Błąd systematyczny modelu 168
- 5.6.4. A teraz wszystko razem 168
- 5.6.5. Przykłady kompromisów związanych z błędem systematycznym i wariancją 169
- 5.7. Ocena graficzna i porównanie 173
- 5.7.1. Krzywe uczenia - jak dużo danych potrzebujemy? 173
- 5.7.2. Krzywe złożoności 177
- 5.8. Porównywanie metod uczących się za pomocą walidacji krzyżowej 178
- 5.9. Koniec rozdziału 179
- 5.9.1. Podsumowanie 179
- 5.9.2. Uwagi 179
- 5.9.3. Ćwiczenia 181
Rozdział 6. Ocena klasyfikatorów 183
- 6.1. Klasyfikatory bazowe 183
- 6.2. Więcej niż dokładność - wskaźniki dla klasyfikacji 186
- 6.2.1. Eliminacja zamieszania za pomocą macierzy błędu 187
- 6.2.2. W jaki sposób można się mylić 188
- 6.2.3. Wskaźniki z macierzy błędu 189
- 6.2.4. Kodowanie macierzy błędu 190
- 6.2.5. Radzenie sobie z wieloma klasami - uśrednianie wieloklasowe 192
- 6.2.6. F1 194
- 6.3. Krzywe ROC 194
- 6.3.1. Wzorce w ROC 197
- 6.3.2. Binarny ROC 199
- 6.3.3. AUC - obszar pod krzywą ROC 201
- 6.3.4. Wieloklasowe mechanizmy uczące się, jeden kontra reszta i ROC 203
- 6.4. Inne podejście dla wielu klas: jeden-kontra-jeden 205
- 6.4.1. Wieloklasowe AUC, część druga - w poszukiwaniu pojedynczej wartości 206
- 6.5. Krzywe precyzji i skuteczności wyszukiwania 209
- 6.5.1. Uwaga o kompromisie precyzji i skuteczności wyszukiwania 209
- 6.5.2. Budowanie krzywej precyzji i skuteczności wyszukiwania 210
- 6.6. Krzywe kumulacyjnej odpowiedzi i wzniesienia 211
- 6.7. Bardziej wyrafinowana ocena klasyfikatorów - podejście drugie 213
- 6.7.1. Binarne 213
- 6.7.2. Nowy problem wieloklasowy 217
- 6.8. Koniec rozdziału 222
- 6.8.1. Podsumowanie 222
- 6.8.2. Uwagi 222
- 6.8.3. Ćwiczenia 224
Rozdział 7. Ocena metod regresji 225
- 7.1. Metody regresji będące punktem odniesienia 225
- 7.2. Dodatkowe miary w metodach regresji 227
- 7.2.1. Tworzenie własnych miar oceny 227
- 7.2.2. Inne wbudowane miary regresji 228
- 7.2.3. R2 229
- 7.3. Wykresy składników resztowych 235
- 7.3.1. Wykresy błędów 235
- 7.3.2. Wykresy składników resztowych 237
- 7.4. Pierwsze podejście do standaryzacji 241
- 7.5. Ocena mechanizmów regresji w bardziej zaawansowany sposób: podejście drugie 245
- 7.5.1. Wyniki po sprawdzianie krzyżowym z użyciem różnych miar 246
- 7.5.2. Omówienie wyników ze sprawdzianu krzyżowego 249
- 7.5.3. Składniki resztowe 250
- 7.6. Koniec rozdziału 251
- 7.6.1. Podsumowanie 251
- 7.6.2. Uwagi 251
- 7.6.3. Ćwiczenia 254
CZĘŚĆ III. JESZCZE O METODACH I PODSTAWACH 255
Rozdział 8. Inne metody klasyfikacji 257
- 8.1. Jeszcze o klasyfikacji 257
- 8.2. Drzewa decyzyjne 259
- 8.2.1. Algorytmy budowania drzewa 262
- 8.2.2. Do pracy. Pora na drzewa decyzyjne 265
- 8.2.3. Obciążenie i wariancja w drzewach decyzyjnych 268
- 8.3. Klasyfikatory oparte na wektorach nośnych 269
- 8.3.1. Stosowanie klasyfikatorów SVC 272
- 8.3.2. Obciążenie i wariancja w klasyfikatorach SVC 275
- 8.4. Regresja logistyczna 277
- 8.4.1. Szanse w zakładach 278
- 8.4.2. Prawdopodobieństwo, szanse i logarytm szans 280
- 8.4.3. Po prostu to zrób: regresja logistyczna 285
- 8.4.4. Regresja logistyczna: osobliwość przestrzenna 286
- 8.5. Analiza dyskryminacyjna 287
- 8.5.1. Kowariancja 289
- 8.5.2. Metody 299
- 8.5.3. Przeprowadzanie analizy dyskryminacyjnej 301
- 8.6. Założenia, obciążenie i klasyfikatory 302
- 8.7. Porównanie klasyfikatorów: podejście trzecie 304
- 8.7.1. Cyfry 305
- 8.8. Koniec rozdziału 307
- 8.8.1. Podsumowanie 307
- 8.8.2. Uwagi 307
- 8.8.3. Ćwiczenia 310
Rozdział 9. Inne metody regresji 313
- 9.1. Regresja liniowa na ławce kar - regularyzacja 313
- 9.1.1. Przeprowadzanie regresji z regularyzacją 318
- 9.2. Regresja z użyciem wektorów nośnych 319
- 9.2.1. Zawiasowa funkcja straty 319
- 9.2.2. Od regresji liniowej przez regresję z regularyzacją do regresji SVR 323
- 9.2.3. Po prostu to zrób - w stylu SVR 324
- 9.3. Regresja segmentowa ze stałymi 325
- 9.3.1. Implementowanie regresji segmentowej ze stałymi 327
- 9.3.2. Ogólne uwagi na temat implementowania modeli 328
- 9.4. Drzewa regresyjne 331
- 9.4.1. Przeprowadzanie regresji z użyciem drzew 331
- 9.5. Porównanie metod regresji: podejście trzecie 332
- 9.6. Koniec rozdziału 334
- 9.6.1. Podsumowanie 334
- 9.6.2. Uwagi 334
- 9.6.3. Ćwiczenia 335
Rozdział 10. Ręczna inżynieria cech - manipulowanie danymi dla zabawy i dla zysku 337
- 10.1. Terminologia i przyczyny stosowania inżynierii cech 337
- 10.1.1. Po co stosować inżynierię cech? 338
- 10.1.2. Kiedy stosuje się inżynierię cech? 339
- 10.1.3. Jak przebiega inżynieria cech? 340
- 10.2. Wybieranie cech i redukcja danych - pozbywanie się śmieci 341
- 10.3. Skalowanie cech 342
- 10.4. Dyskretyzacja 346
- 10.5. Kodowanie kategorii 348
- 10.5.1. Inna metoda kodowania i niezwykły przypadek braku punktu przecięcia z osią 351
- 10.6. Relacje i interakcje 358
- 10.6.1. Ręczne tworzenie cech 358
- 10.6.2. Interakcje 360
- 10.6.3. Dodawanie cech na podstawie transformacji 364
- 10.7. Manipulowanie wartościami docelowymi 366
- 10.7.1. Manipulowanie przestrzenią danych wejściowych 367
- 10.7.2. Manipulowanie wartościami docelowymi 369
- 10.8. Koniec rozdziału 371
- 10.8.1. Podsumowanie 371
- 10.8.2. Uwagi 371
- 10.8.3. Ćwiczenia 372
Rozdział 11. Dopracowywanie hiperparametrów i potoki 375
- 11.1. Modele, parametry i hiperparametry 376
- 11.2. Dostrajanie hiperparametrów 378
- 11.2.1. Uwaga na temat słownictwa informatycznego i z dziedziny uczenia maszynowego 378
- 11.2.2. Przykład przeszukiwania kompletnego 378
- 11.2.3. Używanie losowości do szukania igły w stogu siana 384
- 11.3. Wyprawa w rekurencyjną króliczą norę - zagnieżdżony sprawdzian krzyżowy 385
- 11.3.1. Opakowanie w sprawdzian krzyżowy 386
- 11.3.2. Przeszukiwanie siatki jako model 387
- 11.3.3. Sprawdzian krzyżowy zagnieżdżony w sprawdzianie krzyżowym 388
- 11.3.4. Uwagi na temat zagnieżdżonych SK 391
- 11.4. Potoki 393
- 11.4.1. Prosty potok 393
- 11.4.2. Bardziej skomplikowany potok 394
- 11.5. Potoki i dostrajanie całego procesu 395
- 11.6. Koniec rozdziału 397
- 11.6.1. Podsumowanie 397
- 11.6.2. Uwagi 397
- 11.6.3. Ćwiczenia 398
CZĘŚĆ IV. ZWIĘKSZANIE ZŁOŻONOŚCI 399
Rozdział 12. Łączenie mechanizmów uczących się 401
- 12.1. Zespoły 401
- 12.2. Zespoły głosujące 404
- 12.3. Bagging i lasy losowe 404
- 12.3.1. Technika bootstrap 404
- 12.3.2. Od techniki bootstrap do metody bagging 408
- 12.3.3. Przez losowy las 410
- 12.4. Boosting 412
- 12.4.1. Szczegółowe omówienie boostingu 413
- 12.5. Porównywanie metod opartych na zespołach drzew 415
- 12.6. Koniec rozdziału 418
- 12.6.1. Podsumowanie 418
- 12.6.2. Uwagi 419
- 12.6.3. Ćwiczenia 420
Rozdział 13. Modele z automatyczną inżynierią cech 423
- 13.1. Wybieranie cech 425
- 13.1.1. Filtrowanie jednoetapowe z wybieraniem cech na podstawie miar 426
- 13.1.2. Wybieranie cech na podstawie modelu 437
- 13.1.3. Integrowanie wybierania cech z potokiem procesu uczenia 440
- 13.2. Tworzenie cech za pomocą jąder 441
- 13.2.1. Powód używania jąder 441
- 13.2.2. Ręczne metody wykorzystujące jądra 446
- 13.2.3. Metody wykorzystujące jądro i opcje jądra 450
- 13.2.4. Klasyfikatory SVC dostosowane do jądra - maszyny SVM 454
- 13.2.5. Uwagi do zapamiętania na temat maszyn SVM i przykładów 456
- 13.3. Analiza głównych składowych - technika nienadzorowana 457
- 13.3.1. Rozgrzewka - centrowanie 458
- 13.3.2. Znajdowanie innej najlepszej linii 459
- 13.3.3. Pierwsza analiza głównych składowych 461
- 13.3.4. Analiza głównych składowych od kuchni 463
- 13.3.5. Wielki finał - uwagi na temat analizy głównych składowych 469
- 13.3.6. Analiza głównych składowych dla jądra i metody oparte na rozmaitościach 470
- 13.4. Koniec rozdziału 473
- 13.4.1. Podsumowanie 473
- 13.4.2. Uwagi 474
- 13.4.3. Ćwiczenia 478
Rozdział 14. Inżynieria cech dla dziedzin - uczenie specyficzne dla dziedziny 481
- 14.1. Praca z tekstem 482
- 14.1.1. Kodowanie tekstu 484
- 14.1.2. Przykład maszynowego klasyfikowania tekstu 488
- 14.2. Klastrowanie 490
- 14.2.1. Klastrowanie metodą k-średnich 491
- 14.3. Praca z obrazami 492
- 14.3.1. Worek słów graficznych 492
- 14.3.2. Dane graficzne 493
- 14.3.3. Kompletny system 494
- 14.3.4. Kompletny kod transformacji obrazów na postać WGSG 501
- 14.4. Koniec rozdziału 503
- 14.4.1. Podsumowanie 503
- 14.4.2. Uwagi 503
- 14.4.3. Ćwiczenia 505
Rozdział 15. Powiązania, rozwinięcia i kierunki dalszego rozwoju 507
- 15.1. Optymalizacja 507
- 15.2. Regresja liniowa z prostych składników 510
- 15.2.1. Graficzne ujęcie regresji liniowej 513
- 15.3. Regresja logistyczna z prostych składników 514
- 15.3.1. Regresja logistyczna i kodowanie zerojedynkowe 515
- 15.3.2. Regresja logistyczna z kodowaniem plus jeden - minus jeden 517
- 15.3.3. Graficzne ujęcie regresji logistycznej 518
- 15.4. Maszyna SVM z prostych składników 518
- 15.5. Sieci neuronowe 520
- 15.5.1. Regresja liniowa za pomocą sieci neuronowych 521
- 15.5.2. Regresja logistyczna za pomocą sieci neuronowych 523
- 15.5.3. Poza podstawowe sieci neuronowe 524
- 15.6. Probabilistyczne modele grafowe 525
- 15.6.1. Próbkowanie 527
- 15.6.2. Regresja liniowa za pomocą modelu PGM 528
- 15.6.3. Regresja logistyczna za pomocą modelu PGM 531
- 15.7. Koniec rozdziału 534
- 15.7.1. Podsumowanie 534
- 15.7.2. Uwagi 534
- 15.7.3. Ćwiczenia 535
Dodatek A. Kod z pliku mlwpy.py 537
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-6426-4 |
Rozmiar pliku: | 6,7 MB |