Praktyczne uczenie maszynowe - ebook
Praktyczne uczenie maszynowe - ebook
Ostatnia dekada to czas bezprecedensowego rozwoju sztucznej inteligencji – nie tylko przełomowych badań nad algorytmami uczenia maszynowego, ale również coraz powszechniejszego stosowania inteligentnych maszyn w najróżniejszych dziedzinach naszego życia. Rozwój ten ogranicza niewystarczająca liczba specjalistów, łączących znajomość modelowania danych (przygotowania danych i zasad działania algorytmów uczenia maszynowego) ze znajomością języków analizy danych, takich jak SQL, R czy Python. Inżynieria danych (ang. data science) to interdyscyplinarna wiedza, której opanowanie wymaga znajomości algebry, geometrii, statystyki, rachunku prawdopodobieństwa i algorytmiki, uzupełnionej o praktyczną umiejętność programowania. Co więcej, sztuczna inteligencja jest przedmiotem intensywnych badań naukowych i samo śledzenie postępów w tej dziedzinie wiąże się z regularnym (codziennym) dokształcaniem. Niniejsza książka łączy w sobie teorię z praktyką. Opisuje rozwiązania kilkunastu typowych problemów, takich jak prognozowanie zysków, optymalizacja kampanii marketingowej, proaktywna konserwacja sprzętu czy oceny ryzyka kredytowego. Ich układ jest celowy – każdy przykład jest okazją do wyjaśnienia określonych zagadnień, zaczynając od narzędzi, przez podstawy uczenia maszynowego, sposoby oceny jakości danych i ich przygotowania do dalszej analizy, zasady tworzenia modeli uczenia maszynowego i ich optymalizacji, po wskazówki dotyczące wdrożenia gotowych modeli do produkcji. Książka jest adresowana do wszystkich, którzy chcieliby poznać lub udoskonalić: praktyczną znajomość statystki i umiejętność wizualizacji danych niezbędnej do oceny jakości danych; praktyczną znajomość języka SQL, R lub Python niezbędnej do uporządkowania, wstępnego przygotowania i wzbogacenia danych; zasady działania poszczególnych algorytmów uczenia maszynowego koniecznych do ich wyboru i optymalizacji; korzystanie z języka R lub Python do stworzenia, oceny, zoptymalizowania i wdrożenia do produkcji modeli eksploracji danych. Zarówno studenci kierunków informatycznych, jak również analitycy, programiści, administratorzy baz danych oraz statystycy znajdą w książce informacje, które pozwolą im opanować praktyczne umiejętności potrzebne do samodzielnego tworzenia systemów uczenia maszynowego.
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-01-20784-7 |
Rozmiar pliku: | 37 MB |
FRAGMENT KSIĄŻKI
Na podkreślenie również zasługuje, i jest to naprawdę rzadkie, że książka została poszerzona o wiele przykładów możliwych do analizy wraz z danymi wejściowymi. W tekście książki zostały opisane tylko wybrane fragmenty kodu użytego do ilustracji omawianych zagadnień. Kompletną wersję przykładów razem z użytymi danymi można pobrać ze strony Wydawnictwa, a ostatnią wersję przykładów z serwisu Github.
***
Książka napisana jest dobrze, poprawnym językiem i w sposób przejrzysty. Zaproponowany zestaw problemów obejmuje całość tematyki, którą można scharakteryzować jako przewodnik po stosowanych obecnie na świecie systemach uczenia maszynowego, z wykorzystaniem określonego środowiska obliczeniowego i prezentacyjnego (MS SQL Server i język R, język Phyton).
Dlatego w konkluzji stwierdzam, że proponowana książka autorstwa Marcina Szeligi, Praktyczne uczenie maszynowe, jest ważnym i wartościowym podręcznikiem informatyki stosowanej. Będzie on przydatny zarówno dla studentów kierunków informatycznych, zarządzania i marketingu, ekonomii i wielu kierunków ścisłych, jak i dla osób zawodowo pracujących w tych dziedzinach.
prof. zw. dr hab. Tadeusz Wieczorek
Kierownik Katedry Informatyki Przemysłowej Politechniki ŚląskiejDane to nowa ropa.
Clive Humby, Data Scientist w Starcount, 2006
Sztuczna inteligencja to nowa energia elektryczna.
Andrew Ng, Data Scientist w Baidu, założyciel Coursera, profesor na uniwersytecie Stanforda, 2016
Od autora
W ciągu ostatnich 50 lat wydano setki prac poświęconych uczeniu maszynowemu. W większości z nich skoncentrowano się na zagadnieniach teoretycznych, takich jak statystyka, rachunek prawdopodobieństwa oraz budowa i zasada działania algorytmów uczenia maszynowego. Zawarte w tych książkach przykłady albo są opisowe, albo zawierają bardzo proste, w praktyce nieużywane fragmenty kodu. Pozostałe to pozycje czysto praktyczne, przedstawiające sposób budowania konkretnych modeli uczenia maszynowego, w których nie znajdziemy wyjaśnienia działania zastosowanych algorytmów i wynikających z tych zasad ogólniejszych wskazówek.
Książek łączących teorię z praktyką jest niewiele, szczególnie polskojęzycznych. Mam swój pewien wkład w ich liczbę – najpierw napisałem prace o eksploracji danych z użyciem usług analitycznych serwera SQL , , a następnie o uczeniu maszynowym w chmurze . Zdobywane w krajowych i międzynarodowych projektach doświadczenie, a także rosnąca dostępność coraz łatwiejszych w użyciu i jednocześnie coraz bardziej funkcjonalnych narzędzi uczenia maszynowego pozwoliły mi napisać tę książkę.
Opisałem w niej rozwiązania kilkunastu typowych problemów, takich jak prognozowanie zysków, optymalizacja kampanii marketingowej, proaktywna konserwacja sprzętu czy oceny ryzyka kredytowego. Ich układ jest celowy – każdy przykład jest okazją do wyjaśnienia określonych zagadnień, zaczynając od narzędzi, przez podstawy uczenia maszynowego, sposoby oceny jakości danych i ich przygotowania do dalszej analizy, zasady tworzenia modeli uczenia maszynowego i ich optymalizacji, po wskazówki dotyczące wdrożenia gotowych modeli do produkcji. Wszystkie przykłady są prowadzone według powszechnie stosowanej metodyki CRISP-DM (CRoss Industry Standard Process for Data Mining) .
Chociaż termin sztuczna inteligencja nie występuje w tytule, na wstępie wyjaśniam, czym jest sztuczna inteligencja, jak doszło do sytuacji, w której sztuczna inteligencja zmienia nasz świat, i jaki jest jej związek z uczeniem maszynowym.
Marcin Szeliga
Microsoft Most Valuable Professional
w kategorii Artificial Intelligence,
pracownik naukowy Wyższej Szkoły Bankowej
w Poznaniu, Wydział Zamiejscowy w ChorzowieSztuczna inteligencja
Ilość cyfrowych danych generowanych każdego dnia jest niewyobrażalna – szacuje się ją na 3 tryliony bajtów i liczba ta z dnia na dzień rośnie. Dla porównania, mózg człowieka składa się z około 90 miliardów neuronów. Oznacza to, że codziennie zapisujemy cyfrowo dane równe mózgom 330 mln ludzi reprezentowanych sumą ich neuronów.
Szybkość, z jaką przeszliśmy od mierzenia wielkości danych w kilobajtach (10³) do megabajtów (10⁶), gigabajtów (10⁹), terabajtów (10¹²) i jottabajtów(10²⁴), jest niewiarygodna. Każdego roku generujemy więcej danych niż we wszystkich poprzednich latach od początku historii naszego gatunku. Ten wzrost zawdzięczamy przede wszystkim urządzeniom mobilnym i wszechobecnym, podłączonym do sieci czujnikom.
Jednak dane jako takie są bezwartościowe. To zawarte w nich informacje są cenne. Algorytmy uczenia maszynowego automatycznie wykrywają wzorce ukryte w danych i zapisują je w postaci modeli. Tak nauczone modele są mózgami inteligentnych maszyn.
Dostępne w ogromnych ilościach dane uzupełnione o techniczne możliwości ich przetwarzania doprowadziły do bezprecedensowego rozwoju sztucznej inteligencji (ang. artificial intelligence, AI) – nie tylko do przełomowych badań nad algorytmami uczenia maszynowego, lecz także do coraz powszechniejszych zastosowań inteligentnych maszyn w najróżniejszych dziedzinach naszego życia. Od 2012 r. rynek AI – mierzony wartością globalnych inwestycji oraz wartością kontraktów – podwaja się co dwa lata: wartość ujawnionych inwestycji w 2012 r. wyniosła 590 mln USD przy sumarycznej wartości kontraktów wynoszącej 160 mln USD; w 2017 r. inwestycje przekroczyły 9 miliardów USD, a wartość kontraktów – 900 mln USD.
Historia zna kilka przykładów tak głębokich zmian cywilizacyjnych i nazywa je rewolucjami przemysłowymi. Wszystkie dotychczasowe rewolucje przemysłowe były wywołane odkryciem nowej technologii¹:
- pierwszą zawdzięczamy zastosowaniu pary wodnej w przemyśle, przede wszystkim w transporcie kolejowym (XVIII w.);
- drugą – użyciu na szeroką skalę elektryczności (początek XX w.);
- trzecią (nazwaną naukowo-techniczną) – integracji przemysłu z informatyką, co przyniosło cyfryzację procesów produkcyjnych (lata 70. XX w.).
Dzisiaj jesteśmy świadkami czwartej rewolucji przemysłowej, którą zawdzięczamy stosowaniu na coraz szerszą skalę sztucznej inteligencji i która, tak jak wszystkie wcześniejsze rewolucje przemysłowe, całkowicie zmienia świat, w którym żyjemy.
Czym jest sztuczna inteligencja? Inteligencję przypisuje się ludziom oraz zwierzętom, jednak nawet użyty wyłącznie w odniesieniu do ludzi termin ten jest niejednoznaczny. Psychologowie definiują inteligencję m.in. jako zdolność rozwiązywania problemów (Jean Piaget), umiejętność dostrzegania zależności (Charles Spearman) lub jako zdolność uczenia się (George Ferguson). Różne są też poglądy na temat charakteru inteligencji. Gdyby za jej cechę zasadniczą uznać zdolność do twórczego, a nie tylko mechanicznego przetwarzania informacji, za inteligentnych należałoby uznać tylko niektórych ludzi . Jednocześnie, jeżeli przyjmiemy, że inteligencja polega na zdolności do przetwarzania informacji na poziomie abstrakcyjnych idei, za obdarzonych inteligencją można uznać nie tylko ludzi, lecz także zwierzęta i maszyny.
Przyjęcie takiej definicji inteligencji pozwala określić sztuczną inteligencję jako dziedzinę zajmującą się tworzeniem sztucznych, obdarzonych inteligencją maszyn. Prekursor AI, Alan M. Turing, w swojej pionierskiej, wydanej w 1950 r. pracy Computing Machinery and Intelligence sformułował test, który miał odpowiedzieć na pytanie: Kiedy maszyna zachowuje się w sposób inteligentny? . Według Turinga maszynę można uznać za inteligentną, gdy człowiek tester nie jest w stanie odróżnić odpowiedzi maszyny od odpowiedzi człowieka. Pomysł Turinga zmienił podejście do badań nad sztuczną inteligencją – filozoficzne pytanie o istotę inteligencji zostało zastąpione pragmatyczną oceną skutków bycia inteligentnym.
Aby zdać pełny test Turinga, maszyna powinna mieć zdolność do przetwarzania języka naturalnego, uczenia się i stosowania zdobytej wiedzy, wnioskowania oraz do rozpoznawania obrazów i poruszania się, w tym do przemieszczania obiektów – jak do tej pory żadnej maszynie się to nie udało. Sam test jest zresztą niesformalizowany i od dawna nie jest stosowany w praktyce.
Narodziny sztucznej inteligencji jako dyscypliny naukowej datuje się na 1956 r. Uczestnicy warsztatu, w którym uczestniczył też twórca terminu sztuczna inteligencja – John McCarthy, sformułowali wtedy hipotezę, według której każdy aspekt uczenia się, a także każda inna własność inteligencji, mogą być opisane tak precyzyjnie, że możliwe będzie zbudowanie maszyny zdolnej do ich symulacji . Efektem przyjęcia tej hipotezy są nadal prowadzone badania nad opracowanymi wtedy pierwszymi wersjami algorytmów uczenia maszynowego, takich jak perceptron czy drzewa decyzyjne.
Rozczarowanie wynikające m.in. z niespełnienia nadmiernie optymistycznych zapowiedzi przyszło w 1974 r. Nie tylko systemy sztucznej inteligencji nie znalazły praktycznych zastosowań (czego powodem była niewystarczająca moc obliczeniowa ówczesnych komputerów), lecz pojawiły się także poważne teoretyczne wątpliwości co do możliwości rozwiązywania przez nie różnych zadań, bez konieczności dostosowywania danych treningowych do konkretnych problemów.
Drugą falę rozwoju badań nad sztuczną inteligencją, przypadającą na lata 1980–1987, zawdzięczamy nadziejom pokładanym w systemach eksperckich. System ekspercki jest systemem, który automatycznie uczy się rozwiązywać problemy na podstawie podanych mu reguł. Początkowo do działania wymagały one specjalistycznych i drogich komputerów, co przyczyniło się do kolejnego kryzysu. Udało się go przezwyciężyć w 1993 r., demonstrując praktyczne zastosowania systemów eksperckich działających już na standardowych komputerach, choć wielokrotnie szybszych od typowych serwerów z tego czasu. Największym sukcesem systemów eksperckich było pokonanie w 1997 r. przez system Deep Blue (superkomputer ze specjalnie zaprojektowanymi układami scalonymi VLSI do realizacji algorytmu przeszukiwania alfa-beta) ówczesnego szachowego mistrza świata Garriego Kasparova. W rewanżowym meczu szachowym komputer wygrał z nim 3½ do 2½ (pierwszy, rozegrany rok wcześniej mecz Kasparov wygrał z poprzednią wersją komputera Deep Blue 4 do 2).
Uczenie komputerów szczegółowych reguł postępowania okazało się jednak niesłychanie skomplikowane. Gra w szachy rządzi się niewielką liczbą dobrze ustalonych i niezmiennych reguł, więc Deep Blue, analizując 200 mln pozycji na sekundę, był w stanie sprawdzić wszystkie możliwe kombinacje kilkunastu kolejnych ruchów. Ale takie podejście nie pozwalało rozwiązywać problemów rządzących się bardziej skomplikowanymi, a tym bardziej nieznanymi regułami.
W tym samym roku, gdy Deep Blue wygrał z Kasparovem, Tom Mitchell wydał książkę zatytułowaną Machine Learning, w której podał definicję uczenia maszynowego: Program komputerowy uczy się z doświadczenia E w odniesieniu do pewnej klasy zadań T i miary wydajności P, jeśli jego skuteczność w zadaniach w T, mierzona wydajnością P, poprawia się wraz z doświadczeniem E . Szybko okazało się, że podejście polegające na tym, że to komputer sam ma znaleźć sposób rozwiązywania problemów na podstawie danych historycznych, pozwala tworzyć systemy sztucznej inteligencji mające praktyczne zastosowanie w wielu dziedzinach życia. Rozpoczęła się trzecia fala rozwoju AI – etap uczenia maszynowego. Wiele używanych dzisiaj systemów sztucznej inteligencji należy do tej właśnie, opisanej w książce, kategorii.
Algorytmy uczenia maszynowego trenuje się na danych historycznych, czyli na przykładach. Podczas uczenia algorytm wykrywa ukryte w tych przykładach wzorce i na ich podstawie tworzy model uczenia maszynowego. Taki model może być następnie używany do predykcji, czyli uzupełniania brakujących danych o nowych, nieznajdujących się w treningowym zbiorze danych obserwacji. Na przykład model nauczony na danych sprzedażowych może przewidzieć przyszłą wartość sprzedaży, model nauczony na historiach chorób pacjentów może oceniać postępy leczenia nowych pacjentów, a model nauczony na danych opisujących działanie sieci wodociągowej – przewidywać zużycie wody, wykrywać próby kradzieży albo znajdować bieżące i przyszłe awarie wodociągów.
Skoro uczenie maszynowe polega na wykrywaniu ukrytych w przykładach treningowych wzorców, to im większą ilością danych dysponujemy, tym lepsze osiągniemy rezultaty. Jednak wraz ze wzrostem ilości danych treningowych rosną również wymagania obliczeniowe. Podam prosty przykład – zdjęcie zrobione w rozdzielczości 800 × 600 zawiera prawie 1,5 mln liczb reprezentujących wartości RGB określających kolory poszczególnych pikseli, a jest to rozdzielczość mniejsza niż typowa dla współczesnych zdjęć. Problem wydajności obliczeń rozwiązały akceleratory graficzne ogólnego zastosowania (ang. general-purpose computing on graphics processing units, GPGPU) . Przewagą GPU nad CPU jest ich równoległa architektura pozwalająca na wykonywanie w ciągu sekundy tysięcy razy większej liczby prostych operacji matematycznych, takich jak mnożenie macierzy. Trzecim, równie ważnym czynnikiem, który przyczynił się do kolejnego rozkwitu badań nad sztuczną inteligencją, było opracowanie nowych algorytmów pozwalających maszynom efektywnie uczyć się nie tylko na podstawie danych treningowych, lecz przede wszystkim na podstawie samodzielnie wyodrębnionych z tych danych abstrakcyjnych właściwości. Rozpoczęła się trwająca do dziś era głębokiego uczenia maszynowego (ang. deep learning, DL), w której sztuczna inteligencja uczy się na podstawie automatycznie wykrywanych abstrakcyjnych cech, z wykorzystaniem takich algorytmów uczenia maszynowego jak konwolucyjne sieci neuronowe i rekurencyjne sieci neuronowe .
Na tym etapie sztuczna inteligencja szybko dogoniła, a następnie przegoniła ludzi w wybranych dziedzinach. Na przykład boty potrafią rozmawiać na zadane tematy, takie jak rezerwacja samolotu czy hotelu, a systemy rozpoznawania obrazów klasyfikować przedmioty widoczne na zdjęciach czy nagraniach wideo. Cechą charakterystyczną systemów głębokiego uczenia maszynowego jest zdolność do rozwiązywania problemów, których pokonanie ludziom przychodzi stosunkowo łatwo, natomiast maszyny wcześniej nie potrafiły sobie z nimi poradzić.
Maszyny nauczyły się przede wszystkim słyszeć i rozumieć zdania wypowiadane w takich językach jak angielski czy chiński. Już w 2012 r. procent popełnianych przez nie błędów (błędnie zrozumianych wypowiedzi) spadł poniżej 4%. W tym czasie maszyny potrafiły oprócz tego mówić, popełniając mniej błędów niż statystyczny człowiek. Pięć lat później maszyny nauczyły się tłumaczyć (na język chiński, a następnie angielski) jak ludzie.
Postęp w dziedzinie rozpoznawania obrazów również był imponujący. W 2012 r. system uczenia maszynowego prawidłowo rozpoznał 74% pokazanych mu przedmiotów. W następnym roku było to już 85% (ten wynik zawdzięczamy rozwojowi konwolucyjnych sieci neuronowych), a trzy lata później głęboka sieć neuronowa osiągnęła wynik 97% – o trzy procent lepszy od wyniku typowego człowieka.
Szybkość, z jaką AI jest w stanie nauczyć się nowych umiejętności, najlepiej pokazuje historia systemu AlphaGo. Ludzie doskonalą umiejętność gry w Go od stuleci. Tymczasem w 2015 r. AlphaGo wygrał 3:0 z trzykrotnym mistrzem Europy w Go Fan Hui. Rozegrany rok później w Seulu mecz (który obejrzało ponad 200 mln widzów) z Lee Sedolem, powszechnie uznawanym za najwybitniejszego gracza w Go ostatniego dziesięciolecia, AlphaGo wygrał 4 do 1. Co więcej, grał tak innowacyjnie, że w znaczący sposób wzbogacił gromadzoną przez stulecia wiedzę na temat tej gry. W lutym 2017 r. AlphaGo Master, udoskonalona wersja AlphaGo, wygrała 60 meczów pod rząd przeciwko światowej czołówce graczy Go, co pozwala uznać ją za najlepszego gracza Go w historii.
Systemy AlphaGo uczyły się gry w Go, analizując tysiące partii rozegranych przez zawodowych i amatorskich graczy. Zupełnie inaczej uczył się system AlphaGo Zero. W tym przypadku zastosowano metodę uczenia ze wzmacnianiem – komputer grał sam ze sobą, ucząc się na własnych błędach. Po trzech dniach takiej nauki przekroczył on poziom systemu AlphaGo z 2015 r., kiedy to AlphaGo wygrał z Fan Hui. 21 dni nauki wystarczyły do osiągnięcia poziomu AlphaGo Master z 2017 r., kiedy to system ten wygrał 60 meczów z najlepszymi graczami Go, w tym mistrzem Ke Jie. Po 40 dniach treningu AlphaGo Zero osiągnął poziom wyższy niż poziom wszystkich innych systemów AlphaGo, co pozwala go uznać za najlepszego gracza Go w tysiącletniej historii tej gry.O książce
Model uczenia maszynowego z dużą dokładnością przewiduje postępy leczenia pacjentów – to jeden z wielu podobnych nagłówków prasy popularno-naukowej, znaleziony w czasopiśmie Nature podczas pisania tego wstępu . Książka uczy, jak samodzielnie budować takie światowej klasy modele uczenia maszynowego i jak wdrażać gotowe modele do użycia.
Modele uczenia maszynowego mogą być używane do predykcji, opisywania wzorców ukrytych w danych (deskrypcji) oraz do kompresji i generowania danych (np. do generowania obrazów lub opisów sekwencji wideo). Książka koncentruje się na najpopularniejszych modelach predykcyjnych, czyli modelach stosujących wykryte w treningowych danych wzorce do uzupełniania brakujących danych o nowych przypadkach, niewidzianych przez model podczas treningu.
Dla kogo jest ta książka?
Rynek sztucznej inteligencji rośnie na tyle szybko, że specjalistów od przetwarzania danych ciągle brakuje. Inżynieria danych (ang. data science) to interdyscyplinarna wiedza, której opanowanie wymaga znajomości algebry, geometrii, statystyki, rachunku prawdopodobieństwa i algorytmiki, uzupełniona o praktyczną umiejętność programowania w przynajmniej dwóch z trzech najpopularniejszych językach danych: SQL, R lub Python. Co więcej, sztuczna inteligencja jest przedmiotem intensywnych badań naukowych i samo śledzenie postępów w tej dziedzinie wiąże się z regularnym (codziennym) dokształcaniem. Nic dziwnego, że inżynierowie danych są jednymi z najbardziej pożądanych i najlepiej wynagradzanych pracowników.
Zbudowanie modelu uczenia maszynowego wymaga:
- specjalistycznej wiedzy z dziedziny, w ramach której projekt jest realizowany (np. medycyny czy logistyki transportu); prawie zawsze wymaga to wsparcia eksperta z danej dziedziny;
- praktycznej znajomości statystki i umiejętności wizualizacji danych niezbędnej do oceny jakości danych;
- praktycznej znajomości języka SQL, R lub Python niezbędnej do uporządkowania, wstępnego przygotowania i wzbogacenia danych;
- zrozumienia zasad działania poszczególnych algorytmów uczenia maszynowego koniecznych do ich wyboru i optymalizacji (do czego przyda się z kolei znajomość algebry i geometrii);
- użycia języka R lub Python do stworzenia, oceny, zoptymalizowania i wdrożenia do produkcji modeli eksploracji danych (do oceny jakości modeli ponownie przyda się znajomość statystyki uzupełniona o wiedzę z zakresu rachunku prawdopodobieństwa).
Książka jest adresowana do wszystkich, którzy chcieliby poznać lub udoskonalić swoją wiedzę z powyższych (z wyjątkiem pierwszego) obszarów. Tego typu książki mogą być przystępne, napisane językiem potocznym i ilustrowane praktycznymi przykładami lub dokładne – pełne precyzyjnych równań matematycznych. Z założenia książka ma być przystępna, co oznacza, że opisowe wyjaśnienia pozostawiają Czytelnikowi możliwość ich różnorodnego interpretowania. Problem ten starałem się rozwiązać, ilustrując opisywane zagadnienia praktycznymi przykładami, których samodzielne wykonanie powinno rozwiać ewentualne niejasności. Takie podejście ma tę dodatkową zaletę, że kładzie nacisk na cenniejsze od wiedzy teoretycznej umiejętności praktyczne .
Liczę, że dzięki temu trafię do szerokiego grona Czytelników i zarówno studenci kierunków informatycznych, jak również analitycy, programiści, administratorzy baz danych oraz statystycy znajdą w książce informacje, które pozwolą im opanować praktyczne umiejętności potrzebne do samodzielnego tworzenia systemów uczenia maszynowego. Na koniec dodam, że umiejętność czytania ze zrozumieniem kodu SQL, R i Python na pewno ułatwi lekturę książki.
Narzędzia
Zilustrowanie opisanych w książce zagadnień praktycznymi przykładami wymagało wyboru jakichś narzędzi. Wybór padł na serwer SQL Server 2019 i program Power BI Desktop, ponieważ:
- oba te narzędzia są dostępne za darmo; edycja SQL Server Developer Edition ma pełne wsparcie dla opisanych w książce usług uczenia maszynowego i może być bezpłatnie używana do nauki oraz testów, jedynie produkcyjne wykorzystanie utworzonych modeli będzie wymagało zakupu odpowiedniej licencji; natomiast program Power BI Desktop jest całkowicie darmowy i może być wykorzystywany do dowolnych celów, również komercyjnych;
- SQL Server może być zainstalowany w środowiskach Windows, Linux lub na platformie Docker;
- SQL Server pozwala wydajnie przechowywać duże zbiory danych i przetwarzać je za pomocą języka SQL;
- usługi uczenia maszynowego serwera SQL Server pozwalają tworzyć modele uczenia maszynowego przy użyciu języków R, Python lub Java;
- integracja języków R, Python i Java z serwerem SQL Server wykracza poza prostą możliwość uruchamiania skryptów tych języków po stronie serwera i pozwala nie tylko wydajnie analizować dane, lecz także wdrażać gotowe modele uczenia maszynowego do użycia;
- usługa Power BI i program Power BI Desktop są kompletnymi narzędziami do tworzenia samoobsługowych systemów BI; pozwalają one w prosty sposób pobrać dane z różnych źródeł, dowolnie je przekształcać, tworzyć rozbudowane modele biznesowe i interaktywne, rozbudowane wizualizacje;
- agencja Gartnera od wielu lat wysoko pozycjonuje oba te produkty w swoich corocznych raportach (rys. 1).
Rysunek 1. Po lewej stronie – raport dotyczący serwerów baz danych w zastosowaniach analitycznych (Gartner’s 2018 Magic Quadrant for Data Management Solutions for Analytics), po prawej – raport przedstawiający platformy BI (Gartner’s 2019 Magic Quadrant for Analytics and Business Intelligence Platforms)
Przykłady
W tekście książki zostały opisane tylko wybrane fragmenty kodu użytego do ilustracji omawianych zagadnień. Kompletną wersję przykładów razem z użytymi danymi można pobrać ze strony Wydawnictwa, a ich ostatnią wersję z serwisu Github. Całość repozytorium możecie Państwo pozyskać wieloma sposobami, jednym z nich jest zastosowanie narzędzia Git, dostępnego w systemach Windows oraz Linux. Przykładowo, korzystając z polecenia:
Pod adresem https://it.pwn.pl/Artykuly/Praktyczne-uczenie-maszynowe-materialy-dodatkowe znajdą Państwo archiwum ZIP z kopią bazy danych serwera SQL Server 2019 zawierającą oprócz tabel z danymi, widoki, procedury składowane i funkcje potrzebne do utworzenia opisywanych modeli uczenia maszynowego. Archiwum to zawiera również podzielone między foldery pliki z danymi, pliki Power BI Desktop i skrypty w językach R i Python, które pomogą Państwu wykonać opisywane projekty.
Pod adresem https://github.com/szelor/practical-machine-learning znajdą Państwo podzielone między foldery repozytorium zawierające pliki z danymi, pliki Power BI Desktop i skrypty w językach R i Python, które pomogą Wam wykonać opisywane projekty. W repozytorium nie znajdują jednak Państwo kopii przykładowej bazy danych, zbyt dużej, żeby można było ją tu udostępnić.
Najprościej jest skorzystać z gotowych plików i w ten sposób przekonać się, jak działają poszczególne modele, skorzystać z interaktywnych wizualizacji danych i spojrzeć na kolorowe wykresy w wysokiej rozdzielczości. Zachęcam jednak do wspólnego rozwoju tego projektu – każdy może modyfikować i rozbudowywać te skrypty, a następnie dzielić się wynikami swojej pracy z innymi.
Bibliografia
Do książki została dołączona bibliografia. Starałem się umieścić w niej jak najwięcej odnośników do ogólnodostępnych, elektronicznych wersji wymienionych w niej pozycji. Oczywiście, jeżeli jakaś pozycja nie jest dostępna za darmo, odnośnika do niej nie ma. Namawiam do zapoznania się z tymi artykułami i książkami – zarówno tymi klasycznymi, pochodzącymi z lat 70. XX w., jak i opisującymi wyniki najnowszych badań w obszarze uczenia maszynowego.
Konwencje i oznaczenia
W książce zostały zastosowane następujące konwencje do oznaczania różnych typów tekstu:
- czcionką pogrubioną są wyróżnione nowe, istotne zagadnienia, na które czytelnik powinien zwrócić uwagę;
- czcionką pochyłą są pisane nazwy własne w miejscach ich pierwszego użycia oraz angielskie odpowiedniki wprowadzanych pojęć;
- czcionką stałej szerokości znaków są pisane przykładowe programy, pojawiające się w treści akapitu fragmenty programów (instrukcje, słowa kluczowe, modyfikatory itp.), polecenia wprowadzane z klawiatury, teksty wyświetlane na ekranie oraz adresy internetowe;
- uwagi, wskazówki, ciekawostki, dobre rady lub ostrzeżenia są pisane
mniejszym stopniem pisma i wyróżnione znakiem widocznym obok.