Maschinelles Lernen für Vertica

Anmerkung


In diesem Artikel möchte ich meine eigenen Erfahrungen mit maschinellem Lernen in einem Data Warehouse auf Vertica teilen.

Ehrlich gesagt bin ich kein erfahrener Analyst, der in der Lage sein wird, die gesamte Vielfalt der Forschungsmethoden und Datenvorhersagealgorithmen detailliert zu beschreiben. Als Experte für Vertica und mit grundlegenden Erfahrungen mit ML werde ich dennoch versuchen, über Möglichkeiten zu sprechen, wie man mit Predictive Analysis in Vertica unter Verwendung der integrierten Serverfunktionalität und der R-Sprache arbeitet.

Bibliothek für maschinelles Lernen Vertica


Ab Version 7 wurde Vertica um die Bibliothek für maschinelles Lernen erweitert, mit der Sie:

  • Bereiten Sie Datenbeispiele für maschinelles Lernen vor
  • Modelle für maschinelles Lernen anhand vorbereiteter Daten trainieren;
  • Führen Sie eine prädiktive Analyse der Speicherdaten auf gespeicherten Modellen für maschinelles Lernen durch.

Die Bibliothek wird sofort mit der Vertica-Installation für alle Versionen geliefert, einschließlich der kostenlosen Community. Die Arbeit damit wird in Form eines Aufrufs von Funktionen unter SQL umrahmt, die in der Dokumentation mit Beispielen für die Verwendung auf vorbereiteten Demo-Daten ausführlich beschrieben werden.

Ein Beispiel für die Arbeit mit ML in Vertica


Als einfaches Beispiel für die Funktionsweise von ML habe ich die mtcars-Demodaten verwendet, die Teil des ML-Datenbeispiels für Vertica sind. Diese Daten enthalten zwei Tabellen:

  • mtcars_train - Daten, die für das Training von Modellen für maschinelles Lernen vorbereitet wurden
  • mtcars - Daten zur Analyse

Schauen wir uns die Daten für das Training an:

=>SELECT * FROM mtcars_train; 



Im Datensatz zu Automodellen werden deren Eigenschaften beschrieben. Versuchen wir, das maschinelle Lernen so zu trainieren, dass anhand der Eigenschaften der Fahrzeuge vorhergesagt werden kann, welcher Getriebetyp im Fahrzeug enthalten ist - ein Schaltgetriebe oder ein Automatikgetriebe. Dazu müssen wir ein logistisches Regressionsmodell auf den vorbereiteten Daten aufbauen und die Abhängigkeit des Kastentyps des Feldes „am“ und der Gewichtsfelder des Fahrzeugs „wt“, der Anzahl der Zylinder „zyl“ und der Anzahl der Geschwindigkeiten im Kasten „Zahnrad“ ermitteln:

 =>SELECT LOGISTIC_REG('logistic_reg_mtcars', 'mtcars_train', 'am', 'cyl, wt, gear'); Finished in 19 iterations 

Die aufgerufene Funktion analysierte die Beziehung zwischen am und den zyl, wt, Zahnradfeldern, enthüllte die Abhängigkeitsformel und schrieb das Ergebnis der Abhängigkeitssimulation in die Vertica-Datenbank im Modell „logistic_reg_mtcars“. Mit diesem gespeicherten Modell können Sie jetzt Daten zu Fahrzeugen analysieren und die Verfügbarkeit von Automatikgetrieben vorhersagen.

Informationen zum Modell können eingesehen werden:

 =>SELECT GET_MODEL_SUMMARY(USING PARAMETERS model_name='logistic_reg_mtcars'); 



Jetzt verwenden wir das Modell für die Daten für Autos und speichern das Ergebnis in einer neuen Tabelle:

 =>CREATE TABLE mtcars_predict_results AS ( SELECT car_model, am, PREDICT_LOGISTIC_REG(cyl, wt, gear USING PARAMETERS model_name='logistic_reg_mtcars') AS prediction FROM mtcars ); 

Und Vergleichen der realen Werte von am mit denen, die in der Vorhersagevorhersage erhalten wurden:

 =>SELECT * FROM mtcars_predict_results; 



In diesem Fall stimmte die Prognose für 100% mit dem tatsächlichen Kartentyp in den vorgestellten Modellen überein. Wenn Sie neue Daten für das Training vorbereiten möchten, müssen Sie das Modell löschen und erneut speichern.

ML-Funktionalität in Vertica


Die Vertica ML-Bibliothek unterstützt die folgenden Arten der Vorhersageanalyse:

  • Prognose:
    • Lineare Regression
    • Zufälliger Wald für die Regression
    • SVM (Support Vector Machine) für die Regression
  • Klassifizierung:
    • Logistische Regression
    • Naive Bayes
    • Zufälliger Wald zur Klassifizierung
    • SVM (Support Vector Machine) zur Klassifizierung
  • Clustering:
    • k-bedeutet

Um die Daten für das Training vorzubereiten, werden die folgenden Funktionen vorgestellt:

  • Datenausgleich
  • Emissionsreinigung
  • Codierung kategorialer (Text-) Spaltenwerte
  • Fehlende Daten ersetzen
  • Datennormalisierung
  • Hauptkomponentenanalyse
  • Datenerfassung
  • Singularwertzerlegung

In Anbetracht der ML-Funktionalität in Vertica können wir sagen, dass die integrierte Bibliothek es uns ermöglicht, eine Vielzahl von Problemen zu lösen, aber nicht über den Rückstand verfügt, um die Muster und Abhängigkeiten in den Daten zu untersuchen. Es gibt Funktionen zum Vorbereiten von Daten für das maschinelle Lernen, aber ohne die Verteilung der Daten in Form von Diagrammen zu visualisieren, können nur Analysegurus mit Expertenwissen über die analysierten Daten solche Daten „vorbereiten“ und Lernmodelle darauf trainieren.

R Studio mit Vertica


Für eine gründlichere und interaktivere prädiktive Datenanalyse ist die R-Sprache ideal geeignet, die über eine visuelle Umgebung für die Arbeit mit R Studio-Daten verfügt. Die konkreten Vorteile der Verwendung von R mit Vertica sind:

  • Interaktivität der Umgebung mit der Fähigkeit, den Status für die weitere Analyse nach dem nächsten Lauf zu speichern;
  • visuelle Anzeige von Daten in Form von Tabellen und Grafiken;
  • R Sprachleistung für die Arbeit mit Datensätzen;
  • eine Vielzahl von Vorhersageanalysealgorithmen ähnlich den in Vertica ML vorgestellten.

Die Nachteile der Arbeit mit R mit Big Data sind die RAM-Anforderungen, die Geschwindigkeit der Arbeit mit Arrays mit großen Datenmengen und die Notwendigkeit, Vertica-Daten zu importieren und zu exportieren. Diese Mängel werden durch die Möglichkeit abgedeckt, geschriebene R-Funktionen für die direkte Ausführung in einem Cluster in Vertica einzubetten, die im Folgenden beschrieben werden.

Eine kleine Einführung in R.


Wir werden die Vorhersage für automatische Boxen auf Vertica-Daten mit R reproduzieren. Um Programmierer, die mit dieser Sprache nicht vertraut sind, nicht abzuschrecken, werde ich einen kurzen Kurs eines jungen Kämpfers R durchführen.

Die R-Sprache ist also dieselbe prozedurale Sprache, die Objekte, Klassen und Funktionen enthält.
Ein Objekt kann ein Datensatz (Vektor, Liste, Datensatz ...), ein Wert (Text, Nummer, Datum, Uhrzeit ...) oder eine Funktion sein. Für Werte werden numerische, Zeichenfolgen-, Boolesche und Datums- / Uhrzeittypen unterstützt. Bei Datensätzen beginnt die Array-Nummerierung bei 1 und nicht bei 0.

Klassischerweise wird anstelle von "=" in R der Zuweisungsoperator "<-" verwendet. Obwohl es nicht verboten ist, die Zuordnung zur anderen Seite "->" und sogar das übliche "=" zu verwenden. Der Operator "=" selbst wird beim Aufrufen von Funktionen verwendet, um benannte Parameter anzugeben.

Anstelle von "." "$" wird verwendet, um auf die Felder der Datensätze zuzugreifen. Ein Punkt ist kein Schlüsselwort und wird in Objektnamen verwendet, um deren Lesbarkeit zu verbessern. Daher wird "my.data $ field" als Array von Datensätzen des Felds "field" aus dem Datensatz "my.data" entschlüsselt.

Sie können entweder einfache oder doppelte Anführungszeichen verwenden, um Texte zu rahmen.

Am wichtigsten: R ist auf die Arbeit mit Datensätzen ausgerichtet. Selbst wenn der Code "a <-1" sagt, stellen Sie sicher, dass R in sich selbst glaubt, dass "a" ein Array von 1 Element ist. Das Sprachdesign ermöglicht es Ihnen, mit Datensätzen wie mit normalen Variablen zu arbeiten: Addieren und Subtrahieren, Verbinden und Trennen, Filtern nach Messungen. Der einfachste Weg, ein Array mit seinen Elementen zu erstellen, besteht darin, die Funktion "c (durch Kommas getrennte Array-Elemente)" aufzurufen. Der Name "c" wird anscheinend als kurze Abkürzung für "Sammlung" verwendet, aber ich werde nicht sicher sagen.

Laden von Daten aus einem DBMS in R.


Um RDBMS über ODBC für R zu verwenden, müssen Sie das RODBC-Paket installieren. Es kann in R Studio auf der Registerkarte Pakete oder mit dem Befehl R installiert werden:

 install.packages('RODBC') library('RODBC') 


Jetzt können wir mit Vertica arbeiten. Wir erstellen einen ODBC-Alias ​​für den Server und erhalten die Testdaten und den vollständigen Datensatz für das Auto:

 #    Vertica con <- odbcConnect(dsn='VerticaDSN') #    mtcars_train mtcars.train <- sqlQuery(con, "SELECT * FROM public.mtcars_train") #    mtcars</b> mtcars.data <- sqlQuery(con, "SELECT * FROM public.mtcars") #   odbcClose(con) 

Beim Laden von Daten aus Quellen R für Felder mit Texttypen und Datum / Uhrzeit wird deren Zugehörigkeit zu Faktoren automatisch ermittelt. Das Feld "am" ist vom numerischen Typ und R wird als numerischer Indikator und nicht als Faktor wahrgenommen, der keine logistische Regression zulässt. Daher konvertieren wir dieses Feld in einen numerischen Faktor:

 mtcars.data$am = factor(mtcars.data$am) mtcars.train$am = factor(mtcars.train$am) 

In R Studio ist es praktisch, Daten interaktiv zu beobachten, Diagramme der Vorhersageanalyse zu erstellen und Code in R mit folgenden Tipps zu schreiben:



Erstellen eines Modells in R.


Wir werden ein Modell der logistischen Regression über den vorbereiteten Datensatz für dieselben Dimensionen wie in Vertica erstellen:

 mtcars.model <- glm(formula = am ~ cyl + wt + gear, family = binomial(), data = mtcars.train) 

Erläuterung: In der Sprache R wird die prädiktive Analyseformel wie folgt angegeben:

 <  >~<   > 

Analyse von Modelldaten in R.


Wir initialisieren den resultierenden Datensatz und nehmen von mtcars alle Datensätze für die erforderlichen Felder:

 mtcars.result <- data.frame(car_model = mtcars.data$car_model, am = mtcars.data$am, predict = 0) 

Mit dem erstellten Modell können Sie nun die Daten selbst analysieren:

 mtcars.result$predict <- predict.glm(mtcars.model, newdata = subset(mtcars.data, select = c('cyl', 'wt', 'gear')), type = 'response' ) 

Das Analyseergebnis wird als Prozentsatz der Wahrscheinlichkeit der Prognose an das Vorhersagefeld zurückgegeben. In Analogie zu Vertica auf Werte 0 oder 1 vereinfachen, wobei die Prognose mit einer Wahrscheinlichkeit von mehr als 50% positiv ist:

 mtcars.result$predict <- ifelse(mtcars.result$predict > 0.5, 1, 0) 

Wir berechnen die Gesamtzahl der Datensätze, für die das vorhergesagte Vorhersagefeld nicht mit dem tatsächlichen Wert in am übereinstimmt:

 nrow(mtcars[mtcars.result$am != mtcars.result$predict, ]) 

R gab Null zurück. Somit konvergierte die Prognose für alle Automodelle wie in Verticas ML.

Bitte beachten Sie: Datensätze von mtcars wurden vom Filter (der erste Parameter in eckigen Klammern) mit allen Spalten zurückgegeben (der zweite Parameter wurde nach dem Komma in eckigen Klammern weggelassen).

Daten lokal in R speichern und laden


Beim Beenden von R bietet das Studio an, den Status aller Objekte zu speichern, um nach einem Neustart weiterarbeiten zu können. Wenn Sie aus irgendeinem Grund den Status einzelner Objekte speichern und anschließend wiederherstellen müssen, finden Sie hierfür spezielle Funktionen in R:

 #      save(mtcars.model, file = 'mtcars.model') #      load('mtcars.model') 

Speichern von Daten von R nach Vertica


Wenn R Studio zum Vorbereiten von Daten für das Training von ML Vertica-Modellen verwendet wurde oder wenn die Analyse direkt darin durchgeführt wurde, was dann in der Vertica-Datenbank verwendet werden soll, können R-Datensätze in die Vertica-Tabelle geschrieben werden.

Da die ODBC-Bibliothek für R für OLTP-RDBMS ausgelegt ist, können keine Tabellenerstellungsabfragen für Vertica korrekt generiert werden. Um Daten erfolgreich aufzuzeichnen, müssen Sie daher die erforderliche Tabelle in Vertica manuell mit SQL erstellen, deren Felder und Typen mit dem aufzeichnbaren Datensatz R übereinstimmen.

Außerdem sieht der Aufnahmevorgang selbst einfach aus (vergessen Sie nicht, die Verbindungsverbindung zu öffnen und dann zu schließen):

 sqlSave(con, mtcars.result, tablename = 'public.mtcars_result', append = TRUE, rownames = FALSE, colnames = FALSE) 

Verwenden von Vertica mit R.


Die interaktive Arbeit mit Daten in R Studio eignet sich gut für die Recherche und Aufbereitung von Daten. Es ist jedoch für die Analyse von Datenströmen und großen Arrays im automatischen Modus völlig ungeeignet. Eine der Optionen für das hybride R-Vorhersageanalyseschema mit Vertica ist die Aufbereitung von Daten zum Lernen auf R und das Identifizieren von Abhängigkeiten für das Erstellen von Modellen. Anschließend werden unter Verwendung der in Vertica integrierten ML-Funktionen die Prognosemodelle für auf R aufbereitete Daten unter Berücksichtigung der identifizierten Abhängigkeiten der Variablen trainiert.

Es gibt eine flexiblere Option, wenn die gesamte Leistung der R-Sprache direkt unter Vertica verwendet wird. Zu diesem Zweck hat Vertica die R-Distribution in Form einer Plug-In-Bibliothek entwickelt, mit der Sie Transformationsfunktionen verwenden können, die in SQL-Abfragen direkt in der R-Sprache geschrieben sind. In der Dokumentation werden die Installation der R-Unterstützung für Vertica und die zusätzlichen R-Pakete, die für den Betrieb erforderlich sind, ausführlich beschrieben.

Modell R in Vertica speichern


Um das zuvor von R Studio erstellte Analysemodell in R-Funktionen zu verwenden, die unter Vertica ausgeführt werden, müssen Sie es auf Vertica-Servern speichern. Das lokale Speichern auf jedem Server des Clusters mit einer Datei ist weder bequem noch zuverlässig. Es können neue Server zum Cluster hinzugefügt werden. Wenn Sie das Modell ändern, müssen Sie daran denken, alle Dateien erneut zu schreiben.

Am bequemsten ist es, das R-Modell in Text zu serialisieren und die Vertica-Funktion als UDF zu speichern, wodurch dieser Text als Konstante zurückgegeben wird (vergessen Sie nicht, die Verbindungsverbindung zu öffnen und dann zu schließen):

 #     mtcars.model.text <- rawToChar( serialize(mtcars.model, connection = NULL, ascii = TRUE)) #       Vertica # (     ) mtcars.func <- paste0( "CREATE OR REPLACE FUNCTION public.MtCarsAnalizeModel() RETURN varchar(65000) AS BEGIN RETURN '", gsub("'", "''", mtcars.model.text), "'; END; GRANT EXECUTE ON FUNCTION public.MtCarsAnalizeModel() TO public;" ) #    Vertica sqlQuery(con, mtcars.func) 

Das vorgeschlagene Verfahren ermöglicht die Umgehung der Beschränkung von Vertica auf die übertragenen Parameter in der Transformationsfunktion, wobei nur die Übertragung von Konstanten oder Ausdrücken von Konstanten erforderlich ist. Vertica UDF SQL kompiliert nicht als Funktionen, sondern als berechnete Ausdrücke, dh wenn beim Übergeben eines Parameters anstelle des Aufrufs der Funktion der Text (in diesem Fall eine Konstante) übertragen wird, der im obigen Code gespeichert wurde.

Wenn Sie das Modell ändern, müssen Sie seine Funktion in Vertica neu erstellen. Es ist sinnvoll, diesen Code in eine universelle Funktion zu verpacken, die in Vertica eine Funktion mit dem angegebenen Namen aus dem übergebenen Modell generiert.

R-Funktionen für Vertica


Um R-Funktionen mit Vertica zu verbinden, müssen Sie Datenanalyse- und Registrierungsfunktionen in Vertica schreiben.

Die Funktion zum Arbeiten mit Daten unter Vertica selbst sollte zwei Parameter haben: den resultierenden Datensatz (wie data.frame) und die Arbeitsparameter (wie list):

 MtCarsAnalize <- function(data, parameters) { if ( is.null(parameters[['model']]) ) { stop("NULL value for model! Model cannot be NULL.") } else { model <- unserialize(charToRaw(parameters[['model']])) } names(data) <- c('car_model', 'cyl', 'wt', 'gear') result <- data.frame(car_model = data$car_model, predict = 0) result$predict <- predict.glm(model, newdata = subset(data, select = c('cyl', 'wt', 'gear')), type = 'response' ) result$predict <- ifelse(result$predict > 0.5, TRUE, FALSE) return(result) } 

Im Hauptteil der Funktion wird überprüft, ob der Modellparameter übergeben wird, dessen Text in eine binäre Form übersetzt und in das Objekt des Analysemodells deserialisiert wird. Da Vertica seine eigenen Feldnamen für die Funktion in das Dataset überträgt, werden explizite Feldnamen für das Dataset festgelegt. Basierend auf den erhaltenen Daten wird eine Ergebnismenge mit dem Namen des Maschinenmodells erstellt und Null vorhergesagt. Als nächstes wird eine Prognose nur unter Verwendung der Felder erstellt, die für die Analyse aus dem erhaltenen Datensatz erforderlich sind. Das Vorhersagefeld der Ergebnismenge wird auf Boolesche Werte gesetzt (für eine Änderung anstelle von numerischen) und das Ergebnis wird von der Funktion zurückgegeben.

Nun bleibt die Registrierung dieser Funktion in Vertica zu beschreiben:

 MtCarsAnalizeFactory <- function() { list(name = MtCarsAnalize, udxtype = c("transform"), intype = c("varchar", "int", "float", "int"), outtype = c("varchar", "boolean"), outnames = c("car_model", "predict"), parametertypecallback=MtCarsAnalizeParameters) } MtCarsAnalizeParameters <- function() { parameters <- list(datatype = c("varchar"), length = 65000, scale = c("NA"), name = c("model")) return(parameters) } 

Die MtCarsAnalizeFactory-Funktion beschreibt den Namen der für die Operation verwendeten Funktion, das Feld für den eingehenden und ausgehenden Datensatz und die zweite Funktion beschreibt den übergebenen Parameter „Modell“. Feldtypen sind Vertica-Datentypen. Beim Übertragen und Zurückgeben von Daten konvertiert Vertica die Werte automatisch in die erforderlichen Datentypen für die R-Sprache. Die Typkompatibilitätstabelle finden Sie in der Vertica-Dokumentation.

Sie können die Funktion der schriftlichen Funktion für Vertica anhand der in R Studio hochgeladenen Daten testen:

 test.data = subset(mtcars.data, select = c('car_model', 'cyl', 'wt', 'gear')) test.params = list(model = mtcars.model.text) test.result = MtCarsAnalize(test.data, test.params) 

Verbinden Sie die Funktionsbibliothek mit Vertica


Wir speichern alle oben genannten Funktionen in einer einzigen Datei "mtcars_func.r" und laden diese Datei auf einen der Server aus dem Vertica-Cluster in "/ home / dbadmin" hoch.

Ein wichtiger Punkt: In R Studio müssen Sie die Option zum Speichern der Übersetzung von Zeilen in Dateien im Posix (LF) -Modus festlegen. Dies kann in den globalen Optionen, Abschnitt Code, Registerkarte Speichern erfolgen. Wenn Sie unter Windows arbeiten, wird die Datei standardmäßig mit einem Wagenrücklauf gespeichert und kann nicht auf Vertica hochgeladen werden.

Wir stellen vom Vertica-Cluster, auf dem wir die Datei gespeichert und die Bibliothek geladen haben, eine Verbindung zum Server her:

 CREATE LIBRARY MtCarsLibs AS '/home/dbadmin/mtcars_func.r' LANGUAGE 'R'; 

Jetzt können Sie in dieser Bibliothek die R-Funktion registrieren:

 CREATE TRANSFORM FUNCTION public.MtCarsAnalize AS LANGUAGE 'R' NAME 'MtCarsAnalizeFactory' LIBRARY MtCarsLibs; GRANT EXECUTE ON TRANSFORM FUNCTION public.MtCarsAnalize(varchar, int, float, int) TO public; 

Rufen Sie R-Funktionen in Vertica auf


Wir rufen die R-Funktion auf und übergeben ihr den Modelltext, der zuvor als UDF-Funktion gespeichert wurde:

 SELECT MtCarsAnalize(car_model, cyl, wt, gear USING PARAMETERS model = public.MtCarsAnalizeModel()) OVER() FROM public.mtcars; 



Es kann überprüft werden, dass die Prognose wie in den vorherigen Fällen zu 100% mit dem tatsächlichen Stand der Dinge übereinstimmt:

 SELECT c.*, p.predict, p.predict = c.am::int AS valid FROM public.mtcars c INNER JOIN ( SELECT MtCarsAnalize(car_model, cyl, wt, gear USING PARAMETERS model = public.MtCarsAnalizeModel()) OVER() FROM public.mtcars ) p ON c.car_model = p.car_model 

Bitte beachten Sie: Die Transformationsfunktionen in Vertica geben ihren eigenen Datensatz aus Feldern und Datensätzen zurück, die in den Funktionen definiert sind. Sie können jedoch in Abfragen verwendet werden, wenn sie in eine Unterabfrage eingeschlossen sind.

Wenn R-Funktionen verbunden sind, kopiert Vertica den Quellcode in seine Installation, die es in Maschinencode kompiliert. Die nach dem Herstellen einer Verbindung zur Bibliothek auf den Server hochgeladene Quell-R-Datei wird für weitere Arbeiten nicht benötigt. Die Geschwindigkeit der Funktionen unter Berücksichtigung der binären Kompilierung ist hoch genug, um mit großen Datenfeldern zu arbeiten. Es ist jedoch zu beachten, dass alle R-Operationen im Speicher ausgeführt werden und das Risiko eines Austauschs besteht, wenn kein Betriebssystemspeicher vorhanden ist, um die Anforderungen der Zusammenarbeit von Vertica und R zu erfüllen .

Wenn die Funktion auf der Partition der in PARTITION BY for OVER angegebenen Daten aufgerufen wird, parallelisiert Vertica die Ausführung jeder Partition auf den Clusterservern. Wenn also zusätzlich zum Maschinenmodell noch ein Hersteller im Datensatz vorhanden war, können Sie diesen in PARTITION BY angeben und die Analyse für jeden Hersteller parallelisieren.

Andere Möglichkeiten des maschinellen Lernens von Vertica


Zusätzlich zu R kann Vertica eigene Transformationsfunktionen in C, Java und Python entwickeln. Jede Sprache hat ihre eigenen Nuancen und Merkmale beim Schreiben und Verbinden mit Vertica. All dies zusammen mit seiner eigenen ML bietet Vertica eine gute Reserve für die prädiktive Datenanalyse.

Danke und Links


Ich möchte meinem Freund und Kollegen Vlad Malofeev aus Perm aufrichtig danken, der mich mit R bekannt gemacht und mir geholfen hat, es bei einem unserer gemeinsamen Projekte herauszufinden.

In einem Projekt, in dem anhand von Daten aus dem vergangenen Jahr eine Prognose unter schwierigen Bedingungen für die Zukunft erstellt wurde, versuchten die Entwickler zunächst, SQL und Java zu verwenden. Dies verursachte große Schwierigkeiten bei der Berücksichtigung der Qualität dieser Quellen und verlangsamte die Entwicklung des Projekts erheblich. Vlad kam mit R zum Projekt, wir verbanden R mit Vertica, er fuhr die Daten ins Studio und alles drehte sich und drehte sich sofort wunderschön. Buchstäblich in Wochen wurde alles, was monatelang dauerte, geharkt, um das Projekt vor komplexem Code zu bewahren.

Die Beispieldaten mit Autos können aus dem GIT-Repository heruntergeladen werden:

 git clone https://github.com/vertica/Machine-Learning-Examples 

und auf Vertica hochladen:

 /opt/vertica/bin/vsql -d <name of your database> -f load_ml_data.sql 

Wenn Sie tiefer in ML einsteigen und lernen möchten, wie man mit R arbeitet, empfehle ich ein Buch in russischer Sprache „R in Aktion“. Analyse und Visualisierung von Daten in der R-Sprache . Es ist in einer einfachen, zugänglichen menschlichen Sprache geschrieben und eignet sich für Anfänger, die noch nicht auf maschinelles Lernen gestoßen sind.

Hier sehen Sie Informationen zum Verbinden der R-Bibliothek mit Vertica.

Für diejenigen, die bereits begonnen haben, ML in Python zu studieren und zu verwenden, lohnt es sich, auf das IDE-Rodeo zu achten. Dies ist ein Analogon von R Studio, da ohne interaktive Qualitätsanalyse keine Analyse möglich ist. Ich denke, dass alles, was in diesem Artikel unter R auf ähnliche Weise beschrieben wird, in Python entwickelt werden kann, einschließlich des Speicherns des Modells in UDF-Funktionen und der Entwicklung von Analysefunktionen für Vertica. Wenn Sie überprüfen, vergessen Sie nicht, sich über die Ergebnisse in den Kommentaren abzumelden, ich werde für die Informationen dankbar sein.

Vielen Dank für Ihre Zeit und die Hoffnung, dass ich die Einfachheit und die unglaublichen Fähigkeiten der Symbiose von R und Vertica demonstrieren konnte.

Source: https://habr.com/ru/post/de436306/


All Articles