Spark MLlib jest komponentem uczenia maszynowego Apache Spark.Jedną z głównych zalet Sparka jest możliwość masowego skalowania obliczeń i właśnie tego potrzebujesz do algorytmów uczenia maszynowego. Jednak ograniczenie polega na tym, że wszystkie algorytmy uczenia maszynowego nie mogą być skutecznie zrównoleglone. Każdy algorytm ma własne wyzwania związane z równoległością, niezależnie od tego, czy jest to równoległość zadań, czy równoległość danych.
Mimo to Spark staje się de facto platformą do tworzenia algorytmów i aplikacji uczenia maszynowego.Cóż, możesz sprawdzić wyselekcjonowane przez ekspertów branżowych, zanim zaczniesz pisać blogaDeweloperzy pracujący nad Spark MLlib implementują coraz więcej algorytmów maszynowych w skalowalny i zwięzły sposób w ramach platformy Spark. Na tym blogu poznamy koncepcje uczenia maszynowego, Spark MLlib, jego narzędzia, algorytmy i kompletny przypadek użycia systemu rekomendacji filmów.
Na tym blogu zostaną omówione następujące tematy:
- Co to jest uczenie maszynowe?
- Omówienie platformy Spark MLlib
- Spark MLlib Tools
- Algorytmy MLlib
- Przykład zastosowania - system rekomendacji filmów
Co to jest uczenie maszynowe?
Uczenie maszynowe, powstałe w wyniku badań nad rozpoznawaniem wzorców i obliczeniową teorią uczenia się w sztucznej inteligencji, bada badanie i konstrukcję algorytmów, które mogą uczyć się na podstawie danych i prognozować na ich podstawie - takie algorytmy pokonują ściśle statyczne instrukcje programowe, wykonując przewidywania lub decyzje oparte na danych , budując model z przykładowych danych wejściowych.
Postać: Narzędzia uczenia maszynowego
Uczenie maszynowe jest ściśle związane ze statystyką obliczeniową, która również koncentruje się na prognozowaniu za pomocą komputerów. Ma silne powiązania z optymalizacją matematyczną, która dostarcza metody, teorię i domeny zastosowań w tej dziedzinie. W dziedzinie analityki danych uczenie maszynowe jest metodą używaną do opracowywania złożonych modeli i algorytmów, które nadają się do przewidywania, które w zastosowaniu komercyjnym jest znane jako analityka predykcyjna.
Istnieją trzy kategorie zadań uczenia maszynowego:
- Nadzorowana nauka : Uczenie nadzorowane polega na tym, że masz zmienne wejściowe (x) i zmienną wyjściową (Y) i używasz algorytmu do uczenia się funkcji mapowania z wejścia na wyjście.
- Uczenie się bez nadzoru : Uczenie nienadzorowane to rodzaj algorytmu uczenia maszynowego używanego do wyciągania wniosków ze zbiorów danych składających się z danych wejściowych bez oznaczonych odpowiedzi.
- Uczenie się ze wzmocnieniem : Program komputerowy wchodzi w interakcję z dynamicznym środowiskiem, w którym musi wykonać określony cel (np. Prowadzenie pojazdu lub granie w grę z przeciwnikiem). Program otrzymuje informacje zwrotne dotyczące nagród i kar, gdy porusza się po swojej przestrzeni problemowej.Ta koncepcja nazywa się uczeniem się przez wzmacnianie.
Omówienie platformy Spark MLlib
Spark MLlib służy do wykonywania uczenia maszynowego w Apache Spark. MLlib składa się z popularnych algorytmów i narzędzi.
Przegląd MLlib:
- spark.mllib zawiera oryginalne API zbudowane na bazie RDD. Obecnie znajduje się w trybie konserwacji.
- spark.ml zapewnia interfejs API wyższego poziomu zbudowany na bazie DataFrames dlakonstruowanie rurociągów ML. spark.ml jest obecnie podstawowym interfejsem API uczenia maszynowego dla platformy Spark.
Spark MLlib Tools
Spark MLlib udostępnia następujące narzędzia:
- Algorytmy ML: Algorytmy ML stanowią rdzeń MLlib. Obejmują one wspólne algorytmy uczenia się, takie jak klasyfikacja, regresja, grupowanie i filtrowanie zespołowe.
- Cecha: Featuryzacja obejmuje ekstrakcję cech, transformację, redukcję wymiarowości i selekcję.
- Rurociągi: Potoki zapewniają narzędzia do konstruowania, oceny i dostrajania potoków ML.
- Trwałość: Wytrwałość pomaga w zapisywaniu i ładowaniu algorytmów, modeli i potoków.
- Media: Narzędziadla algebry liniowej, statystyki i przetwarzania danych.
Algorytmy MLlib
Popularne algorytmy i narzędzia w Spark MLlib to:
- Podstawowe statystyki
- Regresja
- Klasyfikacja
- System rekomendacji
- Grupowanie
- Redukcja wymiarowości
- Ekstrakcja cech
- Optymalizacja
Przyjrzyjmy się szczegółowo niektórym z nich.
Podstawowe statystyki
Podstawowe statystyki zawiera najbardziej podstawowe techniki uczenia maszynowego. Obejmują one:
jaka jest klasa skanera w java
- Statystyki podsumowujące : Przykłady obejmują średnią, wariancję, liczbę, maksimum, minimum i numNonZeros.
- Korelacje : Spearman i Pearson to kilka sposobów na znalezienie korelacji.
- Próbkowanie warstwowe : Obejmują one sampleBykey i sampleByKeyExact.
- Testowanie hipotez : Test chi kwadrat Pearsona jest przykładem testowania hipotez.
- Losowe generowanie danych : RandomRDD, Normal i Poissona są używane do generowania losowych danych.
Regresja
Regresja Analiza jest procesem statystycznym służącym do szacowania zależności między zmiennymi. Obejmuje wiele technik modelowania i analizowania kilku zmiennych, gdy nacisk kładzie się na związek między zmienną zależną a jedną lub większą liczbą zmiennych niezależnych. Mówiąc dokładniej, analiza regresji pomaga zrozumieć, jak zmienia się typowa wartość zmiennej zależnej, gdy jedna ze zmiennych niezależnych jest zmienna, podczas gdy inne zmienne niezależne są stałe.
Analiza regresji jest szeroko stosowana do przewidywania i prognozowania, gdzie jej zastosowanie w znacznym stopniu pokrywa się z dziedziną uczenia maszynowego. Analiza regresji służy również do zrozumienia, które spośród zmiennych niezależnych są powiązane ze zmienną zależną, oraz do zbadania form tych zależności. W ograniczonych okolicznościach analiza regresji może służyć do wnioskowania o związkach przyczynowych między zmiennymi niezależnymi i zależnymi.
Klasyfikacja
Klasyfikacja to problem identyfikacji, do której ze zbioru kategorii (subpopulacji) należy nowa obserwacja, na podstawie zbioru uczącego danych zawierających obserwacje (lub instancje), których przynależność do kategorii jest znana. To przykład rozpoznawania wzorców.
W tym przypadku przykładem może być przypisanie danej wiadomości e-mail do klas „spamowych” lub „nie spamowych” lub przypisanie danemu pacjentowi diagnozy opisanej przez obserwowane cechy pacjenta (płeć, ciśnienie krwi, obecność lub brak określonych objawów, itp.).
System rekomendacji
DO system rekomendacji to podklasa systemu filtrowania informacji, która ma na celu przewidzenie „oceny” lub „preferencji”, jaką użytkownik nadałby przedmiotowi. Systemy rekomendujące stały się w ostatnich latach coraz bardziej popularne i są wykorzystywane w różnych obszarach, w tym w filmach, muzyce, wiadomościach, książkach, artykułach badawczych, zapytaniach wyszukiwania, tagach społecznościowych i ogólnie w produktach.
Systemy rekomendujące zwykle tworzą listę rekomendacji na jeden z dwóch sposobów - poprzez wspólne i oparte na treści filtrowanie lub podejście oparte na osobowości.
- Filtrowanie oparte na współpracy podejścia do budowania modelu na podstawie wcześniejszego zachowania użytkownika (wcześniej zakupione lub wybrane elementy i / lub oceny liczbowe nadane tym elementom), a także podobne decyzje podjęte przez innych użytkowników. Model ten jest następnie używany do przewidywania pozycji (lub ocen dla pozycji), którymi użytkownik może być zainteresowany.
- Filtrowanie oparte na zawartości podejścia wykorzystują szereg dyskretnych charakterystyk przedmiotu w celu rekomendowania dodatkowych elementów o podobnych właściwościach.
Ponadto podejścia te są często łączone w postaci hybrydowych systemów rekomendujących.
Grupowanie
Grupowanie to zadanie grupowania zbioru obiektów w taki sposób, aby obiekty z tej samej grupy (zwanej klastrem) były bardziej podobne (w jakimś sensie) do siebie niż do innych grup (skupień). Jest to więc główne zadanie eksploracyjnej eksploracji danych i powszechna technika statystycznej analizy danych, wykorzystywana w wielu dziedzinach, w tym w uczeniu maszynowym, rozpoznawaniu wzorców, analizie obrazu, wyszukiwaniu informacji, bioinformatyce, kompresji danych i grafice komputerowej.
Redukcja wymiarowości
Redukcja wymiarowości jest procesem zmniejszania liczby rozważanych zmiennych losowych poprzez otrzymanie zbioru głównych zmiennych. Można go podzielić na wybór cech i ekstrakcję cech.
- Wybór funkcji: Wybór cech znajduje podzbiór oryginalnych zmiennych (zwanych także cechami lub atrybutami).
- Wyodrębnianie funkcji: To przekształca dane w wielowymiarowej przestrzeni w przestrzeń o mniejszych wymiarach. Transformacja danych może być liniowa, jak w analizie głównych składowych (PCA), ale istnieje również wiele nieliniowych technik redukcji wymiarowości.
Ekstrakcja cech
Ekstrakcja cech rozpoczyna się od początkowego zestawu zmierzonych danych i buduje pochodne wartości (cechy), które mają być informacyjne i niepotrzebne, ułatwiając późniejsze etapy uczenia się i uogólniania, aw niektórych przypadkach prowadząc do lepszych interpretacji przez człowieka. Jest to związane z redukcją wymiarowości.
Optymalizacja
Optymalizacja to wybór najlepszychelement (w odniesieniu do pewnego kryterium) z pewnego zestawu dostępnych alternatyw.
W najprostszym przypadku problem optymalizacji polega na maksymalizacji lub minimalizacji rzeczywistej funkcji poprzez systematyczne wybieranie wartości wejściowych z dozwolonego zbioru i obliczanie wartości funkcji. Uogólnienie teorii i technik optymalizacji na inne sformułowania obejmuje duży obszar matematyki stosowanej. Mówiąc bardziej ogólnie, optymalizacja obejmuje znalezienie „najlepszych dostępnych” wartości jakiejś funkcji celu w określonej dziedzinie (lub danych wejściowych),w tym różne typy funkcji celu i różne rodzaje dziedzin.
Przykład zastosowania - system rekomendacji filmów
Oświadczenie dotyczące problemu: Aby zbudować system rekomendacji filmów, który poleca filmy na podstawie preferencji użytkownika przy użyciu Apache Spark.
Nasze wymagania:
Zatem oceńmy wymagania, aby zbudować nasz system rekomendacji filmów:
- Przetwarzaj ogromne ilości danych
- Wejście z wielu źródeł
- Łatwy w użyciu
- Szybka obróbka
Jak możemy ocenićnasze wymagania, potrzebujemy najlepszego narzędzia Big Data do przetwarzania dużych ilości danych w krótkim czasie. Dlatego Apache Spark to doskonałe narzędzie do wdrożenia naszego Systemu Rekomendacji Filmów.
Przyjrzyjmy się teraz diagramowi przepływu dla naszego systemu.
Jak widać, następujące elementy używają przesyłania strumieniowego z przesyłania strumieniowego Spark. Możemy przesyłać strumieniowo w czasie rzeczywistym lub odczytywać dane z Hadoop HDFS.
Pobieranie zestawu danych:
W przypadku naszego systemu rekomendacji filmów możemy uzyskać oceny użytkowników z wielu popularnych witryn, takich jak IMDB, Rotten Tomatoes i Times Movie Ratings. Ten zbiór danych jest dostępny w wielu formatach, takich jak pliki CSV, pliki tekstowe abazy danych. Możemy przesyłać strumieniowo dane na żywo ze stron internetowych lub pobierać je i przechowywać w plikachnasz lokalny system plików lub HDFS.
Zestaw danych:
Poniższy rysunek pokazuje, jak możemy zbierać dane z popularnych witryn internetowych.
Po przesłaniu danych do Spark wygląda to mniej więcej tak.
Nauczanie maszynowe:
Cały system rekomendacji oparty jest o algorytm Machine Learning Naprzemienne najmniejsze kwadraty . Tutaj ALS jest rodzajem analizy regresji, w której regresja jest używana do narysowania linii między punktami danych w taki sposób, aby zminimalizować sumę kwadratów odległości od każdego punktu danych. W ten sposób linia ta jest następnie używana do przewidywania wartości funkcji, w których napotyka ona wartość zmiennej niezależnej.
Niebieska linia na diagramie to najlepiej dopasowana linia regresji. Dla tej linii wartość wymiaru D jest minimalna. Wszystkie inne czerwone linie będą zawsze znajdować się dalej od zbioru danych jako całości.
Wdrożenie Spark MLlib:
- Użyjemy filtrowania opartego na współpracy (CF), aby przewidzieć oceny użytkowników dla poszczególnych filmów na podstawie ich ocen dla innych filmów.
- Następnie współpracujemy z ocenami innych użytkowników dla tego konkretnego filmu.
- Aby uzyskać następujące wyniki z naszego uczenia maszynowego, musimy użyć DataFrame, zestawu danych i usługi SQL Spark SQL.
Oto pseudokod naszego programu:
import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Import innych niezbędnych pakietów obiekt Movie {def main (args: Array [String]) ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Odczytaj dane z pliku CSV filmu * ') //rawData.first () val rawRatings = rawData.map (* Split rawData on tab delimiter *) val Ratings = rawRatings.map {* Tablica przypadków mapy użytkownika, filmu i oceny *} // Trenowanie modelu wartości wartości = ALS.train (oceny, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Przewidywanie dla użytkownika 789 dla filmu 123 * val userId = * Użytkownik 789 * val K = 10 val topKRecs = model.recommendProducts (* zalecane dla użytkownika dla określonej wartości K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Przeczytaj dane listy filmów *') val titles = movies.map (line => line.split ('|'). take ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titlesRDD = movies.map (line => line.split ('|'). Take (2) ) .map (array => (array (0) .toInt, array (1))). cache () titles (123) val moviesForUser = rating. * Wyszukaj użytkownika 789 * val sqlContext = * Utwórz kontekst SQL * val moviesRecommended = sqlContext. * Utwórz ramkę danych z polecanych filmów * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Select count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * Sortuj oceny dla użytkownika 789 * .map (* Zamapuj ocenę na tytuł filmu *). * Wydrukuj ocenę * val results = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (tytuły (rating.product), rating.rating))}}
Po wygenerowaniu prognoz możemy użyć Spark SQL do przechowywania wyników w systemie RDBMS. Ponadto można to wyświetlić w aplikacji internetowej.
Wyniki:
Postać: Filmy zalecane dla użytkownika 77
Hurra! W ten sposób pomyślnie stworzyliśmy system rekomendacji filmów przy użyciu Apache Spark. W ten sposób omówiliśmy tylko jeden z wielu popularnych algorytmów, jakie ma do zaoferowania Spark MLlib. Dowiemy się więcej o uczeniu maszynowym w nadchodzących blogach poświęconych algorytmom nauki o danych.
Idąc dalej, możesz kontynuować naukę Apache Spark z samouczkiem Spark, samouczkiem przesyłania strumieniowego Sparki pytania do wywiadu Spark.Edureka dąży do zapewnienia najlepszej możliwej nauki online.
Sprawdź nasze ja Jeśli chcesz nauczyć się Spark i zbudować karierę w domenie Spark i zdobyć doświadczenie w przetwarzaniu danych na dużą skalę przy użyciu RDD, Spark Streaming, SparkSQL, MLlib, GraphX i Scala z rzeczywistymi przypadkami użycia.