Witam…zaczynajmy… 🙂
Cóż, pomocne będzie zdefiniowanie terminów uczenia maszynowego i hakerów.
Co to jest uczenie maszynowe? Na najwyższym poziomie abstrakcji możemy myśleć o uczeniu maszynowym jako o zestawie narzędzi i metod, które próbują wywnioskować wzorce i wyciągnąć wgląd z zapisu obserwowalnego świata. Na przykład, jeśli próbujemy nauczyć komputer rozpoznawania kodów pocztowych zapisanych na frontach kopert, nasze dane mogą składać się ze zdjęć kopert wraz z zapisem kodu pocztowego, do którego adresowana była każda koperta. Oznacza to, że w pewnym kontekście możemy wykonać rejestr działań naszych podmiotów, wyciągnąć wnioski z tego zapisu, a następnie stworzyć model tych działań, który poinformuje nas o zrozumieniu tego kontekstu w przyszłości. W praktyce wymaga to danych, a we współczesnych aplikacjach często oznacza to dużo danych (być może kilka terabajtów). Większość technik uczenia maszynowego uwzględnia dostępność takich danych, jak podano, co oznacza nowe możliwości ich zastosowania w świetle ilości danych, które są wytwarzane jako produkt prowadzony przez nowoczesne firmy.
Kto/Co to jest haker? Daleko od stylizowanych wizerunków nikczemnych nastolatków lub cyber-punków gibsonowskich przedstawianych w popkulturze, uważamy, że haker to ktoś, kto lubi rozwiązywać problemy i eksperymentować z nowymi technologiami. Jeśli kiedykolwiek usiadłeś z najnowszą książką o nowym języku programowania i rozpracowywałeś kod, dopóki nie „wyskoczyło” „Hello, World”, to jesteś hakerem. Lub jeśli zdemontowałeś nowy gadżet, dopóki nie zrozumiałeś całej architektury maszyn, prawdopodobnie mamy na myśli również ciebie. Dążenia te są często podejmowane tylko z tego powodu, że przeszły przez proces i zdobyły wiedzę na temat tego, jak i dlaczego działą nieznana technologia. Oprócz wrodzonej ciekawości działania i chęci budowania, haker komputerowy (w przeciwieństwie do hakera samochodowego, hakera życia, hakera żywności itp.) Ma doświadczenie w projektowaniu i rozwoju oprogramowania. To ktoś, kto pisał wcześniej programy, prawdopodobnie w wielu różnych językach. Dla hakera Unix nie jest czteroliterowym słowem, a nawigacja w wierszu poleceń i operacje bash mogą przychodzić tak naturalnie, jak praca z GUI. Używanie wyrażeń regularnych i narzędzi, takich jak sed, awk i grep, to pierwsza linia obrony hakera podczas pracy z tekstem.
Uczenie maszynowe łączy koncepcje i techniki z wielu różnych tradycyjnych dziedzin, takich jak matematyka, statystyka i informatyka. Jako taki istnieje wiele sposobów nauki dyscypliny. Biorąc pod uwagę jego teoretyczne podstawy matematyki i statystyki, nowi gracze dobrze by zrobili, aby osiągnąć pewien stopień opanowania formalnych specyfikacji podstawowych technik uczenia maszynowego. Istnieje wiele doskonałych książek, które koncentrują się na podstawach. Ale inną ważną częścią mantry hakerów jest uczenie się poprzez działanie. Wielu hakerów może wygodniej myśleć o problemach związanych z procesem uzyskiwania rozwiązania, niż o teoretycznych podstawach, z których pochodzi to rozwiązanie. Z tej perspektywy alternatywnym podejściem do nauczania uczenia maszynowego byłoby użycie przykładów w stylu „książki kucharskiej”. Na przykład, aby zrozumieć, jak działa system rekomendacji, możemy podać przykładowe dane szkoleniowe i wersję modelu oraz pokazać, jak ten drugi używa tego pierwszego. Istnieje również wiele przydatnych tekstów tego rodzaju, a kolektywna inteligencja programowa Segarana jest jednym z najnowszych przykładów. Taka dyskusja z pewnością dotyczyłaby sposobu uczenia się hakera, ale być może mniejszego powodu. Oprócz zrozumienia mechaniki metody możemy również chcieć dowiedzieć się, dlaczego jest ona używana w określonym kontekście lub rozwiązać konkretny problem. Aby zapewnić hakerom pełniejsze odniesienie do uczenia maszynowego, musimy iść na kompromis między dogłębnym przeglądem teoretycznych podstaw tej dyscypliny a szerokim zgłębianiem jej zastosowań. Aby to osiągnąć, będziemy się uczyć uczenia maszynowego poprzez wybrane studia przypadków. Najlepszym sposobem na naukę jest najpierw zastanowienie się nad problemem, a następnie skupienie się na nauce narzędzi używanych do jego rozwiązania. Jest to skutecznie mechanizm, za pomocą którego działają studia przypadków. Różnica polega na tym, że zamiast mieć jakiś problem, dla którego może nie być znanego rozwiązania, możemy skupić się na dobrze zrozumiałych i zbadanych problemach w uczeniu maszynowym i przedstawić konkretne przykłady przypadków, w których niektóre rozwiązania były doskonałe, a inne spektakularnie zawiodły. Z tego powodu każda sekcja jest samodzielnym studium przypadku koncentrującym się na konkretnym problemie w uczeniu maszynowym. Organizacja wczesnych przypadków przechodzi od klasyfikacji do regresji. Następnie badamy takie tematy, jak grupowanie, redukcja wymiarów i optymalizacja. Ważne jest, aby pamiętać, że nie wszystkie problemy mieszczą się równo w kategoriach klasyfikacji lub regresji, a niektóre studia przypadków przeanalizowane w tej książce będą zawierały aspekty obu (czasem wyraźnie, ale także w bardziej subtelny sposób, które przeanalizujemy). Poniżej znajdują się krótkie opisy wszystkich analiz przypadków jakie przeanalizujemy w kolejności, w jakiej się pojawiają
Klasyfikacja tekstu: wykrywanie spamu
Przedstawiamy ideę klasyfikacji binarnej, która jest motywowana wykorzystaniem danych tekstowych e-mail. W tym przypadku zajmujemy się klasycznym problemem uczenia maszynowego polegającym na klasyfikowaniu niektórych danych wejściowych jako jednego z dwóch typów, którym w tym przypadku jest szynka (legalny e-mail) lub spam (niechciany e-mail).
Pozycje w rankingu: priorytetowa skrzynka odbiorcza
Korzystając z tych samych danych tekstowych wiadomości e-mail, co w poprzednim studium przypadku, przechodzimy poza klasyfikację binarną do dyskretnego zestawu typów. W szczególności musimy zidentyfikować odpowiednie funkcje do wyodrębnienia z wiadomości e-mail, które najlepiej informują o jej „priorytetowej” pozycji wśród wszystkich wiadomości e-mail.
Modele regresji: przewidywanie wyświetleń strony
Wprowadzamy teraz drugie podstawowe narzędzie uczenia maszynowego, regresję liniową. Tutaj eksplorujemy dane, których relacje w przybliżeniu zbliżają się do linii prostej. W tym studium przypadku jesteśmy zainteresowani prognozowaniem liczby odsłon stron w 1000 najlepszych witryn internetowych r.
Regularyzacja: regresja tekstu
Czasami relacje w naszych danych nie są dobrze opisane linią prostą. Aby opisać relację, może być konieczne dopasowanie innej funkcji; musimy jednak również uważać, aby się nie przełożyć. Tutaj przedstawiamy koncepcję regularyzacji w celu przezwyciężenia tego problemu i motywujemy ją poprzez studium przypadku, koncentrując się na zrozumieniu związku między słowami w tekście z opisów książek.
Optymalizacja: łamanie kodu
Wychodząc poza modele regresji, prawie każdy algorytm uczenia maszynowego może być postrzegany jako problem optymalizacji, w którym próbujemy zminimalizować pewną miarę błędu prognozowania. Przedstawiamy klasyczne algorytmy przeprowadzania tej optymalizacji i próbujemy złamać prosty szyfr literowy za pomocą tych technik.
Nauka bez nadzoru: budowanie indeksu giełdowego
Do tego momentu omawialiśmy tylko nadzorowane techniki uczenia się. Przedstawiamy jego metodologiczny odpowiednik: uczenie się bez nadzoru. Ważną różnicą jest to, że w uczeniu nadzorowanym chcemy wykorzystywać strukturę naszych danych do prognozowania, podczas gdy w uczeniu się bez nadzoru chcemy odkrywać strukturę naszych danych dla samej struktury. W takim przypadku wykorzystamy dane giełdowe do stworzenia indeksu, który opisuje, jak dobrze radzi sobie cały rynek.
Podobieństwo przestrzenne: grupowanie amerykańskich senatorów według zapisów z głosowania
Wprowadzamy tutaj pojęcie odległości przestrzennych między obserwacjami. W tym celu określamy miary odległości i opisujemy metody grupowania obserwacji w oparciu o ich odległości przestrzenne. Używamy danych z głosowania imiennego senatora USA, aby grupować tych ustawodawców na podstawie ich głosów.
System rekomendacji: sugerowanie użytkownikom pakietów R.
Aby pogłębić dyskusję na temat podobieństw przestrzennych, omawiamy, jak zbudować system rekomendacji oparty na bliskości obserwacji w przestrzeni. Przedstawiamy algorytm k-najbliższych sąsiadów i używamy go do sugerowania programistom pakietów R na podstawie ich aktualnie zainstalowanych pakietów.
Analiza sieci społecznościowych: kogo obserwować na Twitterze
W tym miejscu próbujemy połączyć wiele wcześniej omówionych koncepcji, a także wprowadzić kilka nowych, aby zaprojektować i zbudować system rekomendacji „kogo śledzić” na Twitterze. W tym przypadku budujemy system pobierania danych z sieci Twitter, odkrywamy społeczności w strukturze i zalecamy nowym użytkownikom korzystanie z podstawowych technik analizy sieci społecznościowych.
Porównanie modeli: znalezienie najlepszego algorytmu dla twojego problemu
Na koniec omawiamy techniki wyboru algorytmu uczenia maszynowego do rozwiązania problemu. Przedstawiamy nasz ostateczny algorytm, maszynę wektorów pomocniczych i porównujemy jego wydajność na danych spamowych z sekcji 3 z wydajnością innych algorytmów, które wprowadziliśmy wcześniej.