Donnerstag , Oktober 1 2020

Top 5 statistische Techniken in Python

Blog

Wenn Datensätze größer und komplexer werden, können nur KI, materialisierte Ansichten und komplexere Codierungssprachen daraus Erkenntnisse gewinnen. In Next-Level Moves untersuchen wir, wie fortschrittliche Analytik den Weg für die nächste Innovationswelle ebnet.

Ein Datenwissenschaftler muss in vielen Künsten ausgebildet sein: Mathematik und Statistik, Informatik, und Domänenwissen. Unabhängig von Ihren Fähigkeiten, Ihrem Karrierelevel oder Ihrem Titel ist die Fähigkeit, Daten zu analysieren, zu organisieren und zu visualisieren, eine wichtige Fähigkeit in unserer Welt schnell wachsender und sich ständig ändernder Daten.

Statistik und Programmierung gehen Hand in Hand. Die Beherrschung statistischer Techniken und das Wissen, wie sie über eine Programmiersprache implementiert werden können, sind wesentliche Bausteine ​​für erweiterte Analysen. In diesem Artikel erklären wir, wie fünf statistische Techniken mit Python ausgeführt werden.

Bedeutung statistischer Techniken

Bevor wir mit den Anleitungen fortfahren, wollen wir kurz erläutern, wofür statistische Techniken verwendet werden und warum sie so sind wichtig:

  • Finden von Beziehungen zwischen Variablen in Daten: Statistische Techniken können uns helfen, Korrelationen zwischen verschiedenen Merkmalen von Daten und Zielbeziehungen zwischen diesen Merkmalen zu finden, was zu einem besseren Verständnis des zu lösenden Problems führt.
  • Zusammenfassen und Analysieren von Daten: Mit einem besseren Verständnis eines Datensatzes ist es einfach, ihn zu analysieren und zusammenzufassen sowie Erkenntnisse aus komplexen Informationen zu extrahieren.
  • Interpretieren besserer Ergebnisse: Mit statistischen Techniken können Benutzer Vorhersagen treffen für Unsichtbare Daten, die die Genauigkeit von Ausgabe und Ergebnissen leichter verbessern.
  • Anwenden geeigneter Modelle für maschinelles Lernen (ML): Unterschiedliche ML-Technik s sind besser für verschiedene Arten von Problemen geeignet. Dies kann oft nur mit guten Kenntnissen verschiedener statistischer Methoden beurteilt werden.
  • Beobachtungen in Informationen umwandeln: Das Beobachten von Daten und das Finden von Lösungen unterscheidet sich von der genauen Übermittlung. Es ist einfach, verschiedene Beobachtungen mithilfe statistischer Methoden in vereinfachte und signifikante Erkenntnisse umzuwandeln.

Statistische Techniken für den Umgang mit nichttrivialen Daten

Beim Umgang mit nichttrivialen Daten stehen viele statistische Techniken zur Auswahl. Lassen Sie uns fünf spezifische statistische Techniken diskutieren, die beim Umgang mit dieser Art von Daten sehr effizient sind.

1. Lineare Regression

Die lineare Regression ist eine geschätzte Beziehung zwischen zwei oder mehr Variablen. Es zeigt die lineare Beziehung zwischen der abhängigen Variablen (Y) und der unabhängigen Variablen (X). Bei dieser Technik sind die abhängige Variable und die unabhängige Variable (n) stetig und die Art der Regressionslinie ist linear. Eine Regressionslinie ist die am besten passende gerade Linie.

Die lineare Regression ist eine Form des überwachten Lernens (oder der prädiktiven Modellierung). Beim überwachten Lernen wird die abhängige Variable aus der Kombination unabhängiger Variablen vorhergesagt.

Wenn eine einzelne unabhängige Variable verwendet wird, um den Wert einer abhängigen Variablen vorherzusagen, wird sie als einfache lineare Regression bezeichnet. In Fällen, in denen zwei oder mehr unabhängige Variablen verwendet werden, um den Wert einer abhängigen Variablen vorherzusagen, wird dies als multiple lineare Regression bezeichnet.

Die lineare Regression wird durch die Gleichung Y = b * X + a dargestellt + e, wobei a der Achsenabschnitt ist, b die Steigung der Linie ist und e der Fehlerterm ist.

 Regressionsdiagramm zwischen zwei Variablen

Praktische Anwendungen der linearen Regression:

  • Vorhersage des Umsatzes von ein Produkt, das auf Preisgestaltung, Leistung, Risiko, Marktleistung und anderen Parametern basiert
  • Vorhersage der Serverauslastung in Echtzeit für Cloud-Computing-Dienste
  • Marktforschungsstudien und Kundenumfrageanalysen
  • Ermittlung des ROI einer neuen Richtlinie, Initiative oder Kampagne

Code:
Sehen wir uns eine Python-Code-Implementierung der linearen Regression in einem Bostoner Immobilienpreisdatensatz an, um den Preis von Häusern an verschiedenen Orten in Boston in Bezug auf 13 Merkmale wie die Pro-Kopf-Kriminalitätsrate von zu bestimmen Stadt, Propo Anteil der Nicht-Einzelhandelsgeschäftsflächen pro Stadt, Alter der Personen, denen das Haus gehört usw. Im Code ist test_x ein Datenrahmen mit 13 Merkmalen, und test_y ist die Zielvariable (Preis der Häuser):












 von sklearn.linear_model importiert LinearRegression
lin_reg = LinearRegression (normalize = True)
pred = lin_reg.predict (test_x)
MSE = mean_squared_error (test_y, pred)
print ("Mittlerer quadratischer Fehler ist:", MSE)
plt.scatter (test_y, pred)
plt.xlabel ('Test Y')
plt.ylabel ('Vorausgesagtes Y')
plt.title ("Diagramm zwischen vorhergesagten und tatsächlichen Zielwerten")
plt.show () 
 Diagramm zwischen vorhergesagten und tatsächlichen Zielwerten

Aus der obigen Grafik können wir ersehen, dass es keinen großen Unterschied zwischen den tatsächlichen und vorhergesagten Preisen von Häusern in Boston gibt. Auch der mittlere quadratische Fehler ist nicht viel; Der mittlere quadratische Fehler ist der Regressionsverlust, den wir zwischen vorhergesagten und tatsächlichen Werten berechnet haben. Regressionsverlust ist der Verlust, der auftritt, wenn wir versuchen, eine gerade passende gerade Regressionslinie im obigen Diagramm zu zeichnen.

Wir können eine Beispieltabelle zeichnen, um tatsächliche und vorhergesagte Werte zum besseren Verständnis zu vergleichen. Wir können sehen, dass die vorhergesagten Werte nahe an den tatsächlichen Werten liegen. Daher können wir sagen, dass unser Regressionsmodell der Immobilienpreise in Boston ziemlich gut zu funktionieren scheint.

Tatsächlich Prognostiziert
23,1 24,369364
32,2 31,614934
10,8 11,422104
23,1 24,928622
21,2 23,311708
22,2 22,776408
24,1 20,650812
17,3 16,035198
7,0 ] 2. Logistische Regression

Die logistische Regression ist eine Klassifizierungstechnik, die die abhängige Variable in mehrere kategoriale Klassen (d. H. Diskrete Werte basierend auf unabhängigen Variablen) kategorisiert. Es ist auch eine überwachte Lerntechnik, die aus dem Bereich der Statistik entlehnt wurde. Es wird nur dann zur Klassifizierung verwendet, wenn die abhängige Variable kategorisch ist.

Wenn die Zielbezeichnung numerisch ist, verwenden Sie die lineare Regression, und wenn die Zielbezeichnung binär oder diskret ist, verwenden Sie die logistische Regression.

Die Klassifizierung wird anhand der Anzahl von in zwei Typen unterteilt Ausgabeklassen: Binäre Klassifikation hat zwei Ausgabeklassen und Mehrklassenklassifikation hat mehrere Ausgabeklassen.

Die logistische Regression zielt darauf ab, die Ebene zu finden, die die Klassen bestmöglich trennt Weg. Die logistische Regression teilt ihre Ausgabe mithilfe der logistischen Sigmoid-Funktion, die einen Wahrscheinlichkeitswert zurückgibt. Siehe das folgende Diagramm der logistischen Regression mit Sigmoid-Funktion.

 Logistische Regression

Praktische Anwendungen der Klassifizierung:

  • Vorausschauende Lead-Bewertung zur Steigerung des Umsatzes
  • Vorhersage der Kundenabwanderungswahrscheinlichkeit

Code:
Lassen Sie uns Siehe Python-Code-Implementierung der logistischen Regression in einem Amazon Fine Food Reviews-Datensatz. Dieser Datensatz besteht aus Bewertungen von feinen Lebensmitteln von Amazon über einen Zeitraum von mehr als 10 Jahren. Wir analysieren den Text von Bewertungen, um festzustellen, ob eine bestimmte Bewertung positiv oder negativ ist:

BOW_train und BOW_test sind Eingabedaten nach CountVectoriation des Überprüfungstextes. Y_train und y_test sind die Zielvariablen der Trainings- und Testdatensätze.



















 #Apply Logistic Regression Modeling
log_model = LogisticRegression ()
log_model.fit (BOW_train, y_train)


#Berechnen Sie die Genauigkeitsbewertung
print ("Genauigkeitsbewertung der logistischen Regression:", log_model.score (BOW_test, y_test))


#Berechnen Sie die Verwirrungsmatrix
pred = log_model.predict (BOW_test)
df_cm = pd.DataFrame (Verwirrungsmatrix (y_test, pred), Bereich (2), Bereich (2))
sns.heatmap (df_cm, annot = True, cmap = 'YlGn', annot_kws = {"size": 20}, fmt = 'g') # Schriftgröße
plt.title ("Verwirrungsmatrix")
plt.xlabel ("Predicted Label")
plt.ylabel ("True Label")
plt.show () 
 Verwirrungsmatrix von XG Boost

Der Genauigkeitswert wird berechnet, um die Genauigkeit der logistischen Regression zu überprüfen. Wir haben einen Überprüfungstext mit einer Genauigkeit von 91,27% über die logistische Regression vorhergesagt.

Für die logistische Regression wurde auch eine Verwirrungsmatrix erstellt. Die Verwirrungsmatrix ist eine Leistungsanalysemetrik, die die Fähigkeit des Codes definiert, positive und negative Bewertungen genau vorherzusagen.

Hier können wir sehen, dass 97.779 echte positive Werte waren, was bedeutet, dass 97.779 positive Bewertungen korrekt als positive und 2.219 positive Bewertungen vorhergesagt wurden wurden als negative Bewertungen vorhergesagt (diese werden als falsch positiv bezeichnet). Positive Bewertungen wurden mit einer Genauigkeit von 97,78% vorhergesagt.

Von den negativen Bewertungen waren 11.910 echte Negative, was bedeutet, dass 11.910 negative Bewertungen korrekt als negativ und 8.269 negative Bewertungen als positiv vorhergesagt wurden (diese werden als falsch negative Bewertungen bezeichnet). Negative Bewertungen wurden mit einer Genauigkeit von 59,02% vorhergesagt.

 SQL, Python und R

3. Baumbasierte Techniken

Baumbasierte Techniken dienen zur Entscheidungsfindung. Sie unterstützen diese Prozesse, indem sie Entscheidungen an einem bestimmten Punkt basierend auf den gegebenen Informationen anzeigen, die das größte positive Ergebnis liefern. Dieser Ansatz ist weit verbreitet und praktisch, da er die Art und Weise modelliert, wie wir Menschen ein Problem angehen.

Diese baumbasierten statistischen Techniken können sowohl für Regressions- als auch für Klassifizierungsprobleme verwendet werden. Basierend auf unabhängigen Variablen wird der Baum aufgeteilt, um Zweige zu erstellen. Diese Methode funktioniert im Gegensatz zur linearen Regression sehr gut mit nichtlinearen Beziehungen.

Praktische Anwendungen baumbasierter Techniken:

  • Kundenbeziehungsmanagement
  • Modellierung der Kreditbewertung

Entscheidungsbaum

Ein Entscheidungsbaum ist ein überwachter ML-Algorithmus, der sowohl für kategoriale als auch für kontinuierliche Eingabe- und Ausgabevariablen verwendet wird. Der Entscheidungsbaum beginnt mit einem Knoten und teilt sich dann in mehrere. Es kann auch als verschachtelte "Wenn-Sonst" -Struktur verstanden werden.

 Baumbasierte Algorithmusstruktur

Code:
Sehen wir uns die Python-Code-Implementierung eines Entscheidungsbaums im Datensatz für Amazon Fine Food Reviews an, um festzustellen, ob der Überprüfungstext von Fine Food bei Amazon positiv oder negativ ist: [19659083] aus sklearn.tree importieren DecisionTreeClassifier
model_DT = DecisionTreeClassifier ()
model_DT.fit (BOW_train, y_train)
print ("Genauigkeitsbewertung des Entscheidungsbaums:", model_DT.score (BOW_test, y_test))
pred = model_DT.predict (BOW_test)
df_cm = pd.DataFrame (Verwirrungsmatrix (y_test, pred), Bereich (2), Bereich (2))
sns.heatmap (df_cm, annot = True, cmap = 'YlGn', annot_kws = {"size": 20}, fmt = 'g') # Schriftgröße
plt.title ("Verwirrungsmatrix")
plt.xlabel ("Predicted Label")
plt.ylabel ("True Label")
plt.show ()

 Verwirrungsmatrix des Entscheidungsbaums

Eine Genauigkeitsbewertung wird berechnet, um die Genauigkeit des Entscheidungsbaums zu überprüfen. Wir können sehen, dass 84% ​​des Bewertungstextes korrekt vorhergesagt werden, was bedeutet, dass 84% ​​der positiven Bewertungen korrekt als positiv und negative Bewertungen als negativ vorhergesagt wurden.

Für unseren Entscheidungsbaum wird auch eine Verwirrungsmatrix erstellt. Hier können wir sehen, dass 91.693 echte positive Werte sind, was bedeutet, dass 91.693 positive Bewertungen korrekt als positiv und 8.305 positive Bewertungen als negative Bewertungen (falsch positive) vorhergesagt wurden.

Auf der negativen Seite waren 10.173 echte negative (Bedeutung) 10.173 negative Bewertungen wurden korrekt als negativ vorhergesagt) und 10.006 negative Bewertungen wurden positiv (falsch negative) vorhergesagt.

Wir können deutlich sehen, dass der Entscheidungsbaum bei der korrekten Vorhersage positiver Bewertungen mit etwa 92% genauen Vorhersagen sehr gut funktioniert ((91693) /(91693+8305))*100).[19659089lightboxesBagging[19659079lightboxesBaggingisteinEnsemblemodelldaseineKombinationverschiedenerModellefürverschiedeneBeispieldatensätzevonTrainingsdatenverwendetBeimAbsackenwerdenmehrerehomogeneModelle(oftals„schwacheLernende“bezeichnet)paralleltrainiertumdasselbeProblemzulösenundkombiniertumbessereErgebnissezuerzielen

Jedes Modell versucht, eine geringe Verzerrung und geringe Varianz zu erreichen, obwohl sie häufig in entgegengesetzte Richtungen variieren . Ziel ist es, ein robustes Modell zu erstellen, das sowohl eine hohe Varianz als auch eine hohe Verzerrung vermeidet. Dies ist als Bias-Varianz-Kompromiss bekannt, wie in der folgenden Abbildung dargestellt:

 Bias-Varianz-Kompromiss

Bagging ist eine Möglichkeit, die Varianz Ihres Vorhersagemodells durch Generieren einer Stichprobe zu verringern Daten aus Trainingsdaten. Jeder Beispieldatensatz wird unabhängig unter Verwendung schwacher Lernender modelliert, und dann werden die Ergebnisse dieser mehreren Klassifizierer, die an verschiedenen Teilstichproben desselben Datensatzes modelliert sind, kombiniert. Das Absacken ist robuster als die Implementierung eines einzelnen Modells.

Ein Nachteil des Absackens besteht darin, dass die Interpretierbarkeit eines Modells verloren geht. Das Absacken kann zu vielen Verzerrungen führen, wenn das richtige Verfahren ignoriert wird. Obwohl das Absacken sehr genau ist, kann es rechenintensiv sein.

Wann immer unser Ziel darin besteht, die Varianz (nicht die Verzerrung) zu verringern, können wir das Absacken verwenden. Es ist für Modelle mit hoher Varianz und geringer Vorspannung geeignet. Verwenden Sie niemals das Absacken, wenn Sie Modelle mit geringer Varianz und hoher Vorspannung haben.

Praktische Anwendungen des Absackens:

  • E-Commerce: Kauft ein Kunde das Produkt oder nicht?
  • Finanzen: Ermitteln Sie, ob a Der Kunde zahlt die Schulden pünktlich oder nicht.
 Bagging Ensemble-Modell.

Eine zufällige Gesamtstruktur ist ein Beispiel für die Implementierung der Absackung.

Code:
Sehen wir uns die Python-Code-Implementierung einer zufälligen Gesamtstruktur im Amazonas an Datensatz für Bewertungen von Feinkost, um festzustellen, ob der Bewertungstext von Feinkost bei Amazon positiv oder negativ ist:











 von sklearn.ensemble import RandomForestClassifier
model_RF = RandomForestClassifier ()
model_RF.fit (BOW_train, y_train)
print ("Genauigkeitsbewertung von Random Forest:", model_DT.score (BOW_test, y_test))
pred = model_RF.predict (BOW_test)
df_cm = pd.DataFrame (Verwirrungsmatrix (y_test, pred), Bereich (2), Bereich (2))
sns.heatmap (df_cm, annot = True, cmap = 'YlGn', annot_kws = {"size": 20}, fmt = 'g') # Schriftgröße
plt.title ("Verwirrungsmatrix")
plt.xlabel ("Predicted Label")
plt.ylabel ("True Label")
plt.show () 
 Verwirrungsmatrix des zufälligen Waldes

Der Genauigkeitswert wird berechnet, um die Genauigkeit des zufälligen Waldes zu überprüfen. Unser Genauigkeitswert von 0,8476 zeigt, dass 84,76% der Bewertungen korrekt vorhergesagt werden.

Eine Verwirrungsmatrix wird auch für eine zufällige Gesamtstruktur erstellt. Mit dieser Verwirrungsmatrix können wir sehen, dass die vorhergesagte Genauigkeit von positiven und negativen Bewertungen variiert. Die Verwirrungsmatrix zeigt, dass 97,63% der positiven Bewertungen korrekt vorhergesagt wurden und 38,55% der negativen Bewertungen korrekt vorhergesagt wurden. Wir können in der Verwirrungsmatrix sehen, dass sich die echte positive Vorhersage mit der Zufallswaldtechnik im Vergleich zu Entscheidungsbäumen verbessert hat.

Boosting

Boosting berechnet die Ausgaben unter Verwendung einer Familie von Algorithmen und mittelt dann das Ergebnis unter Verwendung eines gewichteten Durchschnittsansatzes . Beim Boosting werden mehrere schwache Lernende nacheinander auf sehr anpassungsfähige Weise verwendet, sodass jedes Modell in der Sequenz Beobachtungen im Datensatz, die von den vorherigen Modellen in der Sequenz schlecht behandelt wurden, mehr Bedeutung beimisst. Am Ende des Boosting-Prozesses wird ein starker Lernender mit reduzierter Vorspannung erhalten.

Das Boosting funktioniert im Kontext des Kompromisses zwischen Bias und Varianz sehr gut, was zu einer verbesserten Genauigkeit führt. Boosting kann sowohl bei Regressions- als auch bei Klassifizierungsproblemen wie Bagging-Techniken eingesetzt werden.

Wenn der Datensatz viele Ausreißer enthält, sollten Sie Boosting nicht verwenden, da es für Ausreißer empfindlich ist, da jeder Klassifizierer versucht, die Fehler in den vorherigen Modellen zu beheben. Boosting ist ein rechenintensiver Algorithmus. Verwenden Sie ihn daher mit Bedacht.

Praktische Anwendungen von Boosting:

  • Spam-E-Mail-Erkennung auf der Grundlage mehrerer schwacher Lernender wie:
  1. Wer ist der Absender?
  2. The Betreffzeile einer E-Mail
  3. Wenn eine E-Mail nur ein Bild enthält
  4. Die E-Mail enthält Text wie „Sie haben im Lotto gewonnen“

XG-Boost ist ein Beispiel für die Verbesserung der Implementierung.

Code: Sehen wir uns den Python-Code für XG-Boost im Amazon-Datensatz für Feinkostbewertungen an, um festzustellen, ob der Bewertungstext von Feinkost bei Amazon positiv oder negativ ist.











 importiere xgboost als xgb
model_xgb = xgb.XGBClassifier (booster = 'gbtree')
model_xgb.fit (BOW_train, y_train)
print ("Genauigkeitsbewertung von XG-Boost:", model_xgb.score (BOW_test, y_test))
pred = model_xgb.predict (BOW_test)
df_cm = pd.DataFrame (Verwirrungsmatrix (y_test, pred), Bereich (2), Bereich (2))
sns.heatmap (df_cm, annot = True, cmap = 'YlGn', annot_kws = {"size": 20}, fmt = 'g') # Schriftgröße
plt.title ("Verwirrungsmatrix")
plt.xlabel ("Predicted Label")
plt.ylabel ("True Label")
plt.show () 
 XG Boost

Der Genauigkeitswert für XG-Boost zeigt, dass er im Vergleich zu anderen baumbasierten Techniken auf 90,7% verbessert wurde.

Für XG- wurde auch eine Verwirrungsmatrix erstellt. Boost. Hier sehen wir 98.006 „echte positive“ Werte, was bedeutet, dass 98.006 positive Bewertungen als positiv und nur 1.992 positive Bewertungen als negative Bewertungen vorhergesagt werden (diese werden als falsch positive Werte bezeichnet). 98% der positiven Bewertungen wurden korrekt vorhergesagt.

Wir sehen, dass 11.023 „echte Negative“ sind, was bedeutet, dass 11.023 negative Bewertungen korrekt als negativ vorhergesagt wurden und 9.156 negative Bewertungen positiv vorhergesagt wurden (diese werden als falsch negative Bewertungen bezeichnet). 54,62% ​​der negativen Bewertungen wurden korrekt vorhergesagt.

Mit XG-Boost nehmen sowohl positive als auch negative Bewertungen zu, was zu einer hohen Leistung des Modells führt.

4. Clustering

Clustering ist eine unbeaufsichtigte ML-Technik. Wie der Name schon sagt, handelt es sich um eine natürliche Gruppierung oder Gruppierung von Daten. Es gibt keine prädiktive Modellierung wie beim überwachten Lernen. Clustering-Algorithmen interpretieren nur die Eingabedaten und Cluster im Feature-Space. Es gibt keine vorhergesagte Bezeichnung für Clustering.

Es gibt einige Geschäftsanwendungen, in denen Clustering weit verbreitet ist:

  • Identifizierung der leistungsstärksten Mitglieder eines Unternehmens
  • Suche nach den profitabelsten Produkten
  • Suche nach ähnlichen Posts oder Webseiten auf einer Website
  • Marktsegmentierung
  • Empfehlungsmaschinen
  • Websites für soziale Netzwerke
  • Kundensegmentierung basierend auf dem Einkaufsverhalten der Besucher
 Clustering-Diagramm

K-bedeutet Clustering

K-bedeutet Clustering ist das am häufigsten verwendeter Clustering-Algorithmus. Die Logik hinter k-means Clustering minimiert die Varianz innerhalb jedes Clusters und maximiert die Varianz zwischen den Clustern.

Kein Datenpunkt gehört zu zwei Clustern. K-means Clustering ist im Sinne der Aufteilung von Daten in verschiedene Cluster einigermaßen effizient.

Praktische Anwendungen von Clustering:

  • Kunden unterscheiden, z. B. eine Gruppe von Personen, die dazu neigen, High-End-Mobiltelefone zu kaufen
  • Gruppieren von Spielern / Schülern nach ihrer Leistung

Sehen wir uns den Python-Code zum Implementieren von k-means-Clustering an:


 von sklearn.cluster import KMeans
BOW_kmeans = KMeans (n_clusters = 5, max_iter = 100) .fit (BOW_train) 

Clustering ist in Textdaten sehr nützlich, da in Textdaten jedes Wort als Feature fungiert. Wir können für jeden Cluster eine Wortwolke erstellen, um ein Gefühl dafür zu bekommen, wie Daten partitioniert sind.

Durch das Erstellen einer Wortwolke können verschiedene Cluster mit ähnlichen Arten von Wörtern angezeigt werden (Wörter mit ähnlichen Bedeutungen werden in der Nähe anderer Wörter angezeigt). Worteinbettungen “, eine Art von Wortdarstellung, mit der Wörter mit ähnlicher Bedeutung von Algorithmen für maschinelles Lernen verstanden werden können, indem sie auf reelle Zahlenvektoren abgebildet werden zwei Cluster aus unseren Überprüfungsdaten (der erste Cluster bezieht sich auf Getränke, und der zweite Cluster bezieht sich auf Tiernahrung ):

 Beverage Word Cloud
 Pet Word Cloud

Hierarchisches Clustering

Hierarchisches Clustering erstellt eine mehrstufige Hierarchie von Clustern, indem Clusterbäume erstellt werden, die als Dendrogramme bezeichnet werden. Eine horizontale Linie wird verwendet, um die Einheiten in demselben Cluster zu verbinden. Es ist nützlich als visuelle Darstellung von Clustern. Agglomeratives Clustering ist eine Art hierarchisches Clustering.

Praktische Anwendungen des hierarchischen Clustering:

  • Erkennen der Identität eines Benutzers über Handbiometrie
  • Analysieren von Social-Media-Websites, um festzustellen, welcher Benutzer welchen anderen Benutzern folgt, und verwenden Sie diese ein Empfehlungssystem zu betreiben
 Dendrogramm

5. Dimensionsreduktion

In praktischen Fällen haben wir oft n-dimensionale Daten, was umständlich ist; Der Umgang mit hochdimensionalen Daten ist sehr zeitaufwändig. Durch die Reduzierung der Dimensionalität werden Daten mit weniger Dimensionen dargestellt, indem ein Satz linearer Kombinationsmerkmale identifiziert wird, die eine maximale Varianz aufweisen und nicht miteinander korreliert sind. Wenn unser Datensatz viele Funktionen enthält, ist die Analyse sehr schwierig und zeitaufwändig.

Die meisten Informationen befinden sich in den obersten Funktionen. Mithilfe von Algorithmen können einige nicht nützliche Funktionen verworfen werden. Wie bei Textdaten müssen wir uns mit vielen Funktionen befassen, sodass wir die Dinge vereinfachen können, indem wir nur die Funktionen behandeln, die ungefähr 95% der Varianz abdecken, und den Rest verwerfen.

Mithilfe von Techniken zur Reduzierung der Dimensionalität verbessert sich die Modellleistung

Praktische Anwendung der Dimensionsreduktion:

  • Dokumentklassifizierung: Klassifizierung von Dokumenten (mit Tausenden von Begriffen) wie Rezensionen, Social Media-Posts, E-Mails in verschiedene Kategorien
  • Gesichtserkennung und Klassifizierung medizinischer Daten wie MRT-Klassifizierung oder Tumordetektion in Bildern

Sowohl die Text- als auch die Bilddaten sind hochdimensional, sodass die Dimensionsreduktion die Leistung verbessert.

Hier werden zwei Ideen zur Dimensionsreduktion diskutiert: Hauptkomponentenanalyse (PCA) und latente semantische Analyse ( LSA).

PCA

PCA transformiert das Koordinatensystem des Datensatzes so, dass die maximale Varianz erhalten bleibt. Das Anwenden von PCA auf die Vektoren eines Datensatzes ist wie das Projizieren dieser auf Eigenvektoren mit ihren entsprechenden Eigenwerten. Mit PCA werden die oberen p-Eigenwerte ausgewählt und entsprechende p-Eigenvektoren als neue Merkmale genommen und die Dimensionen der Daten auf p reduziert. Top p-Eigenwerte und Eigenvektoren werden so ausgewählt, dass die meisten Informationen intakt bleiben. Es handelt sich um eine unbeaufsichtigte Implementierung.

Sehen wir uns die Python-Code-Implementierung von PCA in einem Bostoner Hauspreis-Dataset an, um die Dimensionen des Datasets von 13 auf 2 zu reduzieren:








 aus der sklearn-Importzerlegung
pca = Zersetzung.PCA ()
# die Anzahl der Komponenten = 2 (auf 2D-Daten reduzieren)
pca.n_components = 2
pca_data = pca.fit_transform (train_x)
print ("Form der Zugdaten =", train_x.shape)
# pca_reduced enthält die 2D-Projekte mit Zugdaten
print ("Form von pca_reduced.shape =", pca_data.shape) 

Ausgabe: Merkmaldimension von 13 auf 2 reduziert


 Form der Zugdaten = (339, 13)
Form von pca_reduced.shape = (339, 2) 

LSA

Die latente semantische Analyse wird hauptsächlich für Textdaten verwendet. Es ist eine Technik zum Reduzieren der Dimensionen der Daten, die in Form einer Term-Dokument-Matrix vorliegt. In einer Term-Dokument-Matrix entsprechen Zeilen Dokumenten und Spalten Begriffen (Wörtern). Die Term-Document-Matrix ist eine mathematische Matrix, die die Häufigkeit von Begriffen (Wörtern) beschreibt, die in dieser Zeile des Dokuments vorkommen. Hier ist ein Beispiel für eine Term-Document-Matrix:

Term
Document Kaffee lecker sehr erschwinglich Liebe
Kaffee ist sehr lecker 1 1 1 0 0
Kaffee ist sehr lecker und erschwinglich.
Liebe den Kaffee
2 1 1 1 1

Eine Termdokumentmatrix mit Textdaten wird entweder von CountVectorizer oder TfidfVectorizer erstellt und dann abgeschnitten Singular Value Deposition (SVD). SVD ist eine Methode zur Matrixzerlegung von höheren zu niedrigeren Dimensionen, bei der normalerweise eine Matrix in drei geteilt wird. Auf eine Term-Document-Matrix angewendet, wird diese Transformation als LSA bezeichnet.

Sehen wir uns die Python-Code-Implementierung von LSA in einem Amazon Fine Food Review-Datensatz an, um die Dimensionen von Textdaten mit hohem Funktionsumfang von Amazon Fine Food Reviews zu reduzieren:








 Abgeschnittene DVD
von sklearn importieren Zerlegung
t_svd = decomposition.TruncatedSVD ()
# die Anzahl der Komponenten = 100 (Dimension auf 100 reduziert)
t_svd.n_components = 100
svd_data = t_svd.fit_transform (BOW_train) # BOW_train ist eine von CountVectorizer () erstellte Term-Document-Matrix.
print ("Form der Zugdaten =", BOW_train.shape)
print ("Form des abgeschnittenen svd =", svd_data.shape) 

Ausgabe:


 Form der Zugdaten = (243994, 94030)
Form des abgeschnittenen svd = (243994, 100) 

Wir können sehen, dass die Gesamtzahl der Merkmalsdimensionen der Matrix von 94.030 auf 100 reduziert wurde.

Lösen großer Probleme

Die Lösung für jedes datenwissenschaftliche Problem ist einzigartig. Wenn Sie über Kenntnisse in verschiedenen statistischen Techniken verfügen, die für Ihre nicht trivialen Daten verwendet werden können, können Sie mehrere Ansätze wählen, um die besten Ergebnisse für Ihre Herausforderung zu erzielen. Wenn Sie mit den Grundlagen dieser Reihe statistischer Techniken in Python-Code vertraut sind, erhalten Sie einen guten Ausgangspunkt, um herauszufinden, was Sie aus Ihren Datensätzen lernen und wie Sie Ihre Modelle trainieren können, um bessere Ergebnisse zu erzielen.

 Best Practices für die Verarbeitung natürlicher Sprache [19659202] Scott Castle </strong> ist <a title=VP & GM für Cloud Data Teams bei Sisense. Er verfügt über mehr als 25 Jahre Erfahrung in der Softwareentwicklung und im Produktmanagement bei führenden Technologieunternehmen wie Adobe, Electric Cloud und FileNet. Scott ist ein produktiver Autor und Redner in Sachen Daten und tritt bei Veranstaltungen wie der Gartner Enterprise Data Conference, Data Champions und Strata Data NYC auf.

About BusinessIntelligence

Check Also

SAP Digital Boardroom unterstützt Parkland Health bei der Bewältigung von Pandemien

Datenanalysen auf der Basis von SAP Analytics Cloud und SAP Digital Boardroom spielten eine wichtige …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.