Hallo! Dies ist Nakagawa von Hitachi, Ltd. Lumada Data Science Lab..
Im Lumada Data Science Lab. Akzeptieren wir aktiv interne SEs als Auszubildende und bilden Datenwissenschaftler aus, um die Qualität der Angebote für unsere Kunden zu verbessern. In der praktischen Ausbildung fordern wir regelmäßig das Thema Datenanalyse heraus und diskutieren die im Thema auftretenden Fragen mit den Mitgliedern des Instituts, die sich mit Datenanalyse befassen. In diesem Artikel möchte ich den Inhalt der Datenanalyse und -diskussion vorstellen.
Durch den Austausch von Lösungen für Probleme, die für Personen, die gerade mit der Datenanalyse beginnen, leicht zu lösen sind, und durch den Austausch effektiver Techniken für diejenigen, die bereits im Bereich der Datenanalyse tätig sind, können wir die Datenanalyse austauschen. Ich hoffe, es wird eine Gelegenheit zum Nachdenken sein.
Hier möchten wir die spezifischen Inhalte der Übungen vorstellen, die Herr Matsushita zusammengefasst hat.
--Mehrfache Regressionsanalyse mit Python und Scikit-Learn. (Die Entwicklungsumgebung ist Jupyter Notebook, das für die Datenanalyse mit Python geeignet ist.) --scikit-learn bietet einige Datenanalysen und maschinelles Lernen, die Sie sofort ausprobieren können. Es gibt einen angehängten Datensatz.
CRISP-DM Eine effektive Denkweise zur Weiterentwicklung der Datenanalyse ist [CRISP-DM (CRoss-Industry Standard Process für Data Mining)](https://mineracaodedados.files.wordpress.com/2012/04/the-crisp-dm-model- die-neue-Blaupause-für-Data-Mining-Shearer-Colin.pdf). Es ist in die folgenden Prozesse unterteilt und ist eine Data Mining-Methodik und ein Prozessmodell, das Daten analysiert, während der PDCA-Zyklus gedreht wird, vom Verständnis der Geschäftsprobleme des Kunden über die tatsächliche Modellierung bis hin zur Bewertung und Bereitstellung im Unternehmen (Geschäftsverbesserung). ..
Das Geschäft verstehen
Die Daten verstehen
Datenaufbereitung
Modellierung
Bewertung
Bereitstellung
In dieser Reihenfolge haben wir auch an diesem Thema gearbeitet.
Klären Sie geschäftliche Herausforderungen und setzen Sie sich Ziele für die Datenanalyse. Dieses Mal wurde das zu lösende Problem bereits geklärt, also wie folgt.
Ziel: Erstellung und Bewertung eines numerischen Prognosemodells für die Immobilienpreise in Boston
Überprüfen Sie die zu analysierenden Daten und entscheiden Sie, ob sie unverändert verwendet werden können oder ob die Daten verarbeitet werden müssen. Überprüfen Sie insbesondere, ob Daten vorhanden sind, die aufgrund vieler fehlender oder Ausreißer nicht für die Datenanalyse verwendet werden können, und entscheiden Sie sich für eine Datenverarbeitungsrichtlinie wie Löschen oder Vervollständigen, wenn Daten nicht verwendet werden können.
Importieren Sie die Bibliothek, die Sie verwenden möchten, und laden Sie die Daten für die Datenanalyse.
#Bibliothek importieren
import numpy as np
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
%matplotlib inline
#Datensatz laden
from sklearn import datasets
boston_data = datasets.load_boston()
#Speicherung erklärender Variablen
boston = pd.DataFrame(boston_data.data, columns=boston_data.feature_names)
#Objektive Variable(Hauspreis)Speicherung
boston_medv = pd.DataFrame(boston_data.target)
#Bestätigung der Daten
boston.info()
Die Variablen von Bostoner Immobilienpreisdatensatz, die die Ziele dieser Datenanalyse sind, lauten wie folgt.
Spaltenname | Inhalt |
---|---|
CRIM | Pro-Kopf-Kriminalitätsrate pro Stadt |
ZN | 25,Prozentsatz der Wohngebiete, aufgeteilt in Grundstücke über 000 Quadratfuß |
INDUS | Prozentsatz der Nicht-Einzelhandelsfläche pro Stadt |
CHAS | Charles River Dummy-Variable(=1 wenn an der Grenze eines Flusses, 0 sonst) |
NOX | Stickstoffmonoxidkonzentration(1 von 10 Millionen) |
RM | Durchschnittliche Anzahl der Zimmer pro Residenz |
AGE | Prozentsatz der vor 1940 errichteten Wohnungen |
DIS | Entfernung zu 5 Boston Employment Centers(Gewichtet) |
RAD | Indikatoren für die Zugänglichkeit zu radialen Autobahnen |
TAX | 10,Steuersatz für Sachanlagen pro 000 USD |
PTRATIO | Studenten von der Stadt-Lehrerverhältnis |
B | 「1000(Bk - 0.63)^Der in "2" * Bk berechnete Index des Wohnsitzverhältnisses ist das Verhältnis der Afroamerikaner nach Stadt |
LSTAT | Prozentsatz der Niedrigverdiener pro Bevölkerung |
MEDV | Medianer Hauspreis in Einheiten von 1000 USD * Zielvariable |
Überprüfen Sie den Bostoner Immobilienpreisdatensatz auf fehlende Werte.
#Bestätigung fehlender Werte
boston.isnull().sum()
Ausgabeergebnis
#Anzahl der fehlenden Werte
CRIM 0
ZN 0
INDUS 0
CHAS 0
NOX 0
RM 0
AGE 0
DIS 0
RAD 0
TAX 0
PTRATIO 0
B 0
LSTAT 0
dtype: int64
Es wurde bestätigt, dass in diesen Daten keine Werte fehlen.
In Bezug auf Ausreißer / Ausreißer muss zunächst überlegt werden, was als Ausreißer / Ausreißer zu behandeln ist. Zu diesem Zweck ist es erforderlich, den Hintergrund des zu analysierenden Geschäfts / Ereignisses und den Hintergrund der Daten wie der Messmethode zu verstehen. Nachdem Sie den Hintergrund verstanden haben, beurteilen Sie Ausreißer und Ausreißer beispielsweise unter folgenden Gesichtspunkten.
Überprüfen Sie zunächst die Abweichung der Werte anhand des Box-Whisker-Diagramms.
#Überprüfen Sie den Ausreißer an den Box-Whiskern(In Kacheln visualisiert)
fig, axs = plt.subplots(ncols=5, nrows=3, figsize=(13, 8))
for i, col in enumerate(boston.columns):
sns.boxplot(boston[col], ax=axs[i//5, i%5])
#Anpassen des Diagrammintervalls
fig.subplots_adjust(wspace=0.2, hspace=0.5)
#Ränder entfernen
fig.delaxes(axs[2, 4])
fig.delaxes(axs[2, 3])
Ausgabeergebnis
Wenn Sie das Kontrollkästchen Whisker-Diagramm aktivieren, gibt es viele Variationen bei den Werten von CRIM, ZN, CHAS, RM, DIS, PTRATIO, B, LSTAT, und es scheint, dass es Ausreißer geben kann. Verwenden Sie außerdem das Histogramm, um die Werte und die Verteilung bestimmter Variablen zu überprüfen.
#Überprüfen Sie die Verteilung mit dem Histogramm(In Kacheln visualisiert)
fig, axs = plt.subplots(ncols=5, nrows=3, figsize=(13, 8))
for i, col in enumerate(boston.columns):
sns.distplot(boston[col], bins=20, kde_kws={'bw':1}, ax=axs[i//5, i%5])
#Anpassen des Diagrammintervalls
fig.subplots_adjust(wspace=0.2, hspace=0.5)
#Ränder entfernen
fig.delaxes(axs[2, 4])
fig.delaxes(axs[2, 3])
Ausgabeergebnis
Wenn ich das Histogramm überprüft habe, während ich mir die Eigenschaften der Variablen vorgestellt habe, scheint es, dass es sich um mögliche Werte handelt, daher werde ich sie hier nicht als Ausreißer oder Ausreißer behandeln. "CHAS" hat sowohl in den Box-Whiskern als auch im Histogramm eine spezielle Form, da es sich um eine Dummy-Variable handelt, die mit 0, 1 kennzeichnet, ob sie sich entlang des Flusses befindet oder nicht.
Gemäß der unter "Daten verstehen" festgelegten Richtlinie werden die Daten verarbeitet, damit sie in die nächste Modellierung übernommen werden können. Führen Sie beispielsweise die folgende Verarbeitung durch.
Fahren Sie, wie unter "Grundlegendes zu Daten" bestätigt, mit der nächsten Phase fort, vorausgesetzt, es fehlen keine Werte, Ausreißer oder Ausreißer.
Modellierung mit einer Methode, die für die Bedingungen der Datenanalyse geeignet ist. Wählen Sie die Variablen aus, die in das Modell eingegeben werden sollen, teilen Sie die Daten für das Training und Testen des Modells auf und verwenden Sie sie für die Datenanalyse. Dieses Mal werden wir die lineare Regressionsanalyse (multiple Regression) als Modellierungsalgorithmus auswählen. Übrigens ist in scikit-learn der Auswahlindex, welcher Algorithmus und welche Modellierungsmethode verwendet werden sollen, in Spickzettel zusammengefasst. ..
Wählen Sie die Variablen aus, die in das Modell eingefügt werden sollen. Der Prozess der Suche nach gültigen Kombinationen bei gleichzeitiger Reduzierung der Anzahl der tatsächlich verwendeten Variablen. Die Verwendung weniger Variablen bietet die folgenden Vorteile.
Es gibt die folgenden Methoden zum Auswählen von Variablen.
--Filtermethode: Eine Methode zum Ranking von Variablen basierend auf Bewertungsindikatoren und zur Auswahl der Top-Variablen. --Wrapper-Methode: Modellieren mit einer Kombination mehrerer Variablen Technik zur Auswahl der Variablenkombination mit den besten Ergebnissen -Embedded-Methode: Eine Methode zur gleichzeitigen Auswahl von Variablen in einem Algorithmus für maschinelles Lernen
Dieses Mal werden wir als Beispiel beschreiben, wie die Stärke der Korrelation zwischen Variablen gemäß der Methode der Filtermethode überprüft wird. Es ist praktisch, Pairplot zu verwenden, da es das Histogramm jeder Variablen und die Korrelation der Kombination aller beiden Variablen visualisiert.
#Quantifizieren Sie die Korrelation quantitativer Variablen mithilfe der Heatmap von Seaborn
boston["MEDV"] = boston_medv
plt.figure(figsize=(11, 11))
sns.heatmap(boston.corr(), cmap="summer", annot=True, fmt='.2f', square=True, linewidths=.5)
plt.ylim(0, boston.corr().shape[0])
plt.show()
#Graphische Visualisierung der Korrelation quantitativer Variablen unter Verwendung eines Diagramms für Seaborn-Paare
sns.pairplot(boston)
plt.show()
Ausgabeergebnis
Wenn Sie die Heatmap überprüfen, besteht eine starke positive Korrelation zwischen RAD und TAX. Daher wählen wir hier aus den beiden Variablen TAX aus, die eine stärkere negative Korrelation mit MEDV aufweist.
Es ist üblich, einen Teil der Daten für das Modelltraining und den Rest für die Überprüfung der Vorhersagekraft des erstellten Modells zu verwenden. Dieses Mal werden wir 50% der Daten für Schulungen und 50% für Tests verwenden.
#Erklärungsvariable, Zielvariable Xm,Gespeichert in Ym jeweils
Xm = boston.drop(['MEDV', 'RAD'], axis=1)
Ym = boston.MEDV
#Importieren Sie eine Bibliothek, die Zugdaten und Testdaten aufteilt
from sklearn.model_selection import train_test_split
# X_train, X_Die zum Test verteilten Daten werden zufällig bestimmt
# test_size=0.5 bis 50%Zu testen
X_train, X_test = train_test_split(Xm, test_size=0.5, random_state=1234)
Y_train, Y_test = train_test_split(Ym, test_size=0.5, random_state=1234)
Es gibt tatsächlich Daten und passt sie in ein lineares Regressionsmodell (multiples Regressionsmodell) ein.
#Importieren Sie das lineare Regressionsmodell von sklearn und passen Sie es an die Zugdaten an
from sklearn import linear_model
model_lr = linear_model.LinearRegression()
model_lr.fit(X_train, Y_train)
#Verwenden Sie das generierte Modell, um den vorhergesagten Wert für die erklärende Variable der Testdaten zu erhalten
predict_lr = model_lr.predict(X_test)
#Regressionskoeffizienten
print(model_lr.coef_)
#Sektion
print(model_lr.intercept_)
Ausgabeergebnis
#Regressionskoeffizienten
[-2.79020004e-02 5.37476665e-02 -1.78835462e-01 3.58752530e+00
-2.01893649e+01 2.15895260e+00 1.95781711e-02 -1.66948371e+00
6.47894480e-03 -9.66999954e-01 3.62212576e-03 -6.65471265e-01]
#Sektion
48.68643686655955
Bewerten Sie die Genauigkeit und Leistung des erstellten Modells und beurteilen Sie, ob das Ziel erreicht werden kann. Darüber hinaus wird das Modell basierend auf den Bewertungsergebnissen nach Bedarf angepasst.
Bei der Genauigkeitsbewertung des Modells werden der Fehler und die Stärke der Korrelation zwischen dem vorhergesagten Wert und dem korrekten Antwortwert des unter Verwendung der folgenden Indizes erstellten Modells bewertet.
#Auswertung
# MAE
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(Y_test, predict_lr)
print("MAE:{}".format(mae))
# MSE
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(Y_test, predict_lr)
print("MSE:{}".format(mse))
# RMSE
rmse = np.sqrt(mse)
print("RMSE:{}".format(rmse))
#Entscheidungskoeffizient
print("R^2:{}".format(model_lr.score(X_test, Y_test)))
#Resultate der Auswertung
MAE:3.544918694530246
MSE:23.394317851152568
RMSE:4.83676729346705
R^2:0.7279094372333412
Sie haben ein Modell mit einem Entscheidungsfaktor von ca. 0,73 erstellt.
Wenden Sie die Bewertungsergebnisse der Datenanalyse auf Ihr Unternehmen an, um geschäftliche Probleme zu lösen. Dieses Mal besteht das Ziel darin, ein Modell zu erstellen und zu bewerten. Im tatsächlichen Geschäft werden wir das erstellte Modell jedoch verwenden, um den Betrieb zu verbessern und Systeme zu entwickeln.
Mitglieder des Lumada Data Science Lab werden die offenen Fragen beantworten, die die Auszubildenden hatten, als sie tatsächlich eine Datenanalyse erlebten.
Ich habe mich gefragt, was ich als Ausreißer entfernen soll. Wie soll ich mich entscheiden? Ich konnte es nicht verstehen, wenn ich mir die Box-Whisker und das Histogramm ansah.
Der Zweck besteht darin, Datensätze auszuschließen, die eindeutig unmögliche Werte sind oder besondere Bedingungen haben. Diese Daten verzerren versehentlich die Modellierungsergebnisse. Zunächst ist es wichtig, die Daten genau zu betrachten. Wie Herr Matsushita ist auch das Zeichnen von Box-Whiskern und Histogrammen eine häufig verwendete Methode, um auf sich aufmerksam zu machen. Wenn der Wert einer Variablen beispielsweise eine ungewöhnliche Abweichung aufweist, können Sie dies leicht feststellen, indem Sie sie zeichnen. Wenn Sie sich näher mit der Tendenz von Datensätzen befassen, die solche Werte annehmen, können Sie auch die im Hintergrund verborgenen Phänomene und die Bedeutung der Werte bemerken.
Wie viele Korrelationskoeffizienten beurteilen Sie als stark, dass die Korrelation zwischen Variablen stark ist? Oder können Sie es auf andere Weise überprüfen? Ich bin mir über die Kriterien nicht sicher.
Es scheint, dass der Korrelationskoeffizient 0,7 oder mehr beträgt, und es wird allgemein angenommen, dass die Korrelation stark ist, aber in Wirklichkeit hängt sie von der Domäne ab. Daher ist es sehr wichtig, die Kriterien mit dem Kunden zu besprechen. In diesem Fall haben wir uns auf die Kombination erklärender Variablen mit einem Korrelationskoeffizienten von 0,9 oder mehr konzentriert. Es ist jedoch wichtig, nicht nur den Korrelationskoeffizienten zu betrachten, sondern auch die Tendenz zur Variation im Streudiagramm zu überprüfen.
Wird der Entscheidungskoeffizient $ R ^ 2 $ durch den
cross_val_score
der k-fachen Kreuzverifikation berechnet?
Informationen zur Implementierung der Bibliothek finden Sie in der API-Referenz (https://scikit-learn.org/stable/modules/classes.html), auf die Sie möglicherweise verweisen möchten. Der Index zur Berechnung des cross_val_score
in der Frage wird durch das Argument
Scoringangegeben. Sie können die nach Name oder Funktion berechnete Punktzahl angeben. Wenn nicht angegeben, wird die im Modellierungsalgorithmus implementierte Funktion
score`` verwendet. LinearRegression
implementiert $ R ^ 2 $.
Sollte jedes Mal eine k-fache Gegenüberstellung durchgeführt werden? Gibt es einen Fall, in dem keine Gegenprüfung durchgeführt wird?
Die k-fache Kreuzverifikation ist eine Methode, und es ist wichtig, die Verifikation als allgemeine Theorie durchzuführen. Die Hold-out-Überprüfung, die k-fache Kreuzungsüberprüfung, die einmalige Kreuzungsüberprüfung usw. werden gemäß Bedingungen wie Datenmenge und Variation durchgeführt. Der Zweck der Überprüfung besteht darin, das Phänomen zu erkennen, dass das Modell die für das Training verwendeten Daten (Übertraining) überpasst, und die Vorhersageleistung (Allgemeinheit) für unbekannte Daten zu verbessern. Wenn Sie das statistische Verhalten der Bevölkerung kennen und die Verteilung klar ist, möchten Sie möglicherweise alle Daten verwenden, um die Parameter der Verteilung zu schätzen.
Was sollte als Hauptfaktor identifiziert werden (die erklärende Variable, die die Zielvariable am meisten beeinflusst)? Regressionskoeffizient? Korrelationskoeffizient? Es scheint viele Möglichkeiten zu geben, aber ich bin mir nicht sicher, was ich wählen soll.
Im Fall eines multiplen Regressionsmodells ist es ausreichend, die standardisierten Regressionskoeffizienten zu vergleichen, um den Unterschied in der Größe und Einheit der Variablen zu berücksichtigen, wobei auf die Unabhängigkeit der erklärenden Variablen zu achten ist (es gibt keine multiple Co-Linearität). Die multiple Co-Linearität erfordert eine sorgfältige Bestätigung von Beziehungen mit mehreren Variablen, wie z. B. VIF (Dispersion Expansion Factor), ein Ansatz, der tatsächlich eine Variable mit einer anderen zurückgibt, um den Effekt zu bewerten, und die Regression der Hauptkomponenten. Wie Sie sehen können, wird der Ansatz verfolgt, nicht korrelierte Variablen im Voraus zu synthetisieren und dann zurückzukehren.
Ich möchte auf die Implementierung einer anderen Person verweisen, die die Datenanalyse beschrieben hat. Gibt es einen guten Weg?
Es versteht sich von selbst, dass Sie Qiita lesen, aber es gibt eine Website namens Kaggle, auf der ein datenwissenschaftlicher Wettbewerb stattfindet, und ein Notizbuch für verschiedene Probleme, einschließlich des Wohnungsbaus in Boston. (Datenanalyseprogramm) ist öffentlich und es werden aktiv Diskussionen geführt. Nur dies zu lesen, ist eine großartige Lernerfahrung für das, was andere Datenanalysten verwenden. Möglicherweise möchten Sie auch das Einführungsbuch lesen, um ein grundlegendes Verständnis der erforderlichen Statistiken zu erhalten.
Da sklearn über viele Datenanalysemethoden verfügt, konnten wir das Modell reibungsloser implementieren, als wir es uns vorgestellt hatten. Selbst mit den Beispieldaten, die wie dieses Mal erstellt wurden, hatte ich häufig Probleme mit der Datenanalyserichtlinie, sodass ich mir vorstellte, dass für die Datenanalyse im tatsächlichen Geschäft mehr Versuch und Irrtum erforderlich sein würde. Ich glaube, ich verstehe ein wenig, dass gesagt wird, dass "die Datenanalyse 90% der Vorverarbeitung bis zur Modellierung erfordert". Dieses Mal lag der Schwerpunkt auf der Beherrschung der Methode, aber ich hoffe, dass wir durch Übungen die Essenz der Methode verstehen und Vorschläge auf der Grundlage von Datenanalysen machen können, die unsere Kunden überzeugen.
Dieses Mal haben wir Herrn Matsushita, einen Lehrling, gebeten, am Datensatz der Immobilienpreise in Boston zu arbeiten. Ich denke, wir konnten in der Diskussion eine aussagekräftige Diskussion über Ausreißer, Korrelationen und Ideen zur Verifizierung führen. Im Lumada Data Science Lab. Möchten wir weiterhin verschiedene praktische Schulungsartikel veröffentlichen. Bitte freuen Sie sich auf den nächsten Beitrag. Vielen Dank, dass Sie so weit gelesen haben.
Recommended Posts