Übersicht über Machine-Learning-Algorithmen (mit Python- und R-Code)

Übersicht über Machine-Learning-Algorithmen (mit Python- und R-Code)

„Die selbstfahrenden Autos und Roboter von Google erhalten viel Aufmerksamkeit, aber unsere wahre Zukunft liegt in der Technologie, die Computer intelligenter und menschlicher macht: dem maschinellen Lernen.“

— Eric Schmidt (CEO von Google)

Da die Computertechnik von Großrechnern über Personalcomputer bis hin zur Cloud verlagert wird, befinden wir uns möglicherweise in der kritischsten Phase der Menschheitsgeschichte. Der Grund für die Bedeutung dieser Entwicklung liegt nicht in den Erfolgen, die wir bereits erzielt haben, sondern in den Fortschritten und Erfolgen, die wir in den nächsten Jahren erzielen werden.

Was mich heute am meisten begeistert, ist die Popularisierung der Computertechnologie und -werkzeuge, die den Frühling der Computertechnik eingeleitet hat. Als Datenwissenschaftler könnte ich ein Datenverarbeitungssystem bauen, um komplexe algorithmische Berechnungen durchzuführen und ein paar Dollar pro Stunde zu verdienen. Aber ich habe unzählige Tage und Nächte gebraucht, um diese Algorithmen zu lernen.

Wer kann also am meisten von diesem Artikel profitieren?

Dieser Artikel ist möglicherweise der wertvollste, den ich je geschrieben habe.

Der Zweck dieses Artikels besteht darin, allen, die sich für Datenwissenschaft und maschinelles Lernen interessieren, dabei zu helfen, den Aufwand des Erlernens von Algorithmen zu vermeiden. Ich werde in diesem Artikel einige Beispiele für Probleme des maschinellen Lernens geben. Außerdem können Sie sich beim Nachdenken über die Lösung dieser Probleme inspirieren lassen. Ich werde auch einige meiner persönlichen Erkenntnisse zu verschiedenen Algorithmen des maschinellen Lernens niederschreiben und Ausführungscode in R und Python bereitstellen. Nach der Lektüre dieses Artikels können die Leser zumindest aktiv werden und versuchen, selbst ein Programm für maschinelles Lernen zu schreiben.

In diesem Artikel werden jedoch nicht die statistischen Prinzipien hinter diesen Algorithmen erläutert. Manchmal ist es auch ein guter Lernweg, mit der Praxis zu beginnen. Wenn Sie diese statistischen Prinzipien verstehen möchten, ist dieser Artikel möglicherweise nicht das Richtige für Sie.

Generell gibt es drei Arten von Algorithmen für maschinelles Lernen:

1. Überwachtes Lernen

Überwachte Lernalgorithmen beinhalten eine Zielvariable (abhängige Variable) und Prädiktorvariablen (unabhängige Variablen), die zur Vorhersage der Zielvariable verwendet werden. Mithilfe dieser Variablen können wir ein Modell erstellen, sodass wir für einen bekannten Wert der Prädiktorvariablen den entsprechenden Wert der Zielvariablen erhalten. Das Modell wird wiederholt trainiert, bis es im Trainingsdatensatz ein vorgegebenes Genauigkeitsniveau erreicht.

Zu den Algorithmen, die zum überwachten Lernen gehören, gehören: Regressionsmodell, Entscheidungsbaum, Random Forest, K-Nearest-Neighbor-Algorithmus, logistische Regression usw.

2. Unüberwachtes Lernen

Anders als beim überwachten Lernen gibt es beim unüberwachten Lernen keine Zielvariable, die vorhergesagt oder geschätzt werden muss. Unüberwachtes Lernen wird allgemein zur Klassifizierung von Objekten verwendet. Es wird häufig verwendet, um Kunden nach einem bestimmten Indikator zu klassifizieren.

Zu den Algorithmen, die zum unüberwachten Lernen gehören, gehören: Assoziationsregeln, K-Means-Clustering-Algorithmus usw.

3. Bestärkendes Lernen

Dieser Algorithmus kann das Programm trainieren, eine bestimmte Entscheidung zu treffen. Das Programm probiert alle möglichen Aktionen in einer Situation aus, zeichnet die Ergebnisse verschiedener Aktionen auf und versucht, die beste Aktion zu finden, um eine Entscheidung zu treffen.

Zu den Algorithmen dieser Kategorie zählen beispielsweise Markow-Entscheidungsprozesse.

Gängige Algorithmen für maschinelles Lernen

Im Folgenden sind die am häufigsten verwendeten Algorithmen für maschinelles Lernen aufgeführt, mit denen sich die meisten Datenprobleme lösen lassen:

1. Lineare Regression

2. Logistische Regression

3. Entscheidungsbaum

4. Support Vector Machine (SVM)

5. Naive Bayes

6. K-nächster Nachbar (KNN)

7. K-Means-Algorithmus

8. Zufälliger Wald

9. Algorithmen zur Dimensionsreduzierung

10. Gradient Boost- und Adaboost-Algorithmen

1. Lineare Regression

Bei der linearen Regression werden kontinuierliche Variablen verwendet, um reale Werte (wie etwa Immobilienpreise, Anzahl der Anrufe und Gesamtumsatz) zu schätzen. Wir verwenden den linearen Regressionsalgorithmus, um die beste lineare Beziehung zwischen der unabhängigen Variable und der abhängigen Variable zu finden, und eine beste Gerade kann grafisch ermittelt werden. Diese beste Gerade ist die Regressionsgerade. Diese Regressionsbeziehung kann als Y=aX+b ausgedrückt werden.

Wir können uns ein Szenario zum Verständnis der linearen Regression vorstellen. Sie bitten beispielsweise einen Fünftklässler, seine Klassenkameraden nach Gewicht vom leichtesten zum schwersten aufzureihen, ohne sie nach ihrem Gewicht zu fragen. Was wird dieses Kind tun? Möglicherweise hat er die Aufstellung der Spieler anhand ihrer Größe und Statur vorgenommen. Das ist lineare Regression! Dieses Kind glaubt tatsächlich, dass Größe und Körperbau irgendwie mit dem Gewicht einer Person zusammenhängen. Und diese Beziehung ist wie die Beziehung zwischen Y und X im vorherigen Absatz.

In der Formel Y=aX+b:

Y - Abhängige Variable

a - Steigung

X - Unabhängige Variable

b-Achsenabschnitt

a und b können durch Minimieren der Summe der Quadrate der Fehler der abhängigen Variablen ermittelt werden (Methode der kleinsten Quadrate).

In der folgenden Abbildung lautet die lineare Regressionsgleichung, die wir erhalten haben, y=0,2811X+13,9. Mithilfe dieser Gleichung können wir das Gewicht einer Person anhand ihrer Körpergröße ermitteln.

Es gibt zwei Haupttypen der linearen Regression: univariate lineare Regression und multivariate lineare Regression. Die univariate lineare Regression hat nur eine unabhängige Variable, während die multiple lineare Regression mehrere unabhängige Variablen hat. Beim Anpassen der multiplen linearen Regression können Sie eine polynomische Regression oder eine krummlinige Regression verwenden.

Python-Code

#Bibliothek importieren

#Importieren Sie andere notwendige Bibliotheken wie Pandas, Numpy …

fromsklearn importlinear_model

#Train- und Test-Datasets laden

#Identifizieren Sie die Merkmals- und Antwortvariablen und die Werte müssen numerische und Numpy-Arrays sein

x_train=Eingabevariablenwerte_Trainingsdatensätze

y_train=Zielvariablenwerte_Trainingsdatensätze

x_test=Eingabevariablenwerte_Testdatensätze

#Lineares Regressionsobjekt erstellen

linear =lineares_Modell.LineareRegression()

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

linear.fit(x_Zug,y_Zug)

linear.score(x_Zug,y_Zug)

#Gleichungskoeffizient und Achsenabschnitt

drucken('Koeffizient: \n',linear.coef_)

drucken('Achsenabschnitt: \n',linear.intercept_)

#Ausgabe vorhersagen

vorhergesagt=linear.vorhersage(x_test)

R-Code

#Train- und Test-Datasets laden

#Identifizieren Sie die Merkmals- und Antwortvariablen und die Werte müssen numerische und Numpy-Arrays sein

x_train <-Eingabevariablenwerte_Trainingsdatensätze

y_train <-Zielvariablenwerte_Trainingsdatensätze

x_test <-Eingabevariablenwerte_Testdatensätze

x <-cbind(x_Zug,y_Zug)

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

linear <-lm(y_train ~.,data =x)

Zusammenfassung (linear)

#Ausgabe vorhersagen

vorhergesagt = Vorhersage(linear, x_test)

2. Logistische Regression

Lassen Sie sich nicht vom Namen verwirren, denn bei der logistischen Regression handelt es sich eigentlich eher um einen Klassifizierungsalgorithmus als um einen Regressionsalgorithmus. Es wird normalerweise verwendet, um den Wert einer diskreten abhängigen Variablen (z. B. binäre Werte 0/1, Ja/Nein, Wahr/Falsch) unter Verwendung bekannter unabhängiger Variablen vorherzusagen. Einfach ausgedrückt sagt es die Wahrscheinlichkeit eines Ereignisses durch Anpassung einer logistischen Funktion voraus. Es sagt also einen Wahrscheinlichkeitswert voraus und natürlich sollte sein Ausgabewert zwischen 0 und 1 liegen.

Auch hier können wir ein Beispiel verwenden, um diesen Algorithmus zu verstehen.

Angenommen, ein Freund bittet Sie, eine Frage zu beantworten. Es gibt nur zwei mögliche Ergebnisse: Sie haben die richtige Antwort gegeben oder nicht. Um das Themengebiet zu studieren, in dem Sie am besten sind, bearbeiten Sie Fragen aus verschiedenen Bereichen. Das Ergebnis dieser Studie könnte also etwa so lauten: Wenn es sich um ein Trigonometrieproblem der zehnten Klasse handelt, haben Sie eine 70-prozentige Chance, es lösen zu können. Handelt es sich jedoch um eine Geschichtsfrage der fünften Klasse, liegt die Wahrscheinlichkeit, dass Sie sie richtig beantworten, möglicherweise nur bei 30 %. Die logistische Regression liefert Ihnen ein solches Wahrscheinlichkeitsergebnis.

Um auf die Mathematik zurückzukommen: Die Log-Odds eines Ereignisergebnisses können durch eine lineare Kombination der Prädiktorvariablen beschrieben werden:

Quoten = p/(1-p) = Wahrscheinlichkeit des Eintretens des Ereignisses / Wahrscheinlichkeit des Nichteintretens des Ereignisses

ln(Quoten) = ln(p/(1-p))

logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3….+bkXk

Dabei ist p die Wahrscheinlichkeit, dass das Ereignis eintritt, an dessen Eintreten wir interessiert sind. Dabei werden Parameter geschätzt, indem bestimmte Parameterwerte herausgefiltert werden, die die Wahrscheinlichkeit des Auftretens der beobachteten Stichprobenwerte maximieren, anstatt wie bei der gewöhnlichen Regression die Summe der quadrierten Fehler zu minimieren.

Sie fragen sich vielleicht, warum wir Logarithmen nehmen müssen? Kurz gesagt ist dies die beste Möglichkeit, eine Schrittfunktion zu wiederholen. Da es in diesem Artikel nicht darum geht, werden wir auf diesen Aspekt nicht näher eingehen.

Python-Code

#Bibliothek importieren

fromsklearn.linear_model importLogisticRegression

#Angenommen, Sie haben X (Prädiktor) und Y (Ziel) für den Trainingsdatensatz und x_test (Prädiktor) des Testdatensatzes

# Logistisches Regressionsobjekt erstellen

Modell = LogistischeRegression()

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

model.fit(X,y)

model.score(X,y)

#Gleichungskoeffizient und Achsenabschnitt

drucken('Koeffizient: \n',model.coef_)

drucken('Achsenabschnitt: \n',model.intercept_)

#Ausgabe vorhersagen

vorhergesagt=Modell.vorhersagen(x_test)

R-Code

x <-cbind(x_Zug,y_Zug)

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

logistisch <-glm(y_train ~.,data =x,family='binomial')

Zusammenfassung (Logistik)

#Ausgabe vorhersagen

vorhergesagt = Vorhersage(Logistik, x_Test)

verlängern :

Hier sind einige Ideen, mit denen Sie Ihr Modell optimieren können:

Interaktion hinzufügen

Reduzieren Sie Feature-Variablen

Regularisierung

Verwendung nichtlinearer Modelle

3. Entscheidungsbaum

Dies ist mein Lieblingsalgorithmus, den ich am häufigsten verwende. Es gehört zum überwachten Lernen und wird häufig zur Lösung von Klassifizierungsproblemen verwendet. Überraschenderweise funktioniert es sowohl mit kategorialen als auch mit kontinuierlichen Variablen. Dieser Algorithmus ermöglicht es uns, eine Population in zwei oder mehr Gruppen aufzuteilen. Die Gruppierung der Gruppen erfolgt auf Grundlage der wichtigsten charakteristischen Variablen/unabhängigen Variablen, die die Population unterscheiden können. Weitere Einzelheiten finden Sie in diesem Artikel „Vereinfachter Entscheidungsbaum“.

Aus der obigen Abbildung können wir ersehen, dass die Gesamtbevölkerung letztendlich in vier Gruppen unterteilt wurde, je nachdem, ob sie spielten oder nicht. Die Gruppierung erfolgt anhand einiger charakteristischer Variablen. Es gibt viele spezifische Indikatoren, die zur Gruppierung verwendet werden, wie etwa Gini, Informationsgewinn, Chi-Quadrat und Entropie.

Die Funktionsweise von Entscheidungsbäumen lässt sich am besten verstehen, indem man das Spiel Jezzball spielt. Dies ist ein klassisches Spiel von Microsoft (siehe Bild unten). Die ultimative Aufgabe dieses Spiels besteht darin, sich in einem Raum mit beweglichen Wänden zu befinden und den Raum ohne Bälle durch das Bauen von Wänden in möglichst große Bereiche zu unterteilen.

Jedes Mal, wenn Sie eine Wand bauen, um einen Raum zu teilen, teilen Sie tatsächlich ein Ganzes in zwei Teile. Auch Entscheidungsbäume verwenden eine ähnliche Methode, um die Population in möglichst viele unterschiedliche Gruppen aufzuteilen.

Weiterführende Literatur : Vereinfachte Version von Entscheidungsbaumalgorithmen

Python-Code

#Bibliothek importieren

#Importieren Sie andere notwendige Bibliotheken wie Pandas, Numpy …

fromsklearn importtree

#Angenommen, Sie haben X (Prädiktor) und Y (Ziel) für den Trainingsdatensatz und x_test (Prädiktor) des Testdatensatzes

# Baumobjekt erstellen

model =tree.DecisionTreeClassifier(criterion='gini')# für die Klassifizierung, hier können Sie den Algorithmus als Gini oder Entropie (Informationsgewinn) ändern, standardmäßig ist es Gini

# model = tree.DecisionTreeRegressor() für Regression

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

model.fit(X,y)

model.score(X,y)

#Ausgabe vorhersagen

vorhergesagt=Modell.vorhersagen(x_test)

R-Code

Bibliothek (rpart)

x <-cbind(x_Zug,y_Zug)

#Baum wachsen

fit <-rpart(y_train ~.,data =x,method="class")

Zusammenfassung (passend)

#Ausgabe vorhersagen

vorhergesagt = vorhersagen(fit,x_test)

4. Support Vector Machine (SVM)

Dies ist ein Klassifizierungsalgorithmus. In diesem Algorithmus stellen wir jeden Datenpunkt in einem n-dimensionalen Raum dar (n ist die Anzahl der Merkmale) und jeder Eigenwert stellt die Größe des entsprechenden Koordinatenwerts dar. Nehmen wir an, wir haben zwei Merkmale: die Körpergröße und die Haarlänge einer Person. Wir können diese beiden Variablen in einem zweidimensionalen Raum darstellen, wobei jeder Punkt im Diagramm zwei Koordinatenwerte hat (diese Koordinatenachsen werden auch als Unterstützungsvektoren bezeichnet).

Nun müssen wir im Graphen eine Gerade finden, die die verschiedenen Punktgruppen möglichst weit voneinander trennen kann. Die Punkte, die in beiden Datensätzen der Linie am nächsten liegen, sollten am weitesten von der Linie entfernt sein.

Im Bild oben ist die schwarze Linie die optimale Trennlinie. Weil diese Linie am weitesten von den nächstgelegenen Punkten in den beiden Gruppen, den Punkten A und B, entfernt ist. Jede andere Linie würde zwangsläufig einen der Punkte näher als diese Entfernung bringen. Auf diese Weise können wir die Daten danach klassifizieren, auf welcher Seite der Linie die Datenpunkte verteilt sind.

Weitere Lektüre : Vereinfachte Version der Support Vector Machine

Wir können uns diesen Algorithmus als das Spiel JezzBall im n-dimensionalen Raum vorstellen, allerdings mit einigen Änderungen:

Sie können Trennlinien/-ebenen in jedem beliebigen Winkel zeichnen (im klassischen Spiel nur vertikal und horizontal).

Ziel des Spiels ist es, die Bälle unterschiedlicher Farbe in verschiedene Felder zu sortieren.

Der Ball ist bewegungslos.

Python-Code

#Bibliothek importieren

fromsklearn import svm

#Angenommen, Sie haben X (Prädiktor) und Y (Ziel) für den Trainingsdatensatz und x_test (Prädiktor) des Testdatensatzes

# SVM-Klassifizierungsobjekt erstellen

model =svm.svc()#, es sind verschiedene Optionen damit verknüpft, dies ist einfach für die Klassifizierung. Weitere Einzelheiten finden Sie unter dem Link.

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

model.fit(X,y)

model.score(X,y)

#Ausgabe vorhersagen

vorhergesagt=Modell.vorhersagen(x_test)

R-Code

Bibliothek (e1071)

x <-cbind(x_Zug,y_Zug)

# Passendes Modell

fit <-svm(y_train ~.,data =x)

Zusammenfassung (passend)

#Ausgabe vorhersagen

vorhergesagt = Vorhersage(fit,x_test)

5. Naive Bayes

Dieser Algorithmus ist eine Klassifizierungsmethode, die auf der Bayes'schen Theorie basiert. Dabei wird davon ausgegangen, dass die unabhängigen Variablen voneinander unabhängig sind. Kurz gesagt geht Naive Bayes davon aus, dass das Vorhandensein eines Merkmals unabhängig von anderen Merkmalen ist. Wenn eine Frucht beispielsweise rot, rund und etwa 7 cm im Durchmesser ist, könnten wir davon ausgehen, dass es sich um einen Apfel handelt. Obwohl zwischen diesen Merkmalen eine Beziehung besteht, gehen wir im Naive-Bayes-Algorithmus davon aus, dass Röte, Rundheit und Durchmesser bei der Bestimmung der Wahrscheinlichkeit, dass es sich bei einer Frucht um einen Apfel handelt, unabhängig voneinander sind.

Naive Bayes-Modelle lassen sich leicht erstellen und sind bei der Analyse großer Datenmengen sehr effizient. Obwohl das Modell einfach ist, funktioniert es in vielen Fällen besser als sehr komplexe Klassifizierungsmethoden.

Die Bayes'sche Theorie erklärt uns, wie wir die Posterior-Wahrscheinlichkeit P(c|x) aus der Prior-Wahrscheinlichkeit P(c), P(x) und der bedingten Wahrscheinlichkeit P(x|c) berechnen. Der Algorithmus ist wie folgt:

P(c|x) ist die Posterior-Wahrscheinlichkeit der Klassifizierung c bei gegebenem Merkmal x.

P(c) ist die A-priori-Wahrscheinlichkeit der Kategorie c.

P(x|c) ist die Wahrscheinlichkeit, dass Kategorie c das Merkmal x hat.

P(x) ist die vorherige Wahrscheinlichkeit des Merkmals x.

Beispiel: Der folgende Trainingssatz enthält Wettervariablen und die Zielvariable „ob man rausgehen und spielen soll“. Wir müssen die Leute jetzt je nach Wetterbedingungen in zwei Gruppen einteilen: diejenigen, die spielen, und diejenigen, die nicht spielen. Der gesamte Vorgang wird in den folgenden Schritten durchgeführt:

Schritt 1: Erstellen Sie eine Häufigkeitstabelle basierend auf bekannten Daten

Schritt 2: Berechnen Sie die Wahrscheinlichkeit jeder Situation und erstellen Sie eine Wahrscheinlichkeitstabelle. Beispielsweise beträgt die Wahrscheinlichkeit von Overcast 0,29 und die Wahrscheinlichkeit, zu diesem Zeitpunkt zu spielen, 0,64.

Schritt 3: Verwenden Sie Naive Bayes, um die Posterior-Wahrscheinlichkeit für das Spielen und Nichtspielen unter allen Wetterbedingungen zu berechnen. Das Ergebnis ist mit hoher Wahrscheinlichkeit der vorhergesagte Wert.

Frage: Wenn das Wetter sonnig ist, werden die Leute spielen. Ist diese Aussage richtig?

Diese Frage können wir mit der oben beschriebenen Methode beantworten. P(Ja | Sonnig)=P(Sonnig | Ja) * P(Ja) / P(Sonnig).

Hier gilt: P(Sonnig | Ja) = 3/9 = 0,33, P(Sonnig) = 5/14 = 0,36, P(Ja) = 9/14 = 0,64.

Dann ist P (Ja | Sonnig) = 0,33 * 0,64 / 0,36 = 0,60 > 0,5, was bedeutet, dass der Wahrscheinlichkeitswert größer ist.

Wenn mehrere Kategorien und mehrere Merkmale vorhanden sind, ist die Vorhersagemethode ähnlich. Naive Bayes wird häufig für die Textklassifizierung und Klassifizierungsprobleme mehrerer Klassen verwendet.

Python-Code

#Bibliothek importieren

fromsklearn.naive_bayes importGaussianNB

#Angenommen, Sie haben X (Prädiktor) und Y (Ziel) für den Trainingsdatensatz und x_test (Prädiktor) des Testdatensatzes

# SVM-Klassifizierungsobjektmodell erstellen = GaussianNB() # es gibt andere Verteilungen für multinomiale Klassen wie Bernoulli Naive Bayes, siehe Link

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

model.fit(X,y)

#Ausgabe vorhersagen

vorhergesagt=Modell.vorhersagen(x_test)

R-Code

Bibliothek (e1071)

x <-cbind(x_Zug,y_Zug)

# Passendes Modell

fit <-naiveBayes(y_train ~.,data =x)

Zusammenfassung (passend)

#Ausgabe vorhersagen

vorhergesagt = vorhersagen(fit,x_test)

6. KNN (K-nächster Nachbar)

Dieser Algorithmus kann sowohl Klassifizierungs- als auch Regressionsprobleme lösen, wird in der Industrie jedoch häufiger zur Klassifizierung verwendet. KNN zeichnet zunächst alle bekannten Daten auf, verwendet dann eine Distanzfunktion, um die K Datengruppen in den bekannten Daten zu finden, die dem unbekannten Ereignis am nächsten liegen, und sagt schließlich das Ereignis basierend auf der häufigsten Kategorie in diesen K Datengruppen voraus.

Die Distanzfunktion kann die euklidische Distanz, die Manhattan-Distanz, die Minkowski-Distanz und die Hamming-Distanz sein. Die ersten drei werden für kontinuierliche Variablen verwendet, und die Hamming-Distanz wird für kategoriale Variablen verwendet. Wenn K=1, vereinfacht sich das Problem auf eine Klassifizierung auf Grundlage der aktuellsten Daten. Die Auswahl des K-Werts ist bei der KNN-Modellierung oft der Schlüssel.

KNN wird im Leben häufig verwendet. Wenn Sie beispielsweise etwas über eine Ihnen unbekannte Person erfahren möchten, können Sie Informationen über die Person aus ihrem engen Freundes- und Bekanntenkreis einholen.

Bevor Sie KNN verwenden, müssen Sie Folgendes berücksichtigen:

KNN ist rechenintensiv

Die Größe aller Merkmale muss normalisiert werden, da es sonst bei Merkmalen mit großen Größen zu einer Verzerrung der berechneten Entfernung kommt.

Vor der Durchführung von KNN müssen die Daten vorverarbeitet werden, z. B. durch Entfernen von Ausreißern, Rauschen usw.

Python-Code

#Bibliothek importieren

fromsklearn.neighbors importKNeighborsClassifier

#Angenommen, Sie haben X (Prädiktor) und Y (Ziel) für den Trainingsdatensatz und x_test (Prädiktor) des Testdatensatzes

# Erstellen Sie ein KNeighbors-Klassifikator-Objektmodell

KNeighborsClassifier(n_neighbors=6)# Standardwert für n_neighbors ist 5

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

model.fit(X,y)

#Ausgabe vorhersagen

vorhergesagt=Modell.vorhersagen(x_test)

R-Code

Bibliothek (knn)

x <-cbind(x_Zug,y_Zug)

# Passendes Modell

fit <-knn(y_train ~.,data =x,k=5)

Zusammenfassung (passend)

#Ausgabe vorhersagen

vorhergesagt = vorhersagen(fit,x_test)

7. K-Mittel

Dies ist ein unüberwachter Lernalgorithmus für Clusterprobleme. Diese Methode verwendet einfach eine bestimmte Anzahl von Clustern (angenommen K-Cluster), um die gegebenen Daten zu klassifizieren. Die Datenpunkte im selben Cluster sind vom gleichen Typ, und die Datenpunkte in verschiedenen Clustern sind von unterschiedlichen Typen.

Erinnern Sie sich, wie Sie aus Tintenflecken Formen erkennen konnten? Der Prozess des K-Means-Algorithmus ist ähnlich, Sie müssen auch hier die Anzahl der Cluster beurteilen, indem Sie die Clusterform und -verteilung beobachten!

Wie unterteilt der K-Means-Algorithmus Cluster?

Wählen Sie K Datenpunkte aus jedem Cluster als Schwerpunkte aus.

Jeder Datenpunkt und der ihm am nächsten gelegene Schwerpunkt werden in denselben Cluster unterteilt, d. h. es werden K neue Cluster generiert.

Suchen Sie den Schwerpunkt des neuen Clusters, sodass Sie den neuen Schwerpunkt haben.

Wiederholen Sie 2 und 3, bis die Ergebnisse konvergieren, d. h., keine neuen Schwerpunkte mehr auftreten.

So bestimmen Sie den Wert von K:

Wenn wir die Summe der quadrierten Distanzen von allen Punkten in jedem Cluster zum Schwerpunkt berechnen und dann die Summen der quadrierten Distanzen von verschiedenen Clustern addieren, erhalten wir die Gesamtsumme der Quadrate für diese Clusterlösung.

Wir wissen, dass die Gesamtsumme der Quadrate abnimmt, wenn die Anzahl der Cluster zunimmt. Wenn Sie jedoch die Gesamtsumme der Quadrate gegen K auftragen, werden Sie feststellen, dass die Gesamtsumme der Quadrate vor einem bestimmten K-Wert schnell abnimmt, nach diesem K-Wert jedoch stark abnimmt. Dieser Wert ist die optimale Anzahl an Clustern.

Python-Code

#Bibliothek importieren

fromsklearn.cluster importKMeans

#Angenommen, Sie haben X (Attribute) für den Trainingsdatensatz und x_test(Attribute) des Testdatensatzes

# Erstellen Sie ein KNeighbors-Klassifikator-Objektmodell

k_means =KMeans(n_clusters=3,random_state=0)

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

model.fit(X)

#Ausgabe vorhersagen

vorhergesagt=Modell.vorhersagen(x_test)

R-Code

Bibliothek (Cluster)

fit <-kmeans(X,3)# 5 Cluster-Lösung

8. Zufälliger Wald

„Random Forest“ ist ein ausgefallener Name für eine Gruppe von Entscheidungsbäumen. In einem Zufallswald haben wir mehrere Entscheidungsbäume (daher der Name „Wald“). Um eine neue Beobachtung zu klassifizieren, gibt jeder Entscheidungsbaum eine Klassifizierung basierend auf seinen Merkmalen vor. Der Random-Forest-Algorithmus wählt die Klassifizierung mit den meisten Stimmen als Klassifizierungsergebnis aus.

So erstellen Sie einen Entscheidungsbaum:

Wenn der Trainingssatz N Kategorien enthält, werden N Stichproben wiederholt zufällig ausgewählt. Diese Beispiele bilden den Trainingssatz für die Entwicklung des Entscheidungsbaums.

Wenn M Merkmalsvariablen vorhanden sind, wählen Sie die Zahl m << M, sodass an jedem Knoten zufällig m Merkmalsvariablen ausgewählt werden, um den Knoten aufzuteilen. m bleibt während der gesamten Waldformation konstant.

Jeder Entscheidungsbaum wird so weit wie möglich aufgeteilt, ohne dass ein Beschneiden erfolgt.

Durch Vergleichen von Entscheidungsbäumen und Optimieren der Modellparameter können weitere Details zum Algorithmus gewonnen werden. Ich empfehle den Lesern, diese Artikel zu lesen:

Einführung in Random Forest – Vereinfacht

Vergleich eines CART-Modells mit Random Forest (Teil 1)

Vergleich eines Random Forest mit einem CART-Modell (Teil 2)

Optimieren der Parameter Ihres Random-Forest-Modells

Python-Code

#Bibliothek importieren

fromsklearn.ensemble importiereRandomForestClassifier

#Angenommen, Sie haben X (Prädiktor) und Y (Ziel) für den Trainingsdatensatz und x_test (Prädiktor) des Testdatensatzes

# Random Forest-Objekt erstellen

Modell=RandomForestClassifier()

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

model.fit(X,y)

#Ausgabe vorhersagen

vorhergesagt=Modell.vorhersagen(x_test)

R-Code

Bibliothek (randomForest)

x <-cbind(x_Zug,y_Zug)

# Passendes Modell

fit <-randomForest(Art~.,x,ntree=500)

Zusammenfassung (passend)

#Ausgabe vorhersagen

vorhergesagt = Vorhersage(fit,x_test)

9. Algorithmen zur Dimensionsreduzierung

In den letzten vier bis fünf Jahren ist die Menge der verfügbaren Daten nahezu exponentiell gewachsen. Unternehmen/Behörden/Forschungseinrichtungen verfügen nicht nur über mehr Datenquellen, sondern erhalten auch Dateninformationen in mehr Dimensionen.

Beispiel: E-Commerce-Unternehmen verfügen über detailliertere Informationen über Kunden, etwa persönliche Informationen, den Browserverlauf, persönliche Vorlieben und Abneigungen, Kaufaufzeichnungen, Feedback-Informationen usw. Sie achten auf Ihre privaten Merkmale und kennen Sie besser als die Verkäufer im Supermarkt, in den Sie jeden Tag gehen.

Als Datenwissenschaftler verfügen wir über viele charakteristische Daten. Obwohl dies für die Erstellung leistungsfähigerer und genauerer Modelle gut klingt, kann es bei der Modellierung manchmal eine echte Herausforderung darstellen. Wie können Sie unter 1.000 oder 2.000 Variablen die wichtigsten Variablen finden? In diesem Fall können uns Algorithmen zur Dimensionsreduzierung und andere Algorithmen wie Entscheidungsbäume, Random Forests, PCA, Faktorenanalyse, Korrelationsmatrizen und Standardwertverhältnisse bei der Lösung des Problems helfen.

Weitere Informationen finden Sie im Anfängerhandbuch zum Erlernen von Techniken zur Dimensionsreduzierung.

Python-Code

Mehr Informationen hier

#Bibliothek importieren

fromsklearn importdecomposition

#Angenommen, Sie haben Trainings- und Testdaten als Trainieren und Testen festgelegt

# PCA-Objekt erstellen pca= decomposition.PCA(n_components=k) #Standardwert von k =min(n_sample, n_features)

# Für die Faktorenanalyse

#fa= Zerlegung.Faktorenanalyse()

# Reduzierte die Dimension des Trainingsdatensatzes mithilfe von PCA

train_reduced =pca.fit_transform(train)

#Die Dimension des Testdatensatzes wurde reduziert

test_reduziert =pca.transform(test)

R-Code

Bibliothek (Statistiken)

pca <-princomp(Zug,Kor =WAHR)

train_reduced <-predict(pca,train)

test_reduziert <-vorhersagen(pca,test)

10.Gradient Boosting und AdaBoost

GBM und AdaBoost sind beides Boosting-Algorithmen, die die Vorhersagegenauigkeit bei großen Datenmengen verbessern. Boosting ist eine Ensemble-Lernmethode. Es verbessert die Vorhersagegenauigkeit durch die sequentielle Kombination der Schätzergebnisse mehrerer schwächerer Klassifikatoren/Schätzer. Diese Boosting-Algorithmen haben bei Data-Science-Wettbewerben wie Kaggle, AV Hackthon und CrowdAnalytix gute Ergebnisse erzielt.

Weitere Informationen: Erfahren Sie mehr über Gradient und AdaBoost

Python-Code

#Bibliothek importieren

fromsklearn.ensemble importiereGradientBoostingClassifier

#Angenommen, Sie haben X (Prädiktor) und Y (Ziel) für den Trainingsdatensatz und x_test (Prädiktor) des Testdatensatzes

# Gradient Boosting Classifier-Objekt erstellen

Modell=GradientBoostingClassifier(n_Schätzer=100,Lernrate=1,0,max_Tiefe=1,Zufallszustand=0)

# Trainieren Sie das Modell mit den Trainingssätzen und überprüfen Sie das Ergebnis

model.fit(X,y)

#Ausgabe vorhersagen

vorhergesagt=Modell.vorhersagen(x_test)

R-Code

Bibliothek (Caret)

x <-cbind(x_Zug,y_Zug)

# Passendes Modell

fitControl <-trainControl(Methode =”repeatedcv”,Zahl =4,Wiederholungen =4)

fit <-train(y ~.,data =x,method =”gbm”,trControl =fitControl,verbose =FALSE)

vorhergesagt = vorhersagen (fit, x_test, Typ = "prob") [, 2]

GradientBoostingClassifier und Random Forest sind zwei verschiedene Boosting-Klassifizierungsbäume. Die Leute fragen oft, was der Unterschied zwischen diesen beiden Algorithmen ist.

Abschluss

An diesem Punkt glaube ich, dass die Leser über ein gewisses Verständnis häufig verwendeter Algorithmen für maschinelles Lernen verfügen. Dieser Artikel wurde geschrieben und der R- und Python-Code wurde bereitgestellt, damit Sie sofort mit dem Lernen beginnen können. Legen Sie los und üben Sie, vertiefen Sie Ihr Verständnis dieser algorithmischen Prozesse, wenden Sie sie an und Sie werden maschinelles Lernen lieben!

Zusammengestellt von: @Jiujiu

Autor: Big Data Digest

<<:  Wird es eine Vererbung oder eine kontinuierliche Veränderung sein? Wer wird der neue Chef von Nintendo?

>>:  Die Homogenitätsgrenze ist bereits erreicht. Wie kann das mobile „Showfeld“ seine Wettbewerbsfähigkeit steigern?

Artikel empfehlen

Welche Regeln gelten für Gruppen-Seilspringwettbewerbe?

Regelmäßige körperliche Betätigung kann den Körpe...

Wie können Sie Ihre Beinmuskulatur entspannen?

Normalerweise sind die Beinmuskeln vieler unserer...

Wird künstliche Intelligenz den harten Wettbewerb im Cloud Computing beenden?

Kürzlich veröffentlichte das renommierte Marktfor...

Kann ich Yoga praktizieren, wenn ich an chronischer Nephritis leide?

Wenn wir an chronischer Nephritis leiden, wissen ...

Welche Art von Bewegung nach dem Essen kann beim Abnehmen helfen?

Angestellte treiben selten Sport und normalerweis...