Freigeben über


Bewerten neuer Daten (SQL Server- und RevoScaleR-Tutorial)

Gilt für: SQL Server 2016 (13.x) und höhere Versionen

Dies ist das achte Tutorial der Tutorialreihe zu RevoScaleR zur Verwendung von RevoScaleR-Funktionen mit SQL Server.

In diesem Tutorial erfahren Sie, wie Sie das logistische Regressionsmodell verwenden, das Sie im letzten Tutorial erstellt haben, um ein weiteres Dataset zu bewerten, das dieselben unabhängigen Variablen als Eingaben verwendet.

  • Bewerten neuer Daten
  • Erstellen eines Histogramms der Ergebnisse

Hinweis

Sie benötigen DDL-Administratorberechtigungen für einige der folgenden Schritte.

Generieren und Speichern von Ergebnissen

  1. Aktualisieren Sie die sqlScoreDS-Datenquelle (in Tutorial 2 erstellt), um die im letzten Tutorial erstellten Spalteninformationen zu verwenden.

    sqlScoreDS <- RxSqlServerData(
        connectionString = sqlConnString,
        table = sqlScoreTable,
        colInfo = ccColInfo,
        rowsPerRead = sqlRowsPerRead)
    
  2. Erstellen Sie ein neues Datenquellenobjekt, um sicherzustellen, dass die Ergebnisse nicht verloren gehen. Verwenden Sie anschließend das neue Datenquellenobjekt, um in der RevoDeepDive-Datenbank eine neue Tabelle aufzufüllen.

    sqlServerOutDS <- RxSqlServerData(table = "ccScoreOutput",
        connectionString = sqlConnString,
        rowsPerRead = sqlRowsPerRead )
    

    Zu diesem Zeitpunkt ist die Tabelle noch nicht erstellt worden. Diese Anweisung definiert lediglich einen Datencontainer.

  3. Überprüfen Sie den aktuellen Computekontext mithilfe von rxGetComputeContext() , und legen Sie ihn bei Bedarf auf den Server fest.

    rxSetComputeContext(sqlCompute)
    
  4. Überprüfen Sie vorsichtshalber, ob die Ausgabetabelle vorhanden ist. Wenn bereits eine mit demselben Namen vorhanden ist, erhalten Sie eine Fehlermeldung, wenn Sie versuchen, die neue Tabelle zu schreiben.

    Rufen Sie dazu die Funktionen rxSqlServerTableExists und rxSqlServerDropTableauf, und übergeben Sie den Tabellennamen als Eingabe.

    if (rxSqlServerTableExists("ccScoreOutput"))     rxSqlServerDropTable("ccScoreOutput")
    
    • rxSqlServerTableExists fragt den ODBC-Treiber ab und gibt TRUE zurück, wenn die Tabelle existiert, und FALSE, wenn dem nicht so ist.
    • rxSqlServerDropTable führt die DDL-Anweisungen aus und gibt TRUE zurück, wenn die Tabelle erfolgreich gelöscht wurde, und FALSE, wenn dem nicht so ist.
  5. Führen Sie rxPredict aus, um die Ergebnisse zu generieren, und speichern Sie sie in der neuen Tabelle, die in der Datenquelle „sqlScoreDS“ definiert ist.

    rxPredict(modelObject = logitObj,
        data = sqlScoreDS,
        outData = sqlServerOutDS,
        predVarNames = "ccFraudLogitScore",
          type = "link",
        writeModelVars = TRUE,
        overwrite = TRUE)
    

    Die Funktion rxPredict ist eine weitere Funktion, die die Ausführung in Remotecomputekontexten unterstützt. Sie können die Funktion rxPredict zum Generieren von Ergebnissen aus Modellen verwenden, die auf rxLinMod, rxLogitoder rxGlm basieren.

    • Der Parameter writeModelVars wurde in diesem Beispiel auf TRUE festgelegt. Dies bedeutet, dass die Variablen, die für die Schätzung verwendet wurden, in die neue Tabelle aufgenommen werden.

    • Der Parameter predVarNames gibt die Variable an, in der Ergebnisse gespeichert werden. Hier wird eine neue Variable namens ccFraudLogitScore übergeben.

    • Der type -Parameter für rxPredict definiert, wie die Vorhersagen berechnet werden sollen. Legen Sie das Schlüsselwort Antwort fest, um basierend auf der Skala der Antwortvariablen Ergebnisse zu generieren. Verwenden Sie alternativ das Schlüsselwort Link, um basierend auf der zugrunde liegenden Linkfunktion Ergebnisse zu generieren. In diesem Fall werden die Vorhersagen auf Grundlage einer logistischen Skala generiert.

  6. Nach einer Weile können Sie die Tabellenliste in Management Studio aktualisieren, um die neue Tabelle und deren Daten anzuzeigen.

  7. Verwenden Sie zum Hinzufügen von zusätzlichen Variablen zu den Ausgabevorhersagen das extraVarsToWrite-Argument. Im folgenden Beispiel wird z.B. die Variable custID aus der Auswertungsdatentabelle zu der Ausgabetabelle der Vorhersagen hinzugefügt.

    rxPredict(modelObject = logitObj,
            data = sqlScoreDS,
            outData = sqlServerOutDS,
            predVarNames = "ccFraudLogitScore",
              type = "link",
            writeModelVars = TRUE,
            extraVarsToWrite = "custID",
            overwrite = TRUE)
    

Anzeigen der Ergebnisse in einem Histogramm

Nachdem die neue Tabelle erstellt wurde, berechnen Sie ein Histogramm von 10.000 vorhergesagten Ergebnissen, und zeigen Sie es an. Die Berechnung erfolgt schneller, wenn Sie die hohen und niedrigen Werte angeben, rufen Sie diese also aus der Datenbank ab und fügen Sie sie Ihren Arbeitsdaten hinzu.

  1. Erstellen Sie eine neue Datenquelle, sqlMinMax, die die Datenbank nach den hohen und niedrigen Werten abfragt.

    sqlMinMax <- RxSqlServerData(
        sqlQuery = paste("SELECT MIN(ccFraudLogitScore) AS minVal,",
        "MAX(ccFraudLogitScore) AS maxVal FROM ccScoreOutput"),
        connectionString = sqlConnString)
    

    In diesem Beispiel wird veranschaulicht, wie einfach die Verwendung von RxSqlServerData -Datenquellobjekten ist, um beliebige Datasets auf Grundlage von SQL-Abfragen, Funktionen oder gespeicherten Prozeduren zu definieren und diese anschließend in Ihrem R-Code zu verwenden. Die Variable speichert nicht die eigentlichen Werte, sondern lediglich die Datenquellendefinition. Die Abfrage wird ausgeführt, um die Werte nur dann zu generieren, wenn sie in einer Funktion wie rxImportverwendet wird.

  2. Rufen Sie die Funktion rxImport auf, um die Werte in einem Datenrahmen zu platzieren, der für verschiedene Computekontexte freigegeben werden kann.

    minMaxVals <- rxImport(sqlMinMax)
    minMaxVals <- as.vector(unlist(minMaxVals))
    

    Ergebnisse

    > minMaxVals
    
    [1] -23.970256   9.786345
    
  3. Da die minimalen und maximalen Werte nun verfügbar sind, können Sie sie verwenden, um eine weitere Datenquelle für die generierten Ergebnisse zu erstellen.

    sqlOutScoreDS <- RxSqlServerData(sqlQuery = "SELECT ccFraudLogitScore FROM ccScoreOutput",
        connectionString = sqlConnString,
        rowsPerRead = sqlRowsPerRead,
            colInfo = list(ccFraudLogitScore = list(
                low = floor(minMaxVals[1]),
                        high = ceiling(minMaxVals[2]) ) ) )
    
  4. Verwenden Sie das Datenquellobjekt „sqlOutScoreDS“ um die Ergebnisse abzurufen und ein Histogramm zu berechnen und anzuzeigen. Fügen Sie bei Bedarf den Code hinzu, um den Computekontext festzulegen.

    # rxSetComputeContext(sqlCompute)
    rxHistogram(~ccFraudLogitScore, data = sqlOutScoreDS)
    

    Ergebnisse

    Komplexes von R erstelltes Histogramm

Nächste Schritte