Przygotowanie



Ugruntowanym faktem jest, że my, ludzie, uczymy się poprzez doświadczenie. We wczesnym dzieciństwie uczymy się naśladować dźwięki, formować słowa, grupować je w frazy i wreszcie, jak rozmawiać z inną osobą. Później, w szkole podstawowej, uczymy się cyfr i liter, jak je rozpoznawać i jak używać ich do obliczeń i literowania słów. Kiedy dorastamy, włączamy te lekcje do wielu różnych rzeczywistych sytuacji i okoliczności. Uczymy się również na podstawie naszych błędów i sukcesów, a następnie wykorzystujemy je do tworzenia strategii podejmowania decyzji, które będą skutkować lepszą wydajnością w naszym codziennym życiu. Podobnie, jeśli maszyna - a ściślej program komputerowy - może poprawić sposób wykonywania określonego zadania na podstawie wcześniejszych doświadczeń, możesz powiedzieć, że się nauczył lub wyodrębnił wiedzę z danych. Pojęcie uczenia maszynowego zostało po raz pierwszy zdefiniowane przez Arthura Samuela w 1959 r. w następujący sposób:

"Uczenie maszynowe to dziedzina nauki, która daje komputerom możliwość uczenia się bez wyraźnego programowania.:

Opierając się na tej definicji, opracował coś, co później stało się algorytmem gry w warcaby Samuela, którego celem było wybranie następnego ruchu na podstawie wielu czynników (liczby i pozycji pionów - w tym królów - po każdej stronie). Algorytm ten został po raz pierwszy wykonany przez komputer IBM, który włączył do swojego programu udane i zwycięskie ruchy, dzięki czemu nauczył się grać w grę poprzez doświadczenie. Innymi słowy, komputer nauczył się wygrywać strategie, wielokrotnie grając w grę. Z drugiej strony, zwykła gra w warcaby, która jest skonfigurowana przy użyciu tradycyjnego programowania, nie może uczyć się i ulepszać poprzez doświadczenie, ponieważ może otrzymać jedynie stały zestaw autoryzowanych ruchów i strategii. W przeciwieństwie do tradycyjnego uczenia się (w którym program i dane wejściowe są wprowadzane do komputera w celu uzyskania pożądanych wyników lub rezultatów), uczenie maszynowe koncentruje się na badaniu algorytmów, które pomagają poprawić wydajność danego zadania poprzez doświadczenie - czyli wykonania lub uruchamia ten sam program. Innymi słowy, ogólnym celem jest zaprojektowanie programów komputerowych, które mogą uczyć się na podstawie danych i dokonywać prognoz na podstawie tego uczenia się. Jak odkryjemy w tej książce, uczenie maszynowe ma silne powiązania ze statystyką i eksploracją danych i może pomóc w procesie podsumowywania danych do analizy, prognozowania (znany również jako regresja) i klasyfikacja. Firmy i organizacje korzystające z narzędzi do uczenia maszynowego mają zatem możliwość wydobywania wiedzy z tych danych w celu zwiększenia przychodów i produktywności ludzi lub zmniejszenia kosztów i strat związanych z ludźmi. Aby skutecznie korzystać z uczenia maszynowego, pamiętaj, że musisz zacząć od pytania. Na przykład, jak mogę zwiększyć przychody mojej firmy? Jakie wydają się być tendencje przeglądania wśród odwiedzających moją stronę? Jakie są główne produkty kupione przez moich klientów i kiedy? Następnie, analizując powiązane dane za pomocą wyszkolonej maszyny, możesz podejmować świadome decyzje na podstawie podanych przez nią prognoz i klasyfikacji. Jak widać, uczenie maszynowe nie uwalnia Cię od podejmowania działań, ale zapewnia niezbędne informacje, aby zapewnić, że działania te są odpowiednio wspierane przez dokładną analizę. Gdy w analizie mają zostać wykorzystane znaczne ilości danych (setki milionów, a nawet miliardy rekordów), taka operacja jest po prostu poza zasięgiem człowieka. Zastosowanie uczenia maszynowego może pomóc osobie lub firmie nie tylko odkryć wzorce i relacje w tym scenariuszu, ale także zautomatyzować obliczenia, dokonać dokładnych prognoz i zwiększyć wydajność.



Co musisz wiedzieć o uczeniu maszynowym



•  Omówimy podstawy i rzeczy, które naprawdę musisz wiedzieć, a nie obszary niszowe lub specjalistyczne.
•  Załóżmy, że wywodzisz się z dość technicznego zaplecza, więc rozumiesz, czym jest technologia i co ogólnie robi.
•  Skoncentruj się na tym, czym są rzeczy i jak działają.
•  Dołączymy 3-5 praktycznych przykładów, aby szybko rozpocząć pracę i zwiększyć produktywność.



Rodzaje Uczenia Maszynowego



Uczenie maszynowe można podzielić na trzy kategorie na podstawie cech dostarczanych danych i metodologii szkolenia:

•  Nadzorowana nauka
•  Uczenie się przez wzmocnienie
•  Przeanalizujmy każdy z nich szczegółowo.



Nauka Nadzorowana



Dzięki nadzorowanemu uczeniu maszyna jest trenowana przy użyciu zestawu oznakowanych danych, gdzie każdy element składa się z danych par danych wejściowych / wyników. Maszyna uczy się związku między danymi wejściowymi a wynikiem, a celem jest przewidywanie zachowania lub podejmowanie decyzji na podstawie wcześniej podanych danych. Na przykład możemy dostarczyć maszynie następujące dane wejściowe, aby uzyskać konkretne wyniki:

•  Zestaw liczb całkowitych (lub liter), a następnie wytrenuj ją, aby rozpoznawał odręczny numer lub literę.
•  Zestaw nut, a następnie naucz ją rozpoznawania nazwy i powiązanej wysokości dźwięku.
•  Zdjęcia zwierząt z ich nazwami, a następnie trenuj ją w celu identyfikacji danego zwierzęcia.
•  Lista filmów, które dana osoba oglądała, a następnie trenuj ją, aby ustalić, czy dana osoba polubi jakiś inny film (jeśli tak, podaj go jako zalecenie).
•  Szereg wiadomości e-mail otrzymanych w skrzynce odbiorczej, a następnie przeszkolonych w zakresie odróżniania wiadomości spamowych od wiarygodnych.
•  Lista nawyków przeglądania stron internetowych, a następnie naucz ją, jak odpowiednio sugerować wyszukiwanie. Osoba, której wyszukiwania w sieci są głównie związane z podróżowaniem, uzyska nieco inne wyniki niż osoba, która często szuka okazji do szkolenia, gdy wprowadzi słowo "pociąg" w wyszukiwarce internetowej.

W poprzednich przykładach pamiętaj, że musisz oznaczyć dane przed podaniem ich do urządzenia. W przykładzie listy filmów rozważmy raczej niewielki zestaw danych z dwiema osobami o nazwach A i B:

Oznaczenie  :  Oglądane filmy

A  :  Harry Potter i Kamień Filozoficzny

A  :  Harry Potter i więzień Azkabanu

B  :  Star Wars: Episode IV - A New Hope

A  :  Harry Potter i Zakon Feniksa

B  :  Imperium kontratakuje

B  :  Star Wars: Episode VI - Return of the Jedi

A  :  Harry Potter i Insygnia Śmierci - część 1

B  :  Star Wars: Episode I - The Phantom Menace

Na podstawie powyższych danych możemy wywnioskować, że osoba A jest fanem Harry′ego Pottera (być może jest także fanem filmów fantasy), podczas gdy B lubi filmy Gwiezdne Wojny (być może także science fiction). Odpowiedzi na pytania takie jak "A", "Harry Potter i Komnata Tajemnic" lub "Percy Jackson i Olimpijczycy: Złodziej Błyskawicy"? i czy osoba B chciałaby oglądać "Star Wars: The Force Awakens" lub "Star Trek"? to przewidywania, których oczekuje się od maszyny. Następnie, ilekroć nowy film stanie się dostępny, nasz algorytm powinien przewidzieć, czy jedna z dwóch osób, czy obie z nich się spodoba, czy nie. Jak zapewne do tej pory się przekonałeś, sukces nadzorowanego uczenia się zależy w dużej mierze od jakości i wielkości zestawu szkoleniowego. Im jest on większy i dokładniejszy, tym lepsze przewidywania i klasyfikacje grupowe maszyna będzie w stanie wykonać, gdy otrzyma dane do analizy w przyszłości



Nauka Bez Nadzoru



Dzięki uczeniu bez nadzoru maszyna jest szkolona z nieoznaczonymi danymi, a celem jest grupowanie elementów w oparciu o podobne cechy lub cechy, które czynią je wyjątkowymi. Grupy te są często nazywane klastrami. Nie szukamy tutaj konkretnej, właściwej, a nawet przybliżonej pojedynczej odpowiedzi. Zamiast tego dokładność wyników wynika z podobieństw w charakterystyce lub zachowaniu między członkami tej samej grupy w porównaniu do siebie oraz różnic z elementami innej grupy. Aby to zilustrować, wykorzystamy odmianę niektórych z poprzednich przykładów uczenia nadzorowanego. Jeśli dostarczysz urządzeniu następujące elementy:

•  Zestaw odręcznych cyfr i liter, może pomóc ci podzielić zestaw z liczbami w jednej grupie i literami w innej
•  Liczba zdjęć, w których jest tylko jedna osoba, może pomóc w grupowaniu ich na podstawie pochodzenia etnicznego, koloru włosów lub oczu itd.
•  Lista przedmiotów zakupionych w sklepie internetowym, może pomóc określić nawyki zakupowe i pogrupować je według lokalizacji geograficznej lub wieku

Należy pamiętać, że w tym przypadku nie podano wyraźnego wskazania liczby klastrów i rzeczywistej reprezentacji dostarczonych danych. Ponadto nazwy kategorii nie są początkowo podawane, a na samym początku możesz jedynie określić granice między nimi.



Nauka Przez Wzmocnienie



Wreszcie, uczenie się przez wzmocnienie jest podobne do uczenia się bez nadzoru, ponieważ zestaw danych szkoleniowych jest nieoznaczony, ale różni się od niego tym, że uczenie się opiera się na nagrodach i karach - za brak lepszych warunków wstępnych - które wskazują, jak ściśle lub w inny sposób dany element pasuje do określonego warunku grupowania. Aby to zilustrować, wróćmy na chwilę do gry w warcaby i wyobraź sobie siebie, grając przeciwko maszynie korzystającej z algorytmu uczenia się zbrojenia. W miarę jak komputer gra coraz więcej gier, wygrane gry służą do wzmocnienia ważności wykonanych ruchów. Odbywa się to poprzez przypisanie wyniku każdemu ruchowi w zwycięskiej grze. Ruchy, które skutkują złapaniem kontrolera przeciwnika, mają wysoki wynik (lub nagrodę), podczas gdy ruchy, które kończą się zdobyciem twojego przeciwnika, mają niski wynik (lub karę). Ponieważ proces ten powtarza się w kółko, maszyna może wymyślić zestaw ruchów o wysokich wynikach, które gwarantują zwycięską strategię.



Przegląd Typów Uczenia Maszynowego



Biorąc pod uwagę konkretny scenariusz, oto kilka przemyśleń i przykładów, które mogą pomóc w określeniu rodzaju uczenia maszynowego:

•  Nauka Nadzorowana wyraźnie zapewnia odpowiedź lub rzeczywiste wyniki w danych szkoleniowych. W ten sposób może pomóc w budowaniu modelu do przewidywania wyniku w przyszłych przypadkach. Tę koncepcję można zilustrować za pomocą wcześniej pokazanej listy filmów. Indywidualny A oglądał Harry'ego Pottera i Kamień Filozoficzny, Harry'ego Pottera i Więźnia Azkabanu, Harry'ego Pottera i Zakonu Feniksa oraz Harry'ego Pottera i Insygniów Śmierci - Część 1. Tutaj każdy film jest rezultatem lub odpowiedzią na pytanie: "Który film obejrzał Indywidualny A?". Jak wspominaliśmy wcześniej, im większy zbiór danych, tym dokładniejsza będzie odpowiedź na pytanie "Czy Indywidualny A polubi ten (lub tamten) film?".
•  Nauka Bez Nadzoru zapewnia jedynie dane wejściowe jako część zestawu danych szkoleniowych. Pojęcie to można wyjaśnić w następującym przykładzie. Jesteś naukowcem danych, a jeden z twoich klientów - sieć sklepów spożywczych - chce, abyś przejrzał ich bazę danych klientów i opracował kampanię sprzedażową skierowaną do tego, co nazywają odpowiednią grupą ludzi. Zgadza się, nie podają żadnych szczegółów na temat tego, jak należy grupować klientów - po prostu rzucił w ciebie danymi i poprosił o identyfikację istniejących relacji, jeśli istnieją. Chcą, abyś przeanalizował ich dane i wyciągnął wnioski, jak zmaksymalizować sprzedaż. Możesz dowiedzieć się, że osoby posiadające kartę kredytową robią zakupy w piątki lub możesz dowiedzieć się, że sprzedaż pieluszek i innych produktów do pielęgnacji niemowląt zwykle rośnie w soboty lub że osoby starsze często robią zakupy w poniedziałki lub wtorki . Ponadto zauważasz, że płatności gotówkowe są wykorzystywane wyłącznie do zakupów ogółem poniżej 50 USD. Z powodzeniem pogrupowałeś klientów w kategorie o podobnych zwyczajach zakupowych i metodach płatności, a teraz masz kilka strategii marketingowych, które możesz zaproponować swojemu klientowi. Mogą rozważyć udzielenie zniżek osobom starszym w poniedziałki i wtorki lub zniżki dla osób płacących gotówką.
•  Nauka przez wzmocnienie opiera się na wynikach. Jego głównym celem jest ustalenie, jakie działania należy podjąć, aby zmaksymalizować nagrody w danym otoczeniu. Klasyczny przykład polega na uczeniu maszyny gry planszowej poprzez przypisywanie wyników każdemu ruchowi w wygranej grze na podstawie wyniku i aktualnego stanu planszy. Za każdym razem, gdy przypisujesz ocenę do działania, aby zminimalizować kary i / lub zmaksymalizować nagrody, zastanawiasz się nad problemem, który można potencjalnie rozwiązać dzięki uczeniu się przez wzmocnienie.

Niezależnie od rodzaju uczenia maszynowego musimy pamiętać, że możemy kontynuować szkolenie modelu i ciągłe rozszerzanie danego zestawu danych, co powoduje ciągłe uczenie się, które z czasem poprawia wyniki. Ponieważ uczenie maszynowe to nie tylko magia, algorytmy i narzędzia wykorzystywane w analizie odgrywają fundamentalną rolę w powodzeniu procesu uczenia się. Chociaż nie możemy oczekiwać doskonałej odpowiedzi (ponieważ nie jest to możliwe w domenach, w których działa uczenie maszynowe), szukamy informacji, które są wystarczająco dobre, aby były nam w jakiś sposób przydatne.



Algorytmy I Narzędzia



W poprzedniej części przedstawiliśmy podstawowe zasady uczenia maszynowego i zilustrowaliśmy rodzaje uczenia się na przykładach. W tej sekcji omówimy algorytmy i narzędzia, które są często używane w terenie, i pokażemy, jak zainstalować i używać ich na własnym komputerze, a także przykłady, które przedstawimy później.



Narzędzia



W poprzedniej części przedstawiliśmy podstawowe zasady uczenia maszynowego i zilustrowaliśmy rodzaje uczenia się na przykładach. W tej sekcji omówimy algorytmy i narzędzia, które są często używane w terenie, i pokażemy, jak zainstalować i używać ich na własnym komputerze, a także przykłady, które przedstawimy później.



Instalowanie Narzędzi



Bez względu na system operacyjny, którego używasz , musisz mieć zainstalowany Python, zanim będziesz mógł wykorzystać solidność scikitlearn i pandy. W celu zapewnienia zasobu, który jest łatwy w instalacji i systemie operacyjnym, niezależnie od tej książki, zdecydowałem się użyć Anaconda, kompletnej platformy analitycznej Python na licencji BSD, która zawiera ponad 100 pakietów do nauki danych od razu po wyjęciu z pudełka. Innymi słowy, instalując to narzędzie, będziesz jednocześnie konfigurować Python, scikit-learn, pandy i kilka innych narzędzi, które mogą okazać się przydatne, jeśli zdecydujesz się na dalsze eksplorowanie uczenia maszynowego. Aby wyświetlić pełną listę narzędzi dołączonych do domyślnej instalacji Anaconda. Na tej stronie wymieniono także kilka innych pakietów, które nie są instalowane od razu po wyjęciu z pudełka, ale można je łatwo zainstalować później za pomocą conda, narzędzia do zarządzania Anaconda. W przeciwieństwie do Linuksa i OS X, Microsoft Windows nie jest dostarczany z preinstalowanym Pythonem. Jeśli używasz tego drugiego, możesz wybrać wersję Anacondy opartą na Python 2.7- lub 3.5 pasujące do architektury systemu (32- lub 64-bitowy). Z drugiej strony, jeśli używasz Linuksa lub OS X, możesz wybrać wersję Anaconda, która pasuje do zainstalowanej wersji Python i Twojej architektury systemowej. Chociaż nie jest to bezwzględnie wymagane, pomoże uniknąć marnowania miejsca na dysku. Aby dowiedzieć się, która wersja Pythona jest obecnie zainstalowana na komputerze, jeśli używasz Linuksa, otwórz terminal i wpisz następujące polecenie:

python -V

(To jest wielka litera V.)

Aby zachować spójność między systemami operacyjnymi, w tej książce będziemy używać Anacondy z Pythonem 2.7. Zauważ, że jeśli wybierzesz Anaconda z Pythonem 3.5, niektóre polecenia przedstawione w tym i kolejnych rozdziałach będą inne. W razie wątpliwości sprawdź dokumentację dla wersji 3.5 .

Instalacja w Microsoft Windows 7 64-bit

Aby zainstalować Anacondę w systemie Microsoft Windows 7, wykonaj następujące kroki:

1. Po pobraniu pliku wykonywalnego do wybranej lokalizacji kliknij go dwukrotnie, aby rozpocząć instalację. Najpierw zostanie wyświetlony ekran pokazany na rysunku. Kliknij Uruchom, a następnie Dalej, aby kontynuować:

2. Kliknij IAgree, aby zaakceptować warunki licencji i wybierz ustawienie domyślne (Zainstaluj dla: Tylko ja), a następnie kliknij Dalej

3. Wybierz katalog instalacyjny. Możesz pozostawić wartość domyślną lub wybrać inną katalog klikając Przeglądaj. Pójdziemy z ustawieniem domyślnym, a następnie kliknij przycisk Dalej 4. Upewnij się, że opcje pokazane na rysunku 4 są zaznaczone. Zapewni to, że Anaconda bezproblemowo integruje się ze składnikami Pythona i że będzie to podstawowy Python w twoim systemie

5. Poczekaj, aż Anaconda zostanie zainstalowana

6. Po zakończeniu instalacji kliknij Dalej, a następnie Zakończ

Gratulacje! Pomyślnie zainstalowałeś Anaconda na swoim komputerze. Aby wyświetlić listę programów zawartych w Anaconda, przejdź do Start | Wszystkie programy | Anaconda2 (64-bit). Oto lista w celach informacyjnych (to samo dotyczy innych systemów operacyjnych):

•  Anaconda Cloud: jest to narzędzie do współpracy i zarządzania pakietami dla projektów open source i prywatnych. Podczas gdy publiczne projekty i zeszyty są zawsze bezpłatne, prywatne plany zaczynają się od 7 USD / miesiąc.

•  Anaconda Navigator: Jest to graficzny interfejs użytkownika na pulpicie, który pozwala nam łatwo wykonywać kilka operacji bez konieczności korzystania z wiersza poleceń.

•  Monit Anaconda: Jest to wiersz polecenia, w którym można wydawać komendy Anaconda i conda bez konieczności zmiany katalogów lub dodawania katalogów do zmiennej środowiskowej PATH.

•  IPython: Jest to interaktywna, solidna, ulepszona powłoka Python, która zawiera dodatkową funkcjonalność.

•  Notatnik Jupyter: Jak opisano na stronie internetowej projektu (http: // jupyter. Org /), jest to "aplikacja internetowa, która umożliwia tworzenie i udostępnianie dokumentów zawierających kod na żywo, równania, wizualizacje i tekst objaśniający". myśl o Jupyter Notebook jako Pythonie działającym w przeglądarce (a także w kilku innych językach). Jupyter był wcześniej znany jako Notatnik IPython.

•  Jupyter QTConsole: Jest to widget podobny do pytania w Pythonie, ale zawiera kilka funkcji, które są możliwe tylko w graficznym interfejsie użytkownika, takim jak grafika.

•  Spyder: To jest IDE Pythona do programowania naukowego. Jako taki integruje kilka bibliotek Pythona dla tego pola, takich jak scikit-learn, pandy oraz znane NumPy i matplotlib, by wymienić tylko kilka.

Zachęcamy do poświęcenia kilku minut na zapoznanie się z ich interfejsami. Wyjaśnimy teraz instalację w systemie Linux i powrócimy do tych programów w dalszej części tej sekcji.



Instalacja w Linux Mint 18 (Mate desktop) 64-bit

Aby zainstalować Anacondę w 64-bitowym Linux Mint 18, powinieneś wcześniej pobrać skrypt Bash o nazwie Anaconda2-x.y.z-Linux-x86_64.sh, gdzie x.y.z reprezentuje aktualną wersję programu. Najbardziej prawdopodobną lokalizacją, w której zostanie znaleziony plik skryptu, jest Pobranie w katalogu domowym:

1. Przejdź do plików do pobrania:

cd ~ / Pobieranie

Wymień znalezione pliki, aby potwierdzić:

ls -l

2. Aby kontynuować instalację, musisz zezwolić na wykonanie skryptu uprawnienia (nie używaj sudo, jeśli zamierzasz zapisywać pliki w tym katalogu przy użyciu zwykłego konta użytkownika):

chmod + x Anaconda2-4.1.1-Linux-x86_64.sh

Następnie wprowadź go z bieżącego katalogu roboczego:

sudo ./Anaconda2-4.1.1-Linux-x86_64.sh

Możesz też uruchomić go bezpośrednio z Bash (każda z metod będzie działać):

sudo bash Anaconda2-4.1.1-Linux-x86_64.sh

3. Jak wskazano na rysunku, należy nacisnąć klawisz Enter, aby kontynuować instalację

Będziesz wtedy mógł zobaczyć umowę licencyjną. Użyj Enter, aby przewinąć w dół lub q, aby zamknąć dokument, a następnie wpisz "Tak", aby wskazać, że zgadzasz się z warunkami w nim przedstawionymi.

4. Domyślny katalog instalacyjny to ~ / anaconda2. Jeśli chcesz, możesz wybrać inny katalog, ale przejdziemy tutaj do domyślnego, jak widać na rysunku, naciskając Enter

5. Pod koniec procesu instalacji zostaniesz zapytany, czy chcesz, aby instalator dołączył (poprzedził) katalog instalacyjny do zmiennej środowiskowej PATH. Jeśli wybierzesz opcję domyślną (nie), będziesz musiał przeglądać katalog instalacyjny za każdym razem, gdy chcesz uruchomić jeden z programów dołączonych do Anacondy. W przeciwnym razie (wybierając tak, jak w tym przypadku), jak pokazano na rysunku 10, będziesz mógł uruchomić te programy bezpośrednio po uruchomieniu terminalu Linux

Możesz teraz wyświetlić listę zainstalowanych aplikacji w systemie Linux w ~ / anaconda2 / bin. Wszystkie składają się ze skryptów Python, które można wygodnie uruchamiać z wiersza poleceń. W tym momencie powinieneś mieć ten sam zestaw narzędzi zainstalowany na komputerze, niezależnie od wybranego systemu operacyjnego. Aby zakończyć tę sekcję, uruchom Spyder:

W systemie Windows przejdź do Start | Wszystkie programy | Anaconda2 (64-bitowy) | Spyder

W systemie Linux wpisz spyder w wierszu polecenia i naciśnij klawisz Enter.

Po otwarciu Spyder skopiuj lub wpisz następujące wiersze w obszarze kodu (lewa sekcja), które powinny zwrócić wersje scikit-learn i pandy aktualnie zainstalowane w twoim środowisku:

import panda
import sklearn
print ("Wersja pandy to {}.". format (pandy .__ wersja__))
print ("Wersja scikit-learn to {}.". format (sklearn .__ wersja__))

Kliknij przycisk Uruchom plik lub naciśnij F5. Dane wyjściowe zostaną wyświetlone w konsoli IPython w prawym dolnym rogu, jak pokazano na rysunku

Po otwarciu dowolnego narzędzia dołączonego do Anacondy, linia poleceń (Linux) lub wiersz poleceń (Windows) zostanie uruchomiona automatycznie. W tym osobnym oknie zobaczysz ostrzeżenia, komunikaty o błędach i komunikaty operacyjne. Jeśli zamkniesz to okno lub zabijesz powiązany proces, narzędzie wyłączy się. Dlatego ważne jest, aby pozostawić to okno otwarte podczas korzystania z powiązanego narzędzia.



Iris



Eksploracja znanego zestawu danych do uczenia maszynowego

Scikit-learn zawiera między innymi kilka gotowych przykładowych zestawów danych. W poniższym przykładzie zaimportujemy zestaw danych Iris bezpośrednio za pomocą scikit-learn dla uproszczenia. Dodatkowo Uniwersytet Kalifornijski w Irvine prowadzi repozytorium (h t t p: // a r c h i v e. I c s. U c i. E d u / m l /) z kilkoma kolekcjami zestawów danych w świecie rzeczywistym, które można wykorzystać do bezpłatnej analizy algorytmów uczenia maszynowego. Zestaw danych Iris, jeden z zestawów danych zawartych w scikit-learn, od dawna wykorzystywany jest do demonstrowania technik statystycznych w uczeniu maszynowym. Składa się z 50 próbek z każdego z trzech gatunków tęczówki (setosa, virginica i versicolor), przy czym każda próbka zawiera cztery pomiary, w centymetrach: długość i szerokość sepal oraz długość i szerokość płatka. Pomiary te można wykorzystać do wyszkolenia maszyny do przewidywania gatunku nowej obserwacji. Prawdopodobnie będziesz w stanie zgadnąć, że przyglądamy się nadzorowanemu problemowi uczenia się, ponieważ może on pomóc nam przewidzieć gatunek danej tęczówki, biorąc pod uwagę wymiary jej płatków i płatka. Zestaw danych Iris spełnia wymagania dotyczące pracy z programem scikit-learn:

•  Kolumny próbki (znane również jako cechy) i wynik, który próbujemy przewidzieć (znany również jako odpowiedź), muszą być osobnymi obiektami. Funkcje w tym przypadku to długość sepal, szerokość sepal, długość płatka i szerokość płatka, podczas gdy odpowiedź wynosi 0, 1 i 2 (odpowiednio dla gatunków setosa, versicolor i virginica).

•  Zarówno funkcje, jak i odpowiedzi muszą być numeryczne (dlatego każdy gatunek jest odwzorowany na liczbę całkowitą, jak wyjaśniono w poprzednim wymaganiu), musi składać się z siatki wartości tego samego typu (znanej w ekosystemie Python jako tablice NumPy) oraz musi mieć określone, dobrze zdefiniowane kształty (rozmiar siatki wzdłuż rzędów i kolumny).

Aby zademonstrować wspomniane wcześniej wymagania, załadujmy zestaw danych do Spyder i wydrukuj:

•  Nazwy funkcji (kolumny) i odpowiedź. Zwróć uwagę, w jaki sposób rzeczywiste nazwy gatunków są odwzorowane na 0, 1 i 2.

•  Typy obiektów macierzy funkcji i tablicy odpowiedzi.

•  Kształty próbek i funkcji.

Aby to zrobić, skopiuj następujący kod do edytora Spyder i zapisz go jako iris.py w katalogu domowym lub folderze Dokumenty, a następnie naciśnij klawisz F5:

# -*- coding: utf-8 -*-

"""

Created on Mon Aug 15 21:00:27 2016

@author: amnesia

"""

from sklearn.datasets import load_iris

iris = load_iris()

# Nazwy funkcji (kolumny) i odpowiedź

print iris.feature_names

print iris.target

print iris.target_names

# Typy obiektów macierzy cech i tablicy odpowiedzi

print type(iris.data)

print type(iris.target)

# Kształty próbek i funkcji

print iris.data.shap



Modele Ternigowe



Po załadowaniu zestawu danych i sprawdzeniu, czy spełnia on wymagania dotyczące pracy ze scikit-learn, nadszedł czas, aby użyć go do wyszkolenia modelu i sklasyfikowania nowej obserwacji. Użyjemy dwóch modeli:

* W przypadku LinearSVC (Support Vector Classifier) zestaw danych jest podzielony na kategorie lub podzielony przez hiperpłaszczyznę na klasy. Ten hiperpłaszczyzna jest często nazywana maszyną wektora pomocniczego i reprezentuje zmaksymalizowany podział między grupami lub klasami. Odpowiedzi udziela klasa, do której należy nowa obserwacja. Zanim zaczniemy trenować model i uzyskać prognozy, rozważmy kilka konwencji, aby napisać nową, ulepszoną wersję skryptu, którego używaliśmy wcześniej. Tym razem nazwiemy go training.py. Przykładowe dane i cel (iris.data i iris.target w poprzednim przykładzie) powinny być przechowywane w zmiennych X i y, ponieważ są one odpowiednio macierzą i wektorem. Domyślnie scikit-learn przypisuje K = 5 dla najbliższych sąsiadów. Jeśli chcemy zmienić tę wartość, możemy przekazać argument n_neighbors = K do wystąpienia klasyfikatora (znanego również jako estymator).
* W modelu K-najbliższych sąsiadów prognozuje się nową obserwację, przeszukując cały zestaw danych szkoleniowych pod kątem najbardziej podobnych obserwacji "K" (sąsiadów) na podstawie odległości między nimi a nową próbką. Odpowiedź jest następnie udzielana przez klasę o największej liczbie wystąpień sąsiadów. Innymi słowy:

Biorąc pod uwagę zestaw danych podzielony na klasy A, B i C oraz nową obserwację, y, jeśli wybierzemy K = 3, model najbliższych sąsiadów K przeszuka cały zestaw danych pod kątem trzech obserwacji, które są najbliższe y. Jeśli dwa z nich należą do klasy A, a trzeci należy do B, algorytm uzna, że y należy do A.Właściwa liczba sąsiadów do zastosowania jako parametr będzie zależeć od liczby próbek i rzadkości danych:

# - * - kodowanie: utf-8 - * -
"" "
Utworzono wtorek 16 sierpnia 19:29:30 2016
@author: amnesia
"" "
z sklearn.datasets import load_iris
# Importuj klasę LinearSVC
z sklearn.svm import LinearSVC
# Importuj klasę KNeighborsClassifier
z sklearn.neighbors import KNeighborsClassifier
# Załaduj zestaw danych
iris = load_iris ()
# Przypisz do zmiennych dla wygodniejszej obsługi
X = iris.data
y = iris.target
# Utwórz instancję klasyfikatora LinearSVC
clf = LinearSVC ()
# Trenuj model
clf.fit (X, y)
# Uzyskaj wynik dokładności klasyfikatora LinearSVC
print clf.score (X, y)
# Wytypuj odpowiedź na podstawie nowej obserwacji
print clf.predict ([[6.3, 3.3, 6.0, 2.5]])
# Utwórz instancję KNeighborsClassifier
# Domyślna liczba K sąsiadów to 5.
# Można to zmienić, przekazując jako argument argument n_neighbors = k
knnDefault = KNeighborsClassifier () # K = 5
# Trenuj model
knnDefault.fit (X, y)
# Uzyskaj wynik dokładności KNeighborsClassifier z K = 5
drukuj knnDefault.score (X, y)
# Wytypuj odpowiedź na podstawie nowej obserwacji
drukuj knnDefault.predict ([[6.3, 3.3, 6.0, 2.5]])
# Wypróbujmy inną liczbę sąsiadów
knnBest = KNeighborsClassifier (n_neighbors = 10) # K = 10
# Trenuj model
knnBest.fit (X, y)
# Uzyskaj wynik dokładności KNeighborsClassifier z K = 10
drukuj knnBest.score (X, y)
# Wytypuj odpowiedź na podstawie nowej obserwacji
wydrukuj knnBest.predict ([[6.3, 3.3, 6.0, 2.5]])
# Wypróbujmy inną liczbę sąsiadów
knnWorst = KNeighborsClassifier (n_neighbors = 100) # K = 100
# Trenuj model
knnWorst.fit (X, y)
# Uzyskaj wynik dokładności KNeighborsClassifier z K = 100
drukuj knnWorst.score (X, y)
# Wytypuj odpowiedź na podstawie nowej obserwacji
drukuj knnWorst.predict ([[6.3, 3.3, 6.0, 2.5]])

Prognoza staje się mniej dokładna, gdy zwiększysz liczbę K w modelu K-najbliższego sąsiada. Nie ma większego sensu używanie 100 sąsiadów w zestawie danych z obserwacjami 150. Na koniec możesz rozważyć użycie pand do opisania danego zestawu danych w kategoriach statystycznych. Zapisz następujący kod jako pandas.py i naciśnij F5, aby go uruchomić:

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 16 22:21:29 2016
@author: amnesia
"""
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
# Read file and attribute list into variable
data = pd.DataFrame(data=iris['data'],
columns=iris['feature_names'])
print data.describe()



Machine Learnig i Big Data



W poprzednich dwóch sekcjach wprowadzenia do uczenia maszynowego oraz algorytmów i narzędzi wprowadziliśmy podstawowe pojęcia i rodzaje uczenia maszynowego. Wyjaśniliśmy również, jak zainstalować Anacondę, w pełni funkcjonalny pakiet Python, który zawiera wszystkie narzędzia niezbędne do tego kierunku studiów. Ponieważ zestawy danych wykorzystywane w dziedzinie uczenia maszynowego stają się coraz większe i bardziej złożone, wkraczamy w sferę dużych zbiorów danych - ogromnych ilości danych, rosnących wykładniczo i pochodzących z różnych źródeł. Informacje te muszą być analizowane i przechowywane wydajnie i szybko w celu zapewnienia wartości biznesowej poprzez zwiększenie wglądu i pomoc w podejmowaniu decyzji i automatyzacji procesów. Ponadto rozmiar sam w sobie nie może być wykorzystywany do identyfikacji dużych zbiorów danych. Złożoność jest kolejnym ważnym czynnikiem, który należy również wziąć pod uwagę.



Wyzwania Związane Z Big Data



Niestety analizy dużych zbiorów danych nie można przeprowadzić przy użyciu tradycyjnych metod przetwarzania. Niektóre przykłady źródeł dużych zbiorów danych to interakcje w mediach społecznościowych, zbieranie współrzędnych geograficznych dla globalnych systemów pozycjonowania, odczyty czujników i transakcje w sklepach detalicznych, żeby wymienić tylko kilka. Te przykłady dają nam wgląd w tak zwane trzy V dużych zbiorów danych:

•  Objętość (Volume): Ogromne ilości danych generowanych w każdej chwili
•  Różnorodność (Variety): Różne formy, w których dane mogą być dostarczane w postaci zwykłego tekstu, zdjęć, audio i wideo, danych geoprzestrzennych i tak dalej
•  Szybkość (Velocity):, z jaką dane są generowane, przesyłane, przechowywane i pobierane

Szeroka gama źródeł, z których firma lub firma może korzystać w celu gromadzenia danych do analizy, zapewnia dużą ilość informacji - i wciąż rośnie. Wymaga to specjalnych technologii przechowywania i zarządzania danymi, które nie były dostępne lub których użytek był nie rozpowszechnione dziesięć lat temu. Ponieważ najlepiej przetwarzać duże zbiory danych za pomocą obliczeń rozproszonych zamiast jednej maszyny, zajmiemy się jedynie podstawowymi pojęciami tego tematu i jego teoretycznymi relacjami z uczeniem maszynowym w nadziei, że będzie to dobry punkt wyjścia do późniejszych badań Przedmiot. Możesz być pewny, że duże zbiory danych są gorącym tematem w nowoczesnej technologii, ale nie wierz nam tylko na słowo - proste wyszukiwanie w Google wynagrodzeń za duże zbiory danych ujawni, że specjaliści w tej dziedzinie otrzymują bardzo lukratywne wynagrodzenie. Podczas gdy uczenie maszynowe pomoże nam uzyskać wgląd w dane, duże zbiory danych pozwolą nam obsługiwać ogromne ilości danych. Dyscypliny te można stosować razem lub osobno



Piewsze V : Objętość



Kiedy mówimy o objętości jako jednym z wymiarów dużych zbiorów danych, jednym z wyzwań jest wymagana przestrzeń fizyczna, która jest wymagana do skutecznego przechowywania danych, biorąc pod uwagę ich rozmiar i przewidywany wzrost. Kolejnym wyzwaniem jest to, że musimy efektywnie pobierać, przenosić i analizować te dane, aby uzyskać wyniki, gdy są potrzebne. W tym momencie jestem pewien, że zobaczysz, że istnieją jeszcze inne wyzwania związane z obsługą dużej ilości informacji - dostępność i utrzymanie szybkich sieci i wystarczającej przepustowości, wraz z powiązanymi kosztami, to tylko dwa z nich. Na przykład, podczas gdy tradycyjna aplikacja do analizy danych może obsłużyć pewną liczbę klientów lub sklepów detalicznych, może mieć poważne problemy z wydajnością, gdy zostanie powiększona do 100x lub 1000x. Z drugiej strony analiza dużych zbiorów danych - przy użyciu odpowiednich narzędzi i technik - może prowadzić do uzyskania opłacalnego rozwiązania bez szkody dla wydajności. Podczas gdy ogromna ilość informacji może odnosić się do jednego zestawu danych, może również odnosić się do tysięcy lub milionów mniejszych zestawów razem wziętych. Pomyśl o milionach wysłanych wiadomości e-mail, opublikowanych tweetach i postach na Facebooku oraz o przesyłaniu filmów z YouTube każdego dnia, a uzyskasz w ten sposób ogromną ilość danych, które są generowane, przesyłane i analizowane. Ponieważ organizacje i firmy są w stanie zwiększyć ilość informacji i wykorzystać je do analizy, ich wiedza biznesowa jest odpowiednio poszerzona: są w stanie zwiększyć zadowolenie konsumentów, poprawić bezpieczeństwo podróży, chronić ich reputację, a nawet uratować prognozy dotyczące pożarów i klęsk żywiołowych, które są jednymi z najlepszych przykładów w tej dziedzinie.



Drugie V : Różnorodność



Różnorodność odnosi się nie tylko do wielu źródeł, z których pochodzą dane, ale także do sposobu ich reprezentacji (różnorodność strukturalna), medium, na którym jest dostarczana (różnorodność średnia), oraz jej dostępności w czasie. Jako przykład różnorodności strukturalnej możemy wspomnieć, że zdjęcie satelitarne kształtującego się huraganu różni się od tweetów wysyłanych przez ludzi, którzy go obserwują, gdy przelatuje przez dany obszar. Średnia różnorodność odnosi się do nośnika, na którym dane są dostarczane: mowa audio i transkrypcja mogą reprezentować tę samą informację, ale są dostarczane za pośrednictwem różnych mediów. Wreszcie musimy wziąć pod uwagę, że dane mogą być dostępne przez cały czas, w czasie rzeczywistym (na przykład kamera bezpieczeństwa) lub tylko sporadycznie (gdy satelita znajduje się na obszarze zainteresowania). Ponadto badanie danych nie może ograniczać się tylko do analizy danych strukturalnych (tradycyjnych baz danych, tabel, arkuszy kalkulacyjnych i plików), jednak cenne mogą być te wszechstronne zasoby. Jak wspomniano we wstępie, w era dużych zbiorów danych, wiele nieustrukturyzowanych danych (SMS-y, obrazy, pliki audio itp.) jest generowanych, przesyłanych i analizowanych za pomocą specjalnych metod i narzędzi. To powiedziawszy, nic d

Trzecie V : Szybkość



Kiedy rozważamy Prędkość jako jeden z wymiarów dużych zbiorów danych, możemy pomyśleć, że odnosi się to tylko do sposobu, w jaki jest przesyłany z jednego punktu do drugiego. Jednak, jak wskazaliśmy we wstępie, oznacza to znacznie więcej. Oznacza to również szybkość, z jaką jest generowany, przechowywany i pobierany do analizy. Nieużywanie danych podczas ich generowania może prowadzić do utraty możliwości biznesowych. Rozważmy następujące przykłady ilustrujące znaczenie prędkości w analizie dużych zbiorów danych:

•  Jeśli chcesz dać swojemu synowi lub córce prezent na urodziny, czy zastanowiłbyś się, czego chcieli rok temu, czy zapytałbyś ich, co chcieliby dzisiaj?
•  Jeśli zastanawiasz się nad przejściem do nowej kariery, czy wziąłbyś pod uwagę najlepsze kariery sprzed dekady lub te, które są najbardziej aktualne dzisiaj i oczekuje się, że w przyszłości będą miały niezwykły rozwój?
Przykłady te ilustrują znaczenie korzystania z najnowszych dostępnych informacji w celu podjęcia lepszej decyzji. W rzeczywistości możliwość analizowania danych w trakcie ich generowania pozwala firmom reklamowym oferować reklamy na podstawie ostatnich wyszukiwań lub zakupów - prawie w czasie rzeczywistym. Aplikacja ilustrująca znaczenie prędkości w big data nazywa się analizą nastrojów - badaniem odczuć opinii publicznej na temat produktów lub wydarzeń. W 2013 r. Kraje kontynentu europejskiego ucierpiały w wyniku skandalu związanego z mięsem końskim. Według Wikipedii stwierdzono, że żywność reklamowana jako zawierająca wołowinę zawiera niezgłoszone lub nieprawidłowo zadeklarowane mięso konia lub wieprzowiny - aż 100% mięsa treść w niektórych przypadkach. Chociaż mięso konia nie jest szkodliwe dla zdrowia i jest spożywane w wielu krajach, wieprzowina jest tabu w społecznościach muzułmańskich i żydowskich. Zanim skandal pojawił się na ulicach, Meltwater (firma wywiadu medialnego) pomogła Danone, jednemu z ich klientów, poradzić sobie z potencjalnym problemem z reputacją, ostrzegając ich o przełomowej historii, że DNA konia znaleziono w produktach mięsnych. Chociaż Danone był pewien, że nie mieli tego problemu ze swoimi produktami, posiadanie tych informacji kilka godzin wcześniej pozwoliło im przeprowadzić kolejną dokładną kontrolę. To z kolei pozwoliło im zapewnić klientów, że wszystkie ich produkty są w porządku, co skutkuje skuteczną operacją zarządzania reputacją.



Czwarte V : Wiarygodność



Dla celów wprowadzających uproszczenie dużych zbiorów danych w trzech wersjach V (objętość, różnorodność i szybkoś) można uznać za dobre podejście, jak wspomniano we wstępie. Może to jednak być nieco zbyt uproszczone, ponieważ istnieje jeszcze (przynajmniej) inny wymiar, który musimy wziąć pod uwagę w naszej analizie - wiarygonodść (lub jakość) danych. W tym kontekście jakość oznacza w rzeczywistości zmienność (jak długo aktualne dane będą ważne do wykorzystania przy podejmowaniu decyzji?) I ważność (może zawierać szum, niedokładności i tendencyjność). Dodatkowo zależy to również od niezawodności źródła danych. Rozważmy na przykład fakt, że wraz z uruchomieniem Internetu przedmiotów coraz więcej czujników wejdzie na scenę, powodując pewien poziom niepewności co do jakości generowanych danych. Oczekuje się, że wraz z pojawieniem się nowych wyzwań związanych z analizą dużych zbiorów danych, więcej V (lub wymiarów) zostanie dodanych do ogólnego opisu tego kierunku studiów.



Dlaczego Big Data jest tak ważne?



Nieuchronnie powstaje pytanie: "dlaczego duże zbiory danych są tak wielką sprawą w dzisiejszym przetwarzaniu?". Innymi słowy, co sprawia, że duże zbiory danych są tak cenne, że okresowo zasługują na miliony dolarów inwestycji dużych firm? Rozważmy następującą prawdziwą historię do zilustrowania odpowiedzi. Na początku XXI wieku duży detalista w Stanach Zjednoczonych zatrudnił statystykę do analizy nawyków zakupowych swoich klientów. Z biegiem czasu, gdy jego komputery analizowały wcześniejszą sprzedaż związaną z danymi klientów i danymi karty kredytowej, był w stanie przypisać wynik prognozy ciąży i oszacować terminy w małym oknie. Bez wchodzenia w drobiazgową historię, wystarczy powiedzieć, że sprzedawca wykorzystał te informacje, aby wysłać kupony rabatowe do osób kupujących kombinację kilku produktów dla kobiet w ciąży i niemowląt. Nie trzeba dodawać, że ostatecznie znacznie zwiększyło to przychody sprzedawcy. Około rok później, gdy sprzedawca zaczął używać tego modelu, tak się stało:

Bardzo rozgniewany rodzic odwiedził jeden ze sklepów w Minneapolis i zażądał spotkania z kierownikiem. Trzymał kupony, które zostały wysłane do jego córki, i był zły, według pracownika, który uczestniczył w rozmowie. "Moja córka dostała to pocztą!" - powiedział. "Nadal jest w szkole średniej, a ty wysyłasz jej kupony na ubrania dla dzieci i łóżeczka? Próbujesz zachęcić ją do zajścia w ciążę? Kierownik nie miał pojęcia, o czym mówił mężczyzna. Spojrzał na pocztę. Rzeczywiście, był skierowany do córki mężczyzny i zawierał reklamy odzieży ciążowej, mebli dziecięcych i zdjęcia uśmiechniętych niemowląt. Kierownik przeprosił, a następnie zadzwonił kilka dni później, aby ponownie przeprosić. Jednak przez telefon ojciec był nieco zawstydzony. "Rozmawiałem z córką" - powiedział. "Okazuje się, że w moim domu były pewne działania, o których nie byłem w pełni świadomy. Ma termin w sierpniu. Jestem ci winien przeprosiny. "

Morał tej historii: duże zbiory danych oznaczają duże pieniądze. Oświadczenie: chociaż nie zgadzam się ze sposobem, w jaki dane osobowe były gromadzone i wykorzystywane w powyższym przykładzie, służy naszemu obecnemu celowi wykazania zastosowania analizy dużych zbiorów danych.



MapReduce i Hadoop



Po opisaniu wymiarów dużych zbiorów danych i zilustrowaniu, dlaczego są one dla nas ważne dzisiaj, przedstawimy Ci narzędzia, które są używane do obsługi tego. Na początku 2000 roku Google i Yahoo zaczęli eksperymentować z wyzwaniami związanymi z ogromną ilością informacji, którymi się zajmowali. Jednakże wyzwanie dotyczyło nie tylko kwot, ale także złożoności danych (czy widzisz już związek z dużymi zbiorami danych?). W przeciwieństwie do danych ustrukturyzowanych, informacji tych nie można łatwo przetworzyć tradycyjnymi metodami - jeśli w ogóle. W wyniku późniejszych badań i wspólnych wysiłków Hadoop narodziło się jako wydajne i opłacalne narzędzie do zmniejszania ogromnych problemów analitycznych do małych zadań, które można wykonywać równolegle na klastrach składających się ze sprzętu (niedrogiego). Hadoop może obsługiwać wiele źródeł danych: dane z czujników, trendy w sieciach społecznościowych, regularne dane w tabeli, zapytania i wyniki wyszukiwarek oraz współrzędne geograficzne, które to tylko kilka przykładów. Z czasem Hadoop wyrósł na potężny i solidny ekosystem, który zawiera wiele narzędzi, dzięki którym zarządzanie dużymi zbiorami danych staje się łatwym zadaniem dla naukowców zajmujących się danymi. Obecnie jest utrzymywany przez Apache Foundation, przy czym Yahoo jest jednym z ich głównych współpracowników. Gorąco zachęcam do zapoznania się z ich witryną, aby uzyskać więcej informacji na temat instalacji i korzystania z Hadoop, ponieważ takie tematy nie wchodzą w zakres tego przewodnika nano. Big data jest tutaj, moi przyjaciele. Wskakuj do pociągu, a nie pozostaniesz w tyle na ciągle wymagającym rynku pracy technologii informacyjnych.



PODSUMOWANIE



W tym przewodniku przedstawiliśmy uczenie maszynowe jako fascynujący kierunek badań i wyjaśniliśmy różne typy za pomocą łatwych do zrozumienia, praktycznych przykładów. Dowiedzieliśmy się również, jak zainstalować i używać Anacondy, pełnego zestawu Pythona do analizy danych naukowych. Korzystając z narzędzi uczenia maszynowego zawartych w Anaconda, przejrzeliśmy podstawowy przykład (zestaw danych Iris) i rzeczywistą aplikację (wykrywanie SPAM) klasyfikacji - podstawową koncepcję uczenia maszynowego i statystyki. Na plus omówiliśmy także podstawowe definicje i pojęcia związane z dużymi zbiorami danych, bliskim sojusznikiem uczenia maszynowego.