Uczenie maszynowe z R
Uczenie maszynowe to teraźniejszość i przyszłość! Od silnika rekomendacji Netflixa po samojezdny samochód Google - wszystko to są systemy uczące się. Ten blog na temat uczenia maszynowego w języku R pomaga zrozumieć podstawowe koncepcje uczenia maszynowego, a następnie różne algorytmy uczenia maszynowego i implementowanie tych algorytmów uczenia maszynowego w języku R.
Ten blog poświęcony „Machine Learning with R” składa się z następujących sekcji:
- Zrozumienie uczenia maszynowego
- Rodzaje algorytmów uczenia maszynowego
- Implementacja algorytmów uczenia maszynowego w R
Uczenie maszynowe z R | Edureka
Zrozumienie uczenia maszynowego
Skąd wiesz, że to wszystkie ryby?
Jako dziecko mogłeś natknąć się na zdjęcie ryby, a nauczyciele lub rodzice w przedszkolu powiedzieliby ci, że jest to ryba i ma pewne specyficzne cechy związane z nią, takie jak płetwy, skrzela, para oczy, ogon i tak dalej. Teraz, gdy twój mózg natrafi na obraz z takim zestawem funkcji, automatycznie rejestruje go jako rybę, ponieważ twój mózg ma nauczyli że to ryba.
Tak działa nasz mózg, ale co z maszyną? Jeśli ten sam obraz zostanie przesłany do maszyny, w jaki sposób maszyna zidentyfikuje, że jest to ryba?
To jest, gdy M. Achine Learning Pojawi się. Będziemy nadal przesyłać do komputera obrazy ryb z tagiem „ryba” do maszyna uczy się wszystkich powiązanych funkcji z ryba.
Gdy maszyna nauczy się wszystkich funkcji związanych z rybą, przekażemy jej nowe dane, aby określić, ile się nauczyła.
Innymi słowy, Surowe dane / dane szkoleniowe jest przekazana maszynie, aby ją uczy się wszystkie funkcje związane z Dane treningowe. Kiedy nauka jest zakończona, to jest dane Nowe dane / dane testowe aby określić, jak dobrze maszyna się nauczyła.
Przejdźmy dalej w tym blogu Machine Learning z R i poznajmy typy uczenia maszynowego.
Rodzaje uczenia maszynowego
Nadzorowana nauka:
Algorytm nadzorowanego uczenia się uczy się na podstawie znanego zestawu danych (danych szkoleniowych), który zawiera etykiety umożliwiające przewidywanie.
Regresja i klasyfikacja to tylko niektóre przykłady nadzorowanego uczenia się.
#Klasyfikacja:
Klasyfikacja określa, do jakiego zbioru kategorii należy nowa obserwacja, tj. Algorytm klasyfikacji uczy się wszystkich cech i etykiet danych uczących, a gdy zostaną mu przekazane nowe dane, musi przypisać etykiety do nowych obserwacji w zależności od tego, czego się nauczył z danych treningowych.
co to jest przestrzeń nazw c ++
W tym przykładzie, jeśli pierwsza obserwacja jest oznaczona etykietą „Mężczyzna”, wówczas jest ona prawidłowo sklasyfikowana, ale jeśli zostanie jej przypisana etykieta „Kobieta”, klasyfikacja jest błędna. Podobnie w przypadku drugiej obserwacji, jeśli podana etykieta brzmi „Kobieta”, jest ona prawidłowo sklasyfikowana, w przeciwnym razie klasyfikacja jest błędna.
#Regresja:
Regresja to nadzorowany algorytm uczenia się, który pomaga określić, jak jedna zmienna wpływa na inną zmienną.
Tutaj „living_area” jest zmienną niezależną, a „cena” jest zmienną zależną, tj. Określamy, jak zmienia się „cena” w odniesieniu do „living_area”.
Uczenie się bez nadzoru:
Algorytm uczenia się nienadzorowanego wyciąga wnioski z danych, które nie mają etykiet.
Grupowanie jest przykładem uczenia się bez nadzoru. „K-średnie”, „Hierarchiczne”, „Rozmyte C-średnie” to tylko niektóre przykłady algorytmów grupowania.
W tym przykładzie zbiór obserwacji jest podzielony na dwie grupy. Grupowanie odbywa się na podstawie podobieństwa między obserwacjami. Istnieje duże podobieństwo wewnątrz klastra i niskie podobieństwo między klastrami, tj. Istnieje bardzo duże podobieństwo między wszystkimi autobusami, ale niskie podobieństwo między autobusami i samochodami.
Uczenie się ze wzmocnieniem:
Uczenie ze wzmocnieniem to rodzaj algorytmu uczenia maszynowego, w którym maszyna / agent w środowisko uczy się idealnego zachowania, aby zmaksymalizować jego wydajność. Aby agent nauczył się jego zachowania, wymagana jest prosta informacja zwrotna o nagrodach, znana jako sygnał wzmacniający .
Weźmy pacman na przykład. Dopóki pacman będzie jadł jedzenie, zdobywa punkty, ale kiedy zderzy się z potworem, traci życie. W ten sposób pacman uczy się, że musi jeść więcej jedzenia i unikać potworówaby poprawić jego wydajność.
Wdrażanie uczenia maszynowego z R:
Regresja liniowa:
Będziemy pracować z zestawem danych diamentów, aby zaimplementować algorytm regresji liniowej:
Opis zbioru danych:
Przed zbudowaniem dowolnego modelu na danych powinniśmy podzielić dane na zestawy „pociągowe” i „testowe”. Model zostanie zbudowany na zestawie „pociągowym”, a jego dokładność zostanie sprawdzona na zestawie „testowym”.
Musimy załadować pakiet „caTools”, aby podzielić dane na dwa zestawy.
biblioteka (caTools)
Pakiet „caTools” udostępnia funkcję „sample.split ()”, która pomaga w dzieleniu danych.
sample.split (cena diamentów, SplitRatio = 0,65) -> split_index
65% obserwacji z kolumny ceny otrzymało etykietę „prawda”, a pozostałe 35% - etykietę „fałsz”.
podzbiór (diamenty, split_index == T) -> pociąg podzbiór (diamenty, split_index == F) -> test
Wszystkie obserwacje, które mają etykietę „prawda”, zostały zapisane w „ pociąg ” a obserwacje z „fałszywą” etykietą zostały przypisane do zbioru „testowego”.
Teraz, gdy podział jest zakończony i mamy nasze zestawy „trenuj” i „testuj”, nadszedł czas na zbudowanie modelu regresji liniowej na zbiorze uczącym.
Będziemy używać funkcji „lm ()” do tworzenia modelu regresji liniowej na danych „pociągu”. Określamy Cena £ diamentów w stosunku do wszystkich innych zmiennych zbioru danych. Zbudowany model jest przechowywany w obiekcie „mod_regress”.
lm (cena ~., dane = pociąg) -> mod_regress
Teraz, gdy zbudowaliśmy model, musimy dokonać prognoz na zbiorze „testowym”. Funkcja predykcji () służy do uzyskiwania prognoz. Wymaga dwóch argumentów: zbudowany model i zestaw testowy. Przewidywane wyniki są przechowywane w obiekcie „result_regress”.
Predict (mod_regress, test) -> result_regress
Powiążmy rzeczywiste wartości cen ze zbioru danych „test” i wartości prognozowane w jeden zestaw danych za pomocą funkcji „cbind ()”. Nowa ramka danych jest przechowywana w „Final_Data”
cbind (Actual = test $ price, Predicted = result_regress) -> Final_Data
as.data.frame (Final_Data) -> Final_Data
Rzut oka na „Dane końcowe”, które zawierają wartości rzeczywiste i przewidywane:
Znajdźmy błąd, odejmując przewidywane wartości od wartości rzeczywistych i dodajmy ten błąd jako nową kolumnę do „Final_Data”:
(Final_Data $ Actual- Final_Data $ Predicted) -> błąd
cbind (Final_Data, error) -> Final_Data
Rzut oka na „Final_Data”, który zawiera również błąd w przewidywaniu:
Teraz przejdziemy dalej i obliczymy „ Root Mean Square Error ” co daje zagregowany błąd dla wszystkich prognoz
rmse1<-sqrt(mean(Final_Data$error^2))
rmse1
Kontynuując, zbudujmy inny model, abyśmy mogli porównać dokładność obu tych modeli i określić, który jest lepszy.
Zbudujemy nowy model regresji liniowej na zbiorze „pociąg”, ale tym razem będziemy usuwać kolumny „x” i „y” ze zmiennych niezależnych, tj. „Cena” diamentów jest określana przez wszystkie kolumny z wyjątkiem „x” i „y”.
Zbudowany model jest przechowywany w „mod_regress2”:
lm (cena ~.-y-z, dane = pociąg) -> mod_regress2
Przewidywane wyniki są przechowywane w „result_regress2”
Predict (mod_regress2, test) -> result_regress2
Rzeczywiste i przewidywane wartości są łączone i przechowywane w „Final_Data2”:
cbind (Actual = test $ price, Predicted = result_regress2) -> Final_Data2
as.data.frame (Final_Data2) -> Final_Data2
Dodajmy również błąd w prognozowaniu do „Final_Data2”
(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> błąd2
cbind (Final_Data2, error2) -> Final_Data2
Rzut oka na „Final_Data2”:
Znajdowanie podstawowego błędu średniokwadratowego w celu uzyskania zagregowanego błędu:
rmse2<-sqrt(mean(Final_Data2$error^2))
Widzimy, że „rmse2” jest nieznacznie mniejsze niż „rmse1”, a zatem drugi model jest nieznacznie lepszy niż pierwszy model.
Klasyfikacja:
Będziemy pracować z zestawem danych „car_purchase” do wdrożenia partycjonowanie rekurencyjne który jest algorytmem klasyfikacyjnym.
Podzielmy dane na zbiory „train” i „test” za pomocą funkcji „sample.split ()” z pakietu „caTools”.
biblioteka (caTools)
65% obserwacji z kolumny „Zakupione” otrzyma etykiety „PRAWDA”, a reszta otrzyma etykiety „FAŁSZ”.
sample.split (car_purchase $ Purchased, SplitRatio = 0.65) -> split_values
Wszystkie obserwacje, które mają etykietę „PRAWDA”, zostaną zapisane w danych „pociąg”, a obserwacje z etykietą „FAŁSZ” zostaną przypisane do danych „testowych”.
podzbiór (zakup_samochodu, wartości_podzielone == T) -> dane_pociągu
podzbiór (zakup_samochodu, wartości_podzielone == F) -> dane_testowe
Czas na zbudowanie algorytmu rekurencyjnego partycjonowania:
Zaczniemy od załadowania pakietu „rpart”:
biblioteka (rpart)
Kolumna „Kupione” będzie zmienną zależną, a wszystkie pozostałe kolumny zmiennymi niezależnymi, tj. Określamy, czy dana osoba kupiła samochód, czy nie w odniesieniu do wszystkich pozostałych kolumn. Model jest budowany na podstawie „train_data”, a wynik jest przechowywany w „mod1”.
rpart (zakupiony ~., dane = train_data) -> mod1
Wykreślmy wynik:
plot (mod1, margines = 0,1)
text (mod1, pretty = T, cex = 0,8)
Teraz przejdźmy dalej i przewidujmy wyniki na „test_data”. Jako pierwszy argument podajemy zbudowany model rpart „mod1”, zestaw testowy „test_data” jako drugi argument i typ prognozy jako „class” dla trzeciego argumentu. Wynik jest przechowywany w obiekcie „result1”.
Predict (mod1, test_data, type = 'class') -> result1
Oceńmy dokładność modelu za pomocą funkcji confusionMatrix () z pakietu caret.
biblioteka (karetka)
confusionMatrix (tabela (test_data $ Zakupiony, wynik1))
Macierz pomieszania mówi nam, że spośród 90 obserwacji, w których dana osoba nie kupiła samochodu, 79 obserwacji zostało słusznie sklasyfikowanych jako „Nie”, a 11 zostało błędnie sklasyfikowanych jako „TAK”. Podobnie z 50 obserwacji, w których osoba faktycznie kupiła samochód, 47 zostało słusznie sklasyfikowanych jako „TAK”, a 3 zostały błędnie sklasyfikowane jako „NIE”.
czym jest szef kuchni w devops
Dokładność modelu możemy znaleźć, dzieląc prawidłowe prognozy przez całkowitą liczbę prognoz, tj. (79 + 47) / (79 + 47 + 11 + 3).
Klastrowanie K-średnich:
Będziemy pracować z zestawem danych „iris”, aby zaimplementować grupowanie k-średnich:
Usuńmy kolumnę „Gatunki” i utwórzmy nowy zestaw danych, który będzie zawierał tylko pierwsze cztery kolumny ze zbioru danych „tęczówki”.
tęczówka [1: 4] -> iris_k
Przyjmijmy, że liczba klastrów wynosi 3. Funkcja „Kmeans ()” pobiera dane wejściowe i liczbę klastrów, w których dane mają być skupione. Składnia jest następująca: kmeans (dane, k) gdzie k to liczba centrów klastrów.
kmeans (iris_k, 3) -> k1
Analiza klastrów:
str (k1)
Funkcja str () podaje strukturę kmeans, która zawiera różne parametry, takie jak ins, między, itp., Analizując, które można znaleźć w wydajności kmeans.
betweenss: między sumą kwadratów, tj. podobieństwo wewnątrz klastra
withinss: W ramach sumy kwadratów, tj. podobieństwa między klastrami
totwithinss: Suma wszystkich inin wszystkich klastrów, tj. całkowite podobieństwo wewnątrz klastra
Dobre grupowanie będzie miało niższą wartość „tot.withinss” i wyższą wartość „między”, która zależy od liczby klastrów „k” wybranych na początku.
Nadszedł czas, aby stać się ekspertem w dziedzinie uczenia maszynowego i wykorzystać nowe możliwości, które pojawiają się na Twojej drodze. To prowadzi nas do końca tego „ Uczenie maszynowe z R ”Blog. Mam nadzieję, że ten blog był owocny.
Edureka ma specjalnie wyselekcjonowany który pomaga zdobyć wiedzę w zakresie algorytmów uczenia maszynowego, takich jak grupowanie średnich K, drzewa decyzyjne, losowy las, naiwny Bayes. Poznasz pojęcia statystyki, szeregów czasowych, eksploracji tekstu, a także wprowadzisz do głębokiego uczenia się. Wkrótce zaczną się nowe partie tego kursu !!