Uczenie maszynowe w R dla początkujących z przykładem



Ten blog o uczeniu maszynowym w języku R pomaga poznać podstawowe koncepcje uczenia maszynowego i wdrażać różne algorytmy uczenia maszynowego w języku R.

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:





Uczenie maszynowe z R | Edureka

Zrozumienie uczenia maszynowego

Fish1- Uczenie maszynowe z R - Edureka



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 !!