Maschinelles Lernen in R für Anfänger mit Beispiel



Dieser Blog über maschinelles Lernen mit R hilft Ihnen, Kernkonzepte des maschinellen Lernens zu lernen und verschiedene Algorithmen für maschinelles Lernen mit R zu implementieren.

Maschinelles Lernen mit R.

Maschinelles Lernen ist Gegenwart und Zukunft! Von der Empfehlungs-Engine von Netflix bis zum selbstfahrenden Auto von Google ist alles maschinelles Lernen. Dieser Blog über maschinelles Lernen mit R hilft Ihnen, die Kernkonzepte des maschinellen Lernens zu verstehen, gefolgt von verschiedenen Algorithmen für maschinelles Lernen und der Implementierung dieser Algorithmen für maschinelles Lernen mit R.

Dieser Blog zum Thema „Maschinelles Lernen mit R“ umfasst folgende Abschnitte:





Maschinelles Lernen mit R | Edureka

Maschinelles Lernen verstehen

Fish1- Maschinelles Lernen mit R - Edureka



Woher weißt du, dass all das Fische sind?



Als Kind sind Sie möglicherweise auf ein Bild eines Fisches gestoßen, und Ihre Kindergärtnerinnen oder Eltern haben Ihnen gesagt, dass es sich um einen Fisch handelt, mit dem einige Besonderheiten verbunden sind, z. B. Flossen, Kiemen und ein Paar Augen, ein Schwanz und so weiter. Immer wenn Ihr Gehirn auf ein Bild mit diesen Funktionen stößt, registriert es es automatisch als Fisch, weil Ihr Gehirn dies hat gelernt dass es ein Fisch ist.

So funktioniert unser Gehirn, aber was ist mit einer Maschine? Wenn dasselbe Bild einer Maschine zugeführt wird, wie erkennt die Maschine, dass es sich um einen Fisch handelt?

Hier ist M. achine Lernen Wir geben weiterhin Bilder eines Fisches an einen Computer mit dem Tag 'Fisch' weiter Maschine lernt alle damit verbundenen Funktionen mit einer Fisch.

Sobald die Maschine alle mit einem Fisch verbundenen Merkmale gelernt hat, werden wir ihm neue Daten zuführen, um festzustellen, wie viel er gelernt hat.

Verwendung der Scannerklasse in Java

Mit anderen Worten, Rohdaten / Trainingsdaten wird der Maschine gegeben, so dass es lernt alle mit dem Trainingsdaten. Sobald das Lernen abgeschlossen ist, wird es gegeben Neue Daten / Testdaten um festzustellen, wie gut die Maschine gelernt hat.

Lassen Sie uns in diesem Blog über maschinelles Lernen mit R weitermachen und die Arten des maschinellen Lernens verstehen.

Arten des maschinellen Lernens

  • Überwachtes Lernen:

Der Algorithmus für überwachtes Lernen lernt aus einem bekannten Datensatz (Trainingsdaten), der Beschriftungen enthält, um Vorhersagen zu treffen.

Regression und Klassifikation sind einige Beispiele für überwachtes Lernen.

#Einstufung:

Die Klassifizierung bestimmt, zu welcher Gruppe von Kategorien eine neue Beobachtung gehört, dh ein Klassifizierungsalgorithmus lernt alle Merkmale und Beschriftungen der Trainingsdaten und wenn ihm neue Daten gegeben werden, muss er den neuen Beobachtungen Beschriftungen zuweisen, je nachdem, was er gelernt hat aus den Trainingsdaten.

Wenn in diesem Beispiel die erste Beobachtung mit der Bezeichnung „Mann“ versehen ist, ist sie richtig klassifiziert. Wenn sie jedoch mit der Bezeichnung „Frau“ versehen ist, ist die Klassifizierung falsch. In ähnlicher Weise wird für die zweite Beobachtung, wenn das angegebene Etikett „Frau“ lautet, es richtig klassifiziert, andernfalls ist die Klassifizierung falsch.

#Regression:

Regression ist ein überwachter Lernalgorithmus, mit dessen Hilfe bestimmt werden kann, wie eine Variable eine andere Variable beeinflusst.

Hier ist 'living_area' die unabhängige Variable und 'price' die abhängige Variable, d. H. Wir bestimmen, wie sich 'price' in Bezug auf 'living_area' ändert.

  • Unbeaufsichtigtes Lernen:

Der unbeaufsichtigte Lernalgorithmus zieht Schlussfolgerungen aus Daten, die keine Beschriftungen haben.

Clustering ist ein Beispiel für unbeaufsichtigtes Lernen. 'K-bedeutet', 'Hierarchisch', 'Fuzzy-C-Mittel' sind einige Beispiele für Clustering-Algorithmen.

In diesem Beispiel ist der Satz von Beobachtungen in zwei Cluster unterteilt. Die Clusterbildung erfolgt auf der Grundlage der Ähnlichkeit zwischen den Beobachtungen. Es gibt eine hohe Ähnlichkeit innerhalb des Clusters und eine geringe Ähnlichkeit zwischen den Clustern, d. H. Es gibt eine sehr hohe Ähnlichkeit zwischen allen Bussen, aber eine geringe Ähnlichkeit zwischen den Bussen und Autos.

  • Reinforcement Learning:

Reinforcement Learning ist eine Art Algorithmus für maschinelles Lernen, bei dem die Maschine / Agent in einem (n Umgebung lernt ideales Verhalten, um seine Leistung zu maximieren. Ein einfaches Belohnungsfeedback ist erforderlich, damit der Agent sein Verhalten lernen kann. Dies wird als bezeichnet Verstärkungssignal .

Lass uns nehmen Pacman beispielsweise. Solange Pacman weiter isst, erhält er Punkte, aber wenn er gegen ein Monster stößt, verliert er sein Leben. So lernt Pacman, dass er mehr essen und Monster meiden mussum die Leistung zu verbessern.

Implementierung von maschinellem Lernen mit R:

Lineare Regression:

Wir werden mit dem Diamanten-Datensatz arbeiten, um einen linearen Regressionsalgorithmus zu implementieren:

Beschreibung des Datensatzes:

Bevor wir ein Modell auf den Daten aufbauen, sollten wir die Daten in 'Zug' - und 'Test' -Sätze aufteilen. Das Modell wird auf dem 'Zug' -Set aufgebaut und die Genauigkeit wird auf dem 'Test' -Set überprüft.

Wir müssen das Paket 'caTools' laden, um die Daten in zwei Sätze aufzuteilen.

Bibliothek (caTools)

Das Paket 'caTools' bietet eine Funktion 'sample.split ()', die beim Aufteilen der Daten hilft.

sample.split (Diamanten $ Preis, SplitRatio = 0,65) -> split_index

65% der Beobachtungen aus der Preisspalte wurden mit dem Etikett „wahr“ und den restlichen 35% mit dem Etikett „falsch“ versehen.

Teilmenge (Diamanten, split_index == T) -> Zug Teilmenge (Diamanten, split_index == F) -> Test

Alle Beobachtungen mit dem Etikett „true“ wurden im Abschnitt „true“ gespeichert. Zug ”Objekt und diese Beobachtungen mit dem 'falschen' Etikett wurden dem 'Test' -Satz zugeordnet.

Nachdem die Aufteilung abgeschlossen ist und wir unsere 'Zug' - und 'Test' -Sätze haben, ist es Zeit, das lineare Regressionsmodell auf dem Trainingssatz aufzubauen.

Wir werden die Funktion 'lm ()' verwenden, um das lineare Regressionsmodell auf den 'Zug' -Daten aufzubauen. Wir bestimmen die Preis der Diamanten in Bezug auf alle anderen Variablen des Datensatzes. Das erstellte Modell wird im Objekt 'mod_regress' gespeichert.

lm (Preis ~., Daten = Zug) -> mod_regress

Nachdem wir das Modell erstellt haben, müssen wir Vorhersagen für den „Test“ -Satz treffen. Die Funktion 'Predict ()' wird verwendet, um Vorhersagen zu erhalten. Es braucht zwei Argumente: die gebautes Modell und der Testset. Die vorhergesagten Ergebnisse werden im Objekt 'result_regress' gespeichert.

vorhersagen (mod_regress, test) -> result_regress

Binden wir die tatsächlichen Preiswerte aus dem 'Test' -Datensatz und die vorhergesagten Werte mithilfe der 'cbind ()' - Funktion in einen einzigen Datensatz. Der neue Datenrahmen wird in 'Final_Data' gespeichert.

cbind (Actual = test $ price, Predicted = result_regress) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

Ein Blick auf die „Final_Data“, die aus tatsächlichen und vorhergesagten Werten besteht:

Lassen Sie uns den Fehler finden, indem wir die vorhergesagten Werte von den tatsächlichen Werten subtrahieren und diesen Fehler als neue Spalte zu den 'Final_Data' hinzufügen:

(Final_Data $ Actual- Final_Data $ Predicted) -> Fehler
cbind (Final_Data, Fehler) -> Final_Data

Ein Blick auf die „Final_Data“, die auch den Vorhersagefehler umfasst:

Jetzt berechnen wir ' Root Mean Square Error ” Dies ergibt einen aggregierten Fehler für alle Vorhersagen

rmse1<-sqrt(mean(Final_Data$error^2)) 
rmse1

Lassen Sie uns zunächst ein weiteres Modell erstellen, damit wir die Genauigkeit dieser beiden Modelle vergleichen und feststellen können, welches Modell besser ist.

Wir werden ein neues lineares Regressionsmodell für das 'Zug' -Set erstellen, aber dieses Mal werden wir die 'x' - und 'y' -Spalten aus den unabhängigen Variablen entfernen, dh der 'Preis' der Diamanten wird von allen bestimmt Spalten außer 'x' und 'y'.

Das erstellte Modell wird in „mod_regress2“ gespeichert:

lm (Preis ~ .- y-z, Daten = Zug) -> mod_regress2

Die vorhergesagten Ergebnisse werden in 'result_regress2' gespeichert.

vorhersagen (mod_regress2, test) -> result_regress2

Aktuelle und vorhergesagte Werte werden kombiniert und in „Final_Data2“ gespeichert:

cbind (Actual = test $ price, Predicted = result_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

Fügen wir den Vorhersagefehler auch zu 'Final_Data2' hinzu.

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> error2
cbind (Final_Data2, error2) -> Final_Data2

Ein Blick auf 'Final_Data2':

Ermitteln des quadratischen Durchschnittsfehlers, um den Gesamtfehler zu erhalten:

rmse2<-sqrt(mean(Final_Data2$error^2))

Was ist Projektbeschaffungsmanagement?

Wir sehen, dass 'rmse2' geringfügig kleiner als 'rmse1' ist und daher das zweite Modell geringfügig besser als das erste Modell ist.

Einstufung:

Wir werden mit dem zu implementierenden Datensatz 'car_purchase' arbeiten rekursive Partitionierung Das ist ein Klassifizierungsalgorithmus.

Teilen wir die Daten mithilfe der Funktion 'sample.split ()' aus dem Paket 'caTools' in 'train' - und 'test' -Sätze auf.

Bibliothek (caTools)

65% der Beobachtungen aus der Spalte 'Gekauft' werden mit 'TRUE' -Labels und dem Rest mit 'FALSE' -Labels versehen.

sample.split (car_purchase $ Purchased, SplitRatio = 0.65) -> split_values

Alle Beobachtungen mit dem Label 'TRUE' werden in 'Zug' -Daten gespeichert, und alle Beobachtungen mit dem Label 'FALSE' werden den 'Test' -Daten zugewiesen.

Teilmenge (car_purchase, split_values ​​== T) -> train_data
Teilmenge (car_purchase, split_values ​​== F) -> test_data

Zeit zum Erstellen des rekursiven Partitionierungsalgorithmus:

Zunächst laden wir das Paket 'rpart':

Bibliothek (rpart)

Die Spalte 'Gekauft' ist die abhängige Variable, und alle anderen Spalten sind die unabhängigen Variablen, d. H. Wir bestimmen, ob die Person das Auto in Bezug auf alle anderen Spalten gekauft hat oder nicht. Das Modell basiert auf den 'train_data' und das Ergebnis wird in 'mod1' gespeichert.

rpart (Gekauft ~., data = train_data) -> mod1

Zeichnen wir das Ergebnis:

Plot (mod1, Rand = 0,1) Text (mod1, hübsch = T, cex = 0,8)

Lassen Sie uns nun fortfahren und die Ergebnisse auf 'test_data' vorhersagen. Wir geben das erstellte Teilmodell 'mod1' als erstes Argument an, die Testmenge 'test_data' als zweites Argument und den Vorhersagetyp als 'Klasse' für das dritte Argument. Das Ergebnis wird im Objekt 'result1' gespeichert.

Vorhersagen (mod1, test_data, type = 'class') -> result1

Lassen Sie uns die Genauigkeit des Modells mithilfe der Funktion 'confusionMatrix ()' aus dem Caret-Paket bewerten.

Bibliothek (Caret) confusionMatrix (Tabelle (test_data $ Purchased, result1))

Die Verwirrungsmatrix sagt uns, dass von den 90 Beobachtungen, bei denen die Person das Auto nicht gekauft hat, 79 Beobachtungen zu Recht als „Nein“ und 11 zu Unrecht als „JA“ eingestuft wurden. In ähnlicher Weise wurden von den 50 Beobachtungen, bei denen die Person das Auto tatsächlich gekauft hat, 47 zu Recht als „JA“ und 3 zu Unrecht als „NEIN“ eingestuft.

Wir können die Genauigkeit des Modells finden, indem wir die korrekten Vorhersagen durch Gesamtvorhersagen teilen, d. H. (79 + 47) / (79 + 47 + 11 + 3).

K-Means Clustering:

Wir werden mit dem 'Iris' -Datensatz arbeiten, um k-means Clustering zu implementieren:

Entfernen Sie die Spalte 'Spezies' und erstellen Sie einen neuen Datensatz, der nur die ersten vier Spalten aus dem 'Iris' -Datensatz enthält.

Iris [1: 4] -> Iris_k

Nehmen wir an, dass die Anzahl der Cluster 3 beträgt. Die Funktion „Kmeans ()“ verwendet die Eingabedaten und die Anzahl der Cluster, in denen die Daten geclustert werden sollen. Die Syntax lautet: kmeans (Daten, k) wobei k die Anzahl der Clusterzentren ist.

kmeans (iris_k, 3) -> k1

Analyse des Clusters:

str (k1)

Die Funktion str () gibt die Struktur der km-Werte an, die verschiedene Parameter wie Inss, Zwischenwerte usw. enthält, und analysiert, anhand derer Sie die Leistung von km-Werten ermitteln können.

zwischen: Quadratsumme, d. h. Intracluster-Ähnlichkeit

Innerhalb: Innerhalb der Summe des Quadrats, d. h. der Intercluster-Ähnlichkeit

totwithinss: Summe aller Innereien aller Cluster, d. h. Gesamtähnlichkeit innerhalb des Clusters

Ein gutes Clustering hat einen niedrigeren Wert von 'tot.withinss' und einen höheren Wert von 'zwischen', was von der Anzahl der ursprünglich ausgewählten Cluster 'k' abhängt.

Die Zeit ist reif, ein Experte für maschinelles Lernen zu werden, um neue Möglichkeiten zu nutzen, die sich Ihnen bieten. Dies bringt uns zum Ende dieses „ Maschinelles Lernen mit R. Blog. Ich hoffe dieser Blog war informativ fruchtbar.

Edureka hat eine speziell kuratierte Dies hilft Ihnen, Fachwissen über Algorithmen für maschinelles Lernen wie K-Means-Clustering, Entscheidungsbäume, Random Forest und Naive Bayes zu erlangen. Sie lernen auch die Konzepte von Statistik, Zeitreihen, Text Mining und eine Einführung in Deep Learning. Neue Chargen für diesen Kurs beginnen bald !!